initial tizen_2.0_beta
authorByeongin Oh <quddls.oh@samsung.com>
Tue, 21 Aug 2012 08:30:10 +0000 (17:30 +0900)
committerByeongin Oh <quddls.oh@samsung.com>
Tue, 21 Aug 2012 08:30:10 +0000 (17:30 +0900)
Change-Id: Ie65d08e4e80ff4cfe4b8309f83995899e64e283a

290 files changed:
CMakeLists.txt
LICENSE [changed mode: 0755->0644]
NOTICE
data/org.tizen.music-player.desktop.in
debian/changelog [deleted file]
debian/compat [deleted file]
debian/control [deleted file]
debian/debhelper.log [deleted file]
debian/org.tizen.music-player-dbg.install.in [deleted file]
debian/org.tizen.music-player.install.in [deleted file]
debian/org.tizen.music-player.postinst [deleted file]
debian/rules [deleted file]
images/music_player/00_sweep_list_bg.png [moved from images/music_player/T02_control_top_bg.png with 95% similarity]
images/music_player/00_winset_control_toolbar_bg.png
images/music_player/00_winset_tabbar_focus.png [deleted file]
images/music_player/00_winset_tabbar_focus_left.png [deleted file]
images/music_player/00_winset_tabbar_focus_right.png [deleted file]
images/music_player/00_winset_tabbar_press.png [deleted file]
images/music_player/00_winset_tabbar_press_left.png [deleted file]
images/music_player/00_winset_tabbar_press_right.png [deleted file]
images/music_player/01_search_input_icon_bg.png [new file with mode: 0755]
images/music_player/39_mini_controller_icon_ff.png [new file with mode: 0755]
images/music_player/39_mini_controller_icon_pause.png [new file with mode: 0755]
images/music_player/39_mini_controller_icon_play.png [new file with mode: 0755]
images/music_player/39_mini_controller_icon_rew.png [new file with mode: 0755]
images/music_player/Cover_flow/T02_cover_flow_bg.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_01.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_02.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_03.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_04.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_05.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_06.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_07.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_08.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_09.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_10.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_11.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_album_12.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_arrow.png [new file with mode: 0644]
images/music_player/Cover_flow/T02_cover_flow_now_playing_bg.png [new file with mode: 0644]
images/music_player/Q02_QuickPanel_mini_music_player_controller_next.png [new file with mode: 0755]
images/music_player/Q02_QuickPanel_mini_music_player_controller_pause.png [moved from images/music_player/00_list_bar_press_1x80.png with 91% similarity]
images/music_player/Q02_QuickPanel_mini_music_player_controller_play.png [moved from images/music_player/00_Option_header_bt.png with 88% similarity]
images/music_player/Q02_QuickPanel_mini_music_player_controller_prev.png [moved from images/music_player/00_Option_header_bt_press.png with 86% similarity]
images/music_player/Q02_QuickPanel_mini_music_player_gradient.png [new file with mode: 0755]
images/music_player/Q02_Quickpanel_mini_music_player_gradient_right.png [new file with mode: 0755]
images/music_player/Q02_Quickpanel_mini_music_player_repeat_all.png [new file with mode: 0755]
images/music_player/Q02_Quickpanel_mini_music_player_repeat_none.png [new file with mode: 0755]
images/music_player/Q02_Quickpanel_mini_music_player_repeat_once.png [new file with mode: 0755]
images/music_player/Q02_Quickpanel_mini_music_player_shuffle_off.png [new file with mode: 0755]
images/music_player/Q02_Quickpanel_mini_music_player_shuffle_on.png [new file with mode: 0755]
images/music_player/T02_Video_play.png
images/music_player/T02_control_top_arrow.png [deleted file]
images/music_player/T02_nocomposers.png
images/music_player/T02_now_playing_bar.png
images/music_player/T02_now_playing_icon_pause.png
images/music_player/T02_now_playing_icon_play.png
images/music_player/T02_option_SA.png [new file with mode: 0755]
images/music_player/T02_option_SA_off.png [new file with mode: 0755]
images/music_player/T02_option_rep_1.png
images/music_player/T02_option_rep_A.png
images/music_player/T02_option_rep_all.png
images/music_player/T02_option_shuffle_off.png
images/music_player/T02_option_shuffle_on.png
images/music_player/T02_square_bg.png [new file with mode: 0755]
images/music_player/T02_square_cell_bg.png [new file with mode: 0755]
images/music_player/T02_square_cell_press.png [new file with mode: 0755]
images/music_player/T02_toolbar_press.png [deleted file]
images/music_player/T02_youtube.png [new file with mode: 0755]
images/music_player/allshare_dmr_icon.png [new file with mode: 0755]
images/music_player/mini_app/T01_btn_apps_close.png [new file with mode: 0755]
images/music_player/music_play_square_bg.9.png [new file with mode: 0755]
images/music_player/player/12_music_player_bg_01.PNG [moved from images/music_player/12_music_player_bg_01.PNG with 100% similarity]
images/music_player/player/12_music_player_control_bg.png [new file with mode: 0755]
images/music_player/player/12_music_player_control_bg_h.png [new file with mode: 0755]
images/music_player/player/T02_Play_btn__play.png [moved from images/music_player/T02_Play_btn__play.png with 100% similarity]
images/music_player/player/T02_Play_btn__play_press.png [moved from images/music_player/T02_Play_btn__play_press.png with 100% similarity]
images/music_player/player/T02_Play_btn_next.png [moved from images/music_player/T02_Play_btn_next.png with 100% similarity]
images/music_player/player/T02_Play_btn_next_press.png [moved from images/music_player/T02_Play_btn_next_press.png with 100% similarity]
images/music_player/player/T02_Play_btn_pause.png [moved from images/music_player/T02_Play_btn_pause.png with 100% similarity]
images/music_player/player/T02_Play_btn_pause_press.png [moved from images/music_player/T02_Play_btn_pause_press.png with 100% similarity]
images/music_player/player/T02_Play_btn_previou_press.png [moved from images/music_player/T02_Play_btn_previou_press.png with 100% similarity]
images/music_player/player/T02_Play_btn_previous.png [moved from images/music_player/T02_Play_btn_previous.png with 100% similarity]
images/music_player/player/T02_option_favorite_off.png [new file with mode: 0755]
images/music_player/player/T02_option_favorite_on.png [new file with mode: 0755]
images/music_player/progress_bar/T02_player_progress_bar.png [moved from images/music_player/T02_player_progress_bar.png with 100% similarity]
images/music_player/progress_bar/T02_player_progress_bg.png [moved from images/music_player/T02_player_progress_bg.png with 100% similarity]
images/music_player/progress_bar/T02_player_progress_point.png [moved from images/music_player/T02_player_progress_point.png with 100% similarity]
images/music_player/separator_h.png [deleted file]
include/mp-vconf-private-keys.h [new file with mode: 0755]
layout/mp-3d-view.edc [new file with mode: 0755]
layout/mp-button.edc
layout/mp-custom-winset-style.edc
layout/mp-defines.h
layout/mp-edit-navi.edc [new file with mode: 0755]
layout/mp-editfield.edc
layout/mp-gengrid-style.edc [new file with mode: 0755]
layout/mp-genlist-edit.edc
layout/mp-genlist-sweep.edc [new file with mode: 0755]
layout/mp-genlist-theme.edc
layout/mp-library.edc
layout/mp-lrc.edc [new file with mode: 0755]
layout/mp-minicontroller.edc [new file with mode: 0755]
layout/mp-naviframe.edc
layout/mp-no-contents.edc
layout/mp-play-control.edc
layout/mp-play-current-playing.edc
layout/mp-play-info.edc
layout/mp-play-menu.edc
layout/mp-play-mini-app.edc [new file with mode: 0755]
layout/mp-play-progress.edc
layout/mp-play-vew-landscape.edc [new file with mode: 0755]
layout/mp-play-view.edc
layout/mp-progressbar.edc
layout/mp-rich-info.edc
layout/mp-selection-info.edc
layout/mp-square-view.edc [new file with mode: 0755]
layout/mp-toolbar.edc
layout/mp_genlist_define.edc
layout/mp_genlist_macro.edc
layout/music.edc
org.tizen.music-player.xml [new file with mode: 0755]
packaging/org.tizen.music-player.spec
po/CMakeLists.txt
po/ar.po [new file with mode: 0755]
po/bg.po [new file with mode: 0755]
po/ca.po [new file with mode: 0755]
po/cs.po [new file with mode: 0755]
po/da.po [new file with mode: 0755]
po/de_DE.po
po/el_GR.po
po/en.po
po/en_US.po [new file with mode: 0755]
po/es_ES.po
po/fi.po [new file with mode: 0755]
po/fr_FR.po
po/he.po [new file with mode: 0755]
po/hi.po [new file with mode: 0755]
po/hr.po [new file with mode: 0755]
po/hu.po [new file with mode: 0755]
po/id.po [new file with mode: 0755]
po/it_IT.po
po/ja_JP.po
po/ko_KR.po
po/lt.po [new file with mode: 0755]
po/lv.po [new file with mode: 0755]
po/ms.po [new file with mode: 0755]
po/nl_NL.po
po/no.po [new file with mode: 0755]
po/pl.po [new file with mode: 0755]
po/pt_PT.po
po/ro.po [new file with mode: 0755]
po/ru_RU.po
po/sk.po [new file with mode: 0755]
po/sl.po [new file with mode: 0755]
po/sr.po [new file with mode: 0755]
po/sv.po [new file with mode: 0755]
po/th.po [new file with mode: 0755]
po/tr_TR.po
po/uk.po [new file with mode: 0755]
po/vi.po [new file with mode: 0755]
po/zh_CN.po
po/zh_HK.po
po/zh_TW.po
sound-player/CMakeLists.txt [new file with mode: 0755]
sound-player/org.tizen.sound-player.desktop.in [new file with mode: 0755]
sound-player/org.tizen.sound-player.png [new file with mode: 0755]
sound-player/org.tizen.sound-player.xml [new file with mode: 0755]
sound-player/res/locale/CMakeLists.txt [new file with mode: 0755]
sound-player/src/include/sp-view-manager.h [new file with mode: 0755]
sound-player/src/sp-view-manager.c [new file with mode: 0755]
src/common/include/mp-app.h
src/common/include/mp-common.h
src/common/include/mp-item.h
src/common/include/mp-media-info.h [new file with mode: 0755]
src/common/include/mp-menu.h
src/common/include/mp-play.h
src/common/include/mp-ta.h [new file with mode: 0755]
src/common/include/mp-ug-launch.h [new file with mode: 0755]
src/common/include/mp-util.h
src/common/include/mp-view-manager.h
src/common/include/mp-widget.h
src/common/mp-app.c
src/common/mp-common.c
src/common/mp-item.c
src/common/mp-media-info.c [new file with mode: 0755]
src/common/mp-menu.c
src/common/mp-play.c
src/common/mp-ta.c [new file with mode: 0755]
src/common/mp-ug-launch.c [new file with mode: 0755]
src/common/mp-util.c
src/common/mp-view-manager.c
src/common/mp-widget.c
src/core/include/mp-file-tag-info.h
src/core/include/mp-http-mgr.h
src/core/include/mp-language-mgr.h [new file with mode: 0755]
src/core/include/mp-play-list.h
src/core/include/mp-player-control.h
src/core/include/mp-player-drm.h
src/core/include/mp-player-mgr.h
src/core/include/mp-setting-ctrl.h
src/core/include/mp-streaming-mgr.h
src/core/mp-file-tag-info.c
src/core/mp-http-mgr.c
src/core/mp-language-mgr.c [new file with mode: 0755]
src/core/mp-play-list.c
src/core/mp-player-control.c
src/core/mp-player-drm.c
src/core/mp-player-mgr.c
src/core/mp-setting-ctrl.c
src/core/mp-streaming-mgr.c
src/include/mp-define.h
src/include/mp-player-debug.h
src/include/mp-setting-keys.h [deleted file]
src/include/music.h
src/mp-main.c
src/view/include/mp-edit-view.h
src/view/include/mp-group-view.h
src/view/include/mp-library.h
src/view/include/mp-play-view.h
src/view/include/mp-playlist-view.h
src/view/include/mp-track-view.h
src/view/mp-edit-view.c
src/view/mp-group-view.c
src/view/mp-library.c
src/view/mp-play-view.c
src/view/mp-playlist-view.c
src/view/mp-track-view.c
src/widget/include/mp-minicontroller.h [new file with mode: 0755]
src/widget/include/mp-popup.h
src/widget/include/mp-search.h
src/widget/include/mp-smart-event-box.h
src/widget/include/mp-view-layout.h
src/widget/mp-minicontroller.c [new file with mode: 0755]
src/widget/mp-popup.c
src/widget/mp-search.c
src/widget/mp-smart-event-box.c
src/widget/mp-view-layout.c
target_images/music_player/01_controlbar_icon_albums.png [deleted file]
target_images/music_player/01_controlbar_icon_artist.png [deleted file]
target_images/music_player/01_controlbar_icon_composer.png [deleted file]
target_images/music_player/01_controlbar_icon_genre.png [deleted file]
target_images/music_player/01_controlbar_icon_music_albums.png [deleted file]
target_images/music_player/01_controlbar_icon_playlists.png [deleted file]
target_images/music_player/01_controlbar_icon_songs.png [deleted file]
target_images/music_player/01_controlbar_icon_year.png [deleted file]
target_images/music_player/02_controlbar_icon_synchronise_start_sync.png [new file with mode: 0644]
target_images/music_player/34_rating_00.png [deleted file]
target_images/music_player/34_rating_01.png [deleted file]
target_images/music_player/34_rating_02.png [deleted file]
target_images/music_player/34_rating_03.png [deleted file]
target_images/music_player/34_rating_04.png [deleted file]
target_images/music_player/34_rating_05.png [deleted file]
target_images/music_player/3d_picture/T02_3d_view_bg.png [new file with mode: 0755]
target_images/music_player/3d_picture/T02_cover_flow_album_shadow_bg.png [new file with mode: 0755]
target_images/music_player/3d_picture/T02_cover_flow_bg.png [new file with mode: 0755]
target_images/music_player/3d_picture/T02_cover_flow_now_playing_album.png [new file with mode: 0755]
target_images/music_player/3d_picture/T02_cover_flow_now_playing_arrow.png [new file with mode: 0755]
target_images/music_player/3d_picture/T02_cover_flow_now_playing_bg.png [new file with mode: 0755]
target_images/music_player/3d_picture/back-button.png [new file with mode: 0755]
target_images/music_player/3d_picture/picture-frame.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_add.png
target_images/music_player/T02_controlbar_icon_add_to_playlist.png
target_images/music_player/T02_controlbar_icon_all.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_artist.png
target_images/music_player/T02_controlbar_icon_cancel.png
target_images/music_player/T02_controlbar_icon_composer.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_delete.png
target_images/music_player/T02_controlbar_icon_edit.png
target_images/music_player/T02_controlbar_icon_folders.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_genres.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_move.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_music_albums.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_music_square.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_nearby_device.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_playlists.png
target_images/music_player/T02_controlbar_icon_search.png
target_images/music_player/T02_controlbar_icon_share.png [new file with mode: 0755]
target_images/music_player/T02_controlbar_icon_songs.png
target_images/music_player/T02_controlbar_icon_years.png [new file with mode: 0755]
target_images/music_player/T02_icon_allshare.png [new file with mode: 0755]
target_images/music_player/T02_square_cell_press.png [new file with mode: 0755]
target_images/music_player/T02_title_icon_nearby_device.png [new file with mode: 0755]
target_images/music_player/default_folder.png [new file with mode: 0755]
target_images/music_player/mini_app/T01_control_icon_apps.png [new file with mode: 0755]
target_images/music_player/music_play_square_cell.png [new file with mode: 0755]
target_images/music_player/music_play_square_cell_selected.png [new file with mode: 0755]
target_images/music_player/storage_type/T02_external_storage_02.png [new file with mode: 0755]
target_images/music_player/storage_type/T02_memory_card_02.png [new file with mode: 0755]
target_images/music_player/storage_type/T02_phone_02.png [moved from images/music_player/00_Option_header_bt_dim.png with 86% similarity]

index 21e1f8c..1a7e111 100755 (executable)
@@ -16,13 +16,16 @@ SET(COMMON_SRCS
        src/core/mp-streaming-mgr.c
 
         src/common/mp-common.c
-        src/common/mp-item.c
-        src/common/mp-menu.c
-        src/common/mp-widget.c
-        src/common/mp-util.c
+               src/common/mp-item.c
+               src/common/mp-ta.c
+               src/common/mp-menu.c
+               src/common/mp-ug-launch.c
+               src/common/mp-widget.c
+               src/common/mp-util.c
         src/common/mp-play.c
         src/common/mp-app.c
         src/common/mp-view-manager.c
+        src/common/mp-media-info.c
 
         src/view/mp-library.c
         src/view/mp-track-view.c
@@ -35,7 +38,10 @@ SET(COMMON_SRCS
         src/widget/mp-smart-event-box.c
         src/widget/mp-popup.c
         src/widget/mp-view-layout.c
+        src/widget/mp-minicontroller.c
+#              src/widget/mp-mini-player.c
        src/core/mp-http-mgr.c
+       src/core/mp-language-mgr.c
 )
 
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include
@@ -45,25 +51,21 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include
        src/list/include
        src/view/include
        src/widget/include
+       src/oem/shazam/include
 )
 
 SET(SRCS ${COMMON_SRCS} ${RICH_INFO_SRCS})
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(pkgs REQUIRED
-       appcore-efl
        elementary
        ecore
-       utilX
-       mm-player
-       mm-sound
-       libmedia-service
        dlog
-       ui-gadget
-       mm-session
-       mm-fileinfo
+       drm-client
+       glib-2.0
+       ui-gadget-1
        syspopup-caller
-       pmapi
+       capi-system-power
        vconf
        libxml-2.0
        eina
@@ -71,31 +73,46 @@ pkg_check_modules(pkgs REQUIRED
        ecore-x
        ecore-file
        ecore-input
+       libcrypto
        edje
-       appsvc
        evas
-       devman_haptic
-       svi
+       capi-appfw-application
+       capi-appfw-app-manager
+       capi-media-sound-manager
+       capi-media-player
+       capi-media-metadata-extractor
+       capi-system-haptic
+       minicontrol-provider
+       capi-system-media-key
+       capi-content-media-content
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
+#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions")
+#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMUSIC_DEBUG")
 SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -DMACHINE_$ENV{MACHINE}")
 
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fpie")
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -Wall -g -fpie")
+SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
 
 ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
 ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"")
 
 ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
 
-if("${CMAKE_SYSTEM_VERSION}" STREQUAL "arm")
+MESSAGE("### CMAKE_SYSTEM_VERSION :: ${CMAKE_SYSTEM_VERSION} ###")
+if("${CMAKE_SYSTEM_VERSION}" STREQUAL "arm" OR "${CMAKE_SYSTEM_VERSION}" STREQUAL "armv7l")
 ADD_DEFINITIONS("-D__ARM__")
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -lm)
+else()
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -lm)
 endif()
 
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
-
 ADD_CUSTOM_TARGET(mp-custom-winset-style.edj
                COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/music_player
                ${CMAKE_SOURCE_DIR}/layout/mp-custom-winset-style.edc ${CMAKE_BINARY_DIR}/layout/mp-custom-winset-style.edj
@@ -117,6 +134,13 @@ ADD_CUSTOM_TARGET(music.edj
 )
 ADD_DEPENDENCIES(${PROJECT_NAME} music.edj)
 
+ADD_CUSTOM_TARGET(mp-minicontroller.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/music_player
+               ${CMAKE_SOURCE_DIR}/layout/mp-minicontroller.edc ${CMAKE_BINARY_DIR}/layout/mp-minicontroller.edj
+               DEPENDS ${CMAKE_SOURCE_DIR}/layout/mp-minicontroller.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} mp-minicontroller.edj)
+
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 SET(BINDIR "${PREFIX}/bin")
 SET(RESDIR "${PREFIX}/res")
@@ -137,16 +161,20 @@ INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-custom-winset-style.edj DESTINATION ${EDJDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/music.edj DESTINATION ${EDJDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-library.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-minicontroller.edj DESTINATION ${EDJDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/mp-library.edj DESTINATION ${EDJDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/layout/music.edj DESTINATION ${EDJDIR})
 INSTALL(DIRECTORY DESTINATION ${DATADIR})
 
 # install desktop file & icon
-CONFIGURE_FILE(data/org.tizen.music-player.desktop.in org.tizen.music-player.desktop)
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.music-player.desktop DESTINATION /opt/share/applications)
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/org.tizen.music-player.png DESTINATION ${ICONDIR})
+#CONFIGURE_FILE(data/org.tizen.music-player.desktop.in org.tizen.music-player.desktop)
+#INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.music-player.desktop DESTINATION /opt/share/applications)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/org.tizen.music-player.png DESTINATION ${CMAKE_DESKTOP_ICON_DIR})
 INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/target_images/music_player DESTINATION ${RESDIR}/icons)
 
+#install xml file
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/org.tizen.music-player.xml DESTINATION /opt/share/packages)
+
 # install menu icon
 INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/music-player.uri DESTINATION /opt/share/miregex)
 
@@ -155,3 +183,5 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/data/music-player.uri DESTINATION /opt/share/m
 ADD_SUBDIRECTORY(po)
 #ADD_SUBDIRECTORY(data)
 
+# Sound Player
+ADD_SUBDIRECTORY(sound-player)
diff --git a/LICENSE b/LICENSE
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/NOTICE b/NOTICE
index 8b13789..62be933 100755 (executable)
--- a/NOTICE
+++ b/NOTICE
@@ -1 +1,2 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
 
index f87bc8e..7bc5d86 100755 (executable)
@@ -16,13 +16,12 @@ Name[fr_FR]=Musique
 Name[ko_KR]=음악
 Type=Application
 Exec=${PREFIX}/bin/music-player
-Icon=org.tizen.music-player.png
+Icon=org.tizen..music-player.png
 Network=False
 Version=0.1.0
 Comment=music
 X-Tizen-TaskManage=True
 X-Tizen-Multiple=False
 X-Tizen-Removable=False
-MimeType=audio/x-flac; music-player.uri; audio/mpeg; audio/aac; audio/AMR; audio/AMR-WB; audio/ac3; audio/x-ms-wma; audio/ogg; audio/vorbis; audio/x-wav; audio/imelody; audio/iMelody; audio/rmf; audio/x-rmf; application/x-smaf; application/vnd.smaf; audio/x-xmf; audio/mobile-xmf; audio/mid; audio/vnd.ms-playready.media.pya; audio/imy; audio/m4a; audio/melody; audio/midi; audio/mmf; audio/mp3; audio/mp4; audio/MP4A-LATM; audio/mpeg3; audio/mpeg4; audio/mpg; audio/mpg3; audio/smaf; audio/sp-midi; audio/wav; audio/wave; audio/wma; audio/xmf; audio/amr; audio/amr-wb; audio/x-amr; audio/x-mid; audio/x-midi; audio/x-mp3; audio/-mpeg; audio/x-mpeg3; audio/x-mpegaudio; audio/x-mpg; audio/x-ms-asf; audio/x-wave; application/ogg;  
-X-Tizen-SVC=http://tizen.org/appsvc/operation/view|NULL|audio/*;http://tizen.org/appsvc/operation/view|http|audio/*;http://tizen.org/appsvc/operation/view|https|audio/*
+MimeType=music-player.uri;
 Nodisplay=False
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100755 (executable)
index d73ab16..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-music-player (0.1.3) unstable; urgency=low
-
-  * Git init
-  * Git: pkgs/m/music-player
-  * Tag: music-player_0.1.3
-
- -- Hyungmin Kim <hm2007.kim@samsung.com>  Thu, 22 Dec 2011 17:17:40 +0900
-
-
diff --git a/debian/compat b/debian/compat
deleted file mode 100755 (executable)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/debian/control b/debian/control
deleted file mode 100755 (executable)
index 51f2d25..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-Source: music-player
-Section: base
-Priority: extra
-Maintainer: Hyungmin Kim <hm2007.kim@samsung.com>, A-Ram Kim <aramie.kim@samsung.com>, He Jian <rocket.he@samsung.com>, Xie RongHua <ronghua.xie>, Tang Feng <feng.tang@samsung.com>, Byeongin Oh <quddls.oh@samsung.com>
-Uploaders: 
-Build-Depends: libappcore-efl-dev, 
-               libelm-dev, 
-               libecore-dev, 
-               libslp-utilx-dev, 
-               libmm-player-dev, 
-               libmm-sound-dev, 
-               libmedia-service-dev, 
-               libslp-setting-dev,
-               dlog-dev,
-               libui-gadget-dev, 
-               libmm-session-sdk-dev, 
-               libmm-fileinfo-dev, 
-               syspopup-caller-dev, 
-               libslp-pm-dev,
-               libeina-dev,
-               execstack,
-               libappsvc-dev,
-               libevas-dev,
-               libslp-utilx-dev,
-               libdevman-haptic-dev,
-               libsvi-dev,
-Standards-Version: 0.1.0
-Homepage: N/A
-
-Package: org.tizen.music-player
-Section: base
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: music player application
-Version: 0.1.0
-
-Package: org.tizen.music-player-dbg
-Section: debug
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: music player application(unstripped)
-Version: 0.1.0
-
-
diff --git a/debian/debhelper.log b/debian/debhelper.log
deleted file mode 100644 (file)
index 4d88c32..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-dh_installdirs
-dh_installexamples
diff --git a/debian/org.tizen.music-player-dbg.install.in b/debian/org.tizen.music-player-dbg.install.in
deleted file mode 100755 (executable)
index 2e079ba..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/opt/share/miregex/*
-/opt/share/applications/*
-@PREFIX@/bin/*
-@PREFIX@/res/locale/*
-@PREFIX@/res/icons/*
-@PREFIX@/res/edje/*
-@PREFIX@/data
diff --git a/debian/org.tizen.music-player.install.in b/debian/org.tizen.music-player.install.in
deleted file mode 100755 (executable)
index 2e079ba..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/opt/share/miregex/*
-/opt/share/applications/*
-@PREFIX@/bin/*
-@PREFIX@/res/locale/*
-@PREFIX@/res/icons/*
-@PREFIX@/res/edje/*
-@PREFIX@/data
diff --git a/debian/org.tizen.music-player.postinst b/debian/org.tizen.music-player.postinst
deleted file mode 100755 (executable)
index 2bece33..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/bin/sh
-
-if [ ${USER} = "root" ] 
-then
-
-# 5000 is inhouse user id  5   
-# do not use relative path  6 /usr/bin/vconftool set -t int db/setting/music-player/menu 7 -g 6514  
-chown -R 5000:5000 /opt/apps/org.tizen.music-player/data 
-
-/usr/bin/vconftool set -t int db/setting/music-player/menu 7 -g 6514
-
-/usr/bin/vconftool set -t bool db/setting/music-player/se_change 1 -g 6518
-/usr/bin/vconftool set -t bool db/setting/music-player/menu_change 1 -g 6518
-/usr/bin/vconftool set -t bool db/setting/music-player/surround_ch_state 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_val 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/effect_val 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_1 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_2 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_3 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_4 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_5 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_6 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_7 0 -g 6518
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_8 0 -g 6518
-
-/usr/bin/vconftool set -t int memory/music/state 0 -i -g 6518
-/usr/bin/vconftool set -t int memory/music/process_state 0 -i -g 6518
-/usr/bin/vconftool set -t int memory/music/album_art 0 -i -g 6518
-
-/usr/bin/vconftool set -t string memory/music/pos "00:00" -i -g 6518
-/usr/bin/vconftool set -t double memory/music/progress_pos 0.0 -i -g 6518
-/usr/bin/vconftool set -t bool memory/music/play_clicked 1 -i -g 6518
-/usr/bin/vconftool set -t bool memory/music/pause_clicked 1 -i -g 6518
-/usr/bin/vconftool set -t bool memory/music/prev_pressed 1 -i -g 6518
-/usr/bin/vconftool set -t bool memory/music/prev_released 1 -i -g 6518
-/usr/bin/vconftool set -t bool memory/music/next_pressed 1 -i -g 6518
-/usr/bin/vconftool set -t bool memory/music/next_released 1 -i -g 6518
-
-/usr/bin/vconftool set -t bool db/music/menu/shuffle 1 -i -g 6518
-/usr/bin/vconftool set -t int db/music/menu/repeat 0 -i -g 6518
-
-
-else
-
-/usr/bin/vconftool set -t int db/setting/music-player/menu 7
-
-/usr/bin/vconftool set -t bool db/setting/music-player/se_change 1
-/usr/bin/vconftool set -t bool db/setting/music-player/menu_change 1
-/usr/bin/vconftool set -t bool db/setting/music-player/surround_ch_state 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_val 0
-/usr/bin/vconftool set -t int db/setting/music-player/effect_val 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_1 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_2 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_3 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_4 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_5 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_6 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_7 0
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_8 0
-
-/usr/bin/vconftool set -t int memory/music/state 0
-/usr/bin/vconftool set -t int memory/music/process_state 0
-/usr/bin/vconftool set -t int memory/music/album_art 0
-
-/usr/bin/vconftool set -t string memory/music/pos "00:00" 
-/usr/bin/vconftool set -t double memory/music/progress_pos 0.0
-/usr/bin/vconftool set -t bool memory/music/play_clicked 1
-/usr/bin/vconftool set -t bool memory/music/pause_clicked 1
-/usr/bin/vconftool set -t bool memory/music/prev_pressed 1
-/usr/bin/vconftool set -t bool memory/music/prev_released 1
-/usr/bin/vconftool set -t bool memory/music/next_pressed 1
-/usr/bin/vconftool set -t bool memory/music/next_released 1
-
-/usr/bin/vconftool set -t bool db/music/menu/shuffle 1
-/usr/bin/vconftool set -t int db/music/menu/repeat 0
-
-fi
-
-
diff --git a/debian/rules b/debian/rules
deleted file mode 100755 (executable)
index 72eea56..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-CFLAGS += -Wall -g
-CXXFLAGS +=  -Wall -g
-LDFLAGS +=
-
-PREFIX ?= /opt/apps/org.tizen.music-player
-RESDIR ?= /opt/apps/org.tizen.music-player/res
-DATADIR ?= /opt/apps/org.tizen.music-player/data
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-       CFLAGS += -O0
-       CXXFLAGS += -O0
-else
-       CFLAGS += -O2
-       CXXFLAGS += -O2
-endif
-
-CFLAGS += -fpie
-LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed -pie
-
-configure: configure-stamp
-configure-stamp:
-       dh_testdir
-       # Add here commands to configure the package.
-       CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" cmake . -DCMAKE_INSTALL_PREFIX=$(PREFIX)
-
-       touch configure-stamp
-
-build: build-stamp
-
-build-stamp: configure-stamp 
-       dh_testdir
-
-       # Add here commands to compile the package.
-       $(MAKE)
-       #docbook-to-man debian/wavplayer.sgml > wavplayer.1
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               cat $$f > $${f%.in}; \
-               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
-               sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
-               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
-       done
-
-
-       touch $@
-
-clean:
-       dh_testdir
-       dh_testroot
-       rm -f build-stamp configure-stamp
-
-       # Add here commands to clean up after the build process.
-       -$(MAKE) clean
-       rm -rf CMakeCache.txt
-       rm -rf CMakeFiles
-       rm -rf cmake_install.cmake
-       rm -rf Makefile
-       rm -rf install_manifest.txt
-
-       rm -rf *.so
-       rm -rf *.edj
-       rm -rf SettingData/*.edj
-       rm -rf layout/*.edj
-       rm -rf po/CMakeFiles po/Makefile po/cmake_install.cmake
-       rm -rf po/*.mo
-       rm -rf data/CMakeFiles data/Makefile data/cmake_install.cmake
-       rm -rf org.tizen.music-player.desktop
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               rm -f $${f%.in}; \
-       done
-
-       dh_clean 
-
-install: build
-       dh_testdir
-       dh_testroot
-       dh_clean -k 
-       dh_installdirs
-
-       # Add here commands to install the package into debian/wavplayer.
-       $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-       execstack -c $(CURDIR)/debian/tmp/opt/apps/org.tizen.music-player/bin/music-player
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
-       dh_testdir
-       dh_testroot
-#      dh_installchangelogs 
-#      dh_installdocs
-       dh_installexamples
-       dh_install --sourcedir=debian/tmp
-#      dh_installmenu
-#      dh_installdebconf       
-#      dh_installlogrotate
-#      dh_installemacsen
-#      dh_installpam
-#      dh_installmime
-#      dh_python
-#      dh_installinit
-#      dh_installcron
-#      dh_installinfo
-       dh_installman
-       dh_link
-#      dh_strip
-       dh_strip --dbg-package=org.tizen.music-player-dbg
-       dh_compress
-       dh_fixperms
-#      dh_perl
-       dh_makeshlibs
-       dh_installdeb
-       dh_shlibdeps
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
similarity index 95%
rename from images/music_player/T02_control_top_bg.png
rename to images/music_player/00_sweep_list_bg.png
index 187516e..1606042 100755 (executable)
Binary files a/images/music_player/T02_control_top_bg.png and b/images/music_player/00_sweep_list_bg.png differ
index c9a05aa..c46882d 100755 (executable)
Binary files a/images/music_player/00_winset_control_toolbar_bg.png and b/images/music_player/00_winset_control_toolbar_bg.png differ
diff --git a/images/music_player/00_winset_tabbar_focus.png b/images/music_player/00_winset_tabbar_focus.png
deleted file mode 100755 (executable)
index edcb394..0000000
Binary files a/images/music_player/00_winset_tabbar_focus.png and /dev/null differ
diff --git a/images/music_player/00_winset_tabbar_focus_left.png b/images/music_player/00_winset_tabbar_focus_left.png
deleted file mode 100755 (executable)
index 28b7d8d..0000000
Binary files a/images/music_player/00_winset_tabbar_focus_left.png and /dev/null differ
diff --git a/images/music_player/00_winset_tabbar_focus_right.png b/images/music_player/00_winset_tabbar_focus_right.png
deleted file mode 100755 (executable)
index 7e1163d..0000000
Binary files a/images/music_player/00_winset_tabbar_focus_right.png and /dev/null differ
diff --git a/images/music_player/00_winset_tabbar_press.png b/images/music_player/00_winset_tabbar_press.png
deleted file mode 100755 (executable)
index 3156216..0000000
Binary files a/images/music_player/00_winset_tabbar_press.png and /dev/null differ
diff --git a/images/music_player/00_winset_tabbar_press_left.png b/images/music_player/00_winset_tabbar_press_left.png
deleted file mode 100755 (executable)
index bbbd3dd..0000000
Binary files a/images/music_player/00_winset_tabbar_press_left.png and /dev/null differ
diff --git a/images/music_player/00_winset_tabbar_press_right.png b/images/music_player/00_winset_tabbar_press_right.png
deleted file mode 100755 (executable)
index a1e1d7a..0000000
Binary files a/images/music_player/00_winset_tabbar_press_right.png and /dev/null 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 100755 (executable)
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/39_mini_controller_icon_ff.png b/images/music_player/39_mini_controller_icon_ff.png
new file mode 100755 (executable)
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 100755 (executable)
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 100755 (executable)
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 100755 (executable)
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_bg.png b/images/music_player/Cover_flow/T02_cover_flow_bg.png
new file mode 100644 (file)
index 0000000..d76d20a
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_cover_flow_now_playing_album_01.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_01.png
new file mode 100644 (file)
index 0000000..33008ce
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_01.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_02.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_02.png
new file mode 100644 (file)
index 0000000..1c2c96d
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_02.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_03.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_03.png
new file mode 100644 (file)
index 0000000..bc56060
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_03.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_04.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_04.png
new file mode 100644 (file)
index 0000000..536f8ef
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_04.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_05.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_05.png
new file mode 100644 (file)
index 0000000..f8a8e94
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_05.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_06.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_06.png
new file mode 100644 (file)
index 0000000..7df1c7f
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_06.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_07.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_07.png
new file mode 100644 (file)
index 0000000..b099713
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_07.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_08.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_08.png
new file mode 100644 (file)
index 0000000..12ea0e2
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_08.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_09.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_09.png
new file mode 100644 (file)
index 0000000..8512716
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_09.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_10.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_10.png
new file mode 100644 (file)
index 0000000..06ac71f
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_10.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_11.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_11.png
new file mode 100644 (file)
index 0000000..d2f288e
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_11.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_12.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_12.png
new file mode 100644 (file)
index 0000000..b0a4014
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_album_12.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_arrow.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_arrow.png
new file mode 100644 (file)
index 0000000..047031c
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_arrow.png differ
diff --git a/images/music_player/Cover_flow/T02_cover_flow_now_playing_bg.png b/images/music_player/Cover_flow/T02_cover_flow_now_playing_bg.png
new file mode 100644 (file)
index 0000000..f9c36d1
Binary files /dev/null and b/images/music_player/Cover_flow/T02_cover_flow_now_playing_bg.png differ
diff --git a/images/music_player/Q02_QuickPanel_mini_music_player_controller_next.png b/images/music_player/Q02_QuickPanel_mini_music_player_controller_next.png
new file mode 100755 (executable)
index 0000000..e4e386d
Binary files /dev/null and b/images/music_player/Q02_QuickPanel_mini_music_player_controller_next.png differ
similarity index 91%
rename from images/music_player/00_list_bar_press_1x80.png
rename to images/music_player/Q02_QuickPanel_mini_music_player_controller_pause.png
index 1dc6e15..de355df 100755 (executable)
Binary files a/images/music_player/00_list_bar_press_1x80.png and b/images/music_player/Q02_QuickPanel_mini_music_player_controller_pause.png differ
similarity index 88%
rename from images/music_player/00_Option_header_bt.png
rename to images/music_player/Q02_QuickPanel_mini_music_player_controller_play.png
index 98cc843..1c649b2 100755 (executable)
Binary files a/images/music_player/00_Option_header_bt.png and b/images/music_player/Q02_QuickPanel_mini_music_player_controller_play.png differ
similarity index 86%
rename from images/music_player/00_Option_header_bt_press.png
rename to images/music_player/Q02_QuickPanel_mini_music_player_controller_prev.png
index 843ee7a..422e32f 100755 (executable)
Binary files a/images/music_player/00_Option_header_bt_press.png and b/images/music_player/Q02_QuickPanel_mini_music_player_controller_prev.png differ
diff --git a/images/music_player/Q02_QuickPanel_mini_music_player_gradient.png b/images/music_player/Q02_QuickPanel_mini_music_player_gradient.png
new file mode 100755 (executable)
index 0000000..5dbdea5
Binary files /dev/null and b/images/music_player/Q02_QuickPanel_mini_music_player_gradient.png differ
diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_gradient_right.png b/images/music_player/Q02_Quickpanel_mini_music_player_gradient_right.png
new file mode 100755 (executable)
index 0000000..b2000bb
Binary files /dev/null and b/images/music_player/Q02_Quickpanel_mini_music_player_gradient_right.png differ
diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_repeat_all.png b/images/music_player/Q02_Quickpanel_mini_music_player_repeat_all.png
new file mode 100755 (executable)
index 0000000..30cdbfa
Binary files /dev/null and b/images/music_player/Q02_Quickpanel_mini_music_player_repeat_all.png differ
diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_repeat_none.png b/images/music_player/Q02_Quickpanel_mini_music_player_repeat_none.png
new file mode 100755 (executable)
index 0000000..2df6dc6
Binary files /dev/null and b/images/music_player/Q02_Quickpanel_mini_music_player_repeat_none.png differ
diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_repeat_once.png b/images/music_player/Q02_Quickpanel_mini_music_player_repeat_once.png
new file mode 100755 (executable)
index 0000000..0e16282
Binary files /dev/null and b/images/music_player/Q02_Quickpanel_mini_music_player_repeat_once.png differ
diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_shuffle_off.png b/images/music_player/Q02_Quickpanel_mini_music_player_shuffle_off.png
new file mode 100755 (executable)
index 0000000..1de058f
Binary files /dev/null and b/images/music_player/Q02_Quickpanel_mini_music_player_shuffle_off.png differ
diff --git a/images/music_player/Q02_Quickpanel_mini_music_player_shuffle_on.png b/images/music_player/Q02_Quickpanel_mini_music_player_shuffle_on.png
new file mode 100755 (executable)
index 0000000..6471aa5
Binary files /dev/null and b/images/music_player/Q02_Quickpanel_mini_music_player_shuffle_on.png differ
index d302435..d286f2c 100755 (executable)
Binary files a/images/music_player/T02_Video_play.png and b/images/music_player/T02_Video_play.png differ
diff --git a/images/music_player/T02_control_top_arrow.png b/images/music_player/T02_control_top_arrow.png
deleted file mode 100755 (executable)
index c98a745..0000000
Binary files a/images/music_player/T02_control_top_arrow.png and /dev/null differ
index e070abc..beeae21 100755 (executable)
Binary files a/images/music_player/T02_nocomposers.png and b/images/music_player/T02_nocomposers.png differ
index d9360d5..04a2723 100755 (executable)
Binary files a/images/music_player/T02_now_playing_bar.png and b/images/music_player/T02_now_playing_bar.png differ
index 7e7fbb7..7ff2d42 100755 (executable)
Binary files a/images/music_player/T02_now_playing_icon_pause.png and b/images/music_player/T02_now_playing_icon_pause.png differ
index df51d77..fb9014c 100755 (executable)
Binary files a/images/music_player/T02_now_playing_icon_play.png and b/images/music_player/T02_now_playing_icon_play.png differ
diff --git a/images/music_player/T02_option_SA.png b/images/music_player/T02_option_SA.png
new file mode 100755 (executable)
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_off.png b/images/music_player/T02_option_SA_off.png
new file mode 100755 (executable)
index 0000000..ff4be96
Binary files /dev/null and b/images/music_player/T02_option_SA_off.png differ
index 98223ea..8f6e2bd 100755 (executable)
Binary files a/images/music_player/T02_option_rep_1.png and b/images/music_player/T02_option_rep_1.png differ
index 7e8d7e2..bc53fab 100755 (executable)
Binary files a/images/music_player/T02_option_rep_A.png and b/images/music_player/T02_option_rep_A.png differ
index f24be63..1eee006 100755 (executable)
Binary files a/images/music_player/T02_option_rep_all.png and b/images/music_player/T02_option_rep_all.png differ
index 0053b4c..ef6035e 100755 (executable)
Binary files a/images/music_player/T02_option_shuffle_off.png and b/images/music_player/T02_option_shuffle_off.png differ
index b8c9015..4615d7f 100755 (executable)
Binary files a/images/music_player/T02_option_shuffle_on.png 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 100755 (executable)
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 100755 (executable)
index 0000000..cec9f08
Binary files /dev/null and b/images/music_player/T02_square_cell_bg.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 100755 (executable)
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_toolbar_press.png b/images/music_player/T02_toolbar_press.png
deleted file mode 100755 (executable)
index 98698f3..0000000
Binary files a/images/music_player/T02_toolbar_press.png and /dev/null differ
diff --git a/images/music_player/T02_youtube.png b/images/music_player/T02_youtube.png
new file mode 100755 (executable)
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 100755 (executable)
index 0000000..e205001
Binary files /dev/null and b/images/music_player/allshare_dmr_icon.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 100755 (executable)
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/music_play_square_bg.9.png b/images/music_player/music_play_square_bg.9.png
new file mode 100755 (executable)
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/player/12_music_player_control_bg.png b/images/music_player/player/12_music_player_control_bg.png
new file mode 100755 (executable)
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 100755 (executable)
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_option_favorite_off.png b/images/music_player/player/T02_option_favorite_off.png
new file mode 100755 (executable)
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 100755 (executable)
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/separator_h.png b/images/music_player/separator_h.png
deleted file mode 100644 (file)
index 0823fbc..0000000
Binary files a/images/music_player/separator_h.png and /dev/null differ
diff --git a/include/mp-vconf-private-keys.h b/include/mp-vconf-private-keys.h
new file mode 100755 (executable)
index 0000000..f59f1a8
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MP_VCONF_PRIVATE_KEYS_H__
+#define __MP_VCONF_PRIVATE_KEYS_H__
+
+#include <vconf-keys.h>
+
+#define VCONFKEY_MP_PRIVATE                    "private/org.tizen.music-player/"
+#define VCONFKEY_MP_DB_PREFIX          "db/"VCONFKEY_MP_PRIVATE
+#define VCONFKEY_MP_MEMORY_PREFIX      "memory/"VCONFKEY_MP_PRIVATE
+
+/**
+ * @brief trigger of menu settng changes
+ *
+ * type: int
+ *
+ * value is not meaningful
+ */
+#define VCONFKEY_MUSIC_MENU_CHANGE                     VCONFKEY_MP_DB_PREFIX"menu_change"
+
+
+/**
+ * @brief playlist shuffle state
+ *
+ * type: bool
+ *
+ * 0 : off
+ * 1 : on
+ */
+#define MP_VCONFKEY_MUSIC_SHUFFLE                      VCONFKEY_MP_DB_PREFIX"shuffle"
+
+
+/**
+ * @brief playlist repeat state
+ *
+ * type: int
+ *
+ * 0 : repeat all
+ * 1 : no repeat
+ * 2 : repeat only a songs
+ */
+#define MP_VCONFKEY_MUSIC_REPEAT                       VCONFKEY_MP_DB_PREFIX"repeat"
+enum
+{
+       MP_SETTING_REP_ALL,
+       MP_SETTING_REP_NON,
+       MP_SETTING_REP_1
+};
+
+
+/**
+ * @brief check which player is playing now
+ *
+ * type: int
+ *
+ * pid of music-player of sound-player
+ */
+#define MP_VCONFKEY_PLAYING_PID                                VCONFKEY_MP_MEMORY_PREFIX"playing_pid"
+
+
+#endif /* __MP_VCONF_PRIVATE_KEYS_H__ */
+
diff --git a/layout/mp-3d-view.edc b/layout/mp-3d-view.edc
new file mode 100755 (executable)
index 0000000..3046470
--- /dev/null
@@ -0,0 +1,465 @@
+#define MP_DALI_BACK_BUTTON_SIZE       52
+#define MP_DALI_TAP    10
+
+group {
+        name: "3d-layout";
+
+        parts {
+                       part { name: "background";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       //min:  1280 720;
+                                       //max:  1280 720;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                                       //color: 37 37 37 255;
+                                       color: 0 0 0 0;
+                               }
+                       }
+#if 0
+                       part {
+                               name : "now_playing_bar";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0 0;
+                                       min: 0 100;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 0.0;}
+                               }
+                       }
+
+                       part {
+                               name : "background";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 1.0; to_y: "now_playing_bar"; offset: 0 1;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+#endif
+                       part {
+                               name : "content";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;to: "background";}
+                                       rel2 { relative: 1.0 1.0;to: "background";}
+                               }
+                       }
+
+                       part {
+                               name : "genlist_ly";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.3 0.0;to: "content";}
+                                       rel2 { relative: 0.7 1.0;to: "content";}
+                               }
+                       }
+
+                       part {
+                               name : "left_title";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;to: "content";}
+                                       rel2 { relative: 0.28 0.15;to: "content";}
+                               }
+                       }
+
+                       part {
+                               name : "now_playing";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.72 0.0;to: "content";}
+                                       rel2 { relative: 1.0 0.35;to: "content";}
+                               }
+                       }
+
+                       part { name: "back_button";
+                               type : SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       min: MP_DALI_BACK_BUTTON_SIZE 0;
+                                       fixed: 1 0;
+                                       align: 0.5 0.5;
+                                       rel1 {  relative: 1.0 1.0;
+                                                       offset: (-MP_DALI_BACK_BUTTON_SIZE-MP_DALI_TAP) (-MP_DALI_BACK_BUTTON_SIZE-MP_DALI_TAP);
+                                                       to, "background";
+                                               }
+                                       rel2 {  relative: 1.0 1.0;
+                                                       offset: (-MP_DALI_TAP) (-MP_DALI_TAP);
+                                                       to, "background";
+                                               }
+                               }
+                       }
+               }
+}
+
+group {
+        name: "3d-genlist";
+        parts {
+                       part { name: "background";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                                       color: 0 0 0 229;
+                               }
+                       }
+
+                       part {
+                               name : "list_content";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;to: "background";}
+                                       rel2 { relative: 1.0 1.0;to: "background";}
+                               }
+                       }
+               }
+}
+
+group {
+        name: "3d-left-title";
+        parts {
+                       part { name: "background";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+
+                       part { name: "album_name";
+                   type: TEXT;
+                   scale: 1;
+                   description { state: "default" 0.0;
+                      //min: 0 38;
+                      fixed: 0 1;
+                      align: 1.0 0.5;
+                      rel1 {
+                         relative: 0.0 0.0;
+                         to: "background";
+                      }
+                      rel2 {
+                         relative: 1.0 0.5;
+                         offset: 0 0;
+                         to: "background";
+                      }
+                      color: 255 255 255 255;
+                      text {
+                        font: FONT_STYLE_MEDIUM;
+                        size: 34;
+                        min: 0 1;
+                        align: 1.0 0.5;
+                      }
+                   }
+               }
+
+               part { name: "artist_name";
+                   type: TEXT;
+                   scale: 1;
+                   description { state: "default" 0.0;
+                      //min: 0 38;
+                      fixed: 0 1;
+                      align: 1.0 0.0;
+                      rel1 {
+                         relative: 0.0 0.5;
+                         to: "background";
+                      }
+                      rel2 {
+                         relative: 1.0 1.0;
+                         offset: 0 0;
+                         to: "background";
+                      }
+                      color: 176 176 176 255;
+                      text {
+                        font: FONT_STYLE_MEDIUM;
+                        size: 34;
+                        min: 0 1;
+                        align: 1.0 0.0;
+                      }
+                   }
+               }
+               }
+}
+
+#define COVER_FLOW_NOW_PLAYING_ARROW "Cover_flow/T02_cover_flow_now_playing_arrow.png"
+#define COVER_FLOW_NOW_PLAYING_BG "Cover_flow/T02_cover_flow_now_playing_bg.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_01 "Cover_flow/T02_cover_flow_now_playing_album_01.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_02 "Cover_flow/T02_cover_flow_now_playing_album_02.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_03 "Cover_flow/T02_cover_flow_now_playing_album_03.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_04 "Cover_flow/T02_cover_flow_now_playing_album_04.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_05 "Cover_flow/T02_cover_flow_now_playing_album_05.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_06 "Cover_flow/T02_cover_flow_now_playing_album_06.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_07 "Cover_flow/T02_cover_flow_now_playing_album_07.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_08 "Cover_flow/T02_cover_flow_now_playing_album_08.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_09 "Cover_flow/T02_cover_flow_now_playing_album_09.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_10 "Cover_flow/T02_cover_flow_now_playing_album_10.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_11 "Cover_flow/T02_cover_flow_now_playing_album_11.png"
+#define COVER_FLOW_NOW_PLAYING_ALBUM_12 "Cover_flow/T02_cover_flow_now_playing_album_12.png"
+
+#define COVER_FLOW_ALBUM_IMAGE( param_num ) \
+   description { state: "album_"#param_num 0.0; \
+      inherit: "default" 0.0; \
+      image { \
+         normal: "Cover_flow/T02_cover_flow_now_playing_album_"#param_num".png"; \
+      } \
+   }
+
+#define COVER_FLOW_SHOW_ALBUM_IMAGE( param_num ) \
+       program { \
+                       name : "show_album_image_"#param_num; \
+                       signal : "SHOW_ALBUM_IMAGE_"#param_num; \
+                       source : "music_app"; \
+                       action : STATE_SET "album_"#param_num 0.0; \
+                       target : "album_image"; \
+               }
+
+group {
+        name: "3d-now-playing";
+
+        images {
+                       image:  COVER_FLOW_NOW_PLAYING_ARROW COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_BG COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_01 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_02 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_03 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_04 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_05 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_06 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_07 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_08 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_09 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_10 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_11 COMP;
+                       image:  COVER_FLOW_NOW_PLAYING_ALBUM_12 COMP;
+               }
+
+        parts {
+                       part { name: "background";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+
+                       part { name: "elm.padding.right";
+                   type: RECT;
+                   scale: 1;
+                   description { state: "default" 0.0;
+                      min: 8 0;
+                      fixed: 1 0;
+                      visible: 0;
+                      rel1 {
+                         relative: 1.0 0.0;
+                         to: "background";
+                      }
+                      align: 1.0 0.0;
+                   }
+                }
+
+               part { name: "elm.padding.top";
+                   type: RECT;
+                   scale: 1;
+                   description {
+                      state: "default" 0.0;
+                      min: 0 8;
+                      fixed: 0 1;
+                      visible: 0;
+                      rel2 {
+                         relative: 1.0 0.0;
+                         to: "background";
+                      }
+                      align: 0.0 0.0;
+                   }
+                }
+
+                       part { name, "album_image";
+                               type, IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       image { normal: COVER_FLOW_NOW_PLAYING_ALBUM_01; }
+                                       visible: 1;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                         relative: 0.2 1.0;
+                         offset: 0 0;
+                         to_x: "background";
+                         to_y: "elm.padding.top";
+                      }
+                      rel2 {
+                         relative: 0.0 1.0;
+                         offset: 0 0;
+                         to_x: "elm.padding.right";
+                         to_y: "background";
+                      }
+                               }
+                               COVER_FLOW_ALBUM_IMAGE( 01 )
+                   COVER_FLOW_ALBUM_IMAGE( 02 )
+                   COVER_FLOW_ALBUM_IMAGE( 03 )
+                   COVER_FLOW_ALBUM_IMAGE( 04 )
+                   COVER_FLOW_ALBUM_IMAGE( 05 )
+                   COVER_FLOW_ALBUM_IMAGE( 06 )
+                   COVER_FLOW_ALBUM_IMAGE( 07 )
+                   COVER_FLOW_ALBUM_IMAGE( 08 )
+                   COVER_FLOW_ALBUM_IMAGE( 09 )
+                   COVER_FLOW_ALBUM_IMAGE( 10 )
+                   COVER_FLOW_ALBUM_IMAGE( 11 )
+                   COVER_FLOW_ALBUM_IMAGE( 12 )
+                       }
+
+               part { name, "now_playing_bg";
+                               type, IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       image { normal: COVER_FLOW_NOW_PLAYING_BG; }
+                                       visible: 1;
+                                       align: 0.5 0.5;
+                                       rel1 {
+                         relative: 0.0 1.0;
+                         offset: 0 0;
+                         to_x: "background";
+                         to_y: "elm.padding.top";
+                      }
+                      rel2 {
+                         relative: 0.0 0.5;
+                         offset: 0 0;
+                         to_x: "elm.padding.right";
+                         to_y: "background";
+                      }
+                               }
+                       }
+
+                       part { name, "now_playing_arrow";
+                               type, IMAGE;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       image { normal: COVER_FLOW_NOW_PLAYING_ARROW; }
+                                       visible: 1;
+                                       align: 0.0 0.5;
+                                       rel1 {
+                         relative: 0.0 0.0;
+                         offset: 10 0;
+                         to: "now_playing_bg";
+                      }
+                      rel2 {
+                         relative: 0.15 0.5;
+                         offset: 10 0;
+                         to: "now_playing_bg";
+                      }
+                               }
+                       }
+
+                       part { name: "track_name";
+                   type: TEXT;
+                   scale: 1;
+                   description { state: "default" 0.0;
+                      //min: 0 38;
+                      fixed: 0 1;
+                      align: 0.0 0.5;
+                      rel1 {
+                         relative: 1.0 0.0;
+                         offset: 8 0;
+                         to_x: "now_playing_arrow";
+                         to_y: "now_playing_bg";
+                      }
+                      rel2 {
+                         relative: 1.0 0.5;
+                         offset: 0 0;
+                         to: "now_playing_bg";
+                      }
+                      color: 169 220 255 255;
+                      text {
+                        font: FONT_STYLE_MEDIUM;
+                        size: 30;
+                        min: 0 1;
+                        align: 0.0 0.5;
+                      }
+                   }
+               }
+
+               part { name: "artist_name";
+                   type: TEXT;
+                   scale: 1;
+                   description { state: "default" 0.0;
+                      //min: 0 38;
+                      fixed: 0 1;
+                      align: 0.0 0.0;
+                      rel1 {
+                         relative: 1.0 0.5;
+                         offset: 8 0;
+                         to_x: "now_playing_arrow";
+                         to_y: "now_playing_bg";
+                      }
+                      rel2 {
+                         relative: 1.0 1.0;
+                         offset: 0 0;
+                         to: "now_playing_bg";
+                      }
+                      color: 169 220 255 255;
+                      text {
+                        font: FONT_STYLE_MEDIUM;
+                        size: 30;
+                        min: 0 1;
+                        align: 0.0 0.0;
+                      }
+                   }
+               }
+               }
+
+               programs {
+                       COVER_FLOW_SHOW_ALBUM_IMAGE( 01 )
+                       COVER_FLOW_SHOW_ALBUM_IMAGE( 02 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 03 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 04 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 05 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 06 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 07 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 08 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 09 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 10 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 11 )
+            COVER_FLOW_SHOW_ALBUM_IMAGE( 12 )
+      }
+
+}
\ No newline at end of file
index 55c2f32..c2d5955 100755 (executable)
@@ -1,20 +1,6 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 
+ //1 this code is based on nbeat theme (2011/09/9)
+
 #define BUTTON_STATE_ENABLED  0
 #define BUTTON_STATE_DISABLED 1
 
       script {
          public button_state = BUTTON_STATE_ENABLED;
       }
+
       parts {
          part { name: "elm.swallow.content";
             type: SWALLOW;
index 11da2b5..6fe1058 100755 (executable)
@@ -1,30 +1,12 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
 #include "mp-defines.h"
 
 collections {
        #include "mp-genlist-theme.edc"
-       #include "mp-naviframe.edc"
-       #include "mp-toolbar.edc"
        #include "mp-progressbar.edc"
-       #include "mp-button.edc"
+       #include "mp-genlist-sweep.edc"
        #include "mp-genlist-edit.edc"
-       #include "mp-editfield.edc"
+       #include "mp-gengrid-style.edc"
        #include "mp-selection-info.edc"
+       #include "mp-naviframe.edc"
 }
 
index 53933db..35bbacf 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
-
 #ifndef __MP_DEFINES_H__
 #define __MP_DEFINES_H__
 
-
 /* main size */
 #define MAIN_W                 480
 #define MAIN_H                 800
+//#define PLAYVIEW_H           706
 #define PLAYVIEW_H             620
-#define MENUBOX_H              56
+#define MENUBOX_H              /*90*/56
 #define PROGRESSBOX_H  67
 
 
 #define FONT_STYLE_MEDIUM "SLP:style=Medium"
 #define FONT_STYLE_BOLD "SLP:style=Bold"
 
-#define FONT_NAME "system_content"
-#define FONT_TITLE_NAME "system_title"
-#define FONT_CONTENT_NAME "system_content"
-#define FONT_SUBCONTENT_NAME "system_subcontent"
+#define FONT_NAME "system_content"             //should be replaced to FONT_CONTENT_NAME
+#define FONT_TITLE_NAME "system_title" //"system_title"
+#define FONT_CONTENT_NAME "system_content"     //"system_content"
+#define FONT_SUBCONTENT_NAME "system_subcontent"       //"system_subcontent"
 
 /* soft key*/
 #define SOFTKEY_SY (722/MAIN_H)
 
 #define MP_NAVI_BAR_H  (35)
 /* player info box*/
-#define INFO_BOX_SY ((634 - MP_NAVI_BAR_H)/MAIN_H)
+#define INFO_BOX_SY ((/*595*/634 - MP_NAVI_BAR_H)/MAIN_H)
 /* play control box*/
-#define CTL_BOX_HEIGHT 120
-#define CTL_BOX_SY 705/MAIN_H
+#define CTL_BOX_HEIGHT 120/*86*/
+#define CTL_BOX_SY /*((714 -10)/MAIN_H)*/705/MAIN_H
 #define CTL_REW_SX (115/MAIN_W)
 #define CTL_REW_EX (165/MAIN_W)
 #define CTL_REW_SY (20/CTL_BOX_HEIGHT)
 
 #define MENU_SY HD_MENU_PAD_TOP/HD_MENU_BOX_H
 #define MENU_EY (HD_MENU_PAD_TOP+HD_MENU_H)/HD_MENU_BOX_H
-#define MENU_SHUFFLE_SX HD_MENU_PAA_LEFT/HD_MENU_BOX_W
-#define MENU_SHUFFLE_EX (HD_MENU_PAA_LEFT+HD_MENU_W)/HD_MENU_BOX_W
-#define MENU_REP_ALL_SX (HD_MENU_BOX_W-HD_MENU_W)/2/HD_MENU_BOX_W
-#define MENU_REP_ALL_EX (HD_MENU_BOX_W+HD_MENU_W)/2/HD_MENU_BOX_W
+#define MENU_SRS_SX HD_MENU_PAA_LEFT/HD_MENU_BOX_W
+#define MENU_SRS_EX (HD_MENU_PAA_LEFT+HD_MENU_W)/HD_MENU_BOX_W
+#define MENU_SHUFFLE_SX (HD_MENU_PAA_LEFT+HD_MENU_W+HD_MENU_PAD_MENU)/HD_MENU_BOX_W
+#define MENU_SHUFFLE_EX (HD_MENU_PAA_LEFT+HD_MENU_W*2+HD_MENU_PAD_MENU)/HD_MENU_BOX_W
+#define MENU_REP_ALL_SX (HD_MENU_PAA_LEFT+HD_MENU_W*2+HD_MENU_PAD_MENU*2)/HD_MENU_BOX_W
+#define MENU_REP_ALL_EX (HD_MENU_PAA_LEFT+HD_MENU_W*3+HD_MENU_PAD_MENU*2)/HD_MENU_BOX_W
 #define MENU_FAVORITE_SX (HD_MENU_PAA_LEFT+HD_MENU_W*3+HD_MENU_PAD_MENU*3)/HD_MENU_BOX_W
 #define MENU_FAVORITE_EX (HD_MENU_PAA_LEFT+HD_MENU_W*4+HD_MENU_PAD_MENU*3)/HD_MENU_BOX_W
 
diff --git a/layout/mp-edit-navi.edc b/layout/mp-edit-navi.edc
new file mode 100755 (executable)
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{
+
+               }
+       }
index 4698f5a..655066a 100755 (executable)
@@ -1,20 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
 
 #define ENTRY_TEXT_SIZE_INC 44
 #define ENTRY_TEXT_COLOR_INC "#FFFFFF"
diff --git a/layout/mp-gengrid-style.edc b/layout/mp-gengrid-style.edc
new file mode 100755 (executable)
index 0000000..08f5151
--- /dev/null
@@ -0,0 +1,114 @@
+
+#define VIDEO_W 184
+#define VIDEO_H  213
+
+#define ICON_W 162
+#define ICON_H 129
+
+#define VIDEO_TXT_COLOR 166 166 166 255
+#define VIDEO_TXT_SIZE 24
+#define VIDEO_TXT_FONT "Helvetica Neue:style=Roman"
+
+group {
+       name: "elm/gengrid/item/grid_video/default";
+
+       data.item: "texts" "elm.text.1 elm.text.2";
+       data.item: "contents" "elm.swallow.icon";
+
+       parts {
+               part {
+                       name: "bg";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                               rel1 { relative: 0.0 0.0; }
+                                rel2 { relative: 1.0 1.0; }
+                       }
+               }
+
+               part {
+                        name: "elm.swallow.bg";
+                        type: RECT;
+                        description {
+                                state: "default" 0.0;
+                                color: 0 0 0 0;
+                                rel1 { relative: 0.0 0.0; to: "bg"; }
+                                rel2 { relative: ICON_W/VIDEO_W ICON_H/VIDEO_H;}
+                        }
+                }
+
+               part {
+                        name: "elm.swallow.icon";
+                        type: SWALLOW;
+                        description {
+                                state: "default" 0.0;
+                                rel1 { relative: 0.0 0.0; to: "bg"; }
+                                rel2 { relative: ICON_W/VIDEO_W ICON_H/VIDEO_H;}
+                        }
+                }
+
+               part {
+                       name: "elm.text.1";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 139/VIDEO_H; offset: 0 0; to_x: "elm.swallow.bg"; }
+                                rel2 { relative: 1.0 167/VIDEO_H; offset: 0 0; to_x: "elm.swallow.bg"; }
+                                       color: VIDEO_TXT_COLOR;
+                                       text {
+                                       font: VIDEO_TXT_FONT;
+                                       size: VIDEO_TXT_SIZE;
+                                       align: 0.5 0.5;
+                                       }
+                       }
+               }
+
+               part {
+                       name: "elm.text.2";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 173/VIDEO_H; offset: 0 0; to_x: "elm.text.1"; }
+                                rel2 { relative: 1.0 201/VIDEO_H; offset: 0 0; to_x: "elm.text.1"; }
+                                       color: VIDEO_TXT_COLOR;
+                                       text {
+                                       font: VIDEO_TXT_FONT;
+                                       size: VIDEO_TXT_SIZE;
+                                       align: 0.5 0.5;
+                                       }
+                       }
+               }
+       }
+}
+
+group { name: "elm/gengrid/item/music/grid_square/default";
+      data.item: "contents" "elm.swallow.icon elm.swallow.end";
+      parts {
+         part { name: "bg";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+
+         part { name: "elm.swallow.icon";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  to: "bg";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "bg";
+               }
+            }
+         }
+      }
+   }
+
index 0ff784b..bff11c3 100755 (executable)
@@ -1,19 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
 
 group { name: "elm/genlist/item/select_all/music/default";
              alias: "elm/genlist/item_odd/select_all/music/default";
@@ -24,9 +8,7 @@ group { name: "elm/genlist/item/select_all/music/default";
       data.item: "selectraise" "on";
       data.item: "texts" "elm.text";
       data.item: "contents" "elm.icon";
-      images {
-         image: "00_list_bar_press_1x80.png" COMP;
-      }
+
       parts {
          part { name: "base";
             type: RECT;
@@ -110,7 +92,7 @@ group { name: "elm/genlist/item/select_all/music/default";
                   to_x: "elm.padding.right";
                   to_y: "elm.padding.bottom";
                }
-               color: GENLIST_PART_TEXT_COLOR_INC;
+               color: MP_MAIN_TEXT_COLOR;
                text {
                   font: "SLP:style=Roman";
                   size: GENLIST_FONT_44_INC;
diff --git a/layout/mp-genlist-sweep.edc b/layout/mp-genlist-sweep.edc
new file mode 100755 (executable)
index 0000000..06dd495
--- /dev/null
@@ -0,0 +1,1423 @@
+
+#define MP_GENLIST_SWEEP_PART_BASE( param_item_height ) \
+         part { name: "base";\
+            type: RECT;\
+            clip_to: "disclip";\
+            scale: 1;\
+            description { state: "default" 0.0;\
+               min: 0 param_item_height;\
+               color: 236 240 242 255;\
+            }\
+         }
+
+#define GENLIST_SIZE_SLIDE_109_INC 109
+#define GENLIST_SIZE_SLIDE_147_INC 147
+
+#define GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC 124 124 124 255
+
+group { name: "elm/genlist/item/mode/music/slide/default";
+      alias: "elm/genlist/item_odd/mode/music/slide/default";
+      alias: "elm/genlist/item_compress/mode/music/slide/default";
+      alias: "elm/genlist/item_compress_odd/mode/music/slide/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.slide.text.1";
+      data.item: "contents" "elm.slide.swallow.1";
+      data.item: "mode_part" "elm.swallow.origin";
+      data.item: "treesize" "GENLIST_TREESIZE_32_INC";
+      images {
+         image: "00_sweep_list_bg.png" COMP;
+      }
+
+      parts {
+       #if 0
+         part { name: "base";
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_HEIGHT_113_INC;
+               image {
+                  normal: "00_sweep_list_bg.png";
+                  border: 0 0 3 0;
+               }
+            }
+         }
+         #endif
+         MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC)
+
+         part { name: "bottom_line";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: GENLIST_PART_LIST_LINE_COLOR_INC;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -1;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.left";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1.to: "base";
+               rel2 {
+                  relative: 0 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "base.padding.right";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1 {
+                  relative: 1 0;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.bottom";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_PADDING_6_INC;
+               fixed: 0 1;
+               visible: 0;
+               align: 0.5 1;
+               rel1 {
+                  relative: 0 1;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 1 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "elm.slide.text.1";
+            type: TEXT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_45_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1 {
+                  relative: 1 0;
+                  to_x: "base.padding.left";
+                  to_y: "base";
+               }
+               rel2 {
+                  relative: 0 0;
+                  to_x: "base.padding.right";
+                  to_y: "base";
+               }
+               color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC;
+               text {
+                  font: "SLP:style=Roman";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.5 0.5;
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.1";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_390_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_390_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.5 1;
+                  to_x: "base";
+                  to_y: "elm.slide.text.1";
+               }
+               rel2 {
+                  relative: 0.5 0;
+                  to_x: "base";
+                  to_y: "base.padding.bottom";
+               }
+            }
+         }
+         // Transparent part between base parts and slidable parts
+         part { name: "event_block_layer";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 1;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               color: 0 0 0 0;
+            }
+            description { state: "repeat_events" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         // Swallow part for original genlist item style
+         part { name: "elm.swallow.origin";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+            }
+            description { state: "slide" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1 0;
+               rel2.relative: 2 1;
+            }
+         }
+         part { name: "disclip";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_DISCLIP_COLOR_INC;
+            }
+         }
+      }
+      programs {
+         program {
+            name:    "slide_right";
+            signal:  "elm,state,slide,active";
+            source:  "elm";
+            action:  STATE_SET "slide" 0.0;
+            target:  "elm.swallow.origin";
+            transition: ACCELERATE 0.5;
+            after:   "unblock_event";
+         }
+         program {
+            name:    "unblock_event";
+            action:  STATE_SET "repeat_events" 0.0;
+            target:  "event_block_layer";
+         }
+         program {
+            name:    "slide_left";
+            signal:  "elm,state,slide,passive";
+            source:  "elm";
+            action:  STATE_SET "default" 0.0;
+            target:  "event_block_layer";
+            after:   "slide_left2";
+         }
+         program {
+            name:    "slide_left2";
+            action:  STATE_SET "default" 0.0;
+            target:  "elm.swallow.origin";
+            transition: DECELERATE 0.5;
+            after:   "slide_left_finished";
+         }
+         program {
+            name:    "slide_left_finished";
+            action:  SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+         }
+      }
+   }
+   
+   group { name: "elm/genlist/item/mode/music/slide2/default";
+      alias: "elm/genlist/item_odd/mode/music/slide2/default";
+      alias: "elm/genlist/item_compress/mode/music/slide2/default";
+      alias: "elm/genlist/item_compress_odd/mode/music/slide2/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.slide.text.1";
+      data.item: "contents" "elm.slide.swallow.1 elm.slide.swallow.2";
+      data.item: "mode_part" "elm.swallow.origin";
+      data.item: "treesize" "GENLIST_TREESIZE_32_INC";
+      images {
+         image: "00_sweep_list_bg.png" COMP;
+      }
+
+      parts {
+      #if 0
+         part { name: "base";
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_HEIGHT_129_INC;
+               image {
+                  normal: "00_sweep_list_bg.png";
+                  border: 0 0 3 0;
+               }
+            }
+         }
+         #endif
+         MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC)
+         part { name: "bottom_line";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: GENLIST_PART_LIST_LINE_COLOR_INC;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -1;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.left";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1.to: "base";
+               rel2 {
+                  relative: 0 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "base.padding.right";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1 {
+                  relative: 1 0;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.bottom";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_PADDING_11_INC;
+               fixed: 0 1;
+               visible: 0;
+               align: 0.5 1;
+               rel1 {
+                  relative: 0 1;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 1 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "elm.slide.text.1";
+            type: TEXT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_56_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1 {
+                  relative: 1 0;
+                  to_x: "base.padding.left";
+                  to_y: "base";
+               }
+               rel2 {
+                  relative: 0 0;
+                  to_x: "base.padding.right";
+                  to_y: "base";
+               }
+               color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC;
+               text {
+                  font: "SLP:style=Roman";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.5 0.5;
+               }
+            }
+         }
+         part { name: "base.padding.center";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               align: 0.5 0.5;
+               rel1 {
+                  relative: 0.5 0;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 0.5 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.1";
+            type: SWALLOW;
+            clip_to: "disclip";
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1 1;
+                  to_x: "base.padding.left";
+                  to_y: "elm.slide.text.1";
+               }
+               rel2 {
+                  relative: 0 0;
+                  to_x: "base.padding.center";
+                  to_y: "base.padding.bottom";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.2";
+            type: SWALLOW;
+            clip_to: "disclip";
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1 1;
+                  to_x: "base.padding.center";
+                  to_y: "elm.slide.text.1";
+               }
+               rel2 {
+                  relative: 0 0;
+                  to_x: "base.padding.right";
+                  to_y: "base.padding.bottom";
+               }
+            }
+         }
+         // Transparent part between base parts and slidable parts
+         part { name: "event_block_layer";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 1;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               color: 0 0 0 0;
+            }
+            description { state: "repeat_events" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         // Swallow part for original genlist item style
+         part { name: "elm.swallow.origin";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+            }
+            description { state: "slide" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1 0;
+               rel2.relative: 2 1;
+            }
+         }
+         part { name: "disclip";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_DISCLIP_COLOR_INC;
+            }
+         }
+      }
+      programs {
+         program {
+            name:    "slide_right";
+            signal:  "elm,state,slide,active";
+            source:  "elm";
+            action:  STATE_SET "slide" 0.0;
+            target:  "elm.swallow.origin";
+            transition: ACCELERATE 0.5;
+            after:   "unblock_event";
+         }
+         program {
+            name:    "unblock_event";
+            action:  STATE_SET "repeat_events" 0.0;
+            target:  "event_block_layer";
+         }
+         program {
+            name:    "slide_left";
+            signal:  "elm,state,slide,passive";
+            source:  "elm";
+            action:  STATE_SET "default" 0.0;
+            target:  "event_block_layer";
+            after:   "slide_left2";
+         }
+         program {
+            name:    "slide_left2";
+            action:  STATE_SET "default" 0.0;
+            target:  "elm.swallow.origin";
+            transition: DECELERATE 0.5;
+            after:   "slide_left_finished";
+         }
+         program {
+            name:    "slide_left_finished";
+            action:  SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+         }
+      }
+   }
+
+   group { name: "elm/genlist/item/mode/music/slide3/default";
+      alias: "elm/genlist/item_odd/mode/music/slide3/default";
+      alias: "elm/genlist/item_compress/mode/music/slide3/default";
+      alias: "elm/genlist/item_compress_odd/mode/music/slide3/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.slide.text.1";
+      data.item: "contents" "elm.slide.swallow.1 elm.slide.swallow.2 elm.slide.swallow.3";
+      data.item: "mode_part" "elm.swallow.origin";
+      data.item: "treesize" "GENLIST_TREESIZE_32_INC";
+      images {
+         image: "00_sweep_list_bg.png" COMP;
+      }
+
+      parts {
+      #if 0
+         part { name: "base";
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_HEIGHT_113_INC;
+               image {
+                  normal: "00_sweep_list_bg.png";
+                  border: 0 0 3 0;
+               }
+            }
+         }
+         #endif
+         MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC)
+         part { name: "bottom_line";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: GENLIST_PART_LIST_LINE_COLOR_INC;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -1;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.left";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1.to: "base";
+               rel2 {
+                  relative: 0 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "base.padding.right";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1 {
+                  relative: 1 0;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.bottom";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_PADDING_6_INC;
+               fixed: 0 1;
+               visible: 0;
+               align: 0.5 1;
+               rel1 {
+                  relative: 0 1;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 1 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "elm.slide.text.1";
+            type: TEXT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_FONT_44_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1 {
+                  relative: 1 0;
+                  to_x: "base.padding.left";
+                  to_y: "base";
+               }
+               rel2 {
+                  relative: 0 0;
+                  to_x: "base.padding.right";
+                  to_y: "base";
+               }
+               color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC;
+               text {
+                  font: "SLP:style=Roman";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.5 0.5;
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.2";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_220_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.5 1;
+                  to_x: "base";
+                  to_y: "elm.slide.text.1";
+               }
+               rel2 {
+                  relative: 0.5 0;
+                  to_x: "base";
+                  to_y: "base.padding.bottom";
+               }
+            }
+         }
+         part { name: "elm.padding.swallow.2.left";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               align: 1 0.5;
+               visible: 0;
+               rel1.to: "elm.slide.swallow.2";
+               rel2 {
+                  relative: 0 1;
+                  to: "elm.slide.swallow.2";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.1";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_220_INC 0;
+               fixed: 1 0;
+               align: 1 0.5;
+               rel1.to: "elm.padding.swallow.2.left";
+               rel2 {
+                  relative: 0 1;
+                  to: "elm.padding.swallow.2.left";
+               }
+            }
+         }
+         part { name: "elm.padding.swallow.2.right";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               visible: 0;
+               rel1 {
+                  relative: 1 0;
+                  to: "elm.slide.swallow.2";
+               }
+               rel2.to: "elm.slide.swallow.2";
+            }
+         }
+         part { name: "elm.slide.swallow.3";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_220_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               rel1 {
+                  relative: 1 0;
+                  to: "elm.padding.swallow.2.right";
+               }
+               rel2.to: "elm.padding.swallow.2.right";
+            }
+         }
+         // Transparent part between base parts and slidable parts
+         part { name: "event_block_layer";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 1;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               color: 0 0 0 0;
+            }
+            description { state: "repeat_events" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         // Swallow part for original genlist item style
+         part { name: "elm.swallow.origin";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+            }
+            description { state: "slide" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1 0;
+               rel2.relative: 2 1;
+            }
+         }
+         part { name: "disclip";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_DISCLIP_COLOR_INC;
+            }
+         }
+      }
+      programs {
+         program {
+            name:    "slide_right";
+            signal:  "elm,state,slide,active";
+            source:  "elm";
+            action:  STATE_SET "slide" 0.0;
+            target:  "elm.swallow.origin";
+            transition: ACCELERATE 0.5;
+            after:   "unblock_event";
+         }
+         program {
+            name:    "unblock_event";
+            action:  STATE_SET "repeat_events" 0.0;
+            target:  "event_block_layer";
+         }
+         program {
+            name:    "slide_left";
+            signal:  "elm,state,slide,passive";
+            source:  "elm";
+            action:  STATE_SET "default" 0.0;
+            target:  "event_block_layer";
+            after:   "slide_left2";
+         }
+         program {
+            name:    "slide_left2";
+            action:  STATE_SET "default" 0.0;
+            target:  "elm.swallow.origin";
+            transition: DECELERATE 0.5;
+            after:   "slide_left_finished";
+         }
+         program {
+            name:    "slide_left_finished";
+            action:  SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+         }
+      }
+   }
+
+   group { name: "elm/genlist/item/mode/music/slide4/default";
+      alias: "elm/genlist/item_odd/mode/music/slide4/default";
+      alias: "elm/genlist/item_compress/mode/music/slide4/default";
+      alias: "elm/genlist/item_compress_odd/mode/music/slide4/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.slide.text.1";
+      data.item: "contents" "elm.slide.swallow.1 elm.slide.swallow.2 elm.slide.swallow.3 elm.slide.swallow.4";
+      data.item: "mode_part" "elm.swallow.origin";
+      data.item: "treesize" "GENLIST_TREESIZE_32_INC";
+      images {
+         image: "00_sweep_list_bg.png" COMP;
+      }
+
+      parts {
+      #if 0
+         part { name: "base";
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_HEIGHT_129_INC;
+               image {
+                  normal: "00_sweep_list_bg.png";
+                  border: 0 0 3 0;
+               }
+            }
+         }
+         #endif
+         MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC)
+         part { name: "bottom_line";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: GENLIST_PART_LIST_LINE_COLOR_INC;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -1;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.left";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1.to: "base";
+               rel2 {
+                  relative: 0 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "base.padding.right";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1 {
+                  relative: 1 0;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.bottom";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 7;
+               fixed: 0 1;
+               visible: 0;
+               align: 0.5 1;
+               rel1 {
+                  relative: 0 1;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 1 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "elm.slide.text.1";
+            type: TEXT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_57_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1 {
+                  relative: 1 0;
+                  to_x: "base.padding.left";
+                  to_y: "base";
+               }
+               rel2 {
+                  relative: 0 0;
+                  to_x: "base.padding.right";
+                  to_y: "base";
+               }
+               color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC;
+               text {
+                  font: "SLP:style=Roman";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.5 0.5;
+               }
+            }
+         }
+         part { name: "base.padding.center";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_13_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               align: 0.5 0.5;
+               rel1 {
+                  relative: 0.5 1;
+                  to_x: "base";
+                  to_y: "elm.slide.text.1";
+               }
+               rel2 {
+                  relative: 0.5 0;
+                  to_x: "base";
+                  to_y: "base.padding.bottom";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.2";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               align: 1 0.5;
+               rel1.to: "base.padding.center";
+               rel2 {
+                  relative: 0 1;
+                  to: "base.padding.center";
+               }
+            }
+         }
+         part { name: "elm.padding.swallow.2.left";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_13_INC 0;
+               fixed: 1 0;
+               align: 1 0.5;
+               visible: 0;
+               rel1.to: "elm.slide.swallow.2";
+               rel2 {
+                  relative: 0 1;
+                  to: "elm.slide.swallow.2";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.1";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               align: 1 0.5;
+               rel1.to: "elm.padding.swallow.2.left";
+               rel2 {
+                  relative: 0 1;
+                  to: "elm.padding.swallow.2.left";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.3";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 {
+                  relative: 1 0;
+                  to: "base.padding.center";
+               }
+               rel2.to: "base.padding.center";
+            }
+         }
+         part { name: "elm.padding.swallow.3.right";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_13_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               visible: 0;
+               rel1 {
+                  relative: 1 0;
+                  to: "elm.slide.swallow.3";
+               }
+               rel2.to: "elm.slide.swallow.2";
+            }
+         }
+         part { name: "elm.slide.swallow.4";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 {
+                  relative: 1 0;
+                  to: "elm.padding.swallow.3.right";
+               }
+               rel2.to: "elm.padding.swallow.3.right";
+            }
+         }
+         // Transparent part between base parts and slidable parts
+         part { name: "event_block_layer";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 1;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               color: 0 0 0 0;
+            }
+            description { state: "repeat_events" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         // Swallow part for original genlist item style
+         part { name: "elm.swallow.origin";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+            }
+            description { state: "slide" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1 0;
+               rel2.relative: 2 1;
+            }
+         }
+         part { name: "disclip";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_DISCLIP_COLOR_INC;
+            }
+         }
+      }
+      programs {
+         program {
+            name:    "slide_right";
+            signal:  "elm,state,slide,active";
+            source:  "elm";
+            action:  STATE_SET "slide" 0.0;
+            target:  "elm.swallow.origin";
+            transition: ACCELERATE 0.5;
+            after:   "unblock_event";
+         }
+         program {
+            name:    "unblock_event";
+            action:  STATE_SET "repeat_events" 0.0;
+            target:  "event_block_layer";
+         }
+         program {
+            name:    "slide_left";
+            signal:  "elm,state,slide,passive";
+            source:  "elm";
+            action:  STATE_SET "default" 0.0;
+            target:  "event_block_layer";
+            after:   "slide_left2";
+         }
+         program {
+            name:    "slide_left2";
+            action:  STATE_SET "default" 0.0;
+            target:  "elm.swallow.origin";
+            transition: DECELERATE 0.5;
+            after:   "slide_left_finished";
+         }
+         program {
+            name:    "slide_left_finished";
+            action:  SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+         }
+      }
+   }
+
+   group { name: "elm/genlist/item/mode/music/slide4.2/default";
+      alias: "elm/genlist/item_odd/mode/music/slide4.2/default";
+      alias: "elm/genlist/item_compress/mode/music/slide4.2/default";
+      alias: "elm/genlist/item_compress_odd/mode/music/slide4.2/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.slide.text.1";
+      data.item: "contents" "elm.slide.swallow.1 elm.slide.swallow.2 elm.slide.swallow.3 elm.slide.swallow.4";
+      data.item: "mode_part" "elm.swallow.origin";
+      data.item: "treesize" "GENLIST_TREESIZE_32_INC";
+      images {
+         image: "00_sweep_list_bg.png" COMP;
+      }
+
+      parts {
+      #if 0
+         part { name: "base";
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_HEIGHT_113_INC;
+               image {
+                  normal: "00_sweep_list_bg.png";
+                  border: 0 0 3 0;
+               }
+            }
+         }
+         #endif
+         MP_GENLIST_SWEEP_PART_BASE(GENLIST_HEIGHT_113_INC)
+         part { name: "bottom_line";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: GENLIST_PART_LIST_LINE_COLOR_INC;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -1;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.left";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1.to: "base";
+               rel2 {
+                  relative: 0 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "base.padding.right";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1 {
+                  relative: 1 0;
+                  to: "base";
+               }
+               rel2.to: "base";
+            }
+         }
+         part { name: "base.padding.bottom";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 7;
+               fixed: 0 1;
+               visible: 0;
+               align: 0.5 1;
+               rel1 {
+                  relative: 0 1;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 1 1;
+                  to: "base";
+               }
+            }
+         }
+         part { name: "elm.slide.text.1";
+            type: TEXT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_42_INC;
+               fixed: 0 1;
+               align: 0.5 0;
+               rel1 {
+                  relative: 1 0;
+                  to_x: "base.padding.left";
+                  to_y: "base";
+               }
+               rel2 {
+                  relative: 0 0;
+                  to_x: "base.padding.right";
+                  to_y: "base";
+               }
+               color: GENLIST_PART_FONT_SWEEP_STYLE_COLOR_INC;
+               text {
+                  font: "SLP:style=Roman";
+                  size: GENLIST_FONT_28_INC;
+                  min: 0 1;
+                  align: 0.5 0.5;
+               }
+            }
+         }
+         part { name: "base.padding.center";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_13_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               align: 0.5 0.5;
+               rel1 {
+                  relative: 0.5 1;
+                  to_x: "base";
+                  to_y: "elm.slide.text.1";
+               }
+               rel2 {
+                  relative: 0.5 0;
+                  to_x: "base";
+                  to_y: "base.padding.bottom";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.2";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               align: 1 0.5;
+               rel1.to: "base.padding.center";
+               rel2 {
+                  relative: 0 1;
+                  to: "base.padding.center";
+               }
+            }
+         }
+         part { name: "elm.padding.swallow.2.left";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_13_INC 0;
+               fixed: 1 0;
+               align: 1 0.5;
+               visible: 0;
+               rel1.to: "elm.slide.swallow.2";
+               rel2 {
+                  relative: 0 1;
+                  to: "elm.slide.swallow.2";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.1";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               align: 1 0.5;
+               rel1.to: "elm.padding.swallow.2.left";
+               rel2 {
+                  relative: 0 1;
+                  to: "elm.padding.swallow.2.left";
+               }
+            }
+         }
+         part { name: "elm.slide.swallow.3";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 {
+                  relative: 1 0;
+                  to: "base.padding.center";
+               }
+               rel2.to: "base.padding.center";
+            }
+         }
+         part { name: "elm.padding.swallow.3.right";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_13_INC 0;
+               fixed: 1 0;
+               align: 0 0.5;
+               visible: 0;
+               rel1 {
+                  relative: 1 0;
+                  to: "elm.slide.swallow.3";
+               }
+               rel2.to: "elm.slide.swallow.2";
+            }
+         }
+         part { name: "elm.slide.swallow.4";
+            type: SWALLOW;
+            clip_to: "disclip";
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               max: GENLIST_SIZE_SLIDE_165_INC GENLIST_SIZE_SLIDE_60_INC;
+               fixed: 1 1;
+               align: 0 0.5;
+               rel1 {
+                  relative: 1 0;
+                  to: "elm.padding.swallow.3.right";
+               }
+               rel2.to: "elm.padding.swallow.3.right";
+            }
+         }
+         // Transparent part between base parts and slidable parts
+         part { name: "event_block_layer";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 1;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               color: 0 0 0 0;
+            }
+            description { state: "repeat_events" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         // Swallow part for original genlist item style
+         part { name: "elm.swallow.origin";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+            }
+            description { state: "slide" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1 0;
+               rel2.relative: 2 1;
+            }
+         }
+         part { name: "disclip";
+            type: RECT;
+            description { state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_DISCLIP_COLOR_INC;
+            }
+         }
+      }
+      programs {
+         program {
+            name:    "slide_right";
+            signal:  "elm,state,slide,active";
+            source:  "elm";
+            action:  STATE_SET "slide" 0.0;
+            target:  "elm.swallow.origin";
+            transition: ACCELERATE 0.5;
+            after:   "unblock_event";
+         }
+         program {
+            name:    "unblock_event";
+            action:  STATE_SET "repeat_events" 0.0;
+            target:  "event_block_layer";
+         }
+         program {
+            name:    "slide_left";
+            signal:  "elm,state,slide,passive";
+            source:  "elm";
+            action:  STATE_SET "default" 0.0;
+            target:  "event_block_layer";
+            after:   "slide_left2";
+         }
+         program {
+            name:    "slide_left2";
+            action:  STATE_SET "default" 0.0;
+            target:  "elm.swallow.origin";
+            transition: DECELERATE 0.5;
+            after:   "slide_left_finished";
+         }
+         program {
+            name:    "slide_left_finished";
+            action:  SIGNAL_EMIT "elm,state,slide,passive,finished" "elm";
+         }
+      }
+   }
+
index 8657b1f..1de1109 100755 (executable)
@@ -1,19 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
 
 #include "mp_genlist_macro.edc"
 #include "mp_genlist_define.edc"
@@ -27,7 +11,7 @@
                rel2 {relative: 1.0 1.0; to, test;}\
                }\
          }
-         
+
 #define TEST_RECT2(test)\
        part { name: "test_rect2";\
             type: RECT; \
@@ -46,7 +30,7 @@
                rel1 {relative: 0.0 0.0; to, test;}\
                rel2 {relative: 1.0 1.0; to, test;}\
                }\
-         }         
+         }
 
 #define GENLIST_PART_LIST_LINE_COLOR_INC MP_BOTTOM_LINE_COLOR
 
 
 #define GENLIST_FONT_35_INC 35
 
-#define GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC 166 166 166 255
+#define GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC 124 124 124 255
 #define GENLIST_PART_TEXT_PRESS_COLOR_INC 249 249 249 255
 
 #define MP_MAIN_TEXT_SIZE      36
-#define MP_MAIN_TEXT_COLOR     255 255 255 255
+#define MP_MAIN_TEXT_COLOR     0 0 0 255
+#define MP_MAIN_TEXT_STYLE_COLOR       "#000000FF"
 
 #define MP_SUB_TEXT_SIZE       32
-#define MP_SUB_TEXT_COLOR      166 166 166 255
+#define MP_SUB_TEXT_COLOR      124 124 124 255
+#define MP_SUB_TEXT_STYLE_COLOR                "#7C7C7CFF"
 
 #define MP_MAIN_TEXT_01_SIZE   36
-#define MP_MAIN_TEXT_01_COLOR  166 166 166 255
+#define MP_MAIN_TEXT_01_COLOR  0 0 0 255
+#define MP_MAIN_TEXT_01_STYLE_COLOR    "#000000FF"
+
+#define MP_SUB_TEXT_01_SIZE    32
+#define MP_SUB_TEXT_01_COLOR   114 114 114 255
+#define MP_SUB_TEXT_01_STYLE_COLOR             "#727272FF"
 
 #define MP_INDEX_LIST_TEXT_FONT        FONT_STYLE_BOLD
 #define MP_INDEX_LIST_TEXT_SIZE        32
 #define MP_INDEX_LIST_TEXT_COLOR       218 216 212 255
 
-#define MP_LIST_THUMBNAIL_INNER_LINE \
-               part { name: "innerline.top";\
-                       type: RECT;\
-                       scale: 1;\
-                       mouse_events: 0;\
-                       description { state: "default" 0.0;\
-                               visible: 1;\
-                               fixed: 1 1;\
-                               align: 0 0;\
-                               min: 1 1;\
-                               rel1 {relative: 0.0 0.0; to, "elm.icon";}\
-                               rel2 {relative: 1.0 0.0; to, "elm.icon";}\
-                               color: 0 0 0 255;\
-                       }\
-                       GENLIST_DESCRIPTION_FLIP_ENABLED \
-               }\
-               part { name: "innerline.bottom";\
-                       type: RECT;\
-                       scale: 1;\
-                       mouse_events: 0;\
-                       description { state: "default" 0.0;\
-                               visible: 1;\
-                               fixed: 1 1;\
-                               align: 0 0;\
-                               min: 1 1;\
-                               rel1 {relative: 0.0 1.0; to, "elm.icon";}\
-                               rel2 {relative: 1.0 1.0; to, "elm.icon";}\
-                               color: 0 0 0 255;\
-                       }\
-                       GENLIST_DESCRIPTION_FLIP_ENABLED \
-               }\
-               part { name: "innerline.left";\
-                       type: RECT;\
-                       scale: 1;\
-                       mouse_events: 0;\
-                       description { state: "default" 0.0;\
-                               visible: 1;\
-                               fixed: 1 1;\
-                               align: 0 0;\
-                               min: 1 1;\
-                               rel1 {relative: 0.0 0.0; to, "elm.icon";}\
-                               rel2 {relative: 0.0 1.0; to, "elm.icon";}\
-                               color: 0 0 0 255;\
-                       }\
-                       GENLIST_DESCRIPTION_FLIP_ENABLED \
-               }\
-               part { name: "innerline.right";\
-                       type: RECT;\
-                       scale: 1;\
-                       mouse_events: 0;\
-                       description { state: "default" 0.0;\
-                               visible: 1;\
-                               fixed: 1 1;\
-                               align: 0 0;\
-                               min: 1 1;\
-                               rel1 {relative: 1.0 0.0; to, "elm.icon";}\
-                               rel2 {relative: 1.0 1.0; to, "elm.icon";}\
-                               color: 0 0 0 255;\
-                       }\
-                       GENLIST_DESCRIPTION_FLIP_ENABLED \
-               }\
-
 #define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#31A1FF"
+#define GENLIST_PART_BASE_COLOR_INC 000000
 
 #define TEXTBLOCK_TAG \
       tag:  "br" "\n";\
 
 styles {
    style { name: "genlist_textblock_style";
-      base: "font=SLP:style=Roman font_size="MP_MAIN_TEXT_SIZE" color=#FFFFFFFF text_class=list_item ellipsis=1.0";
+      base: "font=SLP:style=Roman font_size="MP_MAIN_TEXT_SIZE" color=#"GENLIST_PART_BASE_COLOR_INC" text_class=list_item ellipsis=1.0";
       TEXTBLOCK_TAG
    }
 }
 
+#ifdef MP_3D_FEATURE
 
-group { name: "elm/genlist/item/music/1icon/default";
-      alias: "elm/genlist/item_odd/music/1icon/default";
-      alias: "elm/genlist/item_compress/music/1icon/default";
-      alias: "elm/genlist/item_compress_odd/music/1icon/default";
+  group { name: "elm/genlist/item/music/1icon/with_no_line/default";
+      alias: "elm/genlist/item_odd/music/1icon/with_no_line/default";
+      alias: "elm/genlist/item_compress/music/1icon/with_no_line/default";
+      alias: "elm/genlist/item_compress_odd/music/1icon/with_no_line/default";
       data.item: "stacking" "above";
       data.item: "selectraise" "on";
       data.item: "contents" "elm.icon";
@@ -204,6 +135,30 @@ group { name: "elm/genlist/item/music/1icon/default";
       }
    }
 
+group { name: "elm/genlist/item/music/1icon/default";
+      alias: "elm/genlist/item_odd/music/1icon/default";
+      alias: "elm/genlist/item_compress/music/1icon/default";
+      alias: "elm/genlist/item_compress_odd/music/1icon/default";
+      inherit: "elm/genlist/item/music/1icon/with_no_line/default";
+      parts {
+         part { name: "bottom_line";
+            insert_after: "elm.padding.right";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: GENLIST_PART_LIST_LINE_COLOR_INC;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -1;
+               }
+            }
+         }
+      }
+   }
+
 group { name: "elm/genlist/item/music_player/1icon.3text/default";
       alias: "elm/genlist/item_odd/music_player/1icon.3text/default";
       alias: "elm/genlist/item_compress/music_player/1icon.3text/default";
@@ -213,9 +168,7 @@ group { name: "elm/genlist/item/music_player/1icon.3text/default";
       data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
       data.item: "contents" "elm.icon";
       data.item: "flips" "elm.flip.content";
-      images {
-         image: "00_list_bar_press_1x80.png" COMP;
-      }
+
       parts {
          GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
          GENLIST_PART_BG_IMAGE
@@ -248,7 +201,7 @@ group { name: "elm/genlist/item/music_player/1icon.3text/default";
             GENLIST_DESCRIPTION_FLIP_ENABLED
          }
          MP_LIST_THUMBNAIL_INNER_LINE
-         
+
          part { name: "elm.padding.icon.right";
             clip_to: "disclip";
             type: RECT;
@@ -299,7 +252,238 @@ group { name: "elm/genlist/item/music_player/1icon.3text/default";
             GENLIST_DESCRIPTION_INVISIBLE_SELECTED
             GENLIST_DESCRIPTION_FLIP_ENABLED
          }
-         
+
+         part { name: "elm.padding.text3.left";
+            clip_to: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_32_INC 0;
+               fixed: 1 0;
+               rel1.to_x: "elm.text.3";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text.3";
+               }
+               align: 1.0 0.5;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               align: 0.0 0.0;
+               text {
+                  style: "genlist_textblock_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               //max: 720 GENLIST_SIZE_48_INC;
+               min: 0 GENLIST_SIZE_48_INC;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  //to_x: "elm.padding.icon.right";
+                  //to_y: "elm.text.1";
+                  to: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  //to_x: "elm.text.3";
+                  to_x: "elm.padding.text3.left";
+                  to_y: "elm.padding.bottom";
+               }
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            target: "elm.text.3";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_3TEXT_1ICON
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/folder/default";
+      alias: "elm/genlist/item_odd/music_player/folder/default";
+      alias: "elm/genlist/item_compress/music_player/folder/default";
+      alias: "elm/genlist/item_compress_odd/music_player/folder/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+      data.item: "contents" "elm.icon elm.icon.storage";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.5;
+            }
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         MP_LIST_THUMBNAIL_INNER_LINE
+
+                part { name: "elm.icon.storage";
+                       clip_to: "disclip";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to: "elm.icon"; }
+                               rel2 { relative: 1 0; to: "elm.icon"; }
+                               min: 46 46;
+                               align: 1 0;
+                               fixed: 1 1;
+                       }
+                }
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.3";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_154_INC GENLIST_SIZE_48_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 0.5;
+                  to: "elm.padding.right";
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  to: "elm.padding.right";
+               }
+               align: 1.0 0.5;
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
          part { name: "elm.padding.text3.left";
             clip_to: "disclip";
             type: RECT;
@@ -431,9 +615,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
       data.item: "texts" "elm.text.1 elm.text.2";
       data.item: "contents" "elm.icon";
       data.item: "flips" "elm.flip.content";
-      images {
-         image: "00_list_bar_press_1x80.png" COMP;
-      }
+
       parts {
          GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
          GENLIST_PART_BG_IMAGE
@@ -466,7 +648,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
             GENLIST_DESCRIPTION_FLIP_ENABLED
          }
          MP_LIST_THUMBNAIL_INNER_LINE
-         
+
          part { name: "elm.padding.icon.right";
             clip_to: "disclip";
             type: RECT;
@@ -542,7 +724,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
             scale: 1;
             description { state: "default" 0.0;
                min: GENLIST_SIZE_112_INC 0;
-                          fixed: 1 1;
+               fixed: 1 1;
                rel1 {
                   relative: 0.0 1.0;
                   to_x: "elm.padding.right";
@@ -569,7 +751,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
             GENLIST_DESCRIPTION_INVISIBLE_SELECTED
             GENLIST_DESCRIPTION_FLIP_ENABLED
          }
-         
+
          GENLIST_PART_FLIP
          GENLIST_PART_DISCLIP
       }
@@ -617,9 +799,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
       data.item: "selectraise" "on";
       data.item: "texts" "elm.text.1 elm.text.3";
       data.item: "flips" "elm.flip.content";
-      images {
-         image: "00_list_bar_press_1x80.png" COMP;
-      }
+
       parts {
          GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC )
          GENLIST_PART_BG_IMAGE
@@ -628,7 +808,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
          GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
          GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
          GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
-         
+
          part { name: "elm.text.3";
             clip_to: "disclip";
             type: TEXT;
@@ -663,7 +843,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
             GENLIST_DESCRIPTION_INVISIBLE_SELECTED
             GENLIST_DESCRIPTION_FLIP_ENABLED
          }
-         
+
          part { name: "elm.padding.text3.left";
             clip_to: "disclip";
             type: RECT;
@@ -792,9 +972,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
       data.item: "selectraise" "on";
       data.item: "texts" "elm.text.1 elm.text.2";
       data.item: "flips" "elm.flip.content";
-      images {
-         image: "00_list_bar_press_1x80.png" COMP;
-      }
+
       parts {
          GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
          GENLIST_PART_BG_IMAGE
@@ -803,7 +981,7 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
          GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
          GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
          GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
-         
+
          part { name: "elm.text.1";
             clip_to: "disclip";
             type: TEXTBLOCK;
@@ -1278,7 +1456,6 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
             signal:  "elm,state,flip,enabled";
             source:  "elm";
             action:  STATE_SET "disabled" 0.0;
-                       target:  "elm.edit.icon.1";
             target:  "elm.edit.icon.2";
             after:   "enable_flip_mode_next";
         }
@@ -1295,51 +1472,4165 @@ group { name: "elm/genlist/item/music_player/1icon.2text/default";
             action:  STATE_SET "default" 0.0;
             transition: DECELERATE 0.5;
             target:  "elm.swallow.decorate.content";
-                       target:  "elm.edit.icon.1";
             target:  "elm.edit.icon.2";
         }
       }
    }
 
-group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
-      alias: "elm/genlist/item_compress_odd/multiline/music_player/info/default";
-      alias: "elm/genlist/item_compress/multiline.music_player/info/default";
-      alias: "elm/genlist/item_compress_odd/multiline.music_player/info/default";
+   group { name: "elm/genlist/item/music_player/mp_info/default";
+
+      alias: "elm/genlist/item_odd/music_player/mp_info/default";
+      alias: "elm/genlist/item_compress/music_player/mp_info/default";
+      alias: "elm/genlist/item_compress_odd/music_player/mp_info/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.title";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
+         part { name: "elm.text.title";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_40_INC;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: MP_MAIN_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/track/default";
+
+      alias: "elm/genlist/item_odd/music_player/track/default";
+      alias: "elm/genlist/item_compress/music_player/track/default";
+      alias: "elm/genlist/item_compress_odd/music_player/track/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.title";
+      data.item: "contents" "elm.swallow.icon elm.swallow.end elm.swallow.btn.bg elm.swallow.btn";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
+         part { name: "elm.text.title";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_40_INC;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: (-GENLIST_SIZE_60_INC) 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: MP_MAIN_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+        part { name: "elm.swallow.btn.bg";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                 fixed: 0 0;
+                 align: 1 0.5;
+                 min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+                 max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+              rel1 {
+                  relative: 1.0 0.0;
+                  to: "elm.text.title";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: (-GENLIST_PADDING_10_INC) 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.text.title";
+               }
+            }
+         }
+       part { name: "elm.swallow.btn";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                 fixed: 0 0;
+                 align: 0 0;
+              rel1 {
+                  relative: 0.0 0.0;
+                  to: "elm.swallow.btn.bg";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "elm.swallow.btn.bg";
+               }
+            }
+         }
+          part { name: "elm.swallow.end";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1.to_x: "elm.padding.right";
+               rel2 {
+                  relative: 0.0  1.0;
+                  to_x: "elm.padding.right";
+               }
+            }
+         }
+
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/folder_track/default";
+      alias: "elm/genlist/item_odd/music_player/folder_track/default";
+      alias: "elm/genlist/item_compress/music_player/folder_track/default";
+      alias: "elm/genlist/item_compress_odd/music_player/folder_track/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2";
+      data.item: "contents" "elm.icon elm.icon.storage";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.5;
+            }
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         MP_LIST_THUMBNAIL_INNER_LINE
+
+         part { name: "elm.icon.storage";
+                       clip_to: "disclip";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to: "elm.icon"; }
+                               rel2 { relative: 1 0; to: "elm.icon"; }
+                               min: 46 46;
+                               align: 1 0;
+                               fixed: 1 1;
+                       }
+                }
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.text2.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.0;
+               text {
+                  style: "genlist_textblock_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.padding.text2.left";
+            clip_to: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               rel1.to_x: "elm.text.2";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text.2";
+               }
+               align: 1.0 0.5;
+               visible: 0;
+            }
+         }
+
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC 0;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 1.0 0.0;
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_2TEXT_1ICON
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/related_video/default";
+
+      alias: "elm/genlist/item_odd/music_player/related_video/default";
+      alias: "elm/genlist/item_compress/music_player/related_video/default";
+      alias: "elm/genlist/item_compress_odd/music_player/related_video/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "contents" "elm.swallow";
+
+      parts {
+         GENLIST_PART_BASE( 283 )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+
+         part { name: "elm.swallow";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                }
+               rel2 {
+                  relative: 1.0 1.0;
+                }
+            }
+         }
+
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/tag_btn/default";
+
+      alias: "elm/genlist/item_odd/music_player/tag_btn/default";
+      alias: "elm/genlist/item_compress/music_player/tag_btn/default";
+      alias: "elm/genlist/item_compress_odd/music_player/tag_btn/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.tag";
+      //data.item: "texts" "elm.icon.tag";
+
+      parts {
+         GENLIST_PART_BASE( 112 )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_32_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_BOTTOM_LINE
+          part { name: "top_line";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: MP_BOTTOM_LINE_COLOR;
+               rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+               }
+            }
+         }
+
+         part { name: "elm.text.tag";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_42_INC;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 36;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+        GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/info_header/default";
+
+      alias: "elm/genlist/item_odd/music_player/info_header/default";
+      alias: "elm/genlist/item_compress/music_player/info_header/default";
+      alias: "elm/genlist/item_compress_odd/music_player/info_header/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1";
+      //data.item: "texts" "elm.icon.tag";
+
+      parts {
+         GENLIST_PART_BASE( 70 )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_PADDING_TOP( 10 )
+         GENLIST_PART_PADDING_BOTTOM( 0 )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_42_INC;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 36;
+                  min: 0 1;
+                  align: 0.0 0.5;
+                  text: "Media info";
+               }
+            }
+         }
+        GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
+      alias: "elm/genlist/item_compress_odd/multiline/music_player/info/default";
+      alias: "elm/genlist/item_compress/multiline.music_player/info/default";
+      alias: "elm/genlist/item_compress_odd/multiline.music_player/info/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2";
+
+      styles {
+        style { name: "name_style";
+          base: "font=SLP:style=Roman font_size=36 color="MP_MAIN_TEXT_01_STYLE_COLOR" wrap=char text_class=list_item";
+          tag:  "br" "\n";
+          tag:  "ps" "ps";
+          tag:  "tab" "\t";
+          tag:  "b" "+ font=SLP:style=Bold";
+        }
+      }
+
+      parts {
+         part { name: "base";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: MP_GENLIST_BG_COLOR;
+            }
+         }
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_PADDING_TOP( 0 )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_42_INC;
+               fixed: 0 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               align: 0.0 0.0;
+               color: MP_SUB_TEXT_01_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 32;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_SELECTED_COLOR_INC;
+            }
+         }
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               text {
+                  style: "name_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+#define RICH_INFO_STARS_BG_W 208
+#define RICH_INFO_STARS_BG_H 48
+#define RICH_INFO_STARS_W_H 32
+#define RICH_INFO_STARS_GAP 4
+#define RICH_INFO_STARS_SX(pos)        (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos)
+#define RICH_INFO_STARS_EX(pos)        (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos+RICH_INFO_STARS_W_H)
+
+group { name: "elm/genlist/item/music_player/discography/default";
+
+      alias: "elm/genlist/item_odd/music_player/discography/default";
+      alias: "elm/genlist/item_compress/music_player/discography/default";
+      alias: "elm/genlist/item_compress_odd/music_player/discography/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.title elm.text.time";
+      data.item: "contents" "elm.icon elm.icon.star1 elm.icon.star2 elm.icon.star3 elm.icon.star4 elm.icon.star5 elm.icon.btn";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_10_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               visible: 0;
+            }
+         }
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+               }
+            }
+         }
+
+          part { name: "elm.text.title";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 0 0.0;
+               min: 0 60;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.icon.btn";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: GENLIST_FONT_35_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+
+         part { name: "elm.text.time";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 0 0;
+               min: GENLIST_SIZE_96_INC 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to: "elm.text.title";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text.title";
+                  to_y: "elm.padding.bottom";
+               }
+               color, 151 150 150 255;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+
+         part{
+               name, "star_bg";
+               type, RECT;
+               scale: 1;
+               mouse_events: 0;
+               description {
+                       state, "default" 0.0;
+                       fixed: 1 1;
+                       align: 0 0;
+                       min: RICH_INFO_STARS_BG_W 0;
+                       rel1 { relative: 1.0 8/48; to, "elm.text.time";}
+                       rel2 { relative: 1.0 40/48;to , "elm.text.time";}
+                       color: 0 0 0 0;
+               }
+       }
+
+        part{name,"elm.icon.star1";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(0)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(0)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"elm.icon.star2";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(1)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(1)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"elm.icon.star3";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(2)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(2)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"elm.icon.star4";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(3)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(3)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"elm.icon.star5";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(4)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(4)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+         part { name: "elm.icon.btn";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.5 0.5;
+               // TODO: enable btn after buy function implemented...
+               // min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+               //max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+               min: 1 GENLIST_SIZE_80_INC;
+               max: 1 GENLIST_SIZE_80_INC;
+              rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+            }
+         }
+
+       GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+            target: "elm.text.time";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.time";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/3text/default";
+
+      alias: "elm/genlist/item_odd/music_player/3text/default";
+      alias: "elm/genlist/item_compress/music_player/3text/default";
+      alias: "elm/genlist/item_compress_odd/music_player/3text/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+
+      parts {
+         GENLIST_PART_BASE( 90 )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 40;
+               fixed: 0 1;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               color: 255 255 255 255;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 32;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 30;
+               fixed: 0 1;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0  1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0 1;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.text.1";
+               }
+               color: MP_SUB_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_MEDIUM;
+                  size: 22;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+         part { name: "elm.text.3";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 40;
+               fixed: 1 1;
+               align: 1.0 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               color: 229 144 30 255;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 18;
+                  min: 1 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: 225 225 225 255;
+            }
+         }
+       GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+            target: "elm.text.3";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.3";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+   #define GENLIST_GROUP_PART_BASE_EVENT_INC \
+         part { name: "base_event";\
+            type: RECT;\
+            repeat_events: 0;\
+            description { state: "default" 0.0;\
+               color: 0 0 0 0;\
+            }\
+         }
+   #define GENLIST_GROUP_PART_TEXT_COLOR_INC 255 255 255 255
+
+   group { name: "elm/genlist/item/music_player/grouptitle/default";
+      alias: "elm/genlist/item_odd/music_player/grouptitle/default";
+      alias: "elm/genlist/item_compress/music_player/grouptitle/default";
+      alias: "elm/genlist/item_compress_odd/music_player/grouptitle/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text";
+      data.item: "treesize" "20";
+
+      parts {
+         GENLIST_GROUP_PART_BASE_EVENT_INC
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+         part { name: "rect";
+            type: RECT;
+            repeat_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 30;
+               color: 121 121 121 255;
+            }
+            description { state: "alpha_off" 0.0;
+               min: 0 30;
+               color: 121 121 121 0;
+            }
+         }
+
+         part { name: "elm.text";
+            type: TEXT;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+               }
+               color: GENLIST_GROUP_PART_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: 32;
+                  min: 1 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+      }
+       program {
+          name:    "enable_alpha";
+          signal:  "elm,state,alpha,enable";
+          source:  "elm";
+          action:  STATE_SET "default" 0.0;
+          target:  "rect";
+       }
+       program {
+          name:    "disable_alpha";
+          signal:  "elm,state,alpha,disable";
+          source:  "elm";
+          action:  STATE_SET "alpha_off" 0.0;
+          target:  "rect";
+       }
+      program {
+          name: "selected";
+         source: "rect";
+         signal: "mouse,clicked,1";
+         action:  SIGNAL_EMIT "elm,title_action,item,click" "elm";
+      }
+   }
+
+   /* add by rocket.he for dialogue genlist style */
+   group { name : "elm/genlist/item/music_player/dialogue_title/default";
+      alias: "elm/genlist/item_odd/music_player/dialogue_title/default";
+      alias: "elm/genlist/item_compress/music_player/dialogue_title/default";
+      alias: "elm/genlist/item_compress_odd/music_player/dialogue_title/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+         data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+         data.item: "contents" "elm.icon";
+         data.item: "treesize" "34";
+
+      parts {
+         part { name: "base";
+            type: RECT;
+            repeat_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 108;
+               color: 80 80 80 255;
+            }
+         }
+
+         GENLIST_PART_PADDING_TOP( 9 )
+         GENLIST_PART_PADDING_BOTTOM( 9 )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_BOTTOM_LINE
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               visible: 0;
+            }
+         }
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 76 76;
+               max: 76 76;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+               }
+            }
+         }
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 42;
+               fixed: 0 1;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_SUB_TEXT_COLOR;
+               text {
+                 font: FONT_STYLE_MEDIUM;
+                 size: MP_SUB_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_48_INC;
+               fixed: 0 1;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0  1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0 1;
+                  offset: 0 0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.text.1";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN ;
+                  size: MP_MAIN_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+         part { name: "elm.text.3";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_56_INC GENLIST_SIZE_48_INC;
+               fixed: 0 1;
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               color: MP_MAIN_TEXT_01_COLOR;
+               text {
+                  font: FONT_STYLE_MEDIUM;
+                  size: MP_MAIN_TEXT_01_SIZE;
+                  min: 1 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: 225 225 225 255;
+            }
+         }
+
+       GENLIST_PART_DISCLIP
+      }
+   }
+
+   /* add by rocket.he for album title */
+   group { name : "elm/genlist/item/music_player/album_title/default";
+      alias: "elm/genlist/item_odd/music_player/album_title/default";
+      alias: "elm/genlist/item_compress/music_player/album_title/default";
+      alias: "elm/genlist/item_compress_odd/music_player/album_title/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+         data.item: "texts" "elm.text.1 elm.text.3";
+         data.item: "contents" "elm.icon elm.text.swallow";
+         data.item: "treesize" "34";
+
+      parts {
+         part { name: "base";
+            type: RECT;
+            repeat_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 108;
+               color: 80 80 80 255;
+            }
+         }
+
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_BOTTOM_LINE
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_10_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               visible: 0;
+            }
+         }
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 76 76;
+               max: 76 76;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+               }
+            }
+         }
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 26;
+               fixed: 0 1;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_SUB_TEXT_COLOR;
+               text {
+                 font: FONT_STYLE_MEDIUM;
+                 size: MP_SUB_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+         part { name: "elm.text.swallow";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_42_INC;
+               fixed: 0 1;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0  1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0 1;
+                  offset: 0 0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.text.1";
+               }
+            }
+         }
+         part { name: "elm.text.3";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_56_INC GENLIST_SIZE_48_INC;
+               fixed: 0 1;
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: -40 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               color: MP_MAIN_TEXT_01_COLOR;
+               text {
+                  font: FONT_STYLE_MEDIUM;
+                  size: MP_MAIN_TEXT_01_SIZE;
+                  min: 1 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: 225 225 225 255;
+            }
+         }
+
+       GENLIST_PART_DISCLIP
+      }
+   }
+
+   group { name: "elm/genlist/item/music_player/1text/default";
+
+      alias: "elm/genlist/item_odd/music_player/1text/default";
+      alias: "elm/genlist/item_compress/music_player/1text/default";
+      alias: "elm/genlist/item_compress_odd/music_player/1text/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text";
+
+      parts {
+         part { name: "base";
+            type: RECT;
+            repeat_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_HEIGHT_89_INC;
+               color: 0 0 0 0;
+            }
+         }
+
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
+         part { name: "elm.text";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 0 1;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0  1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               color: 252 252 252 255;
+               text {
+                  font: FONT_STYLE_MEDIUM;
+                  //size: MP_MAIN_TEXT_SIZE;
+                  size: 40;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: 169 220 255 255;
+            }
+         }
+
+                GENLIST_PART_DISCLIP
+      }
+
+        programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "elm.text";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.text";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+#else
+  group { name: "elm/genlist/item/music/1icon/with_no_line/default";
+      alias: "elm/genlist/item_odd/music/1icon/with_no_line/default";
+      alias: "elm/genlist/item_compress/music/1icon/with_no_line/default";
+      alias: "elm/genlist/item_compress_odd/music/1icon/with_no_line/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "contents" "elm.icon";
+      parts {
+         part { name: "base";
+            type: RECT;
+            repeat_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               color: MP_GENLIST_BG_COLOR;
+            }
+         }
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+               }
+            }
+         }
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music/1icon/default";
+      alias: "elm/genlist/item_odd/music/1icon/default";
+      alias: "elm/genlist/item_compress/music/1icon/default";
+      alias: "elm/genlist/item_compress_odd/music/1icon/default";
+      inherit: "elm/genlist/item/music/1icon/with_no_line/default";
+      parts {
+         part { name: "bottom_line";
+            insert_after: "elm.padding.right";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: GENLIST_PART_LIST_LINE_COLOR_INC;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -1;
+               }
+            }
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/1icon.3text/default";
+      alias: "elm/genlist/item_odd/music_player/1icon.3text/default";
+      alias: "elm/genlist/item_compress/music_player/1icon.3text/default";
+      alias: "elm/genlist/item_compress_odd/music_player/1icon.3text/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+      data.item: "contents" "elm.icon";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.5;
+            }
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         MP_LIST_THUMBNAIL_INNER_LINE
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.3";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_154_INC GENLIST_SIZE_48_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.text.2";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.text.2";
+               }
+               align: 1.0 0.0;
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.padding.text3.left";
+            clip_to: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_32_INC 0;
+               fixed: 1 0;
+               rel1.to_x: "elm.text.3";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text.3";
+               }
+               align: 1.0 0.5;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               align: 0.0 0.0;
+               text {
+                  style: "genlist_textblock_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               max: 720 GENLIST_SIZE_48_INC;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.padding.bottom";
+               }
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            target: "elm.text.3";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_3TEXT_1ICON
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/folder/default";
+      alias: "elm/genlist/item_odd/music_player/folder/default";
+      alias: "elm/genlist/item_compress/music_player/folder/default";
+      alias: "elm/genlist/item_compress_odd/music_player/folder/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+      data.item: "contents" "elm.icon elm.icon.storage";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.5;
+            }
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         MP_LIST_THUMBNAIL_INNER_LINE
+
+                part { name: "elm.icon.storage";
+                       clip_to: "disclip";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to: "elm.icon"; }
+                               rel2 { relative: 1 0; to: "elm.icon"; }
+                               min: 46 46;
+                               align: 1 0;
+                               fixed: 1 1;
+                       }
+                }
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.3";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_154_INC GENLIST_SIZE_48_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 0.5;
+                  to: "elm.padding.right";
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  to: "elm.padding.right";
+               }
+               align: 1.0 0.5;
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.padding.text3.left";
+            clip_to: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_32_INC 0;
+               fixed: 1 0;
+               rel1.to_x: "elm.text.3";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text.3";
+               }
+               align: 1.0 0.5;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               align: 0.0 0.0;
+               text {
+                  style: "genlist_textblock_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               max: 720 GENLIST_SIZE_48_INC;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.padding.bottom";
+               }
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            target: "elm.text.3";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_3TEXT_1ICON
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/1icon.2text/default";
+      alias: "elm/genlist/item_odd/music_player/1icon.2text/default";
+      alias: "elm/genlist/item_compress/music_player/1icon.2text/default";
+      alias: "elm/genlist/item_compress_odd/music_player/1icon.2text/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2";
+      data.item: "contents" "elm.icon";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.5;
+            }
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         MP_LIST_THUMBNAIL_INNER_LINE
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.text2.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.0;
+               text {
+                  style: "genlist_textblock_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.padding.text2.left";
+            clip_to: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               rel1.to_x: "elm.text.2";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text.2";
+               }
+               align: 1.0 0.5;
+               visible: 0;
+            }
+         }
+
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC 0;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 1.0 0.0;
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_2TEXT_1ICON
+      }
+   }
+
+ group { name: "elm/genlist/item/music_player/2text/default";
+      alias: "elm/genlist/item_odd/music_player/2text/default";
+      alias: "elm/genlist/item_compress/music_player/2text/default";
+      alias: "elm/genlist/item_compress_odd/music_player/2text/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.3";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+
+         part { name: "elm.text.3";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_154_INC GENLIST_SIZE_48_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.text.1";
+               }
+               align: 1.0 0.0;
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.padding.text3.left";
+            clip_to: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_32_INC 0;
+               fixed: 1 0;
+               rel1.to_x: "elm.text.3";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text.3";
+               }
+               align: 1.0 0.5;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.text3.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.0;
+               text {
+                  style: "genlist_textblock_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.bottom";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text.3";
+                  to_y: "elm.padding.bottom";
+               }
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_3TEXT
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            target: "elm.text.3";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_3TEXT
+      }
+   }
+  group { name: "elm/genlist/item/music_player/2text.2/default";
+      alias: "elm/genlist/item_odd/music_player/2text.2/default";
+      alias: "elm/genlist/item_compress/music_player/2text.2/default";
+      alias: "elm/genlist/item_compress_odd/music_player/2text.2/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               align: 0.0 0.0;
+               text {
+                  style: "genlist_textblock_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_2TEXT
+      }
+   }
+
+  group { name: "elm/genlist/item/music_edit_default/default";
+      alias: "elm/genlist/item_odd/music_edit_default/default";
+      alias: "elm/genlist/item_compress/music_edit_default/default";
+      alias: "elm/genlist/item_compress_odd/music_edit_default/default";
+      data.item: "stacking" "above";
+      data.item: "decorate_contents" "elm.edit.icon.1 elm.edit.icon.2";
+
+      images {
+         image: "01_list_reorder_bg_above.png" COMP;
+         image: "01_list_reorder_bg_below.png" COMP;
+      }
+      parts {
+         part { name: "base";
+            type: RECT;
+            repeat_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               color: MP_GENLIST_BG_COLOR;
+            }
+         }
+         GENLIST_PART_PADDING_TOP( 0 )
+         GENLIST_PART_PADDING_BOTTOM( 0 )
+         GENLIST_PART_PADDING_RIGHT( 0 )
+
+         part { name: "elm.padding.reorder";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel2.relative: 0.0 1.0;
+               align: 1.0 0.0;
+            }
+            description { state: "reorder" 0.0;
+               inherit: "default" 0.0;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "elm.decorate_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.reorder";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_y: "elm.padding.bottom";
+               }
+             color: MP_GENLIST_BG_COLOR;
+           }
+           description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: GENLIST_PART_LIST_PRESS_COLOR_INC;
+           }
+        }
+
+        part { name: "elm.padding.left";
+           type: RECT;
+           scale: 1;
+           description { state: "default" 0.0;
+              min: GENLIST_SIZE_16_INC 0;
+              fixed: 1 0;
+              visible: 0;
+              rel1 {
+                 relative: 1.0 0.0;
+                 to_x: "elm.padding.reorder";
+              }
+              rel2.to_x: "elm.padding.reorder";
+              rel2.relative: 0.0  1.0;
+              align: 0.0 0.0;
+           }
+        }
+
+        part { name: "elm.edit.icon.1";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 1.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.bottom";
+               }
+            }
+          description { state: "enabled" 0.0;
+             inherit: "default" 0.0;
+               align: 0.0 0.5;
+            }
+         }
+
+         part { name: "elm.padding.icon1.right";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.edit.icon.1";
+               }
+               rel2.to_x: "elm.edit.icon.1";
+               align: 0.0 0.0;
+            }
+         }
+
+         part { name: "elm.swallow.decorate.content";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon1.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.2 0.0;
+                  to_x: "elm.edit.icon.2";
+                  to_y: "elm.padding.bottom";
+               }
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+            description { state: "flipped" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.3 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+            }
+         }
+         part { name: "elm.padding.icon2.left";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.swallow.decorate.content";
+               }
+               rel2.to_x: "elm.swallow.decorate.content";
+               align: 0.0 0.0;
+            }
+         }
+
+       part { name: "elm.edit.icon.2";
+            clip_to: "disclip";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               fixed: 1 0;
+               align: 0.0 0.5;
+               visible: 1;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset:   -GENLIST_SIZE_16_INC    GENLIST_SIZE_6_INC;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset:   -GENLIST_SIZE_16_INC -GENLIST_SIZE_8_INC;
+               }
+            }
+          description { state: "disabled" 0.0;
+             inherit: "default" 0.0;
+             visible: 0;
+          }
+          description { state: "enabled" 0.0;
+             inherit: "default" 0.0;
+               align: 1.0 0.5;
+          }
+       }
+
+       part { name: "bottom_line";
+          type: RECT;
+          clip_to: "disclip";
+          mouse_events: 0;
+          description { state: "default" 0.0;
+             min: 0 0;
+             fixed: 0 1;
+             visible: 1;
+             color: GENLIST_PART_LIST_LINE_COLOR_INC;
+             rel1 {
+                relative: 0.0 1.0;
+                to_x: "elm.decorate_bg";
+                offset: 0 -1;
+             }
+          }
+          description {
+              state: "hide" 0.0;
+              inherit: "default" 0.0;
+              visible: 0;
+          }
+          description {
+              state: "enabled" 0.0;
+              inherit: "default" 0.0;
+              min: 0 GENLIST_SIZE_8_INC;
+              fixed: 0 1;
+          }
+       }
+       part { name: "reorder_glow_above";
+          mouse_events: 0;
+          description { state: "default" 0.0;
+             visible: 0;
+             rel1.relative: 0.0 -0.3;
+             rel2.relative: 1.0 0.0;
+             image {
+                normal: "01_list_reorder_bg_above.png";
+             }
+             fill.smooth: 0;
+          }
+          description { state: "reorder" 0.0;
+             inherit: "default" 0.0;
+             visible: 1;
+          }
+       }
+       part { name: "reorder_glow_below";
+          mouse_events: 0;
+          description { state: "default" 0.0;
+             visible: 0;
+             rel1.relative: 0.0 1.0;
+             rel2.relative: 1.0 1.3;
+             image {
+                normal: "01_list_reorder_bg_below.png";
+             }
+             fill.smooth: 0;
+          }
+          description { state: "reorder" 0.0;
+             inherit: "default" 0.0;
+             visible: 1;
+          }
+       }
+       GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name:    "go_active";
+            signal:  "elm,state,selected";
+            source:  "elm";
+            action: STATE_SET "selected" 0.0;
+            target:  "elm.decorate_bg";
+         }
+         program { name:    "go_passive";
+            signal:  "elm,state,unselected";
+            source:  "elm";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.1;
+            target:  "elm.decorate_bg";
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         // decorate mode enable signal
+         program { name: "decorate_mode_enabled_effect";
+            signal: "elm,state,decorate,enabled,effect";
+            source: "elm";
+            action: STATE_SET "enabled" 0.0;
+            transition: DECELERATE 0.7;
+            target: "elm.edit.icon.1";
+            target: "elm.edit.icon.2";
+            target: "bottom_line";
+         }
+         program { name: "decorate_mode_disabled_effect";
+            signal: "elm,state,decorate,disabled,effect";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            transition: DECELERATE 0.7;
+            target: "elm.edit.icon.1";
+            target: "elm.edit.icon.2";
+            target: "bottom_line";
+         }
+         program { name: "decorate_mode_enabled";
+            signal: "elm,state,decorate,enabled";
+            source: "elm";
+            action: STATE_SET "enabled" 0.0;
+            target: "elm.edit.icon.1";
+            target: "elm.edit.icon.2";
+            target: "bottom_line";
+         }
+         program { name: "decorate_mode_disabled";
+            signal: "elm,state,decorate,disabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.edit.icon.1";
+            target: "elm.edit.icon.2";
+            target: "bottom_line";
+         }
+
+         // reorder signal
+         program { name: "reorder_enabled";
+            signal: "elm,state,reorder,enabled";
+            source: "elm";
+            action: STATE_SET "reorder" 0.0;
+            target: "elm.padding.reorder";
+         }
+         program { name: "reorder_disabled";
+            signal: "elm,state,reorder,disabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.padding.reorder";
+         }
+
+         program { name: "reorder_enabled_effect";
+            signal: "elm,state,reorder_enabled_effect";
+            source: "elm";
+            action: STATE_SET "reorder" 0.0;
+            transition: DECELERATE 0.7;
+            target: "elm.padding.reorder";
+         }
+         program { name: "reorder_disabled_effect";
+            signal: "elm,state,reorder_disabled_effect";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            transition: DECELERATE 0.7;
+            target: "elm.padding.reorder";
+         }
+        // reorder glow
+        program {
+            name:    "show_reorder_glow";
+            signal:  "elm,action,item,reorder_start";
+            source:  "elm";
+            action:  STATE_SET "reorder" 0.0;
+            target:  "reorder_glow_above";
+            target:  "reorder_glow_below";
+        }
+        program {
+            name:    "hide_reorder_glow";
+            signal:  "elm,action,item,reorder_end";
+            source:  "elm";
+            action:  STATE_SET "default" 0.0;
+            target:  "reorder_glow_above";
+            target:  "reorder_glow_below";
+        }
+        // flip
+        program {
+            name:    "enable_flip_mode";
+            signal:  "elm,state,flip,enabled";
+            source:  "elm";
+            action:  STATE_SET "disabled" 0.0;
+            target:  "elm.edit.icon.2";
+            after:   "enable_flip_mode_next";
+        }
+        program {
+            name:    "enable_flip_mode_next";
+            action:  STATE_SET "flipped" 0.0;
+            transition: DECELERATE 0.5;
+            target:  "elm.swallow.decorate.content";
+        }
+        program {
+            name:    "disable_flip_mode";
+            signal:  "elm,state,flip,disabled";
+            source:  "elm";
+            action:  STATE_SET "default" 0.0;
+            transition: DECELERATE 0.5;
+            target:  "elm.swallow.decorate.content";
+            target:  "elm.edit.icon.2";
+        }
+      }
+   }
+
+   group { name: "elm/genlist/item/music_player/mp_info/default";
+
+      alias: "elm/genlist/item_odd/music_player/mp_info/default";
+      alias: "elm/genlist/item_compress/music_player/mp_info/default";
+      alias: "elm/genlist/item_compress_odd/music_player/mp_info/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.title";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
+         part { name: "elm.text.title";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_40_INC;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: MP_MAIN_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/track/default";
+
+      alias: "elm/genlist/item_odd/music_player/track/default";
+      alias: "elm/genlist/item_compress/music_player/track/default";
+      alias: "elm/genlist/item_compress_odd/music_player/track/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.title";
+      data.item: "contents" "elm.swallow.icon elm.swallow.end elm.swallow.btn.bg elm.swallow.btn";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_113_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
+         part { name: "elm.text.title";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_40_INC;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: (-GENLIST_SIZE_60_INC) 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: MP_MAIN_TEXT_SIZE;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+        part { name: "elm.swallow.btn.bg";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                 fixed: 0 0;
+                 align: 1 0.5;
+                 min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+                 max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+              rel1 {
+                  relative: 1.0 0.0;
+                  to: "elm.text.title";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: (-GENLIST_PADDING_10_INC) 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.text.title";
+               }
+            }
+         }
+       part { name: "elm.swallow.btn";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                 fixed: 0 0;
+                 align: 0 0;
+              rel1 {
+                  relative: 0.0 0.0;
+                  to: "elm.swallow.btn.bg";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to: "elm.swallow.btn.bg";
+               }
+            }
+         }
+          part { name: "elm.swallow.end";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 0;
+               align: 1.0 0.5;
+               rel1.to_x: "elm.padding.right";
+               rel2 {
+                  relative: 0.0  1.0;
+                  to_x: "elm.padding.right";
+               }
+            }
+         }
+
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/folder_track/default";
+      alias: "elm/genlist/item_odd/music_player/folder_track/default";
+      alias: "elm/genlist/item_compress/music_player/folder_track/default";
+      alias: "elm/genlist/item_compress_odd/music_player/folder_track/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2";
+      data.item: "contents" "elm.icon elm.icon.storage";
+      data.item: "flips" "elm.flip.content";
+
+      parts {
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.5;
+            }
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+         MP_LIST_THUMBNAIL_INNER_LINE
+
+         part { name: "elm.icon.storage";
+                       clip_to: "disclip";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to: "elm.icon"; }
+                               rel2 { relative: 1 0; to: "elm.icon"; }
+                               min: 46 46;
+                               align: 1 0;
+                               fixed: 1 1;
+                       }
+                }
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_PADDING_16_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               align: 0.0 0.0;
+               visible: 0;
+            }
+         }
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_60_INC;
+               fixed: 1 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.text2.left";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 0.0 0.0;
+               text {
+                  style: "genlist_textblock_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         part { name: "elm.padding.text2.left";
+            clip_to: "disclip";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_16_INC 0;
+               fixed: 1 0;
+               rel1.to_x: "elm.text.2";
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text.2";
+               }
+               align: 1.0 0.5;
+               visible: 0;
+            }
+         }
+
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC 0;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               align: 1.0 0.0;
+               color: GENLIST_PART_FONT_LIST_SUB_TEXT_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_PRESS_COLOR_INC;
+            }
+            GENLIST_DESCRIPTION_INVISIBLE_SELECTED
+            GENLIST_DESCRIPTION_FLIP_ENABLED
+         }
+
+         GENLIST_PART_FLIP
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         // signal: elm,state,%s,active
+         //   a "check" item named %s went active
+         // signal: elm,state,%s,passive
+         //   a "check" item named %s went passive
+         // default is passive
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            GENLIST_PROGRAM_SCRIPT_FLIP_SELECT_2TEXT
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+         GENLIST_PROGRAM_FLIP_2TEXT_1ICON
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/related_video/default";
+
+      alias: "elm/genlist/item_odd/music_player/related_video/default";
+      alias: "elm/genlist/item_compress/music_player/related_video/default";
+      alias: "elm/genlist/item_compress_odd/music_player/related_video/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "contents" "elm.swallow";
+
+      parts {
+         GENLIST_PART_BASE( 283 )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+
+         part { name: "elm.swallow";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                }
+               rel2 {
+                  relative: 1.0 1.0;
+                }
+            }
+         }
+
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/tag_btn/default";
+
+      alias: "elm/genlist/item_odd/music_player/tag_btn/default";
+      alias: "elm/genlist/item_compress/music_player/tag_btn/default";
+      alias: "elm/genlist/item_compress_odd/music_player/tag_btn/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.tag";
+      //data.item: "texts" "elm.icon.tag";
+
+      parts {
+         GENLIST_PART_BASE( 112 )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_32_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_BOTTOM_LINE
+          part { name: "top_line";
+            type: RECT;
+            clip_to: "disclip";
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: 0 1;
+               fixed: 0 1;
+               visible: 1;
+               color: MP_BOTTOM_LINE_COLOR;
+               rel1 {
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+               }
+            }
+         }
+
+         part { name: "elm.text.tag";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_42_INC;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 36;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+        GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/info_header/default";
+
+      alias: "elm/genlist/item_odd/music_player/info_header/default";
+      alias: "elm/genlist/item_compress/music_player/info_header/default";
+      alias: "elm/genlist/item_compress_odd/music_player/info_header/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1";
+      //data.item: "texts" "elm.icon.tag";
+
+      parts {
+         GENLIST_PART_BASE( 70 )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_PADDING_TOP( 10 )
+         GENLIST_PART_PADDING_BOTTOM( 0 )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_42_INC;
+               fixed: 0 1;
+               align: 0 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 36;
+                  min: 0 1;
+                  align: 0.0 0.5;
+                  text: "Media info";
+               }
+            }
+         }
+        GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
+      alias: "elm/genlist/item_compress_odd/multiline/music_player/info/default";
+      alias: "elm/genlist/item_compress/multiline.music_player/info/default";
+      alias: "elm/genlist/item_compress_odd/multiline.music_player/info/default";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2";
+
+      styles {
+        style { name: "name_style";
+          base: "font=SLP:style=Roman font_size=36 color="MP_MAIN_TEXT_01_STYLE_COLOR" wrap=char text_class=list_item";
+          tag:  "br" "\n";
+          tag:  "ps" "ps";
+          tag:  "tab" "\t";
+          tag:  "b" "+ font=SLP:style=Bold";
+        }
+      }
+
+      parts {
+         part { name: "base";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: MP_GENLIST_BG_COLOR;
+            }
+         }
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_PADDING_TOP( 0 )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+         part { name: "elm.text.1";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 GENLIST_SIZE_42_INC;
+               fixed: 0 1;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               align: 0.0 0.0;
+               color: MP_SUB_TEXT_01_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 32;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: GENLIST_PART_TEXT_SELECTED_COLOR_INC;
+            }
+         }
+         part { name: "elm.text.2";
+            clip_to: "disclip";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.left";
+                  to_y: "elm.text.1";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
+               text {
+                  style: "name_style";
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+         GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.1";
+            target: "elm.text.2";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+#define RICH_INFO_STARS_BG_W 208
+#define RICH_INFO_STARS_BG_H 48
+#define RICH_INFO_STARS_W_H 32
+#define RICH_INFO_STARS_GAP 4
+#define RICH_INFO_STARS_SX(pos)        (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos)
+#define RICH_INFO_STARS_EX(pos)        (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos+RICH_INFO_STARS_W_H)
+
+group { name: "elm/genlist/item/music_player/discography/default";
+
+      alias: "elm/genlist/item_odd/music_player/discography/default";
+      alias: "elm/genlist/item_compress/music_player/discography/default";
+      alias: "elm/genlist/item_compress_odd/music_player/discography/default";
+
       data.item: "stacking" "above";
       data.item: "selectraise" "on";
-      data.item: "texts" "elm.text.1 elm.text.2";
-
-      styles {
-        style { name: "name_style";
-          base: "font=SLP:style=Roman font_size=36 color=#A6A6A6FF wrap=char text_class=list_item";
-          tag:  "br" "\n";
-          tag:  "ps" "ps";
-          tag:  "tab" "\t";
-          tag:  "b" "+ font=SLP:style=Bold";
-        }
-      }
+      data.item: "texts" "elm.text.title elm.text.time";
+      data.item: "contents" "elm.icon elm.icon.star1 elm.icon.star2 elm.icon.star3 elm.icon.star4 elm.icon.star5 elm.icon.btn";
 
       parts {
-         part { name: "base";
+         GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC )
+         GENLIST_PART_BG_IMAGE
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_8_INC )
+         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+
+         part { name: "elm.padding.icon.right";
+            clip_to: "disclip";
             type: RECT;
-            repeat_events: 1;
+            scale: 1;
             description { state: "default" 0.0;
-               color: MP_GENLIST_BG_COLOR;
+               min: GENLIST_PADDING_10_INC 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.icon";
+               }
+               rel2.to_x: "elm.icon";
+               visible: 0;
+            }
+         }
+         part { name: "elm.icon";
+            clip_to: "disclip";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               max: GENLIST_SIZE_112_INC GENLIST_SIZE_112_INC;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to_x: "elm.padding.left";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.left";
+               }
+            }
+         }
+
+          part { name: "elm.text.title";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 0 0.0;
+               min: 0 60;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "elm.padding.icon.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.icon.btn";
+                  to_y: "elm.padding.top";
+               }
+               color: MP_MAIN_TEXT_COLOR;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: GENLIST_FONT_35_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+
+         part { name: "elm.text.time";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 0 0;
+               min: GENLIST_SIZE_96_INC 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to: "elm.text.title";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text.title";
+                  to_y: "elm.padding.bottom";
+               }
+               color, 151 150 150 255;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: GENLIST_FONT_32_INC;
+                  min: 0 1;
+                  align: 0.0 0.5;
+               }
+            }
+         }
+
+         part{
+               name, "star_bg";
+               type, RECT;
+               scale: 1;
+               mouse_events: 0;
+               description {
+                       state, "default" 0.0;
+                       fixed: 1 1;
+                       align: 0 0;
+                       min: RICH_INFO_STARS_BG_W 0;
+                       rel1 { relative: 1.0 8/48; to, "elm.text.time";}
+                       rel2 { relative: 1.0 40/48;to , "elm.text.time";}
+                       color: 0 0 0 0;
+               }
+       }
+
+        part{name,"elm.icon.star1";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(0)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(0)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"elm.icon.star2";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(1)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(1)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"elm.icon.star3";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(2)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(2)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"elm.icon.star4";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(3)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(3)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"elm.icon.star5";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(4)/RICH_INFO_STARS_BG_W 0.0;
+                                               to , "star_bg";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(4)/RICH_INFO_STARS_BG_W 1.0;
+                                               to , "star_bg";
+                                       }
+                       }
+               }
+
+         part { name: "elm.icon.btn";
+            clip_to: "disclip";
+            type: SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.5 0.5;
+               // TODO: enable btn after buy function implemented...
+               // min: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+               //max: GENLIST_SIZE_80_INC GENLIST_SIZE_80_INC;
+               min: 1 GENLIST_SIZE_80_INC;
+               max: 1 GENLIST_SIZE_80_INC;
+              rel1 {
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.bottom";
+               }
             }
          }
+
+       GENLIST_PART_DISCLIP
+      }
+      programs {
+         program { name: "go_active";
+            signal: "elm,state,selected";
+            source: "elm";
+            action: STATE_SET "selected" 0.0;
+            target: "bg_image";
+            target: "elm.text.time";
+         }
+         program { name: "go_passive";
+            signal: "elm,state,unselected";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "bg_image";
+            target: "elm.text.time";
+            transition: LINEAR 0.1;
+         }
+         program { name: "go_disabled";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "disclip";
+         }
+         program { name: "go_enabled";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "disclip";
+         }
+      }
+   }
+
+group { name: "elm/genlist/item/music_player/1text/default";
+
+      alias: "elm/genlist/item_odd/music_player/1text/default";
+      alias: "elm/genlist/item_compress/music_player/1text/default";
+      alias: "elm/genlist/item_compress_odd/music_player/1text/default";
+
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
+
+      parts {
+         GENLIST_PART_BASE( 90 )
          GENLIST_PART_BG_IMAGE
-         GENLIST_PART_PADDING_TOP( 0 )
-         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_32_INC )
-         GENLIST_PART_PADDING_LEFT( 0 )
+         GENLIST_PART_BOTTOM_LINE
+         GENLIST_PART_PADDING_TOP( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_5_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
          GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+
          part { name: "elm.text.1";
             clip_to: "disclip";
             type: TEXT;
             mouse_events: 0;
             scale: 1;
             description { state: "default" 0.0;
-               min: 0 GENLIST_SIZE_42_INC;
+               min: 0 40;
                fixed: 0 1;
+               align: 0.0 0.0;
                rel1 {
                   relative: 1.0 1.0;
                   to_x: "elm.padding.left";
@@ -1347,11 +5638,11 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
                }
                rel2 {
                   relative: 0.0 1.0;
+                  offset: 0 0;
                   to_x: "elm.padding.right";
                   to_y: "elm.padding.top";
                }
-               align: 0.0 0.0;
-               color: GENLIST_PART_TEXT_COLOR_INC;
+               color: 255 255 255 255;
                text {
                   font: FONT_STYLE_ROMAN;
                   size: 32;
@@ -1359,35 +5650,70 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
                   align: 0.0 0.5;
                }
             }
-            description { state: "selected" 0.0;
-               inherit: "default" 0.0;
-               color: GENLIST_PART_TEXT_SELECTED_COLOR_INC;
-            }
          }
          part { name: "elm.text.2";
             clip_to: "disclip";
-            type: TEXTBLOCK;
+            type: TEXT;
             mouse_events: 0;
             scale: 1;
             description { state: "default" 0.0;
+               min: 0 30;
+               fixed: 0 1;
+               align: 0.0 0.0;
                rel1 {
-                  relative: 1.0 1.0;
+                  relative: 1.0  1.0;
                   to_x: "elm.padding.left";
                   to_y: "elm.text.1";
                }
                rel2 {
-                  relative: 0.0 0.0;
+                  relative: 0 1;
+                  offset: 0 0;
                   to_x: "elm.padding.right";
-                  to_y: "elm.padding.bottom";
+                  to_y: "elm.text.1";
                }
+               color: MP_SUB_TEXT_COLOR;
                text {
-                  style: "name_style";
+                  font: FONT_STYLE_MEDIUM;
+                  size: 22;
                   min: 0 1;
                   align: 0.0 0.5;
                }
             }
          }
-         GENLIST_PART_DISCLIP
+         part { name: "elm.text.3";
+            clip_to: "disclip";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 40;
+               fixed: 1 1;
+               align: 1.0 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_x: "elm.padding.right";
+                  to_y: "elm.padding.top";
+               }
+               color: 229 144 30 255;
+               text {
+                  font: FONT_STYLE_ROMAN;
+                  size: 18;
+                  min: 1 1;
+                  align: 1.0 0.5;
+               }
+            }
+            description { state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color: 225 225 225 255;
+            }
+         }
+       GENLIST_PART_DISCLIP
       }
       programs {
          program { name: "go_active";
@@ -1395,16 +5721,14 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
             source: "elm";
             action: STATE_SET "selected" 0.0;
             target: "bg_image";
-            target: "elm.text.1";
-            target: "elm.text.2";
+            target: "elm.text.3";
          }
          program { name: "go_passive";
             signal: "elm,state,unselected";
             source: "elm";
             action: STATE_SET "default" 0.0;
             target: "bg_image";
-            target: "elm.text.1";
-            target: "elm.text.2";
+            target: "elm.text.3";
             transition: LINEAR 0.1;
          }
          program { name: "go_disabled";
@@ -1422,7 +5746,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
       }
    }
 
-#define GENLIST_PART_INDEX_LIST_BASE_EVENT_INC \
+   #define GENLIST_GROUP_PART_BASE_EVENT_INC \
          part { name: "base_event";\
             type: RECT;\
             repeat_events: 0;\
@@ -1430,8 +5754,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
                color: 0 0 0 0;\
             }\
          }
-#define GENLIST_PART_FONT_INDEX_LIST_COLOR_INC 195 195 195 255
-#define GENLIST_DIALOGUE_GROUP_BG_COLOR_INC 121 121 121 255
+   #define GENLIST_GROUP_PART_TEXT_COLOR_INC 255 255 255 255
 
    group { name: "elm/genlist/item/music_player/grouptitle/default";
       alias: "elm/genlist/item_odd/music_player/grouptitle/default";
@@ -1441,23 +5764,23 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
       data.item: "stacking" "above";
       data.item: "selectraise" "on";
       data.item: "texts" "elm.text";
-      data.item: "treesize" "GENLIST_TREESIZE_32_INC";
+      data.item: "treesize" "20";
 
       parts {
-         GENLIST_PART_INDEX_LIST_BASE_EVENT_INC
-         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
-         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
+         GENLIST_GROUP_PART_BASE_EVENT_INC
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
          part { name: "rect";
             type: RECT;
             repeat_events: 1;
             scale: 1;
             description { state: "default" 0.0;
-               min: 0 GENLIST_HEIGHT_49_INC;
-                          color: GENLIST_DIALOGUE_GROUP_BG_COLOR_INC;
+               min: 0 30;
+               color: 121 121 121 255;
             }
             description { state: "alpha_off" 0.0;
-               min: 0 GENLIST_SIZE_48_INC;
-                          color: GENLIST_DIALOGUE_GROUP_BG_COLOR_INC;
+               min: 0 30;
+               color: 121 121 121 0;
             }
          }
 
@@ -1475,10 +5798,10 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
                   offset: 0 0;
                   to_x: "elm.padding.right";
                }
-               color: GENLIST_PART_FONT_INDEX_LIST_COLOR_INC;
+               color: GENLIST_GROUP_PART_TEXT_COLOR_INC;
                text {
                   font: "SLP:style=Medium";
-                  size: GENLIST_FONT_32_INC;
+                  size: 32;
                   min: 1 1;
                   align: 0.0 0.5;
                }
@@ -1507,6 +5830,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
       }
    }
 
+   /* add by rocket.he for dialogue genlist style */
    group { name : "elm/genlist/item/music_player/dialogue_title/default";
       alias: "elm/genlist/item_odd/music_player/dialogue_title/default";
       alias: "elm/genlist/item_compress/music_player/dialogue_title/default";
@@ -1517,9 +5841,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
          data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
          data.item: "contents" "elm.icon";
          data.item: "treesize" "34";
-      images {
-         image: "00_list_bar_press_1x80.png" COMP;
-      }
+
       parts {
          part { name: "base";
             type: RECT;
@@ -1533,8 +5855,8 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
 
          GENLIST_PART_PADDING_TOP( 9 )
          GENLIST_PART_PADDING_BOTTOM( 9 )
-         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_10_INC )
-         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_10_INC )
+         GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_16_INC )
+         GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_16_INC )
          GENLIST_PART_BOTTOM_LINE
 
          part { name: "elm.padding.icon.right";
@@ -1542,7 +5864,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
             type: RECT;
             scale: 1;
             description { state: "default" 0.0;
-               min: GENLIST_PADDING_10_INC 0;
+               min: GENLIST_PADDING_16_INC 0;
                fixed: 1 0;
                rel1 {
                   relative: 1.0 0.0;
@@ -1579,7 +5901,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
             mouse_events: 0;
             scale: 1;
             description { state: "default" 0.0;
-               min: 0 26;
+               min: 0 42;
                fixed: 0 1;
                align: 0.0 0.0;
                rel1 {
@@ -1608,7 +5930,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
             mouse_events: 0;
             scale: 1;
             description { state: "default" 0.0;
-               min: 0 GENLIST_SIZE_42_INC;
+               min: 0 GENLIST_SIZE_48_INC;
                fixed: 0 1;
                align: 0.0 0.0;
                rel1 {
@@ -1669,6 +5991,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
       }
    }
 
+   /* add by rocket.he for album title */
    group { name : "elm/genlist/item/music_player/album_title/default";
       alias: "elm/genlist/item_odd/music_player/album_title/default";
       alias: "elm/genlist/item_compress/music_player/album_title/default";
@@ -1679,9 +6002,7 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
          data.item: "texts" "elm.text.1 elm.text.3";
          data.item: "contents" "elm.icon elm.text.swallow";
          data.item: "treesize" "34";
-      images {
-         image: "00_list_bar_press_1x80.png" COMP;
-      }
+
       parts {
          part { name: "base";
             type: RECT;
@@ -1825,3 +6146,4 @@ group { name: "elm/genlist/item_compress/multiline/music_player/info/default";
       }
    }
 
+#endif
\ No newline at end of file
index 3d4ba95..5c23aa4 100755 (executable)
@@ -1,20 +1,4 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
+
 /* main size */
 #define MAIN_W 480
 #define MAIN_H 800
@@ -33,6 +17,7 @@
 
 /* indicator */
 #define IND_H_R        (38.0/MAIN_H)
+//#define IND_H_P      (MAIN_HEIGHT * IND_H_R)
 
 /* tab */
 #define TAB_H_R        (125/MAIN_H)
@@ -71,7 +56,7 @@
 #define NEW_INDICATOR  52/MAIN_H
 
 #define NOW_PLAYING_H  100
-#define BG_COLOR 37 37 37 255
+#define BG_COLOR 236 240 242 255
 
 #define SEARCHBAR_H_INC 107
 
@@ -85,79 +70,6 @@ images {
 
 collections {
        #include "mp-no-contents.edc"
-       group {
-               name: "control_layout";
-               parts {
-                       part { name: "background";
-                               type: RECT;
-                               mouse_events: 0;
-                               description {
-                                       state: "default" 0.0;
-                                       rel1 { relative: 0.0 0.0; }
-                                       rel2 { relative: 1.0 1.0; }
-                                       color: BG_COLOR;
-                               }
-                       }
-                       part {
-                               name : "elm.swallow.controlbar";
-                               type: SWALLOW;
-                               mouse_events: 1;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       align: 0 0;
-                                       min: 0 CONTROLBAR_LARGE_HEIGHT_INC;
-                                       fixed: 0 1;
-                                       visible: 0;
-                                       rel1 { relative: 0.0 0.0;}
-                                       rel2 { relative: 1.0 0.0;}
-
-                               }
-                               description {
-                                       state: "show" 0.0;
-                                       inherit: "default" 0.0;
-                                       visible: 1;
-                               }
-                       }
-
-                       part {
-                               name : "elm.swallow.content";
-                               type: SWALLOW;
-                               mouse_events: 1;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       rel1 { relative: 0.0 0.0;}
-                                       rel2 { relative: 1.0 1.0;}
-                               }
-                               description {
-                                       state: "show" 0.0;
-                                       rel1 { relative: 0.0 1.0; to_y: "elm.swallow.controlbar";}
-                                       rel2 { relative: 1.0 1.0;}
-                               }
-                       }
-               }
-
-               programs {
-                       program {
-                               name : "show_control";
-                               signal : "show.control";
-                               source : "music_app";
-                               action : STATE_SET "show" 0.0;
-                               target : "elm.swallow.content";
-                               target : "elm.swallow.controlbar";
-                               transition: LINEAR 0.3;
-                       }
-                       program {
-                               name : "hide_control";
-                               signal : "hide.control";
-                               source : "music_app";
-                               action : STATE_SET "default" 0.0;
-                               target : "elm.swallow.content";
-                               target : "elm.swallow.controlbar";
-                       }
-               }
-       }
 
        group {
                name: "main_layout";
@@ -252,12 +164,12 @@ collections {
                            type: SWALLOW;
                            scale: 1;
                            description {
-                                       state: "default" 0.0;
-                                       align: 0.0 0.0;
-                                       fixed: 0 1;
-                                       rel1 { relative: 0.0 0.0;}
-                                       rel2 { relative: 1.0 0.0;}
-                                       min: 0 SEARCHBAR_H_INC;
+                              state: "default" 0.0;
+                              align: 0.0 0.0;
+                              fixed: 0 1;
+                              rel1 { relative: 0.0 0.0;}
+                              rel2 { relative: 1.0 0.0;}
+                                  min: 0 SEARCHBAR_H_INC;
                            }
                            description {
                               state: "hide" 0.0;
@@ -399,6 +311,17 @@ collections {
                                        color: 0 0 0 0;
                                }
                        }
+                       /*      //hjkim, 100427, removed, unneeded part
+                       part {
+                               name: "indicator";
+                               mouse_events:0;
+                               description {
+                             state: "default" 0.0;
+                              rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 0.0; }
+                               }
+                       }
+                       */
                        part {
                                name: "img_selall";
                                mouse_events: 0;
@@ -615,12 +538,45 @@ collections {
                                        rel2 { relative: 1.0 1.0; offset: -1 -1;}
                                }
                        }
+                       /*      //hjkim, 100427, removed, unneeded part
+                       part {
+                               name: "tab";
+                               type: SWALLOW;
+                                       description {
+                                               state: "default" 0.0;
+                                               rel1 { relative: 0.0 NEW_INDICATOR; }
+                                               rel2 { relative: 1.0 TAB_H_R; }
+                                       }
+                                       description {
+                                               state: "delete" 0.0;
+                                               visible: 0;
+                                       }
+                                       description {
+                                               state: "album_tracks" 0.0;
+                                               visible: 0;
+                                       }
+                                       description {
+                                               state: "artist_tracks" 0.0;
+                                               visible: 0;
+                                       }
+                                       description {
+                                               state: "add_to_plst" 0.0;
+                                               visible: 0;
+                                       }
+                                       description {
+                                               state: "plst_tracks" 0.0;
+                                               visible: 0;
+                                       }
+                       }
+                       */
                        part {
                                name: "plst_header";
                                type: SWALLOW;
                                        description {
                                        state: "default" 0.0;
                                                visible: 0;
+                                               //rel1 { relative: 0.0 HEAD_SY; }
+                                               //rel2 { relative: 1.0 HEAD_EY; }
                                        }
                                        description {
                                                state: "delete" 0.0;
@@ -650,6 +606,8 @@ collections {
                                        description {
                                        state: "default" 0.0;
                                                visible: 0;
+                                               //rel1 { relative: 0.0 HEAD_SY; }
+                                               //rel2 { relative: 1.0 HEAD_EY; }
                                        }
                                        description {
                                                state: "delete" 0.0;
@@ -658,6 +616,8 @@ collections {
                                        description {
                                                state: "album_tracks" 0.0;
                                                visible: 1;
+                                               //rel1 { relative: 0.0 HEAD_SY; }
+                                               //rel2 { relative: 1.0 HEAD_EY; }
                                        }
                                        description {
                                                state: "artist_tracks" 0.0;
@@ -680,6 +640,7 @@ collections {
                                        description{
                                state: "default" 0.0;
                                                visible: 0;
+                                               //rel1{relative: 0.0 0.0; to: indicator;}
                                                rel1{relative: 0.0 0.0;}
                                                rel2{relative: 1.0 TITLEBAR_H_R; offset: -1 -1; to: background;}
                                        }
@@ -710,6 +671,17 @@ collections {
                                                visible: 0;
                                        }
                        }
+                       /*      //hjkim, 100427, removed, unneeded part
+                       part {
+                               name: "softkey";
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 SOFTKEY_SY; }
+                                       rel2 { relative: 1.0 1.0; }
+                               }
+                       }
+                       */
                }
 
                programs {
@@ -725,6 +697,7 @@ collections {
                                source: "LIBRARY";
                                action: STATE_SET "delete" 0.0;
                                target: "list";
+                               //target: "tab";
                                target: "plst_header";
                                target: "album_header";
                                target: "title_bar";
@@ -738,6 +711,7 @@ collections {
                                source: "LIBRARY";
                                action: STATE_SET "add_to_plst" 0.0;
                                target: "list";
+                               //target: "tab";
                                target: "plst_header";
                                target: "album_header";
                                target: "title_bar";
@@ -751,6 +725,7 @@ collections {
                                source: "LIBRARY";
                                action: STATE_SET "album_tracks" 0.0;
                                target: "list";
+                               //target: "tab";
                                target: "plst_header";
                                target: "album_header";
                                target: "title_bar";
@@ -765,6 +740,7 @@ collections {
                                source: "LIBRARY";
                                action: STATE_SET "album_tracks" 0.0;
                                target: "list";
+                               //target: "tab";
                                target: "plst_header";
                                target: "album_header";
                                target: "title_bar";
@@ -779,6 +755,7 @@ collections {
                                source: "LIBRARY";
                                action: STATE_SET "artist_tracks" 0.0;
                                target: "list";
+                               //target: "tab";
                                target: "plst_header";
                                target: "album_header";
                                target: "title_bar";
@@ -793,6 +770,7 @@ collections {
                                source: "LIBRARY";
                                action: STATE_SET "plst_tracks" 0.0;
                                target: "list";
+                               //target: "tab";
                                target: "plst_header";
                                target: "album_header";
                                target: "title_bar";
@@ -807,6 +785,7 @@ collections {
                                source: "LIBRARY";
                                action: STATE_SET "default" 0.0;
                                target: "list";
+                               //target: "tab";
                                target: "plst_header";
                                target: "album_header";
                                target: "title_bar";
@@ -886,8 +865,14 @@ images
                                description {
                                        fixed: 1 1;
                                        state: "default" 0.0;
+                                       //visible: 0;
+                                       //min: SEARCH_ENTRY_C_LENGTH SEARCH_ENTRY_H;
+                                       //visible: 1;
+                                       //rel1 { relative: 0.0 0.0; offset: (SEARCH_ENTRY_C_R1_X) (SEARCH_ENTRY_C_R1_Y);to: "search_input_bg";}
+                                       //rel2 { relative: 0.0 0.0; offset: (SEARCH_ENTRY_C_R2_X) (SEARCH_ENTRY_C_R2_Y);to: "search_input_bg";}
                                        rel1 { relative, HEAD_TITLE_SX HEAD_TITLE_SY; offset, 0 0;}
                                        rel2 { relative, 1.0 HEAD_EY; offset, -10 -10;}
+                                       //image { normal: "01_search_input_field_bg_c.png"; }
                                }
                                description {
                                        state: "invisible" 0.0;
@@ -1055,6 +1040,8 @@ images
 
        group {
                name: "album_items";
+               //min: 480 101;
+               //max: 480 101;
                parts {
                        part {
                                name: "header";
@@ -1153,14 +1140,33 @@ images
 #define SEARCH_TEXT_NAME            "search_txt"
        group {
                name: "search_entry";
+               //min: MAIN_WIDTH SEARCHVIEW_H;
+               //max: MAIN_WIDTH SEARCHVIEW_H;
 
                parts {
+                       /*
+                       part {
+                               name: "search_rect";
+                               type: RECT;
+                               description {
+                                       min: MAIN_WIDTH SEARCHVIEW_H;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; offset: 0 0; }
+                                       rel2 { relative: 1.0 1.0; offset: 0 0; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       */
+                       /* Image bg */
                        part {
                                name: "search_input_bg";
                                type: IMAGE;
                                description {
                                        state: "default" 0.0;
+                                       /*min: MAIN_WIDTH SEARCHVIEW_H;*/
                                        visible: 1;
+                                       //rel1 { relative: 0.0 0.0; offset: 0 SEARCHVIEW_Y;}
+                                       //rel2 { relative: 1.0 0; offset: 0 SEARCHVIEW_H;}
                                        rel1 { relative: 0.0 0.0; offset: 0 0;}
                                        rel2 { relative: 1.0 0; offset: 0 SEARCHVIEW_H;}
                                        image { normal: "01_search_input_bg.png"; }
@@ -1216,6 +1222,8 @@ images
                                        state: "default" 0.0;
                                        min: SEARCH_BUTTON_W SEARCH_BUTTON_H;
                                        visible: 1;
+                                       //rel1 { relative: 0.0 0.0; offset: (SEARCH_BUTTON_R1_X) (SEARCH_BUTTON_R1_Y);to: "search_input_bg";}
+                                       //rel2 { relative: 1.0 0.0; offset: (SEARCH_BUTTON_R2_X) (SEARCH_BUTTON_R2_Y);to: "search_input_bg";}
                                        rel1 { relative: 0.0 0.0; offset: (SEARCH_BUTTON_R1_X) (SEARCH_BUTTON_R1_Y);}
                                        rel2 { relative: 0.0 0.0; offset: (SEARCH_BUTTON_R2_X) (SEARCH_BUTTON_R2_Y);}
                                        image { normal: "01_search_button.png"; }
@@ -1287,6 +1295,73 @@ group {
        name: "library_controlbar";
 
        parts {
+/*
+               part { name: "bg";
+                       mouse_events: 0;
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 1.0;}
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "elm.swallow.view1";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar1";}
+                       }
+               }
+               part {
+                       name: "elm.swallow.view2";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 0.0; to: "elm.swallow.toolbar2";}
+                       }
+               }
+               part {
+                       name: "elm.swallow.tabbar";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                       }
+               }
+               part {
+                       name: "elm.swallow.toolbar1";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 74;
+                               fixed: 0 1;
+                               align: 0.5 1.0;
+                               rel1 { relative: 0.0 1.0;}
+                               rel2 { relative: 1.0 1.0;}
+                       }
+               }
+               part {
+                       name: "elm.swallow.toolbar2";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 86;
+                               fixed: 0 1;
+                               align: 0.5 1.0;
+                               rel1 { relative: 0.0 1.0;}
+                               rel2 { relative: 1.0 1.0;}
+                       }
+               }
+*/
+
                part {
                        name: "elm.swallow.tabbar";
                        type: SWALLOW;
@@ -1298,4 +1373,31 @@ group {
        }
 }
 
+group {
+       name: "create_playlist";
+
+       parts {
+               part { name: "bg";
+                       mouse_events: 0;
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 1.0;}
+                               color: BG_COLOR;
+                       }
+               }
+               part {
+                       name: "elm.swallow.content";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 1.0;}
+                       }
+               }
+       }
+}
+
 }
diff --git a/layout/mp-lrc.edc b/layout/mp-lrc.edc
new file mode 100755 (executable)
index 0000000..3ff8548
--- /dev/null
@@ -0,0 +1,179 @@
+
+#define MP_LRC_BG_W 720
+#define MP_LRC_BG_H 602
+#define MP_LRC_BOX_PAD_TOP 42
+#define MP_LRC_BOX_PAD_LEFT 64
+#define MP_LRC_BOX_PAD_RIGHT 64
+#define MP_LRC_BOX_W (MP_LRC_BG_W-MP_LRC_BOX_PAD_LEFT-MP_LRC_BOX_PAD_RIGHT)
+#define MP_LRC_BOX_H (MP_LRC_BG_H-MP_LRC_BOX_PAD_TOP)
+
+#define MP_LRC_LINE_W MP_LRC_BOX_W
+#define MP_LRC_LINE_H 52
+
+#define MP_LRC_BG_W_LANDSCAPE 720
+#define MP_LRC_BG_H_LANDSCAPE 150
+#define MP_LRC_BOX_PAD_TOP_LANDSCAPE 12
+#define MP_LRC_BOX_PAD_BOTTOM_LANDSCAPE 12
+#define MP_LRC_BOX_PAD_LEFT_LANDSCAPE 64
+#define MP_LRC_BOX_PAD_RIGHT_LANDSCAPE 64
+#define MP_LRC_BOX_W_LANDSCAPE (MP_LRC_BG_W_LANDSCAPE-MP_LRC_BOX_PAD_LEFT_LANDSCAPE-MP_LRC_BOX_PAD_RIGHT_LANDSCAPE)
+#define MP_LRC_BOX_H_LANDSCAPE (MP_LRC_BG_H_LANDSCAPE-MP_LRC_BOX_PAD_TOP_LANDSCAPE-MP_LRC_BOX_PAD_BOTTOM_LANDSCAPE)
+
+#define MP_LRC_HEAD_LINE_W MP_LRC_BOX_W
+#define MP_LRC_HEAD_LINE_W_LANDSCAPE MP_LRC_BOX_W
+#define MP_LRC_HEAD_LINE_H 25
+#define MP_LRC_HEAD_LINE_H_LANDSCAPE 10
+
+group{
+        name: "mp_lrc_layout";
+
+        parts {
+                part {
+                        name: "bg";
+                        type: RECT;
+                        mouse_events: 1;
+                        repeat_events: 1;
+                        description {
+                                state: "default" 0.0;
+                                visible: 1;
+                                rel1 { relative: 0.0 0.0;}
+                                rel2 { relative: 1.0 1.0;}
+                                color: 0 0 0 204;
+                        }
+                }
+
+                part {
+                        name: "lyric";
+                        type: SWALLOW;
+                        mouse_events: 1;
+                        repeat_events: 1;
+                        description {
+                                state: "default" 0.0;
+                                visible: 1;
+                                rel1 { relative: 0.0 MP_LRC_BOX_PAD_TOP/MP_LRC_BG_H; to: "bg";}
+                                rel2 { relative: 1.0 1.0; to: "bg";}
+                        }
+                }
+        }
+}
+group{
+        name: "mp_lrc_layout_landscape";
+
+        parts {
+                part {
+                        name: "bg";
+                        type: RECT;
+                        mouse_events: 1;
+                        repeat_events: 1;
+                        description {
+                                state: "default" 0.0;
+                                visible: 1;
+                                rel1 { relative: 0.0 0.0;}
+                                rel2 { relative: 1.0 1.0;}
+                                color: 0 0 0 204;
+                        }
+                }
+
+                part {
+                        name: "lyric";
+                        type: SWALLOW;
+                        mouse_events: 1;
+                        repeat_events: 1;
+                        description {
+                                state: "default" 0.0;
+                                visible: 1;
+                                rel1 { relative: 0.0 MP_LRC_BOX_PAD_TOP_LANDSCAPE/MP_LRC_BG_H_LANDSCAPE; to: "bg";}
+                                rel2 { relative: 1.0 (MP_LRC_BOX_PAD_TOP_LANDSCAPE+MP_LRC_BOX_H_LANDSCAPE)/MP_LRC_BG_H_LANDSCAPE; to: "bg";}
+                        }
+                }
+        }
+}
+
+group {
+       name, "mp_lrc_line";
+
+       styles
+       {
+               style {
+                       name: "lyricstyle";
+                       base: "font=system_content font_size=32 align=center color=#7e7d7d wrap=char";
+                       tag:  "br" "\n";
+                       tag:  "tab" "\t";
+                       tag:  "em" "+ font=system_content:style=Oblique";
+                       tag:  "b" "+ font=system_content:style=Bold";
+                       tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+                       tag:  "hilight" "+ font=system_content:style=Bold";
+               }
+       }
+
+       parts {
+               part { name, "background";
+                       type, RECT;
+                       description {
+                               state, "default" 0.0;
+                               color, 0 0 0 0;
+                       }
+               }
+
+               part {
+                       name: "txt";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: MP_LRC_LINE_W MP_LRC_LINE_H;
+                               max: MP_LRC_LINE_W 10000;
+                               rel1 { relative, 0.0 0.0; to, background; }
+                               rel2 { relative, 1.0 0.0; to, background; }
+                               text {
+                                       style: "lyricstyle";
+                                       min: 0 1;
+                               }
+                       }
+               }
+
+       }
+}
+
+group {
+       name: "mp_lrc_head";
+       min:  MP_LRC_HEAD_LINE_W MP_LRC_HEAD_LINE_H;
+
+       parts {
+
+               part { name: "start";
+                       mouse_events: 0;
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min:  0 MP_LRC_HEAD_LINE_H;
+                               rel1 { relative: 0.0 0.0;
+                                               offset : 0 0;}
+                               rel2 { relative: 1.0 1.0;}
+                               color: 0 0 0 0;
+                       }
+               }
+       }
+}
+group {
+       name: "mp_lrc_head_landscape";
+       min:  MP_LRC_HEAD_LINE_W_LANDSCAPE MP_LRC_HEAD_LINE_H_LANDSCAPE;
+
+       parts {
+
+               part { name: "start";
+                       mouse_events: 0;
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min:  0 MP_LRC_HEAD_LINE_H_LANDSCAPE;
+                               rel1 { relative: 0.0 0.0;
+                                               offset : 0 0;}
+                               rel2 { relative: 1.0 1.0;}
+                               color: 0 0 0 0;
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/layout/mp-minicontroller.edc b/layout/mp-minicontroller.edc
new file mode 100755 (executable)
index 0000000..eeff744
--- /dev/null
@@ -0,0 +1,716 @@
+
+#define MINI_W 720
+#define MINI_H 170
+#define TOP_PADDING 10
+#define LEFT_PADDING 8
+#define RIGHT_PADDING 16
+#define BOTTOM_PADDING 12
+#define ALBUM_ART_WIDTH 105
+#define ALBUM_ART_HEIGHT 105
+#define BUTTON_SIZE_MIN_MAX    62 46
+#define BUTTON_EXPAND_OFFSET 15
+
+#define ICON_PLAY      "Q02_QuickPanel_mini_music_player_controller_play.png"
+#define ICON_PAUSE     "Q02_QuickPanel_mini_music_player_controller_pause.png"
+#define ICON_REW       "Q02_QuickPanel_mini_music_player_controller_prev.png"
+#define ICON_FF                "Q02_QuickPanel_mini_music_player_controller_next.png"
+
+#define ICON_REPEAT_ALL                "Q02_Quickpanel_mini_music_player_repeat_all.png"
+#define ICON_REPEAT_ONE                "Q02_Quickpanel_mini_music_player_repeat_once.png"
+#define ICON_REPEAT_NONE       "Q02_Quickpanel_mini_music_player_repeat_none.png"
+#define ICON_SHUFFLE_ON                "Q02_Quickpanel_mini_music_player_shuffle_on.png"
+#define ICON_SHUFFLE_OFF       "Q02_Quickpanel_mini_music_player_shuffle_off.png"
+
+#define IMG_BG_GRADIENT                "Q02_QuickPanel_mini_music_player_gradient.png"
+#define IMG_BG_GRADIENT_RIGHT  "Q02_Quickpanel_mini_music_player_gradient_right.png"
+
+images {
+       image: ICON_PLAY COMP;
+       image: ICON_PAUSE COMP;
+       image: ICON_REW COMP;
+       image: ICON_FF COMP;
+       image: ICON_REPEAT_ALL COMP;
+       image: ICON_REPEAT_ONE COMP;
+       image: ICON_REPEAT_NONE COMP;
+       image: ICON_SHUFFLE_ON COMP;
+       image: ICON_SHUFFLE_OFF COMP;
+       image: IMG_BG_GRADIENT COMP;
+       image: IMG_BG_GRADIENT_RIGHT COMP;
+}
+collections {
+group {
+       name: music-minicontroller;
+
+       parts {
+
+               part{ name: "bg";
+                       type : RECT;
+                       scale : 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min : 0 MINI_H;
+                               fixed: 0 1;
+                               rel1{ relative : 0 0;}
+                               rel2{ relative : 1 1;}
+                               color : 20 20 20 102;
+                       }
+               }
+
+               part { name: "bg_image";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "bg"; }
+                               rel2 { relative: 1 1; to: "bg"; }
+                               align: 0 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               rel2 { relative: 0 1; to: "bg"; }
+                               min: 720 0;
+                               fixed: 1 0;
+                       }
+               }
+               part { name: "bg_image_gradient";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1.to: "bg_image";
+                               rel2.to: "bg_image";
+                               //image.normal: IMG_BG_GRADIENT;
+                       }
+               }
+
+               part { name: "bg_image_right";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to: "bg_image"; }
+                               rel2 { relative: 1 1; to: "bg"; }
+                               align: 0 0;
+                       }
+               }
+               part { name: "bg_image_gradient_right";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1.to: "bg_image_right";
+                               rel2.to: "bg_image_right";
+                               image.normal: IMG_BG_GRADIENT_RIGHT;
+                       }
+               }
+               
+               
+               
+               part { name: "padding.top";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "bg"; }
+                               rel2 { relative: 1 0; to: "bg"; }
+                               min: 0 28;
+                               fixed: 0 1;
+                               align: 0 0;
+                               visible: 0;
+                       }                       
+               }
+               
+               part { name: "padding.left";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "bg"; }
+                               rel2 { relative: 0 1; to: "bg"; }
+                               min: LEFT_PADDING 0;
+                               fixed: 1 0;
+                               align: 0 0;
+                               visible: 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 12 0;
+                       }
+               }
+               
+               part { name: "padding.right";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to: "bg"; }
+                               rel2 { relative: 1 1; to: "bg"; }
+                               min: RIGHT_PADDING 0;
+                               fixed: 1 0;
+                               align: 1 0;
+                               visible: 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 20 0;
+                       }
+               }
+
+               part { name: "padding.bottom";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 1; to: "bg"; }
+                               rel2 { relative: 1 1; to: "bg"; }
+                               min: 0 BOTTOM_PADDING;
+                               fixed: 0 1;
+                               align: 0 1;
+                               visible: 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 22;
+                       }
+               }
+
+               part { name: "albumart_image";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               min : ALBUM_ART_WIDTH ALBUM_ART_HEIGHT;
+                               fixed : 1 1;
+                               rel1 { relative: 1 0.5; to_x: "padding.left"; to_y: "bg"; }
+                               rel2 { relative: 1 0.5; to_x: "padding.left"; to_y: "bg"; }
+                               align: 0 0.5;
+                       }
+               }
+               
+               part { name: "padding.albumart.right";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to_x: "albumart_image"; to_y: "bg"; }
+                               rel2 { relative: 1 1; to_x: "albumart_image"; to_y: "bg"; }
+                               min: 59 0;
+                               fixed: 1 0;
+                               align: 0 0;
+                               visible: 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 194 0;
+                       }
+               }
+
+               part { name: "text_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to_x: "padding.albumart.right"; to_y: "bg"; }
+                               rel2 { relative: 0 0; to_x: "elapsed_time_area"; to_y: "bg"; }
+                               min: 0 90;
+                               fixed: 0 1;
+                               align: 0 0;
+                               visible: 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               rel2 { relative: 0 0; to_x: "padding_landscape_right"; to_y: "bg"; }
+                               min: 0 70;
+                       }
+               }
+               
+               part { name: "elm.text";                // title
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       effect: SHADOW TOP_RIGHT;
+                       description { state: "default" 0.0;
+                          rel1 { relative: 0 0; to: "text_area"; }
+                          rel2 { relative: 1 0; to: "text_area"; }
+                          min: 0 48;
+                          fixed: 0 1;
+                          align: 0 0;
+                          text {
+                                       font: "SLP:style=Light";
+                                       size: 40;
+                                       align: 0.5 1.0;
+                               }
+                               color: 249 249 249 255;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               rel1.to: "text_area";
+                               rel2 { relative: 1 1; to: "text_area"; }
+                               text.min: 0 0;
+                               text.max: 1 0;
+                               //text.align: 0.0 1.0;
+                       }
+               }
+
+               part { name: "padding_after_text";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 1; to: "elm.text"; }
+                               rel2 { relative: 1 1; to: "elm.text"; }
+                               min: 0 12;
+                               fixed: 0 1;
+                               align: 0 0;
+                               visible: 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               rel1 { relative: 1 0; to: "elm.text"; }
+                               rel2 { relative: 1 1; to: "elm.text"; }
+                               min: 30 0;
+                               fixed: 1 0;
+                       }
+               }
+               
+               part { name: "elm.text.2";              // artist
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       effect: SHADOW TOP_RIGHT;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 1; to: "padding_after_text"; }
+                               rel2 { relative: 1 1; to: "text_area"; }
+                               align: 0.5 0.0;
+                               text {
+                                       font: "SLP:style=Roman";
+                                       size: 28;
+                                       align: 0.5 0.5;
+                               }
+                               color: 249 249 249 149;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               rel1 { relative: 1 0; to: "padding_after_text"; }
+                               align: 0 0;
+                               text.align: 0.0 1.0;
+                               text.min: 0 0;
+                               text.max: 1 0;
+                       }
+               }
+
+               part { name: "elapsed_time_area";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "padding.right"; }
+                               rel2 { relative: 0 1; to_x: "padding.right"; to_y: "elm.text";}
+                               min: 70 0;
+                               fixed: 1 0;
+                               align: 1 0;
+                               color: 0 255 0 100;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "elm.elapsed_time";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "elapsed_time_area"; }
+                               rel2 { relative: 1 1; to: "elapsed_time_area"; }
+                               color: 255 255 255 149;
+                               text {
+                                       font: "SLP:style=Roman";
+                                       style: "Roman";
+                                       size: 26;
+                                       align: 1.0 1.0;
+                               }
+                       }
+               }
+
+               part { name: "padding_landscape_right";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "padding.right"; }
+                               rel2 { relative: 0 1; to: "padding.right"; }
+                               min: 181 0;
+                               fixed: 1 0;
+                               align: 1 0;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "button_area";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to_x: "padding.albumart.right"; to_y: "padding.bottom"; }
+                               rel2 { relative: 0 0; to_x: "padding.right"; to_y: "padding.bottom"; }
+                               min: 0 46;
+                               fixed: 0 1;
+                               align: 0 1;
+                               visible: 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               rel2.to_x: "padding_landscape_right";
+                       }
+               }
+               
+               part { name: "repeat_btn_bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0.5; to: "button_area"; }
+                               rel2 { relative: 0 0.5; to: "button_area"; }
+                               min: 0 64;
+                               fixed: 1 1;
+                               align: 0 0.5;
+                               visible: 0;
+                               color: 255 0 0 200;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 64 64;
+                               //visible: 1;
+                       }
+               }
+               part { name: "repeat_btn";
+                       type: IMAGE;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "repeat_btn_bg"; }
+                               rel2 { relative: 1 1; to: "repeat_btn_bg"; }
+                               image.normal: ICON_REPEAT_ALL;
+                       }
+                       description { state: "one" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: ICON_REPEAT_ONE;
+                       }
+                       description { state: "none" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: ICON_REPEAT_NONE;
+                       }
+               }
+               
+               part { name: "rewind_image_bg";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0.5; to_x: "button_padding_1"; to_y: "play.pause.image_bg"; }
+                               rel2 { relative: 0 0.5; to_x: "button_padding_1"; to_y: "play.pause.image_bg"; }
+                               min: BUTTON_SIZE_MIN_MAX;
+                               fixed: 1 1;
+                               align: 1 0.5;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "rewind_image";
+                       type: IMAGE;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                          rel1 { relative: 0 0; to: "rewind_image_bg"; }
+                          rel2 { relative: 1 1; to: "rewind_image_bg"; }
+                          image { normal: ICON_REW; }
+                       }
+               }
+
+               part { name: "rewind_button";
+                       type: RECT;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "rewind_image_bg"; offset: -BUTTON_EXPAND_OFFSET -BUTTON_EXPAND_OFFSET; }
+                               rel2 { relative: 1 1; to: "rewind_image_bg"; offset: BUTTON_EXPAND_OFFSET BUTTON_EXPAND_OFFSET; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "button_padding_1";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "play.pause.image_bg"; }
+                               rel2 { relative: 0 1; to: "play.pause.image_bg"; }
+                               min: 111 0;
+                               fixed: 1 0;
+                               align: 1 0;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "play.pause.image_bg";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.5 0.5; to: "button_area"; }
+                               rel2 { relative: 0.5 0.5; to: "button_area"; }
+                               min: BUTTON_SIZE_MIN_MAX;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               visible: 0;
+                               color: 255 0 0 200;
+                       }
+               }
+
+               part { name: "play.pause.image";
+                       type: IMAGE;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "play.pause.image_bg"; }
+                               rel2 { relative: 1 1; to: "play.pause.image_bg"; }
+                          image { normal: ICON_PAUSE; }
+                       }
+                       description{ state: "pause" 0.0;
+                               inherit : "default" 0.0;
+                               image {normal: ICON_PLAY;}
+                       }
+
+               }
+               
+               part { name: "play_pause_button";
+                       type: RECT;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "play.pause.image_bg"; offset: -BUTTON_EXPAND_OFFSET -BUTTON_EXPAND_OFFSET; }
+                               rel2 { relative: 1 1; to: "play.pause.image_bg"; offset: BUTTON_EXPAND_OFFSET BUTTON_EXPAND_OFFSET; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "button_padding_2";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to: "play.pause.image_bg"; }
+                               rel2 { relative: 1 1; to: "play.pause.image_bg"; }
+                               min: 111 0;
+                               fixed: 1 0;
+                               align: 0 0;
+                               visible: 0;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 115 0;
+                       }
+               }
+
+               part { name: "forward_image_bg";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0.5; to_x: "button_padding_2"; to_y: "play.pause.image_bg"; }
+                               rel2 { relative: 1 0.5; to_x: "button_padding_2"; to_y: "play.pause.image_bg"; }
+                               min: BUTTON_SIZE_MIN_MAX;
+                               fixed: 1 1;
+                               align: 0 0.5;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "forward_image";
+                       type: IMAGE;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                          rel1 { relative: 0 0; to: "forward_image_bg"; }
+                          rel2 { relative: 1 1; to: "forward_image_bg"; }
+                          image { normal: ICON_FF; }
+                       }
+               }
+               
+               part { name: "forward_button";
+                       type: RECT;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "forward_image_bg"; offset: -BUTTON_EXPAND_OFFSET -BUTTON_EXPAND_OFFSET; }
+                               rel2 { relative: 1 1; to: "forward_image_bg"; offset: BUTTON_EXPAND_OFFSET BUTTON_EXPAND_OFFSET; }
+                               color: 0 0 0 0;
+                       }
+               }
+       
+               part { name: "shuffle_btn_bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0.5; to: "button_area"; }
+                               rel2 { relative: 1 0.5; to: "button_area"; }
+                               min: 0 64;
+                               fixed: 1 1;
+                               align: 1S 0.5;
+                               visible: 0;
+                               color: 255 0 0 200;
+                       }
+                       description { state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 64 64;
+                               //visible: 1;
+                       }
+               }
+               part { name: "shuffle_btn";
+                       type: IMAGE;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "shuffle_btn_bg"; }
+                               rel2 { relative: 1 1; to: "shuffle_btn_bg"; }
+                               image.normal: ICON_SHUFFLE_ON;
+                       }
+                       description { state: "off" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: ICON_SHUFFLE_OFF;
+                       }
+               }
+       }
+
+       programs {
+               program { name: "press_rewind";
+                       signal: "mouse,down,1";
+                       source: "rewind_button";
+                       script{
+                               emit("clicked", "rew_btn_down");
+                       }
+               }
+               program { name: "normal_rewind";
+                       signal: "mouse,up,1";
+                       source: "rewind_button";
+                       script{
+                               emit("clicked", "rew_btn_up");
+                       }
+               }
+               program { name: "press_play";
+                       signal: "mouse,down,1";
+                       source: "play_pause_button";
+                       script{
+                               emit("clicked", "play");
+                       }
+               }
+               program { name: "press_fwd";
+                       signal: "mouse,down,1";
+                       source: "forward_button";
+                       script{
+                               emit("clicked", "ff_btn_down");
+                       }
+               }
+               program { name: "normal_fwd";
+                       signal: "mouse,up,1";
+                       source: "forward_button";
+                       script{
+                               emit("clicked", "ff_btn_up");
+                       }
+               }
+               program { name: "albumart_cb";
+                  signal: "mouse,clicked,1";
+                  source: "albumart_image";
+                       script{
+                          emit("clicked", "albumart");
+                  }
+               }
+               program { name: "set_pause_icon";
+                  signal: "set_pause";
+                  source: "play.pause.image";
+                  script{
+                               set_state(PART:"play.pause.image", "default", 0.0);
+                  }
+                  transition: LINEAR 0.1;
+               }
+               program { name: "set_play_icon";
+                  signal: "set_play";
+                  source: "play.pause.image";
+                  script{
+                               set_state(PART:"play.pause.image", "pause", 0.0);
+                  }
+                  transition: LINEAR 0.1;
+               }
+               program { name: "press_repeat";
+                       signal: "mouse,clicked,1";
+                       source: "repeat_btn";
+                       action: SIGNAL_EMIT "clicked" "repeat";
+               }
+               program { name: "press_shuffle";
+                       signal: "mouse,clicked,1";
+                       source: "shuffle_btn";
+                       action: SIGNAL_EMIT "clicked" "shuffle";
+               }
+               program { name: "set_repeat_icon_all";
+                       signal: "set_repeat_all";
+                       source: "*";
+                       action: STATE_SET "default" 0.0;
+                       target: "repeat_btn";
+               }
+               program { name: "set_repeat_icon_one";
+                       signal: "set_repeat_one";
+                       source: "*";
+                       action: STATE_SET "one" 0.0;
+                       target: "repeat_btn";
+               }
+               program { name: "set_repeat_icon_none";
+                       signal: "set_repeat_none";
+                       source: "*";
+                       action: STATE_SET "none" 0.0;
+                       target: "repeat_btn";
+               }
+               program { name: "set_shuffle_icon_on";
+                       signal: "set_shuffle_on";
+                       source: "*";
+                       action: STATE_SET "default" 0.0;
+                       target: "shuffle_btn";
+               }
+               program { name: "set_shuffle_icon_off";
+                       signal: "set_shuffle_off";
+                       source: "*";
+                       action: STATE_SET "off" 0.0;
+                       target: "shuffle_btn";
+               }
+
+               /* landscape / portrait */
+               program { name: "pgm_set_landscape_mode";
+                       signal: "sig_set_landscape_mode";
+                       source: "*";
+                       script {
+                               set_state(PART:"padding.left", "landscape", 0.0);
+                               set_state(PART:"padding.right", "landscape", 0.0);
+                               set_state(PART:"padding.bottom", "landscape", 0.0);
+                               set_state(PART:"padding.albumart.right", "landscape", 0.0);
+                               set_state(PART:"text_area", "landscape", 0.0);
+                               set_state(PART:"elm.text", "landscape", 0.0);
+                               set_state(PART:"padding_after_text", "landscape", 0.0);
+                               set_state(PART:"elm.text.2", "landscape", 0.0);
+                               set_state(PART:"button_area", "landscape", 0.0);
+                               set_state(PART:"repeat_btn_bg", "landscape", 0.0);
+                               set_state(PART:"shuffle_btn_bg", "landscape", 0.0);
+                               set_state(PART:"button_padding_1", "landscape", 0.0);
+                               set_state(PART:"button_padding_2", "landscape", 0.0);
+                       }
+               }
+               program { name: "pgm_set_portrait_mode";
+                       signal: "sig_set_portrait_mode";
+                       source: "*";
+                       script {
+                               set_state(PART:"padding.left", "default", 0.0);
+                               set_state(PART:"padding.right", "default", 0.0);
+                               set_state(PART:"padding.bottom", "default", 0.0);
+                               set_state(PART:"padding.albumart.right", "default", 0.0);
+                               set_state(PART:"text_area", "default", 0.0);
+                               set_state(PART:"elm.text", "default", 0.0);
+                               set_state(PART:"padding_after_text", "default", 0.0);
+                               set_state(PART:"elm.text.2", "default", 0.0);
+                               set_state(PART:"button_area", "default", 0.0);
+                               set_state(PART:"repeat_btn_bg", "default", 0.0);
+                               set_state(PART:"shuffle_btn_bg", "default", 0.0);
+                               set_state(PART:"button_padding_1", "default", 0.0);
+                               set_state(PART:"button_padding_2", "default", 0.0);
+                       }
+               }
+       }
+
+} // group
+} // collection
\ No newline at end of file
index 2b2cae7..c1abb5e 100755 (executable)
@@ -1,21 +1,4 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 
-
 #define NAVIFRAME_VIEW_TRANS_TIME 0.3
 
 //2 define custom style here..
 #define NAVIFRAME_NO_BUTTON_ICON_PADDING_INC 52
 #define NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 144
 
-#define MP_NAVIFRAME_BG_IMAGE "T02_title_bg.png"
-
+////////////////////////////////////////////////////////////////////////////////////////
+// NavigationBar_ex
+////////////////////////////////////////////////////////////////////////////////////////
 
-   group { name:"elm/naviframe/item/basic/music/default";
+group { name:"elm/naviframe/item/basic/music/default";
       alias:"elm/naviframe/item/1line/music/default";
       images {
           image: "00_winset_control_top_bg.png" COMP;
           image: "00_winset_control_top_arrow.png" COMP;
-                 image: MP_NAVIFRAME_BG_IMAGE COMP;
+          image: "T02_title_bg.png" COMP;
       }
       script {
          public oh_show = 0;     //optionheader show/hide
@@ -68,7 +52,7 @@
          }
          part { name: "title_bg";
             //type: RECT;
-                       type: IMAGE;
+            type: IMAGE;
             scale: 1;
             description { state: "default" 0.0;
                min: 1 NAVIFRAME_TITLE_H_INC;
@@ -77,7 +61,7 @@
                rel1 { relative: 0.0 0.0; to: "base"; }
                rel2 { relative: 1.0 0.0; to: "base"; }
                //color: NAVIFRAME_TITLE_BG_COLOR_INC;
-                          image.normal: MP_NAVIFRAME_BG_IMAGE;
+               image.normal: "T02_title_bg.png";
             }
             description { state: "hide" 0.0;
                inherit: "default" 0.0;
             action: SIGNAL_EMIT "elm,action,title,clicked" "";
          }
       }
-   }
\ No newline at end of file
+   }
+
+   group { name: "elm/naviframe/item/tabbar/music/default";
+      script {
+         public cbar_bg = 0;     //Controlbar BG Show call count
+      }
+      parts {
+         part { name: "base";
+            type: RECT;
+            mouse_events:  0;
+            description { state: "default" 0.0;
+               visible: 0;
+            }
+            description { state: "left" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 0.0;
+               rel2.relative: 0.0 1.0;
+            }
+            description { state: "right" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.0 0.0;
+               rel2.relative: 2.0 1.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 0.0;
+               rel1.to: "base";
+               rel2.relative: 1.0 0.0;
+               rel2.to_x: "base";
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               rel1 { to: "base"; }
+               rel2 { to: "base"; }
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+           type: RECT;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              min: 0 0;
+              fixed: 1 0;
+              align: 1.0 0.0;
+              rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+              rel2.to: "controlbar_bg";
+              visible: 0;
+           }
+           description { state: "visible" 0.0;
+              inherit: "default" 0.0;
+              min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+           }
+         }
+         part { name: "elm.swallow.prev_btn";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.5 0.5;
+               rel1.to: "elm.prev_btn_bg";
+               rel2.to: "elm.prev_btn_bg";
+            }
+         }
+         part { name: "controlbar";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               rel1.to: "controlbar_bg";
+               rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+            }
+         }
+      }
+      programs {
+         program { name: "content_new_pushed";
+            signal: "elm,state,new,pushed,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_pushed";
+            signal: "elm,state,cur,pushed,internal";
+            source: "";
+            action: STATE_SET "left" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "pushed_finished";
+         }
+         program { name: "content_prev_popped";
+            signal: "elm,state,prev,popped,internal";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "show_finished";
+         }
+         program { name: "content_cur_popped";
+            signal: "elm,state,cur,popped,internal";
+            source: "";
+            action: STATE_SET "right" 0.0;
+            target: "base";
+            transition: DECELERATE NAVIFRAME_VIEW_TRANS_TIME;
+            after: "popped_finished";
+         }
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,pushed,internal", "");
+            }
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            script {
+               set_state(PART:"base", "right", 0.0);
+               emit("elm,state,new,pushed,internal", "");
+            }
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "left", 0.0);
+               emit("elm,state,prev,popped,internal", "");
+            }
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            script {
+               set_state(PART:"base", "default", 0.0);
+               emit("elm,state,cur,popped,internal", "");
+            }
+         }
+         program { name: "visible";
+            signal: "elm,state,visible";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bg_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+
+   group { name: "elm/naviframe/item/tabbar/music/instant/default";
+      script {
+         public cbar_bg = 0;     //Controlbar BG Show call count
+      }
+      parts {
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            repeat_events: 0;
+            clip_to: "content_clip";
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 1.0 0.0;
+               rel2.to_y: "controlbar_bg";
+            }
+         }
+         part { name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1.to: "elm.swallow.content";
+               rel2.to: "elm.swallow.content";
+            }
+         }
+         part { name: "controlbar_bg";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               min: 0 0;
+               max: 999999 0;
+               fixed: 0 1;
+               align: 0.0 1.0;
+               visible: 0;
+               color: NAVIFRAME_CONTROLBAR_BG_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               min: 0 CONTROLBAR_SMALL_HEIGHT_INC;
+               max: 999999 CONTROLBAR_SMALL_HEIGHT_INC;
+               visible: 1;
+            }
+         }
+         part { name: "controlbar_clip";
+            type: RECT;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               rel1 { to: "controlbar_bg"; }
+               rel2 { to: "controlbar_bg"; }
+            }
+         }
+         part { name: "elm.prev_btn_bg";
+            type: RECT;
+            scale: 1;
+            clip_to: "controlbar_clip";
+            description { state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               align: 1.0 0.0;
+               rel1 { relative: 1.0 0.0; to: "controlbar_bg"; }
+               rel2.to: "controlbar_bg";
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: NAVIFRAME_TITLE_PREV_BTN_BG_SIZE_INC 0;
+            }
+         }
+        part { name: "elm.swallow.prev_btn";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              fixed: 1 1;
+              align: 0.5 0.5;
+              rel1.to: "elm.prev_btn_bg";
+              rel2.to: "elm.prev_btn_bg";
+           }
+        }
+        part { name: "controlbar";
+           type: SWALLOW;
+           scale: 1;
+           clip_to: "controlbar_clip";
+           description { state: "default" 0.0;
+              fixed: 1 1;
+              rel1.to: "controlbar_bg";
+              rel2 { relative: 0.0 1.0; to: "elm.prev_btn_bg"; }
+           }
+        }
+      }
+      programs {
+         program { name: "cur_pushed";
+            signal: "elm,state,cur,pushed";
+            source: "elm";
+            after: "pushed_finished";
+         }
+         program { name: "new_pushed";
+            signal: "elm,state,new,pushed";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "prev_popped";
+            signal: "elm,state,prev,popped";
+            source: "elm";
+            after: "show_finished";
+         }
+         program { name: "cur_popped";
+            signal: "elm,state,cur,popped";
+            source: "elm";
+            after: "popped_finished";
+         }
+         program { name: "prev_btn_show";
+            signal: "elm,state,prev_btn,show";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+               set_state(PART:"elm.prev_btn_bg", "visible", 0.0);
+            }
+         }
+         program { name: "prev_btn_hide";
+            signal: "elm,state,prev_btn,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+               set_state(PART:"elm.prev_btn_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_show";
+            signal: "elm,state,controlbar,show";
+            source: "elm";
+            action: STATE_SET "show" 0.0;
+            script {
+               emit("elm,state,controlbar_bg,show", "elm");
+            }
+         }
+         program { name: "controlbar_hide";
+            signal: "elm,state,controlbar,hide";
+            source: "elm";
+            script {
+               emit("elm,state,controlbar_bg,hide", "elm");
+            }
+         }
+         program { name: "controlbar_bg_show";
+            signal: "elm,state,controlbar_bg,show";
+            source: "elm";
+            script {
+               set_state(PART:"controlbar_bg", "show", 0.0);
+               set_int(cbar_bg, get_int(cbar_bg) + 1);
+            }
+         }
+         program { name: "controlbar_bgp_hide";
+            signal: "elm,state,controlbar_bg,hide";
+            source: "elm";
+            script {
+               set_int(cbar_bg, get_int(cbar_bg) - 1);
+               if (get_int(cbar_bg) <= 0)
+                 set_state(PART:"controlbar_bg", "default", 0.0);
+            }
+         }
+         program { name: "controlbar_open";
+            signal: "elm,state,controlbar,open";
+            source: "";
+            action: STATE_SET "show" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_close";
+            signal: "elm,state,controlbar,close";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "controlbar_bg";
+            transition: LINEAR 0.2;
+         }
+         program { name: "controlbar_instant_open";
+            signal: "elm,state,controlbar,instant_open";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,show", "elm");
+               emit("elm,state,controlbar,show", "elm");
+            }
+         }
+         program { name: "controlbar_instant_close";
+            signal: "elm,state,controlbar,instant_close";
+            source: "";
+            script {
+               emit("elm,state,prev_btn,hide", "elm");
+               emit("elm,state,controlbar,hide", "elm");
+            }
+         }
+         program { name: "show_finished";
+            action: SIGNAL_EMIT "elm,action,show,finished" "";
+         }
+         program { name: "pushed_finished";
+            action: SIGNAL_EMIT "elm,action,pushed,finished" "";
+         }
+         program { name: "popped_finished";
+            action: SIGNAL_EMIT "elm,action,popped,finished" "";
+         }
+         program {
+            name: "title_clicked";
+            signal: "mouse,clicked,1";
+            source: "click_event_area";
+            action: SIGNAL_EMIT "elm,action,title,clicked" "";
+         }
+      }
+   }
+
index b5848df..ed99f6c 100755 (executable)
@@ -1,20 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
 
 /*********** no_content ***********************/
 #define IMAGE_NO_CONTENT               "T02_nocomposers.png"
                }
        }
 
+
+       group {
+               images {
+                       image: IMAGE_NO_CONTENT COMP;
+               }
+
+               name: "no_content_landscape";
+               parts {
+                       part { name: "bg";
+                               mouse_events: 0;
+                               type: RECT;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "image";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       //min: 314 310;
+                                       //fixed: 1 1;
+                                       //rel1 { relative: 0.5 (230/570); to:bg;}
+                                       //rel2 { relative: 0.5 (230/570); to:bg;}
+                                       rel1 { relative: 483/1280 (100/570); to:bg;}
+                                       rel2 { relative: 1-(483/1280) (1-100/570); to:bg;}
+                                       image.normal: IMAGE_NO_CONTENT;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 483/1280 (400/470); to:bg;}
+                                       rel2 { relative: 1-(483/1280) (1-400/470); to:bg;}
+                                       image.normal: IMAGE_NO_CONTENT;
+                               }
+                       }
+
+                       part {
+                               name: "elm.text";
+                               type: TEXT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 1.0; to_y: "image"; offset: 0 20;}
+                                       rel2 { relative: 1.0 1.0; to_y: "image"; offset: 0 20;}
+                                       color: FONT_NO_CONTENT_COLOR;
+                                       min: 0 46;
+                                       text {
+                                               font: FONT_NO_CONTENT;
+                                               size: FONT_NO_CONTENT_SIZE;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+
+                       }
+               }
+       }
+
+       group {
+               images {
+                       image: IMAGE_NO_CONTENT COMP;
+               }
+
+               name: "square_no_content_landscape";
+               parts {
+                       part { name: "bg";
+                               mouse_events: 0;
+                               type: RECT;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "image";
+                               type: IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: 200/720 (100/570); to:bg;}
+                                       rel2 { relative: 1-(200/720) (1-100/570); to:bg;}
+                                       image.normal: IMAGE_NO_CONTENT;
+                               }
+                       }
+
+                       part {
+                               name: "elm.text";
+                               type: TEXT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 1.0; to_y: "image"; offset: 0 20;}
+                                       rel2 { relative: 1.0 1.0; to_y: "image"; offset: 0 20;}
+                                       color: FONT_NO_CONTENT_COLOR;
+                                       min: 0 46;
+                                       text {
+                                               font: FONT_NO_CONTENT;
+                                               size: FONT_NO_CONTENT_SIZE;
+                                               align: 0.5 0.5;
+                                       }
+                               }
+
+                       }
+               }
+       }
\ No newline at end of file
index bf87e8c..40d102f 100755 (executable)
@@ -1,20 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
 
 #define CONTROL_PAD_T 17
 #define CONTROL_PAD_D 18
@@ -22,6 +5,11 @@
 #define CONTROL_H (CONTROL_PAD_T+CONTROL_PAD_D+CONTROL_BUTTON)
 
 group { name : "music/playing/main/control";
+
+       images {
+               image: "player/12_music_player_control_bg.png" COMP;
+       }
+
        parts {
                part { name: "bg";
                        type : SWALLOW;
@@ -63,7 +51,6 @@ group { name : "music/playing/main/control";
                        scale: 1;
                        description { state: "default" 0.0;
                                visible: 1;
-
                                align: 0 0;
                                rel1 { relative: 0.0 (CONTROL_PAD_T+CONTROL_BUTTON)/CONTROL_H; to, "bg";}
                                rel2 { relative: 1.0 1.0; to, "bg";}
@@ -72,6 +59,69 @@ group { name : "music/playing/main/control";
                }
        }
 }
+#define LS_CONTROL_PAD_T 17
+#define LS_CONTROL_PAD_D 18
+#define LS_CONTROL_BUTTON 50
+#define LS_CONTROL_H (LS_CONTROL_PAD_T+LS_CONTROL_PAD_D+LS_CONTROL_BUTTON)
+group { name : "music/playing/main/control_ls";
+       images {
+               image: "player/12_music_player_control_bg_h.png" COMP;
+       }
+
+       parts {
+               part { name: "bg";
+                       type : SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 LS_CONTROL_H;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 35 35 35 0;
+                       }
+               }
+
+               part { name: "pad.top";
+                       type : RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 LS_CONTROL_PAD_T;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; to_y, "bg";}
+                               rel2 { relative: 1.0 LS_CONTROL_PAD_T/LS_CONTROL_H; to, "bg";}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "buttons";
+                       type : SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 LS_CONTROL_PAD_T/LS_CONTROL_H; to, "bg"; }
+                               rel2 { relative: 1.0 (LS_CONTROL_PAD_T+LS_CONTROL_BUTTON)/LS_CONTROL_H; to, "bg"; }
+                       }
+               }
+
+               part { name: "pad.down";
+                       type : RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 (LS_CONTROL_PAD_T+LS_CONTROL_BUTTON)/LS_CONTROL_H; to, "bg";}
+                               rel2 { relative: 1.0 1.0; to, "bg";}
+                               color: 0 0 0 0;
+                       }
+               }
+
+       }
+}
 
 #define MAIN_W 480
 
@@ -88,14 +138,14 @@ group { name : "music/playing/main/control";
 #define CONTROL_BUTTON_FOWARD_X (CONTROL_BUTTON_PLAY_X+CONTROL_BUTTON_PLAY_W+CONTROL_BUTTON_PAD)
 #define CONTROL_BUTTON_INFO_X (CONTROL_BUTTON_FOWARD_X+CONTROL_BUTTON_FOWARD_W+CONTROL_BUTTON_PAD)
 
-#define REW_BTN                        "T02_Play_btn_previous.png"
-#define REW_BTN_PRESS  "T02_Play_btn_previou_press.png"
-#define PLAY_BTN               "T02_Play_btn__play.png"
-#define PLAY_BTN_PRESS         "T02_Play_btn__play_press.png"
-#define PAUSE_BTN              "T02_Play_btn_pause.png"
-#define PAUSE_BTN_PRESS        "T02_Play_btn_pause_press.png"
-#define FF_BTN                         "T02_Play_btn_next.png"
-#define FF_BTN_PRESS   "T02_Play_btn_next_press.png"
+#define REW_BTN                        "player/T02_Play_btn_previous.png"
+#define REW_BTN_PRESS  "player/T02_Play_btn_previou_press.png"
+#define PLAY_BTN               "player/T02_Play_btn__play.png"
+#define PLAY_BTN_PRESS         "player/T02_Play_btn__play_press.png"
+#define PAUSE_BTN              "player/T02_Play_btn_pause.png"
+#define PAUSE_BTN_PRESS        "player/T02_Play_btn_pause_press.png"
+#define FF_BTN                         "player/T02_Play_btn_next.png"
+#define FF_BTN_PRESS   "player/T02_Play_btn_next_press.png"
 #define VOLUME_BTN     "T02_volume.png"
 #define BACK_BTN               "T02_btn_Back.png"
 #define MUTE_BTN               "music_icon_mute.png"
index aa35411..50658b4 100755 (executable)
@@ -1,21 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
 #define MP_NOW_PLAYING
 
 #define MP_NOW_PLAYING_W               720.
@@ -73,6 +55,7 @@ group {
 
                part { name: "thumb_image";
                        type : SWALLOW;
+                       //type : RECT;
                        scale: 1;
                        mouse_events: 0;
                        description { state: "default" 0.0;
@@ -81,6 +64,7 @@ group {
                                align: 0 0;
                                rel1 { relative: MP_NOW_PLAYING_THUMB_SX/MP_NOW_PLAYING_W MP_NOW_PLAYING_THUMB_SY/MP_NOW_PLAYING_H; }
                                rel2 { relative: MP_NOW_PLAYING_THUMB_EX/MP_NOW_PLAYING_W MP_NOW_PLAYING_THUMB_EY/MP_NOW_PLAYING_H; }
+                               //color: 0 0 0 255;
                        }
                }
 
@@ -177,6 +161,7 @@ group {
                }
 
                part { name: "playing_icon";
+                       //type : SWALLOW;
                        type : IMAGE;
                        scale: 1;
                        mouse_events: 1;
index 53ec6f1..741d4fc 100755 (executable)
@@ -1,29 +1,17 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
 /* font name*/
 #define FONT_TITLE_NAME "system_title" //"system_title"
 #define FONT_CONTENT_NAME "system_content"     //"system_content"
 #define FONT_SUBCONTENT_NAME "system_subcontent"       //"system_subcontent"
 
-group 
+group
 {
        name : "music/playing/play_ctrl";
+
+       images {
+               image :  "player/T02_option_favorite_off.png" COMP;
+               image :  "player/T02_option_favorite_on.png" COMP;
+       }
+
        parts {
                part {
                        name: "player_info_bg";
@@ -37,7 +25,7 @@ group
                                color: 35 35 35 0;
                        }
                }
-               
+
                part {
                        name: "track_title";
                        type: TEXT;
@@ -160,7 +148,7 @@ group
                                inherit: "default" 0.0;
                                visible: 1;
                        }
-               }       
+               }
        }
 
        programs {
@@ -177,9 +165,9 @@ group
                        source: "player_progress";
                        action:   STATE_SET "default" 0.0;
                        target: "player_progress";
-               }               
+               }
        }
-       
+
 }
 
 #define INFO_BASE_SC_H 620
@@ -206,9 +194,10 @@ group { name : "music/playing/info";
                                color: 0 0 0 0;
                        }
                }
-               
+
                part { name: "contents";
                        type : SWALLOW;
+//                     type : RECT;
                        mouse_events: 1;
                        scale: 1;
                        description { state: "default" 0.0;
@@ -218,757 +207,8 @@ group { name : "music/playing/info";
                                align: 0 0;
                                rel1 { relative: 0.0 0.0; to_y, "bg"; }
                                rel2 { relative: 1.0 0.0; to_y, "bg"; }
+//                             color: 100 100 100 255;
                        }
                }
        }
 }
-
-group {
-       name: "music/playing/info/contents";
-       images {
-               image:  "12_music_player_bg_01.PNG" COMP;
-       }
-
-       styles
-       {
-               style { 
-                       name: "info_contents";
-                       base: "font=system_content font_size=28 align=left color=#ffffff wrap=word";
-                       tag:  "br" "\n";
-                       tag:  "tab" "\t";
-                       tag:  "em" "+ font=system_content:style=Oblique";
-                       tag:  "b" "+ font=system_content:style=Bold"; 
-                       tag:  "link" "+ color=#800 underline=on underline_color=#8008";
-                       tag:  "hilight" "+ font=system_content:style=Bold";
-               }
-       }
-               
-       parts {
-               part { name: "bg";
-                       type : IMAGE;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_BASE_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { relative: 0.0 0.0; }
-                               rel2 { relative: 1.0 0.0; }
-                               image { normal: "12_music_player_bg_01.PNG"; }
-                       }
-               }
-               part {
-                       name: "pad.top";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 30;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { relative: 0.0 0.0; to_y, "bg"; }
-                               rel2 { relative: 1.0 0.0; to_y, "bg"; }
-                               color: 0 0 0 0;                         
-                       }
-               }
-               part {
-                       name: "pad.bottom";
-                       type: RECT;                     
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 30;
-                               fixed: 0 1;
-                               align: 1 1;
-                               rel1 { relative: 0.0 1.0; to_y, "bg"; }
-                               rel2 { relative: 1.0 1.0;to_y, "bg"; }
-                               color: 0 0 0 0;
-                       }
-               }                       
-               part { name: "pad.1";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: 20 0;
-                               fixed: 1 0;
-                               align: 0 0;
-                               rel1 { relative: 0.0 0.0; to_x, "bg";}
-                               rel2 { relative: 0.0 1.0; to_x, "bg";}
-                               color: 0 0 0 0;
-                       }
-               }
-               part { name: "pad.2";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: 20 0;
-                               fixed: 1 0;
-                               align: 1 1;
-                               rel1 { relative: 1.0 0.0; to_x, "bg";}
-                               rel2 { relative: 1.0 1.0; to_x, "bg";}
-                               color: 0 0 0 0;
-                       }
-               }
-               part {
-                       name: "albumart";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.top";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.top";
-                                       relative: 0.0 1.0;
-                               }
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-               }               
-               part { name: "pad.albumart";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "albumart";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "albumart";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-               part {
-                       name: "artist";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.albumart";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.albumart";
-                                       relative: 0.0 1.0;
-                               }       
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-               }
-               part { name: "pad.artist";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "artist";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "artist";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }
-               part {
-                       name: "title";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.artist";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.artist";
-                                       relative: 0.0 1.0;
-                               }               
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-               }
-
-               part { name: "pad.title";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "title";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "title";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-               part {
-                       name: "album";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.title";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.title";
-                                       relative: 0.0 1.0;
-                               }               
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-               }
-
-               part { name: "pad.album";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "album";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "album";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-               part {
-                       name: "tracklength";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.album";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.album";
-                                       relative: 0.0 1.0;
-                               }               
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-               }
-
-               part { name: "pad.tracklength";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "tracklength";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "tracklength";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-               part {
-                       name: "genres";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.tracklength";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.tracklength";
-                                       relative: 0.0 1.0;
-                               }       
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-               }
-
-               part { name: "pad.genres";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "genres";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "genres";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-               part {
-                       name: "author";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.genres";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.genres";
-                                       relative: 0.0 1.0;
-                               }       
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-               }
-
-               part { name: "pad.author";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "author";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "author";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-               part {
-                       name: "desc";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.author";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.author";
-                                       relative: 0.0 1.0;
-                               }       
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-               }
-               part { name: "pad.desc";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "desc";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "desc";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-               part {
-                       name: "forwarding";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.desc";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.desc";
-                                       relative: 0.0 1.0;
-                               }       
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-                       description {
-                               state: "invisible" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 0;
-                       }                       
-               }
-               part { name: "pad.forwarding";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "forwarding";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "forwarding";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-
-               part {
-                       name: "available";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.forwarding";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.forwarding";
-                                       relative: 0.0 1.0;
-                               }               
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-                       description {
-                               state: "invisible" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 0;
-                       }                       
-               }
-               part { name: "pad.available";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "available";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "available";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-               part {
-                       name: "type";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.available";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.available";
-                                       relative: 0.0 1.0;
-                               }       
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-                       description {
-                               state: "invisible" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 0;
-                       }                       
-               }
-
-               part { name: "pad.type";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               visible: 1;
-                               min: 0 INFO_ITEM_GAP_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "type";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "type";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-
-               part {
-                       name: "validity";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       mouse_events: 0;
-                       description { state: "default" 0.0;
-                               min: 0 INFO_ITEM_TEXT_H;
-                               fixed: 0 1;
-                               align: 0 0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "pad.type";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "pad.type";
-                                       relative: 0.0 1.0;
-                               }       
-                               text {
-                                               style: "info_contents";
-                                               min: 0 1;
-                               }
-                       }
-                       description {
-                               state: "invisible" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 0;
-                       }                       
-               }       
-               part { name: "pad.validity";
-                       type : RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               rel1 { 
-                                       to_x, "pad.1";
-                                       to_y, "validity";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 { 
-                                       to_x, "pad.2";
-                                       to_y, "validity";
-                                       relative: 0.0 1.0;
-                               }
-                               color: 0 0 0 0;
-                       }
-               }               
-
-       }
-
-       programs {
-               program { 
-                       name: "desc_visible" ;
-                       signal: "desc_visible"; 
-                       source: "desc"; 
-                       action:   STATE_SET "default" 0.0; 
-                       target: "desc";
-               }
-
-               program { 
-                       name: "desc_invisible" ;
-                       signal: "desc_invisible"; 
-                       source: "desc"; 
-                       action:   STATE_SET "invisible" 0.0; 
-                       target: "desc";
-               }
-
-               program { 
-                       name: "forwarding_visible" ;
-                       signal: "forwarding_visible"; 
-                       source: "forwarding"; 
-                       action:   STATE_SET "default" 0.0; 
-                       target: "forwarding";
-               }
-
-               program { 
-                       name: "forwarding_invisible" ;
-                       signal: "forwarding_invisible"; 
-                       source: "desc"; 
-                       action:   STATE_SET "invisible" 0.0; 
-                       target: "forwarding";
-               }
-
-               program { 
-                       name: "available_visible" ;
-                       signal: "available_visible"; 
-                       source: "available"; 
-                       action:   STATE_SET "default" 0.0; 
-                       target: "available";
-               }
-
-               program { 
-                       name: "available_invisible" ;
-                       signal: "available_invisible"; 
-                       source: "available"; 
-                       action:   STATE_SET "invisible" 0.0; 
-                       target: "available";
-               }
-
-               program { 
-                       name: "type_visible" ;
-                       signal: "type_visible"; 
-                       source: "type"; 
-                       action:   STATE_SET "default" 0.0; 
-                       target: "type";
-               }
-
-               program { 
-                       name: "type_invisible" ;
-                       signal: "type_invisible"; 
-                       source: "type"; 
-                       action:   STATE_SET "invisible" 0.0; 
-                       target: "type";
-               }
-
-               program { 
-                       name: "validity_visible" ;
-                       signal: "validity_visible"; 
-                       source: "validity"; 
-                       action:   STATE_SET "default" 0.0; 
-                       target: "validity";
-               }
-
-               program { 
-                       name: "validity_invisible" ;
-                       signal: "validity_invisible"; 
-                       source: "validity"; 
-                       action:   STATE_SET "invisible" 0.0; 
-                       target: "validity";
-               }
-       }
-}
-
-
index d87850b..0a75940 100755 (executable)
@@ -1,25 +1,9 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
 group {
        name: "mp_play_menu";
 
        images {
+               image:  "T02_option_SA.png" COMP;
+               image:  "T02_option_SA_off.png" COMP;
                image:  "T02_option_shuffle_on.png" COMP;  
                image:  "T02_option_shuffle_off.png" COMP;  
                image:  "T02_option_rep_1.png" COMP; 
@@ -35,14 +19,61 @@ group {
                part {
                        name: "menu_box_bg";
                        type: IMAGE;
+                       //type: RECT;                   
                        mouse_events: 0;
                        description {
                                state: "default" 0.0;
                                rel1 { relative: 0.0 0.0; }
                                rel2 { relative: 1.0 1.0; }
                                image { normal: "T02_option_bg.png"; }
+                               //color : 255 255 255 127;
+                               //color : 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "srs";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               //image { normal: "T02_option_SA.png"; }
+                               rel1 { relative: MENU_SRS_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; }
+                               rel2 { relative: MENU_SRS_EX MENU_EY; offset: -1 0; to: "menu_box_bg"; }
+                       }
+                       description {
+                               state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               //image { normal: "T02_option_SA.png"; }
+                       }
+                       description {
+                               state: "invisible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "srs_dim";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       description {
+                           state: "default" 0.0;
+                           //image { normal: "T02_option_SA_off.png"; }
+                            rel1 { relative: MENU_SRS_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; }
+                     rel2 { relative: MENU_SRS_EX MENU_EY; offset: -1 0; to: "menu_box_bg"; }
+                       }
+                       description {
+                               state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               //image { normal: "T02_option_SA_off.png"; }
+                       }
+                       description {
+                               state: "invisible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
                        }
                }
+               
                part {
                        name: "shuffle";
                        type: IMAGE;
@@ -114,6 +145,11 @@ group {
                                rel1 { relative: MENU_REP_ALL_SX MENU_SY; offset: 0 0; to: "menu_box_bg"; }
                                rel2 { relative: MENU_REP_ALL_EX MENU_EY; offset: 0 0; to: "menu_box_bg"; }
                        }
+                       /*description {
+                               state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               image { normal: "34_menu_rep_non_press.png"; }
+                       }*/
                        description {
                                state: "invisible" 0.0;
                                inherit: "default" 0.0;
@@ -162,8 +198,101 @@ group {
        }
 
        programs {
+               program {
+                       name: "srs_down";
+                       source: "srs";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "srs";
+               }
+
+               program {
+                       name: "srs_up";
+                       source: "srs";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "srs";
+               }
+
+               program {
+                       name: "srs_clicked";
+                       source: "srs";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "srs_clicked" 0.0;
+               }
+
+               program { 
+                       name: "srs_visible" ;
+                       signal: "srs_visible"; 
+                       source: "srs"; 
+                       action:   STATE_SET "default" 0.0; 
+                       target: "srs";
+               }
+
+               program { 
+                       name: "srs_invisible" ;
+                       signal: "srs_invisible"; 
+                       source: "srs"; 
+                       action:   STATE_SET "invisible" 0.0; 
+                       target: "srs";
+               }
                
                program {
+                       name: "srs_dim_down";
+                       source: "srs_dim";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "srs_dim";
+               }
+
+               program {
+                       name: "srs_dim_up";
+                       source: "srs_dim";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "srs_dim";
+               }
+
+               program {
+                       name: "srs_dim_clicked";
+                       source: "srs_dim";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "srs_dim_clicked" 0.0;
+               }
+
+               program { 
+                       name: "srs_dim_visible" ;
+                       signal: "srs_dim_visible"; 
+                       source: "srs_dim"; 
+                       action:   STATE_SET "default" 0.0; 
+                       target: "srs_dim";
+               }
+
+               program { 
+                       name: "srs_dim_invisible" ;
+                       signal: "srs_dim_invisible"; 
+                       source: "srs_dim"; 
+                       action:   STATE_SET "invisible" 0.0; 
+                       target: "srs_dim";
+               }
+/*
+               program {
+                       name: "shuffle_down";
+                       source: "shuffle";
+                       signal: "mouse,down,1";
+                       action: STATE_SET "clicked" 0.0;
+                       target: "shuffle";
+               }
+
+               program {
+                       name: "shuffle_up";
+                       source: "shuffle";
+                       signal: "mouse,up,1";
+                       action: STATE_SET "default" 0.0;
+                       target: "shuffle";
+               }
+*/
+               program {
                        name: "shuffle_clicked";
                        source: "shuffle";
                        signal: "mouse,clicked,1";
diff --git a/layout/mp-play-mini-app.edc b/layout/mp-play-mini-app.edc
new file mode 100755 (executable)
index 0000000..b3d83d5
--- /dev/null
@@ -0,0 +1,369 @@
+
+#define MINI_APP_W             250
+#define MINI_APP_H             250
+#define MINI_ALBUM_ART_W 246
+#define MINI_ALBUM_ART_H 246
+#define CONTROL_BTN_W  54
+#define CONTROL_BTN_H  54
+#define CLOSE_BTN_W            50
+#define CLOSE_BTN_H            50
+#define IMG_CLOSE_BTN  "mini_app/T01_btn_apps_close.png"
+#define IMG_REW_BTN            "39_mini_controller_icon_rew.png"
+#define IMG_FF_BTN             "39_mini_controller_icon_ff.png"
+#define IMG_PLAY_BTN   "39_mini_controller_icon_play.png"
+#define IMG_PAUSE_BTN  "39_mini_controller_icon_pause.png"
+
+group { name: "mini-app";
+       images {
+               image: IMG_CLOSE_BTN COMP;
+               image: IMG_REW_BTN COMP;
+               image: IMG_FF_BTN COMP;
+               image: IMG_PLAY_BTN COMP;
+               image: IMG_PAUSE_BTN COMP;
+       }
+
+       parts {
+               part { name: "bottom_bg";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min: MINI_APP_W MINI_APP_H;
+                               color: 51 51 51 255;
+                       }
+               }
+               
+               part { name: "padding.inner.top_left";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "bottom_bg"; }
+                               rel2 { relative: 0 0; to: "bottom_bg"; }
+                               min: 2 2;
+                               max: 2 2;
+                               fixed: 1 1;
+                               align: 0 0;
+                               visible: 0;
+                       }
+               }
+               
+               part { name: "padding.inner.bottom_right";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 1; to: "bottom_bg"; }
+                               rel2 { relative: 1 1; to: "bottom_bg"; }
+                               min: 2 2;
+                               max: 2 2;
+                               fixed: 1 1;
+                               align: 1 1;
+                               visible: 0;
+                       }
+               }
+               
+               part { name: "inner_bg";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 1; to: "padding.inner.top_left";}
+                               rel2 { relative: 0 0; to: "padding.inner.bottom_right";};
+                               color: 242 242 242 255;
+                               align: 0 0;
+                       }
+               }
+               
+               part { name: "padding.bg.top_left";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "inner_bg"; }
+                               rel2 { relative: 0 0; to: "inner_bg"; }
+                               min: 2 2;
+                               max: 2 2;
+                               fixed: 1 1;
+                               align: 0 0;
+                               visible: 0;
+                       }
+               }
+               
+               part { name: "padding.bg.bottom_right";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 1; to: "inner_bg"; }
+                               rel2 { relative: 1 1; to: "inner_bg"; }
+                               min: 2 2;
+                               max: 2 2;
+                               fixed: 1 1;
+                               align: 1 1;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 1; to: "padding.bg.top_left";}
+                               rel2 { relative: 0 0; to: "padding.bg.bottom_right";}
+                               visible: 0;
+                       }
+               }
+
+               part { name: "albumart";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "bg"; }
+                               rel2 { relative: 1 1; to: "bg"; }
+                               min: MINI_ALBUM_ART_W MINI_ALBUM_ART_H;
+                               fixed: 1 1;
+                               align: 0 0;
+                       }
+               }
+               
+               part { name: "padding.text_area.top_left";
+                       type: RECT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0; to: "albumart"; }
+                               rel2 { relative: 0 0; to: "albumart"; }
+                               min: 5 5;
+                               fixed: 1 1;
+                               align: 0 0;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "text_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 1; to: "padding.text_area.top_left"; }
+                               rel2 { relative: 0 1; to_x: "close_btn"; to_y: "padding.text_area.top_left"; }
+                               min: 0 45;
+                               fixed: 0 1;
+                               align: 0 0;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "text.title";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       effect: SOFT_SHADOW BOTTOM_RIGHT;
+                       description { state: "default" 0.0;
+                               rel1.to: "text_area";
+                               rel2 { relative: 1 0; to: "text_area"; }
+                               min: 0 25;
+                               fixed: 0 1;
+                               align: 0 0;
+                               text {
+                                       font: "Helvetica Neue";
+                                       style: "Medium";
+                                       size: 25;
+                                       align: 0 0.5;
+                               }
+                               color: 255 255 255 255;
+                       }
+               }
+
+               part { name: "text.artist";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       effect: SOFT_SHADOW BOTTOM_RIGHT;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 1; to: "text.title"; }
+                               rel2 { relative: 1 1; to: "text_area"; }
+                               min: 0 20;
+                               fixed: 0 1;
+                               align: 0 0;
+                               text {
+                                       font: "Helvetica Neue";
+                                       style: "Roman";
+                                       size: 20;
+                                       align: 0 0.5;
+                               }
+                               color: 255 255 255 255;
+                       }
+               }
+
+               part { name: "event_box";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "albumart";
+                               rel2 { relative: 1 0; to: "control_area"; }
+                               color: 0 0 0 0;
+                       }
+               }
+               
+               part { name: "control_area";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 1; to: "bg"; }
+                               rel2.to: "bg";
+                               min: 0 70;
+                               fixed: 0 1;
+                               align: 0 1;
+                               color: 0 0 0 100;
+                       }
+               }
+
+               part { name: "rew_btn_bg";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0 0.5; to: "control_area"; }
+                               rel2 { relative: 0 0.5; to: "control_area"; }
+                               min: CONTROL_BTN_W CONTROL_BTN_H;
+                               fixed: 1 1;
+                               align: 0 0.5;
+                               image.normal: IMG_REW_BTN;
+                       }
+               }
+               
+               part { name: "rew_btn";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "rew_btn_bg";
+                               rel2.to: "rew_btn_bg";
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "play_pause_btn_bg";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.5 0.5; to: "control_area"; }
+                               rel2 { relative: 0.5 0.5; to: "control_area"; }
+                               min: CONTROL_BTN_W CONTROL_BTN_H;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                               image.normal: IMG_PAUSE_BTN;
+                       }
+                       description { state: "paused" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: IMG_PLAY_BTN;
+                       }
+               }
+               
+               part { name: "play_pause_btn";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "play_pause_btn_bg";
+                               rel2.to: "play_pause_btn_bg";
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "ff_btn_bg";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0.5; to: "control_area"; }
+                               rel2 { relative: 1 0.5; to: "control_area"; }
+                               min: CONTROL_BTN_W CONTROL_BTN_H;
+                               fixed: 1 1;
+                               align: 1 0.5;
+                               image.normal: IMG_FF_BTN;
+                       }
+               }
+               
+               part { name: "ff_btn";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "ff_btn_bg";
+                               rel2.to: "ff_btn_bg";
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part { name: "close_btn";
+                       type: IMAGE;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 1 0; to: "bg"; }
+                               rel2 { relative: 1 0; to: "bg"; }
+                               image.normal: IMG_CLOSE_BTN;
+                               min: CLOSE_BTN_W CLOSE_BTN_H;
+                               fixed: 1 1;
+                               align: 1 0;
+                       }
+               }
+       }
+
+       programs {
+               program { name: "pgm_exit_btn_clicked";
+                       signal: "mouse,clicked,1";
+                       source: "close_btn";
+                       action: SIGNAL_EMIT "sig_exit_btn_clicked" "edje";
+               }
+               
+               program { name: "pgm_event_box_click";
+                       signal: "mouse,clicked,1";
+                       source: "event_box";
+                       action: SIGNAL_EMIT "sig_event_box_clicked" "edje";
+               }
+               
+               program { name: "pgm_rew_down";
+                       signal: "mouse,down,1";
+                       source: "rew_btn";
+                       action: SIGNAL_EMIT "sig_rew_btn_down" "rew_btn";
+               }
+               
+               program { name: "pgm_rew_up";
+                       signal: "mouse,up,1";
+                       source: "rew_btn";
+                       action: SIGNAL_EMIT "sig_rew_btn_up" "rew_btn";
+               }
+               
+               program { name: "pgm_play_pause_clicked";
+                       signal: "mouse,down,1";
+                       source: "play_pause_btn";
+                       action: SIGNAL_EMIT "sig_play_pause_btn_clicked" "play_pause_btn";
+               }
+               
+               program { name: "pgm_ff_down";
+                       signal: "mouse,down,1";
+                       source: "ff_btn";
+                       action: SIGNAL_EMIT "sig_ff_btn_down" "ff_btn";
+               }
+               
+               program { name: "pgm_ff_up";
+                       signal: "mouse,up,1";
+                       source: "ff_btn";
+                       action: SIGNAL_EMIT "sig_ff_btn_up" "ff_btn";
+               }
+               
+               program { name: "set_pause_icon";
+                  signal: "set_pause";
+                  source: "*";
+                  action: STATE_SET "paused" 0.0;
+                  target: "play_pause_btn_bg";
+               }
+               
+               program { name: "set_play_icon";
+                  signal: "set_play";
+                  source: "*";
+                  action: STATE_SET "default" 0.0;
+                  target: "play_pause_btn_bg";
+               }
+       }
+}
\ No newline at end of file
index 527bb4f..6c2f4c5 100755 (executable)
@@ -1,21 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
 #define PROGRESS_PAD_TOP_1     21
 #define PROGRESS_PAD_TOP_2     6
 #define PROGRESS_PAD_BOTTOM    26
@@ -23,6 +5,7 @@
 
 
 #define PROGRESS_PAD_CENTER    14
+//#define PROGRESS_BOX_H (PROGRESS_PAD_TOP_1+PROGRESS_PAD_TOP_2+PROGRESS_PAD_CENTER+PROGRESS_PAD_BOTTOM)
 
 #define PROGRESS_BAR_PAD_TOP     32
 #define PROGRESS_BAR_H           16
@@ -50,6 +33,7 @@
 #define PROGRESS_TIME_TOTAL_SX 0.5*PROGRESS_BAR_EX
 #define PROGRESS_TIME_TOTAL_EX PROGRESS_BAR_EX
 
+
 group {
        name: "music/playing/progress_box";
        min: MAIN_W PROGRESS_BOX_H;
@@ -240,9 +224,9 @@ group {
 group {
        name: "music/playing/progress_box/progress_bar";
        images {
-               image:  "T02_player_progress_bg.png" COMP;
-               image:  "T02_player_progress_bar.png" COMP;
-               image:  "T02_player_progress_point.png" COMP;
+               image:  "progress_bar/T02_player_progress_bg.png" COMP;
+               image:  "progress_bar/T02_player_progress_bar.png" COMP;
+               image:  "progress_bar/T02_player_progress_point.png" COMP;
        }
 
        parts {
@@ -265,10 +249,14 @@ group {
                        mouse_events: 0;
                        description { state: "default" 0.0;
                                visible: 1;
+                               //min: 16 10;
+                                //fixed: 1 1;
                                rel1 { relative: 0.0 PROGRESS_BAR_PAD_TOP/(PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_PAD_TIME+PROGRESS_BAR_H); to, "bg"; }
                                 rel2 { relative: 1.0 (PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_H)/(PROGRESS_BAR_PAD_TOP+PROGRESS_BAR_PAD_TIME+PROGRESS_BAR_H); to, "bg"; }
                                image {
-                                       normal : "T02_player_progress_bg.png";
+                                       normal : "progress_bar/T02_player_progress_bg.png";
+                                       //border: 7 7 0 0;
+                                       //border_scale: 1;
                                }
                        }
                }
@@ -283,10 +271,15 @@ group {
                                min: 10 10;
                                fixed: 1 1;
                                image {
-                                       normal: "T02_player_progress_bar.png";
+                                       normal: "progress_bar/T02_player_progress_bar.png";
+                                       //border: 7 7 0 0;
+                                       //border_scale: 1;
                                }
                                rel1 { relative: 0.0 0.0; to: "progress_bg_img"; }
+                               /* modify by rocket.he for fix CQ: H0100130945  begin */
+                               /* rel2 { relative: 1.0 1.0; to_x: "progressbar_control"; to_y: "progress_bg_img";offset: -5 0;} */
                                rel2 { relative: 1.0 1.0; to_x: "progressbar_control"; to_y: "progress_bg_img";}
+                               /* modify by rocket.he for fix CQ: H0100130945  end */
                        }
                }
                part {
@@ -301,7 +294,7 @@ group {
                                align: 0 0;
                                rel1 { relative : 0.5 0.0; to:"progress_bg_img";}
                                rel2 { relative : 0.5 1.0; to:"progress_bg_img";}
-                               image.normal : "T02_player_progress_point.png";
+                               image.normal : "progress_bar/T02_player_progress_point.png";
                        }
                        dragable {
                                confine: "bg";
@@ -311,4 +304,3 @@ group {
                }
        }
 }
-
diff --git a/layout/mp-play-vew-landscape.edc b/layout/mp-play-vew-landscape.edc
new file mode 100755 (executable)
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
index 89f5583..13e1f60 100755 (executable)
@@ -1,25 +1,7 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
 /* font name*/
-#define FONT_TITLE_NAME "system_title"
-#define FONT_CONTENT_NAME "system_content"
-#define FONT_SUBCONTENT_NAME "system_subcontent"
+#define FONT_TITLE_NAME "system_title" //"system_title"
+#define FONT_CONTENT_NAME "system_content"     //"system_content"
+#define FONT_SUBCONTENT_NAME "system_subcontent"       //"system_subcontent"
 #define ALBUMART_IMAGE_SHADOW_RGBA 0 0 0 0
 
 
@@ -51,6 +33,7 @@
 #define PLAYVIEW_CONTROLBAR_H 129
 
 #define PLAYVIEW_MENU_H 96
+#define PLAYVIEW_LYRIC_H (PLAYVIEW_ALBUM_H-PLAYVIEW_MENU_H)
 #define PLAYVIEW_REFLECTION_H 244
 #define PLAYVIEW_TOP_LINE_1_SX (0.5*(HD_PLAYVIEW_W-PLAYVIEW_TOP_LINE_W))/HD_PLAYVIEW_W
 #define PLAYVIEW_TOP_LINE_1_EX (0.5*(HD_PLAYVIEW_W+PLAYVIEW_TOP_LINE_W))/HD_PLAYVIEW_W
 #define PLAYVIEW_ALBUM_EX 1.0
 #define PLAYVIEW_ALBUM_SY PLAYVIEW_OPTION_EY
 #define PLAYVIEW_ALBUM_EY (PLAYVIEW_ALBUM_SY+PLAYVIEW_ALBUM_H/HD_PLAYVIEW_H)
-
+#define PLAYVIEW_LYRIC_SX 0.0
+#define PLAYVIEW_LYRIC_EX 1.0
+#define PLAYVIEW_LYRIC_SY PLAYVIEW_OPTION_EY
+#define PLAYVIEW_LYRIC_EY (PLAYVIEW_LYRIC_SY+PLAYVIEW_LYRIC_H/HD_PLAYVIEW_H)
 #define PLAYVIEW_MENU_SX 0.0
 #define PLAYVIEW_MENU_EX 1.0
-#define PLAYVIEW_MENU_SY (PLAYVIEW_OPTION_EY+(PLAYVIEW_ALBUM_H-PLAYVIEW_MENU_H)/HD_PLAYVIEW_H)
+#define PLAYVIEW_MENU_SY PLAYVIEW_LYRIC_EY
 #define PLAYVIEW_MENU_EY (PLAYVIEW_MENU_SY+PLAYVIEW_MENU_H/HD_PLAYVIEW_H)
 #define PLAYVIEW_REFLECTION_SX 0.0
 #define PLAYVIEW_REFLECTION_EX 1.0
 #define OPTION_H PLAYVIEW_OPTION_H
 #define OPTION_W HD_PLAYVIEW_W
 #define OPTION_BUTTON_H 70
+
+#ifdef MP_FEATURE_INNER_SETTINGS
+#define OPTION_BUTTON_W 160
+#define OPTION_BUTTON_PAD_LEFT 13
+#else
 #define OPTION_BUTTON_W 220
-#define OPTION_BUTTON_PAD_TOP 4
 #define OPTION_BUTTON_PAD_LEFT 12
+#endif
+
+#define OPTION_BUTTON_PAD_TOP 4
 #define OPTION_BUTTON_PAD_BUTTON 18
 #define OPTION_SY OPTION_BUTTON_PAD_TOP/OPTION_H
 #define OPTION_EY (OPTION_BUTTON_PAD_TOP+OPTION_BUTTON_H)/OPTION_H
 #define OPTION_2_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*2+OPTION_BUTTON_PAD_BUTTON)/OPTION_W
 #define OPTION_3_SX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*2+OPTION_BUTTON_PAD_BUTTON*2)/OPTION_W
 #define OPTION_3_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*3+OPTION_BUTTON_PAD_BUTTON*2)/OPTION_W
+#define OPTION_4_SX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*3+OPTION_BUTTON_PAD_BUTTON*3)/OPTION_W
+#define OPTION_4_EX (OPTION_BUTTON_PAD_LEFT+OPTION_BUTTON_W*4+OPTION_BUTTON_PAD_BUTTON*3)/OPTION_W
+
 /* landscape mode layout */
+#define LS_STATUSBAR_H 50
+#define LS_NAVIGATIONBAR_H 0
+
+//#define LS_PLAYVIEW_H (HD_MAIN_W-LS_STATUSBAR_H-LS_NAVIGATIONBAR_H)
+#define LS_PLAYVIEW_W HD_MAIN_W
 
+#define LS_PLAYVIEW_TITLE_H 100
+#define LS_PLAYVIEW_OPTION_H 80
+#define LS_PLAYVIEW_MENU_H 96
+#define LS_PLAYVIEW_PROGRESSBAR_H 113
+#define LS_PLAYVIEW_LINE_H 2
+#define LS_PLAYVIEW_CONTROLBAR_H 129
+
+#define LS_STATUSBAR_H 50
 #define NAVIGATIONBAR_H 100
+#define PLAYVIEW_H_LANDSCAPE HD_MAIN_W
+#define PLAYVIEW_W_LANDSCAPE HD_MAIN_W
+#define PLAYVIEW_TITLE_H_LANDSCAPE 100
+#define PLAYVIEW_OPTION_H_LANDSCAPE 80
+#define PLAYVIEW_MENU_H_LANDSCAPE 96
+#define PLAYVIEW_CONTROLBAR_H_LANDSCAPE 128
+#define PLAYVIEW_CONTROLBAR_Y_LANDSCAPE (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-LS_STATUSBAR_H)
+#define PLAYVIEW_PROGRESSBAR_H_LANDSCAPE 113
+#define PLAYVIEW_PROGRESSBAR_Y_LANDSCAPE (PLAYVIEW_CONTROLBAR_Y_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE-2)
+
+#define LRC_PROG \
+                       program {\
+                               signal: "lrc_invisible";\
+                               source: "lrc";\
+                               action:   STATE_SET "default" 0.0;\
+                               target: "lrc";\
+                               transition: LINEAR 0.3;\
+                       }\
+                       program {\
+                               signal: "lrc_visible";\
+                               source: "lrc";\
+                               action:   STATE_SET "show" 0.0;\
+                               target: "lrc";\
+                               transition: LINEAR 0.3;\
+                       }\
+                       program {\
+                               signal: "lrc_destroy";\
+                               source: "lrc";\
+                               action:   STATE_SET "default" 0.0;\
+                               target: "lrc";\
+                       }
 
 #define OPT_PROG \
                        program {\
                                transition: LINEAR 0.3;\
                        }
 
+#ifdef MP_3D_FEATURE
+group {
+        name: "mp_play_view_base";
+
+        parts {
+                part {
+                        name: "bg";
+                        mouse_events: 0;
+                        type: RECT;
+                        description {
+                                state: "default" 0.0;
+                                visible: 1;
+                                rel1 { relative: 0.0 0.0;}
+                                rel2 { relative: 1.0 1.0;}
+                                color: 0 0 0 0;
+                        }
+                }
+
+              part {
+                               name : "now_playing";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0 0;
+                                       min: 0 100;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 0.0;}
+
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name : "content";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       rel1 { relative: 0.0 1.0; to_y: "now_playing"; offset: 0 1;}
+                                       rel2 { relative: 1.0 1.0;}
+                               }
+                       }
+       }
+
+       programs {
+                       program {
+                               name : "show_now_playng";
+                               signal : "SHOW_NOW_PLAING";
+                               source : "music_app";
+                               action : STATE_SET "show" 0.0;
+                               target : "now_playing";
+                               target : "content";
+                       }
+                       program {
+                               name : "hide_now_playng";
+                               signal : "HIDE_NOW_PLAING";
+                               source : "music_app";
+                               action : STATE_SET "default" 0.0;
+                               target : "now_playing";
+                               target : "content";
+                       }
+               }
+}
+#endif
 group {
         name: "mp_play_view_layout";
-        
+
         parts {
-                part { 
+                part {
                         name: "bg";
                         mouse_events: 0;
                         type: RECT;
-                        description { 
+                        description {
                                 state: "default" 0.0;
                                 visible: 1;
                                 rel1 { relative: 0.0 0.0;}
@@ -214,7 +332,7 @@ group {
                         }
                 }
 
-               
+
                 part{
                         name : "base";
                         type: RECT;
@@ -225,15 +343,28 @@ group {
                                 color: 0 0 0 0;
                                 state: "default" 0.0;
                                 rel1 { relative: 0.0 1.0; to: "player_options";}
-                                rel2 { relative: 1.0 1.0; to: "bg";}
+                                rel2 { relative: 1.0 1.0/*(PLAYVIEW_OPTION_H+PLAYVIEW_ALBUM_H)/PLAYVIEW_OPTION_H*/; to: "bg";}
+                        }
+                }
+
+               part {
+                        name: "album_art_reflection_bg";
+                        type: IMAGE;
+                        mouse_events: 1;
+                        description {
+                                state: "default" 0.0;
+                                visible: 0;
+                                image { normal: "T02_controls_bg_shadow.png"; }
+                                rel1 { relative: 0.0 (PLAYVIEW_OPTION_H+PLAYVIEW_ALBUM_H)/PLAYVIEW_OPTION_H; to: "player_options";}
+                                rel2 { relative: 1.0 1.0 ; to, "bg"; }
                         }
                 }
 
-                part { 
+                part {
                         name: "clipper";
                         mouse_events: 0;
                         type: RECT;
-                        description { 
+                        description {
                                 state: "default" 0.0;
                                 visible: 1;
                                 rel1 { relative: 0.0 0.0;
@@ -242,7 +373,7 @@ group {
                                 color: 255 255 255 255;
                         }
                 }
-                               
+
                 part {
                         name : "list_content";
                         type: SWALLOW;
@@ -278,7 +409,7 @@ group {
                                 rel2 { relative: 2.0 1.0;to: "base";}
                         }
                 }
-                               
+
                 part {
                         name : "list_content_temp";
                         type: SWALLOW;
@@ -313,8 +444,8 @@ group {
                                 rel1 { relative: 1.0.0 0.0;to: "base";}
                                 rel2 { relative: 2.0 1.0;to: "base";}
                         }
-                }      
-                       
+                }
+
                 part {
                         name: "elm.swallow.content.index";
                         type: SWALLOW;
@@ -325,7 +456,9 @@ group {
                         }
                 }
 
-                part { 
+
+                //add by rocket.he for fixing CQ: H0100127628 Begin
+                part {
                         name: "main.mute.bg";
                         type: IMAGE;
                         mouse_events: 0;
@@ -342,11 +475,11 @@ group {
                         }
                         description {
                                 state: "show" 0.0;
-                                inherit: "default" 0.0; 
+                                inherit: "default" 0.0;
                                 visible: 1;
-                        }                              
+                        }
                 }
-                part { 
+                part {
                         name: "main.mute.image";
                         type: IMAGE;
                         mouse_events: 0;
@@ -363,11 +496,30 @@ group {
                         }
                         description {
                                 state: "show" 0.0;
-                                inherit: "default" 0.0; 
+                                inherit: "default" 0.0;
                                 visible: 1;
-                        }                              
+                        }
                 }
+                //add by rocket.he for fixing CQ: H0100127628 end
 
+               part {
+                        name: "lrc";
+                        type: SWALLOW;
+                        mouse_events: 1;
+                        repeat_events: 1;
+                        description {
+                                state: "default" 0.0;
+                                visible: 1;
+                                rel1 { relative: PLAYVIEW_LYRIC_SX PLAYVIEW_LYRIC_SY; offset: 0 -1; to: "bg";}
+                                rel2 { relative: PLAYVIEW_LYRIC_EX PLAYVIEW_LYRIC_SY; offset: 0 -1; to: "bg";}
+                        }
+                        description {
+                                state: "show" 0.0;
+                                visible: 1;
+                                rel1 { relative: PLAYVIEW_LYRIC_SX PLAYVIEW_LYRIC_SY; offset: 0 -1; to: "bg";}
+                                rel2 { relative: PLAYVIEW_LYRIC_EX PLAYVIEW_LYRIC_EY; to: "bg";}
+                        }
+                }
                 part {
                        name: "player_option_menu";
                        type: SWALLOW;
@@ -390,7 +542,7 @@ group {
                                visible: 0;
                         }
                 }
-                               
+
                 part {
                         name: "player_progress";
                         type: SWALLOW;
@@ -403,7 +555,7 @@ group {
                                 color: ALBUMART_IMAGE_SHADOW_RGBA;
                         }
                 }
-                
+
                 part {
                         name: "line1";
                         type: RECT;
@@ -416,7 +568,7 @@ group {
                                 color: 8 8 8 102;
                         }
                 }
-                
+
                 part {
                         name: "line2";
                         type: RECT;
@@ -446,6 +598,7 @@ group {
                }
 
                programs {
+                       LRC_PROG
                        OPT_PROG
                         program { name: "flick_left";
                                signal: "flick_left";
@@ -488,20 +641,21 @@ group {
                                target: "list_content";
                        }
                         program { name : "list_content_transit_done";
-                                signal: "transit_done"; 
+                                signal: "transit_done";
                                 source: "list_content";
-                               script { 
-                                       emit("transit_done", "list"); 
-                        } 
-                       }       
+                               script {
+                                       emit("transit_done", "list");
+                        }
+                       }
                         program { name : "list_temp_transit_done";
-                                signal: "transit_done"; 
+                                signal: "transit_done";
                                 source: "list_content_temp";
-                               script { 
-                                       emit("transit_done", "temp"); 
-                       }       
+                               script {
+                                       emit("transit_done", "temp");
+                       }
                        }
-                       
+
+                       //add by rocket.he for fixing CQ: H0100127628 Begin
                program {
                                signal: "signal.main.mute.show";
                                source: "*";
@@ -515,19 +669,22 @@ group {
                                source: "*";
                                 action: STATE_SET "default" 0.0;
                                 target: "main.mute.image";
-                                target: "main.mute.bg";                                 
+                                target: "main.mute.bg";
                        }
-               }               
+               //add by rocket.he for fixing CQ: H0100127628 end
+
+               }
        }
-       
-       
-       
+
+
+
        group {  name : "mp_play_view";
 
        images {
         image:  "T02_controls_bg_shadow.png" COMP;
         image:  "music_player_bg.PNG" COMP;
         image:  "music_popup_mute.png" COMP;
+        image: "allshare_dmr_icon.png" COMP;
     }
 
        parts {
@@ -535,6 +692,7 @@ group {
                part {
                        name: "bg";
                        type: SWALLOW;
+                       scale: 1;
                        mouse_events: 0;
                        description {
                                state: "default" 0.0;
@@ -543,15 +701,17 @@ group {
                                rel2 { relative: 1.0 1.0; }
                        }
                }
-               
+
                part {
                        name: "album_bg";
                        type: SWALLOW;
                        mouse_events: 0;
+                       scale: 1;
                        description {
                                state: "default" 0.0;
                                visible: 1;
                                rel1 { relative: 0.0 0.0; to: "bg";}
+                               //rel2 { relative: 1.0 1.0; to: "bg";}
                                rel2 { relative: 1.0 PLAYVIEW_ALBUM_H/964; offset: 0 -2; to: "bg";}
                        }
                }
@@ -560,10 +720,12 @@ group {
                        name: "album_art";
                        type: SWALLOW;
                        mouse_events: 0;
+                       scale: 1;
                        description {
                                state: "default" 0.0;
                                visible: 1;
                                rel1 { relative: 0.0 0.0; to: "album_bg"; }
+                               //rel2 { relative: 1.0 1.0; to: "bg";}
                                rel2 { relative: 1.0 PLAYVIEW_ALBUM_H/964; offset: 0 -2; to: "bg";}
                        }
                }
@@ -578,7 +740,7 @@ group {
                                rel2 { relative: 1.0 1.0; to: "album_bg"; }
                        }
                }
-               
+
                /* streaming buffering area */
                part {
                        name: "buffering_area";
@@ -594,10 +756,56 @@ group {
                                rel1 { relative: 1.0 1.0; to: "album_art"; }
                                rel2 { relative: 1.0 1.0; to: "album_art"; }
                        }
-               }               
+               }
+
+               /* allshare DMR icon */
+               part {
+                       name: "dmr_icon";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 60 80;
+                               align: 0.0 1.0;
+                               fixed: 1 1;
+                               rel1 { relative: 0.0 1.0; offset: 30 -10; to: "album_art"; }
+                               rel2 { relative: 0.0 1.0; offset: 30 -10; to: "album_art"; }
+                               image { normal: "allshare_dmr_icon.png"; }
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+
        }
 
        programs {
+
+               /* allshare DMR icon */
+               program {
+                       source: "dmr_icon";
+                       signal: "mouse,clicked,1";
+                       action: SIGNAL_EMIT "dmr_icon_clicked" "ctrl_edj";
+               }
+
+               program {
+                       signal: "show_dmr_icon";
+                       source: "*";
+                       action: STATE_SET "show" 0.0;
+                       target: "dmr_icon";
+               }
+
+               program {
+                       signal: "hide_dmr_icon";
+                       source: "*";
+                       action: STATE_SET "default" 0.0;
+                       target: "dmr_icon";
+               }
        }
 }
 
@@ -620,119 +828,673 @@ group {
 #define TITLE_ARTIST 36
 #define TITLE_ALBUM    34
 #define TITLE_H (TITLE_PAD_T+TITLE_PAD_D+TITLE_NAME+TITLE_ARTIST+TITLE_ALBUM)
+#define BG_COLOR 236 240 242 255
 
 #define BASE_SC_H (ALBUM_ART_H+TITLE_H)
 
        group {
-               name: "empty_layout";
+               name: "landscape_layout";
+       //      min:  MAIN_H MAIN_W;
                parts {
-    
-                       part { name: "bg";
-                               mouse_events: 0;
-                               type: RECT;
-                               description { state: "default" 0.0;
-                                       visible: 1;
-                                       rel1 { relative: 0.0 0.0;
-                                                       offset : 0 0;}
-                                       rel2 { relative: 1.0 1.0;}
-                                       color: 0 0 0 255;
-                               }
-                       }
-               }       
-       }
 
-       group {
-               name: "player_view_info";
-               min:  54 MAIN_W;
-               parts {
-    
-                       part { name: "bg";
-                               mouse_events: 0;
-                               type : RECT;
-                               description { state: "default" 0.0;
-                                       visible: 1;
-                                       rel1 { relative: 0.0 0.0;}
-                                       rel2 { relative: 1.0 1.0;}
-                                       color: 0 0 0 255;
+                               part { name: "bg";
+                                       mouse_events: 0;
+                                       type: RECT;
+                                       description { state: "default" 0.0;
+                                               visible: 1;
+                                               rel1 { relative: 0.0 0.0;
+                                                               offset : 0 0;}
+                                               rel2 { relative: 1.0 1.0;}
+                                               color: BG_COLOR;
+                                       }
                                }
-                       }
-                       part {
-                               name : "artist";
-                               type: TEXT;
+                               part {
+                               name : "list_content";
+                               type: SWALLOW;
                                mouse_events: 1;
                                scale: 1;
                                description {
                                        visible:1;
+                                       min: 100 100;
+                                       fixed: 1 1;
                                        state: "default" 0.0;
-                                       rel1 { relative: 0.0 0.0;to: "bg";}
-                                       rel2 { relative: 1.0 20/54;to: "bg";}
-                                       text {
-                                               font: FONT_STYLE_ROMAN;
-                                               size: 32;
-                                               align: 0.5 0.5;
-                                       }
-                                       color: 18 131 183 255;
+                                       rel1 { relative: 0.0 0.0;to: "bg";}
+                                       rel2 { relative: 1.0 1.0;to: "bg";}
                                }
                        }
+
                        part {
-                               name : "album";
-                               type: TEXT;
-                               mouse_events: 1;
-                               scale: 1;
+                               name: "elm.swallow.content.index";
+                               type: SWALLOW;
                                description {
-                                       visible:1;
                                        state: "default" 0.0;
-                                       rel1 { relative: 0.0 24/50;to: "bg";}
-                                       rel2 { relative: 1.0 48/50;to: "bg";}
-                                       text {
-                                               font: FONT_STYLE_ROMAN;
-                                               size: 32;
-                                               align: 0.5 0.5;
-                                       }
-                                       color: 18 131 183 255;
+                                       rel1 { to: "list_content"; }
+                                       rel2 { to: "list_content"; }
+                               }
+                       }
+
+                               part {
+                               name : "elm.swallow.controlbar";
+                               type: SWALLOW;
+                               mouse_events:1;
+                               scale : 1;
+                               description {
+                               visible:1;
+                               //min: 0 65;
+                               //max: 480 65;
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";}
+                               rel2 { relative: 1.0 1.0;to: "bg";}
                                }
                        }
                }
        }
-       
 
        group {
-               name: "player_view_options";
-               min:  50 MAIN_W;
-
-               images {
-                       image:  "T02_OptionHeader_btn_press.png" COMP;
-               }
+               name: "empty_layout";
                parts {
-    
+
                        part { name: "bg";
-                               mouse_events: 1;
+                               mouse_events: 0;
                                type: RECT;
                                description { state: "default" 0.0;
                                        visible: 1;
                                        rel1 { relative: 0.0 0.0;
                                                        offset : 0 0;}
                                        rel2 { relative: 1.0 1.0;}
-                                       color: 53 53 53 255;
+                                       color: 0 0 0 255;
                                }
                        }
+               }
+       }
 
-                       part { name: "bottom_line";
+       group {
+               name: "landscape_playview_layout";
+               min:  MAIN_W MAIN_W;
+               parts {
+
+                               part { name: "bg";
+                                       mouse_events: 0;
+                                       type: RECT;
+                                       description { state: "default" 0.0;
+                                               visible: 1;
+                                               rel1 { relative: 0.0 0.0;
+                                                               offset : 0 0;}
+                                               rel2 { relative: 1.0 1.0;}
+                                               color: 0 0 0 0;
+                                       }
+                               }
+                               part { name: "clipper";
+                                       mouse_events: 0;
+                                       type: RECT;
+                                       description { state: "default" 0.0;
+                                               visible: 1;
+                                               rel1 { relative: 0.0 0.0;
+                                                               offset : 0 0; to: "bg";}
+                                               rel2 { relative: 1.0 1.0; to: "bg";}
+                                               color: 255 255 255 255;
+                                       }
+                               }
+                               part {
+                               name : "list_content";
+                               type: SWALLOW;
                                mouse_events: 1;
-                               type: RECT;
-                               description { state: "default" 0.0;
-                                       visible: 1;
-                                       min: 0 1;
+                               scale: 1;
+                               clip_to : "clipper";
+                               description {
+                                       visible:1;
                                        fixed: 1 1;
-                                       rel1 { relative: 0.0 1.0;}
-                                       rel2 { relative: 1.0 1.0;}
-                                       color: 49 49 49 255;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;to: "bg";}
+                                       rel2 { relative: 1.0 1.0;to: "bg";}
+                               }
+                               description {
+                                       visible:0;
+                                       fixed: 1 1;
+                                       state: "invisible" 0.0;
+                                       rel1 { relative: 0.0 0.0;to: "bg";}
+                                       rel2 { relative: 1.0 1.0;to: "bg";}
+                               }
+                               description {
+                                       visible:1;
+                                       fixed: 1 1;
+                                       state: "left" 0.0;
+                                       rel1 { relative: -1.0 0.0;to: "bg";}
+                                       rel2 { relative: 0.0 1.0;to: "bg";}
+                               }
+                               description {
+                                       visible:1;
+                                       fixed: 1 1;
+                                       state: "right" 0.0;
+                                       rel1 { relative: 1.0.0 0.0;to: "bg";}
+                                       rel2 { relative: 2.0 1.0;to: "bg";}
                                }
                        }
-
                        part {
-                               name: "option_3_bg";
-                               type: RECT;
+                               name : "list_content_temp";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               clip_to : "clipper";
+                               description {
+                                       visible:1;
+                                       fixed: 1 1;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;to: "bg";}
+                                       rel2 { relative: 1.0 1.0;to: "bg";}
+                               }
+                               description {
+                                       visible:0;
+                                       fixed: 1 1;
+                                       state: "invisible" 0.0;
+                                       rel1 { relative: 0.0 0.0;to: "bg";}
+                                       rel2 { relative: 1.0 1.0;to: "bg";}
+                               }
+                               description {
+                                       visible:1;
+                                       fixed: 1 1;
+                                       state: "left" 0.0;
+                                       rel1 { relative: -1.0 0.0;to: "bg";}
+                                       rel2 { relative: 0.0 1.0;to: "bg";}
+                               }
+                               description {
+                                       visible:1;
+                                       fixed: 1 1;
+                                       state: "right" 0.0;
+                                       rel1 { relative: 1.0.0 0.0;to: "bg";}
+                                       rel2 { relative: 2.0 1.0;to: "bg";}
+                               }
+                       }
+
+                       part {
+                               name: "player_title_bg";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 1.0; offset: 0 -415; to: "bg";}
+                                       rel2 { relative: 1.0 1.0; offset: 0 -389; to: "bg";}
+                                       color: 24 24 24 180;
+                               }
+                       }
+
+                       part {
+                               name: "player_title";
+                               type: TEXT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       rel1 { relative: 0.0 0.0; to, "player_title_bg";}
+                                       rel2 { relative: 1.0 1.0; to, "player_title_bg";}
+                                       text {
+                                               font: FONT_STYLE_MEDIUM;
+                                               size: 20;
+                                               align: 0.5 0.5;
+                                       }
+                                       color: 215 215 215/*240 123 20*/ 255;
+                               }
+                       }
+
+                       part{
+                               name : "player_head";
+                               type: SWALLOW;
+                               mouse_events:1;
+                               scale : 1;
+                               description {
+                                       visible:1;
+                                       min: 0 NAVIGATIONBAR_H;
+                                       fixed: 1 1;
+                                       align: 0 0;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "bg";}
+                                       rel2 { relative: 1.0 0.0; to: "bg";}
+                               }
+                       }
+
+                       part{
+                                name: "top_line1";
+                                type: RECT;
+                                mouse_events: 1;
+                                description {
+                                        state: "default" 0.0;
+                                        visible: 1;
+                                       rel1 { relative: 0.5*(720-688)/720 (NAVIGATIONBAR_H)/PLAYVIEW_H_LANDSCAPE; to: "bg";}
+                                        rel2 { relative: 0.5*(720+688)/720 (NAVIGATIONBAR_H)/PLAYVIEW_H_LANDSCAPE; offset: 0 1; to: "bg";}
+                                        color: 8 8 8 102;
+                                }
+                        }
+                        part {
+                                name: "top_line2";
+                                type: RECT;
+                                mouse_events: 1;
+                                description {
+                                        state: "default" 0.0;
+                                        visible: 1;
+                                       rel1 { relative: 0.0 0.0; to: "top_line1";}
+                                        rel2 { relative: 1.0 1.0; offset: 0 1; to: "top_line1";}
+                                        color: 173 173 173 102;
+                                }
+                        }
+                       part{
+                               name : "player_clip";
+                               type: RECT;
+                               scale : 1;
+                               description {
+                                       color: 255 255 255 255;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 (NAVIGATIONBAR_H)/PLAYVIEW_H_LANDSCAPE; offset: 0 2; to: "bg";}
+                                       rel2 { relative: 1.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; offset: 0 2; to: "bg";}
+                               }
+
+                       }
+
+                       part{
+                               name : "player_info";
+                               type: SWALLOW;
+                               mouse_events:1;
+                               scale : 1;
+                               clip_to: "player_clip";
+                               description {
+                                       visible:1;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; to: "player_clip";}
+                                       rel2 { relative: 1.0 1.0; to: "player_clip";}
+                               }
+                       }
+
+                       part{
+                               name : "player_options";
+                               type: SWALLOW;
+                               mouse_events:1;
+                               scale : 1;
+                               description {
+                                       visible:1;
+                                       //min: 480 50;
+                                       color: 49 49 49 255;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; offset: 0 2; to: "bg";}
+                                       rel2 { relative: 1.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE+PLAYVIEW_OPTION_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; offset: 0 2; to: "bg";}
+                               }
+                       }
+
+                       part {
+                                name: "lrc";
+                                type: SWALLOW;
+                                mouse_events: 1;
+                                repeat_events: 1;
+                                description {
+                                        state: "default" 0.0;
+                                        visible: 1;
+                                        rel1 { relative: 0.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";}
+                                       rel2 { relative: 1.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";}
+                                }
+                                description {
+                                        state: "show" 0.0;
+                                        visible: 1;
+                                        rel1 { relative: 0.0 (NAVIGATIONBAR_H+PLAYVIEW_TITLE_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";}
+                                       rel2 { relative: 1.0 0.0; to_x: "bg"; to_y: "player_option_menu";}
+                                }
+                        }
+                        part {
+                               name: "player_option_menu";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE-96)/PLAYVIEW_H_LANDSCAPE;  to: "bg";}
+                                       rel2 { relative: 1.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE;  to: "bg";}
+                               }
+                               description {
+                                       state: "invisible" 0.0;
+                                       rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE;  to: "bg";}
+                                       rel2 { relative: 1.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE;  to: "bg";}
+                               }
+                               description {
+                                       state: "invisible" 1.0;
+                                       inherit: "invisible" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "player_progress";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       //min: 480 79;
+                                       rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE-PLAYVIEW_PROGRESSBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";}
+                                       rel2 { relative: 1.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";}
+                                       color: ALBUMART_IMAGE_SHADOW_RGBA;
+                               }
+                       }
+
+                       part {
+                               name : "elm.swallow.controlbar";
+                               type: SWALLOW;
+                               mouse_events:1;
+                               scale : 1;
+                               description {
+                               visible:1;
+                               //min: 0 85;
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 (PLAYVIEW_H_LANDSCAPE-PLAYVIEW_CONTROLBAR_H_LANDSCAPE)/PLAYVIEW_H_LANDSCAPE; to: "bg";}
+                               rel2 { relative: 1.0 1.0;to: "bg";}
+                               }
+                       }
+               }
+
+               programs {
+                       LRC_PROG
+                       OPT_PROG
+                        program { name: "flick_left";
+                               signal: "flick_left";
+                               source: "list_content";
+                               action: STATE_SET "left" 0.0;
+                               target: "list_content";
+                               transition: LINEAR 0.5;
+                        }
+                        program { name: "flick_right";
+                               signal: "flick_right";
+                               source: "list_content";
+                               action: STATE_SET "right" 0.0;
+                               target: "list_content";
+                               transition: LINEAR 0.5;
+                        }
+                         program { name: "set_right";
+                               signal: "set_right";
+                               source: "list_content_temp";
+                               action: STATE_SET "right" 0.0;
+                               target: "list_content_temp";
+                        }
+                        program { name: "set_left";
+                               signal: "set_left";
+                               source: "list_content_temp";
+                               action: STATE_SET "left" 0.0;
+                               target: "list_content_temp";
+                        }
+                         program { name: "set_default";
+                               signal: "set_default";
+                               source: "list_content_temp";
+                               action: STATE_SET "default" 0.0;
+                               target: "list_content_temp";
+                               transition: LINEAR 0.5;
+                               after :"list_content_transit_done";
+                        }
+                        program { name: "set_default_list";
+                               signal: "set_default";
+                               source: "list_content";
+                               action: STATE_SET "default" 0.0;
+                               target: "list_content";
+                       }
+                        program { name : "list_content_transit_done";
+                                signal: "transit_done";
+                                source: "list_content";
+                               script {
+                                       emit("transit_done", "list");
+                        }
+                       }
+                        program { name : "list_temp_transit_done";
+                                signal: "transit_done";
+                                source: "list_content_temp";
+                               script {
+                                       emit("transit_done", "temp");
+                       }
+                       }
+               }
+
+       }
+
+       group {
+               name: "player_view_info";
+               min:  54 MAIN_W;
+               parts {
+
+                       part { name: "bg";
+                               mouse_events: 0;
+                               type : RECT;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 0 0 0 255;
+                               }
+                       }
+                       part {
+                               name : "artist";
+                               type: TEXT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       visible:1;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0;to: "bg";}
+                                       rel2 { relative: 1.0 20/54;to: "bg";}
+                                       text {
+                                               font: FONT_STYLE_ROMAN;
+                                               size: 32;
+                                               align: 0.5 0.5;
+                                       }
+                                       color: 18 131 183 255;
+                               }
+                       }
+                       part {
+                               name : "album";
+                               type: TEXT;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       visible:1;
+                                       state: "default" 0.0;
+                                       rel1 { relative: 0.0 24/50;to: "bg";}
+                                       rel2 { relative: 1.0 48/50;to: "bg";}
+                                       text {
+                                               font: FONT_STYLE_ROMAN;
+                                               size: 32;
+                                               align: 0.5 0.5;
+                                       }
+                                       color: 18 131 183 255;
+                               }
+                       }
+               }
+       }
+
+
+       group {
+               name: "player_view_options";
+               min:  50 MAIN_W;
+
+               images {
+                       image:  "T02_OptionHeader_btn_press.png" COMP;
+               }
+               parts {
+
+                       part { name: "bg";
+                               mouse_events: 1;
+                               type: RECT;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0;
+                                                       offset : 0 0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 53 53 53 255;
+                               }
+                       }
+
+                       part { name: "bottom_line";
+                               mouse_events: 1;
+                               type: RECT;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 1;
+                                       fixed: 1 1;
+                                       rel1 { relative: 0.0 1.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       color: 49 49 49 255;
+                               }
+                       }
+
+                       part {
+                               name: "option_1_bg";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: OPTION_1_SX OPTION_SY; to: "bg";}
+                                       rel2 { relative: OPTION_1_EX OPTION_EY; to: "bg";}
+                                       color: 53 53 53 255;
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "option_1_press_bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       image { normal: "T02_OptionHeader_btn_press.png"; border: 3 3 1 1;}
+                                       rel1 { relative: 0.0 0.0; to: "option_1_bg";}
+                                       rel2 { relative: 1.0 1.0; to: "option_1_bg";}
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "option_1";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0; to, "option_1_bg";}
+                                       rel2 { relative: 1.0 1.0; to, "option_1_bg";}
+
+
+
+                                       text {
+                                               font: FONT_STYLE_MEDIUM;
+                                               size: 32;
+                                               align: 0.5 0.5;
+                                               text: "Share";
+                                       }
+                                       color: 249 249 249 255;
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 188 187 187 255;
+                               }
+                       }
+
+                       part { name: "option_1_event_blocker";
+                               type: RECT;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; to, "option_1_bg";}
+                                       rel2 { relative: 1.0 1.0; to, "option_1_bg";}
+                                       color: 0 0 0 0;
+                                       visible: 0;
+                               }
+                               description { state: "enabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "option_2_bg";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: OPTION_2_SX OPTION_SY; to: "bg";}
+                                       rel2 { relative: OPTION_2_EX OPTION_EY; to: "bg";}
+                                       color: 53 53 53 255;
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+
+                       part {
+                               name: "option_2_press_bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       image { normal: "T02_OptionHeader_btn_press.png"; border: 3 3 1 1;}
+                                       rel1 { relative: 0.0 0.0; to: "option_2_bg";}
+                                       rel2 { relative: 1.0 1.0; to: "option_2_bg";}
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "option_2";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0; to, "option_2_bg";}
+                                       rel2 { relative: 1.0 1.0; to, "option_2_bg";}
+                                       text {
+                                               font: FONT_STYLE_MEDIUM;
+                                               size: 32;
+                                               align: 0.5 0.5;
+                                               text: "Set";
+                                       }
+                                       color: 249 249 249 255;
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 188 187 187 255;
+                               }
+                       }
+
+                       part { name: "option_2_event_blocker";
+                               type: RECT;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       rel1 { relative: 0.0 0.0; to, "option_2_bg";}
+                                       rel2 { relative: 1.0 1.0; to, "option_2_bg";}
+                                       color: 0 0 0 0;
+                                       visible: 0;
+                               }
+                               description { state: "enabled" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "option_3_bg";
+                               type: RECT;
                                mouse_events: 1;
                                description {
                                        state: "default" 0.0;
@@ -740,7 +1502,7 @@ group {
                                        rel1 { relative: OPTION_3_SX OPTION_SY; to: "bg";}
                                        rel2 { relative: OPTION_3_EX OPTION_EY; to: "bg";}
                                        color: 53 53 53 255;
-                               }description { 
+                               }description {
                                        state: "press" 0.0;
                                        inherit: "default" 0.0;
                                        visible: 0;
@@ -753,14 +1515,13 @@ group {
                                description {
                                        state: "default" 0.0;
                                        visible: 0;
-                                       image { normal: "T02_OptionHeader_btn_press.png"; }
+                                       image { normal: "T02_OptionHeader_btn_press.png"; border: 3 3 1 1;}
                                        rel1 { relative: 0.0 0.0; to: "option_3_bg";}
                                        rel2 { relative: 1.0 1.0; to: "option_3_bg";}
                                }
-                               description { 
+                               description {
                                        state: "press" 0.0;
                                        inherit: "default" 0.0;
-                                       image { normal: "T02_OptionHeader_btn_press.png"; }
                                        visible: 1;
                                }
                        }
@@ -782,16 +1543,122 @@ group {
                                        }
                                        color: 249 249 249 255;
                                }
-                               description { 
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 188 187 187 255;
+                               }
+                       }
+#ifdef MP_FEATURE_INNER_SETTINGS
+                       part { name: "option_4_bg";
+                               type: RECT;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: OPTION_4_SX OPTION_SY; to: "bg";}
+                                       rel2 { relative: OPTION_4_EX OPTION_EY; to: "bg";}
+                                       color: 53 53 53 255;
+                               }description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "option_4_press_bg";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       image { normal: "T02_OptionHeader_btn_press.png"; border: 3 3 1 1;}
+                                       rel1 { relative: 0.0 0.0; to: "option_4_bg";}
+                                       rel2 { relative: 1.0 1.0; to: "option_4_bg";}
+                               }
+                               description {
+                                       state: "press" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "option_4";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1 { relative: 0.0 0.0; to, "option_4_bg";}
+                                       rel2 { relative: 1.0 1.0; to, "option_4_bg";}
+                                       text {
+                                               font: FONT_STYLE_MEDIUM;
+                                               size: 32;
+                                               align: 0.5 0.5;
+                                               text: "Settings";
+                                       }
+                                       color: 249 249 249 255;
+                               }
+                               description {
                                        state: "press" 0.0;
                                        inherit: "default" 0.0;
                                        color: 188 187 187 255;
                                }
                        }
+#endif
                }
 
                programs {
                        program {
+                               name: "option_1_down";
+                               source: "option_1_bg";
+                               signal: "mouse,down,1";
+                               action: STATE_SET "press" 0.0;
+                               target: "option_1";
+                               target: "option_1_press_bg";
+                       }
+
+                       program {
+                               name: "option_1_up";
+                               source: "option_1_bg";
+                               signal: "mouse,up,1";
+                               action: STATE_SET "default" 0.0;
+                               target: "option_1";
+                               target: "option_1_press_bg";
+                       }
+
+                       program {
+                               name: "option_1_clicked";
+                               source: "option_1_bg";
+                               signal: "mouse,clicked,1";
+                               action: SIGNAL_EMIT "option_1_clicked" 0.0;
+                       }
+
+                       program {
+                               name: "option_2_down";
+                               source: "option_2_bg";
+                               signal: "mouse,down,1";
+                               action: STATE_SET "press" 0.0;
+                               target: "option_2";
+                               target: "option_2_press_bg";
+                       }
+
+                       program {
+                               name: "option_2_up";
+                               source: "option_2_bg";
+                               signal: "mouse,up,1";
+                               action: STATE_SET "default" 0.0;
+                               target: "option_2";
+                               target: "option_2_press_bg";
+                       }
+
+                       program {
+                               name: "option_2_clicked";
+                               source: "option_2_bg";
+                               signal: "mouse,clicked,1";
+                               action: SIGNAL_EMIT "option_2_clicked" 0.0;
+                       }
+
+                       program {
                                name: "option_3_down";
                                source: "option_3_bg";
                                signal: "mouse,down,1";
@@ -799,7 +1666,7 @@ group {
                                target: "option_3";
                                target: "option_3_press_bg";
                        }
-       
+
                        program {
                                name: "option_3_up";
                                source: "option_3_bg";
@@ -808,13 +1675,61 @@ group {
                                target: "option_3";
                                target: "option_3_press_bg";
                        }
-       
+
                        program {
                                name: "option_3_clicked";
                                source: "option_3_bg";
                                signal: "mouse,clicked,1";
                                action: SIGNAL_EMIT "option_3_clicked" 0.0;
                        }
+#ifdef MP_FEATURE_INNER_SETTINGS
+                       program {
+                               name: "option_4_down";
+                               source: "option_4_bg";
+                               signal: "mouse,down,1";
+                               action: STATE_SET "press" 0.0;
+                               target: "option_4";
+                               target: "option_4_press_bg";
+                       }
+
+                       program {
+                               name: "option_4_up";
+                               source: "option_4_bg";
+                               signal: "mouse,up,1";
+                               action: STATE_SET "default" 0.0;
+                               target: "option_4";
+                               target: "option_4_press_bg";
+                       }
+
+                       program {
+                               name: "option_4_clicked";
+                               source: "option_4_bg";
+                               signal: "mouse,clicked,1";
+                               action: SIGNAL_EMIT "option_4_clicked" 0.0;
+                       }
+#endif
+                       program { name: "pgm_disale_option";
+                               source: "*";
+                               signal: "sig_disable_option_btn";
+                               script {
+                                       set_state(PART:"option_1", "press", 0.0);
+                                       set_state(PART:"option_1_event_blocker", "enabled", 0.0);
+
+                                       set_state(PART:"option_2", "press", 0.0);
+                                       set_state(PART:"option_2_event_blocker", "enabled", 0.0);
+                               }
+                       }
+
+                       program { name: "pgm_enable_option";
+                               source: "*";
+                               signal: "sig_enable_option_btn";
+                               script {
+                                       set_state(PART:"option_1", "default", 0.0);
+                                       set_state(PART:"option_1_event_blocker", "default", 0.0);
+
+                                       set_state(PART:"option_2", "default", 0.0);
+                                       set_state(PART:"option_2_event_blocker", "default", 0.0);
+                               }
+                       }
                }
        }
-       
index f710262..e2230cf 100755 (executable)
@@ -1,20 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
 
 group { name: "elm/progressbar/horizontal/music/list_progress";
       images {
@@ -258,6 +241,7 @@ group { name: "elm/progressbar/horizontal/music/list_progress";
             mouse_events: 0;
             scale: 1;
             clip_to: "progress-rect";
+            //effect: SOFT_SHADOW;
             scale: 0;
             description { state: "default" 0.0;
                align: 0.0 0.0;
@@ -366,6 +350,7 @@ group { name: "elm/progressbar/horizontal/music/list_progress";
          program { name: "start_pulse";
             signal: "elm,state,pulse,start";
             source: "elm";
+           // after: "slide_to_end";
          }
          program { name: "stop_pulse";
             signal: "elm,state,pulse,stop";
@@ -374,6 +359,7 @@ group { name: "elm/progressbar/horizontal/music/list_progress";
             target: "slide_to_begin";
             target: "slide_to_end";
             target: "start_pulse";
+            //after: "state_pulse";
          }
          program { name: "state_pulse";
             signal: "elm,state,pulse";
index 6aa5f98..ca8bda6 100755 (executable)
@@ -1,21 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
 #ifndef FONT_NAME
 #define FONT_NAME "system_content"
 #endif
 #define FONT_NAME "system_content"
 #endif
 
+#define RICHINFO_TITLE_X_PAD_W 15
+#define RICHINFO_RELATED_VIDEO_FONT_SIZE 24
+#define RICHINFO_TOP_PAD_H 10
+
 #define TITLE_TEXT_01_SIZE 38
-#define TITLE_TEXT_01_COLOR 255 255 255 255
+#define TITLE_TEXT_01_COLOR 0 0 0 255
 
 #define MAIN_TEXT_01_SIZE 32
 #define MAIN_TEXT_01_COLOR 255 255 255 255
 
 #define SUB_TEXT_01_SIZE 36
-#define SUB_TEXT_01_COLOR 166 166 166 255
+#define SUB_TEXT_01_COLOR 114 114 114 255
 
 #define RICH_INFO_WIDTH 720.0
 #define RICH_INFO_HEIGHT 1130.0
 
+//left area
 #define RICH_INFO_ALBUM_WIDTH 138.0
 #define RICH_INFO_ALBUM_HEIGHT 138.0
 #define RICH_INFO_GAB 16.0
 #define RICH_INFO_LEFT_WIDTH 170
+
+//right area
+#define RICH_INFO_RELATED_VIDEO_TITLE_WIDTH 266.0
+#define RICH_INFO_RELATED_VIDEO_LINE_HEIGHT 213
+#define RICH_INFO_RELATED_VIDEO_HEIGHT 282
+
 #define RICH_INFO_RIGHT_WIDTH 550
 
+#define RICH_INFO_RELATED_VIDEO_DETAIL_TITLE 43
+
 #define RICH_INFO_BASE_BOX_DETAIL_TITLE 60
 #define RICH_INFO_SEQ_TEXT_SIZE 24
 #define RICH_INFO_NO_XML_FIND_TAG_HEIGHT 112
@@ -57,7 +52,7 @@
 #define RICH_INFO_BIO_ALBUM_WIDTH 528
 #define RICH_INFO_BIO_ALBUM_HEIGHT 370
 
-#define MP_INFO_BG_COLOR 37 37 37 255;
+#define MP_INFO_BG_COLOR 255 255 255 255;
 #define RICH_INFO_TITLE_FONT_SIZE 38
 #define BOTTOM_LINE_COLOR 82 82 82 255
 
@@ -176,8 +171,9 @@ group{
        }
 }
 
+//for info view
 group{
-       name: "richinfo/base_layout";
+       name: "richinfo/test_rich_info";
 
        parts {
                part { name: "bg";
@@ -193,16 +189,17 @@ group{
                }
 
                part { name: "detail_event_box";
-                   type : SWALLOW;
-                   mouse_events: 1;
-                   scale: 1;
-                   description { state: "default" 0.0;
-                       visible: 1;
-                       rel1 { relative: 0.0 0.0; to, "bg"; }
-                       rel2 { relative: 1.0 1.0; to, "bg"; }
-                   }
-               }
+            type : SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                rel1 { relative: 0.0 0.0; to, "bg"; }
+                rel2 { relative: 1.0 1.0; to, "bg"; }
+            }
+        }
 
+               ///left area
                part {
                        name: "left_area";
                        type : SWALLOW;
@@ -216,11 +213,31 @@ group{
                        }
                }
 
+               /////right area
+               //for base box
                BASE_BOX_PART("base_box")
+
+               //for base box datail
+               BASE_BOX_DETAIL_PART("rv_base_box_detail")
+               BASE_BOX_DETAIL_PART("track_base_box_detail")
+               BASE_BOX_DETAIL_PART("review_base_box_detail")
+               BASE_BOX_DETAIL_PART("bio_base_box_detail")
+               BASE_BOX_DETAIL_PART("dis_base_box_detail")
+               BASE_BOX_DETAIL_PART("credit_base_box_detail")
                BASE_BOX_DETAIL_PART("mi_base_box_detail")
+
+               //for datail scroller
+               DETAIL_SCROLLER_PART("rv_detail_scroller", RICH_INFO_RELATED_VIDEO_DETAIL_TITLE)
+               DETAIL_SCROLLER_PART("track_detail_scroller", (RICH_INFO_BASE_BOX_DETAIL_TITLE*2+1))
+               DETAIL_SCROLLER_PART("review_detail_scroller", RICH_INFO_BASE_BOX_DETAIL_TITLE)
+               DETAIL_SCROLLER_PART("bio_detail_scroller", RICH_INFO_BASE_BOX_DETAIL_TITLE)
+               DETAIL_SCROLLER_PART("dis_detail_scroller", (RICH_INFO_BASE_BOX_DETAIL_TITLE+1))
+               DETAIL_SCROLLER_PART("credit_detail_scroller", RICH_INFO_BASE_BOX_DETAIL_TITLE)
                DETAIL_SCROLLER_PART("mi_detail_scroller", RICH_INFO_BASE_BOX_DETAIL_TITLE)
+
                BASE_BOX_SCROLLER_PART("no_xml_detail_scroller", RICH_INFO_NO_XML_FIND_TAG_HEIGHT)
                BASE_BOX_SCROLLER_PART("no_xml_no_sim_detail_scroller", RICH_INFO_GAB)
+
                BASE_BOX_SCROLLER_PART("contents", 0)
        }
 }
@@ -241,6 +258,7 @@ group{
                        description { state: "default" 0.0;
                                visible: 1;
                                fixed: 1 0;
+                               //min: (RICH_INFO_GAB*2+ RICH_INFO_ALBUM_WIDTH) 710;
                                rel1 { relative: 0.0 0.0; }
                                rel2 { relative: 1.0 1.0; }
                                color: MP_INFO_BG_COLOR
@@ -394,9 +412,1555 @@ group{
        }
 }
 
-/******************for media info detail view start****************************************/
+group {
+       name, "find_tag_bt";
+
+       images {
+               image:  "01_search_input_icon_bg.png" COMP;
+       }
+
+       parts {
+               part { name, "background";
+                       type, RECT;
+                       mouse_events: 1;
+                       description {
+                               state, "default" 0.0;
+                               color, 25 25 25 255;
+                       }
+               }
+
+               part { name, "button_img";
+                       type, IMAGE;
+                       ignore_flags: ON_HOLD;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               //min: 45 45;
+                               //max: 45 45;
+                               image { normal: "01_search_input_icon_bg.png"; }
+                               rel1 { relative: 0 26/112; offset: 0 0;}
+                               rel2 { relative: 60/RICH_INFO_RIGHT_WIDTH 86/RICH_INFO_NO_XML_FIND_TAG_HEIGHT; offset: 0 0;}
+                       }
+               }
+
+               part {
+                       name: "txt";
+                       scale: 1;
+                       type: TEXT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative, 86/RICH_INFO_RIGHT_WIDTH 32/RICH_INFO_NO_XML_FIND_TAG_HEIGHT;  }
+                               rel2 { relative, 1.0 80/RICH_INFO_NO_XML_FIND_TAG_HEIGHT; }
+                               color: TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: TITLE_TEXT_01_SIZE;
+                                       align: 0 0.5;
+                                       text: "Category";
+                               }
+                       }
+               }
+
+               part { name, "bottom_line";
+                       type, RECT;
+                       mouse_events: 1;
+                       description {
+                               state, "default" 0.0;
+                               color, BOTTOM_LINE_COLOR;
+                               min: 0 1;
+                               rel1 { relative: 0.0 1.0; offset: 0 -2;}
+                               rel2 { relative: 1.0 1.0; offset: 0 -2;}
+                       }
+               }
+
+       }
+
+       programs {
+               program {
+                               name: "bg_clicked";
+                               signal: "mouse,clicked,1";
+                               source: "background";
+                               action: SIGNAL_EMIT "btn_clicked" "0";
+               }
+       }
+}
+
 group{
-       name: "mi_base_box_detail";
+       name: "parent_base_box";
+
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               //min: RICH_INFO_RIGHT_WIDTH (RICH_INFO_RELATED_VIDEO_HEIGHT+RICH_INFO_GAB);
+                               //max: RICH_INFO_RIGHT_WIDTH RICH_INFO_HEIGHT;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part {
+                       name: "base_box";
+                       type: SWALLOW;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 1; offset: 0 0; to: "bg";}
+                       }
+               }
+
+               part {
+                       name: "scroller";
+                       type: SWALLOW;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               align: 0 0;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 1; offset: 0 0; to: "bg";}
+                       }
+               }
+       }
+}
+
+group{
+       name: "base_box";
+
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part {
+                       name: "no_rv_genlist";
+                       type: SWALLOW;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 1; offset: 0 0; to: "bg";}
+                       }
+               }
+
+               //for scroller
+               part {
+                       name: "contents";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               min: 0 0;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; offset:0 0; to: "bg";}
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";}
+                       }
+               }
+       }
+
+}
+
+//for related video in first view
+#define RICH_INFO_RELATED_VIDEO_TITLE_W 266.0
+group{
+       name, "related_video_box";
+       images {
+               image:  "00_list_bar_press_1x80.png" COMP;
+               image:  "T02_youtube.png" COMP;
+       }
+       parts{
+
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part {
+                       name: "title";
+                       type: TEXT;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 {relative: 0 (10/RICH_INFO_RELATED_VIDEO_HEIGHT); to: "bg";}
+                               rel2 {
+                                       relative: (RICH_INFO_RELATED_VIDEO_TITLE_W/RICH_INFO_RIGHT_WIDTH) (58/RICH_INFO_RELATED_VIDEO_HEIGHT);
+                                       to: "bg" ;
+                               }
+                               color, TITLE_TEXT_01_COLOR;
+                               text {
+                                       font: FONT_STYLE_ROMAN;
+                                       size: TITLE_TEXT_01_SIZE;
+                                       align: 0.5 0.5;
+                               }
+                       }
+               }
+
+               part {
+                       name: "seperator";
+                       type: RECT;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               min: 1 0;
+                               rel1 { relative: 1 8/48; to: "title";}
+                               rel2 { relative: 1 40/48; to: "title";}
+                               color: 112 112 112 255;
+                       }
+               }
+
+               part { name, "youtube_image";
+                       type, IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               image { normal: "T02_youtube.png"; }
+                               visible: 1;
+                               align: 0 0.5;
+                               min: 96 48;
+                               max: 96 48;
+                               rel1 { relative: 1 0; offset: 0 0; to_x: "seperator"; to_y: "title";}
+                               rel2 { relative: 1 1; offset: 0 0; to_x: "seperator"; to_y: "title";}
+                       }
+               }
+
+               part {
+                       name: "video";
+                       type: SWALLOW;
+                       scale:1;
+                       description { state: "default" 0.0;
+                               fixed: 1 1;
+                               min: RICH_INFO_RIGHT_WIDTH RICH_INFO_RELATED_VIDEO_LINE_HEIGHT;
+                               rel1 { relative: 0 1; offset: 0 0; to: "title";}
+                               rel2 { relative: 1 1; offset: 0 0; to: "bg";}
+                       }
+               }
+       }
+}
+
+#define RICH_INFO_RELATED_VIDEO_LINE_H 213
+#define RICH_INFO_RELATED_VIDEO_LINE_W RICH_INFO_RIGHT_WIDTH
+#define VIDEO_LINE_W_R(w)      ((w)/RICH_INFO_RELATED_VIDEO_LINE_W)
+#define VIDEO_LINE_H_R(h)      ((h)/RICH_INFO_RELATED_VIDEO_LINE_H)
+#define RICH_INFO_RELATED_VIDEO_IMAGE_W 162.0
+#define RICH_INFO_RELATED_VIDEO_IMAGE_H 129.0
+
+//for related video images by line
+group{
+       name, "related_video_line";
+
+       parts{
+               part { name, "bg";
+                       type, RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state, "default" 0.0;
+                               visible: 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+               part{name, "img_bg1";
+                       type, RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state, "default" 0.0;
+                               visible: 0;
+                               rel1 {  relative: 0.0 0.0;
+                                               to, "bg";
+                                       }
+                               rel2 {  relative: VIDEO_LINE_W_R(RICH_INFO_RELATED_VIDEO_IMAGE_W) VIDEO_LINE_H_R(RICH_INFO_RELATED_VIDEO_IMAGE_H);
+                                               to, "bg";
+                                       }
+                               color, 54 54 54 255;
+                               align: 0 0.5;
+                       }
+               }
+
+               part{name,"img1";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 1;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: 0 0; to, "img_bg1"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "img_bg1"; }
+                               align: 0.5 0.5;
+                       }
+               }
+
+               part{ name, "title1";
+                       type, TEXT;
+                       scale: 1;
+                       description {
+                               state, "default" 0.0;
+                               align: 0.5 0.5;
+                               rel1 {  relative: 0.0 VIDEO_LINE_H_R(139);
+                                               to_x, "img_bg1"; to_y, "bg";
+                                       }
+                               rel2 {  relative: 1.0 VIDEO_LINE_H_R(167);
+                                               to_x, "img_bg1"; to_y, "bg";
+                                       }
+                               color, 151 150 150 255;
+                               text {
+                                       font: FONT_STYLE_ROMAN;
+                                       size: RICHINFO_RELATED_VIDEO_FONT_SIZE;
+                                       align: 0.5 0.5;
+                               }
+                       }
+               }
+
+               part{ name, "title12";
+                       type, TEXT;
+                       scale: 1;
+                       description {
+                               state, "default" 0.0;
+                               align: 0.5 0.5;
+                               rel1 {  relative: 0.0 VIDEO_LINE_H_R(173);
+                                               offset:0 0;
+                                               to_x, "title1";
+                                               to_y, "bg";
+                                       }
+                               rel2 {  relative: 1.0 VIDEO_LINE_H_R(201);
+                                               to_x, "title1";
+                                               to_y, "bg";
+                                       }
+                               color, 151 150 150 255;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICHINFO_RELATED_VIDEO_FONT_SIZE;
+                                       align: 0.5 0.5;
+                               }
+                       }
+               }
+
+               part{name, "img_bg2";
+                       type, RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state, "default" 0.0;
+                               visible: 0;
+                               rel1 {  relative: VIDEO_LINE_W_R(184)  0.0;
+                                               offset: 0 0;
+                                               to_x, "bg"; to_y, "img_bg1";
+                                       }
+                               rel2 {  relative: VIDEO_LINE_W_R(346) 1.0;
+                                               offset: 0 0;
+                                               to_x, "bg"; to_y, "img_bg1";
+                                       }
+                               color, 54 54 54 255;
+                               align: 0 0.5;
+                       }
+               }
+
+               part{name,"img2";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 1;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: 0 0; to, "img_bg2"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "img_bg2"; }
+                               align: 0.5 0.5;
+                               //fixed: 1 1;
+                       }
+               }
+
+               part{ name, "title2";
+                       type, TEXT;
+                       scale: 1;
+                       description {
+                               state, "default" 0.0;
+                               align: 0.5 0.5;
+                               rel1 {  relative: 0.0 0.0;
+                                               to_x, "img_bg2";
+                                               to_y, "title1";
+                                       }
+                               rel2 {  relative: 1.0 1.0;
+                                               to_x, "img_bg2";
+                                               to_y, "title1";
+                                       }
+                               color, 151 150 150 255;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICHINFO_RELATED_VIDEO_FONT_SIZE;
+                                       align: 0.5 0.5;
+                               }
+                       }
+               }
+
+               part{ name, "title22";
+                       type, TEXT;
+                       scale: 1;
+                       description {
+                               state, "default" 0.0;
+                               align: 0.5 0.5;
+                               rel1 {  relative: 0.0 0.0;
+                                               offset:0 0;
+                                               to_x, "title2";
+                                               to_y, "title12";
+                                               
+                                       }
+                               rel2 {  relative: 1.0 1.0;
+                                               offset:0 0;
+                                               to, "title2";
+                                               to_y, "title12";
+                                       }
+                               color, 151 150 150 255;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICHINFO_RELATED_VIDEO_FONT_SIZE;
+                                       align: 0.5 0.5;
+               }
+                       }
+               }
+
+               part{name, "img_bg3";
+                       type, RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state, "default" 0.0;
+                               visible: 0;
+                               rel1 {  relative: VIDEO_LINE_W_R(368)  0.0;
+                                               offset: 0 0;
+                                               to_x, "bg"; to_y, "img_bg1";
+                                       }
+                               rel2 {  relative: VIDEO_LINE_W_R(530) 1.0;
+                                               offset: 0 0;
+                                               to_x, "bg"; to_y, "img_bg1";
+                                       }
+                               color, 54 54 54 255;
+                               align: 0 0.5;
+                       }
+               }
+
+               part{name,"img3";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 1;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: 0 0; to, "img_bg3"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "img_bg3"; }
+                               align: 0.5 0.5;
+                               //fixed: 1 1;
+                       }
+               }
+
+               part{ name, "title3";
+                       type, TEXT;
+                       scale: 1;
+                       description {
+                               state, "default" 0.0;
+                               align: 0.5 0.5;
+                               rel1 {  relative: 0.0 0.0;
+                                               offset:0 0;
+                                               to_x, "img_bg3";
+                                               to_y, "title1";
+                                       }
+                               rel2 {  relative: 1.0 1.0;
+                                               offset:0 0;
+                                               to_x, "img_bg3";
+                                               to_y, "title1";
+                                       }
+                               color, 151 150 150 255;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICHINFO_RELATED_VIDEO_FONT_SIZE;
+                                       align: 0.5 0.5;
+               }
+                       }
+               }
+
+               part{ name, "title32";
+                       type, TEXT;
+                       scale: 1;
+                       description {
+                               state, "default" 0.0;
+                               align: 0.5 0.5;
+                               rel1 {  relative: 0.0 0.0;
+                                               offset:0 0;
+                                               to_x, "title3";
+                                               to_y, "title12";
+                                       }
+                               rel2 {  relative: 1.0 1.0;
+                                               offset:0 0;
+                                               to_x, "title3";
+                                               to_y, "title12";
+                                       }
+                               color, 151 150 150 255;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICHINFO_RELATED_VIDEO_FONT_SIZE;
+                                       align: 0.5 0.5;
+               }
+                       }
+               }
+
+               programs{
+                        program {
+                               name: "clicked";
+                               signal: "mouse,clicked,1";
+                               //source: "img_bg1";
+                               source: "img1";
+                               action: SIGNAL_EMIT "related.video.clicked" "0";
+                       }
+                        program {
+                               name: "clicked1";
+                               signal: "mouse,clicked,1";
+                               //source: "img_bg2";
+                               source: "img2";
+                               action: SIGNAL_EMIT "related.video.clicked" "1";
+                       }
+                        program {
+                               name: "clicked2";
+                               signal: "mouse,clicked,1";
+                               //source: "img_bg3";
+                               source: "img3";
+                               action: SIGNAL_EMIT "related.video.clicked" "2";
+                       }
+               }
+
+       }//parts
+
+}//group
+
+
+/******************for related video detail view start****************************************/
+group{
+       name: "rv_base_box_detail";
+       images {
+               image:  "T02_youtube.png" COMP;
+       }
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part{ name, "title";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               align: 0 0;
+                               rel1 {  //relative: 0 (RICH_INFO_GAB/RICH_INFO_HEIGHT);
+                                               relative: 0 0;
+                                               offset: 0 0;
+                                               to: "bg";
+                                       }
+                               rel2 {  relative: (RICH_INFO_RELATED_VIDEO_TITLE_WIDTH/RICH_INFO_RIGHT_WIDTH) (70/RICH_INFO_HEIGHT);
+                                               offset: 0 0;
+                                               to: "bg";
+                                       }
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                                       text: "Music";
+                   }
+                       }
+               }
+
+               part { name, "youtube_image";
+                       type, IMAGE;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               image { normal: "T02_youtube.png"; }
+                               visible: 1;
+                               align: 0 0.5;
+                               min: 96 48;
+                               max: 96 48;
+                               rel1 { relative: 1 0; offset: 0 0; to_x: "title"; to_y: "title";}
+                               rel2 { relative: 1 1; offset: 0 0; to_x: "title"; to_y: "title";}
+                       }
+               }
+
+               part{name,"rv_content";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                               align: 0 0;
+                               fixed: 0 0;
+                       }
+               }
+
+
+               //for scroller
+               part {
+                       name: "rv_scroller";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               align: 0 0;
+                               fixed: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                       }
+               }
+       }
+}
+
+
+/******************for related video detail view end****************************************/
+
+/******************for track list detail view start****************************************/
+#define RICH_INFO_STARS_BG_W 208
+#define RICH_INFO_STARS_BG_H 48
+#define RICH_INFO_STARS_W_H 32
+#define RICH_INFO_STARS_GAP 4
+#define RICH_INFO_STARS_SX(pos)        (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos)
+#define RICH_INFO_STARS_EX(pos)        (16+(RICH_INFO_STARS_W_H+RICH_INFO_STARS_GAP)*pos+RICH_INFO_STARS_W_H)
+group{
+       name: "track_base_box_detail";
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part{ name, "title";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               align: 0 0;
+                               rel1 { relative: 0 10/RICH_INFO_HEIGHT;  to: "bg";}
+                               rel2 { relative: 1 (58/RICH_INFO_HEIGHT);  to: "bg";}
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                               }
+                       }
+               }
+
+               part{ name, "artist_name";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+
+                               align: 0 0;
+                               rel1 { relative: 0 64/RICH_INFO_HEIGHT; offset: 0 0; }
+                               rel2 { relative: 0.0 112/RICH_INFO_HEIGHT; offset: 0 0; to_x: "star_bg";}
+                               color, SUB_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                               }
+                       }
+               }
+
+               part{
+                       name, "star_bg";
+                       type, RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               align: 0 0;
+                               rel1 { relative: (RICH_INFO_RIGHT_WIDTH -RICH_INFO_STARS_BG_W)/RICH_INFO_RIGHT_WIDTH  0.0; to_y, "artist_name";}
+                               rel2 { relative: 1.0 1.0; to_y, "artist_name";}
+                               color: 0 0 0 0 ;
+                       }
+               }
+
+               part{name,"stars";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 1 0.5;
+                               rel1 {  relative: 16/RICH_INFO_STARS_BG_W 8/RICH_INFO_STARS_BG_H;
+                                               to, "star_bg";
+                                       }
+                               rel2 {  relative: (RICH_INFO_STARS_BG_W-16)/RICH_INFO_STARS_BG_W (40/RICH_INFO_STARS_BG_H);
+                                               to, "star_bg";
+                                       }
+                       }
+               }
+
+               part{name,"star1";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(0)/RICH_INFO_STARS_BG_W 0.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(0)/RICH_INFO_STARS_BG_W 1.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                       }
+               }
+
+               part{name,"star2";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(1)/RICH_INFO_STARS_BG_W 0.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(1)/RICH_INFO_STARS_BG_W 1.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                       }
+               }
+
+               part{name,"star3";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(2)/RICH_INFO_STARS_BG_W 0.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(2)/RICH_INFO_STARS_BG_W 1.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                       }
+               }
+
+               part{name,"star4";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(3)/RICH_INFO_STARS_BG_W 0.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(3)/RICH_INFO_STARS_BG_W 1.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                       }
+               }
+
+               part{name,"star5";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               align: 0 0.5;
+                               rel1 {  relative: RICH_INFO_STARS_SX(4)/RICH_INFO_STARS_BG_W 0.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                               rel2 {  relative: RICH_INFO_STARS_EX(4)/RICH_INFO_STARS_BG_W 1.0;
+                                               to_x, "star_bg";
+                                               to_y, "stars";
+                                       }
+                       }
+               }
+
+               part {
+                       name: "top_tap_line";
+                       type: RECT;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               align: 0 0;
+                               rel1 { relative: 0 122/RICH_INFO_HEIGHT;  to: "bg";}
+                               rel2 { relative: 1 124/RICH_INFO_HEIGHT);  to: "bg";}
+                               color: BOTTOM_LINE_COLOR;
+                       }
+               }
+
+               part{name,"track_genlist";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "top_tap_line"; }
+                               align: 0 0;
+                       }
+               }
+
+               //for scroller
+               part {
+                       name: "track_scroller";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to: "top_tap_line";}
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";}
+                       }
+               }
+       }
+}
+/******************for track list detail view end****************************************/
+
+/******************for discography detail view start****************************************/
+#define RICH_INFO_INTERVAL 0
+group{
+       name: "dis_base_box_detail";
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part { name: "detail_event_box";
+            type : SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                rel1 { relative: 0.0 0.0; to, "bg"; }
+                rel2 { relative: 1.0 1.0; to, "bg"; }
+            }
+        }
+
+               part{ name, "title";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               align: 0 0;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); to: "bg";}
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                                       text: "Music";
+                   }
+                       }
+               }
+
+               part {
+                       name: "top_tap_line";
+                       type: RECT;
+                       description { state: "default" 0;
+                               min: 0 1;
+                               rel1 {
+                                       relative: 0 1.0;
+                                       to: "title" ;
+                               }
+                               rel2 {
+                                       relative: 1 1.0;
+                                       to: "title" ;
+                               }
+                               color: BOTTOM_LINE_COLOR;
+                       }
+               }
+
+               //for scroller
+               part {
+                       name: "dis_scroller";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to: "top_tap_line";}
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";}
+                       }
+               }
+       }
+}
+
+
+/******************for discography detail view end****************************************/
+
+/******************for review detail view start****************************************/
+group{
+       name: "review_base_box_detail";
+        images {
+        image:  "rich_info/12_music_player_bg_01.PNG" COMP;
+        image:  "12_music_playing_bg.png" COMP;
+    }
+
+    parts{
+        part { name: "bg";
+            type : RECT;
+            scale: 1;
+            mouse_events: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                fixed: 1 0;
+               // min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                rel1 { relative: 0.0 0.0; }
+                rel2 { relative: 1.0 1.0; }
+               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part { name: "detail_event_box";
+            type : SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                rel1 { relative: 0.0 0.0; to, "bg"; }
+                rel2 { relative: 1.0 1.0; to, "bg"; }
+            }
+        }
+
+               part{ name, "title";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               align: 0 0;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); offset: 0 0; to: "bg";}
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                                       text: "Music";
+                   }
+                       }
+               }
+
+               part{name,"review_content";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                               align: 0 0;
+                               fixed: 0 0;
+                       }
+               }
+               //for scroller
+               part {
+                       name: "review_scroller";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                       }
+               }
+       }
+}
+
+group{
+       name: "review_content";
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               //min: RICH_INFO_RIGHT_WIDTH 100;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part{name,"review_image";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: 0 0; to, "bg"; }
+                               rel2 { relative: 1.0 0.0; offset: 0 100; to, "bg"; }
+                               align: 0.5 0.5;
+                               fixed: 0 0;
+                       }
+               }
+               //for label
+               part {
+                       name: "review_label";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 0;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to: "review_image";}
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";}
+                       }
+               }
+       }
+}
+
+/******************for review detail view end****************************************/
+
+/******************for biography detail view start****************************************/
+group{
+       name: "bio_base_box_detail";
+        images {
+        image:  "rich_info/12_music_player_bg_01.PNG" COMP;
+        image:  "12_music_playing_bg.png" COMP;
+    }
+
+    parts{
+        part { name: "bg";
+            type : RECT;
+            scale: 1;
+            mouse_events: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                fixed: 1 0;
+                //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                rel1 { relative: 0.0 0.0; }
+                rel2 { relative: 1.0 1.0; }
+                color: MP_INFO_BG_COLOR
+            }
+        }
+
+               part { name: "detail_event_box";
+            type : SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                rel1 { relative: 0.0 0.0; to, "bg"; }
+                rel2 { relative: 1.0 1.0; to, "bg"; }
+            }
+        }
+
+               part{ name, "title";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               align: 0 0;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); offset: 0 0; to: "bg";}
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                                       text: "Music";
+                   }
+                       }
+               }
+
+               part{name,"bio_content";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                               align: 0 0;
+                               fixed: 0 0;
+                       }
+               }
+               //for scroller
+               part {
+                       name: "bio_scroller";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
+                               //rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                       }
+               }
+       }
+}
+
+group{
+       name: "bio_content";
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part{name,"bio_image";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0/RICH_INFO_RIGHT_WIDTH 0/1280; offset: 0 0; to, "bg"; }
+                               rel2 { relative: ((RICH_INFO_BIO_ALBUM_WIDTH)/RICH_INFO_RIGHT_WIDTH) ((RICH_INFO_BIO_ALBUM_HEIGHT)/(RICH_INFO_HEIGHT - RICH_INFO_BASE_BOX_DETAIL_TITLE)); offset: 0 0; to, "bg"; }
+                               align: 0.5 0.5;
+                       }
+               }
+               //for label
+               part {
+                       name: "bio_label";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 0;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to_x: "bg"; to_y: "bio_image";}
+                       }
+               }
+       }
+}
+
+group {
+       name: "bio_image";
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 0;
+                               min: RICH_INFO_BIO_ALBUM_WIDTH RICH_INFO_BIO_ALBUM_HEIGHT;
+                               max: RICH_INFO_BIO_ALBUM_WIDTH RICH_INFO_BIO_ALBUM_HEIGHT;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part{name,"image";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: 0 0; to, "bg"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                       }
+               }
+       }
+}
+
+/******************for biography detail view end****************************************/
+
+
+/******************for simlar albums detail view start****************************************/
+group{
+       name: "sal_base_box_detail";
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part { name: "detail_event_box";
+            type : SWALLOW;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+                visible: 1;
+                rel1 { relative: 0.0 0.0; to, "bg"; }
+                rel2 { relative: 1.0 1.0; to, "bg"; }
+            }
+        }
+
+               part{ name, "title";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               align: 0 0;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); to: "bg";}
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                                       text: "Music";
+                   }
+                       }
+               }
+
+               part {
+                       name: "top_tap_line";
+                       type: RECT;
+                       description { state: "default" 0;
+                               min: 0 1;
+                               rel1 {
+                                       relative: 0 1.0;
+                                       to: "title" ;
+                               }
+                               rel2 {
+                                       relative: 1 1.0;
+                                       to: "title" ;
+                               }
+                               color: BOTTOM_LINE_COLOR;
+                       }
+               }
+
+               //for scroller
+               part {
+                       name: "dis_scroller";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to: "top_tap_line";}
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";}
+                       }
+               }
+       }
+}
+       
+/******************for simlar albums detail view end****************************************/
+
+/******************for simlar artists detail view start****************************************/
+group{
+       name: "sar_base_box_detail";
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part { name: "detail_event_box";
+                   type : SWALLOW;
+                   mouse_events: 1;
+                   scale: 1;
+                   description { state: "default" 0.0;
+                       visible: 1;
+                       rel1 { relative: 0.0 0.0; to, "bg"; }
+                       rel2 { relative: 1.0 1.0; to, "bg"; }
+                   }
+               }
+
+               part{ name, "title";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               align: 0 0;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); to: "bg";}
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                                       text: "Music";
+                   }
+                       }
+               }
+
+               part {
+                       name: "top_tap_line";
+                       type: RECT;
+                       description { state: "default" 0;
+                               min: 0 1;
+                               rel1 {
+                                       relative: 0 1.0;
+                                       to: "title" ;
+                               }
+                               rel2 {
+                                       relative: 1 1.0;
+                                       to: "title" ;
+                               }
+                               color: BOTTOM_LINE_COLOR;
+                       }
+               }
+
+               //for scroller
+               part {
+                       name: "dis_scroller";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 0 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to: "top_tap_line";}
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to: "bg";}
+                       }
+               }
+       }
+}
+       
+/******************for simlar artists detail view end****************************************/
+
+/******************for credit detail view start****************************************/
+group{
+       name: "credit_base_box_detail";
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               fixed: 1 0;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part { name: "detail_event_box";
+                   type : SWALLOW;
+                   mouse_events: 1;
+                   scale: 1;
+                   description { state: "default" 0.0;
+                       visible: 1;
+                       rel1 { relative: 0.0 0.0; to, "bg"; }
+                       rel2 { relative: 1.0 1.0; to, "bg"; }
+                   }
+               }
+
+               part{ name, "title";
+                       type, TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state, "default" 0.0;
+                               fixed: 1 1;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
+                               align: 0 0;
+                               rel1 { relative: 0 0; offset: 0 0; to: "bg";}
+                               rel2 { relative: 1 (RICH_INFO_BASE_BOX_DETAIL_TITLE/RICH_INFO_HEIGHT); offset: 0 0; to: "bg";}
+                               color, TITLE_TEXT_01_COLOR;
+
+                               text {
+                                       font: FONT_STYLE_MEDIUM;
+                                       size: RICH_INFO_TITLE_FONT_SIZE;
+                                       align: 0 0.5;
+                                       text: "Music";
+                   }
+                       }
+               }
+
+               part{name,"credit_content";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                               align: 0 0;
+                               fixed: 0 0;
+                       }
+               }
+
+               //for scroller
+               part {
+                       name: "credit_scroller";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               align: 0 0;
+                               rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                       }
+               }
+       }
+}
+
+group{
+       name: "info_content";
+
+       parts{
+               part { name: "bg";
+                       type : RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: MP_INFO_BG_COLOR
+                       }
+               }
+
+               part{name,"content";
+                       type,SWALLOW;
+                       scale:1;
+                       mouse_events: 0;
+                       description{
+                               state, "default" 0.0;
+                               rel1 { relative: 0.0 0.0; offset: 0 0; to, "bg"; }
+                               rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
+                               align: 0 0;
+                               fixed: 0 0;
+                       }
+               }
+       }
+}
+/******************for credit detail view end****************************************/
+
+/******************for media info detail view start****************************************/
+group{
+       name: "mi_base_box_detail";
+       images {
+        image:  "rich_info/12_music_player_bg_01.PNG" COMP;
+               image:  "12_music_playing_bg.png" COMP;
+    }
+
        parts{
                part { name: "bg";
                        type : RECT;
@@ -405,6 +1969,7 @@ group{
                        description { state: "default" 0.0;
                                visible: 1;
                                fixed: 1 0;
+                               //min: RICH_INFO_RIGHT_WIDTH RICH_INFO_BASE_BOX_DETAIL_TITLE;
                                rel1 { relative: 0.0 0.0; }
                                rel2 { relative: 1.0 1.0; }
                                color: MP_INFO_BG_COLOR
@@ -455,7 +2020,7 @@ group{
                                fixed: 0 0;
                        }
                }
-               
+               //for scroller
                part {
                        name: "mi_scroller";
                        type: SWALLOW;
@@ -463,6 +2028,7 @@ group{
                        scale: 1;
                        description { state: "default" 0.0;
                                visible: 1;
+                               //fixed: 0 1;
                                align: 0 0;
                                rel1 { relative: 0.0 1.0; offset: 0 0; to, "title"; }
                                rel2 { relative: 1.0 1.0; offset: 0 0; to, "bg"; }
index 92a04de..78142e3 100755 (executable)
@@ -1,23 +1,8 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 
+#define SELECTION_INFO_BACKGROUND_COLOR_INC          215 225 232 255
+#define SELECTION_INFO_TEXT_COLOR_INC                77 77 77 255
 
-#define SELECTION_INFO_BACKGROUND_COLOR_INC          69 90 131 255
-#define SELECTION_INFO_TEXT_COLOR_INC          255 255 255 255
-
+#define SELECTION_INFO_MIN_PLAYVIEW_HORZ_W_INC       634
 #define SELECTION_INFO_MIN_VER_W_INC                 720
 #define SELECTION_INFO_MIN_HORZ_W_INC                1280
 #define SELECTION_INFO_VER_PADDING_INC               48
@@ -87,3 +72,64 @@ group { name: "elm/standard/selectioninfo/music/vertical/bottom_64";
    }
 }
 
+group { name: "elm/standard/selectioninfo/music/playview_landscape/bottom_64";
+   parts {
+      part {
+         name: "bg";
+         type: RECT;
+         mouse_events: 1;
+         repeat_events: 1;
+         scale : 1;
+         description {
+            state: "default" 0.0;
+            min: SELECTION_INFO_MIN_PLAYVIEW_HORZ_W_INC SELECTION_INFO_MIN_VER_BOTTOM_64_H_INC;
+            fixed: 1 1;
+            align: 0.5 1.0;
+            rel1.relative: 0.5 1.0;
+            rel2.relative: 0.5 1.0;
+            color: 0 0 0 0;
+         }
+      }
+      part { name: "base";
+         type: RECT;
+         mouse_events: 1;
+         scale : 1;
+         description {
+            state: "default" 0.0;
+            min: 0 SELECTION_INFO_VER_PADDING_INC;
+            fixed: 0 1;
+            align: 0.5 0.0;
+            rel1 { relative: 0.0 0.0; to: "bg"; }
+            rel2 { relative: 1.0 0.32; to: "bg"; }
+            color: SELECTION_INFO_BACKGROUND_COLOR_INC;
+         }
+      }
+      part {
+         name: "elm.text";
+         type: TEXT;
+         mouse_events: 0;
+         scale: 1;
+         description {
+            state: "default" 0.0;
+            align: 0.5 0.0;
+            rel1 { to: "base"; }
+            rel2 { to: "base"; }
+            color: SELECTION_INFO_TEXT_COLOR_INC;
+            text {
+               font: "SLP";
+               size: SELECTION_INFO_TEXT_FONT_SIZE_INC;
+               text: "";
+            }
+         }
+      }
+   }
+   programs {
+      program {
+         name: "clicked";
+         signal: "mouse,clicked,1";
+         source: "base";
+         action: SIGNAL_EMIT "elm,action,click" "";
+      }
+   }
+}
+
diff --git a/layout/mp-square-view.edc b/layout/mp-square-view.edc
new file mode 100755 (executable)
index 0000000..4a5940d
--- /dev/null
@@ -0,0 +1,528 @@
+#define NOW_PLAYING_H  100
+#define GRID_BG_COLOR 0 0 135 255
+#define GRID_TITLE_COLOR 61 64 67 255
+#define GRID_TITLE_SIZE 28
+#define GRID_H 656
+#define GRID_HALF_H 328
+#define GRID_TITLE_H 38
+#define GRID_MAIN_W 720
+
+group {
+       name: "mp_square_view_split_right_layout";
+
+       images {
+               image:  "00_winset_control_toolbar_bg.png" COMP;
+       }
+
+       parts {
+               part { name: "bg";
+                       mouse_events: 0;
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0;
+                                               offset : 0 0;}
+                               rel2 { relative: 1.0 1.0;}
+                               color: 37 37 37 255;
+                       }
+               }
+
+               part {
+                       name : "list_content";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               visible:1;
+                               fixed: 1 1;
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0;to: "bg";}
+                               rel2 { relative: 1.0 0.85;to: "bg";}
+                       }
+               }
+
+               part {
+                       name : "options_bg";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               visible:1;
+                               fixed: 1 1;
+                               state: "default" 0.0;
+                               image { normal: "00_winset_control_toolbar_bg.png";}
+                               rel1 { relative: 0.0 0.85; to: "bg";}
+                               rel2 { relative: 1.0 1.0; to: "bg";}
+                       }
+               }
+               part {
+                       name : "options";
+                       type: SWALLOW;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               visible:1;
+                               fixed: 1 1;
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 0.0;to: "options_bg";}
+                               rel2 { relative: 1.0 1.0;to: "options_bg";}
+                       }
+               }
+       }
+}
+
+group {
+       name: "mp_square_view";
+
+       images {
+               image:  "T02_square_bg.png" COMP;
+               image:  "T02_square_cell_bg.png" COMP;
+               image:  "T02_square_cell_press.png" COMP;
+       }
+
+       parts {
+               part {
+                       name: "square_bg";
+                       mouse_events: 0;
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               image { normal: "T02_square_bg.png";}
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 1.0 1.0;}
+                       }
+               }
+
+               part {
+                       name: "square_cell_bg";
+                       mouse_events: 0;
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               min: 0 690;
+                               fixed: 0 1;
+                               align: 0 1;
+                               image { normal: "T02_square_cell_bg.png";}
+                               rel1 { relative: 0.0 (690+132)/899; to: square_bg;}
+                               rel2 { relative: 1.0 (690+132)/899; to: square_bg;}
+                       }
+               }
+
+               part {
+                   name: "gengrid";
+                   mouse_events: 1;
+                   type: SWALLOW;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   rel1 { relative: 40/720 0.0; to: square_cell_bg;}
+                   rel2 { relative: 1.0-40/720 1-50/690; to: square_cell_bg;}
+                       }
+               }
+
+               part {
+                   name: "title_top";
+                   mouse_events: 0;
+                   type: TEXT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   min: 0 40;
+                   fixed: 0 1;
+                   align: 0 1;
+                   rel1 { relative: 0.0 0.0; to: gengrid;}
+                   rel2 { relative: 1.0 0.0; to: gengrid;}
+                   color: GRID_TITLE_COLOR;
+                   text {
+                                       font:     FONT_NAME;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "EXCITING";
+                               }
+                       }
+               }
+
+               part {
+                   name: "title_bottom";
+                   mouse_events: 0;
+                   type: TEXT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   min: 0 40;
+                   fixed: 0 1;
+                   align: 0 0;
+                   rel1 { relative: 0.0 1.0; to: gengrid;}
+                   rel2 { relative: 1.0 1.0; to: gengrid;}
+                   color: GRID_TITLE_COLOR;
+                   text {
+                                       font:     FONT_NAME;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "Calm";
+                               }
+                       }
+               }
+
+               part {
+                   name: "title_left";
+                   mouse_events: 0;
+                   type: TEXT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 0;
+                   rel1 { relative: 0.0 0.0; to: gengrid;}
+                   rel2 { relative: 1.0 1.0; to: gengrid;}
+                   color: GRID_TITLE_COLOR;
+                   text {
+                                       font:     FONT_NAME;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "Old";
+                               }
+                       }
+               }
+
+               part {
+                   name: "title_right";
+                   mouse_events: 0;
+                   type: TEXT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 0;
+                   rel1 { relative: 0.0 0.0; to: gengrid;}
+                   rel2 { relative: 1.0 1.0; to: gengrid;}
+                   color: GRID_TITLE_COLOR;
+                   text {
+                                       font:     FONT_NAME;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "New";
+                               }
+                       }
+               }
+       }
+}
+
+group {
+       name: "mp_square_view_landscape";
+
+       images {
+               image:  "T02_square_bg.png" COMP;
+               image:  "T02_square_cell_bg.png" COMP;
+               image:  "T02_square_cell_press.png" COMP;
+       }
+
+       parts {
+               part {
+                       name: "square_bg";
+                       mouse_events: 0;
+                   type: IMAGE;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   image { normal: "T02_square_bg.png";}
+                   rel1 { relative: 0.0 0.0;}
+                   rel2 { relative: 1.0 1.0;}
+                       }
+               }
+
+               part {
+                   name: "square_cell_bg";
+                   mouse_events: 0;
+                   type: IMAGE;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   image { normal: "T02_square_cell_bg.png";}
+                   rel1 { relative: 0.0 40/640; to: square_bg;}
+                   rel2 { relative: 1.0 1.0; to: square_bg;}
+                       }
+               }
+
+               part {
+                   name: "gengrid";
+                   mouse_events: 1;
+                   type: SWALLOW;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   rel1 { relative: 40/720 0.0; to: square_cell_bg;}
+                   rel2 { relative: 1.0-40/720 1-40/640; to: square_cell_bg;}
+                       }
+               }
+
+               part {
+                   name: "title_top";
+                   mouse_events: 0;
+                   type: TEXT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   min: 0 40;
+                   fixed: 0 1;
+                   align: 0 1;
+                   rel1 { relative: 0.0 0.0; to: gengrid;}
+                   rel2 { relative: 1.0 0.0; to: gengrid;}
+                   color: GRID_TITLE_COLOR;
+                   text {
+                                       font:     FONT_NAME;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "EXCITING";
+                               }
+                       }
+               }
+
+               part {
+                   name: "title_bottom";
+                   mouse_events: 0;
+                   type: TEXT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 1;
+                   min: 0 40;
+                   fixed: 0 1;
+                   align: 0 0;
+                   rel1 { relative: 0.0 1.0; to: gengrid;}
+                   rel2 { relative: 1.0 1.0; to: gengrid;}
+                   color: GRID_TITLE_COLOR;
+                   text {
+                                       font:     FONT_NAME;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "Calm";
+                               }
+                       }
+               }
+
+               part {
+                   name: "title_left";
+                   mouse_events: 0;
+                   type: TEXT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 0;
+                   rel1 { relative: 0.0 0.0; to: gengrid;}
+                   rel2 { relative: 1.0 1.0; to: gengrid;}
+                   color: GRID_TITLE_COLOR;
+                   text {
+                                       font:     FONT_NAME;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "Old";
+                               }
+                       }
+               }
+
+               part {
+                   name: "title_right";
+                   mouse_events: 0;
+                   type: TEXT;
+                   scale: 1;
+                   description {
+                   state: "default" 0.0;
+                   visible: 0;
+                   rel1 { relative: 0.0 0.0; to: gengrid;}
+                   rel2 { relative: 1.0 1.0; to: gengrid;}
+                   color: GRID_TITLE_COLOR;
+                   text {
+                                       font:     FONT_NAME;
+                                       size:     GRID_TITLE_SIZE;
+                                       min:      0 1;
+                                       align:    0.5 0.5;
+                                       text:     "New";
+                               }
+                       }
+               }
+       }
+}
+
+group { name: "popup_update_library_progressview";
+   parts{
+      part { name: "pad_t";
+         scale : 1;
+         mouse_events: 0;
+         repeat_events: 1;
+         description { state: "default" 0.0;
+            align: 0.5 0.0;
+            min: 0 14;
+            fixed: 0 1;
+            rel1 {
+               relative: 1.0 0.0;
+               to_x: "pad_l";
+            }
+            rel2 {
+               relative: 0.0 0.0;
+               to_x: "pad_r";
+            }
+         }
+      }
+      part { name: "pad_l";
+         scale: 1;
+         description { state: "default" 0.0;
+            min : 10 0;
+            fixed: 1 0;
+            rel1 {
+               relative: 0.0 0.0;
+            }
+            rel2 {
+               relative: 0.0 1.0;
+            }
+            align: 0.0 0.0;
+         }
+      }
+      part { name: "pad_r";
+         scale: 1;
+         description { state: "default" 0.0;
+            min : 10 0;
+            fixed: 1 0;
+            rel1 {
+               relative: 1.0 0.0;
+            }
+            rel2 {
+               relative: 1.0 1.0;
+            }
+            align: 1.0 0.0;
+         }
+      }
+      part{ name:"elm.swallow.content";
+         type: SWALLOW;
+         scale : 1;
+         description { state: "default" 0.0;
+            min: 300 0;
+            align: 0.5 0.5;
+            fixed: 1 0;
+            rel1 {
+               relative: 0.5 1.0;
+               to: "pad_t";
+            }
+            rel2 {
+               relative: 0.5 0.0;
+               to: "pad_b";
+            }
+         }
+      }
+      part { name: "pad_b";
+         scale : 1;
+         mouse_events: 0;
+         repeat_events: 1;
+         description { state: "default" 0.0;
+            align: 0.5 1.0;
+            min: 0 90;
+            fixed: 0 1;
+            rel1 {
+               relative: 1.0 1.0;
+               to_x: "pad_l";
+            }
+            rel2 {
+               relative: 0.0 1.0;
+               to_x: "pad_r";
+            }
+         }
+      }
+      part { name: "elm.swallow.end";
+         type: SWALLOW;
+         scale : 1;
+         mouse_events: 1;
+         repeat_events: 1;
+         description { state: "default" 0.0;
+            align: 0.0 0.0;
+            fixed: 1 1;
+            rel1 {
+               relative: 0.0 0.0;
+               to: "pad_b";
+            }
+            rel2 {
+               relative: 1.0 1.0;
+               to: "pad_b";
+            }
+         }
+      }
+      part { name: "pad_bm";
+         scale : 1;
+         mouse_events: 0;
+         repeat_events: 1;
+         description { state: "default" 0.0;
+            align: 0.0 1.0;
+            min: 0 52;
+            fixed: 0 1;
+            rel1 {
+               relative: 0.0 1.0;
+               to: "pad_b";
+            }
+            rel2 {
+               relative: 1.0 1.0;
+               to: "pad_b";
+            }
+         }
+      }
+      part { name: "elm.text.subtext1";
+         type: TEXT;
+         scale : 1;
+         description { state: "default" 0.0;
+            text {
+               font: "SLP:style=Medium";
+               size: 16;
+               min: 0 0;
+               align: 0.0 1.0;
+              }
+            color: 108 108 108 255;
+            align: 0.0 0.5;
+            rel1 {
+               relative: 0.0 0.0;
+               to: "pad_bm";
+            }
+            rel2 {
+               relative: 1.0 1.0;
+               to: "pad_bm";
+            }
+         }
+      }
+      part { name: "elm.text.subtext2";
+         type: TEXT;
+         scale : 1;
+         description { state: "default" 0.0;
+            text {
+               font: "SLP:style=Medium";
+               size: 16;
+               min: 0 0;
+               align: 1.0 1.0;
+              }
+            color: 108 108 108 255;
+            align: 1.0 0.5;
+            rel1 {
+               relative: 0.0 0.0;
+               to: "pad_bm";
+            }
+            rel2 {
+               relative: 1.0 1.0;
+               to: "pad_bm";
+            }
+         }
+      }
+   }
+}
+
index 3b6aabc..189d602 100755 (executable)
-/*\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://www.tizenopensource.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
-\r
-#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXT_SIZE_INC 28\r
-#define BUTTON_CONTROLBAR_ITEM_BUTTON_TEXTBLOCK_COLOR_INC "#f9f9f9"\r
-#define BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC 56 56\r
-#define BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC 249 249 249 255\r
-#define BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC 249 249 249 255\r
-\r
-#define ITEM_STATE_ENABLED 0\r
-#define ITEM_STATE_DISABLED 1\r
-\r
-group { name: "elm/toolbar/base/music/default";\r
-   images {\r
-      image: "00_winset_control_toolbar_bg.png" COMP;\r
-   }\r
-   parts {\r
-      part { name: "base";\r
-         mouse_events: 1;\r
-         description { state: "default" 0.0;\r
-            image.normal: "00_winset_control_toolbar_bg.png";\r
-         }\r
-      }\r
-      part { name: "clipper";\r
-         type: RECT;\r
-         mouse_events: 0;\r
-         description {\r
-            state: "default" 0.0;\r
-            rel1 {\r
-               to: "base";\r
-               offset: 2 2;\r
-            }\r
-            rel2 {\r
-               to: "base";\r
-               offset: -3 -3;\r
-            }\r
-         }\r
-      }\r
-      part { name: "elm.swallow.content";\r
-         clip_to: "clipper";\r
-         type: SWALLOW;\r
-         description {\r
-            state: "default" 0.0;\r
-            rel1.to: "clipper";\r
-            rel2.to: "clipper";\r
-         }\r
-      }\r
-      part { name: "event";\r
-         type: RECT;\r
-         mouse_events: 1;\r
-         repeat_events: 1;\r
-         description { state: "default" 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/item/music/default";\r
-   images {\r
-      image: "T02_toolbar_press.png" COMP;\r
-   }\r
-   styles{\r
-      style { name: "toolbar_style";\r
-         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";\r
-         tag: "br" "\n";\r
-         tag: "ps" "ps";\r
-         tag: "hilight" "+ font=SLP:style=Bold";\r
-         tag: "b" "+ font=SLP:style=Bold";\r
-         tag: "tab" "\t";\r
-      }\r
-   }\r
-\r
-   data.item: "transition_animation_on" "1";\r
-   script {\r
-      public item_state = ITEM_STATE_ENABLED;\r
-   }\r
-   parts {\r
-      part { name: "bg";\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0;\r
-            visible: 0;\r
-            color: 255 255 255 0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            image {\r
-               normal: "T02_toolbar_press.png";\r
-               border: 3 3 3 3;\r
-            }\r
-            image.middle: SOLID;\r
-            fill.smooth: 0;\r
-         }\r
-         description { state: "selected" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 0;\r
-            color: 255 255 255 0;\r
-         }\r
-      }\r
-      part { name: "padding_left_top";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0;\r
-            align: 0.0 0.0;\r
-            rel2.relative: 0.0 0.0;\r
-            min: 10 8;\r
-            fixed: 1 1;\r
-            visible: 1;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-      part { name: "padding_right_bottom";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0;\r
-            align: 1.0 1.0;\r
-            rel1.relative: 1.0 1.0;\r
-            min: 10 5;\r
-            fixed: 1 1;\r
-            visible: 1;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-      part {\r
-         name: "icon_rect";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0;\r
-            min: 0 0;\r
-            fixed: 0 1;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_left_top";\r
-            }\r
-            align: 0.5 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            fixed: 0 1;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_left_top";\r
-            }\r
-            align: 0.5 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            inherit: "default" 0.0;\r
-         }\r
-      }\r
-      part { name: "padding_after_icon";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0; //when only icon or no icon is there\r
-            align: 0.0 0.0;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to: "icon_rect";\r
-            }\r
-            rel2.to: "icon_rect";\r
-            fixed: 0 1;\r
-            min: 0 0;\r
-            color: 0 0 0 0;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            inherit: "default" 0.0;\r
-         }\r
-      }\r
-      part { name: "padding_before_text";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0; //when only icon or no icon is there\r
-            align: 0.5 1.0;\r
-            rel1 {\r
-               relative: 1.0 0.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "elm.text";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "elm.text";\r
-            }\r
-            fixed: 0 1;\r
-            min: 0 0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-      part { name: "elm.swallow.icon";\r
-         type: SWALLOW;\r
-         scale: 1;\r
-         clip_to: "elm.icon.clipper";\r
-         description { state: "default" 0.0;\r
-            visible: 0;\r
-            align: 0.5 0.0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_left_top";\r
-            }\r
-            fixed: 0 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 0 1;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_before_text";\r
-            }\r
-            aspect: 1.0 1.0;\r
-            aspect_preference: HORIZONTAL;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            aspect: 1.0 1.0;\r
-            aspect_preference: HORIZONTAL;\r
-         }\r
-      }\r
-      part { name: "elm.swallow.icon_new";\r
-         type: SWALLOW;\r
-         scale: 1;\r
-         clip_to: "elm.icon_new.clipper";\r
-         description { state: "default" 0.0;\r
-            visible: 0;\r
-            align: 0.5 0.0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_left_top";\r
-            }\r
-            fixed: 0 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 0 1;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_before_text";\r
-            }\r
-            aspect: 1.0 1.0;\r
-            aspect_preference: HORIZONTAL;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            aspect: 1.0 1.0;\r
-            aspect_preference: HORIZONTAL;\r
-         }\r
-      }\r
-      part { name: "elm.text";\r
-         type: TEXTBLOCK;\r
-         mouse_events: 0;\r
-         scale: 1;\r
-         clip_to: "elm.text.clipper";\r
-         description { state: "default" 0.0;\r
-            visible: 1;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_after_icon";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC;\r
-            fixed: 1 1;\r
-            text {\r
-               style: "toolbar_style";\r
-               min: 0 1;\r
-               max: 0 1;\r
-            }\r
-         }\r
-         description { state: "selected" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "clicked" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-         description { state: "focused" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-      }\r
-      part { name: "elm.text_new";\r
-         type: TEXTBLOCK;\r
-         mouse_events: 0;\r
-         scale: 1;\r
-         clip_to: "elm.text_new.clipper";\r
-         description { state: "default" 0.0;\r
-            visible: 1;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_after_icon";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC;\r
-            fixed: 1 1;\r
-            text {\r
-               style: "toolbar_style";\r
-               min: 0 1;\r
-               max: 0 1;\r
-            }\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "clicked" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-         description { state: "focused" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-      }\r
-      part { name: "elm.text.clipper";\r
-         type: RECT;\r
-         description { state: "default" 0.0;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "animation" 0.0;\r
-            color: 255 255 255 0;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            color: 255 255 255 153;\r
-         }\r
-      }\r
-      part { name: "elm.text_new.clipper";\r
-         type: RECT;\r
-         description { state: "default" 0.0;\r
-            color: 255 255 255 0;\r
-         }\r
-         description { state: "animation" 0.0;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            color: 255 255 255 153;\r
-         }\r
-      }\r
-      part { name: "elm.icon.clipper";\r
-         type: RECT;\r
-         description { state: "default" 0.0;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "animation" 0.0;\r
-            color: 255 255 255 0;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            color: 255 255 255 153;\r
-         }\r
-      }\r
-      part { name: "elm.icon_new.clipper";\r
-         type: RECT;\r
-         description { state: "default" 0.0;\r
-            color: 255 255 255 0;\r
-         }\r
-         description { state: "animation" 0.0;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            color: 255 255 255 153;\r
-         }\r
-      }\r
-      part { name: "event";\r
-         type: RECT;\r
-         mouse_events: 1;\r
-         ignore_flags: ON_HOLD;\r
-         description { state: "default" 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-      part { name: "event2";\r
-         type: RECT;\r
-         mouse_events: 1;\r
-         repeat_events: 1;\r
-         description { state: "default" 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-   }\r
-   programs {\r
-      program { name: "pressed";\r
-         signal:  "mouse,down,1";\r
-         source:  "event";\r
-         script {\r
-            if (get_int(item_state) != ITEM_STATE_DISABLED)\r
-              set_state(PART:"bg", "selected", 0.0);\r
-         }\r
-         transition: LINEAR 0.2;\r
-      }\r
-      program { name: "unpressed";\r
-         signal:  "mouse,up,1";\r
-         source:  "event2";\r
-         action:  STATE_SET "default" 0.0;\r
-         target:  "bg";\r
-         transition: LINEAR 0.1;\r
-      }\r
-      program { name: "go";\r
-         signal:  "mouse,up,1";\r
-         source:  "event";\r
-         action:  SIGNAL_EMIT "elm,action,click" "elm";\r
-      }\r
-      program { name: "mouse,in";\r
-         signal:  "mouse,in";\r
-         source:  "event";\r
-         action:  SIGNAL_EMIT "elm,mouse,in" "elm";\r
-      }\r
-      program { name: "mouse,out";\r
-         signal:  "mouse,out";\r
-         source:  "event";\r
-         action:  SIGNAL_EMIT "elm,mouse,out" "elm";\r
-      }\r
-      program { name: "disable";\r
-         signal: "elm,state,disabled";\r
-         source: "elm";\r
-         script {\r
-            set_int(item_state, ITEM_STATE_DISABLED);\r
-            set_state(PART:"bg", "disabled", 0.0);\r
-            set_state(PART:"elm.text.clipper", "disabled", 0.0);\r
-            set_state(PART:"elm.icon.clipper", "disabled", 0.0);\r
-            run_program(PROGRAM:"label_set,animation,done");\r
-            run_program(PROGRAM:"icon_set,animation,done");\r
-         }\r
-      }\r
-      program { name: "enable";\r
-         signal: "elm,state,enabled";\r
-         source: "elm";\r
-         script {\r
-            set_int(item_state, ITEM_STATE_ENABLED);\r
-            set_state(PART:"bg", "default", 0.0);\r
-            set_state(PART:"elm.text.clipper", "default", 0.0);\r
-            set_state(PART:"elm.icon.clipper", "default", 0.0);\r
-            run_program(PROGRAM:"label_set,animation,done");\r
-            run_program(PROGRAM:"icon_set,animation,done");\r
-         }\r
-      }\r
-      program { name: "label_set,animation,forward";\r
-         signal: "elm,state,label_set,forward";\r
-         source: "elm";\r
-         after: "label_set,animation";\r
-      }\r
-      program { name: "label_set,animation,backward";\r
-         signal: "elm,state,label_set,backward";\r
-         source: "elm";\r
-         after: "label_set,animation";\r
-      }\r
-      program { name: "label_set,animation";\r
-         signal: "elm,state,label_set";\r
-         source: "elm";\r
-         action: STATE_SET "animation" 0.0;\r
-         target: "elm.text.clipper";\r
-         target: "elm.text_new.clipper";\r
-         transition: LINEAR 0.2;\r
-         after: "label_set,animation,done";\r
-      }\r
-      program { name: "label_set,animation,done";\r
-         action: SIGNAL_EMIT "elm,state,label_set,done" "elm";\r
-      }\r
-      program { name: "label,reset";\r
-         signal: "elm,state,label,reset";\r
-         source: "elm";\r
-         script {\r
-            set_state(PART:"elm.text_new.clipper", "default", 0.0);\r
-            if (get_int(item_state) != ITEM_STATE_DISABLED)\r
-              set_state(PART:"elm.text.clipper", "default", 0.0);\r
-            else\r
-              set_state(PART:"elm.text.clipper", "disabled", 0.0);\r
-         }\r
-      }\r
-      program { name: "icon_set,animation,forward";\r
-         signal: "elm,state,icon_set,forward";\r
-         source: "elm";\r
-         after: "icon_set,animation";\r
-      }\r
-      program { name: "icon_set,animation,backward";\r
-         signal: "elm,state,icon_set,backward";\r
-         source: "elm";\r
-         after: "icon_set,animation";\r
-      }\r
-      program { name: "icon_set,animation";\r
-         signal: "elm,state,icon_set";\r
-         source: "elm";\r
-         action: STATE_SET "animation" 0.0;\r
-         target: "elm.icon.clipper";\r
-         target: "elm.icon_new.clipper";\r
-         transition: LINEAR 0.2;\r
-         after: "icon_set,animation,done";\r
-      }\r
-      program { name: "icon_set,animation,done";\r
-         action: SIGNAL_EMIT "elm,state,icon_set,done" "elm";\r
-      }\r
-      program { name: "icon,reset";\r
-         signal: "elm,state,icon,reset";\r
-         source: "elm";\r
-         script {\r
-            set_state(PART:"elm.icon_new.clipper", "default", 0.0);\r
-            if (get_int(item_state) != ITEM_STATE_DISABLED)\r
-              set_state(PART:"elm.icon.clipper", "default", 0.0);\r
-            else\r
-              set_state(PART:"elm.icon.clipper", "disabled", 0.0);\r
-         }\r
-      }\r
-      program { name: "text_show";\r
-         signal: "elm,state,text,visible";\r
-         source: "elm";\r
-         script {\r
-            new st[31];\r
-            new Float:vl;\r
-            get_state(PART:"elm.swallow.icon", st, 30, vl);\r
-            if (!strcmp(st, "icononly"))\r
-              {\r
-                 set_state(PART:"elm.swallow.icon", "visible", 0.0);\r
-                 set_state(PART:"icon_rect", "visible", 0.0);\r
-                 set_state(PART:"padding_after_icon", "visible", 0.0);\r
-              }\r
-            set_state(PART:"elm.text", "visible", 0.0);\r
-         }\r
-      }\r
-      program { name: "text_hide";\r
-         signal: "elm,state,text,hidden";\r
-         source: "elm";\r
-         script {\r
-            new st[31];\r
-            new Float:vl;\r
-            get_state(PART:"elm.swallow.icon", st, 30, vl);\r
-            if (!strcmp(st, "visible"))\r
-              {\r
-                 set_state(PART:"elm.swallow.icon", "icononly", 0.0);\r
-                 set_state(PART:"icon_rect", "icononly", 0.0);\r
-                 set_state(PART:"padding_after_icon", "icononly", 0.0);\r
-              }\r
-            set_state(PART:"elm.text", "default", 0.0);\r
-         }\r
-      }\r
-      program { name: "icon_show";\r
-         signal: "elm,state,icon,visible";\r
-         source: "elm";\r
-         script {\r
-            new st[31];\r
-            new Float:vl;\r
-            get_state(PART:"elm.text", st, 30, vl);\r
-            if (!strcmp(st, "visible"))\r
-              {\r
-                 set_state(PART:"elm.swallow.icon", "visible", 0.0);\r
-                 set_state(PART:"icon_rect", "visible", 0.0);\r
-                 set_state(PART:"padding_after_icon", "visible", 0.0);\r
-              }\r
-            else\r
-              {\r
-                 set_state(PART:"elm.swallow.icon", "icononly", 0.0);\r
-                 set_state(PART:"icon_rect", "icononly", 0.0);\r
-                 set_state(PART:"padding_after_icon", "icononly", 0.0);\r
-              }\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/item/music/item_horizontal";\r
-   inherit: "elm/toolbar/item/music/default";\r
-   script {\r
-      public item_state = ITEM_STATE_ENABLED;\r
-   }\r
-   parts {\r
-      part { name: "icon_rect";\r
-         description { state: "default" 0.0;\r
-            fixed: 1 0;\r
-            align: 0.0 0.5;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 1 0;\r
-            rel2 {\r
-               relative: 1.0 0.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            align: 0.0 0.5;\r
-         }\r
-      }\r
-      part { name: "padding_after_icon";\r
-         description { state: "default" 0.0; //when only icon or no icon is there\r
-            rel1.relative: 1.0 0.0;\r
-            fixed: 1 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            min: 6 0;\r
-         }\r
-      }\r
-      part { name: "padding_before_text";\r
-         description { state: "default" 0.0; //when only icon or no icon is there\r
-            align: 1.0 0.5;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to_x: "elm.text";\r
-               to_y: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               to_x: "elm.text";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            fixed: 1 0;\r
-            min: 6 0;\r
-         }\r
-      }\r
-      part { name: "elm.swallow.icon";\r
-         description { state: "default" 0.0;\r
-            align: 0.0 0.5;\r
-            rel2 {\r
-               relative: 1.0 0.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            fixed: 1 0;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 1 0;\r
-            align: 1.0 0.5;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_before_text";\r
-               to_y: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_before_text";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            aspect_preference: VERTICAL;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            aspect_preference: VERTICAL;\r
-         }\r
-      }\r
-      part { name: "elm.swallow.icon_new";\r
-         description { state: "default" 0.0;\r
-            align: 0.0 0.5;\r
-            rel2 {\r
-               relative: 1.0 0.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            fixed: 1 0;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 1 0;\r
-            align: 1.0 0.5;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_before_text";\r
-               to_y: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_before_text";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            aspect_preference: VERTICAL;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            aspect_preference: VERTICAL;\r
-         }\r
-      }\r
-      part { name: "elm.text";\r
-         type: TEXTBLOCK;\r
-         description { state: "default" 0.0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to_x: "padding_after_icon";\r
-               to_y: "padding_left_top";\r
-            }\r
-            text {\r
-               style: "toolbar_style";\r
-               min: 1 0;\r
-               max: 1 0;\r
-            }\r
-         }\r
-         description { state: "selected" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "clicked" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-         description { state: "focused" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-      }\r
-      part { name: "elm.text_new";\r
-         type: TEXTBLOCK;\r
-         description { state: "default" 0.0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to_x: "padding_after_icon";\r
-               to_y: "padding_left_top";\r
-            }\r
-            text {\r
-               style: "toolbar_style";\r
-               min: 1 0;\r
-               max: 1 0;\r
-            }\r
-         }\r
-         description { state: "selected" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "clicked" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-         description { state: "focused" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/separator/music/default";\r
-   images {\r
-      image: "separator_v.png" COMP;\r
-   }\r
-   parts {\r
-      part { name: "separator"; // separator group\r
-         description { state: "default" 0.0;\r
-            min: 2 2;\r
-            max: 2 9999;\r
-            rel1.offset: 4 4;\r
-            rel2.offset: -5 -5;\r
-            image {\r
-               normal: "separator_v.png";\r
-            }\r
-            fill {\r
-               smooth: 0;\r
-            }\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/object/music/default";\r
-   parts {\r
-      part { name: "elm.swallow.object"; // object group\r
-         type: SWALLOW;\r
-         description {\r
-             state: "default" 0.0;\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/base/music/tabbar";\r
-   images {\r
-      image: "T02_navigation_tabbar_bg.png" COMP;\r
-   }\r
-\r
-   parts {\r
-      part { name: "base";\r
-         mouse_events: 1;\r
-         description { state: "default" 0.0;\r
-            image.normal: "T02_navigation_tabbar_bg.png";\r
-         }\r
-      }\r
-      part { name: "clipper";\r
-         type: RECT;\r
-         mouse_events: 0;\r
-         description {\r
-            state: "default" 0.0;\r
-            rel1 {\r
-               to: "base";\r
-               offset: 2 2;\r
-            }\r
-            rel2 {\r
-               to: "base";\r
-               offset: -3 -3;\r
-            }\r
-         }\r
-      }\r
-      part { name: "elm.swallow.content";\r
-         clip_to: "clipper";\r
-         type: SWALLOW;\r
-         description {\r
-            state: "default" 0.0;\r
-            rel1.to: "clipper";\r
-            rel2.to: "clipper";\r
-         }\r
-      }\r
-      part { name: "event";\r
-         type: RECT;\r
-         mouse_events: 1;\r
-         repeat_events: 1;\r
-         description { state: "default" 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/item/music/tabbar";\r
-   alias: "elm/toolbar/item/music/tabbar/item_horizontal";\r
-   images {\r
-      image: "T02_navigation_tabbar_focus.png" COMP;\r
-   }\r
-\r
-   data.item: "transition_animation_on" "1";\r
-   script {\r
-      public item_state = ITEM_STATE_ENABLED;\r
-   }\r
-   parts {\r
-      part { name: "bg";\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0;\r
-            visible: 0;\r
-            color: 255 255 255 0;\r
-            image {\r
-               normal: "T02_navigation_tabbar_focus.png";\r
-            }\r
-            image.middle: SOLID;\r
-            fill.smooth: 0;\r
-         }\r
-         description { state: "selected" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 0;\r
-            color: 255 255 255 0;\r
-         }\r
-      }\r
-      part { name: "padding_left_top";\r
-            type: RECT;\r
-            scale: 1;\r
-            mouse_events: 0;\r
-            description { state: "default" 0.0;\r
-               align: 0.0 0.0;\r
-               rel2.relative: 0.0 0.0;\r
-               min: 10 8;\r
-               fixed: 1 1;\r
-               visible: 1;\r
-               color: 0 0 0 0;\r
-            }\r
-         }\r
-      part { name: "padding_right_bottom";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0;\r
-            align: 1.0 1.0;\r
-            rel1.relative: 1.0 1.0;\r
-            min: 10 5;\r
-            fixed: 1 1;\r
-            visible: 1;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-      part {\r
-         name: "icon_rect";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0;\r
-            min: 0 0;\r
-            fixed: 0 1;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_left_top";\r
-            }\r
-            align: 0.5 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            fixed: 0 1;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_left_top";\r
-            }\r
-            align: 0.5 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            inherit: "default" 0.0;\r
-         }\r
-      }\r
-      part { name: "padding_after_icon";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0; //when only icon or no icon is there\r
-            align: 0.0 0.0;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to: "icon_rect";\r
-            }\r
-            rel2.to: "icon_rect";\r
-            fixed: 0 1;\r
-            min: 0 0;\r
-            color: 0 0 0 0;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            align: 0.0 0.0;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to: "icon_rect";\r
-            }\r
-            rel2.to: "icon_rect";\r
-            fixed: 0 1;\r
-            min: 0 0;\r
-            color: 0 0 0 0;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            inherit: "default" 0.0;\r
-         }\r
-      }\r
-      part { name: "padding_before_text";\r
-         type: RECT;\r
-         scale: 1;\r
-         mouse_events: 0;\r
-         description { state: "default" 0.0; //when only icon or no icon is there\r
-            align: 0.5 1.0;\r
-            rel1 {\r
-               relative: 1.0 0.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "elm.text";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "elm.text";\r
-            }\r
-            fixed: 0 1;\r
-            min: 0 0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-      part { name: "elm.swallow.icon";\r
-         type: SWALLOW;\r
-         scale: 1;\r
-         clip_to: "elm.icon.clipper";\r
-         description { state: "default" 0.0;\r
-            visible: 0;\r
-            align: 0.5 0.0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_left_top";\r
-            }\r
-            fixed: 0 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 0 1;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_before_text";\r
-            }\r
-            aspect: 1.0 1.0;\r
-            aspect_preference: HORIZONTAL;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            aspect: 1.0 1.0;\r
-            aspect_preference: HORIZONTAL;\r
-         }\r
-      }\r
-      part { name: "elm.swallow.icon_new";\r
-         type: SWALLOW;\r
-         scale: 1;\r
-         clip_to: "elm.icon_new.clipper";\r
-         description { state: "default" 0.0;\r
-            visible: 0;\r
-            align: 0.5 0.0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_left_top";\r
-            }\r
-            fixed: 0 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 0 1;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_right_bottom";\r
-               to_y: "padding_before_text";\r
-            }\r
-            aspect: 1.0 1.0;\r
-            aspect_preference: HORIZONTAL;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            min: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            max: BUTTON_CONTROLBAR_ITEM_BUTTON_ICON_SIZE_INC;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            aspect: 1.0 1.0;\r
-            aspect_preference: HORIZONTAL;\r
-         }\r
-      }\r
-      part { name: "elm.text";\r
-         type: TEXTBLOCK;\r
-         mouse_events: 0;\r
-         scale: 1;\r
-         clip_to: "elm.text.clipper";\r
-         description { state: "default" 0.0;\r
-            visible: 1;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_after_icon";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC;\r
-            fixed: 1 1;\r
-            text {\r
-               style: "toolbar_style";\r
-               min: 0 1;\r
-               max: 0 1;\r
-            }\r
-         }\r
-         description { state: "selected" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "clicked" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-         description { state: "focused" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-      }\r
-      part { name: "elm.text_new";\r
-         type: TEXTBLOCK;\r
-         mouse_events: 0;\r
-         scale: 1;\r
-         clip_to: "elm.text_new.clipper";\r
-         description { state: "default" 0.0;\r
-            visible: 1;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_after_icon";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to: "padding_right_bottom";\r
-            }\r
-            color: BUTTON_NAVIFRAME_DEFAULT_TEXT_COLOR_INC;\r
-            fixed: 1 1;\r
-            text {\r
-               style: "toolbar_style";\r
-               min: 0 1;\r
-               max: 0 1;\r
-            }\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "clicked" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-         description { state: "focused" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-      }\r
-      part { name: "elm.text.clipper";\r
-         type: RECT;\r
-         description { state: "default" 0.0;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "animation" 0.0;\r
-            color: 255 255 255 0;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            color: 255 255 255 153;\r
-         }\r
-      }\r
-      part { name: "elm.text_new.clipper";\r
-         type: RECT;\r
-         description { state: "default" 0.0;\r
-            color: 255 255 255 0;\r
-         }\r
-         description { state: "animation" 0.0;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            color: 255 255 255 153;\r
-         }\r
-      }\r
-      part { name: "elm.icon.clipper";\r
-         type: RECT;\r
-         description { state: "default" 0.0;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "animation" 0.0;\r
-            color: 255 255 255 0;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            color: 255 255 255 153;\r
-         }\r
-      }\r
-      part { name: "elm.icon_new.clipper";\r
-         type: RECT;\r
-         description { state: "default" 0.0;\r
-            color: 255 255 255 0;\r
-         }\r
-         description { state: "animation" 0.0;\r
-            color: 255 255 255 255;\r
-         }\r
-         description { state: "disabled" 0.0;\r
-            color: 255 255 255 153;\r
-         }\r
-      }\r
-      part { name: "event";\r
-         type: RECT;\r
-         mouse_events: 1;\r
-         ignore_flags: ON_HOLD;\r
-         description { state: "default" 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-   }\r
-   programs {\r
-      program { name: "go_active";\r
-         signal:  "elm,state,selected";\r
-         source:  "elm";\r
-         action:  STATE_SET "selected" 0.0;\r
-         target:  "bg";\r
-         transition: LINEAR 0.2;\r
-      }\r
-      program { name: "go_passive";\r
-         signal:  "elm,state,unselected";\r
-         source:  "elm";\r
-         action:  STATE_SET "default" 0.0;\r
-         target:  "bg";\r
-         transition: LINEAR 0.1;\r
-      }/*\r
-         program { name: "pressed";\r
-         signal:  "mouse,down,1";\r
-         source:  "event";\r
-         action:  STATE_SET "selected" 0.0;\r
-         target:  "bg";\r
-         target:  "elm.text";\r
-         target:  "elm.text_new";\r
-         transition: LINEAR 0.2;\r
-      }\r
-      program { name: "unpressed";\r
-         signal:  "mouse,up,1";\r
-         source:  "event";\r
-         action:  STATE_SET "default" 0.0;\r
-         target:  "bg";\r
-         target:  "elm.text";\r
-         target:  "elm.text_new";\r
-         transition: LINEAR 0.1;\r
-      }*/\r
-      program { name: "go";\r
-         signal:  "mouse,up,1";\r
-         source:  "event";\r
-         action:  SIGNAL_EMIT "elm,action,click" "elm";\r
-      }\r
-      program { name: "mouse,in";\r
-         signal:  "mouse,in";\r
-         source:  "event";\r
-         action:  SIGNAL_EMIT "elm,mouse,in" "elm";\r
-      }\r
-      program { name: "mouse,out";\r
-         signal:  "mouse,out";\r
-         source:  "event";\r
-         action:  SIGNAL_EMIT "elm,mouse,out" "elm";\r
-      }\r
-      program { name: "disable";\r
-         signal: "elm,state,disabled";\r
-         source: "elm";\r
-         script {\r
-            set_int(item_state, ITEM_STATE_DISABLED);\r
-            set_state(PART:"bg", "disabled", 0.0);\r
-            set_state(PART:"elm.text.clipper", "disabled", 0.0);\r
-            set_state(PART:"elm.icon.clipper", "disabled", 0.0);\r
-            run_program(PROGRAM:"label_set,animation,done");\r
-            run_program(PROGRAM:"icon_set,animation,done");\r
-         }\r
-      }\r
-      program { name: "enable";\r
-         signal: "elm,state,enabled";\r
-         source: "elm";\r
-         script {\r
-            set_int(item_state, ITEM_STATE_ENABLED);\r
-            set_state(PART:"bg", "default", 0.0);\r
-            set_state(PART:"elm.text.clipper", "default", 0.0);\r
-            set_state(PART:"elm.icon.clipper", "default", 0.0);\r
-            run_program(PROGRAM:"label_set,animation,done");\r
-            run_program(PROGRAM:"icon_set,animation,done");\r
-         }\r
-      }\r
-      program { name: "label_set,animation,forward";\r
-         signal: "elm,state,label_set,forward";\r
-         source: "elm";\r
-         after: "label_set,animation";\r
-      }\r
-      program { name: "label_set,animation,backward";\r
-         signal: "elm,state,label_set,backward";\r
-         source: "elm";\r
-         after: "label_set,animation";\r
-      }\r
-      program { name: "label_set,animation";\r
-         signal: "elm,state,label_set";\r
-         source: "elm";\r
-         action: STATE_SET "animation" 0.0;\r
-         target: "elm.text.clipper";\r
-         target: "elm.text_new.clipper";\r
-         transition: LINEAR 0.2;\r
-         after: "label_set,animation,done";\r
-      }\r
-      program { name: "label_set,animation,done";\r
-         action: SIGNAL_EMIT "elm,state,label_set,done" "elm";\r
-      }\r
-      program { name: "label,reset";\r
-         signal: "elm,state,label,reset";\r
-         source: "elm";\r
-         script {\r
-            set_state(PART:"elm.text_new.clipper", "default", 0.0);\r
-            if (get_int(item_state) != ITEM_STATE_DISABLED)\r
-              set_state(PART:"elm.text.clipper", "default", 0.0);\r
-            else\r
-              set_state(PART:"elm.text.clipper", "disabled", 0.0);\r
-         }\r
-      }\r
-      program { name: "icon_set,animation,forward";\r
-         signal: "elm,state,icon_set,forward";\r
-         source: "elm";\r
-         after: "icon_set,animation";\r
-      }\r
-      program { name: "icon_set,animation,backward";\r
-         signal: "elm,state,icon_set,backward";\r
-         source: "elm";\r
-         after: "icon_set,animation";\r
-      }\r
-      program { name: "icon_set,animation";\r
-         signal: "elm,state,icon_set";\r
-         source: "elm";\r
-         action: STATE_SET "animation" 0.0;\r
-         target: "elm.icon.clipper";\r
-         target: "elm.icon_new.clipper";\r
-         transition: LINEAR 0.2;\r
-         after: "icon_set,animation,done";\r
-      }\r
-      program { name: "icon_set,animation,done";\r
-         action: SIGNAL_EMIT "elm,state,icon_set,done" "elm";\r
-      }\r
-      program { name: "icon,reset";\r
-         signal: "elm,state,icon,reset";\r
-         source: "elm";\r
-         script {\r
-            set_state(PART:"elm.icon_new.clipper", "default", 0.0);\r
-            if (get_int(item_state) != ITEM_STATE_DISABLED)\r
-              set_state(PART:"elm.icon.clipper", "default", 0.0);\r
-            else\r
-              set_state(PART:"elm.icon.clipper", "disabled", 0.0);\r
-         }\r
-      }\r
-      program { name: "text_show";\r
-         signal: "elm,state,text,visible";\r
-         source: "elm";\r
-         script {\r
-            new st[31];\r
-            new Float:vl;\r
-            get_state(PART:"elm.swallow.icon", st, 30, vl);\r
-            if (!strcmp(st, "icononly"))\r
-              {\r
-                 set_state(PART:"elm.swallow.icon", "visible", 0.0);\r
-                 set_state(PART:"icon_rect", "visible", 0.0);\r
-                 set_state(PART:"padding_after_icon", "visible", 0.0);\r
-              }\r
-            set_state(PART:"elm.text", "visible", 0.0);\r
-         }\r
-      }\r
-      program { name: "text_hide";\r
-         signal: "elm,state,text,hidden";\r
-         source: "elm";\r
-         script {\r
-            new st[31];\r
-            new Float:vl;\r
-            get_state(PART:"elm.swallow.icon", st, 30, vl);\r
-            if (!strcmp(st, "visible"))\r
-              {\r
-                 set_state(PART:"elm.swallow.icon", "icononly", 0.0);\r
-                 set_state(PART:"icon_rect", "icononly", 0.0);\r
-                 set_state(PART:"padding_after_icon", "icononly", 0.0);\r
-              }\r
-            set_state(PART:"elm.text", "default", 0.0);\r
-         }\r
-      }\r
-      program { name: "icon_show";\r
-         signal: "elm,state,icon,visible";\r
-         source: "elm";\r
-         script {\r
-            new st[31];\r
-            new Float:vl;\r
-            get_state(PART:"elm.text", st, 30, vl);\r
-            if (!strcmp(st, "visible"))\r
-              {\r
-                 set_state(PART:"elm.swallow.icon", "visible", 0.0);\r
-                 set_state(PART:"icon_rect", "visible", 0.0);\r
-                 set_state(PART:"padding_after_icon", "visible", 0.0);\r
-              }\r
-            else\r
-              {\r
-                 set_state(PART:"elm.swallow.icon", "icononly", 0.0);\r
-                 set_state(PART:"icon_rect", "icononly", 0.0);\r
-                 set_state(PART:"padding_after_icon", "icononly", 0.0);\r
-              }\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/item/music/tabbar/item_horizontal";\r
-   inherit: "elm/toolbar/item/music/tabbar";\r
-   script {\r
-      public item_state = ITEM_STATE_ENABLED;\r
-   }\r
-   parts {\r
-      part { name: "icon_rect";\r
-         description { state: "default" 0.0;\r
-            fixed: 1 0;\r
-            align: 0.0 0.5;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 1 0;\r
-            rel2 {\r
-               relative: 1.0 0.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            align: 0.0 0.5;\r
-         }\r
-      }\r
-      part { name: "padding_after_icon";\r
-         description { state: "default" 0.0; //when only icon or no icon is there\r
-            rel1.relative: 1.0 0.0;\r
-            fixed: 1 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            min: 6 0;\r
-         }\r
-      }\r
-      part { name: "padding_before_text";\r
-         description { state: "default" 0.0; //when only icon or no icon is there\r
-            align: 1.0 0.5;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to_x: "elm.text";\r
-               to_y: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               to_x: "elm.text";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            fixed: 1 0;\r
-            min: 6 0;\r
-         }\r
-      }\r
-      part { name: "elm.swallow.icon";\r
-         description { state: "default" 0.0;\r
-            align: 0.0 0.5;\r
-            rel2 {\r
-               relative: 1.0 0.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            fixed: 1 0;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 1 0;\r
-            align: 1.0 0.5;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_before_text";\r
-               to_y: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_before_text";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            aspect_preference: VERTICAL;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            aspect_preference: VERTICAL;\r
-         }\r
-      }\r
-      part { name: "elm.swallow.icon_new";\r
-         description { state: "default" 0.0;\r
-            align: 0.0 0.5;\r
-            rel2 {\r
-               relative: 1.0 0.0;\r
-               to_x: "padding_left_top";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            fixed: 1 0;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            fixed: 1 0;\r
-            align: 1.0 0.5;\r
-            rel1 {\r
-               relative: 0.0 1.0;\r
-               to_x: "padding_before_text";\r
-               to_y: "padding_left_top";\r
-            }\r
-            rel2 {\r
-               relative: 0.0 0.0;\r
-               to_x: "padding_before_text";\r
-               to_y: "padding_right_bottom";\r
-            }\r
-            aspect_preference: VERTICAL;\r
-         }\r
-         description { state: "icononly" 0.0;\r
-            aspect_preference: VERTICAL;\r
-         }\r
-      }\r
-      part { name: "elm.text";\r
-         type: TEXTBLOCK;\r
-         description { state: "default" 0.0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to_x: "padding_after_icon";\r
-               to_y: "padding_left_top";\r
-            }\r
-            text {\r
-               style: "toolbar_style";\r
-               min: 1 0;\r
-               max: 1 0;\r
-            }\r
-         }\r
-         description { state: "selected" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "clicked" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-         description { state: "focused" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-      }\r
-      part { name: "elm.text_new";\r
-         type: TEXTBLOCK;\r
-         description { state: "default" 0.0;\r
-            rel1 {\r
-               relative: 1.0 1.0;\r
-               to_x: "padding_after_icon";\r
-               to_y: "padding_left_top";\r
-            }\r
-            text {\r
-               style: "toolbar_style";\r
-               min: 1 0;\r
-               max: 1 0;\r
-            }\r
-         }\r
-         description { state: "selected" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "visible" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-         }\r
-         description { state: "clicked" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-         description { state: "focused" 0.0;\r
-            inherit: "default" 0.0;\r
-            visible: 1;\r
-            color: BUTTON_NAVIFRAME_FOCUSED_TEXT_COLOR_INC;\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/base/music/naviframe";\r
-   parts {\r
-      part { name: "base";\r
-         mouse_events: 1;\r
-         description { state: "default" 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-      part { name: "clipper";\r
-         type: RECT;\r
-         mouse_events: 0;\r
-         description {\r
-            state: "default" 0.0;\r
-            rel1 {\r
-               to: "base";\r
-               offset: 2 2;\r
-            }\r
-            rel2 {\r
-               to: "base";\r
-               offset: -3 -3;\r
-            }\r
-         }\r
-      }\r
-      part { name: "elm.swallow.content";\r
-         clip_to: "clipper";\r
-         type: SWALLOW;\r
-         description {\r
-            state: "default" 0.0;\r
-            rel1.to: "clipper";\r
-            rel2.to: "clipper";\r
-         }\r
-      }\r
-      part { name: "event";\r
-         type: RECT;\r
-         mouse_events: 1;\r
-         repeat_events: 1;\r
-         description { state: "default" 0.0;\r
-            color: 0 0 0 0;\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/object/music/naviframe";\r
-   parts {\r
-      part { name: "elm.swallow.object"; // object group\r
-         type: SWALLOW;\r
-         description {\r
-             state: "default" 0.0;\r
-                        rel1.offset: 5 0;\r
-                        rel2.offset: -6 -1;\r
-         }\r
-      }\r
-   }\r
-}\r
-\r
-group { name: "elm/toolbar/item/music/naviframe";\r
-   inherit: "elm/toolbar/item/music/default";\r
-   images {\r
-      image: "00_winset_toolbar_press.png" COMP;\r
-   }\r
-\r
-   script {\r
-      public item_state = ITEM_STATE_ENABLED;\r
-   }\r
-}\r
-\r
-\r
+
+#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;
+         }
+      }
+   }
+}
+
+
index 70cb48f..7c5aa1d 100755 (executable)
@@ -1,19 +1,3 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
 
 #define GENLIST_HEIGHT_1_INC 1
 #define GENLIST_HEIGHT_16_INC 16
 #define GENLIST_SIZE_576_INC 576
 #define GENLIST_SIZE_672_INC 672
 
-#define GENLIST_PART_LIST_PRESS_COLOR_INC 0 140 210 255
-#define GENLIST_PART_LIST_BG_COLOR_INC 0 0 0 255
+#define GENLIST_PART_LIST_PRESS_COLOR_INC 42 137 194 255
+#define GENLIST_PART_LIST_BG_COLOR_INC 249 249 249 255
 
index ae04a42..6b7a0a1 100755 (executable)
@@ -1,96 +1,75 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
 #define FONT_STYLE_ROMAN "SLP:style=Roman"
 #define FONT_STYLE_MEDIUM "SLP:style=Medium"
 #define FONT_STYLE_BOLD "SLP:style=Bold"
 
-#define GENLIST_PART_EXPANDABLE2_NOSHADOW_BASE( param_item_height ) \
-         part { name: "base"; \
-            type: RECT; \
-            repeat_events: 1; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               min: 0 param_item_height; \
-               color: 230 228 215 255; \
-            } \
-         }
-
-#define GENLIST_PART_EXPANDABLE3_NOSHADOW_BASE( param_item_height ) \
-         part { name: "base"; \
-            type: RECT; \
-            repeat_events: 1; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               min: 0 param_item_height; \
-               color: 213 212 195 255; \
-            } \
-         }
-
-#define GENLIST_PART_BG_EXPANDABLE_IMAGE \
-         part { name: "bg_image"; \
-            clip_to: "disclip"; \
-            mouse_events: 0; \
-            description { state: "default" 0.0; \
-               image { \
-                  normal: "00_list_expandable_bg.png"; \
-                  border: 0 0 12 6; \
-                  border_scale: 1; \
-               } \
-            } \
-            description { state: "selected" 0.0; \
-               inherit: "default" 0.0; \
-               image.normal: "00_list_bar_press_1x80.png"; \
-            } \
-         }
-
-#define GENLIST_PART_BG_EXPANDABLE2_IMAGE \
-         part { name: "bg_image"; \
-            clip_to: "disclip"; \
-            mouse_events: 0; \
-            description { state: "default" 0.0; \
-               image { \
-                  normal: "00_list_expandable_2_bg.png"; \
-                  border: 0 0 12 6; \
-                  border_scale: 1; \
-               } \
-            } \
-            description { state: "selected" 0.0; \
-               inherit: "default" 0.0; \
-               image.normal: "00_list_bar_press_1x80.png"; \
-            } \
-         }
-
-#define GENLIST_PART_BG_EXPANDABLE3_NOSHADOW_IMAGE \
-         part { name: "bg_image"; \
-            clip_to: "disclip"; \
-            mouse_events: 0; \
-            description { state: "default" 0.0; \
-               image { \
-                  normal: "00_list_expandable_2_noshadow_bg.png"; \
-                  border: 0 0 0 6; \
-                  border_scale: 1; \
-               } \
-            } \
-            description { state: "selected" 0.0; \
-               inherit: "default" 0.0; \
-               image.normal: "00_list_bar_press_1x80.png"; \
-            } \
-         }
-#define MP_GENLIST_BG_COLOR 37 37 37 255;         
+#define MP_LIST_THUMBNAIL_INNER_LINE \
+               part { name: "innerline.top";\
+                       type: RECT;\
+                       scale: 1;\
+                       mouse_events: 0;\
+                       clip_to: "disclip";\
+                       description { state: "default" 0.0;\
+                               visible: 1;\
+                               fixed: 1 1;\
+                               align: 0 0;\
+                               min: 1 1;\
+                               rel1 {relative: 0.0 0.0; to, "elm.icon";}\
+                               rel2 {relative: 1.0 0.0; to, "elm.icon";}\
+                               color: 0 0 0 255;\
+                       }\
+                       GENLIST_DESCRIPTION_FLIP_ENABLED\
+               }\
+               part { name: "innerline.bottom";\
+                       type: RECT;\
+                       scale: 1;\
+                       mouse_events: 0;\
+                       clip_to: "disclip";\
+                       description { state: "default" 0.0;\
+                               visible: 1;\
+                               fixed: 1 1;\
+                               align: 0 0;\
+                               min: 1 1;\
+                               rel1 {relative: 0.0 1.0; to, "elm.icon";}\
+                               rel2 {relative: 1.0 1.0; to, "elm.icon";}\
+                               color: 0 0 0 255;\
+                       }\
+                       GENLIST_DESCRIPTION_FLIP_ENABLED\
+               }\
+               part { name: "innerline.left";\
+                       type: RECT;\
+                       scale: 1;\
+                       mouse_events: 0;\
+                       clip_to: "disclip";\
+                       description { state: "default" 0.0;\
+                               visible: 1;\
+                               fixed: 1 1;\
+                               align: 0 0;\
+                               min: 1 1;\
+                               rel1 {relative: 0.0 0.0; to, "elm.icon";}\
+                               rel2 {relative: 0.0 1.0; to, "elm.icon";}\
+                               color: 0 0 0 255;\
+                       }\
+                       GENLIST_DESCRIPTION_FLIP_ENABLED\
+               }\
+               part { name: "innerline.right";\
+                       type: RECT;\
+                       scale: 1;\
+                       mouse_events: 0;\
+                       clip_to: "disclip";\
+                       description { state: "default" 0.0;\
+                               visible: 1;\
+                               fixed: 1 1;\
+                               align: 0 0;\
+                               min: 1 1;\
+                               rel1 {relative: 1.0 0.0; to, "elm.icon";}\
+                               rel2 {relative: 1.0 1.0; to, "elm.icon";}\
+                               color: 0 0 0 255;\
+                       }\
+                       GENLIST_DESCRIPTION_FLIP_ENABLED\
+               }\
+
+
+#define MP_GENLIST_BG_COLOR 236 240 242 255;
 #define GENLIST_PART_BASE( param_item_height ) \
          part { name: "base"; \
             type: RECT; \
             } \
          }
 
-#define GENLIST_PART_BG_SELECTED_COLOR_INC 50 65 74 255
+#define GENLIST_PART_BG_SELECTED_COLOR_INC 42 137 194 255
 #define GENLIST_PART_BG_UNSELECTED_COLOR_INC 0 0 0 0
 
-#define GENLIST_PART_BG_IMAGE \
-         part { name: "bg_image"; \
-            type: RECT; \
-            clip_to: "disclip"; \
-            mouse_events: 0; \
-            description { state: "default" 0.0; \
-               color: GENLIST_PART_BG_UNSELECTED_COLOR_INC; \
-            } \
-            description { state: "selected" 0.0; \
-               inherit: "default" 0.0; \
-               color: GENLIST_PART_BG_SELECTED_COLOR_INC; \
-            } \
-         }
-#define MP_BOTTOM_LINE_COLOR 82 82 82 255;
-#define GENLIST_PART_BOTTOM_LINE \
-         part { name: "bottom_line"; \
-            type: RECT; \
-            clip_to: "disclip"; \
-            mouse_events: 0; \
-            description { state: "default" 0.0; \
-               min: 0 1; \
-               fixed: 0 1; \
-               visible: 1; \
-               color: MP_BOTTOM_LINE_COLOR; \
-               rel1 { \
-                  relative: 0.0 1.0; \
-                  offset: 0 -1; \
-               } \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_TOP( param_padding_size ) \
-       part { name: "elm.padding.top"; \
-            type: RECT; \
-            scale: 1; \
-            description { \
-               state: "default" 0.0; \
-               min: 0 param_padding_size; \
-               fixed: 0 1; \
-               visible: 0; \
-               rel2.relative: 1.0 0.0; \
-               align: 0.0 0.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_TEXT_TOP( param_padding_size ) \
-       part { name: "elm.padding.text.top"; \
-            type: RECT; \
-            scale: 1; \
-            description { \
-               state: "default" 0.0; \
-               min: 0 param_padding_size; \
-               fixed: 0 1; \
-               visible: 0; \
-               rel2.relative: 1.0 0.0; \
-               align: 0.0 0.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \
-       part { name: "elm.padding.bottom"; \
-            type: RECT; \
-            scale: 1; \
-            description { \
-               state: "default" 0.0; \
-               min: 0 param_padding_size; \
-               fixed: 0 1; \
-               visible: 0; \
-               rel1.relative: 0.0 1.0; \
-               align: 0.0 1.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
-         part { name: "elm.padding.left"; \
-            type: RECT; \
-            scale: 1; \
-            description { \
-               state: "default" 0.0; \
-               min: param_padding_size 0; \
-               fixed: 1 0; \
-               visible: 0; \
-               rel2.relative: 0.0 1.0; \
-               align: 0.0 0.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
-       part { name: "elm.padding.right"; \
-            type: RECT; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               min: param_padding_size 0; \
-               fixed: 1 0; \
-               visible: 0; \
-               rel1.relative: 1.0  0.0; \
-               align: 1.0 0.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_LEFT_RENAME( param_padding_size ) \
-         part { name: "elm.padding.left.rename"; \
-            type: RECT; \
-            scale: 1; \
-            description { \
-               state: "default" 0.0; \
-               min: param_padding_size 0; \
-               fixed: 1 0; \
-               visible: 0; \
-               rel2.relative: 0.0 1.0; \
-               align: 0.0 0.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_RIGHT_RENAME( param_padding_size ) \
-       part { name: "elm.padding.right.rename"; \
-            type: RECT; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               min: param_padding_size 0; \
-               fixed: 1 0; \
-               visible: 0; \
-               rel1.relative: 1.0  0.0; \
-               align: 1.0 0.0; \
-            } \
-         }
-
-#define BEAT_GENLIST_PART_DISCLIP \
-        part { name: "disclip"; \
-            type: RECT; \
-            description { state: "default" 0.0; \
-               rel1.to: "base"; \
-               rel2.to: "base"; \
-            } \
-            description { state: "disabled" 0.0; \
-               inherit: "default" 0.0; \
-               color: 255 255 255 64; \
-            } \
-         }
-        
-#define SWEEP_PROGRAMS \
-         program { name: "go_slide_right";\
-            signal: "elm,state,slide,right";\
-            source: "elm";\
-            action: STATE_SET "hide" 0.0;\
-            target: "slide_base";\
-             target: "base.disclip";\
-            after: "slide_right_step1";\
-         }\
-         program { name: "slide_right_step1";\
-            action: STATE_SET "hide" 0.1;\
-            target: "slide_base";\
-             target: "base.disclip";\
-            transition: LINEAR 0.3;\
-            after: "slide_right_step2";\
-         }\
-         program { name: "slide_right_step2";\
-            action: STATE_SET "hide" 0.2;\
-            target: "slide_base";\
-             target: "base.disclip";\
-            transition: LINEAR 0.3;\
-            after: "slide_right_step3";\
-         }\
-         program { name: "slide_right_step3";\
-            action: STATE_SET "hide" 0.3;\
-            target: "slide_base";\
-             target: "base.disclip";\
-            transition: LINEAR 0.3;\
-            after: "slide_right_step4";\
-         }\
-         program { name: "slide_right_step4";\
-            action: STATE_SET "repeat_events" 0.0;\
-            target: "elm.between.layer";\
-         }\
-         program { name: "go_slide_left";\
-            signal: "elm,state,slide,left";\
-            source: "elm";\
-            action: STATE_SET "hide" 0.3;\
-            target: "slide_base";\
-             target: "base.disclip";\
-            after: "slide_left_step1";\
-         }\
-         program { name: "slide_left_step1";\
-            action: STATE_SET "default" 0.0;\
-            target: "elm.between.layer";\
-            after: "slide_left_step2";\
-         }\
-         program { name: "slide_left_step2";\
-            action: STATE_SET "hide" 0.2;\
-            target: "slide_base";\
-            target: "base.disclip";\
-            transition: LINEAR 0.3;\
-            after: "slide_left_step3";\
-         }\
-         program { name: "slide_left_step3";\
-            action: STATE_SET "hide" 0.1;\
-            target: "slide_base";\
-             target: "base.disclip";\
-            transition: LINEAR 0.3;\
-            after: "slide_left_step4";\
-         }\
-         program { name: "slide_left_step4";\
-            action: STATE_SET "hide" 0.0;\
-            target: "slide_base";\
-            target: "base.disclip";\
-            transition: LINEAR 0.3;\
-            after: "slide_left_step5";\
-         }\
-         program { name: "slide_left_step5";\
-            action: STATE_SET "default" 0.0;\
-            target: "slide_base";\
-            transition: LINEAR 0.3;\
-            after: "slide_left_finish";\
-         }\
-         program { name: "slide_left_finish";\
-            action: SIGNAL_EMIT "elm,action,sweep,left,finish" "elm";\
-         }\
-
-#define SWEEP_DISCLIP \
-       part { name: "base.disclip";\
-            type: RECT;\
-            description { state: "default" 0.0;\
-               rel1.to: "base";\
-               rel2.to: "base";\
-               color: 255 255 255 0;\
-            }\
-            description { state: "base_show" 0.0;\
-               inherit: "default" 0.0;\
-               color: 255 255 255 255;\
-            }\
-            description { state: "hide" 0.0;\
-               inherit: "default" 0.0;\
-               color: 255 255 255 0; \
-            }\
-            description { state: "hide" 0.1; \
-               inherit: "default" 0.0;\
-               color: 255 255 255 70;\
-            }\
-            description { state: "hide" 0.2;\
-               inherit: "default" 0.0;\
-               color: 255 255 255 160; \
-            }\
-            description { state: "hide" 0.3;\
-               inherit: "default" 0.0;\
-               color: 255 255 255 255;\
-            }\
-         }
-
-#define SWEEP_TEXT \
-       part { name: "elm.base.text";\
-            type: TEXT;\
-           clip_to: "base.disclip";\
-            mouse_events: 0;\
-            scale: 1;\
-            description { state: "default" 0.0;\
-               min: 0 36;\
-               fixed: 0 1;\
-               align: 0.5 0;\
-               rel1 {\
-                  relative: 1 0;\
-                  to_x: "elm.padding.left";\
-                  to_y: "base";\
-               }\
-               rel2 {\
-                  relative: 0 0;\
-                  to_x: "elm.padding.right";\
-                  to_y: "base";\
-               }\
-               color: 255 255 255 255;\
-               text {\
-                  font: "SLP:style=Roman";\
-                  size: 22;\
-                  min: 0 1;\
-                  align: 0.5 0.5;\
-               }\
-            }\
-         }
-         
-#define SWEEP_TRANSPARENT \
-       part { name: "elm.between.layer";\
-            type: RECT;\
-            clip_to: "disclip";\
-            mouse_events: 1;\
-            description { state: "default" 0.0;\
-               rel1.to: "base";\
-               rel2.to: "base";\
-               color: 0 0 0 0;\
-            }\
-            description { state: "repeat_events" 0.0;\
-               inherit: "default" 0.0;\
-               visible: 0;\
-            }\
-         }
-
-#define SWEEP_SLIDABLE_BASE_PARTS \
-       part { name: "slide_base";\
-            type: RECT;\
-            clip_to: "disclip";\
-            scale: 1;\
-            description { state: "default" 0.0;\
-               color: 0 0 0 0;\
-               rel1.to: "base";\
-               rel2.to: "base";\
-            }\
-            description { state: "hide" 0.0;\
-               inherit: "default" 0.0;\
-               rel1 { relative: 0.025 0.0; }\
-               rel2 { relative: 1.025 1.0; }\
-            }\
-            description { state: "hide" 0.1; \
-               inherit: "default" 0.0;\
-               rel1 { relative: 0.13 0.0; }\
-               rel2 { relative: 1.13 1.0; }\
-            }\
-            description { state: "hide" 0.2;\
-               inherit: "default" 0.0;\
-               rel1 { relative: 0.5 0.0; }\
-               rel2 { relative: 1.5 1.0; }\
-            }\
-            description { state: "hide" 0.3;\
-               inherit: "default" 0.0;\
-               rel1 { relative: 1.0 0.0; }\
-               rel2 { relative: 2.0 1.0; }\
-            }\
-         }\
-         part { name: "slide_base.bg_image";\
-            clip_to: "disclip";\
-            description { state: "default" 0.0;\
-               visible: 0;\
-               image.normal: "00_list_bar_press_1x80.png";\
-               rel1.to: "slide_base";\
-               rel2.to: "slide_base";\
-            }\
-            description { state: "selected" 0.0;\
-               inherit: "default" 0.0;\
-               visible: 1;\
-            }\
-         }\
-         part { name: "slide_base.padding.left";\
-            type: RECT;\
-            clip_to: "disclip";\
-            mouse_events: 0;\
-            scale: 1;\
-            description { state: "default" 0.0;\
-               min: 15 0;\
-               fixed: 1 0;\
-               visible: 0;\
-               rel1.to: "slide_base";\
-               rel2 {\
-                  relative: 0 1;\
-                  to: "slide_base";\
-               }\
-            }\
-         }\
-         part { name: "slide_base.padding.right";\
-            type: RECT;\
-            clip_to: "disclip";\
-            mouse_events: 0;\
-            scale: 1;\
-            description { state: "default" 0.0;\
-               min: 15 0;\
-               fixed: 1 0;\
-               visible: 0;\
-               rel1 {\
-                  relative: 1 0;\
-                  to: "slide_base";\
-               }\
-               rel2.to: "slide_base";\
-            }\
-         }\
-
-#define GENLIST_PART_RENAME \
-         part { name: "elm.edit.rename"; \
-            clip_to: "disclip"; \
-            type: SWALLOW; \
-            mouse_events: 1; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               visible: 0; \
-               fixed: 1 1; \
-               rel1 { \
-                  relative: 1.0  0.5; \
-                  to_x: "elm.padding.left"; \
-               } \
-               rel2 { \
-                  relative: 0.0  0.5; \
-                  to_x: "elm.padding.right"; \
-               } \
-            } \
-            description { state: "rename_enabled" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-            } \
-         }
-
-#define GENLIST_DESCRIPTION_RENAME_ENABLED \
-            description { state: "rename_enabled" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 0; \
-            }
-
-#define GENLIST_PROGRAM_RENAME_1TEXT \
-         program { name: "rename_enabled"; \
-            signal: "elm,state,rename,enabled"; \
-            source: "elm"; \
-            action: STATE_SET "rename_enabled" 0.0; \
-            target: "elm.text"; \
-            target: "elm.edit.rename"; \
-         } \
-         program { name: "rename_disabled"; \
-            signal: "elm,state,rename,disabled"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "elm.text"; \
-            target: "elm.edit.rename"; \
-         }            
+#define MP_BOTTOM_LINE_COLOR 169 169 169 255;
 
 #define GENLIST_PART_PADDING_TOP( param_padding_size ) \
        part { name: "elm.padding.top"; \
             } \
          }
 
-#define GENLIST_EDIT_SELECT_ALL_BG_COLOR_INC 0 0 0 255
-#define GENLIST_PART_TEXT_COLOR_INC 249 249 249 255
+#define GENLIST_EDIT_SELECT_ALL_BG_COLOR_INC 215 225 232 255
+#define GENLIST_PART_TEXT_COLOR_INC 0 0 0 255
 #define GENLIST_PART_TEXT_SELECTED_COLOR_INC 249 249 249 255
-#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 64
+#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 110
 
 #define GENLIST_PART_BOTTOM_LINE \
          part { name: "bottom_line"; \
                } \
             }
 
+#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"; \
             target: "elm.text"; \
             target: "elm.icon"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.text"; \
             target: "elm.icon"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
 #define GENLIST_PROGRAM_FLIP_1TEXT_2ICON \
             target: "elm.icon.1"; \
             target: "elm.icon.2"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.icon.1"; \
             target: "elm.icon.2"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
 #define GENLIST_PROGRAM_FLIP_1TEXT_3ICON \
             target: "elm.icon.2"; \
             target: "elm.icon.3"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.icon.2"; \
             target: "elm.icon.3"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
 #define GENLIST_PROGRAM_FLIP_2TEXT \
             target: "elm.text.1"; \
             target: "elm.text.2"; \
             target: "elm.icon"; \
-                       target: "innerline.top"; \
-                       target: "innerline.bottom"; \
-                       target: "innerline.left"; \
-                       target: "innerline.right"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.text.1"; \
             target: "elm.text.2"; \
             target: "elm.icon"; \
-                       target: "innerline.top"; \
-                       target: "innerline.bottom"; \
-                       target: "innerline.left"; \
-                       target: "innerline.right"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
 #define GENLIST_PROGRAM_FLIP_2TEXT_2ICON \
             target: "elm.icon.1"; \
             target: "elm.icon.2"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.icon.1"; \
             target: "elm.icon.2"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
 #define GENLIST_PROGRAM_FLIP_2TEXT_3ICON \
             target: "elm.icon.2"; \
             target: "elm.icon.3"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.icon.2"; \
             target: "elm.icon.3"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
 #define GENLIST_PROGRAM_FLIP_3TEXT \
             target: "elm.text.3"; \
             target: "elm.icon"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.text.3"; \
             target: "elm.icon"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
 #define GENLIST_PROGRAM_FLIP_3TEXT_2ICON \
             target: "elm.icon.1"; \
             target: "elm.icon.2"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.icon.1"; \
             target: "elm.icon.2"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
 #define GENLIST_PROGRAM_FLIP_3TEXT_3ICON \
             target: "elm.icon.2"; \
             target: "elm.icon.3"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          } \
          program { name: "flip_disabled"; \
             signal: "elm,state,flip,disabled"; \
             target: "elm.icon.2"; \
             target: "elm.icon.3"; \
             target: "elm.flip.content"; \
+            MP_INNERLINE_TARGETS\
          }
 
          
index f11b17f..6424006 100755 (executable)
@@ -1,28 +1,22 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 
 #include "mp-defines.h"
 
 collections {
        #include "mp-play-view.edc"
+       #include "mp-play-vew-landscape.edc"
        #include "mp-play-control.edc"
        #include "mp-play-menu.edc"
        #include "mp-play-progress.edc"
        #include "mp-play-info.edc"
        #include "mp-play-current-playing.edc"
        #include "mp-rich-info.edc"
+       #include "mp-lrc.edc"
+       #include "mp-play-mini-app.edc"
+#ifdef MP_3D_FEATURE
+       #include "mp-3d-view.edc"
+#endif
+
+#ifdef MP_SQUARE_FEATURE
+       #include "mp-square-view.edc"
+#endif
 }
diff --git a/org.tizen.music-player.xml b/org.tizen.music-player.xml
new file mode 100755 (executable)
index 0000000..56b1b59
--- /dev/null
@@ -0,0 +1,63 @@
+<?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="/opt/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="en-us">Music</label>
+               <label xml:lang="nl-nl">Muziek</label>
+               <label xml:lang="de-de">Musik</label>
+               <label xml:lang="zh-hk">音樂</label>
+               <label xml:lang="zh-cn">音乐</label>
+               <label xml:lang="ru-ru">Музыка</label>
+               <label xml:lang="zh-tw">音樂</label>
+               <label xml:lang="ja-jp">ミュージック</label>
+               <label xml:lang="es-es">Música</label>
+               <label xml:lang="el-gr">Μουσική</label>
+               <label xml:lang="it-it">Musica</label>
+               <label xml:lang="tr-tr">Müzik</label>
+               <label xml:lang="pt-pt">Música</label>
+               <label xml:lang="fr-fr">Musique</label>
+               <label xml:lang="ko-kr">음악</label>
+               <application-service>
+                       <mime name="music-player.uri" />
+               </application-service>
+       </ui-application>
+        <ui-application appid="org.tizen.sound-player" exec="/opt/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="en-us">Sound Player</label>
+               <label xml:lang="nl-nl">Sound Player</label>
+               <label xml:lang="de-de">Sound Player</label>
+               <label xml:lang="zh-hk">Sound Player</label>
+               <label xml:lang="zh-cn">Sound Player</label>
+               <label xml:lang="ru-ru">Sound Player</label>
+               <label xml:lang="zh-tw">Sound Player</label>
+               <label xml:lang="ja-jp">Sound Player</label>
+               <label xml:lang="es-es">Sound Player</label>
+               <label xml:lang="el-gr">Sound Player</label>
+               <label xml:lang="it-it">Sound Player</label>
+               <label xml:lang="tr-tr">Sound Player</label>
+               <label xml:lang="pt-pt">Sound Player</label>
+               <label xml:lang="fr-fr">Sound Player</label>
+               <label xml:lang="ko-kr">사운드 플레이어</label>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/view" />
+                       <mime name="audio/*" />
+                       <mime name="text/x-iMelody" />
+                       <mime name="application/x-smaf" />
+                       <mime name="text/x-iMelody" />
+                       <uri name="http" />
+                       <uri name="https" />
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/view" />
+                       <mime name="audio/*" />
+                       <mime name="text/x-iMelody" />
+                       <mime name="application/x-smaf" />
+                       <mime name="text/x-iMelody" />
+               </application-service>
+       </ui-application>
+</manifest>
index 60adcf7..99a6df2 100644 (file)
@@ -1,36 +1,38 @@
 Name:       org.tizen.music-player
 Summary:    music player application
-Version:       0.1.3
+Version:    0.1.62
 Release:    1
 Group:      TO_BE/FILLED_IN
-License:    Flora Software License
+License:    Flora
 Source0:    %{name}-%{version}.tar.gz
-BuildRequires: pkgconfig(appcore-efl)
-BuildRequires: pkgconfig(appsvc)
-BuildRequires: pkgconfig(devman_haptic)
-BuildRequires: pkgconfig(dlog)
-BuildRequires: pkgconfig(ecore)
-BuildRequires: pkgconfig(ecore-file)
-BuildRequires: pkgconfig(ecore-imf)
-BuildRequires: pkgconfig(ecore-input)
-BuildRequires: pkgconfig(ecore-x)
-BuildRequires: pkgconfig(edje)
-BuildRequires: pkgconfig(eina)
-BuildRequires: pkgconfig(elementary)
-BuildRequires: pkgconfig(evas)
-BuildRequires: pkgconfig(libmedia-service)
-BuildRequires: pkgconfig(libxml-2.0)
-BuildRequires: pkgconfig(mm-fileinfo)
-BuildRequires: pkgconfig(mm-player)
-BuildRequires: pkgconfig(mm-session)
-BuildRequires: pkgconfig(mm-sound)
-BuildRequires: pkgconfig(pmapi)
-BuildRequires: pkgconfig(svi)
-BuildRequires: pkgconfig(syspopup-caller)
-BuildRequires: pkgconfig(ui-gadget)
-BuildRequires: pkgconfig(utilX)
-BuildRequires: pkgconfig(vconf)
-BuildRequires:  libug-contacts-devel
+BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(elementary)
+BuildRequires:  pkgconfig(ecore)
+BuildRequires:  pkgconfig(capi-media-sound-manager)
+BuildRequires:  pkgconfig(capi-media-player)
+BuildRequires:  pkgconfig(capi-media-metadata-extractor)
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(drm-client)
+BuildRequires:  pkgconfig(ui-gadget-1)
+BuildRequires:  pkgconfig(syspopup-caller)
+BuildRequires:  pkgconfig(capi-system-power)
+BuildRequires:  pkgconfig(vconf)
+BuildRequires:  pkgconfig(libxml-2.0)
+BuildRequires:  pkgconfig(eina)
+BuildRequires:  pkgconfig(ecore-imf)
+BuildRequires:  pkgconfig(ecore-x)
+BuildRequires:  pkgconfig(ecore-file)
+BuildRequires:  pkgconfig(ecore-input)
+BuildRequires:  pkgconfig(libcrypto)
+BuildRequires:  pkgconfig(edje)
+BuildRequires:  pkgconfig(capi-appfw-app-manager)
+BuildRequires:  pkgconfig(evas)
+BuildRequires:  pkgconfig(capi-system-haptic)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(minicontrol-provider)
+BuildRequires:  pkgconfig(capi-system-media-key)
+BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(capi-content-media-content)
 BuildRequires:  cmake
 BuildRequires:  prelink
 BuildRequires:  edje-tools
@@ -39,61 +41,67 @@ BuildRequires:  gettext-tools
 %description
 music player application.
 
+%package -n org.tizen.sound-player
+Summary:    Sound player
+Group:      TO_BE/FILLED_IN
+Requires:   %{name} = %{version}-%{release}
 
+%description -n org.tizen.sound-player
+Description: sound player application
 
 %prep
 %setup -q
 
 
 %define PREFIX /opt/apps/org.tizen.music-player
+%define SP_PREFIX /opt/apps/org.tizen.sound-player
 
 %build
-cmake . -DCMAKE_INSTALL_PREFIX="%{PREFIX}"
+cmake . -DCMAKE_INSTALL_PREFIX="%{PREFIX}" -DCMAKE_DESKTOP_ICON_DIR="/opt/share/icons/default/small"
 make %{?jobs:-j%jobs}
 
 %install
+rm -rf %{buildroot}
 %make_install
 
 execstack -c %{buildroot}%{PREFIX}/bin/music-player
 
-%find_lang music-player
-
+%pre
+if [ -n "`env|grep SBOX`" ]; then
+        echo "postinst: sbox installation"
+else
+        PID=`/bin/pidof music-player`
+        if [ -n "$PID" ]; then
+                echo "preinst: kill current music-player app"
+                /usr/bin/killall -9 music-player
+        fi
+fi
 
-%post 
-/usr/bin/vconftool set -t int db/setting/music-player/menu 7 -g 6514  2> /dev/null
-/usr/bin/vconftool set -t bool db/setting/music-player/se_change 1 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool db/setting/music-player/menu_change 1 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool db/setting/music-player/surround_ch_state 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_val 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/effect_val 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_1 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_2 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_3 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_4 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_5 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_6 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_7 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/setting/music-player/eq_custom_8 0 -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int memory/music/state 0 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int memory/music/process_state 0 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int memory/music/album_art 0 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t string memory/music/pos "00:00" -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t double memory/music/progress_pos 0.0 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool memory/music/play_clicked 1 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool memory/music/pause_clicked 1 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool memory/music/prev_pressed 1 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool memory/music/prev_released 1 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool memory/music/next_pressed 1 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool memory/music/next_released 1 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t bool db/music/menu/shuffle 1 -i -g 6518  2> /dev/null
-/usr/bin/vconftool set -t int db/music/menu/repeat 0 -i -g 6518  2> /dev/null
+%post
+mkdir -p %{PREFIX}/data
 chown -R 5000:5000 %{PREFIX}/data
 
-%files -f music-player.lang
-/opt/share/applications/org.tizen.music-player.desktop
-%{PREFIX}/data
+/usr/bin/vconftool set -t int memory/music/state 0 -i -g 5000
+/usr/bin/vconftool set -t string memory/music/album_art "" -i -g 5000
+/usr/bin/vconftool set -t int db/setting/music-player/menu 7 -g 5000
+/usr/bin/vconftool set -t string memory/private/org.tizen.music-player/pos "00:00" -i -g 5000
+/usr/bin/vconftool set -t double memory/private/org.tizen.music-player/progress_pos 0.0 -i -g 5000
+/usr/bin/vconftool set -t double memory/private/org.tizen.music-player/position_changed 0.0 -i -g 5000
+/usr/bin/vconftool set -t bool db/private/org.tizen.music-player/shuffle 1 -g 5000
+/usr/bin/vconftool set -t int db/private/org.tizen.music-player/repeat 0 -g 5000
+/usr/bin/vconftool set -t int memory/private/org.tizen.music-player/playing_pid 0 -i -g 5000
+
+%files
+/opt/share/packages/org.tizen.music-player.xml
+/opt/share/icons/default/small/org.tizen.music-player.png
 /opt/share/miregex/music-player.uri
 %{PREFIX}/bin/music-player
+%{PREFIX}/res/locale/*/LC_MESSAGES/*.mo
 %{PREFIX}/res/icons/*
 %{PREFIX}/res/edje/*.edj
 
+#/usr/share/packages/org.tizen.sound-player.xml
+/opt/share/icons/default/small/org.tizen.sound-player.png
+%{SP_PREFIX}/bin/sound-player
+%{SP_PREFIX}/res/locale/*/LC_MESSAGES/*.mo
+
index 42e0d75..cb673ca 100755 (executable)
@@ -1,21 +1,45 @@
 # for i18n
 
 SET(POFILES
+       ar.po
+       bg.po
+       ca.po
+       cs.po
+       da.po
        de_DE.po
        el_GR.po
        en.po
+       en_US.po
        es_ES.po
+       fi.po
        fr_FR.po
+       he.po
+       hi.po
+       hu.po
+       id.po
        it_IT.po
+       ja_JP.po
        ko_KR.po
+       lt.po
+       lv.po
+       ms.po
        nl_NL.po
+       no.po
+       pl.po
        pt_PT.po
+       ro.po
        ru_RU.po
+       sk.po
+       sl.po
+       sr.po
+       sv.po
+       th.po
        tr_TR.po
+       uk.po
+       vi.po
        zh_CN.po
        zh_HK.po
        zh_TW.po
-       ja_JP.po
 )
 SET(MSGFMT "/usr/bin/msgfmt")
 
diff --git a/po/ar.po b/po/ar.po
new file mode 100755 (executable)
index 0000000..31f396a
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "قد تضر مستويات الصوت العالية بسمعك إذا استمعت إليها لفترة طويلة"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "غير قابل على الإضافة"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "لا توجد كلمات"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "تعذر تغيير المؤثرات الصوتية عند استخدام القناة 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "العثور على علامة"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "مؤثر صوت القناة 5.1 يعمل في وضع سماعة الأذن فقط"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "يمكن تنشيط القناة 5.1 فقط عند إيقاف المؤثرات الصوتية"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "يتعذر إنشاء قائمة تشغيل"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "يتعذر الحصول على رمز"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "مجلدات"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "تتعذر إزالة العنصر"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "غير قادر على إضافة أكثر من %d ملف موسيقى"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "يتعذر التشغيل أثناء المكالمة"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "الألبوم"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "الألبومات"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "المؤلف"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "حقوق النسخ"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "إنشاء قائمة تشغيل"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "الشرح"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "المفضلة"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "هيئة"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "غير ممكن"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "الموقع"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "لا توجد قوائم تشغيل"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "رقم الأغنية"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "النوع"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "مجهول"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "حذف"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "تمت الإضافة"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "مسح؟"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "تمت إزالة %s"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "تم الحذف"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "حذف؟"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "ضبط كنغمة رنين لمتصل"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "تتعذر إعادة تسمية قائمة التشغيل"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "تعذر ضبطه كنغمة رنين"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "يتعذر مشاركة ملف DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "الألبومات"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "سيرة"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "الإعتمادات"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "معلومات الوسائط"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "جمع الاسطوانات وتصنيفها"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "كلمات الأغنية"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "الاسم طويل"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "التصنيف الأصلي"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "ممكن"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "إعادة عرض"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "قائمة المسارات"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "تمت إضافته بالفعل"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 القناة"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "إضافة إلى قائمة التشغيل"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "الفنان"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "الفنانون"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "تلقائي"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "الاستخدامات المتوفرة"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "تعزيز الصوت الجهير"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "الكورال"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "كلاسيك"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "المؤلف"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "المؤلفون"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "قاعة الحفلة"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "ضبط مخصص"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "رقص"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "معلومات الوسائط"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "ديناميكي"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "مؤثر"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "المعادل"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "موسيقى مجسمة"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "التحويل"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "النوع"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "الانواع"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "الجاز"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "مباشر"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "أكثر ما تم عرضه"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "نقاء صوت الموسيقى"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "قائمة الموسيقى"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "إعدادات الموسيقى"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "ألبوم الفن"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "قوائم التشغيل"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "البوب"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "المضاف حديثا"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "المعروض حديثا"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "الروك"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "مدة الأغنية"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "الصلاحية"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "عريض"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "سنوات"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "غير فعال"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "لا توجد أغاني"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "أغاني"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "إضافة قائمة تشغيل"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "نغمة المكالمة"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "إنشاء قائمة تشغيل"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "تعديل العنوان"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "المحفوظات"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "حذف"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "تغيير الاسم"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "إعادة ترتيب"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "حفظ كقائمة تشغيل"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "نغمة المنبه"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "نغمة رنين المتصل"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "تمت الإضافة إلى %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "تم فصل البلوتوث"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "تم تحديد أقصى عدد للعناصر (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "لا شيء محدد"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "يتعذر الحذف. يتم تشغيل الموسيقى المحددة"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "تعذر التشغيل. حدث خطأ"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "يتعذر التشغيل. نوع ملف غير مدعوم"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "إضافة"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "مشاركة"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "الكل"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "الفنانون"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "المؤلفون"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "القادة"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "الانواع"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "بودكاست"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "أعوام"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "تحديد جهاز"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "عدم العرض مرة أخرى"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "يمكنك بث الموسيقى إلى الأجهزة باستخدام AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "عرض كـ"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "عادي"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "المستخدم"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "لفظي"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "تحسين صوت الجهير"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "تحسين الصوت الثلاثي"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "مقهى"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "القناة الافتراضية 7.1"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "بعد 15 دقيقة"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "بعد 30 دقيقة"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "بعد ساعة"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "بعد ساعة واحدة و30 دقيقة"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "بعد ساعتين"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "إيقاف الموسيقى التلقائي"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "مؤثر الصوت هذا يعمل في وضعي سماعة الأذن وسماعة البلوتوث فقط"
+
diff --git a/po/bg.po b/po/bg.po
new file mode 100755 (executable)
index 0000000..ba788e7
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Голямата сила на звука може да увреди слуха ви, ако слушате дълго"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Не може да се добави"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Няма текст"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Звуковите ефекти не може да се сменят, когато се използват 5.1 канала"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Намиране на таг"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-каналният звуков ефект работи само в режим на слушалки"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 канала може да се активират само когато звуковите ефекти са изключени"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Не може да се създаде списък за изпълнение"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Не може да се получи таг"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Папки"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Елементът не може да се премахне"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Не могат да се добавят повече от %d музикални файла"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Не може да се възпроизведе по време на разговор"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Албум"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Албуми"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Автор"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Авторски права"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Създаване на списък за изпълнение"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Описание"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Предпочитани"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Невъзможно"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Позиция"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Няма списъци с песни"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Песента номер"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Тип"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Неизвестно"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Изтриване"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Добавен"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Изтриване?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s извадена"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Премахнат"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Премахване?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Задай като тон звънене"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Списъкът за изпълнение не може да се преименува"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Не може да се зададе за тон на звънене"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Не може да се сподели файл с DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Албуми"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Биография"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Благодарение на"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Мултимедийна информация"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Дискография"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Текст"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Името е твърде дълго"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Родителска оценка"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Lъзможно"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Преглед"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Списък със записи"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Вече е добавено"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 канала"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Добавяне в списък за възпроизвеждане"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Изпълнител"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Изпълнители"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Налични употреби"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Подобряване на баса"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Хор"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Класическа"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Композитор"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Композитор"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Концертна зала"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "По избор"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Танц"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Мултимедийна информация"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Динамично"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Ефект"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Еквалайзер"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Открито пространство"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Препращане"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Жанр"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Жанрове"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "На живо"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Най-изпълнявани"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Чистота на звука"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Меню музика"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Настройки за музика"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Корица албум"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Плейлиста"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Поп"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Последно добавени"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Последно изпълнени"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Рок"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Песента дължина"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Тремоло"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Валидност"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Уа-уа"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Панор."
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Години"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Изключи"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Няма песни"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Песни"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Добави плейлиста"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Тон за звънене"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Създаване на списък за изпълнение"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Редактиране на заглавие"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Хронология"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Премаxване"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Преименуване"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Пренареждане"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Запиши като списък за изпълнение"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Тон аларма"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Тон за звънене за повикващ"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Добавено в %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth е прекъснат"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Достигнат е максималният брой избрани елементи (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Нищо не е избрано"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Не може да се изтрие. Избраната музика се възпроизвежда"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Не може да се възпроизведе. Възникна грешка"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Не може да се възпроизведе. Неподдържан вид файл"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Добави"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Споделяне"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Всички"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Изпълнители"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Композ."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Диригент"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Жанрове"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Подкасти"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Години"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Избор на устр-во"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Не показвай отново"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Можете да предавате поточно музиката си до устройства с помощта на AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Пр. като"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Нормален"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Потребител"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Вокали"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Усилване на басите"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Усилване на високите"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Кафе"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Виртуален 7.1 кан"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "След 15 мин"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "След 30 мин."
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "След 1 час"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "След 1 час и 30 мин"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "След 2 часа"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Авто изключване на музика"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Този звуков ефект работи само в режими на слушалка и Bluetooth слушалки"
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100755 (executable)
index 0000000..95f0c0c
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Volums elevats poden malmetre la seva oïda si els escolta durant molt temps"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "No es pot afegir"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Sense lletra"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "No es poden canviar els efectes de so quan s'utilitza el canal 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Buscar etiqueta"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "L'efecte de so del canal 5.1 només funciona en mode auricular"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Només es pot activar el canal 5.1 quan es desactiven els efectes de so"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "No es pot crear llista de reproducció"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "No es pot obtenir l'etiqueta"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Carpetes"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "No es pot extraure l'element"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "No es poden afegir més de %d fitxers de música"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "No es pot reproduir durant la trucada"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Àlbum"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Àlbums"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Crear llista de reproducció"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Descripció"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Preferits"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "No és possible"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Ubicació"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "No hi ha llistes de reproducció"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Número de pista"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipus"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Desconegut"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Esborrar"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Afegit"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Esborrar?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s eliminat"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Eliminat"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Eliminar?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Definir com a melodia de la persona que truca"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "No es pot canviar el nom de la llista de reproducció"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "No es pot definir com a melodia"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "No es pot compartir un fitxer DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Àlbums"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografia"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Crèdits"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Info multimèdia"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lletra"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nom massa llarg"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Classificació dels pares"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Possible"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Revisar"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Llista de pistes"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Ja s'ha afegit"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Canal 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Afegir a llista de reproducció"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artista"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artistes"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Usos disponibles"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Millora dels baixos"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Cor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Clàssica"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compositor"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compositors"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Sala de concerts"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Personalitzat"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Info multimèdia"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinàmica"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efecte"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalitzador"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalització"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Reenviant"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Gènere"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Gèneres"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Directe"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "El més reproduït"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Claredat musical"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menú Música"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Ajustaments de música"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Caràtula àlbum"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Llistes de reproducció"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Afegides recentment"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Escoltades recentment"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Durada de pista"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validesa"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Ample"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Anys"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Desactiv"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Cap cançó"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Cançons"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Afegir llista de reproducció"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Melodia de trucada"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Crear llista de reproducció"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Editar títol"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historial"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Eliminar"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Canviar nom"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Tornar a ordenar"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Desar com a llista de reproducció"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "To d'alarma"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Melodia de la persona que truca"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Afegit a %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth desconnectat"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "S'ha seleccionat el nombre màxim d'elements (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "No s'ha seleccionat res"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "No es pot esborrar. La musica seleccionada s'està reproduint"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "No es pot reproduir. S'ha produït un error"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "No es pot reproduir. No s'admet el tipus de fitxer"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Afegir"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Compartir"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Tot"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artistes"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Composit"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Directors"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Gèneres"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Anys"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Seleccioni dispositiu"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "No tornar a mostrar"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Pot reproduir la seva música en dispositius mitjançant AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Veure com"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Usuari"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Accentuació de baixos"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Accentuació d'aguts"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafè"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "7.1 canals virtuals"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Després de 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Després de 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Després d'1 hora"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Després d'1 hora 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Després de 2 hores"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Música automàtica desactivada"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Aquest efecte de so només funciona en els modes auricular i auriculars Bluetooth"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100755 (executable)
index 0000000..66525a3
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Dlouhodobý poslech velmi hlasité reprodukce může poškodit sluch"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Nelze přidat"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Bez textu"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Při použití režimu kanálu 5.1 nelze změnit zvukové efekty"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Najít značku"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Zvukový efekt 5.1 kanál funguje pouze v režimu sluchátka"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Režim 5.1 kanál lze aktivovat pouze když jsou vypnuté zvukové efekty"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Nelze vytvořit seznam skladeb"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Značku nelze získat"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Složky"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Položku nelze odebrat"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Nelze přidat více hudebních souborů než %d"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Nelze přehrát během hovoru"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Alba"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Vytvořit seznam skladeb"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Popis"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Oblíbené"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formát"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Nemožné"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Místo"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Žádné seznamy skladeb"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Číslo dráhy"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Typ"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Neznámý"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Odstranit"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Přidáno"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Odstranit?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s byla odebrána"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Odstraněno"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Odstranit?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Nastavit jako vyzváněcí tón volajícího"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Seznam skladeb nelze přejmenovat"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Nelze nastavit jako vyzváněcí tón"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Soubor DRM nelze sdílet"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Alba"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Životopis"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Kredity"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Informace o médiu"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografie"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Text"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Jméno je příliš dlouhé"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Obecné hodnocení"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Možné"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Kontrola"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Seznam skladeb"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Již přidáno"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanál"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Přidat do přehrávaného seznamu"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Interpret"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Interpreti"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automaticky"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Počet použití k dispozici"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Zvýraznění basů"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Sbor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasika"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Skladatel"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Skladatelé"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Koncertní sál"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Vlastní"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Tanec"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Informace o médiu"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamicky"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvalizér"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalizace"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Předání"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Žánr"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žánry"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Živě"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Nejčastěji přehrávané"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Čistý zvuk"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Nabídka Hudba"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Nastavení hudby"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Obal alba"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Seznamy skladeb"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Poslední přidané"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Poslední přehrané"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Délka skladby"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Platnost"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Bum bum"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Široký"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Roky"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Vypnout"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Žádné skladby"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Skladby"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Přidat seznam skladeb"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Vyzváněcí tón hovoru"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Vytvořit seznam skladeb"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Upravit název"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historie"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Odstranit"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Přejmenovat"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Změnit uspořádání"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Uložit jako seznam skladeb"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Tón upozornění"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Zvonění volajícího"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Přidáno do %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth odpojeno"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Byl vybrán maximální počet položek (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Není nic vybráno"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Nelze odstranit. Vybraná hudba se přehrává"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Nelze přehrát. Došlo k chybě"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Nelze přehrát. Nepodporovaný typ souboru"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Přid."
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Sdílet"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Vše"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Interpreti"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Skladat."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigenti"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žánry"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasty"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Roky"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Zvolte umístění"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Znovu nezobrazovat"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Pomocí AllShare lze vysílat datový proud hudby do zařízení"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Zob. jako"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normální"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Uživatel"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokály"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Zesílení basů"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Zesílení výšek"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kavárna"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuální 7.1 kan."
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Za 15 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Za 30 minut"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Za 1 hodinu"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Za 1 hodinu 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Za 2 hodiny"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Automatické vypnutí hudby"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Tento zvukový efekt funguje pouze se sluchátky a se sluchátky Bluetooth"
+
diff --git a/po/da.po b/po/da.po
new file mode 100755 (executable)
index 0000000..0b10346
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Høj musik kan skade din hørelse, hvis du lytter i for lang tid"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Der kan ikke tilføjes"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Ingen lyrik"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Kan ikke ændre lydeffekter ved brug af 5.1 kanal"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Find Kode"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 effekten kanallyd fungerer kun i tilstanden høretelefoner"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 kanal kan kun aktiveres, når lydeffekter er fra"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Afspilningslisten kan ikke oprettes"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Kunne ikke hente tag"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mapper"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Elementet kunne ikke fjernes"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Kunne ikke tilføje mere end %d musikfil"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Kunne ikke afspille under opkald"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Forfatter"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Ophavsret"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Opret afspilningsliste"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Beskrivelse"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritter"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Ikke mulig"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Placering"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Ingen afspilningslister"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Spor-nummer"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Type"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Ukendt"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Slet"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Tilføjet"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Slet?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s er fjernet"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Fjernet"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Fjern?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Indstil som opkaldsringetone"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Afspilningslisten kan ikke omdøbes"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Kan ikke indstille som ringetone"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM-fil kan ikke deles"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografi"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Anerkendelse"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Medieoplysninger"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografi"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lyrik"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Navnet er for langt"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Forældrebedømmelse"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Muligt"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Visning"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Afspilningsliste"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Allerede tilføjet"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanal"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Føj til afspilningsliste"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Kunstner"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Kunstnere"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Gange tilbage"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Basforbedring"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Kor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassisk"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Komponist"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Komponister"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Koncertsal"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Brugerdefineret"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Medieoplysninger"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamisk"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Eksternalisering"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Viderestiller"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genrer"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Direkte"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Mest afspillede"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musikklarhed"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musikmenu"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Musikindstillinger"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albumcover"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Afspilningslister"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Tilføjet for nylig"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Afspillet for nylig"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Sporets længde"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Gyldighed"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Bred"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Fra"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Ingen sange"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Sange"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Tilføj afspilningsliste"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Telefonringetone"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Opret afspilningsliste"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Rediger titel"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Oversigt"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Fjern"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Omdøb"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Skift rækkefølge"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Gem som afspilningsliste"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarmtone"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Kontakt ringetone"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Føjet til %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth-forbindelse afbrudt"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Det maksimale elementer (%d) valgt"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Intet er valgt"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Kan ikke slette. Valgt musik afspilles"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Kan ikke afspille. Der opstod en fejl"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Kan ikke afspille. Filtypen understøttes ikke"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Tilføj"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Del"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Alle"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Kunstnere"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Kompon."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigent"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genrer"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Vælg enhed"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Vis ikke igen"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Du kan streame din musik til enheder ved hjælp af AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Vis som"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Bruger"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Basforstærkning"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Diskantforstærkning"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuel 7.1-kan"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Efter 15 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Efter 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Efter 1 time"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Efter 1 time og 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Efter 2 timer"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Automatisk musik fra"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Denne lydeffekt fungerer kun i tilstandene høretelefon og Bluetooth-høretelefon"
+
index 696784d..156023e 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Das Hören lauter Musik über einen längeren Zeitraum kann sich schädlich auf Ihr Gehör auswirken."
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Hinzufügen nicht möglich"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Keine\nLyrics"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Soundeffekte können nicht geändert werden, wenn Kanal 5.1 verwendet wird."
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Tag finden"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-Sound-Effekte nur im Kopfhörer-Modus möglich"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Kanal 5.1 kann nur aktiviert werden, wenn die Soundeffekte ausgeschaltet sind."
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Erstellen der Wiedergabeliste nicht möglich"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Tag kann nicht abgerufen werden"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Ordner"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Element kann nicht entfernt werden"
 
@@ -328,3 +358,57 @@ msgstr "Podcasts"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Jahre"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Gerät auswählen"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Nicht mehr anzeigen"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Sie können Ihre Musik mit AllShare auf Geräte streamen."
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Ansicht"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Benutzer"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bass Boost"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Treblebooster"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Café"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "7.1 Kanäle virtuell"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Nach 15 Min."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Nach 30 Minuten"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Nach 1 Stunde"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Nach 1 Stunde und 30 Minuten"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Nach 2 Stunden"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Musik-Auto aus"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Dieser Sound-Effekt funktioniert nur im Kopfhörer- und Bluetooth-Headset-Modus."
+
index ac57305..5a3a835 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Η ακρόαση μουσικής σε υψηλή ένταση για μεγάλο χρονικό διάστημα μπορεί να βλάψει την ακοή σας"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Δεν είναι δυνατή η προσθήκη"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Χωρίς στίχους"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Δεν είναι δυνατή η αλλαγή των ηχητικών εφέ κατά τη χρήση του καναλιού 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Αναζήτηση ετικέτας"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Τo εφέ ήχων του καναλιού 5.1 εκτελείται μόνο στη λειτουργία ακουστικών"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Το κανάλι 5.1 μπορεί να ενεργοποιηθεί μόνο όταν τα ηχητικά εφέ είναι απενεργοποιημένα"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Δεν είναι δυνατή η δημιουργία λίστας αναπαραγωγής"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Δεν είναι δυνατή η λήψη φράσης"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Φάκελοι"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Δεν είναι δυνατή η αφαίρεση του στοιχείου"
 
@@ -328,3 +358,57 @@ msgstr "Podcasts"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Έτη"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Επιλογή συσκευής"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Να μην εμφανιστεί ξανά"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Μπορείτε να ακούσετε τη μουσική σας μέσω ροής σε συσκευές χρησιμοποιώντας το AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Προβ. ως"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Κανονικό"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Χρήστης"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Φωνητικά"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Ενίσχυση μπάσων"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Ενίσχυση πρίμων"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Καφετέρια"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Εικονικό κανάλι 7.1"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Μετά από 15 λεπτά"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Μετά από 30 λεπτά"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Μετά από 1 ώρα"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Μετά από 1 ώρα 30 λεπτά"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Μετά από 2 ώρες"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Αυτόματη απενεργοποίηση μουσικής"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Αυτό το εφέ ήχων εκτελείται μόνο στη λειτουργία ακουστικών και Bluetooth"
+
index eae3f90..5df2de2 100755 (executable)
--- a/po/en.po
+++ b/po/en.po
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "High volumes may harm your hearing if you listen for a long time"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Unable to add"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "No lyrics"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Unable to change sound effects when using 5.1 channel"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Find tag"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 channel sound effect works in earphone mode only"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 channel can only be activated when sound effects are off"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Unable to create playlist"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Unable to get tag"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Folders"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Unable to remove item"
 
@@ -328,3 +358,57 @@ msgstr "Podcasts"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Years"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Select device"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Do not show again"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "You can stream your music to devices using AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "View as"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "User"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bass boost"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Treble boost"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "After 15 mins"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "After 30 mins"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "After 1 hour"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "After 1 hour 30 mins"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "After 2 hours"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Music auto off"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "This sound effect works in earphone and Bluetooth headset modes only"
+
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100755 (executable)
index 0000000..3beab2d
--- /dev/null
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "High volumes may harm your hearing if you listen for a long time"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Unable to add"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "No lyrics"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Unable to change sound effects when using 5.1 channel"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Find tag"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 channel sound effect works in earphone mode only"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 channel can only be activated when sound effects are off"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Unable to create playlist"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Unable to get tag"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Folders"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Unable to remove item"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Unable to add more than %d music file"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Unable to play during call"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Author"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Create playlist"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Description"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favorites"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Impossible"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Location"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "No playlists"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Track number"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Type"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Unknown"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Delete"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Added"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Delete?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s removed"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Removed"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Remove?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Set as caller ringtone"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Unable to rename playlist"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Unable to set as ringtone"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Unable to share DRM file"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biography"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Credits"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Media info"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discography"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lyric"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Name too long"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Parent rating"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Possible"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Review"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Track list"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Already added"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 channel"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Add to playlist"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artists"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Available uses"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bass enhancement"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Chorus"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Composer"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Composers"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Concert hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Custom"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Media info"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamic"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effect"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalization"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Forwarding"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Most played"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Music clarity"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Music menu"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Music settings"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Album art"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Playlists"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Recently added"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Recently played"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Track length"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Validity"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Wide"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Years"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Off"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "No songs"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Songs"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Add playlist"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Call ringtone"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Create playlist"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Edit title"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "History"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Remove"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Rename"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Reorder"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Save as playlist"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarm tone"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Caller ringtone"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Added to %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth disconnected"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maximum number of items (%d) selected"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nothing selected"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Unable to delete. Selected music is playing"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Unable to play. Error occurred"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Unable to play. Unsupported file type"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Add"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Share"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "All"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artists"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Composers"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Conductors"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genres"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Years"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Select device"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Do not show again"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "You can stream your music to devices using AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "View as"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "User"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bass boost"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Treble boost"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "After 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "After 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "After 1 hour"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "After 1 hour 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "After 2 hours"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Music auto off"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "This sound effect works in earphone and Bluetooth headset modes only"
+
index 99a6189..9271184 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "El volumen alto durante un tiempo prolongado puede dañar sus oídos"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "No se puede añadir"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Sin letra"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "No se pueden cambiar los efectos de sonido con el canal 5.1 en uso"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Buscar etiqueta"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "El efecto de sonido del canal 5.1 sólo funciona en modo auricular"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "El canal 5.1 sólo puede activarse con efectos de sonido desactivados"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "No se puede crear la lista de reproducción"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "No se puede obtener etiqueta"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Carpetas"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "No se puede quitar elemento"
 
@@ -266,7 +296,7 @@ msgid "IDS_MUSIC_OPT_REMOVE"
 msgstr "Eliminar"
 
 msgid "IDS_MUSIC_OPT_RENAME"
-msgstr "Cambiar nombre"
+msgstr "Renombrar"
 
 msgid "IDS_MUSIC_OPT_REORDER"
 msgstr "Reordenar"
@@ -328,3 +358,57 @@ msgstr "Podcasts"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Años"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Seleccione dispositivo"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "No mostrar de nuevo"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Puede transmitir su música en dispositivos usando AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Ver como"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Usuario"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Ecualizar graves"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Ecualizar agudos"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Café"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Canales 7.1 virtuales"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Después de 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Después de 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Después de 1 hora"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Después de 1 hora 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Después de 2 horas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Música automática desactivada"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Este efecto de sonido sólo funciona en los modos de auricular y auricular Bluetooth"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100755 (executable)
index 0000000..41eace7
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Suuri äänenvoimakkuus vaurioittaa kuuloasi pitkäaikaisen kuuntelun aikana"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Lisääminen ei onnistu"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Ei sa-noitusta"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Äänitehosteita ei voi muuttaa, kun 5.1-kanava on käytössä"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Etsi tunniste"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-kanavainen äänitehoste toimii vain kuuloketilassa"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1-kanava voidaan aktivoida vain silloin, kun äänitehosteet on poistettu käytöstä"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Soittolistan luonti epäonnistui"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Tunnistetta ei voi hakea"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Kansiot"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Kohdetta ei voi poistaa"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Yli %d musiikkitiedostoa ei voi lisätä"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Puhelun aikana ei voi toistaa"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumit"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Tekijä"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Tekijänoikeus"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Luo soittolista"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Kuvaus"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Suosikit"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Muoto"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Mahdoton"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Paikka"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Ei soittolistoja"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Kappaleen numero"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tyyppi"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Tuntematon"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Poista"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Lisätty"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Poistetaanko?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s poistettu"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Poistettu"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Poistetaanko?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Aseta soittajan soittoääneksi"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Soittolistan nimeäminen uudelleen epäonnistui"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Ei voi asettaa soittoääneksi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM-tiedostoa ei voi jakaa"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumit"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografia"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Tekijät"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Median tiedot"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Sanoitus"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nimi on liian pitkä"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Aikuisluokitus"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Mahdollinen"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Tarkista"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Kappaleluettelo"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "On jo lisätty"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1-kanavainen"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Lisää toistoluetteloon"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Esittäjä"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Esittäjät"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automaattinen"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Jäljellä olevat käyttökerrat"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Basson korostus"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Kuoro"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassinen"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Säveltäjä"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Säveltäjät"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Konserttisali"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Mukautettu"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Tanssi"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Median tiedot"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynaaminen"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Tehoste"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Taajuuskorjain"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Ulkoistaminen"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Edelleenlähetys"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Tyylilaji"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Tyylilajit"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Suora"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Eniten soitetut"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musiikin selkeys"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musiikkivalikko"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Musiikkiasetukset"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Kansitaide"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Soittolistat"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Viimeksi lisätyt"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Viimeksi soitetut"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Kappaleen pituus"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Kelpoisuus"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wah-wah"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Leveä"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Vuosi"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Pois päältä"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Ei kappaleita"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Kappaleet"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Lisää soittolista"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Puhelun soittoääni"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Luo soittolista"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Muokkaa otsikkoa"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historia"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Poista"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Nimeä uudelleen"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Järjestä uudestaan"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Tallenna soittolistana"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Hälytysääni"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Soittajan soittoääni"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Lisätty kohteeseen %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth-yhteys on katkennut"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Valittujen kohteiden enimmäismäärä (%d) saavutettu"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Mitään ei valittu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Ei voi poistaa. Valittu musiikki soi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Ei voi toistaa. Tapahtui virhe"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Toisto ei onnistu. Tiedostotyyppiä ei tueta"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Lisää"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Jaa"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Kaikki"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Esittäjät"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Sävelt."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Kap.m."
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Tyylilajit"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Vuodet"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Valitse laite"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Älä näytä uudestaan"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Voit virtauttaa musiikin AllShare-laitteisiin"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "N.tapa"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normaali"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Käyttäjä"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Laulu"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bassokorostus"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Diskanttikorostus"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kahvila"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuaalinen 7.1-kanava"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 min kuluttua"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 min kuluttua"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 tunnin kuluttua"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1 h 30 min kuluttua"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 tunnin kuluttua"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Automaattinen musiikin lopetus"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Tämä äänitehoste toimii vain kuuloke- ja Bluetooth-kuuloketiloissa"
+
index 62ce42f..57bd4c7 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr " L'écoute prolongée de musique à un volume élevé risque d'endommager votre audition"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Impossible à ajouter"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Aucune parole"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Modification des effets sonores impossible lors de l'utilisation du canal 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Rechercher tag"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "L'effet sonore 5.1 ne fonctionne qu'en mode Ecouteur uniquement"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Le canal 5.1 ne peut être activé que si les effets sonores sont désactivés"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Impossible de créer la liste de lecture"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Impossible d'obtenir le libellé"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Dossiers"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Impossible de retirer l'élément"
 
@@ -131,7 +161,7 @@ msgid "IDS_MUSIC_BODY_ARTISTS"
 msgstr "Artistes"
 
 msgid "IDS_MUSIC_BODY_AUTO"
-msgstr "Auto"
+msgstr "Auto."
 
 msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
 msgstr "Utilisations disponibles"
@@ -215,7 +245,7 @@ msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
 msgstr "Ajoutés récemment"
 
 msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
-msgstr "Ecoutés récemment"
+msgstr "Écoutés récemment"
 
 msgid "IDS_MUSIC_BODY_ROCK"
 msgstr "Rock"
@@ -239,7 +269,7 @@ msgid "IDS_MUSIC_BODY_YEARS"
 msgstr "Années"
 
 msgid "IDS_MUSIC_BUTTON_OFF"
-msgstr "Désactiver"
+msgstr "Désactivé"
 
 msgid "IDS_MUSIC_HEADER_NO_SONGS"
 msgstr "Aucun titre"
@@ -275,10 +305,10 @@ msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
 msgstr "Enregistrer comme liste de lecture"
 
 msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
-msgstr "Tonalité alarme"
+msgstr "Tonalité de l'alarme"
 
 msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
-msgstr "Sonnerie personnalisée"
+msgstr "Sonnerie d'appelant"
 
 msgid "IDS_MUSIC_POP_ADDED_TO_PS"
 msgstr "Ajouté à %s"
@@ -328,3 +358,57 @@ msgstr "Podcasts"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Années"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Sélectionnez le périphérique"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ne plus afficher"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Vous pouvez diffuser votre musique sur des périphériques via AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Affichage"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Utilisateur"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Chant"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Amplification des basses"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Amplification des aigus"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Café"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Canal 7.1 virtuel"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Après 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Après 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Après 1 heure"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Après 1 heure 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Après 2 heures"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Arrêt auto de la musique"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "L'effet sonore fonctionne uniquement avec le mode Ecouteur et le casque Bluetooth"
+
diff --git a/po/he.po b/po/he.po
new file mode 100755 (executable)
index 0000000..e0e9535
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "עוצמות קול גבוהות עלולות לפגוע בשמיעה אם מאזינים להן למשך זמן רב"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "לא ניתן להוסיף"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "ללא מילים"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "לא ניתן שלנות אפקטי צליל בזמן שימוש ב-5.1 ערוצים"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "חפש תג"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "אפקט הקול 5.1 ערוצים פועל במצב אוזניה בלבד"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "ניתן להפעיל 5.1 ערוצים רק כאשר אפקטי צליל כבויים"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "לא ניתן ליצור רשימת השמעה חדשה"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "לא ניתן לקבל תגית"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "תיקיות"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "לא ניתן להסיר פריט"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "לא ניתן להוסיף פריט בנפח של יותר מ-%d KB"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "לא ניתן להפעיל במהלך שיחה"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "גלריה"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "אלבומים"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "מחבר"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "זכויות יוצרים"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "צור רשימת השמעה"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "תיאור"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "מועדפים"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "פורמט"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "לא אפשרי"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "מיקום"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "אין רשימות השמעה"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "מספר רצועה"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "סוג"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "לא ידוע"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "מחק"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "נוסף"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "למחוק?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s הוסר"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "הוסר"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "להסיר?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "הגדר כצלצול מתקשר"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "לא ניתן לשנות שם של רשימת השמעה"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "לא ניתן להגדיר כצלצול"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "לא ניתן לשתף קובץ DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "אלבומים"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "ביוגרפיה"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "קרדיטים"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "פרטי מדיה"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "דיסקוגרפיה"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "לירי"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "השם ארוך מדי"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "דירוג ההורים"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "אפשרי"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "סקירה"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "רשימת הרצועות"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "כבר נוסף"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 ערוצים"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "הוסף לרשימת השמעה"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "אמן"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "אמנים"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "אוטומטי"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "שימושים זמינים"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "הגברת בסים"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "מקהלה"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "קלאסי"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "מלחין"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "יוצרים"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "אולם קונצרטים"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "תפריט מותאם"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "דאנס"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "פרטי מדיה"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "דינאמי"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "אפקט"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "אקוולייזר"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "החצנה"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "העברה"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "ז'אנר"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "ז'אנרים"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "ג'אז"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "הופעה חיה"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "הושמע הכי הרבה"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "צלילות המוסיקה"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "תפריט מוסיקה"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "הגדרות מוסיקה"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "תמונת אלבום"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "רשימות השמעה"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "פופ"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "נוסף לאחרונה"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "הושמע לאחרונה"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "רוק"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "אורך רצועה"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "תקפות"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "רחב"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "שנה"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "כבוי"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "אין שירים"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "שירים"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "הוסף רשימת השמעה"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "צלצול שיחה"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "צור רשימת השמעה"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "ערוך כותרת"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "היסטוריה"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "הסר"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "שנה שם"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "סדר מחדש"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "שמור כרשימת השמעה"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "צליל התראה"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "צלצול מתקשר"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "התווסף ל-%s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth מנותק"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "נבחר המספר המרבי של פריטים (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "אין פריט נבחר"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "לא ניתן למחוק. המוסיקה שנבחרה מושמעת"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "לא ניתן להפעיל. אירעה שגיאה"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "לא ניתן להפעיל. סוג קובץ לא נתמך"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "הוספה"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "שתף"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "הכל"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "אמנים"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "יוצרים"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "מוליכים"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "ז'אנרים"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "פודקאסט"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "שנה"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "בחר התקן"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "אל תציג שוב"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "ניתן להזרים מוסיקה להתקנים בעזרת AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "הצג בתור"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "רגיל"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "משתמש"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "שירה"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "מגביר בס"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "מגביר טרבל"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "קפה"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "ערוץ 7.1 וירטואלי"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "לאחר 15 דקות"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "לאחר 30 דק'"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "לאחר שעה"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "לאחר שעה ו-30 דקות"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "לאחר שעתיים"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "כיבוי אוטומטי של מוסיקה"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "אפקט קול זה פועל רק במצב אוזניה ואוזניית Bluetooth"
+
diff --git a/po/hi.po b/po/hi.po
new file mode 100755 (executable)
index 0000000..c46465a
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "उच्च वॉल्यूम से आपके सुनने में नुकसान हो सकता है यदि आप लंबे समय तक उसे सुनते हैं"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "जोड़ने में अक्षम"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "गीत नहीं"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "5.1 चैनल का उपयोग करने पर साउंड इफेक्ट्स बदलने में अक्षम"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "टैग ढूँढें"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 चैनल ध्वनि प्रभाव सिर्फ़ इयरफोन अवस्था में ही काम करता है"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "ध्वनि प्रभाव बंद होने पर केवल 5.1 चैनल सक्रिय हो सकता है"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "प्‍लेलिस्‍ट्स बनाने में अक्षम"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "टैग प्राप्त करने में अक्षम"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "फ़ोल्‍डर्स"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "आइटम रिमूव करने में अक्षम"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "%d से अधिक संगीत फ़ाइल जोड़ने में अक्षम"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "कॉल के दौरान चलाने में असमर्थ"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "एल्बम"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "एल्बम"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "लेखक"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "कॉपीराइट"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "प्लेसूची बनाएँ"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "विवरण"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "पसंदीदा"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "फॉर्मेट"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "असंभव"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "स्थान"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "प्‍लेसूचियाँ नहीं है"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "ट्रैक नंबर"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "प्रकार"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "अज्ञात"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "हटाएँ"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "जोड़ा गया"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "हटाएँ?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s हटाया गया"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "हटाया"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "हटाएँ?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "कॉलर रिंगटोन के रूप में सेट करें"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "प्‍लेलिस्‍ट का नाम बदलने में अक्षम"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "रिंगटोन के रूप में सेट करने में अक्षम"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM फ़ाइल साझा करने में अक्षम"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "अल्बम"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "जीवनी"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "क्रेडिट्स"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "मीडिया सूचना"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "डिस्कोग्राफ़ी"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "बोल"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "नाम काफी लम्बा है"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "पैरेंट रेटिंग"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "संभव"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "समीक्षा"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "ट्रैक सुची"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "पहले ही ज़ोड दिया है"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 चैनल"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "प्लेसूची में जोड़ें"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "कलाकार"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "कलाकार"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "स्वतः"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "उपलब्ध उपयोग"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "बास एन्हेंसमेंट"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "समूहगायक"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "शास्त्रीय"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "कंपोज़र"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "संगीतकार"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "कॉन्‍सर्ट हॉल"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "कस्‍टम"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "नृत्य"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "मीडिया सूचना"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "डायनामिक"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "प्रभाव"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "इक्वेलाईजर"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "बाह्यकरण"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "अग्रेषण"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "शैली"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "शैली"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "जैज़"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "लाइव"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "अधिकांश चलायें हुए"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "संगीत स्पष्टता"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "संगीत मेन्यू"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "म्यूज़िक सेटिंग्स"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "एल्बम कला"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "प्लेसूचियाँ"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "पॉप"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "हाल में जोड़ा गया"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "हाल में चलाया गया"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "रॉक"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "ट्रैक की लंबाई"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "ट्रेमोलो"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "वैधता"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "व्‍हा-व्‍हा"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "वाइड"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "वर्ष"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "बंद"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "कोई गाने नहीं"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "गाने"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "प्लेसूची जोड़ें"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "कॉल रिंगटोन"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "प्लेसूची बनाएँ"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "शीर्षक सम्पादित करें"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "इतिहास"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "हटाएँ"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "पुन: नाम दें"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "पुन: क्रम"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "प्लेसूची के रूप में सुरक्षित करें"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "अलार्म स्वर"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "कॉलर रिंगटोन"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "%s में जोड़ा गया"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "ब्‍लूटूथ डिस्‍कनेक्‍ट हो गया है"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "मदों की अधिकतम संख्‍या (%d) चयनित"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "कुछ चयनित नहीं"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "हटाने में अक्षम। चयनित म्यूज़िक चल रहा है"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "चलाने में अक्षम। त्रुटि पाई गई"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "चलाने में अक्षम. असमर्थित फ़ाइल प्रकार"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "जोड़ें"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "शेयर"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "सभी"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "कलाकार"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "कम्पोजर्स"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "कंडक्टर"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "जेन्रेस"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "पॉडकास्ट्स"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "वर्ष"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "डिवाइस चुनें"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "दुबारा न दिखाएँ"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "ऑलशेयर का उपयोग करते हुए आप आपका म्यूज़िक डिवाइसेस में स्‍ट्रीम कर सकते हैं"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "के रूप में देखें"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "सामान्‍य"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "उपयोक्ता"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "मौखिक"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "बास बूस्‍ट"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "ट्रेबल बूस्‍ट"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "जलपानगृह"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "वर्चुअल 7.1 ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 मिनट बाद"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 मिनट बाद"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 घंटे बाद"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1 घंटा 30 मिनट के बाद"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 घंटे बाद"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "संगीत स्वत: बंद"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "यह ध्वनि प्रभाव केवल इयरफ़ोन और Bluetooth headset मोड्स में काम करता है"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100755 (executable)
index 0000000..fc5efb9
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Velika glasnoća može oštetiti sluh pri dugom slušanju"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Nije moguće dodati"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Nema tekstova"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "U načinu zvuka 5.1 kanala nije moguća promjena zvučnih efekata"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Info pjesme"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Zvučni efekt 5.1 kanala radi samo u načinu slušalice"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5,1-kanalni zvuk radi samo kada su zvučni efekti isključeni"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Nije moguće napraviti popis pjesama"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Oznaka nedostupna"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mape"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Nemoguće premještanje"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Moguće dodati najviše %d pjesama"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Nemoguće reprod. tijekom poziva"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Autorsko pravo"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Novi popis pjesama"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Opis"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoriti"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Nemoguće"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nema popisa pjesama"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Broj pjesme"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Vrsta"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Nepoznato"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Dodano"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Obrisati?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s uklonjen"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Uklonjeno"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Ukloniti?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Postavi za ton pozivatelja"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Nije moguće preimenovati popis pjesama"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Nemoguće postaviti za ton zvona"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Nemoguće dijeliti zaštićenu datoteku"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografija"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Zasluge"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Podaci o mediju"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografija"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Tekst"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Predugačko ime"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Roditeljska zaštita"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Moguće"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Pregled"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Popis pjesama"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Već dodano"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanal"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Dodaj na popis za reprodukciju"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Izvođač"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Izvođači"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Preostalo upotreba"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Pojačanje basa"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Chorus"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasično"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Kompozitor"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Skladatelji"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Koncertna dvorana"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Prilagođeno"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Podaci o mediju"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamično"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equaliser"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Vanjski zvuk"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Prosljeđivanje"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Žanr"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanrovi"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Uživo"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najslušanije"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Čistoća glazbe"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Glazbeni meni"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Postavke glazbe"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Omot albuma"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Popisi pjesama"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Nedavno dodano"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Posljednje"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Trajanje zapisa"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Valjanost"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Široko"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Godine"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Isključeno"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Nema pjesama"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Pjesme"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Dodaj popis"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Melodija zvona"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Novi popis pjesama"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Uredi naslov"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Povijest"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Ukloni"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Poredaj"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Spremi kao popis pjesama"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Ton alarma"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ton pozivatelja"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Dodano u %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth isključen"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maks. broj (%d) odabranih stavki"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Ništa odabrano"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Nemoguće obrisati. Reproducira se odabrana glazba"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Greška reprodukcije"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Ne može se reproducirati. Nepodržana vrsta datoteke"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Dodaj"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Dijeli"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Sve"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Izvođači"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Skladatelji"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigenti"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanrovi"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Godine"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Odaberite uređaj"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ne prikazuj više"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Možete puštati svoju glazbu na uređajima pomoću AllSharea"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Prikaži kao"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Korisnik"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Pojačanje basa"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Pojačanje visokih tonova"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafić"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtualni 7.1 kanal"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Nakon 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Nakon 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Nakon 1 sat"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Nakon 1 sata i 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Nakon 2 sata"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Auto. isključivanje glazbe"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Ovaj zvučni efekt radi samo u načinu slušalice i Bluetooth slušalice"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100755 (executable)
index 0000000..cdbc36e
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Ha sokáig hallgat nagy hangerőn zenét vagy egyebet, akkor károsodhat a hallása"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Nem adható hozzá"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Nincs dalszöv."
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Az 5.1 csatorna használata közben a hangeffektusok nem módosíthatók"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Címke keresése"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Az 5.1 csatorna hangeffektus csak fülhallgatós üzemmódban működik"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Az 5.1 csatorna térhatás csak akkor aktiválható, ha a hangeffektusok ki vannak kapcsolva"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Nem hozható létre lejátszási lista"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Nem sikerült lekérni a címkét"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mappák"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "A tétel nem távolítható el"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Legfeljebb %d zenei fájl adható hozzá"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Hívás közben nem lehet lejátszani"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumok"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Szerző"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Szerzői jog"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Új lejátszási lista"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Leírás"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Kedvencek"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formátum"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Nem lehetséges"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Hely"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nincs lejátszási lista"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Szám száma"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Típus"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Ismeretlen"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Töröl"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Hozzáadva"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Törli?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s eltávolítva"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Törölve"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Törli?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Beállítás hívó csengőhangként"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "A lejátszási listát nem lehet átnevezni"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Nem állítható be csengőhangként"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "A DRM-fájl nem osztható meg"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumok"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Életrajz"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Közreműködők"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Média adatai"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diszkográfia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Dalszöveg"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "A név túl hosszú"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Szülői értékelés"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Lehetséges"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Előnézet"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Számlista"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Már hozzáadva"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 csatorna"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Lejátszási listára"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Előadó"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Előadók"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto."
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Lehetséges felhasználás"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bass enhancement"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Kórus"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Zeneszerző"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Szerzők"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Concert hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Egyedi"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Média adatai"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamic"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effektus"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalisation"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Továbbítás"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Műfaj"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Műfajok"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Leggyakrabban játszott"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Music clarity"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Zene menü"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Zenebeállítások"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Lemezborító"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Lejátszási listák"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Legutóbb hozzáadott"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Legutóbb lejátszott"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Szám hossza"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremoló"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Érvényesség"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Wide"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Év"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Ki"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Nincs szám"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Számok"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Lejátszási lista hozzáadása"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Hívás csengőhangja"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Új lejátszási lista"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Név szerkesztése"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Előzmények"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Eltávolít"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Átnevez"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Átrendezés"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Mentés lejátszási listaként"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Jelzőhang"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Hívó csengőhangja"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Hozzáadás a következőhöz: %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth szétkapcsolva"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maximális számú (%d) tétel van kiválasztva"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Semmi nincs kiválasztva"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Nem lehet törölni. Zene lejátszása folyamatban"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Nem játszható le. Hiba történt"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Nem játszható le. Nem támogatott fájltípus"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Hozzáad"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Megosztás"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Mind"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Előadók"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Szerzők"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Kar- mesterek"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Műfajok"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Pod- castok"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Évek"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Válasszon eszközt"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ne jelenjen meg ismét"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Az AllShare segítségével adatfolyamként küldhet zenét az eszközökre"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Nézet"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normál"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Felhasználó"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Mély hangok kiemelése"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Magas hangok kiemelése"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuális 7.1 csatorna"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 perc múlva"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 perc múlva"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 óra múlva"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1 óra 30 perc múlva"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 óra múlva"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Lejátszó automatikus kikapcsolása"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "A hangeffektus csak fülhallgatós és Bluetooth-fejhallgatós üzemmódban működik"
+
diff --git a/po/id.po b/po/id.po
new file mode 100755 (executable)
index 0000000..646efee
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Volume tinggi dapat membahayakan pendengaran Anda jika Anda mendengarkannya dalam waktu yang lama"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Tidak bisa menambah"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Tidak ada lirik"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Tidak dapat mengubah efek suara saat menggunakan saluran 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Temukan tag"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "efek suara saluran 5.1 hanya bekerja pada mode earphone saja"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Saluran 5.1 hanya dapat diaktifkan saat efek suara tdk aktif"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Tidak bisa membuat daftar putar"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Tidak bisa mendapatkan tag"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Folder"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Tidak bisa menghapus item"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Tidak bisa menambahkan lebih dari %d file lagu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Tidak bisa memutar selama panggilan"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Pencipta"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Hak Cipta"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Buat daftar putar"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Penggambaran"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favorit"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Tdk memungkinkan"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Lokasi"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Tanpa daftar putar"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Nomor track"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipe"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Tidak diketahui"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Hapus"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Ditambahkan"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Hapus?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s dihapus"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Dihapus"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Hapus?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Atur sebagai nada dering pemanggil"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Gagal menamai ulang daftar putar"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Tidak bisa menetapkan sebagai nada dering"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Tidak bisa membagi file DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografi"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Kredit"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Info media"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografi"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lirik"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nama terlalu panjang"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Peringkat orang tua"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Memungkinkan"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Tinjauan"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Daftar trek"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Sudah ditambahkan"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 Saluran"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Tambahkan ke daftar putar"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artis"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artis"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Otomatis"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Tersedia utk digunakan"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Penambahan bass"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Chorus"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasik"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Composer"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Pencipta"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Aula konser"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Kustomisasi"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dansa"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Info media"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamis"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efek"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Eksternalisasi"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Meneruskan"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Aliran"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Aliran"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Langsung"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Paling sering diputar"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Kejelasan lagu"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menu musik"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Pengaturan pemutar musik"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Seni album"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Daftar putar"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Baru ditambahkan"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Terakhir diputar"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Panjang track"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Berlaku"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Lebar"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Tahun"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Tdk aktif"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Tdk ada lagu"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Lagu"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Tambah daftar putar"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Nada dering panggilan"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Buat daftar putar"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Edit judul"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Histori"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Hapus"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Ganti nama"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Urut ulang"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Simpan sebagai daftar putar"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Nada alarm"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Nada dering pemanggil"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Ditambahkan ke %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth terputus"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Jumlah maksimum item (%d) yang dipilih"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Tidak ada yang dipilih"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Tidak bisa menghapus. Musik yang dipilih sedang diputar"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Tidak bisa memutar. Terjadi kesalahan"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Tidak bisa memutar. Tipe file tak didukung"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Tambahkn"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Bagi"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Semua"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artis"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Komposer"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Konduktor"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Aliran"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Tahun"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Pilih perangkat"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Jangan tampilkan lagi"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Anda dapat mengalirkan musik ke perangkat yang menggunakan AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Lht sbg"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Pemakai"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bass boost"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Treble boost"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Saluran 7.1 virtual"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Setelah 15 mnt"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Setelah 30 mnt"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Setelah 1 jam"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Setelah 1 jam 30 menit"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Setelah 2 jam"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Lagu otomatis berhenti"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Efek suara ini berfungsi pada mode earphone dan headset Bluetooth saja"
+
index e8376af..c2c5a53 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Volumi troppo alti possono danneggiare l'udito in caso di ascolto prolungato"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Impossibile aggiungere"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Senza testo"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Impossibile modificare gli effetti sonori con 5.1 canali attivo"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Trova tag"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "L'effetto sonoro a 5.1 canali funziona solo in modalità auricolare"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "È possibile attivare il canale 5.1 solo se gli effetti sonori sono disattivati"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Impossibile creare playlist"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Impossibile ottenere tag"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Cartelle"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Impossibile rimuovere elemento"
 
@@ -128,10 +158,10 @@ msgid "IDS_MUSIC_BODY_ARTIST"
 msgstr "Artista"
 
 msgid "IDS_MUSIC_BODY_ARTISTS"
-msgstr "Artista"
+msgstr "Artisti"
 
 msgid "IDS_MUSIC_BODY_AUTO"
-msgstr "Auto"
+msgstr "Automatica"
 
 msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
 msgstr "Usi disponibili"
@@ -203,7 +233,7 @@ msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
 msgstr "Impostazioni musica"
 
 msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
-msgstr "Album Art"
+msgstr "Copertina album"
 
 msgid "IDS_MUSIC_BODY_PLAYLISTS"
 msgstr "Playlist"
@@ -328,3 +358,57 @@ msgstr "Podcast"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Anni"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Seleziona dispositivo"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Non mostrare più"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Potete eseguire lo streaming della musica sui dispositivi tramite AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Vis. come"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Utente"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocale"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bass boost"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Treble boost"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Caffè"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Canale virtuale 7.1"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Dopo 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Dopo 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Dopo 1 ora"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Dopo 1 ora e 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Dopo 2 ore"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Musica autom. disattivata"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Questo effetto sonoro funziona solo in modalità auricolare e Bluetooth"
+
index ce0308c..7a407ea 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr " ​長時間​​大音量​​で​​聴き​​続ける​​と、​​聴力​​を​​損傷​​する​​可能性​​が​​あります"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "追加​できません"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "歌詞​なし"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "5.1​チャンネル​使用​中​は\n​サウンドエフェクトを​使用​できません。"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "タグ​を​探す"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1​チャンネル​は、​イヤホン​モード​で​のみ​使用​でき​ます。"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1​チャンネル​は、サウンド​エフェクトとイコライザー​が​標準​の​とき​のみ使用できます。"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "プレイリスト​を​作成​できません"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "タグ​を​取得​できません"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "フォルダ"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "アイテム​を​消去​できません"
 
@@ -5,7 +35,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
 msgstr "ミュージック​ファイル​は​%d​以上​追加​できません"
 
 msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
-msgstr "é\80\9a話中â\80\8bã\81¯â\80\8bå\86\8dç\94\9fâ\80\8bã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+msgstr "é\80\9a話中â\80\8bã\81«â\80\8bå\86\8dç\94\9fâ\80\8bã\81§ã\81\8dâ\80\8bã\81¾ã\81\9bã\82\93ã\80\82"
 
 msgid "IDS_MUSIC_BODY_ALBUM"
 msgstr "アルバム"
@@ -29,7 +59,7 @@ msgid "IDS_MUSIC_BODY_FAVOURITES"
 msgstr "お気に入り"
 
 msgid "IDS_MUSIC_BODY_FORMAT"
-msgstr "ファイル形式"
+msgstr "ファイル形式"
 
 msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
 msgstr "不可"
@@ -38,7 +68,7 @@ msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
 msgstr "保存先"
 
 msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
-msgstr "プレイリスト​がありません"
+msgstr "プレイリスト​がありません"
 
 msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
 msgstr "トラック​番号"
@@ -53,7 +83,7 @@ msgid "IDS_MUSIC_OPT_DELETE"
 msgstr "削除"
 
 msgid "IDS_MUSIC_POP_ADDED"
-msgstr "追加しました。"
+msgstr "追加しました。"
 
 msgid "IDS_MUSIC_POP_DELETE_Q"
 msgstr "削除しますか?"
@@ -86,7 +116,7 @@ msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
 msgstr "Add to home"
 
 msgid "IDS_MUSIC_BODY_BIOGRAPHY"
-msgstr "ã\83\90ã\82¤ã\82ªã\82°ã\83©ã\83\95ã\82£ã\83¼"
+msgstr "ã\82¢ã\83¼ã\83\86ã\82£ã\82¹ã\83\88"
 
 msgid "IDS_MUSIC_BODY_CREDITS"
 msgstr "クレジット"
@@ -95,22 +125,22 @@ msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
 msgstr "メディア​情報"
 
 msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
-msgstr "ã\83\87ã\82£ã\82¹ã\82³ã\82°ã\83©ã\83\95ã\82£ã\83¼"
+msgstr "ã\82¢ã\83«ã\83\90ã\83 "
 
 msgid "IDS_MUSIC_BODY_LYRIC"
 msgstr "歌詞"
 
 msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
-msgstr "名前​が​長すぎ​ます"
+msgstr "名前が長すぎます。"
 
 msgid "IDS_MUSIC_BODY_PARENT_RATING"
-msgstr "親​レーティング"
+msgstr "保護者の指導が必要"
 
 msgid "IDS_MUSIC_BODY_POSSIBLE"
 msgstr "可能"
 
 msgid "IDS_MUSIC_BODY_REVIEW"
-msgstr "プレビュー表示設定"
+msgstr "プレビュー​表示"
 
 msgid "IDS_MUSIC_HEADER_TRACK_LIST"
 msgstr "トラック​リスト"
@@ -149,7 +179,7 @@ msgid "IDS_MUSIC_BODY_COMPOSER"
 msgstr "作曲者"
 
 msgid "IDS_MUSIC_BODY_COMPOSERS"
-msgstr "作曲"
+msgstr "作曲"
 
 msgid "IDS_MUSIC_BODY_CONCERT_HALL"
 msgstr "コンサート​ホール"
@@ -167,7 +197,7 @@ msgid "IDS_MUSIC_BODY_DYNAMIC"
 msgstr "ダイナミック"
 
 msgid "IDS_MUSIC_BODY_EFFECT"
-msgstr "効果"
+msgstr "エフェクト"
 
 msgid "IDS_MUSIC_BODY_EQUALISER"
 msgstr "イコライザー"
@@ -248,7 +278,7 @@ msgid "IDS_MUSIC_HEADER_SONGS"
 msgstr "曲"
 
 msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
-msgstr "プレイリスト​に​追加"
+msgstr "プレイリスト追加"
 
 msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
 msgstr "着信音"
@@ -266,7 +296,7 @@ msgid "IDS_MUSIC_OPT_REMOVE"
 msgstr "クイックリストから削除"
 
 msgid "IDS_MUSIC_OPT_RENAME"
-msgstr "名前変更"
+msgstr "名前​を​変更"
 
 msgid "IDS_MUSIC_OPT_REORDER"
 msgstr "並べ替え"
@@ -281,10 +311,10 @@ msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
 msgstr "個別​着信音"
 
 msgid "IDS_MUSIC_POP_ADDED_TO_PS"
-msgstr "%sに追加しました。"
+msgstr "「%s」に追加しました。"
 
 msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
-msgstr "Bluetooth​が​切断​され​ました"
+msgstr "Bluetooth​が​切断​され​ました"
 
 msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
 msgstr "アイテム​の​最大​選択​数​(​%d​)​を選択しました"
@@ -293,10 +323,10 @@ msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
 msgstr "何も​選択​されて​いません"
 
 msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
-msgstr "選択した曲は​再生中のため削除​できません"
+msgstr "削除できません。選択した音楽は再生中です。"
 
 msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
-msgstr "再生​​​​​できません。​​​エラー​​​が​​​発生しました​​"
+msgstr "再生できません。エラーが発生しました。"
 
 msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
 msgstr "再生​でき​ません。​未対応​の​ファイル​です"
@@ -323,8 +353,62 @@ msgid "IDS_MUSIC_TAB4_GENRES"
 msgstr "ジャンル"
 
 msgid "IDS_MUSIC_TAB4_PODCASTS"
-msgstr "Podcast"
+msgstr "ポッドキャスト"
 
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "年"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "デバイス​​選択​"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "今後​​表示​​しない"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "AllShareを使って端末で音楽をストリーミング再生できます。"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "表示"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "標準"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "ユーザ​ー"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "ボーカル"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "低音強調"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "高音​強調"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "カフェ"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "バーチャル​7.1ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15分​後"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30分​後"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1時間​後"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1時間30分後"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2時間​後"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "音楽自動停止"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "この​音響​効果​は​、​イヤホン​および​ Bluetooth ​ヘッド​セット ​モード​で​のみ​機能​します"
+
index 675a3c5..edffab5 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "오랫동안 큰 소리로 음악을 들으면 청각이 손상될 수 있습니다"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "추가할 수 없습니다"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "가사 없음"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "5.1채널이 사용 중인 경우에는 음향 효과를 변경할 수 없습니다"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "태그 검색"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1채널 음향효과는 이어폰 연결 시에 적용됩니다"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "음향 효과가 꺼져 있을 경우에만 5.1 채널을 실행할 수 있습니다"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "재생 목록을 추가할 수 없습니다"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "태그를 가져올 수 없습니다"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "폴더"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "항목을 삭제할 수 없습니다"
 
@@ -86,7 +116,7 @@ msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
 msgstr "홈에 추가"
 
 msgid "IDS_MUSIC_BODY_BIOGRAPHY"
-msgstr "ì\95½ë ¥"
+msgstr "ì\95\84í\8b°ì\8a¤í\8a¸"
 
 msgid "IDS_MUSIC_BODY_CREDITS"
 msgstr "크레디트"
@@ -328,3 +358,57 @@ msgstr "팟캐스트"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "연도"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "기기 선택"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "다시 표시 안 함"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "AllShare를 사용하여 음악을 디바이스로 스트리밍할 수 있습니다"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "보기 방식"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "일반"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "사용자"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "보컬"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "중저음 강화"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "고음 강화"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "카페"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "가상 7.1채널"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15분 후"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30분 후"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1시간 후"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1시간 30분 후"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2시간 후"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "음악 자동 종료"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "이 음향 효과는 이어폰과 블루투스 헤드셋 모드에서만 작동합니다"
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100755 (executable)
index 0000000..600d4c8
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Jei klausysitės garsiai ilgą laiką, gali būti pažeista klausa"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Negalima pridėti"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Dainų žodž. nėra"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Neįmanoma keisti garso efektų, kai naudojamas 5.1 kanalas"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Rasti žymę"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 kanalo garso efektas veikia tik ausinių režimu"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 kanalai gali būti naudojami tik išjungus garso efektus"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Negalima sukurti grojaraščio"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Neįmanoma gauti žymos"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Aplankai"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Negalima pašalinti elemento"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Negalima pridėti daugiau kaip %d muzikos failo (-ų)"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Negalima paleisti skambučio metu"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albumas"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumai"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autorius"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Autorių teisės"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Sukurti grojaraštį"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Aprašas"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Mėgstamiausieji"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formatas"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Neįmanoma"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Vieta"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nėra grojaraščių"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Įrašo numeris"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tipas"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Nežinomas"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Trinti"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Pridėta"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Ar trinti?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s pašalintas"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Pašalinta"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Ar šalinti?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Nustatyti kaip skambintojo melodiją"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Negalima pakeisti grojaraščio pavadinimo"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Neįmanoma nustatyti kaip skambėjimo tono"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Neįmanoma bendrinti DRM failo"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumai"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografija"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Naudinga informacija"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Informacija apie mediją"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Įrašų sąrašas"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lyrinė"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Pavadinimas per ilgas"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Tėvų vertinimas"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Įmanoma"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Peržiūrėti"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Takelių sąrašas"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Jau įtraukta"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanalas"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Pridėti prie grojaraščio"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Atlikėjas"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Atlikėjai"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatinis"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Galimi panaudojimai"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Žemų dažnių garsų stiprinimas"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Choro efektas"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasika"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Kompozitorius"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Kompozitoriai"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Koncertų salė"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Pasirinktinis"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Šokis"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Informacija apie mediją"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinaminis"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efektas"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvalaizeris"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Išorinis garsas"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Persiuntimas"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Žanras"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanrai"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Džiazas"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Gyvai"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Dažniausiai grojami"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Muzikos aiškumas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Muzikos meniu"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Muzikos nustatymai"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albumų menas"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Grojaraščiai"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Popmuzika"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Neseniai pridėti"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Neseniai groti"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rokas"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Įrašo ilgis"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Galiojimas"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Ua-ua"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Platus"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Metai"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Išjungti"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Dainų nėra"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Dainos"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Pridėti grojaraštį"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Skambučio tonas"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Sukurti grojaraštį"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Redaguoti antraštę"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Istorija"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Šalinti"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Pervardyti"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Pertvarkyti"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Išsaugoti kaip grojaraštį"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Signalo tonas"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Skambintojo skambėjimo tonas"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Pridėta prie %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "„Bluetooth“ atjungta"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Pasirinktas didžiausias elementų skaičius (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Niekas nepasirinkta"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Neįmanoma ištrinti. Pasirinkta muzika jau leidžiama"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Neįmanoma paleisti. Įvyko klaida"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Negalima paleisti. Nepalaikomas failo tipas"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Įtrauk."
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Bendrinti"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Visos"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Atlikėjai"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Kompozitoriai"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigentai"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanrai"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Interneto trans."
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Metai"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Pasirinkite įrenginį"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Daugiau nerodyti"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Galite siųsti savo muzikos įrašus į įrenginius naudojančius „AllShare“"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Žr.kaip"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Įprastas"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Vartotojas"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokalinė"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Žemųjų dažnių stiprinimas"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Aukštųjų dažnių stiprin."
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kavinė"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtualus 7.1 kan."
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Po 15 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Po 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Po 1 val."
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Po 1 val. 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Po 2 val."
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Automatinis muzikos išjungimas"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Šis garso efektas veikia tik ausinių ir „Bluetooth“ ausinių režimu"
+
diff --git a/po/lv.po b/po/lv.po
new file mode 100755 (executable)
index 0000000..a04120e
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Ilgstoša skaļas mūzikas klausīšanās var izraisīt dzirdes traucējumus"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Nevar pievienot"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Nav vārdu"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "5.1 kanāla lietošanas laikā nevar mainīt skaņas efektus"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Atrast atzīmi"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 kanālu skaņas efekts darbojas tikai austiņu režīmā"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 kanālu režīmu var aktivizēt tikai tad, ja ir izslēgti skaņas efekti"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Nevar izveidot atskaņojumu sarakstu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Nevar iegūt atzīmi"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mapes"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Nevar noņemt vienumu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Nevar pievienot vairāk kā %d mūzikas failus"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Sarunas laikā nevar veikt atskaņošanu"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autors"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Autortiesības"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Izveidot atskaņošanas sarakstu"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Apraksts"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Izlases"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formāts"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Nav iespējams"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Atrašanās vieta"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nav atskaņojumu sarakstu"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Ieraksta numurs"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Veids"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Nezināms"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Dzēst"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Pievienots"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Vai dzēst?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s noņemts"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Noņemts"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Vai noņemt?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Iestatīt kā zvanītāja signālu"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Nevar pārdēvēt atskaņojumu sarakstu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Nevar iestatīt kā zvana signālu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "DRM failu nevar koplietot"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biogrāfija"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Albuma veidotāji"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Multivides informācija"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskogrāfija"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Dziesmu vārdi"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nosaukums par garu"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Vecāku novērtējums"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Iespējams"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Pārskatīt"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Ierakstu saraksts"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Jau pievienots"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 kanāls"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Piev. atsk. sar."
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Izpildītājs"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Izpildītāji"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automātiski"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Atlikušās lietošanas reizes"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Zemo frekvenču skaņas pastiprināšana"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Koris"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasiskais"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Komponists"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Komponisti"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Koncertzāle"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Pielāgot"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Deju mūzika"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Multivides informācija"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamisks"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efekts"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvalaizers"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Eksternalizācija"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Pārsūtīšana"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Žanrs"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanri"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Džezs"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Dzīvā mūzika"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Visvairāk atskaņotie"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Mūzikas dzidrums"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Mūzikas izvēlne"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Mūzikas iestatījumi"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albuma attēls"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Atskaņošanas saraksti"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Popmūzika"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Nesen pievienotie"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Nesen atskaņotie"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Roks"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Ieraksta ilgums"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Derīgums"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Va-va"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Plašs"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Gadi"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Izslēgt"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Nav dziesmu"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Dziesmas"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Piev. atsk. sar."
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Zvana signāls"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Izveidot atskaņošanas sarakstu"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Rediģēt nosaukumu"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Vēsture"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Noņemt"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Pārdēvēt"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Pārkārtot"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Saglabāt kā atskaņošanas sarakstu"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Atgādinājuma signāls"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Zvanītāja zvana signāls"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Pievienots atskaņošanas sarakstam %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth atvienots"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Izvēlēts maksimālais objektu skaits (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nekas nav izvēlēts"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Nevar izdzēst. Izvēlētā mūzika tiek atskaņota"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Nevar atskaņot. Radās kļūda"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Nevar atskaņot. Neatbalstīts faila tips."
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Pievien."
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Koplietot"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Visas"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Izpildītāji"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Komponist."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Diriģ."
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanri"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Aplādes"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Gadi"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Atlasīt ierīci"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Nerādīt vēlreiz"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Varat straumēt mūziku uz ierīcēm, izmantojot programmu AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Skatīt kā"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Parasts"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Lietotājs"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokāls"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Basu pastiprināšana"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Diskantu pastiprināšana"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafejnīca"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuālais 7.1 kan."
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Pēc 15 minūtēm"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Pēc 30 minūtēm"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Pēc 1 stundas"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Pēc 1 h 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Pēc 2 stundām"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Mūzika autom. izslēgta"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Šis skaņas efekts darbojas tikai austiņu un Bluetooth austiņas režīmā"
+
diff --git a/po/ms.po b/po/ms.po
new file mode 100755 (executable)
index 0000000..7a8ac16
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Kelantangan tinggi mungkin merosakkan pendengaran anda jika anda mendengar untuk masa yang lama"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Tidak boleh menambah"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Tiada lirik"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Tidak boleh mengubah kesan bunyi apabila menggunakan saluran 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Cari tag"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Kesan bunyi saluran 5.1 berfungsi dalam mod fon telinga sahaja"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Saluran 5.1 hanya boleh diaktifkan apabila kesan bunyi dimatikan"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Tidak boleh mencipta senarai main"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Tidak boleh mendapatkan teg"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Pelipat"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Tidak boleh mengalih keluar item"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Tdk dpt menambah lebih dpd %d fail muzik"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Tdk dpt memainkan semasa panggilan"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Pengarang"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Hak cipta"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Reka senarai main"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Deskripsi"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Kegemaran"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Mustahil"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Lokasi"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Tiada senarai mainan"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Nombor lagu"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Jenis"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Tidak diketahui"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Padam"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Ditambahkan"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Padam?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s dialih keluar"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Dikeluarkan"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Alihkan?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Tetapkan sebagai nada dering pemanggil"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Tidak boleh menamakan semula senarai main"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Tidak boleh menetapkan sebagai nada dering"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Tidak boleh berkongsi fail DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografi"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Penghargaan"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Maklumat media"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografi"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lirik"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nama terlalu panjang"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Penilaian ibu bapa"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Mungkin"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Lihat semula"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Senarai lagu"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Telah ditambahkan"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Saluran 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Tambah ke senarai main"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artis"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artis"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatik"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Kegunaan boleh didpti"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Peningkatan bes"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Korus"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasik"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Composer"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Pengarang"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Dewan konsert"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Langganan"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Tarian"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Maklumat media"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamik"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Kesan"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Penyama"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Peluaran"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Memajukan"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Aliran"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Aliran"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Siaran Langsung"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Paling kerap dimain"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Kejelasan muzik"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menu muzik"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Aturan muzik"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Seni album"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Senarai main"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Ditambah baru-baru ini"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Dimain baru-baru ini"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Panjang lagu"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Kesahan"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Luas"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Tahun"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Matikan"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Tiada lagu"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Lagu"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Tambah senarai main"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Nada dering panggilan"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Reka senarai main"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Sunting tajuk"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Sejarah"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Keluarkan"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Namakan semula"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Susun semula"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Simpan sebagai senarai main"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Nada penggera"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Nada dering pemanggil"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Ditambah ke %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth diputuskan sambungan"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Bilangan maksimum perkara (%d) dipilih"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Tiada apa-apa dipilih"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Tidak boleh memadam. Muzik yang dipilih dimainkan"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Tidak boleh memainkan. Ralat berlaku"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Tidak boleh memainkan. Jenis fail yang tidak disokong"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Tambah"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Kongsi"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Semua"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artis"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Pengarang"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Pemimpin"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Aliran"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Tahun"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Pilih peranti"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Jangan tunjuk lagi"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Anda boleh menstrimkan muzik anda kepada peranti menggunakan AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Lihat sbg"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Biasa"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Pengguna"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Tambah bes"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Tambah trebel"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Saluran maya 7.1"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Selepas 15 minit"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Selepas 30 minit"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Selepas 1 jam"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Selepas 1 jam 30 minit"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Selepas 2 jam"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Muzik diauto matikan"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Kesan bunyi ini bekerja di fon telinga dan mod set kepala Bluetooth sahaja"
+
index a6aa9e0..1f45503 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Hoog volume kan uw gehoor beschadigen wanneer u er lang naar luistert"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Kan niet toevoegen"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Geen songtkst"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Kan geluidseffecten niet wijzigen bij gebruik van 5.1-kanaals"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Tag zoeken"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-kanaals geluidseffect werkt alleen met oortelefoonstand"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1-kanaal kan alleen worden geactiveerd wanneer geluidseffecten zijn uitgeschakeld"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Kan de afspeellijst niet maken"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Kan tag niet ophalen"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mappen"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Kan het item niet wissen"
 
@@ -23,7 +53,7 @@ msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
 msgstr "Afspeellijst maken"
 
 msgid "IDS_MUSIC_BODY_DESCRIPTION"
-msgstr "Beschrijving"
+msgstr "Omschrijving"
 
 msgid "IDS_MUSIC_BODY_FAVOURITES"
 msgstr "Favorieten"
@@ -56,7 +86,7 @@ msgid "IDS_MUSIC_POP_ADDED"
 msgstr "Toegevoegd"
 
 msgid "IDS_MUSIC_POP_DELETE_Q"
-msgstr "Wissen?"
+msgstr "Verwijderen?"
 
 msgid "IDS_MUSIC_POP_PS_REMOVED"
 msgstr "%s verwijderd"
@@ -131,7 +161,7 @@ msgid "IDS_MUSIC_BODY_ARTISTS"
 msgstr "Artiesten"
 
 msgid "IDS_MUSIC_BODY_AUTO"
-msgstr "Automa-\ntisch"
+msgstr "Automatisch"
 
 msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
 msgstr "Aantal keer dat het gebruikt mag worden"
@@ -257,7 +287,7 @@ msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
 msgstr "Afspeellijst maken"
 
 msgid "IDS_MUSIC_OPT_EDIT_TITLE"
-msgstr "Titel wijzigen"
+msgstr "Titel bewerken"
 
 msgid "IDS_MUSIC_OPT_HISTORY"
 msgstr "Geschiedenis"
@@ -328,3 +358,57 @@ msgstr "Podcasts"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Jaren"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Apparaat selecteren"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Niet meer laten zien"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Gebruik AllShare voor streaming van muziek naar apparaten"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Weergave"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normaal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Gebruiker"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Zang"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Basboost"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Hoge-tonenboost"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Café"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtueel 7.1 kanaals"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Na 15 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Na 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Na 1 uur"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Na 1 uur 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Na 2 uur"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Muziek automatisch uit"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Dit geluidseffect werkt alleen in de oortelefoon- en Bluetooth-headsetstand"
+
diff --git a/po/no.po b/po/no.po
new file mode 100755 (executable)
index 0000000..1cad687
--- /dev/null
+++ b/po/no.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Høy lydstyrke kan skade hørselen din hvis du lytter til det over lengre perioder"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Kan ikke legge til"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Ingen tekster"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Kan ikke endre lydeffekter ved bruk av 5.1-kanal"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Finn tagg"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-kanals lydeffekt virker bare i høretelefonmodus"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1-kanal kan bare aktiveres når lydeffekter er av"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Kan ikke opprette spilleliste"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Kan ikke hente tagg"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mapper"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Kan ikke fjerne element"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Kan ikke legge til mer enn %d musikkfiler"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Kan ikke spille av under samtale"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Forfatter"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Opprett spilleliste"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Beskrivelse"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoritter"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Umulig"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Plassering"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Ingen spillelister"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Spornummer"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Type"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Ukjent"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Slett"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Lagt til"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Slette?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s er fjernet"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Fjernet"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Fjerne?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Angi som anropsringetone"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Kan ikke gi spillelisten nytt navn"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Kan ikke angi som ringetone"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Kan ikke dele DRM-fil"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografi"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Medvirkende"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Medieinformasjon"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografi"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Tekster"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Navnet er for langt"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Aldersgrense"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Mulig"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Gjennomgang"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Avspillingsliste"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Allerede lagt til"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1-kanal"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Legg til i spilleliste"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Kan brukes antall ganger"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bassforsterkning"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Kor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassisk"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Forfatter"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Komponister"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Concert Hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Egendefinert"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dans"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Medieinformasjon"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamisk"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Eksternalisering"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Videresending"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Sjanger"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Sjangre"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Mest spilt"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Musikklarhet"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musikkmeny"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Musikkinnstillinger"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albumomslag"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Spillelister"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Nylig lagt til"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Nylig avspilt"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Sporlengde"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Gyldighet"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Bred"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Av"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Ingen sanger"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Sanger"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Legg til spilleliste"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Ringetone for samtale"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Opprett spilleliste"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Rediger tittel"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historikk"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Fjerne"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Endre navn"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Omordne"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Lagre som spilleliste"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Alarmtone"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Anropsringetone"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Lagt til %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth koblet fra"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Maksimalt antall elementer (%d) nådd"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Ingenting valgt"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Kan ikke slette. Valgt musikk spilles av"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Kan ikke spille av. Det oppstod en feil"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Kan ikke spilles av. Ikke støttet filtype"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Tilføy"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Del"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Alle"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Kompon."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirig."
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Sjangre"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasts"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Velg enhet"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ikke vis igjen"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Du kan streame musikken din til andre enheter med AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Vis som"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Bruker"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bassheving"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Diskantheving"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafé"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuell 7.1 kanal"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Etter 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Etter 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Etter 1 time"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Etter 1 time 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Etter 2 timer"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Musikk auto av"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Denne lydeffekten virker bare i høretelefon- og Bluetooth headset-moduser"
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100755 (executable)
index 0000000..ffc5aa8
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Słuchanie muzyki przy wysokim ustawieniu głośności przez długi czas może spowodować uszkodzenie słuchu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Nie można dodać"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Brak tekstu"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Nie można zmienić efektów dźwiękowych, gdy włączony jest dźwięk przestrzenny 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Znajdź tag"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Podłącz słuchawki, aby korzystać z dźwięku przestrzennego 5.1"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Dźwięk przestrzenny 5.1 można włączyć tylko wtedy, gdy efekty dźwiękowe są wyłączone"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Nie można utworzyć listy odtwarzania"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Nie można pobrać etykiety"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Katalogi"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Nie można usunąć elementu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Nie można dodać więcej utworów muzycznych niż %d"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Niedozwolone podczas połączenia"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumy"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Utwórz listę odtwarzania"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Opis"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Ulubione"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Niemożliwe"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Miejsce"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Brak list odtwarzania"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Numer utworu"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Typ"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Nieznany"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Usuń"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Dodano"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Usunąć?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "Usunięto: %s"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Usunięto"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Usunąć?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Ustaw jako dzwonek rozmówcy"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Nie można zmienić nazwy listy odtwarzania"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Nie można ustawić jako dzwonek"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Nie można udostępnić pliku DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumy"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografia"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Kredyty"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Multimedia"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Dyskografia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Tekst"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Zbyt długa nazwa"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Ocena rodzica"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Możliwe"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Podgląd zdjęcia"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lista utworów"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Już dodano"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Dźwięk przestrzenny 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Dodaj do listy odtwarzania"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Wykonawca"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artyści"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatyczny"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Dostępne zastosowania"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Podbicie basów"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Chór"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Kompozytor"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Kompozytorzy"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Sala koncertowa"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Niestand."
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Multimedia"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamiczny"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efekty"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Na zewnątrz"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Przesyłanie"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Rodzaj"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Rodzaje"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najczęściej odtwarzane"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Muzyka"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Elementy menu muzyka"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Ustawienia muzyki"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Okładka"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Listy odtwarzania"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Ostatnio dodane"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Ostatnio odtwarzane"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Długość utworu"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Ważność"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Wide"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Rok"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Wył."
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Brak utworów"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Piosenki"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Dodaj listę odtwarzania"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Dźwięk dzwonka"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Utwórz listę odtwarzania"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Edytuj tytuł"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Historia"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Usuń"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Zmień nazwę"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Zmień kolejność"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Zapisz jako listę odtwarzania"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Sygnał alarmu"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Dzwonek kontaktu"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Dodano do %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Przerwano połączenie Bluetooth"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Wybrano maksymalną liczbę elementów (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Niczego nie zaznaczono"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Nie można usunąć. Wybrana muzyka jest odtwarzana"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Nie można odtworzyć. Wystąpił błąd"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Nie można odtworzyć. Nieobsługiwany typ pliku"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Dodaj"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Udostęp."
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Wszystkie"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artyści"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Kompoz."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dyrygenci"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Rodzaje"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasty"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Lata"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Wybierz urządzenie"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Nie wyświetlaj ponownie"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Możesz przesyłać muzykę strumieniowo do urządzeń przez AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Widok"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Wył."
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Użytkownik"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Śpiew"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Podbicie basów"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Podbicie tonów wysokich"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kawiarnia"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Po 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Po 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Po 1 godz."
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Po 1 godz. 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Po 2 godz."
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Auto-wył. odtwarzacza"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "To ustawienie jest dostępne tylko w trybie słuchawek przewodowych lub Bluetooth"
+
index 21411cb..3c78359 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "O volume de som elevado pode prejudicar a sua audição se a expuser a este durante muito tempo"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Impossível adicionar"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Nenhumas letras"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Impossível alterar efeitos de som durante a utilização do canal 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Localizar etiqueta"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "O efeito de som do canal 5.1 funciona apenas no modo de auricular"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "O canal 5.1 só pode ser activado quando os efeitos de som estão desligados"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Impossível criar lista de reprodução"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Impossível obter etiqueta"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Pastas"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Impossível remover item"
 
@@ -328,3 +358,57 @@ msgstr "Podcasts"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Anos"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Seleccionar dispositivo"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Não mostrar novamente"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Pode efectuar o streaming da sua música para dispositivo utilizando AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Ver"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Utilizador"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Amplificação de baixos"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Amplificação de agudos"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Café"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Canal virtual 7.1"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Após 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Após 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Após 1 hora"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Após 1 hora e 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Após 2 horas"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Desligar música automaticamente"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Este efeito de som funciona apenas nos modos de auricular e auricular Bluetooth"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100755 (executable)
index 0000000..d328453
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Sunetele la volum ridicat pot afecta auzul, dacă le ascultaţi timp îndelungat"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Imposibil de adăugat"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Fără versuri"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Imposibil de modificat efectele sonore în timpul utilizării sistemului pe 5.1 canale"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Căutare etichetă"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Efectul sonor pentru 5.1 canale funcţionează numai în modul cască"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Sistemul pe 5.1 canale poate fi activat numai când efectele sonore sunt dezactivate"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Imposibil de creat lista de redare"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Imposibil de obţinut eticheta"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Foldere"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Imposibil de eliminat elementul"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Imposibil de adăugat mai mult de %d fişier muzical"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Imposibil de redat în timpul unui apel"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albume"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Drept de autor"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Creare listă de redare"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Descriere"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favorite"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Imposibil"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Locaţie"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nici o listă de redare"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Număr piesă"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tip"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Necunoscut"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Ştergere"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Adăugat"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Ştergeţi?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s a fost eliminat"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Eliminat"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Eliminare?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Setare ca ton de sonerie apelant"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Imposibil de redenumit lista de redare"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Imposibil de setat ca ton de sonerie"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Imposibil de partajat fişierul DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albume"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografie"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Credite"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Informaţii media"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Discografie"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Versuri"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Nume prea lung"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Evaluare părinte"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Posibil"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Examinare"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Listă de melodii"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Deja adăugat"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 canale"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Adăugare la lista de redare"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artişti"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automat"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Utilizări disponibile"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Accentuare başi"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Cor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Clasic"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Compozitor"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Compozitori"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Sală de concert"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Particularizat"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Informaţii media"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamic"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efect"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Egalizator"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalizare"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Redirecţionare"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Gen"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genuri"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Cea mai redată"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Claritate muzică"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Meniu muzică"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Setări muzică"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Grafică album"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Liste de redare"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Adăugat recent"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Redate recent"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Lungime piesă"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Valabilitate"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Larg"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Ani"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Oprit"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Nu există melodii"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Melodii"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Adăugare listă de redare"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Ton sonerie apel"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Creare listă de redare"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Editare titlu"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Istoric"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Eliminare"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Redenumire"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Reordonare"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Salvare ca listă de redare"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Ton alarmă"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ton sonerie apelant"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Adăugate la %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth deconectat"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "A fost selectat numărul maxim de elemente (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nimic selectat"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Imposibil de şters. Muzica selectată este în curs de redare"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Imposibil de redat. A avut loc o eroare"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Imposibil de redat. Tip fişier neacceptat"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Adăug."
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Partajare"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Toate"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artişti"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Compoz."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirijori"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genuri"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast."
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Ani"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Selectare dispozitiv"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Nu se mai afişează"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Puteţi reda în flux muzica pe dispozitive utilizând AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Viz. ca"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Utilizator"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocală"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Accentuare başi"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Accentuare înalte"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafenea"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "7.1 canale virtuale"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "După 15 minute"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "După 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "După 1 oră"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "După 1 oră 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "După 2 ore"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Oprire automată muzică"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Acest efect de sunet funcţionează numai în modurile cască şi cască Bluetooth"
+
index e428013..3ce2ea5 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Прослушивание громкой музыки в течение продолжительного времени может привести к ухудшению слуха"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Не удалось добавить"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Нет текста песни"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Невозможно изменить звуковые эффекты при использовании 5.1-канального звука"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Поиск тегов"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-канальный звуковой эффект доступен только в режиме наушников"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1-канальный звук можно использовать только тогда, когда звуковые эффекты отключены"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Невозможно создать список воспроизведения"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Не удается получить тег"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Папки"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Невозможно удалить элемент"
 
@@ -20,7 +50,7 @@ msgid "IDS_MUSIC_BODY_COPYRIGHT"
 msgstr "Авторские права"
 
 msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
-msgstr "Создать список воспроизведения"
+msgstr "Создать список"
 
 msgid "IDS_MUSIC_BODY_DESCRIPTION"
 msgstr "Описание"
@@ -41,7 +71,7 @@ msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
 msgstr "Нет списков воспроизведения"
 
 msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
-msgstr "Номер трека"
+msgstr "Номер композиции"
 
 msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
 msgstr "Тип"
@@ -146,7 +176,7 @@ msgid "IDS_MUSIC_BODY_CLASSIC"
 msgstr "Классика"
 
 msgid "IDS_MUSIC_BODY_COMPOSER"
-msgstr "Ð\9aомпозиÑ\82оÑ\80"
+msgstr "СообÑ\89ение"
 
 msgid "IDS_MUSIC_BODY_COMPOSERS"
 msgstr "Композиторы"
@@ -155,7 +185,7 @@ msgid "IDS_MUSIC_BODY_CONCERT_HALL"
 msgstr "Концертный зал"
 
 msgid "IDS_MUSIC_BODY_CUSTOM"
-msgstr "Ð\94Ñ\80Ñ\83гое"
+msgstr "СоздаÑ\82Ñ\8c"
 
 msgid "IDS_MUSIC_BODY_DANCE"
 msgstr "Танец"
@@ -212,7 +242,7 @@ msgid "IDS_MUSIC_BODY_POP"
 msgstr "Поп"
 
 msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
-msgstr "Ð\9fоÑ\81ледние Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ\8f"
+msgstr "Ð\9dедавно Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð½Ñ\8bе"
 
 msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
 msgstr "Последние файлы"
@@ -254,7 +284,7 @@ msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
 msgstr "Мелодия звонка"
 
 msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
-msgstr "Создать список воспроизведения"
+msgstr "Создать список"
 
 msgid "IDS_MUSIC_OPT_EDIT_TITLE"
 msgstr "Изменить заголовок"
@@ -328,3 +358,57 @@ msgstr "Подкасты"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Годы"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Выберите устройство"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Не показывать снова"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Можно передавать музыку на устройства с помощью AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Вид"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Обычный"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Пользователь"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Вокал"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Усиление низких частот"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Усиление высоких частот"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Кафе"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Виртуальная 7.1-канальная система"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Через 15 мин"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Через 30 мин"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Через 1 час"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Через 1 час 30 мин"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Через 2 часа"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Автоотключение музыки"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Этот звуковой эффект доступен только в режимах наушников и гарнитуры Bluetooth"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100755 (executable)
index 0000000..ab525e2
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Vysoká hlasitosť môže pri dlhodobom počúvaní poškodiť sluch"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Nedá sa pridať"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Žiadny text"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Pri používaní 5.1-kanálového zvuku sa nedajú zmeniť zvukové efekty"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Hľadať značku"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5,1-kanálový zvukový efekt funguje iba v režime slúchadiel"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1-kanálový zvuk môžete aktivovať iba po vypnutí zvukových efektov"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Zoznam skladieb sa nedá vytvoriť"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Nedá sa získať značka"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Priečinky"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Položka sa nedá odstrániť"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Nemôžete pridať viac hudobných súborov ako %d"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Počas hovoru sa nedá prehrávať"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumy"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Autorské práva"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Vytvoriť zoznam skladieb"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Popis"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Obľúbené"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Formát"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Nemožné"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Umiestnenie"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Žiadne zoznamy skladieb"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Číslo skladby"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Typ"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Neznáma"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Odstrániť"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Pridané"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Odstrániť?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s bol odstránený"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Odstránené"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Odstrániť?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Nastaviť ako zvonenie volajúceho"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Zoznam skladieb sa nedá premenovať"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Nedá sa nastaviť ako vyzváňací tón"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Súbor DRM sa nedá zdieľať"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumy"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Životopis"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Poďakovanie"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Informácie o médiách"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografia"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Text"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Názov je príliš dlhý"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Rodičovské hodnotenie"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Možné"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Prezrieť"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Zoznam skladieb"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Už pridané"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5,1-kanálový"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Pridať do zoznamu skladieb"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Interpret"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Interpreti"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automaticky"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Počet použití k dispozícii"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Zvýraznenie basov"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Zbor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasika"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Skladateľ"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Skladatelia"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Koncertná sieň"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Vlastné"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Tanec"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Informácie o médiách"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamické"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvalizér"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalizácia"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Preposlanie"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Žáner"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žánre"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Naživo"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najčastejšie prehrávané"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Čistota hudby"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Hudobné menu"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Nastavenia hudby"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Obal albumu"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Zoznamy skladieb"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Posledne pridané"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Posledne prehrávané"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Dĺžka skladby"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Platnosť"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Široký"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Roky"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Vyp."
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Žiadne skladby"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Piesne"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Pridať zoznam skladieb"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Zvonenie hovoru"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Vytvoriť zoznam skladieb"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Upraviť názov"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "História"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Odstrániť"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Premenovať"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Zmeniť poradie"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Uložiť ako zoznam skladieb"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Tón budíka"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Zvonenie volajúceho"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Pridané do %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth je odpojený"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Vybrali ste maximálny počet položiek (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nič nie je vybrané"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Nedá sa vymazať. Vybratá hudba sa prehráva"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Nedá sa prehrať. Vyskytla sa chyba"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Nedá sa prehrať. Nepodporovaný typ súboru"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Pridať"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Zdieľať"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Všetko"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Interpreti"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Skladat."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigen."
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žánre"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcasty"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Roky"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Vyberte zariadenie"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Už nezobrazovať"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Použitím funkcie AllShare môžete prenášať hudbu cez streaming do zariadení"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Zobr. ako"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normálny"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Používateľ"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Reč"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Zvýraznenie basov"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Zvýraznenie výšok"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kaviareň"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuálny 7.1-kanálový zvuk"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Po 15 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Po 30 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Po 1 hodine"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Po 1 hodine a 30 minútach"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Po 2 hodinách"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Automatické vypnutie hudby"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Tento zvukový efekt funguje iba v režime slúchadiel a v režime náhlavnej súpravy Bluetooth"
+
diff --git a/po/sl.po b/po/sl.po
new file mode 100755 (executable)
index 0000000..9f8ecac
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Če glasno glasbo poslušate daljši čas, lahko to škoduje vašem sluhu"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Ni mogoče dodati."
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Ni besedila"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Med uporabo postaje 5.1 ni mogoče spremeniti zvočnih učinkov"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Poišči oznako"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-kanalni zvočni učinek deluje samo v načinu slušalk"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Postajo 5.1 lahko vklopite samo, če so zvočni učinki izklopljeni"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Seznama za predvajanje ni mogoče ustvariti"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Ni mogoče pridobiti oznake"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mape"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Predmeta ni mogoče odstraniti"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Ni mogoče dodati več kot %d glasbenih datotek"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Ni mogoče predvajati med klicem"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Avtor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Avtorske pravice"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Ustvari seznam predvajanja"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Opis"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Priljubljene"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Nemogoče"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Ni seznama predvajanja"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Številka skladbe"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Vrsta"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Neznano"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Izbriši"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Dodano"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Izbrišem?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s je odstranjeno"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Odstranjeno"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Odstranim?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Nastavi kot zvonjenje kličočega"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Seznama za predvajanje ni mogoče preimenovati"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Ni mogoče nastaviti za melodijo zvonjenja"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Datoteke DRM ni mogoče souporabljati"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Življenjepis"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Zasluge"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Informacije o mediju"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografija"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Besedilo"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Ime je predolgo"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Starševska ocena"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Mogoče"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Pregled"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Seznam skladb"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Že dodano"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1-kanalno"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Dodaj na seznam predvajanja"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Izvajalec"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Izvajalci"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Samodejno"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Število uporab"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Izboljšani basi"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Zbor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasično"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Skladatelj"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Skladatelji"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Koncertna dvorana"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Osebne"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Ples"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Informacije o mediju"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamično"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Učinek"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Izenačevalnik"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Eksternalizacija"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Posredovanje"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Zvrst"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Zvrsti"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "V živo"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najpogosteje predvajano"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Jasnost glasbe"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Glasbeni meni"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Glasbene nastavitve"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Slika albuma"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Seznami predvajanja"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Dodano pred kratkim"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Nazadnje predvajano"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Dolžina skladbe"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Veljavnost"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Va-va"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Široko"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Let"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Izključ."
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Ni skladb"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Skladbe"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Dodaj seznam predvajanja"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Zvonjenje za klic"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Ustvari seznam predvajanja"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Uredi naslov"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Zgodovina"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Odstrani"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Spremeni zaporedje"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Shrani kot seznam predvajanja"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Ton alarma"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Melodija kličočega"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Dodano v %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Povezava Bluetooth je prekinjena"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Izbrano je največje število elementov (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Nič ni izbrano"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Ni mogoče zbrisati. Izbrana glasba se predvaja"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Ni mogoče predvajati. Prišlo je do napake"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Predvajanje ni mogoče. Nepodprta vrsta datoteke"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Dodaj"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Souporab."
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Vse"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Izvajalci"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Skladat."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigent"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Zvrsti"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Spletne oddaje"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Leta"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Izberite napravo"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ne kaži več"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "S programom AllShare lahko svojo glasbo pretočno predvajate v napravah"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Prik. kot"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Uporabnik"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Poudari base"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Poudari visoke tone"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Barska"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Zvočna kartica Virtual 7.1 ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Po 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Čez 30 minut"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Čez 1 uro"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Po 1 h in 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Čez 2 uri"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Samodejna izklj. glasbe"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Ta zvočni učinek deluje samo v načinu slušalk in v načinu slušalk Bluetooth"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100755 (executable)
index 0000000..0eb2e74
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Velika jačina zvuka može da ošteti sluh ukoliko tako slušate duže vreme"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Nemoguće dodati"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Nema stihova"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Nije moguće menjati zvučne efekte kad se koristi 5.1-kanalni sistem"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Nađi oznaku"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-kanalni zvuk je dostupan samo u režimu slušalice"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1-kanalni sistem se može uključiti samo kad su zvučni efekti isključeni"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Nemoguće kreirati listu za reprodukciju"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Nemoguće dobiti oznaku"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Folderi"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Nemoguće ukloniti stavku"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Nemoguće dodati više od %d muzičkih fajlova"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Nemoguće reprodukovati tokom poziva"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Autor"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Autorska prava"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Kreiraj listu za reprodukciju"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Opis"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Omiljeni"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Nemoguće"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Lokacija"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Nema listi za reprodukciju"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Broj numere"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Tip"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Nepoznato"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Obriši"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Dodato"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Obriši?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s uklonjeno"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Uklonjeno"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Ukloni?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Postavi kao ton zvona pozivaoca"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Nemoguće preimenovati listu za reprodukciju"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Nemoguće postaviti kao ton zvona"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Nemoguće deliti DRM fajl"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albumi"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografija"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Zahvalnice"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Informacije o mediju"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografija"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Stihovi"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Ime predugačko"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Roditeljski rejting"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "moguće"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Pregled"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Lista numera"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Već dodato"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1-kanalni zvuk"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Dodaj u listu za reprodukciju"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Umetnik"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Umetnici"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Automatski"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Moguće upotrebe"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Pojačanje basova"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Hor"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klasika"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Kompozitor"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Kompozitori"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Koncertna dvorana"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Prilagođeno"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dens"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Informacije o mediju"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dinamička"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Efekat"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Ekvilajzer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Eksternalizacija"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Prosleđivanje"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Žanr"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Žanrovi"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Džez"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Uživo"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Najčešće puštano"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Razgovetnost muzike"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Muzički meni"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Podešavanja muzike"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Omoti albuma"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Liste za reprodukciju"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Nedavno dodato"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Nedavno puštano"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rok"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Dužina numere"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Važenje"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Va-va"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Široko"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Godina"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Isključ."
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Nema pesama"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Pesme"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Dodaj listu za reprodukciju"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Ton zvona"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Kreiraj listu za reprodukciju"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Izmeni naslov"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Istorija"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Ukloni"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Preimenuj"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Preuredi"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Sačuvaj kao listu za reprodukciju"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Ton alarma"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ton zvona pozivaoca"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Dodato u %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth veza otkačena"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Izabran maksimalan broj stavki (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Ništa nije izabrano"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Nemoguće obrisati. Izabrana muzika se reprodukuje"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Nemoguće reprodukovati. Nastala je greška"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Nemoguće reprodukovati. Nepodržani tip fajla"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Dodaj"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Podeli"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Sve"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Umetnici"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Kompoz."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigenti"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Žanrovi"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podkasti"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Godine"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Izaberi uređaj"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Ne prikazuj ponovo"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Možeš strimovati muziku na uređaju pomoću AllShare-a"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Prik. kao"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Korisnik"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokalna"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Pojačanje basova"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Pojačanje visokih tonova"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafić"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuelni 7.1 kanal"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Nakon 15 min."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Nakon 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Nakon jednog sata"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Nakon jednog sata i 30 minuta"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Nakon 2 sata"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Muzika automatski isključena"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Ovaj zvučni efekat je dostupan samo u režimu slušalice i režimu Bluetooth slušalica"
+
diff --git a/po/sv.po b/po/sv.po
new file mode 100755 (executable)
index 0000000..2372b76
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Hög volym kan skada din hörsel om du lyssnar för länge"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Det går inte att lägga till"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Ingen text"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Kan inte ändra ljudeffekter när 5.1-kanalen används"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Sök efter etikett"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-kanalsljudeffekten fungerar bara i hörlursläge"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1-kanal kan bara aktiveras om ljudeffekterna är av"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Det går inte att skapa spellista"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Det går inte att hämta taggen"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Mappar"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Det går inte att ta bort objekt"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Kan inte lägga till fler än %d musikfiler"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Kan inte spela upp under samtal"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Författare"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Copyright"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Skapa spellista"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Beskrivning"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Favoriter"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Format"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Ej möjlig"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Plats"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Inga spellistor"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Spårnummer"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Typ"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Okänd"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Radera"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Tillagd"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Radera?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s borttagen"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Borttagen"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Ta bort?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Anv. som ringsignal"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Det går inte att byta namn på spellistan"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Det går inte att ange som ringsignal"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Det går inte att dela DRM-fil"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Biografi"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Medverkande"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Mediainfo"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Diskografi"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lyrik"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Namnet är för långt"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Förälderrankning"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Möjlig"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Granska"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Spårlista"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Redan tillagd"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1-kanal"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Lägg till i spellista"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Artist"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Artister"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Tillgängliga tillämpningar"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Basförstärkning"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Korus"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Klassisk"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Kompositör"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Kompositörer"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Konserthus"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Egen"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dans"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Mediainfo"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamisk"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Effekt"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Equalizer"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalisering"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Vidarebefordra"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Mest spelade"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Klarhet"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Musikmeny"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Musikinställningar"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Albumomslag"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Spellistor"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Senast tillagda"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Senast spelade"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Spårlängd"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Tremolo"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Giltighet"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Bred"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Av"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Inga låtar"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Låtar"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Lägg till spellista"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Ringsignal för samtal"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Skapa spellista"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Redigera rubrik"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Tidigare"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Ta bort"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Byt namn"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Ändra ordningsföljd"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Spara som spellista"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Larmsignal"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Ringsignal till Foto-ID"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Tillagt till %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth frånkopplat"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Högsta tillåtna antal objekt (%d) har valts"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Inget markerat"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Kan inte radera. Den valda musiken spelas"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Det går inte att spela upp. Ett fel inträffade"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Det går inte att spela. Filtypen stöds inte"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Lägg till"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Dela"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Alla"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Artister"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Komp."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Dirigenter"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Genre"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podsändn"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "År"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Välj enhet"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Visa inte igen"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Du kan strömma musik till enheter med AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Visa som"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Användare"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Sång"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Basförstärkning"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Diskantförstärkning"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Café"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtuellt 7.1-kanal"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Efter 15 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Efter 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Efter 1 timme"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Efter 1 timme och 30 min"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Efter 2 timmar"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Musik auto av"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Den här ljudeffekten fungerar bara i hörlurs- och Bluetooth-headsetläge"
+
diff --git a/po/th.po b/po/th.po
new file mode 100755 (executable)
index 0000000..e5b701e
--- /dev/null
+++ b/po/th.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "ระดับ​เสียง​ที่​สูง​อาจ​เป็น​อันตราย​ต่อ​การ​ฟัง​ของ​คุณ​ได้ หาก​คุณ​ฟัง​เป็น​เวลา​นาน"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "ไม่​สามารถ​เพิ่ม"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "ไม่​มี​เนื้อ​เพลง"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "ไม่​สามารถ​เปลี่ยน​เอ​ฟเฟ็กต์​เสียง​ได้​เมื่อ​ใช้ 5.1 แชนแนล"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "ค้น​หา​แท็ก"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "เอฟเฟ็กส์เสียง 5.1 แชนแนลทำงานในโหมดหูฟัง\nเท่านั้น"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "สามารถ​เปิด​ใช้​งาน 5.1 ​ช่อง​ทาง​ได้​เฉพาะ​เมื่อ​เอ​ฟเฟ็กต์​เสียง​ปิด​อยู่​เท่า​นั้น"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "สร้างรายการเพลงไม่​ได้"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "ไม่​สา​มา​รถ​รับ​แท็ก​ได้"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "โฟลเดอร์"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "ไม่​สามารถ​ลบ​รายการ"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "ไม่​สามารถ​เพิ่ม​ไฟล์​เพลง​ได้​มากกว่า %d ​ไฟล์"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "เล่น​ไม่​ได้ ขณะ​โทร"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "อัลบั้ม"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "อัลบั้ม"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "ผู้​ประพันธ์"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "ลิขสิทธิ์"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "สร้าง​รายการ​เพลง"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "ลักษณะ"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "รายชื่อ\nที่ชอบ"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "ฟอร์แมต"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "ไม่​ได้"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "ตำแหน่ง"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "ไม่​มี​รายการ​เพลง"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "หมาย​เลข​แทร็ก"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "ชนิด"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "ไม่​รู้จัก"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "ลบ"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "เพิ่ม​แล้ว"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "ลบ?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s ​ถูกลบ​แล้ว"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "ลบ​เรียบ​ร้อย"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "ลบ?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "ตั้ง​​เป็น​เสียง​เรียก\n​เข้า​ผู้​โทร"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "ไม่​สามารถ​เปลี่ยน​ชื่อ​รายการเพลง"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "ไม่​สามารถ​ตั้ง​เป็น​เสียง​เรียก​เข้า"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "ไม่​สามารถ​ใช้​ไฟล์ DRM ​ร่วม​กัน​ได้"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "อัลบั้ม"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "ชีวประวัติ"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "เครดิต"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "ข้อ​มูล​มี​เดีย"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "ดิสโก้​กรา​ฟี"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "เนื้อ​เพลง"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "ชื่อ​ยาว​เกิน​ไป"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "เรต​หลัก"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "ได้"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "แสดง"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "ราย​การ​แทร็ก"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "เพิ่ม​แล้ว"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1 ​แชนแนล"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "เพิ่ม​ในรายการ​เพลง"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "ศิลปิน"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "ศิลปิน"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "อัตโนมัติ"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "อนุญาต​ใช้"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bass enhancement"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "ลูก​คู่"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Composer"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "ผู้​แต่ง"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Concert ​hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "กำหนด​เอง"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "ข้อ​มูล​มี​เดีย"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Dynamic"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "เอ​ฟเฟ็ก​ต์"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "อี​ควอ​ไล​เซอร์"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalisation"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "ส่ง​ต่อ"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "ประเภท"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "ประเภท"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "เล่น​บ่อย​ที่​สุด"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Music clarity"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "เมนู​เพลง"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "การ​ตั้ง​ค่า​เพลง"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "อัลบั้ม​อา​ร์ท"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "รายการ​เพลง"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "ที่​เพิ่ม​เร็วๆ นี้"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "ที่เล่นไม่นานมานี้"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "ความ​ยาว​แทร็ก"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "เสียง​สั่น"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "การอนุมัติ"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Wide"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "ปี"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "ปิด"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "ไม่​มี​เพลง"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "เพลง"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "เพิ่ม​รายการเพลง"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "เสียง​เรียก​เข้า"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "สร้าง​รายการ​เพลง"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "แก้ไข​ชื่อ"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "ประวัติ"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "ลบ"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "เปลี่ยน​ชื่อ"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "เรียง​ลำดับ​ใหม่"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "บัน​ทึก​เป็นรายการเพลง"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "เสียง​เตือน"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "เสียง​เรียก​เข้า​ผู้​โทร"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "เพิ่ม​ไป​ที่ %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "หยุด​เชื่อม​ต่อ​กับบลูทูธ​แล้ว"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "เลือก​จำนวน​รายการ​สูง​สุด (%d) ​แล้ว"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "ไม่​ได้​เลือก​อะไร​เลย"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "ลบ​ไม่​ได้ กำลัง​เล่น​เพลง​ที่​เลือก"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "เล่น​ไม่​ได้ มี​ข้อ​ผิด​พลาด​เกิด​ขึ้น"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "เล่น​ไม่​ได้ ไม่​รอง​รับ​ชนิด​ไฟล์"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "เพิ่ม"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "แชร์"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "ทั้ง​หมด"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "ศิลปิน"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "ตัว​เขียน"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "ผู้ควบคุม"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "ประเภท"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "พอดแคสต์"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "ปี"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "เลือก​อุปกรณ์"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "ห้าม​แสดง​อีก"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "คุณ​สามารถ​สต​รีม​เพลง​ของ​คุณ​กับ​อุปกรณ์​โดย​ใช้ AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "แสดงเป็น"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "ปกติ"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "ผู้​ใช้"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vocal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "เพิ่ม​เสียง​เบส"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "เพิ่ม​เสียง​สูง"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "หลัง​จาก 15 ​นาที"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "หลัง​จาก 30 ​นาที"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "หลัง​จาก 1 ​ชั่วโมง"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "หลัง​จาก 1 ​ชั่วโมง 30 ​นาที"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "หลัง​จาก 2 ​ชั่วโมง"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "ปิด​เพลง​อัตโนมัติ"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "เอฟเฟ็กต์เสียงนี้จะใช้งานได้\nในโหมดหูฟังและโหมด\nหูฟังบลูทูธเท่านั้น"
+
index 1a87672..e5418f1 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Yüksek ses düzeyi, uzun süre dinlemeniz durumunda işitme duyunuza zarar verebilir"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Eklenemiyor"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Söz yok"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "5.1 kanalı kullanılırken ses efektleri değiştirilemiyor"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Etiket bul"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 kanal ses efekti sadece kulaklık modunda çalışır"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1 kanalı sadece ses efektleri kapalı olduğunda etkinleştirilebilir"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Parça listesi oluşturulamıyor"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "İm alınamıyor"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Klasörler"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "Öğe kaldırılamıyor"
 
@@ -328,3 +358,57 @@ msgstr "Pod cast’ler"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "Yıl"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Cihaz seçin"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Bir daha gösterme"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "AllShare kullanarak, müziğinizi cihazlara yayınlayabilirsiniz"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Göster"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Kullanıcı"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Vokal"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Bas güçlendirme"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Tiz güçlendirme"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Kafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 ch"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 dak. sonra"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 dakika sonra"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 saat sonra"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1 saat 30 dakika sonra"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 saat sonra"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Müziği otomatik kapat"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Bu ses efekti sadece kulaklık ve Bluetooth kulaklık modlarında çalışır"
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100755 (executable)
index 0000000..a804a82
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Тривале прослуховування за високого рівня гучності може призвести до погіршення слуху"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Неможливо додати"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Без тексту"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Неможливо змінити звукові ефекти під час використання 5.1-канального звуку"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Пошук тегів"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1-канальний звуковий ефект працює лише в режимі навушників"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1-канальний звук доступний лише за вимкнених звукових ефектів"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Неможливо створити список відтворення"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Неможливо отримати тег"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Папки"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Неможливо вилучити об’єкт"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Неможливо додати більше %d музичних файлів"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Неможливо відтворити під час виклику"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Альбом"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Альбоми"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Автор"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Авторське право"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Створити список відтворення"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Опис"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Обране"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Формат"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Неможливо"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Розташування"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Немає списків відтворення"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Номер запису"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Тип"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Невідома"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Видалити"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Додано"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Видалити?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s видалено"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Видалено"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Видалити?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Встановити як звук дзвінка абонента"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Неможливо перейменувати список відтворення"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Неможливо встановити як звук дзвінка"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Неможливо відкрити спільний доступ до файла DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Альбоми"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Біографія"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Титри"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Інформація про медіадані"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Дискографія"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Лірика"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Задовге ім'я"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Основний рейтинг"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Можливо"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Огляд"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Список записів"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Вже додано"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "5.1-канальний"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Додати до списку"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Виконавець"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Виконавці"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Доступні використання"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Підсилення басів"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Хор"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Класика"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Композитор"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Композитори"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Концертний зал"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Особливий"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Танцювальний"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Інформація про медіадані"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Динамічний"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Ефект"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Еквалайзер"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Уособлення"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Переадресація"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Жанр"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Жанри"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Джаз"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Пряма трансляція"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "Найчастіше відтворювані"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Ясність музики"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Музичне меню"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Установки музики"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Альбом зображень"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "Списки відтворення"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Поп-музика"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Останні додані"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Останні відтворені"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Рок"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Тривалість запису"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Тремоло"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Термін дії"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Вау-ва"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Широкий діапазон"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Роки"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Вимкнено"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Немає композицій"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Пісні"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Додати список відтворення"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Звук дзвінка"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Створити список відтворення"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Редагувати назву"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Історія"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Видалити"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Перейменувати"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Упорядкувати"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Зберегти як список відтворення"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Сигнал будильника"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Звук дзвінка абонента"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Додано до %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth відключено"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Вибрано максимальну кількість об’єктів: %d"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Нічого не вибрано"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Неможливо видалити. Вибрана музика відтворюється"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Неможливо відтворити. Сталася помилка"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Неможливо відтворити. Формат не підтримується"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Додати"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Відкр.д-п"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Всі"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Виконавці"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Композ."
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Дириг."
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Жанри"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Подкасти"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Роки"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Вибрати пристрій"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Більше не показувати"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Можна здійснити потокову передачу музики на пристрій за допомогою AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Перег. як"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Звичайний"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Користувач"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Вокальна"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Підсилення баса"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Підсилення сопрано"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Для кафе"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Віртуальний 7.1"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Через 15 хв."
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Через 30 хв."
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Через 1 годину"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Через 1 год. 30 хв."
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Через 2 години"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Автоматичне вимк. музики"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Цей звуковий ефект працює лише в режимах навушників і гарнітури Bluetooth"
+
diff --git a/po/vi.po b/po/vi.po
new file mode 100755 (executable)
index 0000000..af812b2
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,414 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "Nghe âm lượng to trong thời gian dài có thể làm hại thính giác của bạn"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "Không thể thêm"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "Không có lời"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "Không thể thay đổi hiệu ứng âm thanh khi đang sử hiệu ứng 5.1"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "Tìm tag"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "Hiệu ứng âm thanh 5.1 chỉ hoạt động khi gắn tai nghe"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "Hiệu ứng kênh 5.1 chỉ có thể được kích hoạt khi tắt hiệu ứng âm thanh"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "Không thể tạo ra Danh sách nhạc"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "Không thể lấy tag"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "Thư mục"
+
+msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
+msgstr "Không thể xóa khoản mục"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE"
+msgstr "Không thể thêm nhiều hơn %d file nhạc"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Không thể phát khi đang gọi"
+
+msgid "IDS_MUSIC_BODY_ALBUM"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_ALBUMS"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_AUTHOR"
+msgstr "Tác giả"
+
+msgid "IDS_MUSIC_BODY_COPYRIGHT"
+msgstr "Bản quyền"
+
+msgid "IDS_MUSIC_BODY_CREATE_PLAYLIST"
+msgstr "Tạo danh sách"
+
+msgid "IDS_MUSIC_BODY_DESCRIPTION"
+msgstr "Mô tả"
+
+msgid "IDS_MUSIC_BODY_FAVOURITES"
+msgstr "Yêu thích"
+
+msgid "IDS_MUSIC_BODY_FORMAT"
+msgstr "Định dạng"
+
+msgid "IDS_MUSIC_BODY_IMPOSSIBLE"
+msgstr "Không thể được"
+
+msgid "IDS_MUSIC_BODY_MUSIC_LOCATION"
+msgstr "Vị trí"
+
+msgid "IDS_MUSIC_BODY_NO_PLAYLISTS"
+msgstr "Không có danh sách"
+
+msgid "IDS_MUSIC_BODY_TRACK_NUMBER"
+msgstr "Số của bài hát"
+
+msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
+msgstr "Loại"
+
+msgid "IDS_MUSIC_BODY_UNKNOWN"
+msgstr "Không biết"
+
+msgid "IDS_MUSIC_OPT_DELETE"
+msgstr "Xóa"
+
+msgid "IDS_MUSIC_POP_ADDED"
+msgstr "Đã thêm"
+
+msgid "IDS_MUSIC_POP_DELETE_Q"
+msgstr "Xóa?"
+
+msgid "IDS_MUSIC_POP_PS_REMOVED"
+msgstr "%s đã xóa"
+
+msgid "IDS_MUSIC_POP_REMOVED"
+msgstr "Đã xóa"
+
+msgid "IDS_MUSIC_POP_REMOVE_Q"
+msgstr "Xóa?"
+
+msgid "IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE"
+msgstr "Đặt như nhạc chuông người gọi"
+
+msgid "IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"
+msgstr "Không thể đổi tên Danh sách nhạc"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
+msgstr "Không thể đặt làm nhạc chuông"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
+msgstr "Không thể chia sẻ file DRM"
+
+msgid "IDS_MUSIC_TAB4_ALBUMS"
+msgstr "Albums"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
+msgstr "Add to home"
+
+msgid "IDS_MUSIC_BODY_BIOGRAPHY"
+msgstr "Tiểu sử"
+
+msgid "IDS_MUSIC_BODY_CREDITS"
+msgstr "Tín dụng"
+
+msgid "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"
+msgstr "Thông tin media"
+
+msgid "IDS_MUSIC_BODY_DISCOGRAPHY"
+msgstr "Danh sách đĩa hát"
+
+msgid "IDS_MUSIC_BODY_LYRIC"
+msgstr "Lời nhạc"
+
+msgid "IDS_MUSIC_BODY_NAME_TOO_LONG"
+msgstr "Tên quá dài"
+
+msgid "IDS_MUSIC_BODY_PARENT_RATING"
+msgstr "Đề cử"
+
+msgid "IDS_MUSIC_BODY_POSSIBLE"
+msgstr "Có thể"
+
+msgid "IDS_MUSIC_BODY_REVIEW"
+msgstr "Xem trước"
+
+msgid "IDS_MUSIC_HEADER_TRACK_LIST"
+msgstr "Danh sách bài hát"
+
+msgid "IDS_MUSIC_ALREADY_ADDED"
+msgstr "Đã thêm"
+
+msgid "IDS_MUSIC_BODY_51_CHANNEL"
+msgstr "Kênh 5.1"
+
+msgid "IDS_MUSIC_BODY_ADD_TO_PLAYLIST"
+msgstr "Thêm vào danh sách"
+
+msgid "IDS_MUSIC_BODY_ARTIST"
+msgstr "Nghệ sĩ"
+
+msgid "IDS_MUSIC_BODY_ARTISTS"
+msgstr "Nghệ sĩ"
+
+msgid "IDS_MUSIC_BODY_AUTO"
+msgstr "Tự động"
+
+msgid "IDS_MUSIC_BODY_AVAILABLE_USES"
+msgstr "Các ứng dụng"
+
+msgid "IDS_MUSIC_BODY_BASS_ENHANCEMENT"
+msgstr "Bass enhancement"
+
+msgid "IDS_MUSIC_BODY_CHOROUS"
+msgstr "Dàn hợp xướng"
+
+msgid "IDS_MUSIC_BODY_CLASSIC"
+msgstr "Classic"
+
+msgid "IDS_MUSIC_BODY_COMPOSER"
+msgstr "Composer"
+
+msgid "IDS_MUSIC_BODY_COMPOSERS"
+msgstr "Nhạc sĩ"
+
+msgid "IDS_MUSIC_BODY_CONCERT_HALL"
+msgstr "Concert hall"
+
+msgid "IDS_MUSIC_BODY_CUSTOM"
+msgstr "Tùy chọn"
+
+msgid "IDS_MUSIC_BODY_DANCE"
+msgstr "Dance"
+
+msgid "IDS_MUSIC_BODY_DETAILSMEADIAINFO"
+msgstr "Thông tin media"
+
+msgid "IDS_MUSIC_BODY_DYNAMIC"
+msgstr "Sống động"
+
+msgid "IDS_MUSIC_BODY_EFFECT"
+msgstr "Hiệu ứng"
+
+msgid "IDS_MUSIC_BODY_EQUALISER"
+msgstr "Bộ chỉnh âm"
+
+msgid "IDS_MUSIC_BODY_EXTERNALISATION"
+msgstr "Externalisation"
+
+msgid "IDS_MUSIC_BODY_FORWARDING"
+msgstr "Chuyển tiếp"
+
+msgid "IDS_MUSIC_BODY_GENRE"
+msgstr "Thể loại"
+
+msgid "IDS_MUSIC_BODY_GENRES"
+msgstr "Thể loại"
+
+msgid "IDS_MUSIC_BODY_JAZZ"
+msgstr "Jazz"
+
+msgid "IDS_MUSIC_BODY_LIVE"
+msgstr "Live"
+
+msgid "IDS_MUSIC_BODY_MOST_PLAYED"
+msgstr "D.sách nghe nhiều nhất"
+
+msgid "IDS_MUSIC_BODY_MUSIC_CLARITY"
+msgstr "Music clarity"
+
+msgid "IDS_MUSIC_BODY_MUSIC_MENU"
+msgstr "Menu nhạc"
+
+msgid "IDS_MUSIC_BODY_MUSIC_SETTINGS"
+msgstr "Cài đặt nhạc"
+
+msgid "IDS_MUSIC_BODY_PLAYINGDETAILS_ALBUM_ART"
+msgstr "Album"
+
+msgid "IDS_MUSIC_BODY_PLAYLISTS"
+msgstr "D.sách nhạc"
+
+msgid "IDS_MUSIC_BODY_POP"
+msgstr "Pop"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_ADDED"
+msgstr "Đã thêm gần đây"
+
+msgid "IDS_MUSIC_BODY_RECENTLY_PLAYED"
+msgstr "Những bài vừa nghe"
+
+msgid "IDS_MUSIC_BODY_ROCK"
+msgstr "Rock"
+
+msgid "IDS_MUSIC_BODY_TRACK_LENGTH"
+msgstr "Độ dài bài hát"
+
+msgid "IDS_MUSIC_BODY_TREMOLO"
+msgstr "Âm rung"
+
+msgid "IDS_MUSIC_BODY_VALIDITY"
+msgstr "Hiệu lực"
+
+msgid "IDS_MUSIC_BODY_WHA_WHA"
+msgstr "Wha-wha"
+
+msgid "IDS_MUSIC_BODY_WIDE"
+msgstr "Wide"
+
+msgid "IDS_MUSIC_BODY_YEARS"
+msgstr "Năm"
+
+msgid "IDS_MUSIC_BUTTON_OFF"
+msgstr "Tắt"
+
+msgid "IDS_MUSIC_HEADER_NO_SONGS"
+msgstr "Không có bài hát"
+
+msgid "IDS_MUSIC_HEADER_SONGS"
+msgstr "Bài hát"
+
+msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
+msgstr "Thêm danh sách"
+
+msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
+msgstr "Nhạc chuông cuộc gọi"
+
+msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
+msgstr "Tạo danh sách"
+
+msgid "IDS_MUSIC_OPT_EDIT_TITLE"
+msgstr "Sửa tiêu đề"
+
+msgid "IDS_MUSIC_OPT_HISTORY"
+msgstr "Nhật ký"
+
+msgid "IDS_MUSIC_OPT_REMOVE"
+msgstr "Xóa"
+
+msgid "IDS_MUSIC_OPT_RENAME"
+msgstr "Đổi tên"
+
+msgid "IDS_MUSIC_OPT_REORDER"
+msgstr "Sắp xếp lại"
+
+msgid "IDS_MUSIC_OPT_SAVE_AS_PLAYLIST"
+msgstr "Lưu làm danh sách phát"
+
+msgid "IDS_MUSIC_OPT_SETAS_ALARM_TONE"
+msgstr "Âm báo thức"
+
+msgid "IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE"
+msgstr "Chuông người gọi"
+
+msgid "IDS_MUSIC_POP_ADDED_TO_PS"
+msgstr "Đã thêm vào %s"
+
+msgid "IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"
+msgstr "Bluetooth đã ngắt kết nối"
+
+msgid "IDS_MUSIC_POP_MAXIMUM_NUMBER_OF_ITEMS_HPD_SELECTED"
+msgstr "Đã chọn số mục tối đa (%d)"
+
+msgid "IDS_MUSIC_POP_NOTHING_SELECTED"
+msgstr "Chưa chọn"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"
+msgstr "Không thể xóa. Nhạc đã chọn đang phát"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"
+msgstr "Không thể phát. Đã xảy ra lỗi"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
+msgstr "Không thể phát. Loại File không hỗ trợ"
+
+msgid "IDS_MUSIC_SK_ADD_LITE"
+msgstr "Thêm"
+
+msgid "IDS_MUSIC_SK_SHARE"
+msgstr "Chia sẻ"
+
+msgid "IDS_MUSIC_TAB4_ALL"
+msgstr "Tất cả"
+
+msgid "IDS_MUSIC_TAB4_ARTISTS"
+msgstr "Nghệ sĩ"
+
+msgid "IDS_MUSIC_TAB4_COMPOSERS"
+msgstr "Soạn giả"
+
+msgid "IDS_MUSIC_TAB4_CONDUCTORS"
+msgstr "Người chỉ đạo"
+
+msgid "IDS_MUSIC_TAB4_GENRES"
+msgstr "Thể loại"
+
+msgid "IDS_MUSIC_TAB4_PODCASTS"
+msgstr "Podcast"
+
+msgid "IDS_MUSIC_TAB4_YEARS"
+msgstr "Năm"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "Chọn thiết bị"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "Không hiện lại"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "Bạn có thể truyền nhạc đến các thiết bị thông qua AllShare"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "Xem"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "Bình thường"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "Người dùng"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "Giọng hát"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "Tăng âm trầm"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "Tăng âm cao"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "Cafe"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Kênh 7.1 ảo"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "Sau 15 phút"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "Sau 30 phút"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "Sau 1 giờ"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "Sau 1 giờ 30 phút"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "Sau 2 giờ"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "Tự tắt nhạc"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "Hiệu ứng âm thanh này chỉ hoạt động khi dùng tai nghe và bộ tai nghe Bluetooth"
+
index 505cefe..f1951fa 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "如果长时间用高音量收听,可能会损坏听力"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "无法添加"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "没有歌词"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "使用5.1声道时无法更改声音效果"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "查找标签"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 声道声音效果只适用于耳机模式"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1声道仅在关闭声音效果时才能激活"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "无法创建播放列表"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "无法获取标签"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "文件夹"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "无法移除项目"
 
@@ -11,7 +41,7 @@ msgid "IDS_MUSIC_BODY_ALBUM"
 msgstr "专辑"
 
 msgid "IDS_MUSIC_BODY_ALBUMS"
-msgstr "唱片"
+msgstr "专辑"
 
 msgid "IDS_MUSIC_BODY_AUTHOR"
 msgstr "作者"
@@ -26,7 +56,7 @@ msgid "IDS_MUSIC_BODY_DESCRIPTION"
 msgstr "说明"
 
 msgid "IDS_MUSIC_BODY_FAVOURITES"
-msgstr "æ\88\91ç\9a\84æ\9c\80ç\88±"
+msgstr "æ\88\91ç\9a\84æ\94¶è\97\8f"
 
 msgid "IDS_MUSIC_BODY_FORMAT"
 msgstr "格式"
@@ -80,7 +110,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
 msgstr "无法共享DRM文件"
 
 msgid "IDS_MUSIC_TAB4_ALBUMS"
-msgstr "唱片"
+msgstr "专辑"
 
 msgid "IDS_MUSIC_BODY_ADD_TO_HOME"
 msgstr "Add to home"
@@ -251,7 +281,7 @@ msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
 msgstr "添加播放列表"
 
 msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
-msgstr "æ\9d¥ç\94µ铃声"
+msgstr "æ\89\8bæ\9cº铃声"
 
 msgid "IDS_MUSIC_OPT_CREATE_PLAYLIST"
 msgstr "新建播放列表"
@@ -326,5 +356,59 @@ msgid "IDS_MUSIC_TAB4_PODCASTS"
 msgstr "播客"
 
 msgid "IDS_MUSIC_TAB4_YEARS"
-msgstr "年"
+msgstr "年代"
+
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "选择设备"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "不要再显示"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "您可使用 AllShare 将您的音乐导入至设备"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "查看"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "普通"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "用户"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "声乐"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "低音增强"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "高音增强"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "咖啡馆"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "虚拟7.1 声道"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 分钟后"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30分钟后"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1小时后"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1 小时 30 分钟后"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2小时后"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "音乐自动关"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "此声音效果仅在耳机和蓝牙耳机模式下有效"
 
index 14c1736..300c97f 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "長期聆聽高音量會損害您的聽力"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "無法加入"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "無歌詞"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "當使用 5.1 頻道時無法更改音效"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "尋找標籤"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 聲道音效只適用於耳機模式"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "只有在關閉音效時,才可啟動 5.1 聲道"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "無法建立播放清單"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "無法取得標籤"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "資料夾"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "無法移除項目"
 
@@ -47,7 +77,7 @@ msgid "IDS_MUSIC_BODY_TYPE_CNOUN"
 msgstr "類型"
 
 msgid "IDS_MUSIC_BODY_UNKNOWN"
-msgstr "不明"
+msgstr "未知"
 
 msgid "IDS_MUSIC_OPT_DELETE"
 msgstr "刪除"
@@ -77,7 +107,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE"
 msgstr "無法設定為鈴聲"
 
 msgid "IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"
-msgstr "ç\84¡æ³\95å\85±äº«DRM檔案"
+msgstr "ç\84¡æ³\95å\88\86享 DRM 檔案"
 
 msgid "IDS_MUSIC_TAB4_ALBUMS"
 msgstr "專輯"
@@ -328,3 +358,57 @@ msgstr "Podcasts"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "年"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "選擇裝置"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "不再顯示"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "您可以使用 AllShare 將音樂串流至裝置"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "檢視方式"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "用戶"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "聲樂"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "低音增強"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "高音增強"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "咖啡廳"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 聲道"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 分鐘後"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 分鐘後"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 小時後"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1小時30分鐘後"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 小時後"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "音樂自動關"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "此音效只在耳筒及藍牙耳機模式中有效"
+
index 3f6e297..a28118c 100755 (executable)
@@ -1,3 +1,33 @@
+msgid "IDS_MUSIC_BODY_HIGH_VOLUMES_MAY_HARM_YOUR_HEARING_IF_YOU_LISTEN_FOR_A_LONG_TIME"
+msgstr "長期聆聽過大音量會損害您的聽力"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_ADD"
+msgstr "無法加入"
+
+msgid "IDS_MUSIC_SK3_NO_LYRICS"
+msgstr "沒有歌詞"
+
+msgid "IDS_MUSIC_BODY_UNABLE_TO_CHANGE_SOUND_EFFECTS_WHEN_USING_51_CHANNEL"
+msgstr "當使用5.1聲道時無法改變聲音效果"
+
+msgid "IDS_MUSIC_OPT_FIND_TAG"
+msgstr "尋找標籤"
+
+msgid "IDS_MUSIC_POP_51_CHANNEL_SOUND_EFFECT_WORKS_IN_EARPHONE_MODE_ONLY"
+msgstr "5.1 聲道音效只適用於耳機模式"
+
+msgid "IDS_MUSIC_POP_5_1_CHANNEL_CAN_ONLY_BE_ACTIVATED_WHEN_SOUND_EFFECTS_ARE_OFF"
+msgstr "5.1聲道只能關閉音效時啟動"
+
+msgid "IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"
+msgstr "無法建立播放清單"
+
+msgid "IDS_MUSIC_POP_UNABLE_TO_GET_TAG"
+msgstr "無法取得標籤"
+
+msgid "IDS_MUSIC_TAB4_FOLDERS"
+msgstr "資料夾"
+
 msgid "IDS_MUSIC_POP_ITEM_NOT_REMOVE"
 msgstr "無法移除項目"
 
@@ -8,7 +38,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"
 msgstr "通話期間無法播放"
 
 msgid "IDS_MUSIC_BODY_ALBUM"
-msgstr "專輯"
+msgstr "相簿"
 
 msgid "IDS_MUSIC_BODY_ALBUMS"
 msgstr "專輯"
@@ -248,7 +278,7 @@ msgid "IDS_MUSIC_HEADER_SONGS"
 msgstr "歌曲"
 
 msgid "IDS_MUSIC_OPT_ADD_PLAYLIST"
-msgstr "加入播放清單"
+msgstr "新增播放清單"
 
 msgid "IDS_MUSIC_OPT_CALL_RINGTONE"
 msgstr "來電鈴聲"
@@ -302,7 +332,7 @@ msgid "IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"
 msgstr "無法播放。不支援的檔案類型"
 
 msgid "IDS_MUSIC_SK_ADD_LITE"
-msgstr "加入"
+msgstr "新增"
 
 msgid "IDS_MUSIC_SK_SHARE"
 msgstr "分享"
@@ -328,3 +358,57 @@ msgstr "播客"
 msgid "IDS_MUSIC_TAB4_YEARS"
 msgstr "年"
 
+msgid "IDS_MUSIC_HEADER_SELECT_DEVICE"
+msgstr "選擇裝置"
+
+msgid "IDS_MUSIC_BODY_DO_NOT_SHOW_AGAIN"
+msgstr "不再顯示"
+
+msgid "IDS_MUSIC_BODY_YOU_CAN_STREAM_YOUR_MUSIC_TO_DEVICES_USING_ALLSHARE"
+msgstr "您可以使用數位連結將音樂串流至裝置"
+
+msgid "IDS_MUSIC_SK_VIEW_AS"
+msgstr "檢視方式"
+
+msgid "IDS_MUSIC_BODY_SOUNDEFFECTS_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MUSIC_BODY_USER"
+msgstr "使用者"
+
+msgid "IDS_MUSIC_BODY_VOCAL_M_SOUNDEFFECT"
+msgstr "聲樂"
+
+msgid "IDS_MUSIC_MBODY_BASS_BOOST"
+msgstr "低音增強"
+
+msgid "IDS_MUSIC_MBODY_TREBLE_BOOST"
+msgstr "高音增強"
+
+msgid "IDS_MUSIC_BODY_CAFE_M_SOUNDEFFECT"
+msgstr "咖啡廳"
+
+msgid "IDS_MUSIC_OPT_VIRTUAL_71_CH"
+msgstr "Virtual 7.1 聲道"
+
+msgid "IDS_MUSIC_OPT_AFTER_15_MIN_ABB"
+msgstr "15 分鐘後"
+
+msgid "IDS_MUSIC_BODY_AFTER_30_MIN"
+msgstr "30 分鐘後"
+
+msgid "IDS_MUSIC_BODY_AFTER_1_HOUR"
+msgstr "1 小時後"
+
+msgid "IDS_MUSIC_POP_AFTER_1_HOUR_30_MIN"
+msgstr "1小時30分鐘後"
+
+msgid "IDS_MUSIC_BODY_AFTER_2_HOURS"
+msgstr "2 小時後"
+
+msgid "IDS_MUSIC_BODY_MUSIC_AUTO_OFF"
+msgstr "音樂自動關閉"
+
+msgid "IDS_MUSIC_POP_THIS_SOUND_EFFECT_WORKS_IN_EARPHONE_AND_BLUETOOTH_HEADSET_MODES_ONLY"
+msgstr "音效只適用耳機或是藍牙耳機模式"
+
diff --git a/sound-player/CMakeLists.txt b/sound-player/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..4cb1d61
--- /dev/null
@@ -0,0 +1,144 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(PROJECT_NAME sound-player)
+PROJECT(${PROJECT_NAME} C CXX)
+
+SET(VENDOR "tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+SET(PREFIX "/opt/apps/${PKGNAME}")
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "${PREFIX}/data")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(ICONDIR "${RESDIR}/icons/default/small")
+SET(EDJDIR "${RESDIR}/edje")
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(sp_pkgs REQUIRED
+    elementary
+    ecore
+    dlog
+    edbus
+    drm-client
+    ui-gadget-1
+    syspopup-caller
+       capi-system-power
+    vconf
+    libxml-2.0
+    eina
+    ecore-imf
+    ecore-x
+    ecore-file
+    ecore-input
+    libcrypto
+    edje
+    evas
+       capi-appfw-application
+       capi-appfw-app-manager
+       capi-media-player
+       capi-media-sound-manager
+       capi-media-metadata-extractor
+       capi-system-haptic
+       capi-system-media-key
+       capi-content-media-content
+       minicontrol-provider
+)
+
+INCLUDE_DIRECTORIES(
+       ${GLOBAL_INCLUDE}
+       ${CMAKE_SOURCE_DIR}/src/include
+       ${CMAKE_SOURCE_DIR}/src/common/include
+       ${CMAKE_SOURCE_DIR}/src/core/include
+       ${CMAKE_SOURCE_DIR}/src/view/include
+       ${CMAKE_SOURCE_DIR}/src/widget/include
+
+       ${CMAKE_CURRENT_SOURCE_DIR}/src/include
+)
+
+SET(SRCS
+    ${CMAKE_SOURCE_DIR}/src/mp-main.c
+
+       ${CMAKE_SOURCE_DIR}/src/core/mp-file-tag-info.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-player-control.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-player-mgr.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-player-drm.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-setting-ctrl.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-play-list.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-streaming-mgr.c
+       ${CMAKE_SOURCE_DIR}/src/core/mp-http-mgr.c
+
+       ${CMAKE_SOURCE_DIR}/src/common/mp-item.c
+       ${CMAKE_SOURCE_DIR}/src/common/mp-ta.c
+       ${CMAKE_SOURCE_DIR}/src/common/mp-menu.c
+       ${CMAKE_SOURCE_DIR}/src/common/mp-ug-launch.c
+       ${CMAKE_SOURCE_DIR}/src/common/mp-widget.c
+       ${CMAKE_SOURCE_DIR}/src/common/mp-util.c
+       ${CMAKE_SOURCE_DIR}/src/common/mp-play.c
+       ${CMAKE_SOURCE_DIR}/src/common/mp-app.c
+       ${CMAKE_SOURCE_DIR}/src/common/mp-media-info.c
+
+       ${CMAKE_SOURCE_DIR}/src/view/mp-play-view.c
+
+       ${CMAKE_SOURCE_DIR}/src/widget/mp-smart-event-box.c
+       ${CMAKE_SOURCE_DIR}/src/widget/mp-popup.c
+       ${CMAKE_SOURCE_DIR}/src/widget/mp-minicontroller.c
+#      ${CMAKE_SOURCE_DIR}/src/widget/mp-mini-player.c
+
+       ${CMAKE_SOURCE_DIR}/src/core/mp-language-mgr.c
+       # sound-player only
+       ${CMAKE_CURRENT_SOURCE_DIR}/src/sp-view-manager.c
+)
+
+
+FOREACH(flag ${sp_pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fpie")
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -fpie")
+
+ADD_DEFINITIONS("-DMP_SOUND_PLAYER")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+#ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+#ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+#ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+#ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+#ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
+#ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+
+if("${CMAKE_SYSTEM_VERSION}" STREQUAL "arm" OR "${CMAKE_SYSTEM_VERSION}" STREQUAL "armv7l")
+ADD_DEFINITIONS("-D__ARM__")
+endif()
+
+#SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -pie")
+SET(CMAKE_LDFLAGS "-Wl,-zdefs" )
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${sp_pkgs_LDFLAGS} -lm)
+
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+
+# install desktop file & icon
+#CONFIGURE_FILE(${PKGNAME}.desktop.in ${PKGNAME}.desktop)
+#INSTALL(FILES ${PKGNAME}.desktop DESTINATION /opt/share/applications)
+
+# install xml file
+#INSTALL(FILES ${PKGNAME}.xml DESTINATION /usr/share/packages)
+
+#INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/target_images/music_player DESTINATION ${RESDIR}/icons)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.png DESTINATION ${CMAKE_DESKTOP_ICON_DIR})
+
+ADD_SUBDIRECTORY(res/locale)
+
diff --git a/sound-player/org.tizen.sound-player.desktop.in b/sound-player/org.tizen.sound-player.desktop.in
new file mode 100755 (executable)
index 0000000..49e1bec
--- /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/appsvc/operation/view|NULL|audio/*;http://tizen.org/appsvc/operation/view|http|audio/*;http://tizen.org/appsvc/operation/view|https|audio/*;http://tizen.org/appsvc/operation/view|NULL|text/x-iMelody;http://tizen.org/appsvc/operation/view|NULL|application/x-smaf;http://tizen.org/appsvc/operation/view|http|text/x-iMelody;http://tizen.org/appsvc/operation/view|http|application/x-smaf
+Nodisplay=TRUE
diff --git a/sound-player/org.tizen.sound-player.png b/sound-player/org.tizen.sound-player.png
new file mode 100755 (executable)
index 0000000..0ea172e
Binary files /dev/null and b/sound-player/org.tizen.sound-player.png differ
diff --git a/sound-player/org.tizen.sound-player.xml b/sound-player/org.tizen.sound-player.xml
new file mode 100755 (executable)
index 0000000..937ce08
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.sound-player" version="0.1.0" install-location="internal-only">
+       <label>Sound Player</label>
+       <author email="hm2007.kim@samsung.com" href="www.samsung.com">Hyungmin Kim</author>
+       <description>Sound player</description>
+       <ui-application appid="org.tizen.sound-player" exec="/opt/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="en-us">Sound Player</label>
+               <label xml:lang="nl-nl">Sound Player</label>
+               <label xml:lang="de-de">Sound Player</label>
+               <label xml:lang="zh-hk">Sound Player</label>
+               <label xml:lang="zh-cn">Sound Player</label>
+               <label xml:lang="ru-ru">Sound Player</label>
+               <label xml:lang="zh-tw">Sound Player</label>
+               <label xml:lang="ja-jp">Sound Player</label>
+               <label xml:lang="es-es">Sound Player</label>
+               <label xml:lang="el-gr">Sound Player</label>
+               <label xml:lang="it-it">Sound Player</label>
+               <label xml:lang="tr-tr">Sound Player</label>
+               <label xml:lang="pt-pt">Sound Player</label>
+               <label xml:lang="fr-fr">Sound Player</label>
+               <label xml:lang="ko-kr">사운드 플레이어</label>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/view" />
+                       <mime name="audio/*" />
+                       <mime name="text/x-iMelody" />
+                       <mime name="application/x-smaf" />
+                       <mime name="text/x-iMelody" />
+                       <uri name="http" />
+                       <uri name="https" />
+                       <uri name="NULL" />
+               </application-service>
+       </ui-application>
+</manifest>
diff --git a/sound-player/res/locale/CMakeLists.txt b/sound-player/res/locale/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..30749fb
--- /dev/null
@@ -0,0 +1,40 @@
+# for i18n
+
+SET(POFILES
+       de_DE.po
+       el_GR.po
+       en.po
+       es_ES.po
+       fr_FR.po
+       it_IT.po
+       ko_KR.po
+       nl_NL.po
+       pt_PT.po
+       ru_RU.po
+       tr_TR.po
+       zh_CN.po
+       zh_HK.po
+       zh_TW.po
+       ja_JP.po
+)
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_SOURCE_DIR}/po/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(sound-player_po ALL DEPENDS ${moFiles})
+
diff --git a/sound-player/src/include/sp-view-manager.h b/sound-player/src/include/sp-view-manager.h
new file mode 100755 (executable)
index 0000000..398297a
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __SP_VIEW_MANAGER_H__
+#define __SP_VIEW_MANAGER_H__
+
+#include <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_back_button(Sp_View_Manager *view_mgr, Evas_Smart_Cb cb, void *data);
+
+#endif /* __SP_VIEW_MANAGER_H__ */
diff --git a/sound-player/src/sp-view-manager.c b/sound-player/src/sp-view-manager.c
new file mode 100755 (executable)
index 0000000..8193b05
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "mp-define.h"
+#include "sp-view-manager.h"
+#include "mp-widget.h"
+
+struct _Sp_View_Manager {
+       Evas_Object *navi;
+       GList *view_history;
+};
+
+typedef struct {
+       int index;
+       Elm_Object_Item *navi_item;
+       Sp_View_Type type;
+} Sp_View_Data;
+
+
+Sp_View_Manager*
+sp_view_mgr_create(Evas_Object *navi)
+{
+       startfunc;
+       MP_CHECK_NULL(navi);
+
+       Sp_View_Manager *view_mgr = (Sp_View_Manager *)calloc(1, sizeof(Sp_View_Manager));
+       mp_assert(view_mgr);
+
+       view_mgr->navi = navi;
+
+       return view_mgr;
+}
+
+void
+sp_view_mgr_destroy(Sp_View_Manager* view_mgr)
+{
+       startfunc;
+       MP_CHECK(view_mgr);
+
+       if (view_mgr->view_history) {
+               GList *current = view_mgr->view_history;
+               while(current) {
+                       IF_FREE(current->data);
+                       current = current->next;
+               }
+
+               g_list_free(view_mgr->view_history);
+               view_mgr->view_history = NULL;
+       }
+
+
+       IF_FREE(view_mgr);
+}
+
+Evas_Object*
+sp_view_mgr_get_naviframe(Sp_View_Manager *view_mgr)
+{
+       MP_CHECK_NULL(view_mgr);
+       return view_mgr->navi;
+}
+
+void
+sp_view_mgr_push_view_content(Sp_View_Manager *view_mgr, Evas_Object *content, Sp_View_Type type)
+{
+       startfunc;
+       MP_CHECK(view_mgr);
+       MP_CHECK(view_mgr->navi);
+       MP_CHECK(content);
+
+       Sp_View_Data *view_data = calloc(1, sizeof(Sp_View_Data));
+       mp_assert(view_data);
+
+       view_data->navi_item = elm_naviframe_item_push(view_mgr->navi, NULL, NULL, NULL, content,  "1line/music");
+       view_data->type = type;
+       view_data->index = g_list_length(view_mgr->view_history);
+
+       view_mgr->view_history = g_list_append(view_mgr->view_history, view_data);
+}
+
+void
+sp_view_mgr_pop_view_content(Sp_View_Manager *view_mgr, bool pop_to_first)
+{
+       startfunc;
+       MP_CHECK(view_mgr);
+       MP_CHECK(view_mgr->navi);
+
+       GList *last = g_list_last(view_mgr->view_history);
+       MP_CHECK(last);
+       Sp_View_Data *view_data = last->data;
+       MP_CHECK(view_data);
+
+       if (pop_to_first) {
+               Elm_Object_Item *bottom_item = elm_naviframe_bottom_item_get(view_mgr->navi);
+               if (bottom_item)
+                       elm_naviframe_item_pop_to(bottom_item);
+
+               while(view_data && view_data->index > 0) {
+                       SAFE_FREE(view_data);
+                       view_mgr->view_history = g_list_delete_link(view_mgr->view_history, last);
+                       last = g_list_last(view_mgr->view_history);
+                       if (last)
+                               view_data = last->data;
+               }
+       } else {
+               elm_naviframe_item_pop(view_mgr->navi);
+               IF_FREE(view_data);
+               view_mgr->view_history = g_list_delete_link(view_mgr->view_history, last);
+       }
+
+       if (g_list_length(view_mgr->view_history) == 0) {
+               g_list_free(view_mgr->view_history);
+               view_mgr->view_history = NULL;
+       }
+}
+
+void
+sp_view_mgr_pop_view_to(Sp_View_Manager *view_mgr, Sp_View_Type type)
+{
+       MP_CHECK(view_mgr);
+       MP_CHECK(view_mgr->view_history);
+
+       GList *last = g_list_last(view_mgr->view_history);
+       MP_CHECK(last);
+       Sp_View_Data *view_data = last->data;
+       MP_CHECK(view_data);
+
+       while(view_data) {
+               if (view_data->type == type)
+                       break;
+
+               SAFE_FREE(view_data);
+               view_mgr->view_history = g_list_delete_link(view_mgr->view_history, last);
+               last = g_list_last(view_mgr->view_history);
+               if (last)
+                       view_data = last->data;
+       }
+
+       if (view_data->navi_item)
+               elm_naviframe_item_pop_to(view_data->navi_item);
+}
+
+Elm_Object_Item*
+sp_view_mgr_get_play_view_navi_item(Sp_View_Manager *view_mgr)
+{
+       MP_CHECK_NULL(view_mgr);
+       MP_CHECK_NULL(view_mgr->view_history);
+
+       GList *current = view_mgr->view_history;
+       Sp_View_Data *view_data = NULL;
+       while(current) {
+               view_data = current->data;
+               if (view_data && view_data->type == SP_VIEW_TYPE_PLAY)
+                       return view_data->navi_item;
+
+               current = current->next;
+       }
+
+       return NULL;
+}
+
+void
+sp_view_mgr_play_view_title_label_set(Sp_View_Manager *view_mgr, const char *title)
+{
+       MP_CHECK(view_mgr);
+
+       Elm_Object_Item *navi_item = sp_view_mgr_get_play_view_navi_item(view_mgr);
+       if (navi_item)
+               elm_object_item_text_set(navi_item, title);
+}
+
+void
+sp_view_mgr_set_title_label(Sp_View_Manager *view_mgr, const char *title)
+{
+       MP_CHECK(view_mgr);
+
+       Evas_Object *navi = sp_view_mgr_get_naviframe(view_mgr);
+       MP_CHECK(navi);
+
+       Elm_Object_Item *navi_item = elm_naviframe_top_item_get(navi);
+       if (navi_item)
+               elm_object_item_text_set(navi_item, title);
+}
+
+void
+sp_view_mgr_set_back_button(Sp_View_Manager *view_mgr, Evas_Smart_Cb cb, void *data)
+{
+       MP_CHECK(view_mgr);
+
+       Evas_Object *navi = view_mgr->navi;
+       MP_CHECK(navi);
+       Elm_Object_Item *navi_item = elm_naviframe_top_item_get(navi);
+       MP_CHECK(navi_item);
+
+       Evas_Object *button = NULL;
+       if(cb)
+       {
+               button = mp_widget_create_button(navi, "naviframe/back_btn/default", NULL, NULL, cb, data);
+               elm_object_item_part_content_set(navi_item, ELM_NAVIFRAME_ITEM_PREV_BTN, button);
+       }
+       else
+       {
+               elm_object_item_part_content_set(navi_item, ELM_NAVIFRAME_ITEM_PREV_BTN, NULL);
+       }
+}
+
index 34c7e29..00d3de1 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012       Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  */
 
 
+
 #ifndef __MP_APP_H__
 #define __MP_APP_H__
 
 #include <sys/inotify.h>
+#include <app.h>
 
 typedef enum _mp_inotify_event
 {
@@ -28,6 +30,8 @@ typedef enum _mp_inotify_event
        MP_INOTI_MODIFY,        // IN_MODIFY
        MP_INOTI_MOVE_OUT,      // IN_MOVED_FROM
        MP_INOTI_MOVE_IN,       // IN_MOVED_TO
+       //MP_INOTI_DELETE_SELF,         // IN_DELETE_SELF
+       //MP_INOTI_MOVE_SELF,           // IN_MOVE_SELF
        MP_INOTI_MAX,
 } mp_inotify_event;
 
@@ -41,8 +45,10 @@ int mp_app_inotify_init(void *data);
 void mp_app_inotify_finalize(struct appdata *ad);
 int mp_app_inotify_add_watch(const char *path, mp_inotify_cb callback, void *user_data);
 int mp_app_inotify_rm_watch(int index);
-
-Eina_Bool mp_app_hard_key_down_cb(void *data, int type, void *event_info);
-Eina_Bool mp_app_hard_key_up_cb(void *data, int type, void *event_info);
+Eina_Bool mp_app_mouse_event_cb(void *data, int type, void *event);
+bool mp_app_grab_mm_keys(void *data);
+void mp_app_ungrab_mm_keys();
+void mp_app_live_box_init(struct appdata *ad);
+void mp_app_live_box_deinit(struct appdata *ad);
 
 #endif // __MP_APP_H__
index f48473e..c23b55a 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012         Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 #ifndef __mp_common_H__
 #define __mp_common_H__
 
 #include "music.h"
 #include "mp-view-layout.h"
 
-#define _EDJ(obj) elm_layout_edje_get(obj) /**< get evas object from elm layout */
-
 struct text_part
 {
        char *part;
        char *msgid;
 };
 
-Evas_Object *mp_create_win(const char *name);
-Evas_Object *mp_get_main_win(void);
-int mp_check_battery_available(void);
-
-inline Evas_Object *mp_common_load_edj(Evas_Object * parent, const char *file, const char *group);
-
 char *mp_common_track_list_label_get(void *data, Evas_Object * obj, const char *part);
 Evas_Object *mp_common_track_list_icon_get(void *data, Evas_Object * obj, const char *part);
 Evas_Object *mp_common_create_editfield_layout(Evas_Object * parent, struct appdata *ad, char *text);
 void mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info);
-int mp_check_mass_storage_mode(void);
 int mp_check_db_initializing(void);
-int mp_commmon_check_rotate_lock(void);
+
 void mp_common_hide_search_ise_context(view_data_t * view_data);
 void mp_common_search_button_cb(void *data, Evas_Object * obj, void *event_info);
 void mp_common_edit_button_cb(void *data, Evas_Object * obj, void *event_info);
@@ -50,7 +40,6 @@ void mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info);
 void mp_common_item_check_changed_cb(void *data, Evas_Object * obj, void *event_info);
 void mp_common_set_title_button_sensitivity(mp_layout_data_t * layout_data, int selected_count);
 void mp_common_change_item_class(Evas_Object * genlist, Elm_Genlist_Item_Class * itc);
-bool mp_common_track_get_aa_index(int index, mp_layout_data_t *layout_data, Elm_Object_Item *gli, bool is_item_del);
 void mp_common_navigationbar_finish_effect(void *data, Evas_Object * obj, void *event_info);
 
 #endif // __mp_common_H__
index 82edba1..7655fdc 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #ifndef __MP_ITEM_H_
 #define __MP_ITEM_H_
 
 #include <Elementary.h>
 #include <mp-define.h>
-bool mp_item_update_db(MediaSvcHandle *media_svc_handle, char *fid);
+bool mp_item_update_db(char *fid);
+
+int mp_item_share_by_bt(const char *formed_path, int file_cnt);
+
+#define AS_IPC_REQUEST_METHOD "Request"
+
+typedef struct
+{
+       int param1;             //Allshare_opp_req_t type
+       int param2;             //the number of files
+       char *param3;           //file path
+} Allshare_para_info_t;
+
+typedef enum
+{
+       AS_OPP_REQ_FILE_PLAY
+} Allshare_opp_req_t;
+
+#define mp_object_free(obj)    \
+do {                                           \
+       if(obj != NULL) {               \
+               g_free(obj);            \
+               obj = NULL;                     \
+       }                                               \
+}while(0)
 
 #endif
diff --git a/src/common/include/mp-media-info.h b/src/common/include/mp-media-info.h
new file mode 100755 (executable)
index 0000000..1f9477a
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MP_MEDIA_INFO_H__
+#define __MP_MEDIA_INFO_H__
+
+#include <stdbool.h>
+
+#define MAX_FILTER_LEN 1024
+
+typedef struct mp_media_list_s *mp_media_list_h;
+typedef struct mp_media_info_s *mp_media_info_h;
+typedef struct filter_s *mp_filter_h;
+typedef struct playlist_s *mp_playlist_h;
+
+typedef bool(* mp_media_info_cb)(mp_media_info_h media, void *user_data);
+
+
+typedef enum
+{
+       MP_MEDIA_CONTENT_COLLATE_DEFAULT        = 0,            /**< default collation BINARY */
+       MP_MEDIA_CONTENT_COLLATE_NOCASE = 1,            /**< collation NOCASE, not case sensitive */
+       MP_MEDIA_CONTENT_COLLATE_RTRIM          = 2,            /**< collation RTRIM, trailing space characters are ignored */
+} mp_media_content_collation_e;
+
+typedef enum
+{
+       MP_MEDIA_TYPE_MUSIC,
+       MP_MEDIA_TYPE_SOUND,
+}mp_media_type_e;
+
+typedef enum{
+       MP_TRACK_ALL,                                                   /**< All tracks*/
+       MP_TRACK_BY_ALBUM,                                      /**< Album tracks*/
+       MP_TRACK_BY_ARTIST_ALBUM,                               /** < Albums which has special artist condition */
+       MP_TRACK_BY_ARTIST,                                     /**< Artist tracks*/
+       MP_TRACK_BY_ARTIST_GENRE,                               /**< Genre tracks which has special artist condition*/
+       MP_TRACK_BY_GENRE,                                              /**< Genre tracks*/
+       MP_TRACK_BY_FOLDER,                                     /**< Genre tracks*/
+       MP_TRACK_BY_YEAR,                                               /**< Year tracks*/
+       MP_TRACK_BY_COMPOSER,                           /**< Author tracks*/
+       MP_TRACK_BY_FAVORITE,                           /**< Toprating tracks*/
+       MP_TRACK_BY_PLAYED_TIME,                                /**< Recently played tracks*/
+       MP_TRACK_BY_ADDED_TIME,                         /**< Recently added tracks*/
+       MP_TRACK_BY_PLAYED_COUNT,                               /**< Most played tracks*/
+       MP_TRACK_BY_PLAYLIST,                                   /**< User playlist tracks*/
+}mp_track_type_e;
+
+typedef enum{
+       MP_GROUP_BY_ALBUM,                                      /**< Group by album*/
+       MP_GROUP_BY_ARTIST,                                     /**< Group by artist*/
+       MP_GROUP_BY_ARTIST_ALBUM,                       /**< Group by album which has special artist condition*/
+       MP_GROUP_BY_GENRE,                                      /**< Group by genre*/
+       MP_GROUP_BY_FOLDER,                                     /**< Group by folder*/
+       MP_GROUP_BY_YEAR,                                               /**< Group by year*/
+       MP_GROUP_BY_COMPOSER,                           /**< Group by author*/
+       MP_GROUP_BY_PLAYLIST,
+       MP_GROUP_BY_SYS_PLAYLIST,
+       MP_GROUP_NONE
+}mp_group_type_e;
+
+typedef enum{
+       MP_SYS_PLST_MOST_PLAYED = -3,
+       MP_SYS_PLST_RECENTELY_ADDED = -2,
+       MP_SYS_PLST_RECENTELY_PLAYED = -1,
+       MP_SYS_PLST_QUICK_LIST = 0,
+}mp_sys_playlsit_id;
+
+/*connection*/
+int mp_media_info_connect(void);
+int mp_media_info_disconnect(void);
+
+/*filter*/
+int mp_media_filter_create(mp_filter_h *filter);
+int mp_media_filter_destory(mp_filter_h filter);
+int mp_media_filter_set_offset(mp_filter_h filter, int offset, int count);
+int mp_media_filter_set_order(mp_filter_h filter, bool asc, const char *order_keyword, mp_media_content_collation_e collation);
+int mp_media_filter_set_condition(mp_filter_h filter, const char *condition, mp_media_content_collation_e collation );
+
+/*media infomation*/
+int mp_media_info_get_media_id(mp_media_info_h media, char **media_id);
+int mp_media_info_get_file_path(mp_media_info_h media, char **path);
+int mp_media_info_get_thumbnail_path(mp_media_info_h media, char **path);
+int mp_media_info_get_favorite(mp_media_info_h media, bool *favorite);
+int mp_media_info_is_drm(mp_media_info_h media, bool *drm);
+int mp_media_info_get_title(mp_media_info_h media, char **title);
+int mp_media_info_get_album(mp_media_info_h media, char **album);
+int mp_media_info_get_genre(mp_media_info_h media, char **genre);
+int mp_media_info_get_artist(mp_media_info_h media, char **artist);
+int mp_media_info_get_composer(mp_media_info_h media, char **composer);
+int mp_media_info_get_year(mp_media_info_h media, char **year);
+int mp_media_info_get_copyright(mp_media_info_h media, char **copyright);
+int mp_media_info_get_track_num(mp_media_info_h media, char **track_num);
+int mp_media_info_get_format(mp_media_info_h media, char **format);
+int mp_media_info_get_media_type(mp_media_info_h media, int *media_type);
+int mp_media_info_get_bit_rate(mp_media_info_h media, int *bitrate);
+int mp_media_info_get_sample_rate(mp_media_info_h media, int *sample_rate);
+int mp_media_info_get_duration(mp_media_info_h media, int *duration);
+int mp_media_info_get_played_time(mp_media_info_h media, time_t *time);
+int mp_media_info_get_played_count(mp_media_info_h media, int *count);
+int mp_media_info_get_playlist_member_id(mp_media_info_h media, int *member_id);
+
+int mp_media_info_set_favorite(mp_media_info_h media, bool favorite);
+int mp_media_info_set_played_time(mp_media_info_h media, time_t time);
+int mp_media_info_set_played_count(mp_media_info_h media, int count);
+int mp_media_info_set_added_time(mp_media_info_h media, time_t time);
+
+/*media*/
+int mp_media_info_create(mp_media_info_h *media_list, const char *media_id);
+int mp_media_info_create_by_path(mp_media_info_h *media_info, const char *file_path);
+int mp_media_info_destroy(mp_media_info_h media_info);
+
+/*media list*/
+int mp_media_info_list_count(mp_track_type_e track_type, const char *type_string,const char *type_string2, const char *filter_string, int playlist_id, int *count);
+int mp_media_info_list_count_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, int *count);
+int mp_media_info_list_create(mp_media_list_h *media_list, mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int offset, int count);
+int mp_media_info_list_create_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, mp_media_list_h *media_list);
+int mp_media_info_list_destroy(mp_media_list_h media_list);
+mp_media_info_h mp_media_info_list_nth_item(mp_media_list_h media_list, int index);
+
+/*group list*/
+int mp_media_info_group_list_count(mp_group_type_e group_type, const char *type_string, const char *filter_string, int *count);
+int mp_media_info_group_list_count_w_filter(mp_group_type_e group_type, mp_filter_h filter, int *count);
+int mp_media_info_group_list_create(mp_media_list_h *media_list, mp_group_type_e group_type, const char *type_string, const char *filter_string, int offset, int count);
+int mp_media_info_group_list_create_w_filter(mp_filter_h filter, mp_group_type_e group_type, mp_media_list_h *media_list);
+int mp_media_info_group_list_destroy(mp_media_list_h media_list);
+mp_media_info_h mp_media_info_group_list_nth_item(mp_media_list_h media_list, int index);
+
+int mp_media_info_group_get_main_info(mp_media_info_h media, char **main_info);
+int mp_media_info_group_get_sub_info(mp_media_info_h media, char **sub_info);
+int mp_media_info_group_get_playlist_id(mp_media_info_h media, int *playlist_id);
+int mp_media_info_group_get_folder_id(mp_media_info_h media, char **folder_id);
+int mp_media_info_group_get_thumbnail_path(mp_media_info_h media, char **path);
+
+/*playlist list*/
+int mp_media_info_playlist_get_id_by_name(const char *playlist_name, int *playlist_id);
+int mp_media_info_playlist_insert_to_db(const char * name, int *playlist_id, mp_playlist_h *playlist_handle);
+int mp_media_info_playlist_handle_destroy(mp_playlist_h playlist_handle);
+int mp_media_info_playlist_delete_from_db(int playlist_id);
+int mp_media_info_playlist_add_media(int playlist_id, const char *media_id);
+int mp_media_info_playlist_remove_media(mp_media_info_h playlist, int memeber_id);
+int mp_media_info_playlist_set_play_order(mp_media_info_h playlist, int memeber_id, int play_order);
+int mp_media_info_playlist_is_exist(const char *playlist_name, bool *exist);
+int mp_media_info_playlist_unique_name(const char *orig_name, char *unique_name, size_t max_unique_name_length);
+int mp_media_info_playlist_rename(mp_media_info_h playlist, const char *new_name);
+int mp_media_info_playlist_get_play_order(mp_media_info_h playlist, int playlist_member_id, int * play_order);
+
+#endif
+
index d765666..0de9c72 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  */
 
 
-
 #ifndef __MP_MENU_H_
 #define __MP_MENU_H_
 
+void mp_menu_share_list_select_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_menu_share_select_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_menu_set_as_select_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_menu_share_cb(void *data, Evas_Object * obj, void *event_info);
+void mp_menu_set_cb(void *data, Evas_Object * obj, void *event_info);
+#ifndef MP_SOUND_PLAYER
 void mp_menu_delete_cb(void *data, Evas_Object * obj, void *event_info);
 void mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info);
-audio_svc_track_type_e mp_menu_get_track_type_by_group(audio_svc_group_type_e group_type);
+mp_track_type_e mp_menu_get_track_type_by_group(mp_group_type_e group_type);
 void mp_menu_add_to_play_list_cancel_create_cb(void *data, Evas_Object * obj, void *event_info);
 void mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *event_info);
+#endif
 void mp_util_create_notify(void *data, const char *noti_msg);
 
+#define ADD_TO_HOME         ("IDS_MUSIC_BODY_ADD_TO_HOME")
+#define CALLER_RINGTONE   ("IDS_MUSIC_OPT_SETAS_CALLER_RINGTONE")
+#define ALARM_TONE            ("IDS_MUSIC_OPT_SETAS_ALARM_TONE")
+#define CALL_RINGTONE       ("IDS_MUSIC_OPT_CALL_RINGTONE")
+
+//system string
+#define BLUETOOTH_SYS      GET_SYS_STR("IDS_COM_BODY_BLUETOOTH")
+#define ALLSHARE_SYS         GET_SYS_STR("IDS_COM_BODY_ALLSHARE")
+#define EMAIL_SYS               GET_SYS_STR("IDS_COM_BODY_EMAIL")
+#define MESSAGE_SYS            GET_SYS_STR("IDS_COM_BODY_MESSAGE")
+#define WIFI_SYS               GET_SYS_STR("IDS_COM_BODY_WI_FI")
+#define NFC_SYS                        GET_SYS_STR("IDS_COM_BODY_NFC")
+
 #endif // __MP_MENU_H_
index 47ed31d..98b00d7 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #ifndef __MP_PLAY_H_
 #define __MP_PLAY_H_
 
diff --git a/src/common/include/mp-ta.h b/src/common/include/mp-ta.h
new file mode 100755 (executable)
index 0000000..32be6b1
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _MP_TA_H_
+#define _MP_TA_H_
+
+#include "mp-define.h"
+
+#define ENABLE_MP_TA
+#ifdef ENABLE_MP_TA
+
+// defs.
+#define MP_TA_MAX_CHECKPOINT   500
+#define MP_TA_MAX_ACCUM                500
+
+typedef struct _mp_ta_checkpoint
+{
+       unsigned long timestamp;
+       char *name;
+} mp_ta_checkpoint;
+
+typedef struct _mp_ta_accum_item
+{
+       unsigned long elapsed_accum;
+       unsigned long num_calls;
+       unsigned long elapsed_min;
+       unsigned long elapsed_max;
+       unsigned long first_start;
+       unsigned long last_end;
+
+       char *name;
+
+       unsigned long timestamp;
+       int on_estimate;
+       int num_unpair;
+} mp_ta_accum_item;
+
+#define MP_TA_SHOW_STDOUT      0
+#define MP_TA_SHOW_STDERR      1
+#define MP_TA_SHOW_FILE        2
+#define MP_TA_ENABLE_FILE MP_INI_DIR"/ta"
+#define MP_TA_RESULT_FILE MP_INI_DIR"/mp-ta.log"
+
+/////////////////////////////
+// COMMON
+int mp_ta_init(void);
+int mp_ta_release(void);
+void mp_ta_set_enable(int enable);
+char *mp_ta_fmt(const char *fmt, ...);
+
+/////////////////////////////
+// CHECK POINT
+int mp_ta_add_checkpoint(char *name, int show, char *filename, int line);
+void mp_ta_show_checkpoints(void);
+void mp_ta_show_diff(char *name1, char *name2);
+
+int mp_ta_get_numof_checkpoints();
+unsigned long mp_ta_get_diff(char *name1, char *name2);
+//char* mp_ta_get_name(int idx);
+
+
+/////////////////////////////
+// ACCUM ITEM
+int mp_ta_accum_item_begin(char *name, int show, char *filename, int line);
+int mp_ta_accum_item_end(char *name, int show, char *filename, int line);
+void mp_ta_accum_show_result(int direction);
+
+// macro.
+#define MP_TA_INIT()                                                           (       mp_ta_init()                                                                                            )
+#define MP_TA_RELEASE()                                                        (       mp_ta_release()                                                                                 )
+#define MP_TA_SET_ENABLE(enable)                               (       mp_ta_set_enable(enable)                                                                )
+
+// checkpoint handling
+#define MP_TA_ADD_CHECKPOINT(name,show)                (       mp_ta_add_checkpoint(name,show,__FILE__,__LINE__)               )
+#define MP_TA_SHOW_CHECKPOINTS()                               (       mp_ta_show_checkpoints()                                                                )
+#define MP_TA_SHOW_DIFF(name1, name2)                  (       mp_ta_show_diff(name1, name2)                                                   )
+#define MP_TA_GET_NUMOF_CHECKPOINTS()                  (       mp_ta_get_numof_checkpoints()                                                   )
+#define MP_TA_GET_DIFF(name1, name2)                   (       mp_ta_get_diff(name1, name2)                                                    )
+//#define MP_TA_GET_NAME(idx)                                           (       mp_ta_get_name(idx)                                                                     )
+
+// accum item handling
+#define MP_TA_ACUM_ITEM_BEGIN(name,show)               (       mp_ta_accum_item_begin(name,show,__FILE__,__LINE__)     )
+#define MP_TA_ACUM_ITEM_END(name,show)         (       mp_ta_accum_item_end(name,show,__FILE__,__LINE__)               )
+#define MP_TA_ACUM_ITEM_SHOW_RESULT()          (       mp_ta_accum_show_result(MP_TA_SHOW_STDOUT)                      )
+#define MP_TA_ACUM_ITEM_SHOW_RESULT_TO(x)      (       mp_ta_accum_show_result(x)                                                      )
+/*
+#define __mp_ta__(name, x) \
+MP_TA_ACUM_ITEM_BEGIN(name, 0); \
+x \
+MP_TA_ACUM_ITEM_END(name, 0);
+
+#define __mm_tafmt__(fmt, args...)                     (       mp_ta_fmt(fmt, ##args)  )
+*/
+
+#else //#ifdef ENABLE_MP_TA
+
+#define MP_TA_INIT()
+#define MP_TA_RELEASE()
+#define MP_TA_SET_ENABLE(enable)
+
+// checkpoint handling
+#define MP_TA_ADD_CHECKPOINT(name,show)
+#define MP_TA_SHOW_CHECKPOINTS()
+#define MP_TA_SHOW_DIFF(name1, name2)
+#define MP_TA_GET_NUMOF_CHECKPOINTS()
+#define MP_TA_GET_DIFF(name1, name2)
+//#define MP_TA_GET_NAME(idx)
+
+// accum item handling
+#define MP_TA_ACUM_ITEM_BEGIN(name,show)
+#define MP_TA_ACUM_ITEM_END(name,show)
+#define MP_TA_ACUM_ITEM_SHOW_RESULT()
+#define MP_TA_ACUM_ITEM_SHOW_RESULT_TO(x)
+/*
+#define __mp_ta__(name, x)
+#define __mm_tafmt__(fmt, args...)
+*/
+#endif //#ifdef ENABLE_MP_TA
+
+#endif // _MP_TA_H_
diff --git a/src/common/include/mp-ug-launch.h b/src/common/include/mp-ug-launch.h
new file mode 100755 (executable)
index 0000000..3049853
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MP_ug_launch_H_
+#define __MP_ug_launch_H_
+
+int mp_ug_email_attatch_file(const char *filepath, void *user_data);
+int mp_ug_bt_attatch_file(const char *filepath, int count, void *user_data);
+int mp_ug_message_attatch_file(const char *filepath, void *user_data);
+int mp_ug_contact_user_sel(const char *filepath, void *user_data);
+void mp_ug_send_message(struct appdata *ad, mp_ug_message_t message);
+#ifdef MP_FEATURE_WIFI_SHARE
+int mp_ug_wifi_attatch_file(const char *filepath, int count, void *user_data);
+#endif
+void mp_ug_destory_current(struct appdata *ad);
+void mp_ug_destory_all(struct appdata *ad);
+bool mp_ug_active(struct appdata *ad);
+
+#endif // __MP_ug_launch_H_
index 121751f..6c71376 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #ifndef __MP_UTIL_H_
 #define __MP_UTIL_H_
 
@@ -33,25 +31,23 @@ typedef enum
 bool                   mp_util_check_uri_available(const char *uri);
 bool                   mp_check_file_exist (const char *path);
 void                   mp_util_format_duration(char *time, int ms);
-bool                           mp_util_add_to_playlist_by_key(MediaSvcHandle *handle, int plst_id, char *key_id);
+bool                           mp_util_add_to_playlist_by_key(int playlist_id, char *key_id);
 Evas_Object *  mp_util_create_thumb_icon(Evas_Object *obj, const char *path, int w, int h);
 const char*            mp_util_get_index(const char *p);
 const char*            mp_util_get_second_index(const char *p);
 void                   mp_util_create_selectioninfo_with_count(void* data, int count);
-char *                 mp_util_get_new_playlist_name (MediaSvcHandle *handle);
-bool                           mp_util_add_selected_items_to_playlist(Evas_Object *genlist, int playlist_id);
+char *                 mp_util_get_new_playlist_name (void);
 mp_file_delete_err_t   mp_util_delete_track(void *data, char *fid, char *file_path, bool show_popup);
-Eina_Bool              mp_util_is_item_in_playlist (MediaSvcHandle *handle, gint plst_id, char *key_id);
-bool                           mp_util_check_item_exist_in_playlist (MediaSvcHandle *handle, gint plst_id, char *key_id);
 
+int                            mp_util_share_via_bt(const char *formed_path, int file_cnt);
 int                    mp_util_file_is_in_phone_memory(const char *path);
 
-char*          mp_util_get_playlist_thumbpath(MediaSvcHandle *handle, AudioHandleType *plst);
-char *mp_util_get_fid_by_handle(mp_layout_data_t *layout_data, AudioHandleType *record);
-char*                          mp_util_get_path_by_handle(mp_layout_data_t *layout_data , AudioHandleType *record);
-Elm_Object_Item *      mp_util_get_genlist_item_by_item_handle(Evas_Object *genlist, AudioHandleType *handle);
+char *mp_util_get_fid_by_handle(mp_layout_data_t *layout_data, mp_media_info_h record);
+char*                          mp_util_get_path_by_handle(mp_layout_data_t *layout_data , mp_media_info_h record);
  char*                         mp_util_isf_get_edited_str(Evas_Object *isf_entry, bool permit_first_blank);
- int                           mp_util_create_playlist(struct appdata *ad, char *name);
+ int                           mp_util_create_playlist(struct appdata *ad, char *name, mp_playlist_h *playlist_handle);
+
+bool                   mp_util_set_screen_mode(void *data , int mode);
 
 bool mp_util_launch_browser(const char *url, struct appdata *ad);
 
@@ -69,7 +65,6 @@ do {                                          \
 gchar *mp_util_get_utf8_initial(const char *name);
 gchar * mp_get_new_playlist_name (void);
 gchar *mp_parse_get_title_from_path (const gchar *path);
-char *mp_util_item_get_value_by_type(audio_svc_track_data_type_e item_type,struct music_list_item *item);
 char *mp_util_get_title_from_path (const char *path);
 bool   mp_util_is_playlist_name_valid(char *name);
 bool   mp_util_get_recent_play_data(mp_layout_data_t *layout_data, int *index, char **path);
@@ -77,18 +72,19 @@ bool        mp_util_get_playlist_data(mp_layout_data_t *layout_data, int *index, const
 bool mp_util_get_list_data(mp_layout_data_t *layout_data);
 void mp_util_set_library_controlbar_items(void *data);
 
-bool mp_util_get_uri_from_app_svc(bundle * b, struct appdata *ad, char **path);
+bool mp_util_get_uri_from_app_svc(service_h service, struct appdata *ad, char **path);
 void mp_util_reset_genlist_mode_item(Evas_Object *genlist);
+#ifndef MP_SOUND_PLAYER
 view_data_t * mp_util_get_view_data(struct appdata *ad);
 mp_layout_data_t* mp_util_get_layout_data(Evas_Object* obj);
+#endif
 
 bool mp_util_is_image_valid(Evas *evas, const char *path);
 char *mp_util_shorten_path(char *path_info);
 
-void mp_util_grab_mm_keys(struct appdata *ad);
-void mp_util_ungrab_mm_keys(struct appdata *ad);
-
+#ifndef MP_SOUND_PLAYER
 void mp_util_unset_rename(mp_layout_data_t * layout_data);
+#endif
 bool mp_util_is_db_updating(void);
 void mp_util_stop_vibration(struct appdata *ad);
 bool mp_util_play_vibration(struct appdata *ad, float duration);
@@ -99,9 +95,15 @@ void mp_util_get_sound_path(mp_snd_path *snd_path);
 
 const char * mp_util_search_markup_keyword(const char *string, char *searchword, bool *result);
 
-inline Elm_Object_Item *mp_util_toolbar_append_object(Evas_Object *toolbar, Evas_Object *obj, int sel);
-bool mp_util_toolbar_item_valid_check(Elm_Object_Item *item);
+bool mp_util_is_other_player_playing();
+
+int mp_commmon_check_rotate_lock(void);
+int mp_check_battery_available(void);
+int mp_check_mass_storage_mode(void);
 
+bool mp_util_sleep_lock_set(bool lock);
+bool mp_util_toolbar_item_valid_check(Elm_Object_Item *item);
+void mp_util_strncpy_safe(char *x_dst, const char *x_src, int max_len);
 
  #endif //__MP_UTIL_H_
 
index 7096f24..d41e336 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 #ifndef __MP_VIEW_MANAGER_H_
 #define __MP_VIEW_MANAGER_H_
 
@@ -55,7 +54,7 @@ Evas_Object *mp_view_manager_get_view_layout(struct appdata *ad, mp_view_content
 int mp_view_manager_count_view_content(view_data_t * view_data);
 bool mp_view_manager_is_play_view(struct appdata *ad);
 void mp_view_manager_update_list_contents(view_data_t * view_data, bool update_edit_list);
-void mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void *data);
+void mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *text_ID, void *data);
 
 void mp_view_manager_set_now_playing(view_data_t * view_data, bool show);
 void mp_view_manager_freeze_progress_timer(struct appdata *ad);
@@ -64,6 +63,7 @@ void mp_view_manager_thaw_progress_timer(struct appdata *ad);
 Elm_Object_Item *mp_view_manager_get_edit_controlbar_item(struct appdata *ad);
 Elm_Object_Item *mp_view_manager_get_search_controlbar_item(struct appdata *ad);
 Elm_Object_Item *mp_view_manager_get_cancel_controlbar_item(struct appdata * ad);
+Elm_Object_Item *mp_view_manager_get_navi_item(struct appdata * ad);
 Elm_Object_Item *mp_view_manager_get_controlbar_item(struct appdata *ad, mp_navi_control_button_type type);
 void mp_view_manager_play_view_title_label_set(struct appdata *ad, const char *title);
 
@@ -72,7 +72,10 @@ void mp_view_manager_pop_play_view(struct appdata *ad);
 
 void mp_view_manager_unswallow_info_ug_layout(struct appdata *ad);
 
-void mp_view_manager_set_option_header_visible(Elm_Object_Item *navi_item, mp_view_content_t content_type);
 Elm_Object_Item * mp_view_manager_get_play_view_navi_item(struct appdata *ad);
+void mp_view_manager_clear(struct appdata *ad);
+void mp_view_manager_set_controlbar_visible(Elm_Object_Item *navi_item, bool visible);
+
+
 
 #endif //__MP_VIEW_MANAGER_H_
index 57e7540..4441ecc 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #ifndef __MP_WIDGET_H_
 #define __MP_WIDGET_H_
 
 #include "music.h"
 
+#define _EDJ(obj) elm_layout_edje_get(obj) /**< get evas object from elm layout */
+
 Evas_Object *mp_widget_navigation_new(Evas_Object * parent, struct appdata *ad);
 Evas_Object *mp_widget_genlist_create(struct appdata *ad, Evas_Object * parent, bool homogeneous);
 bool mp_widget_check_lowbattery(void *data, Evas_Object * parent);
@@ -33,4 +33,9 @@ Evas_Object *mp_widget_create_button(Evas_Object * parent, char *style, char *ca
 Evas_Object * mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt, struct appdata *ad);
 Evas_Object * mp_widget_editfield_entry_get(Evas_Object *editfield);
 Evas_Object * mp_widget_create_title_btn(Evas_Object *parent, const char *text, const char * icon_path, Evas_Smart_Cb func, void *data);
+Evas_Object * mp_widget_create_layout_main(Evas_Object * parent);
+inline Evas_Object *mp_common_load_edj(Evas_Object * parent, const char *file, const char *group);
+Evas_Object *mp_create_win(const char *name);
+Evas_Object *mp_get_main_win(void);
+
 #endif
index 81f8a97..ecd0fce 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012      Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *     http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  */
 
 
+#include "mp-ta.h"
 #include "music.h"
-#include "mp-library.h"
 #include "mp-setting-ctrl.h"
 #include "mp-item.h"
 #include "mp-player-control.h"
 #include "mp-play-view.h"
-#include "mp-common.h"
 #include "mp-play-list.h"
-#include "mp-group-view.h"
 
 #include <signal.h>
-#include <aul.h>
 #include <glib.h>
 #include <glib-object.h>
 #include "mp-player-mgr.h"
 #include "mp-player-debug.h"
-#include <utilX.h>
 #include <syspopup_caller.h>
 #include <pthread.h>
+#include <media_key.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"
+
+#ifndef MP_SOUND_PLAYER
+#include "mp-library.h"
+#include "mp-common.h"
+#include "mp-group-view.h"
+#endif
 
 static void _mp_add_inofity_refresh_watch(struct appdata *ad);
 
@@ -59,7 +65,13 @@ _mp_app_ear_key_timer_cb(void *data)
                else if (ad->player_state == PLAY_STATE_PAUSED)
                {
                        ad->paused_by_user = FALSE;
-                       mp_player_mgr_resume(ad);
+                       if(mp_player_mgr_resume(ad))
+                       {
+                               vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid());
+                               if (ad->player_state == PLAY_STATE_PAUSED)
+                                       mp_play_resume(ad);
+                               ad->player_state = PLAY_STATE_PLAYING;
+                       }
                }
                else if (ad->player_state == PLAY_STATE_READY)
                {
@@ -106,8 +118,10 @@ _mp_app_noti_changed_cb(keynode_t * node, void *data)
                        if (mp_play_list_get_current_item(ad->playing_list)
                            && strstr(mp_play_list_get_current_item(ad->playing_list)->filename, MP_MMC_ROOT_PATH))
                                mp_play_stop_and_updateview(ad, TRUE);
+#ifndef MP_SOUND_PLAYER
                        else
                                mp_library_update_view(ad);
+#endif
                        _mp_add_inofity_refresh_watch(ad);
                }
        }
@@ -152,6 +166,20 @@ _mp_app_noti_changed_cb(keynode_t * node, void *data)
        {
                mp_play_view_update_snd_path(ad);
        }
+       else if (strcmp(keyname, MP_VCONFKEY_PLAYING_PID) == 0)
+       {
+               int playing_pid = vconf_keynode_get_int(node);
+               if (playing_pid != getpid())
+               {
+                       DEBUG_TRACE("other player activated : [pid:%d]", playing_pid);
+                       if (ad->player_state == PLAY_STATE_PLAYING) {
+                               ad->paused_by_other_player = TRUE;
+                               mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
+                       }
+
+                       mp_minicontroller_destroy(ad);
+               }
+       }
 }
 
 bool
@@ -184,6 +212,11 @@ mp_app_noti_init(void *data)
                ERROR_TRACE("Fail to register VCONFKEY_SYSMAN_EARJACK key callback");
                res = FALSE;
        }
+       if (vconf_notify_key_changed(MP_VCONFKEY_PLAYING_PID, _mp_app_noti_changed_cb, ad) < 0)
+       {
+               ERROR_TRACE("Fail to register MP_VCONFKEY_PLAYING_PID key callback");
+               res = FALSE;
+       }
        return res;
 }
 
@@ -216,9 +249,15 @@ mp_app_noti_ignore(void)
        return TRUE;
 }
 
+#define AUDIO_SVC_DATABASE_NAME        "/opt/dbspace/.music.db"
+
+//#define MP_WATCH_FLAGS IN_CREATE | IN_DELETE | IN_CLOSE_WRITE | IN_MODIFY
 #define MP_WATCH_FLAGS IN_CREATE | IN_DELETE | IN_DELETE_SELF | IN_CLOSE_WRITE | IN_MOVED_TO
+
 #define MP_EVENT_SIZE  (sizeof (struct inotify_event))
+/** reasonable guess as to size of 1024 events */
 #define MP_EVENT_BUF_LEN (1024 * (MP_EVENT_SIZE + 16))
+#define INOTI_FOLDER_COUNT_MAX 1024
 
 typedef struct _mp_inotify_t
 {
@@ -306,7 +345,7 @@ _mp_app_inotify_watch_thread(gpointer user_data)
                len = read(handle->fd, event_buff, sizeof(event_buff) - 1);
                if (len <= 0 || len > sizeof(event_buff) - 1)
                {
-                       ERROR_TRACE("Fail to read() -fd : %d,  len : %d", handle->fd, len);
+
                }
 
                while (i < len)
@@ -318,11 +357,29 @@ _mp_app_inotify_watch_thread(gpointer user_data)
                        {
                                s_event = MP_INOTI_NONE;
                        }
-                       else if (pevent->mask & IN_ISDIR)
+                       else if (pevent->mask & IN_ISDIR)       //directory
                        {
+                               /*
+                                  if (pevent->mask & IN_DELETE_SELF)
+                                  s_event = MP_INOTI_DELETE_SELF;
 
+                                  if (pevent->mask & IN_MOVE_SELF)
+                                  s_event = MP_INOTI_MOVE_SELF;
+
+                                  if (pevent->mask & IN_CREATE)
+                                  s_event = MP_INOTI_CREATE;
+
+                                  if (pevent->mask & IN_DELETE)
+                                  s_event = MP_INOTI_DELETE;
+
+                                  if (pevent->mask & IN_MOVED_FROM)
+                                  s_event = MP_INOTI_MOVE_OUT;
+
+                                  if (pevent->mask & IN_MOVED_TO)
+                                  s_event = MP_INOTI_MOVE_IN;
+                                */
                        }
-                       else
+                       else    //file
                        {
                                if (pevent->mask & IN_CREATE)
                                {
@@ -409,8 +466,9 @@ _mp_app_inotify_timer_cb(void *data)
                }
        }
 
+#ifndef MP_SOUND_PLAYER
        mp_library_update_view(ad);
-
+#endif
        _g_inotyfy_timer = NULL;
        return EINA_FALSE;
 }
@@ -468,7 +526,7 @@ _mp_app_pipe_cb(void *data, void *path, unsigned int nbyte)
        mp_retm_if(ad == NULL, "appdata is NULL");
 
        DEBUG_TRACE("%s modified..", path);
-       mp_retm_if(ad->prohibit_aul_relaunch, "Do not refresh list");
+       mp_retm_if(ad->app_is_foreground, "Do not refresh list");
 
        if (_g_inotyfy_timer)
                ecore_timer_del(_g_inotyfy_timer);
@@ -669,6 +727,32 @@ mp_app_inotify_finalize(struct appdata *ad)
        return;
 }
 
+
+Eina_Bool
+mp_app_mouse_event_cb(void *data, int type, void *event)
+{
+       Ecore_Event_Mouse_Button *ev = event;
+       struct appdata *ad = data;
+
+       if (type == ECORE_EVENT_MOUSE_BUTTON_DOWN) {
+               if (!ad->mouse.downed) {
+                       ad->mouse.downed = TRUE;
+                       ad->mouse.sx = ev->x;
+                       ad->mouse.sy = ev->y;
+               }
+       }
+       else if (type == ECORE_EVENT_MOUSE_BUTTON_UP) {
+               ad->mouse.sx = 0;
+               ad->mouse.sy = 0;
+               ad->mouse.downed = FALSE;
+               ad->mouse.moving = FALSE;
+       }
+       else if (type == ECORE_EVENT_MOUSE_MOVE) {
+       }
+
+       return 0;
+}
+
 void
 mp_app_exit(void *data)
 {
@@ -682,130 +766,68 @@ mp_app_exit(void *data)
 
 #define CTR_EDJ_SIG_SRC "ctrl_edj"
 
-Eina_Bool
-mp_app_hard_key_down_cb(void *data, int type, void *event_info)
+void
+_mp_app_media_key_event_cb(media_key_e key, media_key_event_e event, void *user_data)
 {
-       Ecore_Event_Key *ev = event_info;
-       struct appdata *ad = (struct appdata *)data;
+       struct appdata *ad = (struct appdata *)user_data;
+       MP_CHECK(ad);
 
-       DEBUG_TRACE("%s", ev->keyname);
+       mp_debug("key [%d], event [%d]", key, event);
+       bool released = false;
+       if (event == MEDIA_KEY_STATUS_RELEASED)
+               released = true;
 
-       if (!strcmp(ev->keyname, KEY_END))
-       {
-               DEBUG_TRACE("KEY_END");
-               mp_app_exit(ad);
-               return ECORE_CALLBACK_DONE;
-       }
-       else if(!strcmp(ev->keyname, KEY_NEXTSONG))
-       {
-               mp_play_control_ff_cb(data, NULL, "ff_btn_down", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(ev->keyname, KEY_PREVIOUSSONG))
-       {
-               mp_play_control_rew_cb(data, NULL, "rew_btn_down", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(ev->keyname, "XF86AudioForward"))
-       {
-               mp_play_control_ff_cb(data, NULL, "ff_btn_down", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(ev->keyname, KEY_REWIND))
-       {
-               mp_play_control_rew_cb(data, NULL, "rew_btn_down", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(ev->keyname, KEY_SELECT))
-       {
-               mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
+       if (event == MEDIA_KEY_STATUS_UNKNOWN) {
+               mp_debug("unknown key status");
+               return;
        }
-       return ECORE_CALLBACK_PASS_ON;
-}
 
-Eina_Bool
-mp_app_hard_key_up_cb(void *data, int type, void *event_info)
-{
-       Ecore_Event_Key *ev = event_info;
-       struct appdata *ad = (struct appdata *)data;
-
-       DEBUG_TRACE("%s", ev->keyname);
+       const char *signal = NULL;
 
-       if (!strcmp(ev->keyname, KEY_END))
-       {
-               DEBUG_TRACE("KEY_END");
-               return ECORE_CALLBACK_DONE;
-       }
-       else if(!strcmp(ev->keyname, KEY_NEXTSONG))
-       {
-               mp_play_control_ff_cb(data, NULL, "ff_btn_up", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(ev->keyname, KEY_PREVIOUSSONG))
-       {
-               mp_play_control_rew_cb(data, NULL, "rew_btn_up", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(ev->keyname, KEY_PAUSECD) || !strcmp(ev->keyname, KEY_PLAYCD))
-       {
-               if (ad->player_state != PLAY_STATE_PLAYING)
-               {
-                       mp_play_control_play_cb(ad, NULL, SIGNAL_PLAY, NULL);
-               }
-               else
-               {
-                       mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
+       switch (key) {
+       case MEDIA_KEY_PLAY:
+       case MEDIA_KEY_PAUSE:
+               if (released) {
+                       if (ad->player_state != PLAY_STATE_PLAYING)
+                               mp_play_control_play_cb(ad, NULL, SIGNAL_PLAY, NULL);
+                       else
+                               mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
                }
-       }
-       else if(!strcmp(ev->keyname, KEY_FASTFORWARD))
-       {
-               mp_play_control_ff_cb(data, NULL, "ff_btn_up", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(ev->keyname, KEY_REWIND))
-       {
-               mp_play_control_rew_cb(data, NULL, "rew_btn_up", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(ev->keyname, KEY_SELECT))
-       {
-               mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
-       }
-       return ECORE_CALLBACK_PASS_ON;
-}
-
-void
-_mp_app_ext_control_key_changed_cb(keynode_t * node, void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
+               break;
 
-       char *keyname = vconf_keynode_get_name(node);
+       case MEDIA_KEY_PREVIOUS:
+       case MEDIA_KEY_REWIND:
+               signal = (released) ? "rew_btn_up" : "rew_btn_down";
+               mp_play_control_rew_cb(ad, NULL, signal, CTR_EDJ_SIG_SRC);
+               break;
 
-       DEBUG_TRACE("key changed: %s", keyname);
+       case MEDIA_KEY_NEXT:
+       case MEDIA_KEY_FASTFORWARD:
+               signal = (released) ? "ff_btn_up" : "ff_btn_down";
+               mp_play_control_ff_cb(ad, NULL, signal, CTR_EDJ_SIG_SRC);
+               break;
 
-       if (strcmp(keyname, MP_EXT_PLAY_CLICKED) == 0 ||strcmp(keyname, MP_EXT_PAUSE_CLICKED) == 0 )
-       {
-               if (ad->player_state != PLAY_STATE_PLAYING)
-               {
-                       mp_play_control_play_cb(ad, NULL, SIGNAL_PLAY, NULL);
-               }
-               else
-               {
-                       mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
-               }
+       default:
+               mp_debug("Undefined key");
+               break;
        }
-       else if(!strcmp(keyname, MP_EXT_NEXT_PRESSED))
-       {
-               ad->seek_off = true;
-               mp_play_control_ff_cb(data, NULL, "ff_btn_down", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(keyname, MP_EXT_PREV_PRESSED))
-       {
-               ad->seek_off = true;
-               mp_play_control_rew_cb(data, NULL, "rew_btn_down", CTR_EDJ_SIG_SRC);
-       }
-       else if(!strcmp(keyname, MP_EXT_NEXT_RELEASED))
-       {
-               mp_play_control_ff_cb(data, NULL, "ff_btn_up", CTR_EDJ_SIG_SRC);
-               ad->seek_off = false;
-       }
-       else if(!strcmp(keyname, MP_EXT_PREV_RELEASED))
-       {
-               mp_play_control_rew_cb(data, NULL, "rew_btn_up", CTR_EDJ_SIG_SRC);
-               ad->seek_off = false;
+}
+
+bool
+mp_app_grab_mm_keys(void *data)
+{
+       int err = media_key_reserve(_mp_app_media_key_event_cb, data);
+       if (err != MEDIA_KEY_ERROR_NONE) {
+               mp_error("media_key_reserve().. [0x%x]", err);
+               return false;
        }
+
+       return true;
 }
 
+void
+mp_app_ungrab_mm_keys()
+{
+       media_key_release();
+}
 
index 310fb58..0c3ab5c 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <Ecore_X.h>
-#include <appcore-efl.h>
 #include <vconf.h>
 
 #include "mp-common.h"
 #include "mp-player-debug.h"
 
-#include "audio-svc.h"
+#include "mp-media-info.h"
 #include "mp-view-layout.h"
 #include "mp-util.h"
 #include "mp-menu.h"
 #include "mp-view-manager.h"
 #include "mp-widget.h"
 #include "mp-library.h"
-#include "mp-player-control.h"
-
-static Evas_Object *g_main_win;
-
-static void
-_mp_common_win_del(void *data, Evas_Object * obj, void *event)
-{
-       elm_exit();
-}
-
-Evas_Object *
-mp_create_win(const char *name)
-{
-       Evas_Object *eo;
-       int w, h;
-
-       if (g_main_win)
-               return g_main_win;
-
-       g_main_win = eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
-       if (eo)
-       {
-               elm_win_title_set(eo, name);
-               elm_win_borderless_set(eo, EINA_TRUE);
-               evas_object_smart_callback_add(eo, "delete,request", _mp_common_win_del, NULL);
-               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
-               evas_object_resize(eo, w, h);
-       }
-
-       return eo;
-}
-
-Evas_Object *
-mp_get_main_win(void)
-{
-       if (!g_main_win)
-               ERROR_TRACE("main_win is NULL, create it first!!!!!");
-       return g_main_win;
-}
-
-int
-mp_commmon_check_rotate_lock(void)
-{
-       int lock = FALSE;
-       lock = -1;
-       if (!vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &lock))
-       {
-               mp_debug("lock state: %d", lock);
-               return lock;
-       }
-       else
-               return -1;
-}
-
-
-int
-mp_check_battery_available(void)
-{
-       int batt_state = -1;
-
-       if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &batt_state))
-       {
-               /* low battery status
-                *      VCONFKEY_SYSMAN_BAT_WARNING_LOW         = 15 %
-                *      VCONFKEY_SYSMAN_BAT_CRITICAL_LOW        = 5 %
-                *      VCONFKEY_SYSMAN_BAT_POWER_OFF           = 1 %
-                *      since 2011. 03. 02
-                */
-               if (batt_state <= VCONFKEY_SYSMAN_BAT_POWER_OFF)        //VCONFKEY_SYSMAN_BAT_POWER_OFF - 1% remaninging
-               {
-                       WARN_TRACE("batt_state: %d", batt_state);
-                       return -1;
-               }
-       }
-       else
-       {
-               ERROR_TRACE("Fail to get battery status");
-       }
-       return 0;
-}
-
-int
-mp_check_mass_storage_mode(void)
-{
-       int mass_storage = -1;
-
-       if (!vconf_get_int(VCONFKEY_USB_STORAGE_STATUS, &mass_storage))
-       {
-               DEBUG_TRACE("current mass_storage : %d", mass_storage);
-               if (mass_storage != VCONFKEY_USB_STORAGE_STATUS_OFF)
-                       return -1;
-       }
-       else
-       {
-               ERROR_TRACE("Fail to get status");
-       }
-       return 0;
-}
-
-inline Evas_Object *
-mp_common_load_edj(Evas_Object * parent, const char *file, const char *group)
-{
-       Evas_Object *eo = NULL;
-       int r = -1;
-
-       eo = elm_layout_add(parent);
-       if (eo)
-       {
-               r = elm_layout_file_set(eo, file, group);
-               if (!r)
-               {
-                       evas_object_del(eo);
-                       return NULL;
-               }
-               evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               evas_object_show(eo);
-       }
-
-       return eo;
-}
 
 char *
 mp_common_track_list_label_get(void *data, Evas_Object * obj, const char *part)
 {
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *track = (AudioHandleType *) (item->handle);
+       mp_media_info_h track = (mp_media_info_h) (item->handle);
        mp_retvm_if(!track, NULL, "data is null");
 
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        MP_CHECK_NULL(layout_data);
        MP_CHECK_LAYOUT_DATA(layout_data);
 
-       if (!strcmp(part, "elm.text.1"))
+       if (layout_data->track_type == MP_TRACK_BY_FOLDER && !g_strcmp0(part, "elm.text.1"))
+       {
+               char *pathname = NULL;
+               mp_media_info_get_file_path(track, &pathname);
+               mp_retv_if(!pathname, NULL);
+               const char *fileanme = ecore_file_file_get(pathname);
+
+               return g_strdup(fileanme);
+       }
+       else if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1"))
        {
                char *title = NULL;
-               int size = 0;
-               if (layout_data->playlist_id < 0)
-                       audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_TITLE, &title, &size, -1);
-               else
-                       audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE, &title, &size, -1);
+
+               mp_media_info_get_title(track,  &title);
 
                mp_retv_if(!title, NULL);
                if(layout_data->filter_str)
@@ -188,77 +71,35 @@ mp_common_track_list_label_get(void *data, Evas_Object * obj, const char *part)
                        if(res)
                                return strdup(markup_name);
                }
-               return elm_entry_utf8_to_markup(title);
+               else if (!strcmp(part, "elm.text.1"))
+               {
+                       char *markup = elm_entry_utf8_to_markup(title);
+                       return markup;
+               }
+               else
+                       return g_strdup(title);
        }
-       else if (!strcmp(part, "elm.text.2"))
+       else if (!strcmp(part, "elm.text.2") && layout_data->track_type != MP_TRACK_BY_FOLDER)
        {
                char *artist = NULL;
-               int size = 0;
-               if (layout_data->playlist_id < 0)
-                       audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1);
-               else
-                       audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_ARTIST, &artist, &size, -1);
+               mp_media_info_get_artist(track, &artist);
                mp_retv_if(!artist, NULL);
-               return strdup(artist);
+               return g_strdup(artist);
        }
-       else if (!strcmp(part, "elm.text.3"))
+       else if (!strcmp(part, "elm.text.3") ||
+               (layout_data->track_type == MP_TRACK_BY_FOLDER && !g_strcmp0(part, "elm.text.2")))
        {
                int duration;
                char time[16] = "";
-               if (layout_data->playlist_id < 0)
-                       audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_DURATION, &duration, -1);
-               else
-                       audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_DURATION, &duration, -1);
+               mp_media_info_get_duration(track, &duration);
 
                mp_util_format_duration(time, duration);
                time[15] = '\0';
-               return strdup(time);
+               return g_strdup(time);
        }
        return NULL;
 }
 
-bool mp_common_track_get_aa_index(int index, mp_layout_data_t *layout_data, Elm_Object_Item *gli, bool is_item_del)
-{
-       MP_CHECK_FALSE(layout_data);
-       MP_CHECK_FALSE(gli);
-       MP_CHECK_FALSE(index >= 0);
-
-       if (!is_item_del) {
-               index = 0;
-               Elm_Object_Item *gli2 = elm_genlist_first_item_get(layout_data->genlist);
-               DEBUG_TRACE("gli=%p,gli2=%p", gli,gli2);
-               while (gli2) {
-                       if(gli2 == gli)
-                               break;
-                       gli2 = elm_genlist_item_next_get(gli2);
-                       DEBUG_TRACE("gli=%p,gli2=%p", gli,gli2);
-                       index++;
-               }
-       }
-
-       int group_index = 0;
-       int sub_index = 0;
-       int item_count = 0;
-       int selected_index = 0;
-       for (; group_index < layout_data->aa_group_count; group_index++) {
-               item_count = layout_data->aa_item_count[group_index];
-               if(item_count > 0)
-                       index--;
-               for (sub_index = 0; sub_index < item_count; sub_index++) {
-                       index--;
-                       if (index < 0) {
-                               layout_data->selected_index = selected_index;
-                               layout_data->selected_group_index = group_index;
-                               layout_data->selected_album_sub_index = sub_index;
-                               return TRUE;
-                       }
-                       selected_index++;
-               }
-       }
-
-       return FALSE;
-}
-
 static Eina_Bool
 _mp_common_update_view_idler_cb(void *data)
 {
@@ -311,7 +152,6 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
                        elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked);
                }
 
-               //elm_genlist_item_update(item->it);
                elm_genlist_item_fields_update(item->it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
                mp_util_create_selectioninfo_with_count(layout_data->ad, layout_data->checked_count);
                mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count);
@@ -326,25 +166,38 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
        }
        mp_util_reset_genlist_mode_item(layout_data->genlist);
 
+       /*  If genlist item removed by sweep menu or editing,
+       *   layout_data->svc_handle can not be used for creating playlist..
+       *   update layout again before start play from list view.
+       */
+       MP_TA_ACUM_ITEM_BEGIN("Selected_Item_to_Playing_View", 0);
+       MP_TA_ACUM_ITEM_BEGIN("Selected_Item_to_play_start_cb", 0);
        int index = 0;
        if(layout_data->is_item_del)
        {
                gli2 = elm_genlist_first_item_get(layout_data->genlist);
-               while(gli2)
+               if (MP_TRACK_BY_ARTIST == layout_data->track_type) {
+                       while(gli2)
+                       {
+                               if(gli2 == gli)
+                                       break;
+                               if(elm_genlist_item_parent_get(gli2))
+                                       index++;
+                               gli2 = elm_genlist_item_next_get(gli2);
+                       }
+               }
+               else
                {
-                       if(gli2 == gli)
-                               break;
-                       gli2 = elm_genlist_item_next_get(gli2);
-                       index++;
+                       while(gli2)
+                       {
+                               if(gli2 == gli)
+                                       break;
+                               gli2 = elm_genlist_item_next_get(gli2);
+                               index++;
+                       }
                }
 
-               if (AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) {
-                       bool ret_val = FALSE;
-                       ret_val = mp_common_track_get_aa_index(index, layout_data, gli, layout_data->is_item_del);
-                       if (ret_val) {
-                               index = layout_data->selected_index;
-                       }
-               } else if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) {
+               if (MP_TRACK_BY_ALBUM == layout_data->track_type) {
                        --index;
                }
 
@@ -364,6 +217,8 @@ mp_common_track_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
 
        if(!mp_play_view_load_by_index(layout_data, index, FALSE))
                mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
+       MP_TA_ACUM_ITEM_END("Selected_Item_to_Playing_View", 0);
+       MP_TA_ACUM_ITEM_BEGIN("navi_frame_transition_time", 0);
        return;
 }
 
@@ -372,7 +227,7 @@ mp_common_track_list_icon_get(void *data, Evas_Object * obj, const char *part)
 {
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *track = (AudioHandleType *) (item->handle);
+       mp_media_info_h track = item->handle;
        mp_retvm_if(!track, NULL, "data is null");
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        mp_retvm_if(!layout_data, NULL, "list_data is null!!");
@@ -381,22 +236,83 @@ mp_common_track_list_icon_get(void *data, Evas_Object * obj, const char *part)
        if (!strcmp(part, "elm.icon"))
        {
                char *thumbpath = NULL;
-               int size = 0;
-               if (layout_data->playlist_id < 0)
-                       audio_svc_list_item_get_val(track, 0, AUDIO_SVC_LIST_ITEM_THUMBNAIL_PATH, &thumbpath, &size,
-                                                   -1);
-               else
-                       audio_svc_playlist_item_get_val(track, 0, AUDIO_SVC_PLAYLIST_ITEM_THUMBNAIL_PATH, &thumbpath,
-                                                       &size, -1);
-               return mp_util_create_thumb_icon(obj, thumbpath, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE);
+               Evas_Object *icon;
+               mp_media_info_get_thumbnail_path(track, &thumbpath);
+               icon = mp_util_create_thumb_icon(obj, thumbpath, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE);
+               return icon;
+       }
+
+       Evas_Object *button;
+
+       if (!strcmp(part, "elm.slide.swallow.3"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_MUSIC_BODY_ADD_TO_PLAYLIST");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_add_to_playlist_cb, track);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.1"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_SYS_STR("IDS_COM_BUTTON_SHARE"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_BUTTON_SHARE");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_share_cb, track);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.2"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_SYS_STR("IDS_COM_SK_SET"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_SK_SET");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_set_cb, track);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.4"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/delete");
+               MP_CHECK_NULL(layout_data->view_data);
+               elm_object_text_set(button, GET_SYS_STR("IDS_COM_OPT_DELETE"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_OPT_DELETE");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_delete_cb, track);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!g_strcmp0(part, "elm.icon.storage"))
+       {
+               char *folder = NULL;
+               int ret = mp_media_info_get_file_path(track, &folder);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+               if (folder) {
+                       const char *icon_path = NULL;
+                       if (g_strstr_len(folder, strlen(MP_PHONE_ROOT_PATH), MP_PHONE_ROOT_PATH))
+                               icon_path = MP_ICON_STORAGE_PHONE;
+                       else if (g_strstr_len(folder, strlen(MP_MMC_ROOT_PATH), MP_MMC_ROOT_PATH))
+                               icon_path = MP_ICON_STORAGE_MMC;
+                       else
+                               icon_path = MP_ICON_STORAGE_EXTERNAL;
+
+                       Evas_Object *icon = elm_icon_add(obj);
+                       MP_CHECK_NULL(icon);
+                       elm_icon_file_set(icon, icon_path, NULL);
+                       evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+                       return icon;
+               }
        }
 
        Evas_Object *check = NULL;
 
        if (elm_genlist_decorate_mode_get(obj) || layout_data->ad->b_add_tracks)
-       {
+       {                       // if edit mode
                if (!strcmp(part, "elm.edit.icon.1"))
-               {
+               {               // swallow checkbox or radio button
                        check = elm_check_add(obj);
                        elm_check_state_pointer_set(check, &item->checked);
                        evas_object_smart_callback_add(check, "changed", mp_common_item_check_changed_cb, item);
@@ -418,8 +334,10 @@ _mp_common_gl_icon_get(void *data, Evas_Object * obj, const char *part)
        if (!strcmp(part, "elm.icon"))
        {
                ad->editfiled_new_playlist = editfield =
-                       mp_widget_create_editfield(obj, AUDIO_SVC_PLAYLIST_NAME_SIZE - 1, ad->new_playlist_name, ad);
-
+                       mp_widget_create_editfield(obj, MP_PLAYLIST_NAME_SIZE - 1, NULL, ad);
+               Evas_Object *entry = mp_widget_editfield_entry_get(editfield);
+               elm_entry_entry_set(entry, ad->new_playlist_name);
+               elm_entry_cursor_end_set(entry);
                evas_object_show(editfield);
 
                return editfield;
@@ -434,26 +352,36 @@ mp_common_create_editfield_layout(Evas_Object * parent, struct appdata * ad, cha
        Evas_Object *genlist = NULL;
        Elm_Object_Item *item = NULL;
        static Elm_Genlist_Item_Class itc;
+       Evas_Object *layout = NULL;
 
        MP_CHECK_NULL(parent);
        MP_CHECK_NULL(ad);
 
+       layout = elm_layout_add(parent);
+       elm_layout_file_set(layout, EDJ_NAME, "create_playlist");
+
        IF_FREE(ad->new_playlist_name);
        if (text)
                ad->new_playlist_name = strdup(text);
 
-       itc.item_style = "music/1icon";
+       itc.version = ELM_GENGRID_ITEM_CLASS_VERSION;
+       itc.refcount = 0;
+       itc.delete_me = EINA_FALSE;
+       itc.item_style = "1icon";
        itc.func.text_get = NULL;
        itc.func.content_get = _mp_common_gl_icon_get;
        itc.func.state_get = NULL;
        itc.func.del = NULL;
 
-       genlist = elm_genlist_add(parent);
+       genlist = elm_genlist_add(layout);
        item = elm_genlist_item_append(genlist, &itc, ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
        elm_object_scroll_freeze_push(genlist);
 
-       return genlist;
+       elm_object_part_content_set(layout, "elm.swallow.content", genlist);
+       evas_object_show(layout);
+
+       return layout;
 }
 
 void
@@ -478,6 +406,7 @@ _mp_common_search_layout_del_cb(void *data, Evas * e, Evas_Object * eo, void *ev
        view_data_t *view_data = (view_data_t *) data;
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
+       //view_data->view_mode = MP_VIEW_MODE_DEFAULT;
 }
 
 
@@ -500,13 +429,14 @@ mp_common_search_button_cb(void *data, Evas_Object * obj, void *event_info)
        mp_layout_data_t *layout_data = evas_object_data_get(top_view, "layout_data");
        MP_CHECK_LAYOUT_DATA(layout_data);
 
+       // list must be updated. label changed callback does not called any more...
        mp_view_layout_update(layout);
 
        mp_view_manager_push_view_content(view_data, layout, MP_VIEW_CONTENT_SEARCH);
 
        evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL, _mp_common_search_layout_del_cb, view_data);
 
-       mp_view_manager_set_title_and_buttons(view_data, GET_SYS_STR("IDS_COM_SK_SEARCH"), mp_util_get_layout_data(layout));
+       mp_view_manager_set_title_and_buttons(view_data, "IDS_COM_SK_SEARCH", mp_util_get_layout_data(layout));
 
 }
 
@@ -541,6 +471,8 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info)
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
 
+       bool b_play_all = false;
+
        struct appdata *ad = view_data->ad;
        MP_CHECK(ad);
        mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
@@ -550,19 +482,27 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info)
        if (layout_data && layout_data->search_bar) {
                Evas_Object *en = mp_search_entry_get(layout_data->search_bar);
                Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);
+               /* hide SIP */
                if (imf_context)
                        ecore_imf_context_input_panel_hide(imf_context);
-               elm_object_focus_allow_set (en, EINA_FALSE);
+               /* set the entry object not be focused */
+               elm_object_focus_allow_set(en, EINA_FALSE);
        }
 
        if(mp_view_manager_count_view_content(view_data) == 1)
        {
                DEBUG_TRACE("First view. go to background");
-               mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
                elm_win_lower(ad->win_main);
                return;
        }
 
+       /* get the flag if the playing view is created by playall */
+       if (ad->playing_view != NULL)
+       {
+               b_play_all = ad->playing_view->b_play_all;
+               ad->playing_view->b_play_all = false;
+       }
+
        mp_view_manager_pop_view_content(view_data, FALSE, FALSE);
        evas_object_smart_callback_del(obj, "clicked", mp_common_back_button_cb);
 
@@ -579,6 +519,12 @@ mp_common_back_button_cb(void *data, Evas_Object * obj, void *event_info)
                        mp_view_layout_update(top_view);
                }
        }
+       else if (b_play_all)
+       {
+               /* when back from play view which created by playall option, the layout_data is NULL */
+               Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad);
+               mp_view_layout_update(top_view);
+       }
 }
 
 void
@@ -605,6 +551,7 @@ mp_common_item_check_changed_cb(void *data, Evas_Object * obj, void *event_info)
        else
                layout_data->checked_count--;
 
+       // update select all check button
        if (layout_data->select_all_layout)
        {
                if (layout_data->item_count == layout_data->checked_count)
@@ -654,9 +601,6 @@ mp_common_set_title_button_sensitivity(mp_layout_data_t * layout_data, int selec
                if(selected_count > 0)
                        disable = false;
 
-               //item = mp_view_manager_get_controlbar_item(layout_data->ad, 0);
-               //elm_object_item_disabled_set(item, false);
-
                for (i = 0; i < MP_NAVI_CONTROL_BUTTON_MAX; i++)        //Cancel button always enabled.
                {
                        item = mp_view_manager_get_controlbar_item(layout_data->ad, i);
@@ -696,7 +640,7 @@ mp_common_set_title_button_sensitivity(mp_layout_data_t * layout_data, int selec
                else
                {
                        bool disable_option = true;
-                       audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_ALL, NULL, NULL, NULL, NULL, &all_track_count);
+                       mp_media_info_list_count(MP_TRACK_ALL, NULL, NULL, NULL, 0, &all_track_count);
                        if(all_track_count > 0)
                                disable_option = false;
                        edit_item = mp_view_manager_get_edit_controlbar_item(layout_data->ad);
@@ -726,15 +670,13 @@ mp_common_navigationbar_finish_effect(void *data, Evas_Object * obj, void *event
 
        ad->navi_effect_in_progress = FALSE;
 
-       int cnt = mp_view_manager_count_view_content(mp_util_get_view_data(ad));
-       if(cnt == 1)
-       {
-               DEBUG_TRACE("show controlbar");
-               mp_library_controlbar_visible_set(ad, true);
+       if(!elm_naviframe_prev_btn_auto_pushed_get(ad->naviframe))
+               elm_naviframe_prev_btn_auto_pushed_set(ad->naviframe, EINA_TRUE);
+
+       if (ad->editfiled_new_playlist) {
+               Evas_Object *entry = mp_widget_editfield_entry_get(ad->editfiled_new_playlist);
+               elm_object_focus_set(entry, EINA_TRUE);
        }
-       MP_CHECK(ad->library);
-       if(!elm_naviframe_prev_btn_auto_pushed_get(ad->library->cur_view))
-               elm_naviframe_prev_btn_auto_pushed_set(ad->library->cur_view, EINA_TRUE);
 
        mp_layout_data_t * layout_data = mp_util_get_layout_data(mp_view_manager_get_last_view_layout(ad));
        MP_CHECK(layout_data);
index a59c21d..3c7e019 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,9 +14,7 @@
  * limitations under the License.
  */
 
-
 #include <sys/time.h>
-#include <aul.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(MediaSvcHandle *media_svc_handle, char *fid)
+mp_item_update_db(char *fid)
 {
-       MP_CHECK_FALSE(media_svc_handle);
 
-       AudioHandleType *item = NULL;
+       mp_media_info_h media;
        int count = 0;
        bool ret = FALSE;
 
-       ret = audio_svc_item_new(&item);
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, FALSE, "error to get item");
-
-       ret = audio_svc_get_item_by_audio_id(media_svc_handle, fid, item);
-       if (ret != AUDIO_SVC_ERROR_NONE)
+       ret = mp_media_info_create(&media, fid);
+       if (ret != 0)
        {
-               audio_svc_item_free(item);
                return false;
        }
 
-       audio_svc_item_get_val(item, AUDIO_SVC_TRACK_DATA_PLAYED_COUNT, &count, -1);
+       mp_media_info_get_played_count(media, &count);
 
-       audio_svc_update_item_metadata(media_svc_handle, fid, AUDIO_SVC_TRACK_DATA_PLAYED_COUNT, ++count,
-                                      AUDIO_SVC_TRACK_DATA_PLAYED_TIME, time(NULL), -1);
+       mp_media_info_set_played_count(media, ++count);
+       mp_media_info_set_played_time(media, time(NULL));
 
-       audio_svc_item_free(item);
+       mp_media_info_destroy(media);
 
        return TRUE;
 }
diff --git a/src/common/mp-media-info.c b/src/common/mp-media-info.c
new file mode 100755 (executable)
index 0000000..c527f79
--- /dev/null
@@ -0,0 +1,1724 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <glib.h>
+#include <stdlib.h>
+#include <string.h>
+#include <media_content.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 bool __mp_media_info_cb(media_info_h media, void *user_data)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       mp_media_list_h media_list = user_data;
+       mp_media_info_h media_info = NULL;
+       media_info_h m = NULL;
+       MP_CHECK_FALSE(media_list);
+
+       res = media_info_clone(&m, media);
+       MP_CHECK_VAL (res == MEDIA_CONTENT_ERROR_NONE, true);
+       MP_CHECK_VAL(m, true);
+
+       media_info = calloc(1, sizeof(struct mp_media_info_s));
+       MP_CHECK_FALSE(media_info);
+
+       media_info->i.minfo = calloc(1, sizeof(struct mp_minfo_s));
+       MP_CHECK_FALSE(media_info->i.minfo);
+
+       media_info->h.media = m;
+       media_list->list = g_list_prepend(media_list->list, media_info);
+
+       res = media_info_get_audio(m, &media_info->s.meta);
+       MP_CHECK_VAL (res == MEDIA_CONTENT_ERROR_NONE, true);
+
+       return true;
+}
+
+static bool __mp_playlist_media_info_cb(int playlist_member_id, media_info_h media, void *user_data)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       mp_media_list_h media_list = user_data;
+       mp_media_info_h media_info = NULL;
+       media_info_h m = NULL;
+       MP_CHECK_FALSE(media_list);
+
+       res = media_info_clone(&m, media);
+       MP_CHECK_FALSE (res == MEDIA_CONTENT_ERROR_NONE);
+       MP_CHECK_FALSE(m);
+
+       media_info = calloc(1, sizeof(struct mp_media_info_s));
+       MP_CHECK_FALSE(media_info);
+
+       media_info->i.minfo = calloc(1, sizeof(struct mp_minfo_s));
+       MP_CHECK_FALSE(media_info->i.minfo);
+       media_info->i.minfo->playlist_member_id = playlist_member_id;
+
+       media_info->h.media = m;
+       media_list->list = g_list_prepend(media_list->list, media_info);
+
+       res = media_info_get_audio(m, &media_info->s.meta);
+       MP_CHECK_FALSE (res == MEDIA_CONTENT_ERROR_NONE);
+
+       return true;
+}
+
+static bool __mp_media_album_cb(media_album_h album, void *user_data)
+{
+       mp_media_info_h media_info = NULL;
+       mp_media_list_h media_list = user_data;
+       MP_CHECK_FALSE(media_list);
+
+       media_info = calloc(1, sizeof(struct mp_media_info_s));
+       MP_CHECK_FALSE(media_info);
+
+       media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s));
+       MP_CHECK_FALSE(media_info->i.ginfo);
+
+       media_album_clone((media_album_h *)&media_info->h.group, album);
+       media_info->s.group_type = media_list->group_type;
+
+       media_list->list = g_list_prepend(media_list->list, media_info);
+
+       return true;
+}
+
+static bool __mp_media_folder_cb(media_folder_h folder, void *user_data)
+{
+       mp_media_info_h media_info = NULL;
+       mp_media_list_h media_list = user_data;
+       MP_CHECK_FALSE(media_list);
+
+       media_info = calloc(1, sizeof(struct mp_media_info_s));
+       MP_CHECK_FALSE(media_info);
+
+       media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s));
+       MP_CHECK_FALSE(media_info->i.ginfo);
+
+       media_folder_clone((media_folder_h *)&media_info->h.group, folder);
+       media_info->s.group_type = media_list->group_type;
+
+       media_list->list = g_list_prepend(media_list->list, media_info);
+
+       return true;
+}
+
+static bool __mp_media_playlist_cb(media_playlist_h playlist, void *user_data)
+{
+       mp_media_info_h media_info = NULL;
+       mp_media_list_h media_list = user_data;
+       MP_CHECK_FALSE(media_list);
+
+       media_info = calloc(1, sizeof(struct mp_media_info_s));
+       MP_CHECK_FALSE(media_info);
+
+       media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s));
+       MP_CHECK_FALSE(media_info->i.ginfo);
+
+       media_playlist_clone((media_playlist_h *)&media_info->h.group, playlist);
+       media_info->s.group_type = media_list->group_type;
+
+       media_list->list = g_list_prepend(media_list->list, media_info);
+
+       return true;
+}
+
+static bool __mp_media_group_cb(const char* name, void *user_data)
+{
+       mp_media_info_h media_info = NULL;
+       mp_media_list_h media_list = user_data;
+       MP_CHECK_FALSE(media_list);
+
+       media_info = calloc(1, sizeof(struct mp_media_info_s));
+       MP_CHECK_FALSE(media_info);
+
+       media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s));
+       MP_CHECK_FALSE(media_info->i.ginfo);
+
+       media_info->h.group = g_strdup(name);
+       media_info->s.group_type = media_list->group_type;
+
+       media_list->list = g_list_prepend(media_list->list, media_info);
+
+       return true;
+}
+
+static void __mp_media_info_destory(void *data)
+{
+       mp_media_info_destroy(data);
+}
+
+static void __mp_media_group_destory(void *data)
+{
+       mp_media_info_h media_info = data;
+       MP_CHECK(media_info);
+
+       if(media_info->s.group_type == MP_GROUP_BY_FOLDER)
+               media_folder_destroy(media_info->h.group);
+       else if(media_info->s.group_type == MP_GROUP_BY_ALBUM)
+               media_album_destroy(media_info->h.group);
+       else if(media_info->s.group_type == MP_GROUP_BY_PLAYLIST)
+               media_playlist_destroy(media_info->h.group);
+       else
+               IF_FREE(media_info->h.group);
+
+       if(media_info->i.ginfo)
+       {
+               IF_FREE(media_info->i.ginfo->main_info);
+               IF_FREE(media_info->i.ginfo->sub_info);
+               IF_FREE(media_info->i.ginfo->thumb_path);
+               free(media_info->i.ginfo);
+       }
+
+       free(media_info);
+}
+
+
+static void __mp_media_info_set_group_filter(mp_filter_h filter, mp_group_type_e group_type, const char *type_string, const char *filter_string)
+{
+       char cond[MAX_FILTER_LEN] = {0,};
+       if(group_type != MP_GROUP_BY_PLAYLIST)
+               strncat(cond, MP_MEDIA_TYPE, STRNCAT_LEN(cond));
+       else
+               strncat(cond, "((MEDIA_TYPE=3 and MEDIA_COUNT>0) or MEDIA_COUNT=0)", STRNCAT_LEN(cond));
+       switch(group_type)
+       {
+       case MP_GROUP_BY_ALBUM:
+               if(filter_string)
+               {
+                       strncat(cond, " AND MEDIA_ALBUM like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_GROUP_BY_ARTIST:
+               if(filter_string)
+               {
+                       strncat(cond, " AND MEDIA_ARTIST like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_GROUP_BY_ARTIST_ALBUM:
+               MP_CHECK(type_string && strlen(type_string));
+               if(filter_string)
+               {
+                       strncat(cond, " AND MEDIA_ALBUM like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\" AND ", STRNCAT_LEN(cond));
+               }
+               strncat(cond, " AND MEDIA_ARTIST = \"", STRNCAT_LEN(cond));
+               strncat(cond, type_string, STRNCAT_LEN(cond));
+               strncat(cond, "\"", STRNCAT_LEN(cond));
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_GROUP_BY_GENRE:
+               if(filter_string)
+               {
+                       strncat(cond, " AND MEDIA_GENRE like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_GENRE, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_GROUP_BY_FOLDER:
+               if(filter_string)
+               {
+                       strncat(cond, " AND FOLDER_PATH like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, FOLDER_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_GROUP_BY_YEAR:
+               if(filter_string)
+               {
+                       strncat(cond, " AND MEDIA_YEAR like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_YEAR, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_GROUP_BY_COMPOSER:
+               if(filter_string)
+               {
+                       strncat(cond, " AND MEDIA_COMPOSER like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_COMPOSER, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_GROUP_BY_PLAYLIST:
+               if(filter_string)
+               {
+                       strncat(cond, " AND PLAYLIST_NAME like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       default:
+               WARN_TRACE("Unhandled type: %d", group_type);
+               break;
+       }
+       if(strlen(cond))
+       {
+               DEBUG_TRACE("cond: %s", cond);
+               media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+       }
+
+}
+
+static void __mp_media_info_set_filter(filter_h filter, mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string)
+{
+       char cond[MAX_FILTER_LEN] = {0,};
+       strncat(cond, MP_MEDIA_TYPE, STRNCAT_LEN(cond));
+       switch (track_type)
+       {
+       case MP_TRACK_ALL:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_TRACK_BY_ALBUM:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+               if(type_string)
+               {
+                       strncat(cond, " AND MEDIA_ALBUM=\"", STRNCAT_LEN(cond));
+                       strncat(cond, type_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\"", STRNCAT_LEN(cond));
+               }
+               else
+               {
+                       strncat(cond, " AND MEDIA_ALBUM is null", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_TRACK_BY_ARTIST:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_ALBUM, MEDIA_TITLE", MEDIA_CONTENT_COLLATE_NOCASE);
+               if(type_string)
+               {
+                       strncat(cond, " AND MEDIA_ARTIST=\"", STRNCAT_LEN(cond));
+                       strncat(cond, type_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\"", STRNCAT_LEN(cond));
+               }
+               else
+               {
+                       strncat(cond, " AND MEDIA_ARTIST is null", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_TRACK_BY_GENRE:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+               if(type_string)
+               {
+                       strncat(cond, " AND MEDIA_GENRE=\"", STRNCAT_LEN(cond));
+                       strncat(cond, type_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\"", STRNCAT_LEN(cond));
+               }
+               else
+               {
+                       strncat(cond, " AND MEDIA_GENRE is null", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_TRACK_BY_FOLDER:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       case MP_TRACK_BY_YEAR:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+               if(type_string)
+               {
+                       strncat(cond, " AND MEDIA_YEAR=\"", STRNCAT_LEN(cond));
+                       strncat(cond, type_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\"", STRNCAT_LEN(cond));
+               }
+               else
+               {
+                       strncat(cond, " AND MEDIA_YEAR is null", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_TRACK_BY_COMPOSER:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+               if(type_string)
+               {
+                       strncat(cond, " AND MEDIA_COMPOSER=\"", STRNCAT_LEN(cond));
+                       strncat(cond, type_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\"", STRNCAT_LEN(cond));
+               }
+               else
+               {
+                       strncat(cond, " AND MEDIA_COMPOSER is null", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_TRACK_BY_ARTIST_ALBUM:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+               if(type_string)
+               {
+                       strncat(cond, " AND MEDIA_ALBUM=\"", STRNCAT_LEN(cond));
+                       strncat(cond, type_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\"", STRNCAT_LEN(cond));
+               }
+               else
+               {
+                       strncat(cond, " AND MEDIA_ALBUM is null", STRNCAT_LEN(cond));
+               }
+               if(type_string2)
+               {
+                       strncat(cond, " AND MEDIA_ARTIST=\"", STRNCAT_LEN(cond));
+                       strncat(cond, type_string2, STRNCAT_LEN(cond));
+                       strncat(cond, "\"", STRNCAT_LEN(cond));
+               }
+               else
+               {
+                       strncat(cond, " AND MEDIA_ARTIST is null", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_TRACK_BY_FAVORITE:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+               strncat(cond, " AND MEDIA_FAVORITE=1", STRNCAT_LEN(cond));
+               break;
+       case MP_TRACK_BY_PLAYED_TIME:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_LAST_PLAYED_TIME, MEDIA_CONTENT_COLLATE_NOCASE);
+               strncat(cond, " AND MEDIA_LAST_PLAYED_TIME>0", STRNCAT_LEN(cond));
+               break;
+       case MP_TRACK_BY_ADDED_TIME:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_ADDED_TIME, MEDIA_CONTENT_COLLATE_NOCASE);
+               strncat(cond, " AND MEDIA_ADDED_TIME>0", STRNCAT_LEN(cond));
+               break;
+       case MP_TRACK_BY_PLAYED_COUNT:
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PLAYED_COUNT, MEDIA_CONTENT_COLLATE_NOCASE);
+               strncat(cond, " AND MEDIA_PLAYED_COUNT>0", STRNCAT_LEN(cond));
+               break;
+       case MP_TRACK_BY_PLAYLIST:
+               //media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
+               break;
+       default:
+               WARN_TRACE("Unhandled type: %d", track_type);
+               break;
+       }
+
+       if(filter_string && strlen(filter_string))
+       {
+               strncat(cond, " AND MEDIA_TITLE like \"\%", STRNCAT_LEN(cond));
+               strncat(cond, filter_string, STRNCAT_LEN(cond));
+               strncat(cond, "\%\"", STRNCAT_LEN(cond));
+       }
+
+       DEBUG_TRACE("cond: %s", cond);
+       media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+
+}
+
+
+int mp_media_info_connect(void)
+{
+       int res = media_content_connect();
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error: media_content_connect");
+
+       return res;
+}
+int mp_media_info_disconnect(void)
+{
+       int res = media_content_disconnect();
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error: media_content_disconnect");
+
+       return res;
+}
+
+/*filter*/
+int mp_media_filter_create(mp_filter_h *filter)
+{
+       startfunc;
+       int res = media_filter_create(filter);
+       if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+int mp_media_filter_destory(mp_filter_h filter)
+{
+       startfunc;
+       int res = media_filter_destroy(filter);
+       if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+int mp_media_filter_set_offset(mp_filter_h filter, int offset, int count)
+{
+       startfunc;
+       int res = media_filter_set_offset(filter, offset, count);
+       if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+int mp_media_filter_set_order(mp_filter_h filter, bool descending, const char *order_keyword, mp_media_content_collation_e collation)
+{
+       startfunc;
+       int res = media_filter_set_order(filter, descending, order_keyword, collation);
+       if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+int mp_media_filter_set_condition(mp_filter_h filter, const char *condition, mp_media_content_collation_e collation )
+{
+       startfunc;
+       int res = media_filter_set_condition(filter, condition, collation);
+       if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+/*media infomation*/
+int mp_media_info_list_count_w_filter(mp_track_type_e track_type, const char * folder_id, int playlist_id, mp_filter_h filter, int *count)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       if(track_type == MP_TRACK_BY_FOLDER)
+               res = media_folder_get_media_count_from_db(folder_id, filter, count);
+       else if(track_type == MP_TRACK_BY_PLAYLIST)
+               res = media_playlist_get_media_count_from_db(playlist_id, filter, count);
+       else
+               res = media_info_get_media_count_from_db(filter, count);
+       if(res != MEDIA_CONTENT_ERROR_NONE) ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_list_count(mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int *count)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       filter_h filter = NULL;
+
+       DEBUG_TRACE("track_type: %d, type_str: %s, type_str2: %s, filter: %s, id: %d", track_type, type_string, type_string2, filter_string, playlist_id);
+
+       res = media_filter_create(&filter);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+       __mp_media_info_set_filter(filter, track_type, type_string, type_string2, filter_string);
+
+       res = mp_media_info_list_count_w_filter(track_type, type_string, playlist_id, filter, count);
+       media_filter_destroy(filter);
+
+       return res;
+}
+
+int mp_media_info_list_create_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, mp_media_list_h *media_list)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(media_list, -1);
+
+       *media_list = calloc(1, sizeof(struct mp_media_list_s));
+       MP_CHECK_VAL(*media_list, -1);
+       (*media_list)->group_type = MP_GROUP_NONE;
+
+       if(track_type == MP_TRACK_BY_FOLDER)
+               res = media_folder_foreach_media_from_db(folder_id, filter, __mp_media_info_cb, *media_list);
+       else if(track_type == MP_TRACK_BY_PLAYLIST)
+       {
+               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
+               res = media_playlist_foreach_media_from_db(playlist_id, filter, __mp_playlist_media_info_cb, *media_list);
+       }
+       else
+               res = media_info_foreach_media_from_db(filter, __mp_media_info_cb, *media_list);
+
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+       {
+               ERROR_TRACE("Error code 0x%x", res);
+               free(*media_list);
+               return res;
+       }
+
+       (*media_list)->list = g_list_reverse((*media_list)->list);
+       (*media_list)->count = g_list_length((*media_list)->list);
+
+       DEBUG_TRACE("count : %d", (*media_list)->count);
+       return res;
+}
+
+int mp_media_info_list_create(mp_media_list_h *out_list,
+               mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int offset, int count)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       filter_h filter = NULL;
+
+
+       res = media_filter_create(&filter);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+
+       res = media_filter_set_offset(filter, offset, count);
+       DEBUG_TRACE("track_type: %d, type_str: %s, type_str2: %s, filter: %s, playlist_id: %d", track_type, type_string, type_string2, filter_string, playlist_id);
+       DEBUG_TRACE("offset: %d, count: %d", offset, count);
+       __mp_media_info_set_filter(filter, track_type, type_string, type_string2, filter_string);
+
+       res = mp_media_info_list_create_w_filter(track_type, type_string, playlist_id, filter, out_list);
+       media_filter_destroy(filter);
+
+       return res;
+}
+
+int mp_media_info_list_destroy(mp_media_list_h media_list)
+{
+       startfunc;
+       MP_CHECK_VAL(media_list, -1);
+
+       if(media_list->list)
+               g_list_free_full(media_list->list, __mp_media_info_destory);
+       free(media_list);
+
+       return 0;
+}
+
+mp_media_info_h mp_media_info_list_nth_item(mp_media_list_h media_list, int index)
+{
+       MP_CHECK_NULL(media_list);
+       MP_CHECK_NULL(index < media_list->count);
+
+       return g_list_nth_data(media_list->list, index);
+}
+
+int mp_media_info_create(mp_media_info_h *media_info, const char *media_id)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       *media_info = calloc(1, sizeof(struct mp_media_info_s));
+
+       (*media_info)->i.minfo = calloc(1, sizeof(struct mp_minfo_s));
+       MP_CHECK_VAL((*media_info)->i.minfo, -1);
+
+       res = media_info_get_media_from_db(media_id, &(*media_info)->h.media);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+
+       res = media_info_get_audio((*media_info)->h.media, &(*media_info)->s.meta);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+
+       return res;
+}
+
+int mp_media_info_create_by_path(mp_media_info_h *media_info, const char *file_path)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       mp_filter_h filter = NULL;
+       char *cond = NULL;
+       mp_media_list_h list = NULL;
+
+       res = media_filter_create(&filter);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+       cond = g_strdup_printf("MEDIA_PATH = \"%s\"", file_path);
+
+       media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_DEFAULT);
+       IF_FREE(cond);
+
+       media_filter_set_offset(filter, 0, 1);
+
+       res = mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+       media_filter_destroy(filter);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+       MP_CHECK_VAL(list, -1);
+       MP_CHECK_VAL(list->count > 0, -1);
+
+       list->list = g_list_nth(list->list, 0);
+       MP_CHECK_VAL(list->list, res);
+       *media_info = list->list->data;
+       list->list = g_list_delete_link(list->list, list->list);
+
+       mp_media_info_list_destroy(list);
+
+       return res;
+}
+
+int mp_media_info_destroy(mp_media_info_h media_info)
+{
+       MP_CHECK_VAL(media_info, -1);
+
+       audio_meta_destroy(media_info->s.meta);
+       media_info_destroy(media_info->h.media);
+
+       if(media_info->i.minfo)
+       {
+               IF_FREE(media_info->i.minfo->media_id);
+               IF_FREE(media_info->i.minfo->title);
+               IF_FREE(media_info->i.minfo->album);
+               IF_FREE(media_info->i.minfo->artist);
+               IF_FREE(media_info->i.minfo->genre);
+               IF_FREE(media_info->i.minfo->composer);
+               IF_FREE(media_info->i.minfo->year);
+               IF_FREE(media_info->i.minfo->file_path);
+               IF_FREE(media_info->i.minfo->thumbnail_path);
+               free(media_info->i.minfo);
+       }
+
+       free(media_info);
+       return 0;
+}
+
+
+int mp_media_info_get_media_id(mp_media_info_h media, char **media_id)
+{
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       if(!media->i.minfo->media_id)
+       {
+               res = media_info_get_media_id(media->h.media, &media->i.minfo->media_id);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *media_id = media->i.minfo->media_id;
+       PRINT_STR(*media_id);
+
+       return res;
+}
+
+int mp_media_info_get_file_path(mp_media_info_h media, char **path)
+{
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       if(!media->i.minfo->file_path)
+       {
+               res = media_info_get_file_path(media->h.media, &media->i.minfo->file_path);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *path = media->i.minfo->file_path;
+       PRINT_STR(*path);
+       return res;
+}
+int mp_media_info_get_thumbnail_path(mp_media_info_h media, char **path)
+{
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       if(!media->i.minfo->thumbnail_path)
+       {
+               res = media_info_get_thumbnail_path(media->h.media, &media->i.minfo->thumbnail_path);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *path = media->i.minfo->thumbnail_path;
+       PRINT_STR(*path);
+       return res;
+}
+int mp_media_info_get_favorite(mp_media_info_h media, bool *favorite)
+{
+       MP_CHECK_VAL(media, -1);
+
+       int res = media_info_get_favorite(media->h.media, favorite);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_is_drm(mp_media_info_h media, bool *drm)
+{
+       MP_CHECK_VAL(media, -1);
+       int res = media_info_is_drm(media->h.media, drm);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_get_media_type(mp_media_info_h media, int *media_type)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->h.media, -1);
+
+       media_content_type_e mtype;
+
+       res = media_info_get_media_type(media->h.media, &mtype);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+
+       if(mtype == MEDIA_CONTENT_TYPE_SOUND)
+               *media_type = MP_MEDIA_TYPE_SOUND;
+       else
+               *media_type = MP_MEDIA_TYPE_MUSIC;
+
+       return res;
+}
+
+int mp_media_info_get_title(mp_media_info_h media, char **title)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       if(!media->i.minfo->title)
+       {
+               res = audio_meta_get_title(media->s.meta, &media->i.minfo->title);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *title = media->i.minfo->title;
+       PRINT_STR(*title);
+       return res;
+}
+int mp_media_info_get_album(mp_media_info_h media, char **album)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       if(!media->i.minfo->album)
+       {
+               res = audio_meta_get_album(media->s.meta, &media->i.minfo->album);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *album = media->i.minfo->album;
+       PRINT_STR(*album);
+       return res;
+}
+int mp_media_info_get_artist(mp_media_info_h media, char **artist)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       if(!media->i.minfo->artist)
+       {
+               res = audio_meta_get_artist(media->s.meta, &media->i.minfo->artist);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *artist = media->i.minfo->artist;
+       PRINT_STR(*artist);
+       return res;
+}
+
+int mp_media_info_get_genre(mp_media_info_h media, char **genre)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       if(!media->i.minfo->genre)
+       {
+               res = audio_meta_get_genre(media->s.meta, &media->i.minfo->genre);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *genre = media->i.minfo->genre;
+       PRINT_STR(*genre);
+       return res;
+}
+
+int mp_media_info_get_composer(mp_media_info_h media, char **composer)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       if(!media->i.minfo->composer)
+       {
+               res = audio_meta_get_composer(media->s.meta, &media->i.minfo->composer);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *composer = media->i.minfo->composer;
+       PRINT_STR(*composer);
+       return res;
+}
+int mp_media_info_get_year(mp_media_info_h media, char **year)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       if(!media->i.minfo->year)
+       {
+               res = audio_meta_get_composer(media->s.meta, &media->i.minfo->year);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *year = media->i.minfo->year;
+       PRINT_STR(*year);
+       return res;
+}
+int mp_media_info_get_copyright(mp_media_info_h media, char **copyright)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       if(!media->i.minfo->copyright)
+       {
+               res = audio_meta_get_copyright(media->s.meta, &media->i.minfo->copyright);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *copyright = media->i.minfo->copyright;
+       PRINT_STR(*copyright);
+       return res;
+}
+
+int mp_media_info_get_track_num(mp_media_info_h media, char **track_num)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       if(!media->i.minfo->track_num)
+       {
+               res = audio_meta_get_track_num(media->s.meta, &media->i.minfo->track_num);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+       }
+       *track_num = media->i.minfo->track_num;
+       PRINT_STR(*track_num);
+       return res;
+}
+
+int mp_media_info_get_format(mp_media_info_h media, char **format)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       int bit_rate = 0;
+       int sample_rate = 0;
+       int channel = 0;
+
+       if(!media->i.minfo->format)
+       {
+               res = audio_meta_get_sample_rate(media->s.meta, &sample_rate);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+               res = audio_meta_get_bit_rate(media->s.meta, &bit_rate);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+               res = audio_meta_get_channel(media->s.meta, &channel);
+               if(res != MEDIA_CONTENT_ERROR_NONE)
+                       ERROR_TRACE("Error code 0x%x", res);
+
+               media->i.minfo->format = g_strdup_printf("%dkbps %dHz %dch", bit_rate, sample_rate, channel);
+       }
+       *format = media->i.minfo->track_num;
+       PRINT_STR(*format);
+       return res;
+}
+
+int mp_media_info_get_bit_rate(mp_media_info_h media, int *bitrate)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+
+       res = audio_meta_get_bit_rate(media->s.meta, bitrate);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+int mp_media_info_get_sample_rate(mp_media_info_h media, int *sample_rate)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+
+       res = audio_meta_get_sample_rate(media->s.meta, sample_rate);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+int mp_media_info_get_duration(mp_media_info_h media, int *duration)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+
+       res = audio_meta_get_duration(media->s.meta, duration);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_get_played_time(mp_media_info_h media, time_t *time)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+
+       res = audio_meta_get_played_time(media->s.meta, time);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_get_played_count(mp_media_info_h media, int *count)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+
+       res = audio_meta_get_played_count(media->s.meta, count);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_get_playlist_member_id(mp_media_info_h media, int *member_id)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->i.minfo, -1);
+
+       *member_id = media->i.minfo->playlist_member_id;
+       return res;
+}
+
+int mp_media_info_set_favorite(mp_media_info_h media, bool favorite)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->h.media, -1);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+       {
+               ERROR_TRACE("Error code 0x%x", res);
+               return res;
+       }
+
+       res = media_info_set_favorite(media->h.media, favorite);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+       {
+               ERROR_TRACE("Error code 0x%x", res);
+               return res;
+       }
+
+       res = media_info_update_to_db(media->h.media);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_set_played_time(mp_media_info_h media, time_t time)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+
+       res = audio_meta_set_played_time(media->s.meta, time);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+       {
+               ERROR_TRACE("Error code 0x%x", res);
+               return res;
+       }
+       res = audio_meta_update_to_db(media->s.meta);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+int mp_media_info_set_played_count(mp_media_info_h media, int count)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.meta, -1);
+
+       res = audio_meta_set_played_count(media->s.meta, count);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+       {
+               ERROR_TRACE("Error code 0x%x", res);
+               return res;
+       }
+       res = audio_meta_update_to_db(media->s.meta);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_set_added_time(mp_media_info_h media, time_t time)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->h.media, -1);
+
+       res = media_info_set_added_time(media->h.media, time);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+       {
+               ERROR_TRACE("Error code 0x%x", res);
+               return res;
+       }
+       res = media_info_update_to_db(media->h.media);
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+       return res;
+}
+
+int mp_media_info_group_list_count(mp_group_type_e group_type, const char *type_string, const char *filter_string, int *count)
+{
+       startfunc;
+       mp_filter_h filter = NULL;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       res = media_filter_create(&filter);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+       DEBUG_TRACE("group_type: %d, type_string:s, filter_string:%s", group_type, type_string, filter_string);
+
+       __mp_media_info_set_group_filter(filter, group_type, type_string, filter_string);
+
+       res = mp_media_info_group_list_count_w_filter(group_type, filter, count);
+       MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+
+       media_filter_destroy(filter);
+
+       return res;
+}
+int mp_media_info_group_list_count_w_filter(mp_group_type_e group_type, mp_filter_h filter, int *count)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       switch(group_type)
+       {
+       case MP_GROUP_BY_ALBUM:
+       case MP_GROUP_BY_ARTIST_ALBUM:
+               res = media_album_get_album_count_from_db(filter, count);
+               break;
+       case MP_GROUP_BY_ARTIST:
+               res = media_group_get_group_count_from_db(filter, MEDIA_CONTENT_GROUP_ARTIST, count);
+               break;
+       case MP_GROUP_BY_GENRE:
+               res = media_group_get_group_count_from_db(filter, MEDIA_CONTENT_GROUP_GENRE, count);
+               break;
+       case MP_GROUP_BY_FOLDER:
+               res = media_folder_get_folder_count_from_db(filter, count);
+               break;
+       case MP_GROUP_BY_YEAR:
+               res = media_group_get_group_count_from_db(filter, MEDIA_CONTENT_GROUP_YEAR, count);
+               break;
+       case MP_GROUP_BY_COMPOSER:
+               res = media_group_get_group_count_from_db(filter, MEDIA_CONTENT_GROUP_COMPOSER, count);
+               break;
+       case MP_GROUP_BY_PLAYLIST:
+               res = media_playlist_get_playlist_count_from_db(filter, count);
+               break;
+       default:
+               WARN_TRACE("Unhandled type: %d", group_type);
+               res = -1;
+               break;
+       }
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+               ERROR_TRACE("Error code 0x%x", res);
+
+       return res;
+}
+
+#define     STR_MP_MOST_PLAYED         ("IDS_MUSIC_BODY_MOST_PLAYED")
+#define     STR_MP_RECENTLY_ADDED      ("IDS_MUSIC_BODY_RECENTLY_ADDED")
+#define     STR_MP_RECENTLY_PLAYED     ("IDS_MUSIC_BODY_RECENTLY_PLAYED")
+#define     STR_MP_QUICK_LIST                  ("IDS_MUSIC_BODY_FAVOURITES")
+
+int mp_media_info_group_list_create(mp_media_list_h *media_list, mp_group_type_e group_type, const char *type_string, const char *filter_string, int offset, int count)
+{
+       startfunc;
+       mp_filter_h filter = NULL;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       if(group_type != MP_GROUP_BY_SYS_PLAYLIST)
+       {
+               res = media_filter_create(&filter);
+               MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+               media_filter_set_offset(filter, offset, count);
+
+               __mp_media_info_set_group_filter(filter, group_type, type_string, filter_string);
+
+               res = mp_media_info_group_list_create_w_filter(filter, group_type, media_list);
+               media_filter_destroy(filter);
+               MP_CHECK_VAL(res == MEDIA_CONTENT_ERROR_NONE, res);
+       }
+       else
+       {
+
+               int i;
+               mp_media_info_h media_info = NULL;
+               *media_list = calloc(1, sizeof(struct mp_media_list_s));
+               MP_CHECK_VAL(*media_list, -1);
+               (*media_list)->group_type = group_type;
+
+               char names[][50] =
+                       { STR_MP_MOST_PLAYED, STR_MP_RECENTLY_ADDED, STR_MP_RECENTLY_PLAYED, STR_MP_QUICK_LIST };
+               char thumb[][4096]=
+                       { THUMBNAIL_MOST_PLAYED, THUMBNAIL_RECENTLY_PLAYED, THUMBNAIL_RECENTLY_ADDED, THUMBNAIL_QUICK_LIST};
+
+               for(i=0; i< 4; i++)
+               {
+                       media_info = calloc(1, sizeof(struct mp_media_info_s));
+                       MP_CHECK_FALSE(media_info);
+
+                       media_info->i.ginfo = calloc(1, sizeof(struct mp_ginfo_s));
+                       MP_CHECK_FALSE(media_info->i.ginfo);
+
+                       media_info->i.ginfo->main_info = g_strdup(names[i]);
+                       media_info->i.ginfo->thumb_path= g_strdup(thumb[i]);
+                       media_info->s.group_type = group_type;
+                       (*media_list)->list = g_list_append((*media_list)->list, media_info);
+               }
+               (*media_list)->count = g_list_length((*media_list)->list);
+
+       }
+       return res;
+}
+
+int mp_media_info_group_list_create_w_filter(mp_filter_h filter, mp_group_type_e group_type, mp_media_list_h *media_list)
+{
+       startfunc;
+       MP_CHECK_VAL(media_list, -1);
+
+       *media_list = calloc(1, sizeof(struct mp_media_list_s));
+       MP_CHECK_VAL(*media_list, -1);
+       (*media_list)->group_type = group_type;
+
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       switch(group_type)
+       {
+       case MP_GROUP_BY_ALBUM:
+       case MP_GROUP_BY_ARTIST_ALBUM:
+               res = media_album_foreach_album_from_db(filter, __mp_media_album_cb, *media_list);
+               break;
+       case MP_GROUP_BY_ARTIST:
+               res = media_group_foreach_group_from_db(filter, MEDIA_CONTENT_GROUP_ARTIST, __mp_media_group_cb, *media_list);
+               break;
+       case MP_GROUP_BY_GENRE:
+               res = media_group_foreach_group_from_db(filter, MEDIA_CONTENT_GROUP_GENRE, __mp_media_group_cb, *media_list);
+               break;
+       case MP_GROUP_BY_FOLDER:
+               res = media_folder_foreach_folder_from_db(filter, __mp_media_folder_cb, *media_list);
+               break;
+       case MP_GROUP_BY_YEAR:
+               res = media_group_foreach_group_from_db(filter, MEDIA_CONTENT_GROUP_YEAR, __mp_media_group_cb, *media_list);
+               break;
+       case MP_GROUP_BY_COMPOSER:
+               res = media_group_foreach_group_from_db(filter, MEDIA_CONTENT_GROUP_COMPOSER, __mp_media_group_cb, *media_list);
+               break;
+       case MP_GROUP_BY_PLAYLIST:
+               res = media_playlist_foreach_playlist_from_db(filter, __mp_media_playlist_cb, *media_list);
+               break;
+       default:
+               WARN_TRACE("Unhandled type: %d", group_type);
+               res = -1;
+               break;
+       }
+       if(res != MEDIA_CONTENT_ERROR_NONE)
+       {
+               ERROR_TRACE("Error code 0x%x", res);
+               free(*media_list);
+       }
+       else
+       {
+               (*media_list)->list = g_list_reverse((*media_list)->list);
+               (*media_list)->count = g_list_length((*media_list)->list);
+       }
+
+       return res;
+}
+
+int mp_media_info_group_list_destroy(mp_media_list_h media_list)
+{
+       startfunc;
+       MP_CHECK_VAL(media_list, -1);
+       g_list_free_full(media_list->list, __mp_media_group_destory);
+       free(media_list);
+       return 0;
+}
+mp_media_info_h mp_media_info_group_list_nth_item(mp_media_list_h media_list, int index)
+{
+       MP_CHECK_NULL(media_list);
+       MP_CHECK_NULL(index < media_list->count);
+
+       return g_list_nth_data(media_list->list, index);
+}
+
+int mp_media_info_group_get_main_info(mp_media_info_h media, char **main_info)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(main_info, -1);
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->i.ginfo, -1);
+       if(!media->i.ginfo->main_info && media->s.group_type != MP_GROUP_BY_SYS_PLAYLIST)
+       {
+               if(media->s.group_type == MP_GROUP_BY_FOLDER)
+                       res = media_folder_get_name(media->h.group, &media->i.ginfo->main_info);
+               else if(media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM)
+                       res = media_album_get_name(media->h.group, &media->i.ginfo->main_info);
+               else if(media->s.group_type == MP_GROUP_BY_PLAYLIST)
+                       res = media_playlist_get_name(media->h.group, &media->i.ginfo->main_info);
+               else
+                       media->i.ginfo->main_info = g_strdup(media->h.group);
+       }
+       *main_info = media->i.ginfo->main_info;
+       PRINT_STR(*main_info);
+       return res;
+}
+
+int mp_media_info_group_get_sub_info(mp_media_info_h media, char **sub_info)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(sub_info, -1);
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->i.ginfo, -1);
+       if(!media->i.ginfo->sub_info && media->s.group_type != MP_GROUP_BY_SYS_PLAYLIST)
+       {
+               if(media->s.group_type == MP_GROUP_BY_FOLDER)
+                       res = media_folder_get_path(media->h.group, &media->i.ginfo->sub_info);
+               else if(media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM)
+                       res = media_album_get_artist(media->h.group, &media->i.ginfo->sub_info);
+       }
+       *sub_info = media->i.ginfo->sub_info;
+       PRINT_STR(*sub_info);
+       return res;
+}
+
+int mp_media_info_group_get_playlist_id(mp_media_info_h media, int *playlist_id)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(playlist_id, -1);
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.group_type == MP_GROUP_BY_PLAYLIST || media->s.group_type == MP_GROUP_BY_SYS_PLAYLIST, -1);
+
+       if(media->s.group_type == MP_GROUP_BY_SYS_PLAYLIST)
+       {
+               if(!g_strcmp0(media->i.ginfo->main_info, STR_MP_QUICK_LIST))
+                       *playlist_id = MP_SYS_PLST_QUICK_LIST;
+               else if(!g_strcmp0(media->i.ginfo->main_info, STR_MP_RECENTLY_PLAYED))
+                       *playlist_id = MP_SYS_PLST_RECENTELY_PLAYED;
+               else if(!g_strcmp0(media->i.ginfo->main_info, STR_MP_RECENTLY_ADDED))
+                       *playlist_id = MP_SYS_PLST_RECENTELY_ADDED;
+               else
+                       *playlist_id = MP_SYS_PLST_MOST_PLAYED;
+       }
+       else
+               res = media_playlist_get_playlist_id(media->h.group, playlist_id);
+       PRINT_INT(*playlist_id);
+       return res;
+}
+
+int mp_media_info_group_get_folder_id(mp_media_info_h media, char **folder_id)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(folder_id, -1);
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->s.group_type == MP_GROUP_BY_FOLDER, -1);
+
+       res = media_folder_get_folder_id(media->h.group, folder_id);
+       PRINT_INT(*folder_id);
+       return res;
+}
+
+int mp_media_info_group_get_thumbnail_path(mp_media_info_h media, char **path)
+{
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(path, -1);
+       MP_CHECK_VAL(media, -1);
+       MP_CHECK_VAL(media->i.ginfo, -1);
+       if(!media->i.ginfo->thumb_path)
+       {
+
+               if(media->s.group_type == MP_GROUP_BY_ALBUM || media->s.group_type == MP_GROUP_BY_ARTIST_ALBUM)
+                       res = media_album_get_album_art(media->h.group, &media->i.ginfo->thumb_path);
+               else{
+                       filter_h filter;
+                       mp_media_list_h list = NULL;
+                       mp_media_info_h minfo = NULL;
+                       char *type_string = NULL;
+                       char cond[MAX_FILTER_LEN] = {0,};
+                       int count = 0;
+
+                       mp_media_info_group_get_main_info(media, &type_string);
+
+                       media_filter_create(&filter);
+                       strncat(cond, MP_MEDIA_TYPE, STRNCAT_LEN(cond));
+                       if(media->s.group_type == MP_GROUP_BY_PLAYLIST)
+                               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
+                       else
+                               media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
+
+                       if(media->s.group_type == MP_GROUP_BY_ARTIST){
+                               strncat(cond, " AND MEDIA_ARTIST=\"", STRNCAT_LEN(cond));
+                               strncat(cond, type_string, STRNCAT_LEN(cond));
+                               strncat(cond, "\" AND MEDIA_THUMBNAIL_PATH is not null", STRNCAT_LEN(cond));
+                               media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+
+                               mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+                               if(count>0)
+                               {
+                                       media_filter_set_offset(filter, 0, 1);
+                                       mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+                               }
+
+                       }else if(media->s.group_type == MP_GROUP_BY_GENRE){
+                               strncat(cond, " AND MEDIA_GENRE=\"", STRNCAT_LEN(cond));
+                               strncat(cond, type_string, STRNCAT_LEN(cond));
+                               strncat(cond, "\" AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+                               media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+
+                               mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+                               if(count>0)
+                               {
+                                       media_filter_set_offset(filter, 0, 1);
+                                       mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+                               }
+                       }else if(media->s.group_type == MP_GROUP_BY_FOLDER){
+                               char *folde_id = NULL;
+                               mp_media_info_group_get_folder_id(media, &folde_id);
+
+                               strncat(cond, " AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+
+                               media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+                               mp_media_info_list_count_w_filter(MP_TRACK_BY_FOLDER, folde_id, 0, filter, &count);
+                               if(count>0)
+                               {
+                                       media_filter_set_offset(filter, 0, 1);
+                                       mp_media_info_list_create_w_filter(MP_TRACK_BY_FOLDER, folde_id, 0, filter, &list);
+                               }
+                       }else if(media->s.group_type == MP_GROUP_BY_YEAR){
+                               strncat(cond, " AND MEDIA_YEAR=\"", STRNCAT_LEN(cond));
+                               strncat(cond, type_string, STRNCAT_LEN(cond));
+                               strncat(cond, "\" AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+                               media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+
+                               mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+                               if(count>0)
+                               {
+                                       media_filter_set_offset(filter, 0, 1);
+                                       mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+                               }
+                       }else if(media->s.group_type == MP_GROUP_BY_COMPOSER){
+                               strncat(cond, " AND MEDIA_COMPOSER=\"", STRNCAT_LEN(cond));
+                               strncat(cond, type_string, STRNCAT_LEN(cond));
+                               strncat(cond, "\" AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+                               media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+
+                               mp_media_info_list_count_w_filter(MP_TRACK_ALL, NULL, 0, filter, &count);
+                               if(count>0)
+                               {
+                                       media_filter_set_offset(filter, 0, 1);
+                                       mp_media_info_list_create_w_filter(MP_TRACK_ALL, NULL, 0, filter, &list);
+                               }
+                       }else if(media->s.group_type == MP_GROUP_BY_PLAYLIST){
+                               int playlist_id = 0;
+                               mp_media_info_group_get_playlist_id(media, &playlist_id);
+
+                               strncat(cond, " AND MEDIA_THUMBNAIL_PATH is not NULL", STRNCAT_LEN(cond));
+
+                               media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_NOCASE);
+                               mp_media_info_list_count_w_filter(MP_TRACK_BY_PLAYLIST, NULL, playlist_id, filter, &count);
+                               if(count>0)
+                               {
+                                       media_filter_set_offset(filter, 0, 1);
+                                       mp_media_info_list_create_w_filter(MP_TRACK_BY_PLAYLIST, NULL, playlist_id, filter, &list);
+                               }
+                       }else{
+                               WARN_TRACE("Unhandled type: %d", media->s.group_type);
+                               media_filter_destroy(filter);
+                               goto END;
+                       }
+                       WARN_TRACE("count: %d", count);
+
+                       if(list)
+                       {
+                               char *thumb_path = NULL;
+                               minfo = mp_media_info_list_nth_item(list, 0);
+                               MP_CHECK_VAL(minfo, -1);
+                               mp_media_info_get_thumbnail_path(minfo, &thumb_path);
+                               media->i.ginfo->thumb_path = g_strdup(thumb_path);
+                               mp_media_info_list_destroy(list);
+                       }
+                       media_filter_destroy(filter);
+               }
+
+       }
+     END:
+       *path = media->i.ginfo->thumb_path;
+       PRINT_STR(*path);
+       return res;
+}
+
+
+int mp_media_info_playlist_get_id_by_name(const char *playlist_name, int *playlist_id)
+{
+       startfunc;
+       mp_filter_h filter;
+       mp_media_list_h list;
+       mp_media_info_h media;
+       char *cond = NULL;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       res = mp_media_filter_create(&filter);
+       MP_CHECK_VAL(res == 0, res);
+       cond = g_strdup_printf("PLAYLIST_NAME = \"%s\"", playlist_name);
+       MP_CHECK_VAL(cond, -1);
+       res = mp_media_filter_set_condition(filter, cond, MP_MEDIA_CONTENT_COLLATE_DEFAULT);
+       free(cond);
+       MP_CHECK_VAL(res == 0, res);
+       res = mp_media_filter_set_offset(filter, 0, 1);
+       MP_CHECK_VAL(res == 0, res);
+
+       res = mp_media_info_group_list_create_w_filter(filter, MP_GROUP_BY_PLAYLIST, &list);
+       mp_media_filter_destory(filter);
+       MP_CHECK_VAL(res == 0, res);
+       MP_CHECK_VAL(list, -1);
+
+       media = mp_media_info_group_list_nth_item(list, 0);
+       MP_CHECK_VAL(media, -1);
+
+       res = mp_media_info_group_get_playlist_id(media, playlist_id);
+       mp_media_info_group_list_destroy(list);
+
+       return res;
+}
+
+int mp_media_info_playlist_insert_to_db(const char * name, int *playlist_id, mp_playlist_h *playlist_handle)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       media_playlist_h playlist = NULL;
+
+       res = media_playlist_insert_to_db(name, &playlist);
+       MP_CHECK_VAL(res == 0, res);
+
+       res = media_playlist_get_playlist_id(playlist, playlist_id);
+       DEBUG_TRACE("name: %s, playlist_id: %d", name, *playlist_id);
+
+       if(playlist_handle)
+               *playlist_handle = (mp_playlist_h)playlist;
+       else
+               media_playlist_destroy(playlist);
+       return res;
+}
+
+int mp_media_info_playlist_handle_destroy(mp_playlist_h playlist_handle)
+{
+       MP_CHECK_VAL(playlist_handle, -1);
+       return media_playlist_destroy((media_playlist_h)playlist_handle);
+}
+
+int mp_media_info_playlist_delete_from_db(int playlist_id)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       res = media_playlist_delete_from_db(playlist_id);
+       return res;
+}
+
+int mp_media_info_playlist_add_media(int playlist_id, const char *media_id)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       media_playlist_h playlist = NULL;
+
+       res = media_playlist_get_playlist_from_db(playlist_id, NULL, &playlist);
+       MP_CHECK_VAL(res == 0, res);
+
+       res =  media_playlist_add_media(playlist, media_id);
+       MP_CHECK_VAL(res == 0, res);
+
+       res = media_playlist_update_to_db(playlist);
+       MP_CHECK_VAL(res == 0, res);
+
+       media_playlist_destroy(playlist);
+
+       return res;
+}
+
+int mp_media_info_playlist_remove_media(mp_media_info_h playlist, int memeber_id)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(playlist, -1);
+
+       res =  media_playlist_remove_media(playlist->h.group, memeber_id);
+       MP_CHECK_VAL(res == 0, res);
+
+       res = media_playlist_update_to_db(playlist->h.group);
+       MP_CHECK_VAL(res == 0, res);
+
+       return res;
+}
+
+int mp_media_info_playlist_is_exist(const char *playlist_name, bool *exist)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+       filter_h filter = NULL;
+       char cond[MAX_FILTER_LEN] = {0,};
+       int count = 0;
+       media_filter_create(&filter);
+       strncat(cond, "((MEDIA_TYPE=3 and MEDIA_COUNT>0) or MEDIA_COUNT=0) and PLAYLIST_NAME = \"", STRNCAT_LEN(cond));
+       strncat(cond, playlist_name, STRNCAT_LEN(cond));
+       strncat(cond, "\"", STRNCAT_LEN(cond));
+       media_filter_set_condition(filter, cond, MEDIA_CONTENT_COLLATE_DEFAULT);
+       res = mp_media_info_group_list_count_w_filter(MP_GROUP_BY_PLAYLIST, filter, &count);
+       media_filter_destroy(filter);
+       if(count ==0)
+               *exist = false;
+       else
+               *exist = true;
+       return res;
+}
+
+int mp_media_info_playlist_unique_name(const char *orig_name, char *unique_name, size_t max_unique_name_length)
+{
+       startfunc;
+       bool exist = false;
+       int i = 1;
+
+       snprintf(unique_name, max_unique_name_length, "%s_001", orig_name);
+       mp_media_info_playlist_is_exist(unique_name, &exist);
+
+       if (exist) {
+               while (i < 1000) {
+                       snprintf(unique_name, max_unique_name_length, "%s_%.3d", orig_name, i + 1);
+                       mp_media_info_playlist_is_exist(unique_name, &exist);
+                       if (!exist) {
+                               return 0;
+                       } else {
+                               i++;
+                       }
+               }
+               MP_CHECK_VAL(i<1000, -1);
+       }
+       return 0;
+}
+
+int mp_media_info_playlist_rename(mp_media_info_h playlist, const char *new_name)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(playlist, -1);
+       MP_CHECK_VAL(playlist->h.group, -1);
+       MP_CHECK_VAL(playlist->i.ginfo, -1);
+       MP_CHECK_VAL(new_name, -1);
+       MP_CHECK_VAL(playlist->s.group_type == MP_GROUP_BY_PLAYLIST, -1);
+
+       res = media_playlist_set_name((media_playlist_h)playlist->h.group, new_name);
+       MP_CHECK_VAL(res == 0, res);
+
+       res = media_playlist_update_to_db(playlist->h.group);
+       MP_CHECK_VAL(res == 0, res);
+
+       IF_FREE(playlist->i.ginfo->main_info);
+       playlist->i.ginfo->main_info = g_strdup(new_name);
+
+       return res;
+}
+
+int mp_media_info_playlist_get_play_order(mp_media_info_h playlist, int playlist_member_id, int * play_order)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(playlist, -1);
+       MP_CHECK_VAL(playlist->h.group, -1);
+       MP_CHECK_VAL(playlist->s.group_type == MP_GROUP_BY_PLAYLIST, -1);
+
+       res = media_playlist_get_play_order(playlist->h.group, playlist_member_id, play_order);
+       MP_CHECK_VAL(res == 0, res);
+
+       return res;
+}
+
+int mp_media_info_playlist_set_play_order(mp_media_info_h playlist, int playlist_member_id, int play_order)
+{
+       startfunc;
+       int res = MEDIA_CONTENT_ERROR_NONE;
+
+       MP_CHECK_VAL(playlist, -1);
+       MP_CHECK_VAL(playlist->h.group, -1);
+       MP_CHECK_VAL(playlist->s.group_type == MP_GROUP_BY_PLAYLIST, -1);
+
+       res = media_playlist_set_play_order(playlist->h.group, playlist_member_id, play_order);
+       MP_CHECK_VAL(res == 0, res);
+
+       res = media_playlist_update_to_db(playlist->h.group);
+       MP_CHECK_VAL(res == 0, res);
+
+       return res;
+}
+
+
index af86866..ea164b4 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #include "music.h"
 #include <stdio.h>
 #include <glib.h>
 
 #include "mp-player-debug.h"
 #include "mp-menu.h"
-#include "mp-view-layout.h"
 #include "mp-util.h"
 #include "mp-popup.h"
 #include "mp-play-list.h"
+#include "mp-ug-launch.h"
 #include "mp-item.h"
 #include "mp-player-drm.h"
-#include "mp-playlist-view.h"
 #include "mp-widget.h"
+
+#include "mp-setting-ctrl.h"
+
+#ifndef MP_SOUND_PLAYER
+#include "mp-view-layout.h"
+#include "mp-playlist-view.h"
 #include "mp-common.h"
 #include "mp-view-manager.h"
-#include "mp-setting-ctrl.h"
+#endif
 
 #define MP_MENU_FID "mp_menu_fid"
 #define MP_MENU_PLAY_LIST_FID "mp_menu_playlist_id"
@@ -46,54 +49,46 @@ typedef enum
 } mp_menu_func_type;
 
 
-audio_svc_track_type_e
-mp_menu_get_track_type_by_group(audio_svc_group_type_e group_type)
+mp_track_type_e
+mp_menu_get_track_type_by_group(mp_group_type_e group_type)
 {
-       audio_svc_track_type_e item_type = AUDIO_SVC_TRACK_ALL;
+       mp_track_type_e item_type = MP_TRACK_ALL;
 
-       if (group_type == AUDIO_SVC_GROUP_BY_ALBUM)
-       {
-               item_type = AUDIO_SVC_TRACK_BY_ALBUM;
-       }
-       else if (group_type == AUDIO_SVC_GROUP_BY_ARTIST)
-       {
-               item_type = AUDIO_SVC_TRACK_BY_ARTIST;
-       }
-       else if (group_type == AUDIO_SVC_GROUP_BY_ARTIST_ALBUM)
+       if (group_type == MP_GROUP_BY_ALBUM)
        {
-               item_type = AUDIO_SVC_TRACK_BY_ALBUM;
+               item_type = MP_TRACK_BY_ALBUM;
        }
-       else if (group_type == AUDIO_SVC_GROUP_BY_GENRE)
+       else if (group_type == MP_GROUP_BY_ARTIST)
        {
-               item_type = AUDIO_SVC_TRACK_BY_GENRE;
+               item_type = MP_TRACK_BY_ARTIST;
        }
-       else if (group_type == AUDIO_SVC_GROUP_BY_GENRE_ARTIST)
+       else if (group_type == MP_GROUP_BY_ARTIST_ALBUM)
        {
-               item_type = AUDIO_SVC_TRACK_BY_GENRE;
+               item_type = MP_TRACK_BY_ALBUM;
        }
-       else if (group_type == AUDIO_SVC_GROUP_BY_GENRE_ALBUM)
+       else if (group_type == MP_GROUP_BY_GENRE)
        {
-               item_type = AUDIO_SVC_TRACK_BY_GENRE;
+               item_type = MP_TRACK_BY_GENRE;
        }
-       else if (group_type == AUDIO_SVC_GROUP_BY_GENRE_ARTIST_ALBUM)
+       else if (group_type == MP_GROUP_BY_YEAR)
        {
-               item_type = AUDIO_SVC_TRACK_BY_GENRE;
+               item_type = MP_TRACK_BY_YEAR;
        }
-       else if (group_type == AUDIO_SVC_GROUP_BY_YEAR)
+       else if (group_type == MP_GROUP_BY_COMPOSER)
        {
-               item_type = AUDIO_SVC_TRACK_BY_YEAR;
+               item_type = MP_TRACK_BY_COMPOSER;
        }
-       else if (group_type == AUDIO_SVC_GROUP_BY_COMPOSER)
+       else if (group_type == MP_GROUP_BY_FOLDER)
        {
-               item_type = AUDIO_SVC_TRACK_BY_COMPOSER;
+               item_type = MP_TRACK_BY_FOLDER;
        }
 
        return item_type;
 }
 
-
+#ifndef MP_SOUND_PLAYER
 bool
-_mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, AudioHandleType * svc_handle,
+_mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, mp_media_info_h svc_handle,
                              mp_menu_func_type menu_func)
 {
        startfunc;
@@ -107,63 +102,66 @@ _mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, Audio
        int err = -1;
        int count = 0;
        int index = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        int playlist_item_count = 0;
 
-       AudioHandleType *tracks = NULL;
-       audio_svc_track_type_e item_type = AUDIO_SVC_TRACK_ALL;
+       mp_media_list_h tracks = NULL;
+       mp_track_type_e item_type = MP_TRACK_ALL;
 
        item_type = mp_menu_get_track_type_by_group(layout_data->group_type);
 
        char *name = NULL;
-       int size = 0;
 
-       ret = audio_svc_group_item_get_val(svc_handle, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
+       if ((item_type == MP_TRACK_BY_FOLDER))
+       {
+               ret = mp_media_info_group_get_folder_id(svc_handle, &name);
+       }
+       else
+       {
+               ret = mp_media_info_group_get_main_info(svc_handle, &name);
+       }
 
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, FALSE, "Fail to get value");
+       mp_retvm_if(ret != 0, FALSE, "Fail to get value");
        mp_retvm_if(name == NULL, FALSE, "Fail to get value");
        mp_debug("%s", name);
 
-       audio_svc_count_list_item(ad->media_svc_handle, item_type, name, "", "", "", &count);
-       mp_debug("%d", count);
+       ret = mp_media_info_list_count(item_type, name, NULL, NULL, 0, &count);
+       MP_CHECK_EXCEP(ret == 0);
 
-       ret = audio_svc_list_item_new(&tracks, count);
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, FALSE, "Fail to audio_svc_list_item_new");
-
-       ret = audio_svc_get_list_item(ad->media_svc_handle, item_type, name, NULL, NULL, NULL, 0, count, tracks);
-       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+       ret = mp_media_info_list_create(&tracks, item_type, name, NULL, NULL, 0, 0, count);
+       MP_CHECK_EXCEP(ret == 0);
 
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
        if (menu_func == MP_MENU_FUNC_ADD_TO_LIST)
        {
-               audio_svc_count_playlist_item(ad->media_svc_handle, plst_id, NULL, NULL, &playlist_item_count);
+               mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, plst_id, &playlist_item_count);
                if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
                {
                        return false;
                }
        }
+#endif
 
        for (index = 0; index < count; ++index)
        {
                char *fid = 0;
-               int size = 0;
                char *path = NULL;
+               mp_media_info_h item;
 
-               mp_debug("%d", index);
+               item = mp_media_info_list_nth_item(tracks, index);
+               mp_media_info_get_media_id(item, &fid);
+               mp_media_info_get_file_path(item, &path);
 
-               audio_svc_list_item_get_val(tracks, index, AUDIO_SVC_LIST_ITEM_AUDIO_ID, &fid, &size,
-                                           AUDIO_SVC_LIST_ITEM_PATHNAME, &path, &size, -1);
                if (menu_func == MP_MENU_FUNC_ADD_TO_LIST)
                {
-                       if (playlist_item_count >= 1000)
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
+                       if (playlist_item_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
                        {
-                               return false;
-                       }
-                       err = audio_svc_add_item_to_playlist(ad->media_svc_handle, plst_id, fid);
-                       if (err != AUDIO_SVC_ERROR_NONE)
-                       {
-                               ERROR_TRACE("Error in audio_svc_list_append_item (%d)\n", err);
-                               MP_CHECK_EXCEP(false);
+                               goto mp_exception;
                        }
+#endif
+                       err = mp_media_info_playlist_add_media(plst_id, fid);
+                       MP_CHECK_EXCEP(err == 0);
                        playlist_item_count++;
                }
                else
@@ -175,27 +173,20 @@ _mp_menu_func_by_group_handle(int plst_id, mp_layout_data_t * layout_data, Audio
                        if ((cur_item != NULL) && !g_strcmp0(cur_item->key_id ,fid))
                        {
                                mp_widget_text_popup(layout_data->view_data->ad,
-                                                    GET_STR
-                                                    ("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"));
+                                                    GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"));
                                goto mp_exception;
                        }
 
                        err = remove(path);
-
-                       if (err < 0)
-                       {
-                               ERROR_TRACE("Error in remove (%s)\n", path);
-                               MP_CHECK_EXCEP(false);
-                       }
+                       MP_CHECK_EXCEP(err == 0);
                }
        }
-
-       audio_svc_list_item_free(tracks);
+       mp_media_info_list_destroy(tracks);
 
        return true;
 
       mp_exception:
-       audio_svc_list_item_free(tracks);
+       mp_media_info_list_destroy(tracks);
        return false;
 }
 
@@ -204,12 +195,11 @@ mp_menu_add_to_play_list_cancel_create_cb(void *data, Evas_Object * obj, void *e
 {
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
-       MP_CHECK(ad->library);
 
        mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
 
        Evas_Object *current_navi_bar = NULL;
-       current_navi_bar = ad->library->cur_view;
+       current_navi_bar = ad->naviframe;
        MP_CHECK(current_navi_bar);
 
        view_data_t *view_data = evas_object_data_get(current_navi_bar, "view_data");
@@ -223,12 +213,11 @@ mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *eve
        DEBUG_TRACE_FUNC();
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
-       MP_CHECK(ad->library);
 
        mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
 
        Evas_Object *current_navi_bar = NULL;
-       current_navi_bar = ad->library->cur_view;
+       current_navi_bar = ad->naviframe;
        MP_CHECK(current_navi_bar);
 
        int plst_uid = -1;
@@ -243,7 +232,7 @@ mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *eve
        }
        converted_name = elm_entry_markup_to_utf8(name);
 
-       plst_uid = mp_util_create_playlist(ad, converted_name);
+       plst_uid = mp_util_create_playlist(ad, converted_name, NULL);
        IF_FREE(converted_name);
        if (plst_uid < 0)
                return;
@@ -267,7 +256,7 @@ mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *eve
 
        if (category == MP_LAYOUT_TRACK_LIST)
        {
-               result = mp_util_add_to_playlist_by_key(ad->media_svc_handle, plst_uid, ad->fid);
+               result = mp_util_add_to_playlist_by_key(plst_uid, ad->fid);
        }
        else if (category == MP_LAYOUT_GROUP_LIST)
        {
@@ -285,10 +274,14 @@ mp_menu_add_to_play_list_done_create_cb(void *data, Evas_Object * obj, void *eve
        else
        {
                mp_debug("fail add to play list");
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
                char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
                char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
                mp_util_create_notify(ad, noti_str);
                IF_FREE(noti_str);
+#else
+               mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
+#endif
        }
 
        return;
@@ -307,18 +300,16 @@ _mp_menu_add_playlist_create_select_cb(void *data, Evas_Object * obj, void *even
        MP_CHECK(ad);
        MP_CHECK(ad->library);
 
-       current_navi_bar = ad->library->cur_view;
-       MP_CHECK(current_navi_bar);
+       current_navi_bar = ad->naviframe;
 
        view_data = evas_object_data_get(current_navi_bar, "view_data");
 
-       new_playlist_name = mp_util_get_new_playlist_name(ad->media_svc_handle);
+       new_playlist_name = mp_util_get_new_playlist_name();
        Evas_Object *create_plst_layout = mp_common_create_editfield_layout(current_navi_bar, ad, new_playlist_name);
        IF_FREE(new_playlist_name);
        mp_retm_if(create_plst_layout == NULL, "create_plst_layout is NULL");
 
        mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP);
-       mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_OPT_ADD_PLAYLIST"), ad);
 
        evas_object_show(create_plst_layout);
 
@@ -335,6 +326,9 @@ _mp_menu_add_playlist_create_select_cb(void *data, Evas_Object * obj, void *even
                ad->group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER);
        }
 
+       if (layout_data->genlist)
+               mp_util_reset_genlist_mode_item(layout_data->genlist);
+
        mp_popup_destroy(layout_data->ad);
 
        endfunc;
@@ -346,12 +340,10 @@ _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE_FUNC();
        struct appdata *ad = NULL;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        int playlist_id = -1;
 
-       AudioHandleType *item_handler = (AudioHandleType *) data;
-       AudioHandleType *play_list_handle = NULL;
-
+       mp_media_info_h item_handler = data;
 
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        mp_list_category_t category = MP_LAYOUT_TRACK_LIST;
@@ -369,12 +361,14 @@ _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info)
        }
        MP_CHECK(ad);
 
-       int size = 0;
        char *playlist_name = NULL;
        int item_count = 0;
-       ret = audio_svc_playlist_get_val(item_handler, 0, AUDIO_SVC_PLAYLIST_ID, &playlist_id,
-                                        AUDIO_SVC_PLAYLIST_NAME, &playlist_name, &size, -1);
-       audio_svc_count_playlist_item(ad->media_svc_handle, playlist_id, NULL, NULL, &item_count);
+       ret = mp_media_info_group_get_main_info(item_handler, &playlist_name);
+       ret = mp_media_info_group_get_playlist_id(item_handler, &playlist_id);
+
+       mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, &item_count);
+
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
        if (item_count > MP_PLAYLIST_MAX_ITEM_COUNT)
        {
                char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
@@ -383,20 +377,21 @@ _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info)
                IF_FREE(noti_str);
                goto END;
        }
+#endif
 
-       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
+       mp_retm_if(ret != 0, "Fail to get value");
 
        bool result = false;
 
        if (category == MP_LAYOUT_TRACK_LIST)
        {
                char *fid = (char *)evas_object_data_get(obj, MP_MENU_FID);
-               result = mp_util_add_to_playlist_by_key(ad->media_svc_handle, playlist_id, fid);
+               result = mp_util_add_to_playlist_by_key(playlist_id, fid);
                IF_FREE(fid);
        }
        else if (category == MP_LAYOUT_GROUP_LIST)
        {
-               AudioHandleType *group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER);
+               mp_media_info_h group_item_handler = evas_object_data_get(obj, MP_MENU_GROUP_ITEM_HANDLER);
 
                MP_CHECK(group_item_handler);
 
@@ -416,19 +411,22 @@ _mp_menu_add_playlist_select_cb(void *data, Evas_Object * obj, void *event_info)
        else
        {
                mp_debug("fail add to play list");
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
                char *fmt_str = GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD_MORE_THAN_PD_MUSIC_FILE");
                char *noti_str = g_strdup_printf(fmt_str, MP_PLAYLIST_MAX_ITEM_COUNT);
                mp_util_create_notify(ad, noti_str);
                IF_FREE(noti_str);
+#else
+               mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
+#endif
        }
 
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
       END:
+#endif
 
-       play_list_handle = evas_object_data_get(obj, MP_MENU_POPUP_PLAY_LIST_HANDLER);
-
-       if (play_list_handle)
-               audio_svc_playlist_free(play_list_handle);
-       play_list_handle = NULL;
+       mp_media_list_h list = evas_object_data_get(obj, MP_MENU_POPUP_PLAY_LIST_HANDLER);
+       mp_media_info_group_list_destroy(list);
 
        mp_popup_destroy(ad);
        return;
@@ -440,68 +438,61 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE_FUNC();
 
-       AudioHandleType *handle = (AudioHandleType *) data;
+       mp_media_info_h handle = data;
        MP_CHECK(handle);
 
        struct appdata *ad = NULL;
        char *fid = NULL;
        int ret = 0;
 
-       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       Evas_Object *popup = obj;
+       mp_layout_data_t *layout_data = evas_object_data_get(popup, "layout_data");
        MP_CHECK(layout_data);
        MP_CHECK_LAYOUT_DATA(layout_data);
        ad = layout_data->ad;
        ad->popup_delete = NULL;
 
-       if ((int)event_info == MP_POPUP_YES)
+       mp_evas_object_del(popup);
+       int response = (int)event_info;
+
+       if (response == MP_POPUP_YES)
        {
                bool result = TRUE;
 
                if (layout_data->category == MP_LAYOUT_TRACK_LIST)
                {
-                       fid = mp_util_get_fid_by_handle(layout_data, handle);
-                       if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYLIST)
+                       if (layout_data->track_type == MP_TRACK_BY_PLAYLIST)
                        {
-                               int uid = 0;
-                               audio_svc_playlist_item_get_val(handle, 0, AUDIO_SVC_PLAYLIST_ITEM_UID, &uid, -1);
-
-                               ret = audio_svc_remove_item_from_playlist_by_uid(ad->media_svc_handle, layout_data->playlist_id, uid);
-                               if (ret != AUDIO_SVC_ERROR_NONE)
-                                       result = false;
-                               else
-                                       result = true;
+                               int member_id = 0;
+                               ret = mp_media_info_get_playlist_member_id(handle, &member_id);
+                               mp_media_info_playlist_remove_media(layout_data->playlist_handle, member_id);
                        }
-                       else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_ADDED_TIME)
+                       else if (layout_data->track_type == MP_TRACK_BY_ADDED_TIME)
                        {
-                               ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, AUDIO_SVC_TRACK_DATA_ADDED_TIME, 0, -1);
-                               if (ret != AUDIO_SVC_ERROR_NONE)
-                                       result = false;
-                               else
-                                       result = true;
+                               ret = mp_media_info_set_added_time(handle, 0);
                        }
-                       else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYED_TIME)
+                       else if (layout_data->track_type == MP_TRACK_BY_FAVORITE)
                        {
-                               ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, AUDIO_SVC_TRACK_DATA_PLAYED_TIME, 0. - 1);
-                               if (ret != AUDIO_SVC_ERROR_NONE)
-                                       result = false;
-                               else
-                                       result = true;
+                               ret = mp_media_info_set_favorite(handle, false);
                        }
-                       else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYED_COUNT)
+                       else if (layout_data->track_type == MP_TRACK_BY_PLAYED_TIME)
                        {
-                               ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid, AUDIO_SVC_TRACK_DATA_PLAYED_COUNT, 0, -1);
-                               if (ret != AUDIO_SVC_ERROR_NONE)
-                                       result = false;
-                               else
-                                       result = true;
+                               ret = mp_media_info_set_played_time(handle, 0);
+                       }
+                       else if (layout_data->track_type == MP_TRACK_BY_PLAYED_COUNT)
+                       {
+                               ret = mp_media_info_set_played_count(handle, 0);
                        }
                        else
                        {
+                               fid = mp_util_get_fid_by_handle(layout_data, handle);
                                if (MP_FILE_DELETE_ERR_NONE != mp_util_delete_track(ad, fid, NULL, FALSE))
-                                       result = false;
-                               else
-                                       result = true;
+                                       ret = -1;
                        }
+                       if (ret != 0)
+                               result = false;
+                       else
+                               result = true;
                }
                else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
                {
@@ -510,11 +501,11 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
                else if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
                {
                        int plst_id = 0;
-                       ret = audio_svc_playlist_get_val(handle, 0, AUDIO_SVC_PLAYLIST_ID, &plst_id, -1);
-                       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
+                       ret = mp_media_info_group_get_playlist_id(handle, &plst_id);
+                       mp_retm_if(ret != 0, "Fail to get value");
 
-                       ret = audio_svc_delete_playlist(ad->media_svc_handle, plst_id);
-                       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to delete playlist");
+                       ret = mp_media_info_playlist_delete_from_db(plst_id);
+                       mp_retm_if(ret != 0, "Fail to delete playlist");
                }
 
                if (result)
@@ -526,8 +517,8 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
                                layout_data->item_count--;
 
                                /* update last view when change album track view or artist track view */
-                               if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type
-                                   || AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) {
+                               if (MP_TRACK_BY_ALBUM == layout_data->track_type
+                                   || MP_TRACK_BY_ARTIST == layout_data->track_type) {
                                            layout_data->album_delete_flag = TRUE;
                                            mp_view_manager_update_list_contents(layout_data->view_data, FALSE);
                                            layout_data->album_delete_flag = FALSE;
@@ -538,44 +529,28 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
                                        mp_view_layout_update(layout_data->layout);
                                else
                                {
-                                       if (AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) {
-                                               int index = -1;
-                                               int sub_index = -1;
-                                               bool ret_val = FALSE;
-                                               /* get group index and sub index when the status is artist album */
-                                               ret_val = mp_common_track_get_aa_index(0, layout_data, it, FALSE);
-                                               if (ret_val) {
-                                                       index = layout_data->selected_group_index;
-                                                       sub_index = layout_data->selected_album_sub_index;
+                                       if (MP_TRACK_BY_ARTIST == layout_data->track_type) {
+                                               if(!elm_genlist_item_parent_get(elm_genlist_item_next_get(it))
+                                                       && !elm_genlist_item_parent_get(elm_genlist_item_prev_get(it)))
+                                               {
+                                                       elm_object_item_del(elm_genlist_item_parent_get(it));
                                                }
-                                               DEBUG_TRACE("index=%d, sub_index=%d, ret_val=%d", index, sub_index, ret_val);
-                                               if(ret_val) {
-                                                       --layout_data->aa_item_count[index];
-                                                       if (layout_data->aa_item_count[index] < 1) {
-                                                               /* delete group title if this album have no item */
-                                                               elm_object_item_del(layout_data->aa_group[index]);
-                                                       } else {
-                                                               /* update group title */
-                                                               elm_genlist_item_item_class_update(layout_data->aa_group[index],
-                                                                                                  layout_data->aa_group_itc);
-                                                       }
+                                               else
+                                               {
+                                                       elm_genlist_item_update(elm_genlist_item_parent_get(it));
                                                }
-                                       } else if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) {
+                                       } else if (MP_TRACK_BY_ALBUM == layout_data->track_type) {
                                                /* update group title */
-                                               elm_genlist_item_item_class_update(layout_data->album_group,
-                                                                                  layout_data->album_group_itc);
+                                               elm_genlist_item_update(layout_data->album_group);
                                        }
 
                                        elm_object_item_del(it);
                                        layout_data->is_item_del = true;
+
                                }
                        }
                        MP_CHECK(layout_data->view_data);
-                       if(layout_data->category == MP_LAYOUT_TRACK_LIST
-                               && layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
-                               mp_util_create_notify(layout_data->ad, GET_SYS_STR("IDS_COM_POP_REMOVED"));
-                       else
-                               mp_util_create_notify(layout_data->ad, GET_SYS_STR("IDS_COM_POP_DELETED"));
+                       mp_util_create_notify(layout_data->ad, GET_SYS_STR("IDS_COM_POP_DELETED"));
                }
                else
                        mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"));
@@ -583,6 +558,400 @@ _mp_menu_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
        }
 }
 
+#endif
+
+int
+_mp_menu_set_isf_entry(mp_layout_data_t * layout_data)
+{
+
+       char *init_str = NULL;
+
+       init_str = elm_entry_utf8_to_markup(layout_data->old_name);
+
+
+       if (init_str)
+       {
+               elm_entry_entry_set(layout_data->isf_entry, init_str);
+               g_free(init_str);
+               init_str = NULL;
+       }
+       else
+       {
+               DEBUG_TRACE("+++++++ the init str for entry is empty!");
+               elm_entry_entry_set(layout_data->isf_entry, "");
+       }
+       return 0;
+}
+
+void
+mp_menu_share_list_select_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info);
+
+       if (label)
+       {
+               GString *path = NULL;
+               char *path_name = NULL;
+               char *fmt = NULL;
+
+               if (g_strcmp0(label, BLUETOOTH_SYS) == 0 || g_strcmp0(label, NFC_SYS) == 0)
+                       fmt = "?%s";
+               else if ( !g_strcmp0(label, EMAIL_SYS) ||!g_strcmp0(label, MESSAGE_SYS))
+                       fmt = "\n%s";
+#ifdef MP_FEATURE_WIFI_SHARE
+               else if (g_strcmp0(label, WIFI_SYS) == 0)
+                       fmt = "|%s";
+#endif
+               else
+               {
+                       ERROR_TRACE("not available");
+                       return;
+               }
+
+               mp_retm_if(layout_data->genlist == NULL, "genlist is NULL");
+
+               Elm_Object_Item *first_item = elm_genlist_first_item_get(layout_data->genlist);
+               MP_CHECK(first_item);
+
+               Elm_Object_Item *current_item = NULL;
+               Elm_Object_Item *next_item = NULL;
+               mp_genlist_item_data_t *gl_item = NULL;
+               int i = 0;
+
+               if (layout_data->checked_count < 1)
+               {
+                       ERROR_TRACE("There is no seleted Item");
+                       return;
+               }
+
+               MP_GENLIST_CHECK_FOREACH_SAFE(first_item, current_item, next_item, gl_item)
+               {
+                       if(elm_genlist_item_select_mode_get(current_item) == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+                               continue;
+
+                       if (gl_item->checked)
+                       {
+                               mp_media_info_h item = (gl_item->handle);
+                               MP_CHECK(item);
+
+                               if (item)
+                               {
+
+                                       int ret = 0;
+                                       ret = mp_media_info_get_file_path(item, &path_name);
+                                       if (ret != 0)
+                                       {
+                                               DEBUG_TRACE("Fail to get file path... ");
+                                               continue;
+                                       }
+
+                                       if (path_name)
+                                       {
+                                               if (path == NULL)
+                                               {
+                                                       path = g_string_new(path_name);
+                                               }
+                                               else
+                                               {
+                                                       g_string_append_printf(path, fmt, path_name);
+                                               }
+                                       }
+                                       else
+                                       {
+                                               ERROR_TRACE("path name is NULL");
+                                               continue;
+                                       }
+
+
+                               }
+                               else
+                               {
+                                       ERROR_TRACE("item_data is NULL");
+                                       return;
+                               }
+                               i++;
+                       }
+               }
+
+               if (path && path->str)
+               {
+                       DEBUG_TRACE("path is [%s]", path->str);
+
+                       if (g_strcmp0(label, EMAIL_SYS) == 0)
+                                       mp_ug_email_attatch_file(path->str, layout_data->ad);
+                       else if(g_strcmp0(label, MESSAGE_SYS) == 0)
+                                       mp_ug_message_attatch_file(path->str, layout_data->ad);
+                       else if(g_strcmp0(label, BLUETOOTH_SYS) == 0)
+                               mp_ug_bt_attatch_file(path->str, i, layout_data->ad);
+#ifdef MP_FEATURE_WIFI_SHARE
+                       else if(g_strcmp0(label, WIFI_SYS) == 0)
+                               mp_ug_wifi_attatch_file(path->str, i, layout_data->ad);
+#endif
+                       g_string_free(path, TRUE);
+               }
+               else
+               {
+                       ERROR_TRACE("path is NULL");
+               }
+       }
+
+       mp_popup_destroy(layout_data->ad);
+}
+
+void
+mp_menu_share_select_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       char *path = NULL;      //do not free
+       struct appdata *ad = NULL;
+       music_list_item *item = NULL;
+
+       const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info);
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+
+       if (layout_data)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               mp_media_info_h handle = NULL;
+               handle = data;
+               ad = layout_data->ad;
+               path = mp_util_get_path_by_handle(layout_data, handle);
+               MP_CHECK(path);
+
+               mp_debug("path =%s", path);
+       }
+       else
+       {
+               ad = data;
+               MP_CHECK(ad);
+
+               item = mp_play_list_get_current_item(ad->playing_list);
+               MP_CHECK(item);
+
+               path = item->filename;
+       }
+
+       if (label)
+       {
+               DEBUG_TRACE("%s selected", label);
+
+               if (g_strcmp0(label, BLUETOOTH_SYS) == 0)
+               {
+                       mp_ug_bt_attatch_file(path, 1, ad);
+               }
+               else if (g_strcmp0(label, EMAIL_SYS) == 0)
+               {
+                       mp_ug_email_attatch_file(path, ad);
+               }
+               else if (g_strcmp0(label, MESSAGE_SYS) == 0)
+                       mp_ug_message_attatch_file(path, ad);
+#ifdef MP_FEATURE_WIFI_SHARE
+               else if (g_strcmp0(label, WIFI_SYS) == 0)
+                       mp_ug_wifi_attatch_file(path, 1, ad);
+#endif
+       }
+
+       mp_popup_destroy(ad);
+}
+
+static int
+_mp_menu_set_caller_rington(char *path)
+{
+       int ret = -1;
+       bool is_drm = FALSE;
+       char *prev_ring_tone_path = NULL;
+
+       //drm check..
+       prev_ring_tone_path = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+       if (prev_ring_tone_path && mp_drm_file_right(prev_ring_tone_path))
+       {
+               mp_drm_request_setas_ringtone(prev_ring_tone_path, SETAS_REQUEST_UNREGISTER);
+               free(prev_ring_tone_path);
+       }
+
+       if (mp_drm_file_right(path))
+       {
+               if (!mp_drm_request_setas_ringtone(path, SETAS_REQUEST_CHECK_STATUS))
+                       return -1;
+               is_drm = true;
+       }
+
+       ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, path);
+
+       if (is_drm)
+               mp_drm_request_setas_ringtone(path, SETAS_REQUEST_REGISTER);
+
+       return ret;
+
+}
+
+void
+mp_menu_set_as_select_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       int ret = 0;
+       char *path = NULL;      //do not free
+       struct appdata *ad = NULL;
+       music_list_item *item = NULL;
+
+       const char *label = elm_object_item_data_get((Elm_Object_Item *) event_info);
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+
+       if (layout_data)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               mp_media_info_h handle = NULL;
+               handle = data;
+               ad = layout_data->ad;
+               path = mp_util_get_path_by_handle(layout_data, handle);
+       }
+       else
+       {
+               ad = data;
+               MP_CHECK(ad);
+
+               item = mp_play_list_get_current_item(ad->playing_list);
+               MP_CHECK(item);
+
+               path = item->filename;
+       }
+
+       if (label)
+       {
+               DEBUG_TRACE("%s selected", label);
+               if (g_strcmp0(label, GET_STR(CALLER_RINGTONE)) == 0)
+               {
+                       mp_ug_contact_user_sel(path, ad);
+               }
+               else if (g_strcmp0(label, GET_STR(CALL_RINGTONE)) == 0)
+               {
+                       char *popup_txt = NULL;
+
+                       DEBUG_TRACE("path =%s", path);
+
+                       ret = _mp_menu_set_caller_rington(path);
+
+                       if (!ret)
+                               popup_txt = GET_STR("IDS_MUSIC_POP_SET_AS_CALLER_RINGTONE");
+                       else
+                               popup_txt = GET_STR("IDS_MUSIC_POP_UNABLE_TO_SET_AS_RINGTONE");
+
+                       mp_widget_text_popup(ad, popup_txt);
+
+               }
+       }
+
+       mp_popup_destroy(ad);
+
+       return;
+}
+
+void
+mp_menu_share_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+
+       if (data == NULL)
+               return;
+       struct appdata *ad = NULL;
+
+       Evas_Object *share_popup = NULL;
+       Evas_Object *genlist = NULL;
+
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+
+       char *file_name = NULL;
+
+       if (layout_data)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
+               ad = layout_data->ad;
+
+               mp_media_info_h handle = NULL;
+               handle = data;
+               ad = layout_data->ad;
+               file_name = mp_util_get_path_by_handle(layout_data, handle);
+
+               if (mp_drm_check_foward_lock(file_name))
+               {
+                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"));
+                       return;
+               }
+
+               share_popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SHARE, data, ad);
+               MP_CHECK(share_popup);
+               genlist = evas_object_data_get(share_popup, "genlist");
+               evas_object_data_set(genlist, "layout_data", layout_data);
+
+       }
+       else
+       {
+               ad = data;
+               mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
+               music_list_item *item = mp_play_list_get_current_item(ad->playing_list);
+
+               MP_CHECK(item);
+
+               mp_debug("excuete by list view %s", item->filename);
+
+               if (mp_drm_check_foward_lock(item->filename))
+               {
+                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_SHARE_DRM_FILE"));
+                       return;
+               }
+
+               share_popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SHARE, data, ad);
+               MP_CHECK(share_popup);
+               genlist = evas_object_data_get(share_popup, "genlist");
+       }
+
+       return;
+
+}
+
+void
+mp_menu_set_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+
+       if (data == NULL)
+               return;
+       struct appdata *ad = NULL;
+
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+
+       if (layout_data)
+       {
+               MP_CHECK_LAYOUT_DATA(layout_data);
+               ad = layout_data->ad;
+       }
+       else
+               ad = data;
+
+       mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
+
+       Evas_Object *popup;
+
+       if (layout_data)
+               popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SET_AS, data, ad);
+       else
+               popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME, data, ad);
+
+       if (layout_data)
+       {
+               Evas_Object *genlist = evas_object_data_get(popup, "genlist");
+               evas_object_data_set(genlist, "layout_data", layout_data);
+       }
+
+       return;
+
+}
+
+#ifndef MP_SOUND_PLAYER
 void
 mp_menu_delete_cb(void *data, Evas_Object * obj, void *event_info)
 {
@@ -594,20 +963,21 @@ mp_menu_delete_cb(void *data, Evas_Object * obj, void *event_info)
 
        MP_CHECK(layout_data);
        MP_CHECK_LAYOUT_DATA(layout_data);
-       AudioHandleType *handle = NULL;
-       handle = (AudioHandleType *) data;
+       mp_media_info_h handle = NULL;
+       handle = data;
 
        ad = layout_data->ad;
 
-       Evas_Object *popup = elm_popup_add(ad->win_main);
+       Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, handle, _mp_menu_excute_delete_cb, ad);
        ad->popup_delete = popup;
        evas_object_data_set(popup, "layout_data", layout_data);
 
        evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q"));
-       mp_popup_set_response_cb(popup, _mp_menu_excute_delete_cb, handle);
-       mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_YES"), MP_POPUP_YES);
-       mp_popup_button_set(popup, "button2", GET_SYS_STR("IDS_COM_SK_NO"), MP_POPUP_NO);
+
+       elm_object_text_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q"));
+
+       mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_BODY_DELETE"), MP_POPUP_YES);
+       mp_popup_button_set(popup, MP_POPUP_BTN_2, GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_POPUP_NO);
 
        evas_object_show(popup);
 }
@@ -618,7 +988,7 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE_FUNC();
 
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
 
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        music_list_item *item = NULL;
@@ -627,7 +997,7 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
 
        struct appdata *ad = NULL;
 
-       AudioHandleType *handle = NULL;
+       mp_media_info_h handle = NULL;
 
        Evas_Object *popup = NULL;
 
@@ -651,7 +1021,7 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
        {
                evas_object_data_set(genlist, "layout_data", layout_data);
 
-               handle = (AudioHandleType *) data;
+               handle = data;
 
                if (layout_data->category == MP_LAYOUT_TRACK_LIST)
                {
@@ -659,8 +1029,9 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
                        evas_object_data_set(genlist, MP_MENU_FID, (void *)fid);        //set request fid
                }
                else
-                       evas_object_data_set(genlist, MP_MENU_GROUP_ITEM_HANDLER, (void *)handle);      //set group item handler
-
+               {
+                       evas_object_data_set(genlist, MP_MENU_GROUP_ITEM_HANDLER, handle);      //set group item handler
+               }
                evas_object_data_set(genlist, "layout_data", layout_data);
        }
        else
@@ -677,35 +1048,32 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
        mp_genlist_popup_item_append(popup, GET_STR("IDS_MUSIC_OPT_CREATE_PLAYLIST"), NULL,
                                     _mp_menu_add_playlist_create_select_cb, ad);
 
-       err = audio_svc_count_playlist(ad->media_svc_handle, "", "", &count);
+       err = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
 
-       if ((err != AUDIO_SVC_ERROR_NONE) || (count < 0))
+       if ((err != 0) || (count < 0))
        {
-               ERROR_TRACE("Error in audio_svc_list_get_count (%d)\n", err);
+               ERROR_TRACE("Error in mp_media_info_group_list_count (%d)\n", err);
                return;
        }
 
        if (count)
        {
-               AudioHandleType *playlists = NULL;      //must be free
-               ret = audio_svc_playlist_new(&playlists, count);
-               mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to make new playlist");
-               evas_object_data_set(popup, MP_MENU_POPUP_PLAY_LIST_HANDLER, (void *)playlists);        //set request handle id for support group item
+               mp_media_list_h playlists = NULL;       //must be free
 
-               ret = audio_svc_get_playlist(ad->media_svc_handle, "", "", 0, count, playlists);
-               mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get playlist");
+               ret = mp_media_info_group_list_create(&playlists, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count);
+               mp_retm_if(ret != 0, "Fail to get playlist");
+               evas_object_data_set(popup, MP_MENU_POPUP_PLAY_LIST_HANDLER, (void *)playlists);        //set request handle id for support group item
 
                for (i = 0; i < count; i++)
                {
                        /* it should be released in a proper place */
-                       AudioHandleType *plst = NULL;
+                       mp_media_info_h plst = NULL;
                        char *name = NULL;
-                       int size;
-                       ret = audio_svc_playlist_get_item(playlists, i, &plst);
-                       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get item");
+                       plst = mp_media_info_group_list_nth_item(playlists, i);
+                       mp_retm_if(!plst, "Fail to get item");
 
-                       ret = audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_NAME, &name, &size, -1);
-                       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
+                       ret = mp_media_info_group_get_main_info(plst, &name);
+                       mp_retm_if(ret != 0, "Fail to get value");
 
                        mp_genlist_popup_item_append(popup, name, NULL, _mp_menu_add_playlist_select_cb, (void *)plst);
                }
@@ -720,4 +1088,5 @@ mp_menu_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info)
        mp_evas_object_del(popup);
        return;
 }
+#endif
 
index 1547fe0..abd130c 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
-#include <aul.h>
-#include <utilX.h>
 #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 <mm_sound.h>
 #include "mp-player-drm.h"
 #include "mp-play-view.h"
 #include "mp-item.h"
-#include "mp-common.h"
 #include "mp-play-list.h"
-#include "mp-library.h"
 #include "mp-widget.h"
 #include "mp-app.h"
 #include "mp-streaming-mgr.h"
 #include "mp-util.h"
 #include "mp-player-debug.h"
-#include <pmapi.h>
-
+#include "mp-minicontroller.h"
 #include "mp-play.h"
+#include "mp-setting-ctrl.h"
+
+#ifndef MP_SOUND_PLAYER
+#include "mp-common.h"
+#include "mp-library.h"
+#endif
 
 static bool
 _mp_play_item_set(void *data, char * fid)
@@ -52,42 +52,18 @@ _mp_play_item_set(void *data, char * fid)
        return true;
 }
 
-static Eina_Bool
-_mp_play_set_pos(void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
-       MP_CHECK_FALSE(ad);
-
-       char play_time[16] = { 0, };
-       int pos = mp_player_mgr_get_position();
-       int duration = mp_player_mgr_get_duration();
-       snprintf(play_time, sizeof(play_time), "%" PLAY_TIME_FORMAT, PLAY_TIME_ARGS(pos/1000));
-
-       if(vconf_set_str(MP_EXT_CUR_POS, play_time))
-               WARN_TRACE("fail to set time...");
-       if(duration>0)
-       {
-               if(vconf_set_dbl(MP_EXT_CUR_PROGRESS_POS, pos/(double)duration))
-                       WARN_TRACE("fail to ratio");
-       }
-       else
-               vconf_set_dbl(MP_EXT_CUR_PROGRESS_POS, 0.0);
-
-       return EINA_TRUE;
-}
-
 bool
 mp_play_current_file(void *data)
 {
        startfunc;
        struct appdata *ad = data;
        MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE(ad->player_state == PLAY_STATE_READY);
 
-       if (ad->player_state != PLAY_STATE_READY)
-               return FALSE;
        music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
        MP_CHECK_FALSE(current_item);
 
+       MP_TA_ACUM_ITEM_BEGIN("        mp_player_mgr_play", 0);
        if(!ad->paused_by_user)
        {
                if (!mp_player_mgr_play(ad))
@@ -100,13 +76,35 @@ mp_play_current_file(void *data)
        {
                DEBUG_TRACE("stay in pause state..");
        }
+       MP_TA_ACUM_ITEM_END("        mp_player_mgr_play", 0);
+
+       if(ad->is_focus_out)
+       {
+               if(!ad->win_minicon)
+                       mp_minicontroller_create(ad);
+               else
+                       mp_minicontroller_show(ad);
+       }
+       if (ad->b_minicontroller_show)
+               mp_minicontroller_update(ad);
 
+       MP_TA_ACUM_ITEM_BEGIN("        mp_setting_set_albumart_path", 0);
        mp_setting_set_albumart_path(current_item->albumart);
+       MP_TA_ACUM_ITEM_END("        mp_setting_set_albumart_path", 0);
 
-       if (!mp_item_update_db(ad->media_svc_handle, current_item->key_id))
+       MP_TA_ACUM_ITEM_BEGIN("        mp_item_update_db", 0);
+#ifdef MP_FEATURE_ALLSHARE
+       if (ad->playing_list->list_type != MP_PLST_TYPE_MSS)
        {
-               WARN_TRACE("Error when update db");
+#endif
+               if (!mp_item_update_db(current_item->key_id))
+               {
+                       WARN_TRACE("Error when update db");
+               }
+#ifdef MP_FEATURE_ALLSHARE
        }
+#endif
+       MP_TA_ACUM_ITEM_END("        mp_item_update_db", 0);
 
        return TRUE;
 }
@@ -132,11 +130,14 @@ mp_play_ready(void *data)
        struct appdata *ad = data;
        mp_play_view_update_progressbar(ad);
 
+       MP_TA_ACUM_ITEM_BEGIN("       mp_play_current_file", 0);
        if (!mp_play_current_file(ad))
                return FALSE;
 
+       MP_TA_ACUM_ITEM_END("       mp_play_current_file", 0);
+#ifndef MP_SOUND_PLAYER
        mp_library_now_playing_set(ad);
-
+#endif
        mp_setting_save_now_playing(ad);
 
        music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
@@ -154,10 +155,12 @@ mp_play_new_file_real(void *data, bool check_drm)
        struct appdata *ad = data;
        mp_retvm_if(ad == NULL, FALSE, "appdata is NULL");
 
+       MP_TA_ACUM_ITEM_BEGIN("      mp_player_control_ready_new_file", 0);
        if (!mp_player_control_ready_new_file(ad, check_drm))
        {
                return FALSE;
        }
+       MP_TA_ACUM_ITEM_END("      mp_player_control_ready_new_file", 0);
        return TRUE;
 }
 
@@ -173,7 +176,7 @@ mp_play_item_play(void *data, char *fid)
 
        if (ad->playing_list->current_item)
        {
-               if (g_strcmp0(ad->latest_playing_key_id, fid))
+               if (g_strcmp0(ad->latest_playing_key_id, fid))  //playing a new file
                {
                        mp_debug("current key = %s it->key id = %s\n", ad->latest_playing_key_id, fid);
 
@@ -282,6 +285,10 @@ mp_play_next_file(void *data, bool forced)
 
                if (ad->playing_list->list_type == MP_PLST_TYPE_PATH)
                {
+#ifdef MP_SOUND_PLAYER
+                       if (ad->is_focus_out)
+                               mp_app_exit(ad);
+#endif
                        return;
                }
                else
@@ -308,21 +315,35 @@ mp_play_start(void *data)
 
        if (ad->playing_view)
        {
-               ad->playing_view->flick_direction = 0;
+               ad->playing_view->flick_direction = 0;  //reset flick_direction
        }
 
-       if(!ad->live_pos_timer)
-               ad->live_pos_timer = ecore_timer_add(1, _mp_play_set_pos, ad);
+       music_list_item * item = mp_play_list_get_current_item(ad->playing_list);
+       MP_CHECK(item);
 
        ad->player_state = PLAY_STATE_PLAYING;
+
        vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PLAY);
-       mp_drm_start_consumption(mp_play_list_get_current_item(ad->playing_list)->filename);
-       pm_lock_state(LCD_OFF, STAY_CUR_STATE, 0);
+       mp_util_sleep_lock_set(TRUE);
 
        mp_play_control_visible_set(ad, FALSE);;
+       if(ad->is_focus_out)
+       {
+               if(!ad->win_minicon)
+                       mp_minicontroller_create(ad);
+               else
+                       mp_minicontroller_show(ad);
+       }
+       if (ad->b_minicontroller_show)
+               mp_minicontroller_update(ad);
+
+#ifdef MP_SOUND_PLAYER
+       mp_play_view_progress_timer_thaw(ad);
+#else
        mp_view_manager_thaw_progress_timer(ad);
+#endif
 
-       mp_util_grab_mm_keys(ad);
+       mp_app_grab_mm_keys(ad);
 
        endfunc;
 }
@@ -334,16 +355,22 @@ mp_play_pause(void *data)
        struct appdata *ad = data;
        mp_retm_if(ad == NULL, "appdata is NULL");
 
-       mp_ecore_timer_del(ad->live_pos_timer);
-
        ad->player_state = PLAY_STATE_PAUSED;
-       vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PAUSE);
-       mp_drm_pause_consumption();
-       pm_unlock_state(LCD_OFF, PM_SLEEP_MARGIN);
+
+       if (!ad->paused_by_other_player)
+               vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PAUSE);
+       mp_util_sleep_lock_set(FALSE);
 
        mp_play_control_visible_set(ad, TRUE);
+       if (ad->b_minicontroller_show)
+               mp_minicontroller_update(ad);
+
        mp_play_view_update_progressbar(ad);
+#ifdef MP_SOUND_PLAYER
+       mp_play_view_progress_timer_freeze(ad);
+#else
        mp_view_manager_freeze_progress_timer(ad);
+#endif
        endfunc;
 }
 
@@ -354,18 +381,26 @@ mp_play_stop(void *data)
        struct appdata *ad = data;
        mp_retm_if(ad == NULL, "appdata is NULL");
 
-       mp_ecore_timer_del(ad->live_pos_timer);
-
        ad->player_state = PLAY_STATE_STOP;
        if (!ad->freeze_indicator_icon)
        {
-               vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_STOP);
+               if (!mp_util_is_other_player_playing())
+                       vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_STOP);
+               mp_minicontroller_destroy(ad);
+       }
+       else
+       {
+               if (ad->b_minicontroller_show)
+                       mp_minicontroller_update(ad);
        }
-       vconf_set_dbl(MP_EXT_CUR_PROGRESS_POS, 0.0);
-       mp_drm_stop_consumption();
-       mp_drm_set_consumption(FALSE);
-       pm_unlock_state(LCD_OFF, PM_SLEEP_MARGIN);
 
+       mp_util_sleep_lock_set(FALSE);
+
+#ifdef MP_SOUND_PLAYER
+       ad->music_pos = 0;
+       mp_play_view_update_progressbar(ad);
+       mp_play_view_progress_timer_freeze(ad);
+#else
        if (mp_view_manager_is_play_view(ad))
        {
                ad->music_pos = 0;
@@ -373,6 +408,7 @@ mp_play_stop(void *data)
        }
        else
                mp_view_manager_freeze_progress_timer(ad);
+#endif
        mp_play_control_visible_set(ad, TRUE);
 
        endfunc;
@@ -385,18 +421,29 @@ mp_play_resume(void *data)
        struct appdata *ad = data;
        mp_retm_if(ad == NULL, "appdata is NULL");
 
-       if(!ad->live_pos_timer)
-               ad->live_pos_timer = ecore_timer_add(1, _mp_play_set_pos, ad);
-
        ad->player_state = PLAY_STATE_PLAYING;
+
        vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_PLAY);
-       mp_drm_resume_consumption();
-       pm_lock_state(LCD_OFF, STAY_CUR_STATE, 0);
+       mp_util_sleep_lock_set(TRUE);
 
        mp_play_control_visible_set(ad, FALSE);
+       if(ad->is_focus_out)
+       {
+               if(!ad->win_minicon)
+                       mp_minicontroller_create(ad);
+               else
+                       mp_minicontroller_show(ad);
+       }
+       if (ad->b_minicontroller_show)
+               mp_minicontroller_update(ad);
 
+#ifdef MP_SOUND_PLAYER
+       mp_play_view_progress_timer_thaw(ad);
+#else
        mp_view_manager_thaw_progress_timer(ad);
-       mp_util_grab_mm_keys(ad);
+#endif
+       mp_app_grab_mm_keys(ad);
+
        endfunc;
 }
 
@@ -431,9 +478,10 @@ mp_play_stop_and_updateview(void *data, bool mmc_removed)
        }
 
        mp_play_list_clear_play_list(&ad->playing_list);
-
+#ifndef MP_SOUND_PLAYER
        mp_library_now_playing_hide(ad);
        mp_library_update_view(ad);
+#endif
 
        return;
 }
diff --git a/src/common/mp-ta.c b/src/common/mp-ta.c
new file mode 100755 (executable)
index 0000000..c223760
--- /dev/null
@@ -0,0 +1,590 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <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);
+}
+
+#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..dee1ca0
--- /dev/null
@@ -0,0 +1,451 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <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"
+
+#ifdef MP_SOUND_PLAYER
+#include "sp-view-manager.h"
+#else
+#include "mp-common.h"
+#include "mp-group-view.h"
+#include "mp-view-manager.h"
+#endif
+
+#define UG_EMAIL_NAME "email-composer-efl"
+#define UG_BT_NAME "setting-bluetooth-efl"
+#define UG_MUSIC_INFO "music-info-efl"
+#define UG_MSG_NAME "msg-composer-efl"
+#ifdef MP_FEATURE_WIFI_SHARE
+#define UG_FTM_NAME "fileshare-efl"
+#endif
+#define UG_MUSIC_SETTINGS      "setting-music-player-efl"
+
+#define MP_UG_INFO_PATH "path"
+#define MP_UG_INFO_ALBUMART "albumart"
+#define MP_UG_INFO_ARTIST "artist"
+#define MP_UG_INFO_ID "id"
+#define MP_UG_INFO_DESTROY "destroy"
+#define MP_UG_INFO_BACK "back"
+#define MP_UG_INFO_LOAD "load"
+#define MP_UG_INFO_ALBUMART_CLICKED "albumart_clicked"
+#define MP_UG_INFO_MEDIA_SVC_HANDLE    "media_service_handle"
+
+/* for contact ug */
+#define CT_UG_REQUEST_SAVE_RINGTONE 42
+#define CT_UG_BUNDLE_TYPE "type"
+#define CT_UG_BUNDLE_PATH "ct_path"
+#define UG_CONTACTS_LIST "contacts-list-efl"
+
+static void
+_mp_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       startfunc;
+       Evas_Object *base, *win;
+
+       MP_CHECK(priv);
+       MP_CHECK(ug);
+
+       base = ug_get_layout(ug);
+       if (!base)
+               return;
+
+       win = ug_get_window();
+
+       switch (mode)
+       {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(win, base);
+               evas_object_show(base);
+               break;
+       default:
+               break;
+       }
+
+       endfunc;
+}
+
+
+static void
+_mp_ug_destroy(struct appdata *ad)
+{
+       startfunc;
+
+       if (ad->ug) {
+               ug_destroy(ad->ug);
+               ad->ug = NULL;
+       }
+}
+
+static void
+_mp_ug_destroy_cb(ui_gadget_h ug, void *priv)
+{
+       startfunc;
+       if (!ug || !priv)
+               return;
+
+       struct appdata *ad = priv;
+
+       _mp_ug_destroy(ad);
+       return;
+}
+
+static ui_gadget_h
+_mp_ug_create_ug(struct appdata *ad, ui_gadget_h parent, const char *name, enum ug_mode mode, service_h  service,
+                struct ug_cbs *cbs)
+{
+       startfunc;
+       MP_CHECK_NULL(ad);
+
+       ui_gadget_h ug = NULL;
+
+       ug = ug_create(parent, name, mode, service, cbs);
+
+       if (!ug)
+       {
+               ERROR_TRACE("unable to create ug %s", name);
+               mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_BODY_APPLICATION_NOT_INSTALLED"));
+       }
+       endfunc;
+       return ug;
+}
+
+int
+mp_ug_email_attatch_file(const char *filepath, void *user_data)
+{
+       startfunc;
+       struct appdata *ad = NULL;
+       service_h service = NULL;
+       struct ug_cbs cbs = { 0, };
+       int option = 0;
+
+       mp_retvm_if(filepath == NULL, -1, "file path is NULL");
+       mp_retvm_if(user_data == NULL, -1, "appdata is NULL");
+
+       ad = (struct appdata *)user_data;
+       MP_CHECK_VAL(ad, -1);
+
+       if (ad->ug)
+       {
+               ERROR_TRACE("Destory previous ui-gadget first !!!!");
+               return -1;
+       }
+       option = UG_OPT_INDICATOR_ENABLE;
+
+       UG_INIT_EFL(ad->win_main, option);
+
+       if(service_create(&service) != SERVICE_ERROR_NONE)
+       {
+               ERROR_TRACE("Error: service_create");
+               return -1;
+       }
+
+       service_add_extra_data(service, "RUN_TYPE", "5");
+       service_add_extra_data(service, "ATTACHMENT", filepath);
+
+       cbs.priv = user_data;
+       cbs.layout_cb = _mp_ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = _mp_ug_destroy_cb;
+
+
+       ad->ug = _mp_ug_create_ug(ad, NULL, UG_EMAIL_NAME, UG_MODE_FULLVIEW, service, &cbs);
+
+       service_destroy(service);
+       endfunc;
+       return 0;
+}
+
+int
+mp_ug_message_attatch_file(const char *filepath, void *user_data)
+{
+       startfunc;
+       struct appdata *ad = NULL;
+       service_h service = NULL;
+       struct ug_cbs cbs = { 0, };
+       int option = 0;
+
+       mp_retvm_if(filepath == NULL, -1, "file path is NULL");
+       mp_retvm_if(user_data == NULL, -1, "appdata is NULL");
+
+       ad = (struct appdata *)user_data;
+       MP_CHECK_VAL(ad, -1);
+
+       if (ad->ug)
+       {
+               ERROR_TRACE("Destory previous ui-gadget first !!!!");
+               return -1;
+       }
+       option = UG_OPT_INDICATOR_ENABLE;
+
+       UG_INIT_EFL(ad->win_main, option);
+
+       if(service_create(&service) != SERVICE_ERROR_NONE)
+       {
+               ERROR_TRACE("Error: service_create");
+               return -1;
+       }
+       service_add_extra_data(service, "ATTACHFILE", filepath);
+
+       cbs.priv = user_data;
+       cbs.layout_cb = _mp_ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = _mp_ug_destroy_cb;
+
+       ad->ug = _mp_ug_create_ug(ad, NULL, UG_MSG_NAME, UG_MODE_FULLVIEW, service, &cbs);
+       service_destroy(service);
+       return 0;
+}
+
+int
+mp_ug_bt_attatch_file(const char *filepath, int count, void *user_data)
+{
+       startfunc;
+       struct appdata *ad = NULL;
+       service_h service = NULL;
+       struct ug_cbs cbs = { 0, };
+       int option = 0;
+       char *file_count = NULL;
+
+       mp_retvm_if(filepath == NULL, -1, "file path is NULL");
+       mp_retvm_if(user_data == NULL, -1, "appdata is NULL");
+
+       ad = user_data;
+       if (ad->ug)
+       {
+               ERROR_TRACE("Destory previous ui-gadget first !!!!");
+               return -1;
+       }
+
+       option = UG_OPT_INDICATOR_ENABLE;
+
+       UG_INIT_EFL(ad->win_main, option);
+
+       file_count = g_strdup_printf("%d", count);
+
+       if(service_create(&service) != SERVICE_ERROR_NONE)
+       {
+               ERROR_TRACE("Error: service_create");
+               return -1;
+       }
+       service_add_extra_data(service, "launch-type", "send");
+       service_add_extra_data(service, "filecount", file_count);
+       service_add_extra_data(service, "files", filepath);
+
+       cbs.priv = user_data;
+       cbs.layout_cb = _mp_ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = _mp_ug_destroy_cb;
+
+       ad->ug = _mp_ug_create_ug(ad, NULL, UG_BT_NAME, UG_MODE_FULLVIEW, service, &cbs);
+
+       service_destroy(service);
+       IF_FREE(file_count);
+
+       return 0;
+}
+#ifdef MP_FEATURE_WIFI_SHARE
+int
+mp_ug_wifi_attatch_file(const char *filepath, int count, void *user_data)
+{
+       startfunc;
+       struct appdata *ad = NULL;
+       service_h service = NULL;
+       struct ug_cbs cbs = { 0, };
+       int option = 0;
+       char *file_count = NULL;
+
+       mp_retvm_if(filepath == NULL, -1, "file path is NULL");
+       mp_retvm_if(user_data == NULL, -1, "appdata is NULL");
+
+       ad = user_data;
+       if (ad->ug)
+       {
+               ERROR_TRACE("Destory previous ui-gadget first !!!!");
+               return -1;
+       }
+       option = UG_OPT_INDICATOR_ENABLE;
+       UG_INIT_EFL(ad->win_main, option);
+       file_count = g_strdup_printf("%d", count);
+       if(service_create(&service) != SERVICE_ERROR_NONE)
+       {
+               ERROR_TRACE("Error: service_create");
+               return -1;
+       }
+       service_add_extra_data(service, "filecount", file_count);
+       service_add_extra_data(service, "files", filepath);
+       cbs.priv = user_data;
+       cbs.layout_cb = _mp_ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = _mp_ug_destroy_cb;
+       ad->ug = _mp_ug_create_ug(ad, NULL, UG_FTM_NAME, UG_MODE_FULLVIEW, service, &cbs);
+       service_destroy(service);
+       IF_FREE(file_count);
+       return 0;
+}
+#endif
+
+int
+mp_ug_contact_user_sel(const char *filepath, void *user_data)
+{
+       startfunc;
+       struct appdata *ad = NULL;
+       service_h service = NULL;
+       struct ug_cbs cbs = { 0, };
+       int option = 0;
+
+       mp_retvm_if(filepath == NULL, -1, "file path is NULL");
+       mp_retvm_if(user_data == NULL, -1, "appdata is NULL");
+       ad = user_data;
+
+       if (ad->ug)
+       {
+               ERROR_TRACE("Destory previous ui-gadget first !!!!");
+               return -1;
+       }
+
+       option = UG_OPT_INDICATOR_ENABLE;
+
+       UG_INIT_EFL(ad->win_main, option);
+
+       if(service_create(&service) != SERVICE_ERROR_NONE)
+       {
+               ERROR_TRACE("Error: service_create");
+               return -1;
+       }
+
+       char buf[16];
+
+       snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_SAVE_RINGTONE);
+       service_add_extra_data(service, CT_UG_BUNDLE_TYPE, buf);
+       service_add_extra_data(service, CT_UG_BUNDLE_PATH, filepath);
+
+       cbs.priv = ad;
+       cbs.layout_cb = _mp_ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = _mp_ug_destroy_cb;
+
+       ad->ug = _mp_ug_create_ug(ad, NULL, UG_CONTACTS_LIST, UG_MODE_FULLVIEW, service, &cbs);
+
+       service_destroy(service);
+
+       return 0;
+}
+
+
+void
+mp_ug_send_message(struct appdata *ad, mp_ug_message_t message)
+{
+       startfunc;
+       ui_gadget_h ug = NULL;
+       char *id = NULL;
+       MP_CHECK(ad);
+
+       service_h service = NULL;
+
+       if(service_create(&service) != SERVICE_ERROR_NONE)
+       {
+               ERROR_TRACE("Error: service_create");
+               return;
+       }
+       MP_CHECK(service);
+
+       switch(message)
+       {
+       case MP_UG_MESSAGE_DEL:
+               ug = ad->info_ug;
+               service_add_extra_data(service, MP_UG_INFO_DESTROY, MP_UG_INFO_DESTROY);
+               break;
+       case MP_UG_MESSAGE_BACK:
+               ug = ad->info_ug;
+               service_add_extra_data(service, MP_UG_INFO_BACK, MP_UG_INFO_BACK);
+               break;
+       case MP_UG_MESSAGE_LOAD:
+       {
+               ug = ad->info_ug;
+               service_add_extra_data(service, MP_UG_INFO_LOAD, MP_UG_INFO_LOAD);
+               music_list_item *item = mp_play_list_get_current_item(ad->playing_list);
+               MP_CHECK_EXCEP(item);
+
+               service_add_extra_data(service, MP_UG_INFO_PATH, item->filename);
+               service_add_extra_data(service, MP_UG_INFO_ALBUMART, item->albumart);
+               service_add_extra_data(service, MP_UG_INFO_ARTIST, item->artist);
+
+               id = g_strdup(item->key_id);
+               MP_CHECK_EXCEP(id);
+               service_add_extra_data(service, MP_UG_INFO_ID, id);
+               break;
+       }
+       default:
+               service_destroy(service);
+               return;
+       }
+       ug_send_message(ug, service);
+
+       mp_exception:
+       if(service)
+               service_destroy(service);
+       IF_FREE(id);
+}
+
+void
+mp_ug_destory_all(struct appdata *ad)
+{
+       startfunc;
+       // ad->info_ug should not be destoryed!!
+       MP_CHECK(ad);
+       ug_destroy(ad->ug);
+       ad->ug = NULL;
+}
+
+bool
+mp_ug_active(struct appdata *ad)
+{
+       startfunc;
+       MP_CHECK_FALSE(ad);
+
+       if (ad->ug)
+       {
+               return true;
+       }
+       else
+       {
+               return false;
+       }
+}
+
+
index b4da6bd..2b2cb8e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  */
 
 
-
 #include "music.h"
 #include "mp-util.h"
 #include "mp-file-tag-info.h"
 #include "mp-play-list.h"
+#include "mp-ug-launch.h"
 #include "mp-widget.h"
+#include <app.h>
+#include <haptic.h>
+#include <sound_manager.h>
+#include <player.h>
+#include <power.h>
+#ifdef MP_SOUND_PLAYER
+#include "sp-view-manager.h"
+#include "mp-library.h"
+#else
 #include "mp-common.h"
 #include "mp-library.h"
-#include <bundle.h>
-#include <aul.h>
-#include <appsvc.h>
-#include <utilX.h>
-#include <devman_haptic.h>
-#include <svi.h>
-#include <mm_sound.h>
+#endif
+
+#define SINGLE_BYTE_MAX 0x7F
+
+struct index_s
+{
+       const char *index;
+       unsigned short start;
+       unsigned short end;
+};
+
+static struct index_s multi_index[] = {
+       {"\xE3\x84\xB1", 0xAC00, 0xB098},       /* Kiyeok + A */
+       {"\xE3\x84\xB4", 0xB098, 0xB2E4},       /* Nieun + A */
+       {"\xE3\x84\xB7", 0xB2E4, 0xB77C},
+       {"\xE3\x84\xB9", 0xB77C, 0xB9C8},
+       {"\xE3\x85\x81", 0xB9C8, 0xBC14},
+       {"\xE3\x85\x82", 0xBC14, 0xC0AC},
+       {"\xE3\x85\x85", 0xC0AC, 0xC544},
+       {"\xE3\x85\x87", 0xC544, 0xC790},
+       {"\xE3\x85\x88", 0xC790, 0xCC28},
+       {"\xE3\x85\x8A", 0xCC28, 0xCE74},
+       {"\xE3\x85\x8B", 0xCE74, 0xD0C0},
+       {"\xE3\x85\x8C", 0xD0C0, 0xD30C},
+       {"\xE3\x85\x8D", 0xD30C, 0xD558},
+       {"\xE3\x85\x8E", 0xD558, 0xD7A4},       /* Hieuh + A */
+
+       {"\xE3\x84\xB1", 0x3131, 0x3134},       /* Kiyeok */
+       {"\xE3\x84\xB4", 0x3134, 0x3137},       /* Nieun */
+       {"\xE3\x84\xB7", 0x3137, 0x3139},
+       {"\xE3\x84\xB9", 0x3139, 0x3141},
+       {"\xE3\x85\x81", 0x3141, 0x3142},
+       {"\xE3\x85\x82", 0x3142, 0x3145},
+       {"\xE3\x85\x85", 0x3145, 0x3147},
+       {"\xE3\x85\x87", 0x3147, 0x3148},
+       {"\xE3\x85\x88", 0x3148, 0x314A},
+       {"\xE3\x85\x8A", 0x314A, 0x314B},
+       {"\xE3\x85\x8B", 0x314B, 0x314C},
+       {"\xE3\x85\x8C", 0x314C, 0x314D},
+       {"\xE3\x85\x8D", 0x314D, 0x314E},
+       {"\xE3\x85\x8E", 0x314E, 0x314F},       /* Hieuh */
+};
+
+static char *single_upper_index[] = {
+       "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
+       "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
+};
+
+static char *single_lower_index[] = {
+       "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
+       "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
+};
+
+
+static char *single_numeric_index[] = {
+       "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "."
+};
+
+static const char *kor_sec[] = {
+       "\xe3\x85\x8f",         /* A */
+       "\xe3\x85\x90",         /* AE */
+       "\xe3\x85\x91",         /* YA */
+       "\xe3\x85\x92",
+       "\xe3\x85\x93",
+       "\xe3\x85\x94",
+       "\xe3\x85\x95",
+       "\xe3\x85\x96",
+       "\xe3\x85\x97",
+       "\xe3\x85\x98",
+       "\xe3\x85\x99",
+       "\xe3\x85\x9a",
+       "\xe3\x85\x9b",
+       "\xe3\x85\x9c",
+       "\xe3\x85\x9d",
+       "\xe3\x85\x9e",
+       "\xe3\x85\x9f",
+       "\xe3\x85\xa0",
+       "\xe3\x85\xa1",
+       "\xe3\x85\xa2",
+       "\xe3\x85\xa3",
+};
+
+static unsigned char mask_len[] = {
+       0x80, /* 1000 0000 */ 0x00,     /* 0xxx xxxx */
+       0xE0, /* 1110 0000 */ 0xC0,     /* 110x xxxx */
+       0xF0, /* 1111 0000 */ 0xE0,     /* 1110 xxxx */
+       0xF8, /* 1111 1000 */ 0xF0,     /* 1111 0xxx */
+       0xFC, /* 1111 1100 */ 0xF8,     /* 1111 10xx */
+       0xFE, /* 1111 1110 */ 0xFC,     /* 1111 110x */
+};
+
+static int
+_mp_util_get_len(const char *p)
+{
+       int i, r = -1;
+       unsigned char c;
+
+       if (p)
+       {
+               c = *p;
+               for (i = 0; i < sizeof(mask_len) / sizeof(char); i = i + 2)
+               {
+                       if ((c & mask_len[i]) == mask_len[i + 1])
+                       {
+                               r = (i >> 1) + 1;
+                               break;
+                       }
+               }
+       }
+
+       return r;
+}
+
+static unsigned short
+_mp_util_utf8_to_ucs2(const char *p)
+{
+       unsigned short r = 0;
+       int len;
+
+       len = _mp_util_get_len(p);
+       if (len == -1 || len > 3)
+       {
+               return r;
+       }
+
+       switch (len)
+       {
+       case 1:
+               {
+                       r = *p & 0x7F;
+                       break;
+               }
+       case 2:
+               {
+                       r = *p & 0x1F;
+                       break;
+               }
+       case 3:
+               {
+                       r = *p & 0x0F;
+                       break;
+               }
+       default:
+               {
+                       break;
+               }
+       }
+
+       while (len > 1)
+       {
+               r = r << 6;
+               p++;
+               r |= *p & 0x3F;
+               len--;
+       }
+
+       return r;
+}
+
+static const char *
+_mp_util_get_single(const char *p)
+{
+       int c = (int)*p;
+
+       if (islower(c) != 0)
+       {
+               return single_lower_index[c - 'a'];
+       }
+       else if (isupper(c) != 0)
+       {
+               return single_upper_index[c - 'A'];
+       }
+       else if (48 <= c && 57 >= c)
+       {
+               return single_numeric_index[c - '0'];
+       }
+       else
+       {
+               return single_numeric_index[10];
+       }
+
+       return NULL;
+}
+
+static const char *
+_mp_util_get_multi(unsigned short u)
+{
+       int i;
+
+       for (i = 0; i < sizeof(multi_index) / sizeof(struct index_s); i++)
+       {
+               if (u >= multi_index[i].start && u < multi_index[i].end)
+               {
+                       return multi_index[i].index;
+               }
+       }
+       return NULL;
+}
+
+static char *
+_mp_util_get_next_char(const char *p)
+{
+       int n;
+
+       MP_CHECK_NULL(p);
+
+       n = _mp_util_get_len(p);
+       if (n == -1)
+       {
+               return NULL;
+       }
+
+       if (strlen(p) < n)
+       {
+               return NULL;
+       }
+
+       DEBUG_TRACE("%s", &p[n]);
+
+       return (char *)&p[n];
+}
+
+
+static const char *
+_mp_util_get_second_kor(unsigned short u)
+{
+       unsigned short t;
+
+       t = u - 0xAC00;
+       t = (t / 28) % 21;
+
+       return kor_sec[t];
+}
 
 void
 mp_util_format_duration(char *time, int ms)
@@ -40,24 +275,61 @@ mp_util_format_duration(char *time, int ms)
        if(min >= 60)
        {
                int hour = min / 60;
-               snprintf(time, 15, "%02u:%02u:%02u", hour, min % 60, sec % 60);
+               snprintf(time, TIME_FORMAT_LEN, "%02u:%02u:%02u", hour, min % 60, sec % 60);
        }
        else
-               snprintf(time, 15, "%02u:%02u", min, sec % 60);
+               snprintf(time, TIME_FORMAT_LEN, "%02u:%02u", min, sec % 60);
 }
 
-bool
-mp_util_add_to_playlist_by_key(MediaSvcHandle *handle, int plst_id, char *key_id)
+const char *
+mp_util_get_index(const char *p)
+{
+       if (p == NULL)
+       {
+               return NULL;
+       }
+
+       if ((unsigned char)*p < SINGLE_BYTE_MAX)
+       {
+               return _mp_util_get_single(p);
+       }
+
+       return _mp_util_get_multi(_mp_util_utf8_to_ucs2(p));
+}
+
+const char *
+mp_util_get_second_index(const char *p)
 {
-       //startfunc;
-       MP_CHECK_FALSE(handle);
+       unsigned short u2;
+
+       if (p == NULL)
+       {
+               return NULL;
+       }
+
+       if ((unsigned char)*p < SINGLE_BYTE_MAX)
+       {
+               return mp_util_get_index(_mp_util_get_next_char(p));
+       }
+
+       u2 = _mp_util_utf8_to_ucs2(p);
+       if (u2 >= 0xAC00 && u2 < 0xD7A4)
+       {
+               return _mp_util_get_second_kor(u2);
+       }
 
+       return mp_util_get_index(_mp_util_get_next_char(p));
+}
+
+bool
+mp_util_add_to_playlist_by_key(int playlist_id, char *key_id)
+{
        int err;
        {
-               err = audio_svc_add_item_to_playlist(handle, plst_id, key_id);
-               if (err != AUDIO_SVC_ERROR_NONE)
+               err = mp_media_info_playlist_add_media(playlist_id, key_id);
+               if (err != 0)
                {
-                       ERROR_TRACE("Error in audio_svc_list_append_item (%d)\n", err);
+                       ERROR_TRACE("Error in mp_media_info_playlist_add_media (%d)\n", err);
                        return FALSE;
                }
        }
@@ -67,6 +339,8 @@ mp_util_add_to_playlist_by_key(MediaSvcHandle *handle, int plst_id, char *key_id
 Evas_Object *
 mp_util_create_thumb_icon(Evas_Object * obj, const char *path, int w, int h)
 {
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+
        Evas_Object *thumbnail = elm_bg_add(obj);
        elm_bg_load_size_set(thumbnail, w, h);
 
@@ -78,10 +352,19 @@ mp_util_create_thumb_icon(Evas_Object * obj, const char *path, int w, int h)
        }
        else
        {
-               elm_bg_file_set(thumbnail, DEFAULT_THUMBNAIL, NULL);
+               if (layout_data->category == MP_LAYOUT_GROUP_LIST
+                   && layout_data->view_data->view_type == MP_VIEW_TYPE_FOLDER)
+               {
+                       elm_bg_file_set(thumbnail, DEFAULT_THUMBNAIL_FOLDER, NULL);
+               }
+               else
+               {
+                       elm_bg_file_set(thumbnail, DEFAULT_THUMBNAIL, NULL);
+               }
        }
 
        evas_object_size_hint_aspect_set(thumbnail, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+       //evas_object_show(thumbnail);
        return thumbnail;
 }
 
@@ -103,8 +386,12 @@ mp_util_create_selectioninfo_with_count(void *data, int count)
        Evas_Object *notify_layout = NULL;
 
        MP_CHECK(ad);
-       MP_CHECK(ad->library);
-
+       Evas_Object *parent = NULL;
+#ifdef MP_SOUND_PLAYER
+       parent = sp_view_mgr_get_naviframe(ad->view_mgr);
+#else
+       parent = ad->naviframe;
+#endif
        if (ad->notify != NULL)
        {
                mp_evas_object_del(ad->notify);
@@ -120,11 +407,11 @@ mp_util_create_selectioninfo_with_count(void *data, int count)
 
        if (count > 0)
        {
-               notify = elm_notify_add(ad->library->cur_view);
+               notify = elm_notify_add(parent);
                elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
 
-               notify_layout = elm_layout_add(ad->library->cur_view);
-               elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "music/vertical/bottom_64");
+               notify_layout = elm_layout_add(parent);
+               elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64");
                evas_object_size_hint_weight_set(notify_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
                evas_object_size_hint_align_set(notify_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
                elm_object_content_set(notify, notify_layout);
@@ -152,7 +439,13 @@ mp_util_create_notify(void *data, const char *noti_msg)
        Evas_Object *notify_layout = NULL;
 
        MP_CHECK(ad);
-       MP_CHECK(ad->library);
+       Evas_Object *parent = NULL;
+#ifdef MP_SOUND_PLAYER
+       parent = sp_view_mgr_get_naviframe(ad->view_mgr);
+#else
+       MP_CHECK(ad->naviframe);
+       parent = ad->naviframe;
+#endif
 
        if (ad->notify != NULL)
        {
@@ -167,11 +460,18 @@ mp_util_create_notify(void *data, const char *noti_msg)
        ad->notify = NULL;
        ad->notify_layout = NULL;
 
-       notify = elm_notify_add(ad->library->cur_view);
+       {
+               notify = elm_notify_add(parent);
+               notify_layout = elm_layout_add(parent);
+
+               if(ad->win_angle == 90 || ad->win_angle == -90)
+                       elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "horizontal/bottom_64");
+               else
+                       elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64");
+       }
+
        elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
 
-       notify_layout = elm_layout_add(ad->library->cur_view);
-       elm_layout_theme_set(notify_layout, "standard", "selectioninfo", "vertical/bottom_64");
        evas_object_size_hint_weight_set(notify_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        evas_object_size_hint_align_set(notify_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
        elm_object_content_set(notify, notify_layout);
@@ -187,71 +487,22 @@ mp_util_create_notify(void *data, const char *noti_msg)
 
 }
 
-char *
-mp_util_get_playlist_thumbpath(MediaSvcHandle *handle, AudioHandleType * plst)
+int
+mp_util_share_via_email(const char *formed_path, void *data)
 {
-       MP_CHECK_NULL(handle);
-
-       char *thumbpath = NULL;
-       int ret = AUDIO_SVC_ERROR_NONE;
-       int plst_id = -1;
-
-       mp_retvm_if(!plst, NULL, "plst is NULL!!");
-
-       ret = audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_ID, &plst_id, -1);
-       if (ret != AUDIO_SVC_ERROR_NONE)
-       {
-               DEBUG_TRACE("Fail to get playlist id\n");
-               return NULL;
-       }
-
-       AudioHandleType *playlists = NULL;
-       ret = audio_svc_playlist_item_new(&playlists, 1);
-       if (ret != AUDIO_SVC_ERROR_NONE)
-       {
-               DEBUG_TRACE("Fail to create structure\n");
-               return NULL;
-       }
-
-       ret = audio_svc_get_playlist_item(handle, plst_id, "", "", 0, 1, playlists);
-       if (ret != AUDIO_SVC_ERROR_NONE)
-       {
-               DEBUG_TRACE("Fail to get items\n");
-               audio_svc_playlist_item_free(playlists);
-               return NULL;
-       }
-       int size = -1;
-       ret = audio_svc_playlist_item_get_val(playlists, 0, AUDIO_SVC_PLAYLIST_ITEM_THUMBNAIL_PATH, &thumbpath, &size,
-                                             -1);
-       if (ret != AUDIO_SVC_ERROR_NONE)
-       {
-               audio_svc_playlist_item_free(playlists);
-               DEBUG_TRACE("Fail to get value\n");
-               return NULL;
-       }
-
-       ret = audio_svc_playlist_item_free(playlists);
-       if (ret != AUDIO_SVC_ERROR_NONE)
-       {
-               DEBUG_TRACE("Fail to free search structure\n");
-               return thumbpath;
-       }
-
-       if (!thumbpath)
-               thumbpath = MP_CTRBAR_ICON_PLAYLIST;
+       if (mp_ug_email_attatch_file(formed_path, data))
+               return -1;
 
-       return thumbpath;
+       return 0;
 }
 
 char *
-mp_util_get_new_playlist_name(MediaSvcHandle *handle)
+mp_util_get_new_playlist_name(void)
 {
-       MP_CHECK_NULL(handle);
-
-       char unique_name[AUDIO_SVC_PLAYLIST_NAME_SIZE] = "\0";
+       char unique_name[MP_PLAYLIST_NAME_SIZE] = "\0";
        int ret = 0;
-       ret = audio_svc_get_unique_playlist_name(handle, "My playlist", unique_name, AUDIO_SVC_PLAYLIST_NAME_SIZE);
-       if (ret == AUDIO_SVC_ERROR_NONE)
+       ret = mp_media_info_playlist_unique_name("My playlist", unique_name, MP_PLAYLIST_NAME_SIZE);
+       if (ret == 0)
        {
                if (strlen(unique_name) <= 0)
                {
@@ -265,149 +516,37 @@ mp_util_get_new_playlist_name(MediaSvcHandle *handle)
        }
        else
        {
-               ERROR_TRACE("fail to audio_svc_get_unique_playlist_name() : error code [%x] ", ret);
+               ERROR_TRACE("fail to mp_media_info_playlist_unique_name() : error code [%x] ", ret);
                return NULL;
        }
 
        return NULL;
 }
 
-
-Eina_Bool
-mp_util_is_item_in_playlist(MediaSvcHandle *handle, gint plst_id, char *key_id)
-{
-       MP_CHECK_VAL(handle, EINA_FALSE);
-
-       int count = -1;
-       int ret = -1;
-       ret = audio_svc_check_duplicate_insertion_in_playlist(handle, plst_id, key_id, &count);
-       if (ret == AUDIO_SVC_ERROR_NONE)
-       {
-               if (count > 0)
-                       return TRUE;
-               else
-                       return FALSE;
-       }
-       else
-       {
-               ERROR_TRACE("Error from libmusic-service");
-               return FALSE;
-       }
-}
-
-bool
-mp_util_check_item_exist_in_playlist(MediaSvcHandle *handle, gint plst_id, char *key_id)
-{
-       MP_CHECK_FALSE(handle);
-
-       int count = -1;
-       int ret = -1;
-       ret = audio_svc_check_duplicate_insertion_in_playlist(handle, plst_id, key_id, &count);
-       if (ret == AUDIO_SVC_ERROR_NONE)
-       {
-               if (count > 0)
-                       return TRUE;
-               else
-                       return FALSE;
-       }
-       else
-       {
-               ERROR_TRACE("Error from libmusic-service");
-               return FALSE;
-       }
-}
-
-bool
-mp_util_add_selected_items_to_playlist(Evas_Object * genlist, int plst_id)
-{
-       Elm_Object_Item *first_item = elm_genlist_first_item_get(genlist);
-       Elm_Object_Item *current_item = NULL;
-       Elm_Object_Item *next_item = NULL;
-       mp_genlist_item_data_t *gl_item = NULL;
-       char *fid = NULL;
-       int size;
-       int ret;
-       int count;
-       mp_layout_data_t *layout_data = evas_object_data_get(genlist, "layout_data");
-       MP_CHECK_FALSE(layout_data);
-       MP_CHECK_LAYOUT_DATA(layout_data);
-       MP_CHECK_FALSE(layout_data->ad);
-
-       audio_svc_count_playlist_item(layout_data->ad->media_svc_handle, plst_id, NULL, NULL, &count);
-       if (count >= MP_PLAYLIST_MAX_ITEM_COUNT)
-               return FALSE;
-
-       if (first_item)
-       {
-               MP_GENLIST_CHECK_FOREACH_SAFE(first_item, current_item, next_item, gl_item)
-               {
-                       if (count == MP_PLAYLIST_MAX_ITEM_COUNT)
-                       {
-                               DEBUG_TRACE("Max count reached...");
-                               return TRUE;
-                       }
-                       if (gl_item->checked)
-                       {
-                               AudioHandleType *item = (AudioHandleType *) (gl_item->handle);
-                               MP_CHECK_FALSE(item);
-                               if (layout_data->playlist_id < 0)
-                                       ret = audio_svc_list_item_get_val(item, 0, AUDIO_SVC_LIST_ITEM_AUDIO_ID, &fid, &size,
-                                                                         -1);
-                               else
-                                       ret = audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_AUDIO_ID,
-                                                                             &fid,  &size, -1);
-                               if (ret == AUDIO_SVC_ERROR_NONE)
-                               {
-                                       if (mp_util_add_to_playlist_by_key(layout_data->ad->media_svc_handle, plst_id, fid))
-                                               count++;
-                               }
-                               else
-                               {
-                                       ERROR_TRACE("Error!! ret: %d", ret);
-                                       return FALSE;
-                               }
-                       }
-               }
-       }
-       else
-       {
-               DEBUG_TRACE("genlist item not exist...");
-               return FALSE;
-       }
-
-       return TRUE;
-}
-
 char *
-mp_util_get_fid_by_handle(mp_layout_data_t * layout_data, AudioHandleType * record)
+mp_util_get_fid_by_handle(mp_layout_data_t * layout_data, mp_media_info_h record)
 {
        MP_CHECK_FALSE(record);
 
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        char *fid = NULL;
-       int size;
 
-       if (layout_data->playlist_id < 0)
-               ret = audio_svc_list_item_get_val(record, 0, AUDIO_SVC_LIST_ITEM_AUDIO_ID, &fid, &size, -1);
-       else
-               ret = audio_svc_playlist_item_get_val(record, 0, AUDIO_SVC_PLAYLIST_ITEM_AUDIO_ID, &fid, &size, -1);
+       ret = mp_media_info_get_media_id(record, &fid);
 
        return fid;
 }
 
 char *
-mp_util_get_path_by_handle(mp_layout_data_t * layout_data, AudioHandleType * record)
+mp_util_get_path_by_handle(mp_layout_data_t * layout_data, mp_media_info_h record)
 {
        MP_CHECK_NULL(record);
 
        char *path = NULL;
 
-       int size = -1, ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
+
+       ret = mp_media_info_get_file_path(record, &path);
 
-       if (layout_data->playlist_id < 0)
-               ret = audio_svc_list_item_get_val(record, 0, AUDIO_SVC_LIST_ITEM_PATHNAME, &path, &size, -1);
-       else
-               ret = audio_svc_playlist_item_get_val(record, 0, AUDIO_SVC_PLAYLIST_ITEM_PATHNAME, &path, &size, -1);
        return path;
 }
 
@@ -416,7 +555,7 @@ mp_file_delete_err_t
 mp_util_delete_track(void *data, char *fid, char *file_path, bool show_popup)
 {
        struct appdata *ad = (struct appdata *)data;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
 
        DEBUG_TRACE("music id = %s, path: %s", fid, file_path);
        MP_CHECK_VAL(fid || file_path, MP_FILE_DELETE_ERR_INVALID_FID);
@@ -435,20 +574,21 @@ mp_util_delete_track(void *data, char *fid, char *file_path, bool show_popup)
                }
        }
 
-       char path[AUDIO_SVC_PATHNAME_SIZE] = "";
-
+       char *path = NULL;
+       mp_media_info_h item = NULL;
        if (!file_path)
        {
-               audio_svc_get_path_by_audio_id(ad->media_svc_handle, fid, path, AUDIO_SVC_PATHNAME_SIZE);
+               mp_media_info_create(&item, fid);
+               mp_media_info_get_file_path(item, &path);
        }
        else
-       {
-               strncpy(path, file_path, AUDIO_SVC_PATHNAME_SIZE);
-               path[AUDIO_SVC_PATHNAME_SIZE - 1] = '\0';
-       }
-
+               path = file_path;
 
        ret = remove(path);
+
+       if(item)
+               mp_media_info_destroy(item);
+
        if (ret < 0)
        {
                ERROR_TRACE("fail to unlink file : %s, ret: %d", path, ret);
@@ -456,12 +596,6 @@ mp_util_delete_track(void *data, char *fid, char *file_path, bool show_popup)
                        mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"));
                return MP_FILE_DELETE_ERR_REMOVE_FAIL;
        }
-       else
-       {
-               ret = audio_svc_delete_item_by_path(ad->media_svc_handle, path);
-               if (ret != AUDIO_SVC_ERROR_NONE)
-                       DEBUG_TRACE("Error audio_svc_delete_item_by_path() ret: %d", ret);
-       }
 
        return MP_FILE_DELETE_ERR_NONE;
 }
@@ -476,28 +610,7 @@ mp_util_file_is_in_phone_memory(const char *path)
                return 0;
 }
 
-Elm_Object_Item *
-mp_util_get_genlist_item_by_item_handle(Evas_Object * genlist, AudioHandleType * handle)
-{
-       Elm_Object_Item *it = NULL;
-
-       it = elm_genlist_first_item_get(genlist);
-       while (it)
-       {
-               mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) elm_object_item_data_get(it);
-               MP_CHECK_NULL(item);
-               AudioHandleType *item_data = (AudioHandleType *) (item->handle);
-               MP_CHECK_NULL(item_data);
-               if (item_data == handle)
-                       break;
-               it = elm_genlist_item_next_get(it);
-       }
-
-       MP_CHECK_NULL(it);
-       return it;
-}
-
-/*return value must be freed.*/
+// return value must be freed.
 char *
 mp_util_isf_get_edited_str(Evas_Object * isf_entry, bool permit_first_blank)
 {
@@ -526,6 +639,7 @@ mp_util_isf_get_edited_str(Evas_Object * isf_entry, bool permit_first_blank)
                                free(strip_msg);
                                return strdup("");
                        }
+
                        if (strip_msg[strip_len - 1] == '\n' || strip_msg[strip_len - 1] == '\r')
                        {
                                strip_msg[strip_len - 1] = '\0';
@@ -546,19 +660,25 @@ mp_util_isf_get_edited_str(Evas_Object * isf_entry, bool permit_first_blank)
        }
 }
 
-char *
-mp_util_item_get_value_by_type(audio_svc_track_data_type_e item_type, struct music_list_item *item)
+bool
+mp_util_set_screen_mode(void *data, int mode)
 {
-       mp_retvm_if(!item, NULL, "ITEM IS NULL");
-
-       if (item_type == AUDIO_SVC_TRACK_DATA_TITLE)
-               return strdup(item->title);
-       else if (item_type == AUDIO_SVC_TRACK_DATA_ALBUM)
-               return strdup(item->artist);
-       else if (item_type == AUDIO_SVC_TRACK_DATA_ARTIST)
-               return strdup(item->album);
-       else
-               return NULL;
+       struct appdata *ad = data;
+
+       ad->current_appcore_rm = mode;  //set current appcore rm
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &ad->screen_width, &ad->screen_height);        //get current screen height width
+
+       if (mode == APP_DEVICE_ORIENTATION_270 || mode == APP_DEVICE_ORIENTATION_90)
+       {
+               ad->screen_mode = MP_SCREEN_MODE_LANDSCAPE;
+               mp_debug("Set MP_SCREEN_MODE_LANDSCAPE");
+       }
+       else if (mode == APP_DEVICE_ORIENTATION_0 || mode == APP_DEVICE_ORIENTATION_180)
+       {
+               ad->screen_mode = MP_SCREEN_MODE_PORTRAIT;
+               mp_debug("Set MP_SCREEN_MODE_PORTRAIT");
+       }
+       return true;
 }
 
 bool
@@ -603,21 +723,23 @@ mp_util_launch_browser(const char *url, struct appdata * ad)
 {
        DEBUG_TRACE("url: %s", url);
 
-       bundle *b = NULL;
-       int res;
-
-       b = bundle_create();
-       bundle_add(b, "url", url);
+       service_h service;
+       bool res;
+       service_create(&service);
+       service_set_operation(service, SERVICE_OPERATION_DEFAULT);
+       service_set_package(service, "org.tizen.browser");
+       service_set_uri(service, url);
 
-       res = aul_launch_app("org.tizen.browser", b);
-       DEBUG_TRACE("aul raunch. res: %d", res);
-       bundle_free(b);
-
-       if (res >= AUL_R_OK)
-               return TRUE;
-       else
-               return FALSE;
+       if (service_send_launch_request(service, NULL, NULL) == SERVICE_ERROR_NONE) {
+               DEBUG_TRACE("Succeeded to launch a calculator app.");
+               res = true;
+       } else {
+               DEBUG_TRACE("Failed to launch a calculator app.");
+               res = false;
+       }
+       service_destroy(service);
 
+       return res;
 }
 
 
@@ -645,7 +767,7 @@ mp_util_get_utf8_initial(const char *name)
                first = g_utf8_get_char(next);
        }
 
-       if (first >= 0xAC00 && first <= 0xD7A3) // korean range
+       if (first >= 0xAC00 && first <= 0xD7A3)
        {                       //korean
                int index = 0;
                index = ((((first - 0xAC00) - ((first - 0xAC00) % 28)) / 28) / 21);
@@ -714,7 +836,7 @@ mp_util_is_playlist_name_valid(char *name)
 }
 
 int
-mp_util_create_playlist(struct appdata *ad, char *name)
+mp_util_create_playlist(struct appdata *ad, char *name, mp_playlist_h *playlist_handle)
 {
        MP_CHECK_VAL(ad, -1);
        MP_CHECK_VAL(name, -1);
@@ -727,17 +849,31 @@ mp_util_create_playlist(struct appdata *ad, char *name)
                return -1;
        }
 
-       int count = -1;
-       int ret = audio_svc_count_playlist_by_name(ad->media_svc_handle, name, &count);
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, -1, "Fail to get playlist count by name");
-       if (count > 0)
+       bool exist = false;
+       int ret = mp_media_info_playlist_is_exist(name, &exist);
+       if(ret != 0)
+       {
+               ERROR_TRACE("Fail to get playlist count by name: %d", ret);
+               mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"));
+               return -1;
+       }
+
+       if (exist)
        {
-               mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_ALREDY_EXISTS"));
+               char buf[256] = { 0, };
+
+               snprintf(buf, sizeof(buf), "Playlist name %s is exist", name);
+               mp_widget_text_popup(ad, buf);
                return -1;
        }
 
-       ret = audio_svc_add_playlist(ad->media_svc_handle, name, &plst_uid);
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, -1, "Fail to add playlist");
+       ret = mp_media_info_playlist_insert_to_db(name, &plst_uid, playlist_handle);
+       if(ret != 0)
+       {
+               ERROR_TRACE("Fail to get playlist count by name: %d", ret);
+               mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_BODY_UNABLE_TO_ADD"));
+               return -1;
+       }
 
        return plst_uid;
 }
@@ -786,10 +922,9 @@ _mp_util_parse_last_play_data(mp_layout_data_t * layout_data)
 bool
 mp_util_get_recent_play_data(mp_layout_data_t * layout_data, int *index, char **path)
 {
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        char *last_audio_id = NULL;
        char *audio_id = NULL;
-       int size = 0;
        int i = 0;
 
        if (!ecore_file_exists(MP_NOWPLAYING_INI_FILE_NAME))
@@ -837,13 +972,12 @@ mp_util_get_recent_play_data(mp_layout_data_t * layout_data, int *index, char **
                            layout_data->filter_str);
 
                if (layout_data->playlist_id < 0)
-                       ret = audio_svc_count_list_item(ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL,
-                                                       layout_data->filter_str, NULL, &(layout_data->item_count));
+                       ret = mp_media_info_list_count(layout_data->track_type, layout_data->type_str, NULL,
+                                       layout_data->filter_str, 0, &(layout_data->item_count));
                else
-                       ret = audio_svc_count_playlist_item(ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL,
-                                                           &(layout_data->item_count));
+                       ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, layout_data->filter_str, layout_data->playlist_id, &(layout_data->item_count));
 
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret);
+               mp_retvm_if(ret != 0, false, "ret: %d", ret);
 
                if (layout_data->item_count <= 0)
                {
@@ -851,28 +985,16 @@ mp_util_get_recent_play_data(mp_layout_data_t * layout_data, int *index, char **
                        return false;
                }
 
-               if (layout_data->playlist_id < 0)
-                       ret = audio_svc_list_item_new(&(layout_data->svc_handle), layout_data->item_count);
-               else
-                       ret = audio_svc_playlist_item_new(&(layout_data->svc_handle), layout_data->item_count);
-
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret);
+               mp_retvm_if(ret != 0, false, "ret: %d", ret);
 
-               if (layout_data->playlist_id < 0)
-                       ret = audio_svc_get_list_item(ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL,
-                                                     layout_data->filter_str, NULL, 0, layout_data->item_count,
-                                                     layout_data->svc_handle);
-               else
-                       ret = audio_svc_get_playlist_item(ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, 0,
-                                                         layout_data->item_count, layout_data->svc_handle);
+               ret = mp_media_info_list_create(&layout_data->svc_handle,
+                       layout_data->track_type, layout_data->type_str, NULL,
+                       layout_data->filter_str, layout_data->playlist_id, 0, layout_data->item_count);
 
-               if (ret != AUDIO_SVC_ERROR_NONE)
+               if (ret != 0)
                {
                        DEBUG_TRACE("fail to get list item: %d", ret);
-                       if (layout_data->playlist_id < 0)
-                               ret = audio_svc_list_item_free(layout_data->svc_handle);
-                       else
-                               ret = audio_svc_playlist_item_free(layout_data->svc_handle);
+                       ret = mp_media_info_list_destroy(layout_data->svc_handle);
 
                        return false;
                }
@@ -880,8 +1002,9 @@ mp_util_get_recent_play_data(mp_layout_data_t * layout_data, int *index, char **
                {
                        for (i = 0; i < layout_data->item_count; i++)
                        {
-                               audio_svc_list_item_get_val(layout_data->svc_handle, i, AUDIO_SVC_LIST_ITEM_AUDIO_ID, &audio_id, &size,
-                                                           -1);
+                               mp_media_info_h item = mp_media_info_list_nth_item(layout_data->svc_handle, i);
+                               MP_CHECK_FALSE(item);
+                               mp_media_info_get_media_id(item, &audio_id);
                                if (!g_strcmp0(audio_id, last_audio_id))
                                {
                                        if (index)
@@ -906,46 +1029,114 @@ mp_util_get_playlist_data(mp_layout_data_t * layout_data, int *index, const char
        struct appdata *ad = layout_data->ad;
        MP_CHECK_FALSE(ad);
 
-       int ret = AUDIO_SVC_ERROR_NONE;
-       int playlist_idx = 0;
-
-       ret = audio_svc_get_playlist_id_by_playlist_name(ad->media_svc_handle, playlist_name, &playlist_idx);
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d, playlist_name: %s", ret, playlist_name);
-       mp_retvm_if(playlist_idx < 0, false, "playlist_idx is not valid.. %d", playlist_idx);
-       layout_data->playlist_id = playlist_idx;
+       int ret = 0;
+       int playlist_id = 0;
 
-       ret = audio_svc_count_playlist_item(ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL,
-                                           &(layout_data->item_count));
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret);
+       ret = mp_media_info_playlist_get_id_by_name(playlist_name, &playlist_id);
+       mp_retvm_if(ret != 0, false, "ret: %d, playlist_name: %s", ret, playlist_name);
+       layout_data->playlist_id = playlist_id;
 
+       ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, layout_data->filter_str, layout_data->playlist_id, &(layout_data->item_count));
+       mp_retvm_if(ret != 0, false, "ret: %d", ret);
        if (layout_data->item_count <= 0)
        {
                DEBUG_TRACE("Recently played tracks were removed...");
                return false;
        }
-
-       ret = audio_svc_playlist_item_new(&(layout_data->svc_handle), layout_data->item_count);
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret);
-
-       ret = audio_svc_get_playlist_item(ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, 0,
-                                         layout_data->item_count, layout_data->svc_handle);
-       if (ret != AUDIO_SVC_ERROR_NONE)
+       ret = mp_media_info_list_create(&layout_data->svc_handle, MP_TRACK_BY_PLAYLIST,
+               NULL, NULL, layout_data->filter_str, layout_data->playlist_id, 0, layout_data->item_count);
+       if (ret != 0)
        {
-               DEBUG_TRACE("fail to get list item: %d", ret);
-               ret = audio_svc_playlist_item_free(layout_data->svc_handle);
+               WARN_TRACE("fail to mp_media_info_list_create: %d", ret);
                return false;
        }
        return true;
 }
 
+#define STRNCAT_LEN(dest) (sizeof(dest)-1-strlen(dest))
+static void __mp_util_set_filter(mp_filter_h filter, mp_group_type_e group_type, const char *filter_string)
+{
+       char cond[MAX_FILTER_LEN] = {0,};
+
+       switch(group_type)
+       {
+       case MP_GROUP_BY_ALBUM:
+               if(filter_string)
+               {
+                       strncat(cond, "MEDIA_ALBUM like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_GROUP_BY_ARTIST:
+               if(filter_string)
+               {
+                       strncat(cond, "MEDIA_ARTIST like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_GROUP_BY_GENRE:
+               if(filter_string)
+               {
+                       strncat(cond, "MEDIA_GENRE like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_GROUP_BY_FOLDER:
+               if(filter_string)
+               {
+                       strncat(cond, "MEDIA_PATH like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_GROUP_BY_YEAR:
+               if(filter_string)
+               {
+                       strncat(cond, "MEDIA_YEAR like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_GROUP_BY_COMPOSER:
+               if(filter_string)
+               {
+                       strncat(cond, "MEDIA_COMPOSER like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               break;
+       case MP_GROUP_BY_PLAYLIST:
+               if(filter_string)
+               {
+                       strncat(cond, "PLAYLIST_NAME like \"\%", STRNCAT_LEN(cond));
+                       strncat(cond, filter_string, STRNCAT_LEN(cond));
+                       strncat(cond, "\%\"", STRNCAT_LEN(cond));
+               }
+               break;
+       default:
+               WARN_TRACE("Unhandled type: %d", group_type);
+               break;
+       }
+       if(strlen(cond))
+       {
+               DEBUG_TRACE("cond: %s", cond);
+               mp_media_filter_set_condition(filter, cond, MP_MEDIA_CONTENT_COLLATE_NOCASE);
+       }
+       mp_media_filter_set_order(filter, false, "MEDIA_TITLE", MP_MEDIA_CONTENT_COLLATE_NOCASE);
+
+}
+
 bool
 mp_util_get_list_data(mp_layout_data_t * layout_data)
 {
        MP_CHECK_FALSE(layout_data);
 
        struct appdata *ad = NULL;
-       AudioHandleType *group_record = NULL;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
+       mp_filter_h filter = NULL;
 
        ad = layout_data->ad;
        MP_CHECK_FALSE(ad);
@@ -953,10 +1144,10 @@ mp_util_get_list_data(mp_layout_data_t * layout_data)
        if (ad->launch_type != MP_LAUNCH_PLAY_GROUP)
        {
 
-               ret = audio_svc_count_list_item(ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL,
-                                               layout_data->filter_str, NULL, &(layout_data->item_count));
+               ret = mp_media_info_list_count(layout_data->track_type, layout_data->type_str, NULL,
+                                       layout_data->filter_str, layout_data->playlist_id, &(layout_data->item_count));
 
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret);
+               mp_retvm_if(ret != 0, false, "ret: %d", ret);
 
                if (layout_data->item_count <= 0)
                {
@@ -964,14 +1155,10 @@ mp_util_get_list_data(mp_layout_data_t * layout_data)
                        return false;
                }
 
-               ret = audio_svc_list_item_new(&(layout_data->svc_handle), layout_data->item_count);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret);
-
-               ret = audio_svc_get_list_item(ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL,
-                                             layout_data->filter_str, NULL, 0, layout_data->item_count,
-                                             layout_data->svc_handle);
-
-               if (ret != AUDIO_SVC_ERROR_NONE)
+               ret = mp_media_info_list_create(&(layout_data->svc_handle),
+                       layout_data->track_type, layout_data->type_str, NULL,
+                       layout_data->filter_str, layout_data->playlist_id, 0, layout_data->item_count);
+               if (ret != 0)
                {
                        DEBUG_TRACE("fail to get list item: %d", ret);
                        goto error;
@@ -979,122 +1166,34 @@ mp_util_get_list_data(mp_layout_data_t * layout_data)
        }
        else
        {
-               int group_count = 0;
-               int i = 0;
-               int index = 0;
-
-               ret = audio_svc_count_group_item(ad->media_svc_handle, layout_data->group_type, NULL, NULL, layout_data->filter_str, NULL,
-                                                &group_count);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret);
-
-               if (group_count <= 0)
-               {
-                       DEBUG_TRACE("No such groups");
-                       goto error;
-               }
+               int count = 0;
+               int res = 0;
 
-               ret = audio_svc_group_item_new(&group_record, group_count);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, false, "ret: %d", ret);
+               mp_media_filter_create(&filter);
+               __mp_util_set_filter(filter, layout_data->group_type, layout_data->filter_str);
 
-               ret = audio_svc_get_group_item(ad->media_svc_handle, layout_data->group_type, NULL, NULL, layout_data->filter_str, NULL, 0,
-                                              group_count, group_record);
-               if (ret != AUDIO_SVC_ERROR_NONE)
-               {
-                       DEBUG_TRACE("fail to get list item: %d", ret);
-                       goto error;
-               }
-
-               char *group_title[group_count];
-               int item_count[group_count];
-
-               for (i = 0; i < group_count; i++)
-               {
-                       int count = 0;
-                       int size = 0;
-
-                       ret = audio_svc_group_item_get_val(group_record, i, AUDIO_SVC_GROUP_ITEM_MAIN_INFO,
-                                                                  &(group_title[i]), &size, -1);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
-                       {
-                               DEBUG_TRACE("fail to get list item: %d", ret);
-                               goto error;
-                       }
-
-                       ret = audio_svc_count_list_item(ad->media_svc_handle, layout_data->track_type, group_title[i], NULL, NULL, NULL,
-                                                       &count);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
-                       {
-                               DEBUG_TRACE("fail to get list item: %d", ret);
-                               goto error;
-                       }
-
-                       item_count[i] = count;
-                       layout_data->item_count += count;
-               }
-
-               if (layout_data->item_count <= 0)
-               {
-                       DEBUG_TRACE("No group items");
-                       goto error;
-               }
-
-               ret = audio_svc_list_item_new(&(layout_data->svc_handle), layout_data->item_count);
-               if (ret != AUDIO_SVC_ERROR_NONE)
-               {
-                       DEBUG_TRACE("fail to get list item: %d", ret);
-                       goto error;
-               }
-
-               for (i = 0; i < group_count; i++)
-               {
-                       AudioHandleType *handle;
-                       ret = audio_svc_list_item_get(layout_data->svc_handle, index, &handle);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
-                       {
-                               DEBUG_TRACE("fail to get list item: %d", ret);
-                               goto error;
-                       }
-
-                       ret = audio_svc_get_list_item(ad->media_svc_handle, layout_data->track_type, group_title[i], NULL, NULL, NULL, 0,
-                                                     item_count[i], handle);
-                       DEBUG_TRACE("0x%x, index: %d", handle, index);
-                       index += item_count[i];
-
-                       if (ret != AUDIO_SVC_ERROR_NONE)
-                       {
-                               DEBUG_TRACE("fail to get list item: %d", ret);
-                               goto error;
-                       }
-
-               }
-
-               for (i = 0; i < layout_data->item_count; i++)
-               {
-                       char *title;
-                       int size;
-                       audio_svc_list_item_get_val(layout_data->svc_handle, i, AUDIO_SVC_LIST_ITEM_TITLE, &title,
-                                                   &size, -1);
-                       DEBUG_TRACE("%s", title);
-               }
+               res = mp_media_info_list_count_w_filter(layout_data->track_type,layout_data->type_str, layout_data->playlist_id, filter, &count);
+               if(res || count <= 0) goto error;
 
+               mp_media_filter_destory(filter);
        }
-
        return true;
 
-      error:
-       if (group_record)
-               audio_svc_group_item_free(group_record);
+       error:
+       mp_media_filter_destory(filter);
        if (layout_data->svc_handle)
-               audio_svc_list_item_free(layout_data->svc_handle);
+               mp_media_info_list_destroy(layout_data->svc_handle);
        return false;
 }
 
+#ifndef MP_SOUND_PLAYER
 void
 _mp_util_set_tabbar_item(Evas_Object *control_bar, Elm_Object_Item **item,
                                                 Elm_Object_Item **after, int enabled, char *icon, char *label, void *data)
 {
        if (*item && !enabled)
        {
+               mp_language_mgr_unregister_object_item(*item);
                elm_object_item_del(*item);
                *item = NULL;
        }
@@ -1116,37 +1215,44 @@ mp_util_set_library_controlbar_items(void *data)
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
        MP_CHECK(ad->library);
+
+       Elm_Object_Item *prev_selected = elm_toolbar_selected_item_get(ad->tabbar);
+
        Elm_Object_Item *after = ad->library->ctltab_plist;
-       _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_album), &after,
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_album), &after,
                                                ad->library->albums, MP_CTRBAR_ICON_ALBUM, GET_STR(STR_MP_ALBUMS), ad);
 
-       _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_artist), &after,
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_artist), &after,
                                                ad->library->artists, MP_CTRBAR_ICON_ARTIST, GET_STR(STR_MP_ARTISTS), ad);
 
-       _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_genres), &after,
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_genres), &after,
                                                ad->library->genres, MP_CTRBAR_ICON_GENRE, GET_STR(STR_MP_GENRES), ad);
 
-       _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_composer), &after,
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_composer), &after,
                                                ad->library->composers, MP_CTRBAR_ICON_COMPOSER, GET_STR(STR_MP_COMPOSERS), ad);
 
-       _mp_util_set_tabbar_item(ad->ctrl_bar, &(ad->library->ctltab_year), &after,
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_year), &after,
                                                ad->library->years, MP_CTRBAR_ICON_YEAR, GET_STR(STR_MP_YEARS), ad);
 
+       _mp_util_set_tabbar_item(ad->tabbar, &(ad->library->ctltab_folder), &after,
+                                               ad->library->folders, MP_CTRBAR_ICON_FOLDER, GET_SYS_STR(STR_MP_FOLDERS), ad);
+       if (prev_selected != elm_toolbar_selected_item_get(ad->tabbar)) {
+               mp_debug("prev selected item is deleted.. select song tab");
+               elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE);
+       }
 }
+#endif
 
 bool
-mp_util_get_uri_from_app_svc(bundle * b, struct appdata *ad, char **path)
+mp_util_get_uri_from_app_svc(service_h service, struct appdata *ad, char **path)
 {
        char *uri = NULL;
-       const char *operation = NULL;
+       char *operation = NULL;
+       char *mime = NULL;
 
-       if (!b || !bundle_get_count(b))
-       {
-               WARN_TRACE("No exist b pointer or bundle count value.");
-               return FALSE;
-       }
+       MP_CHECK_FALSE(service);
 
-       operation = appsvc_get_operation(b);
+       service_get_operation(service, &operation);
        DEBUG_TRACE("operation: %s", operation);
 
        if(!operation)
@@ -1154,25 +1260,33 @@ mp_util_get_uri_from_app_svc(bundle * b, struct appdata *ad, char **path)
                return FALSE;
        }
 
-       if(!strcmp(APPSVC_OPERATION_VIEW , operation))
+       if(!strcmp(SERVICE_OPERATION_VIEW , operation))
        {
-               uri = (char *)appsvc_get_uri(b);
-               if (uri)
+               service_get_uri(service, &uri);
+               if (uri && strlen(uri))
                {
-                       *path = strdup(uri);
+                       *path = uri;
                }
                else
                {
+                       *path = NULL;
                        WARN_TRACE("No URI.");
+                       SAFE_FREE(operation);
                        return FALSE;
                }
+
+               service_get_mime(service, &mime);
+               mp_debug("mime : %s", mime);
+               SAFE_FREE(mime);
        }
        else
        {
+               *path = NULL;
                WARN_TRACE("No Operation.");
                return FALSE;
        }
 
+       SAFE_FREE(operation);
        DEBUG_TRACE("URI path uri : %s", uri);
        return TRUE;
 }
@@ -1183,20 +1297,20 @@ mp_util_reset_genlist_mode_item(Evas_Object *genlist)
        MP_CHECK(genlist);
        Elm_Object_Item *gl_item =
                (Elm_Object_Item *)elm_genlist_decorated_item_get(genlist);
-       if (gl_item)
+       if (gl_item) {
                elm_genlist_item_decorate_mode_set(gl_item, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(gl_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
 }
 
+#ifndef MP_SOUND_PLAYER
 view_data_t *
 mp_util_get_view_data(struct appdata *ad)
 {
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
-
-       Evas_Object *cur_view = ad->library->cur_view;
-       MP_CHECK_NULL(cur_view);
+       MP_CHECK_NULL(ad->naviframe);
 
-       return evas_object_data_get(cur_view, "view_data");
+       return evas_object_data_get(ad->naviframe, "view_data");
 }
 
 mp_layout_data_t*
@@ -1205,6 +1319,7 @@ mp_util_get_layout_data(Evas_Object* obj)
        MP_CHECK_NULL(obj);
        return evas_object_data_get(obj, "layout_data");
 }
+#endif
 
 bool
 mp_util_is_image_valid(Evas *evas, const char *path)
@@ -1366,28 +1481,7 @@ mp_util_shorten_path(char *path_info)
                return output;
 }
 
-void
-mp_util_grab_mm_keys(struct appdata *ad)
-{
-       utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_NEXTSONG, OR_EXCLUSIVE_GRAB);
-       utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PREVIOUSSONG, OR_EXCLUSIVE_GRAB);
-       utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PAUSECD, OR_EXCLUSIVE_GRAB);
-       utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PLAYCD, OR_EXCLUSIVE_GRAB);
-       utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_FASTFORWARD, OR_EXCLUSIVE_GRAB);
-       utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_REWIND, OR_EXCLUSIVE_GRAB);
-}
-
-void
-mp_util_ungrab_mm_keys(struct appdata *ad)
-{
-       utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_NEXTSONG);
-       utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PREVIOUSSONG);
-       utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PAUSECD);
-       utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_PLAYCD);
-       utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_FASTFORWARD);
-       utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win_main), KEY_REWIND);
-}
-
+#ifndef MP_SOUND_PLAYER
 void
 mp_util_unset_rename(mp_layout_data_t * layout_data)
 {
@@ -1404,10 +1498,12 @@ mp_util_unset_rename(mp_layout_data_t * layout_data)
                }
                layout_data->rename_git = NULL;
                layout_data->rename_mode = false;
+
                //set title button sensitivity
                mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count);
        }
 }
+#endif
 
 bool
 mp_util_is_db_updating(void)
@@ -1421,23 +1517,21 @@ mp_util_is_db_updating(void)
 }
 
 /*haptic*/
+
+#define MP_VIBRATION_DEVICE 0
+
 void mp_util_stop_vibration(struct appdata *ad)
 {
        startfunc;
        MP_CHECK(ad);
 
        int ret = -1;
-       if (ad->haptic_handle > 0) {
-               ret = device_haptic_stop_play(ad->haptic_handle);
-               if (ret != 0)
-                       ERROR_TRACE("device_haptic_stop_play failed[%d]!", ret);
-
-               ret = device_haptic_close(ad->haptic_handle);
-               if (ret != 0)
-                       ERROR_TRACE("device_haptic_close failed[%d]!", ret);
-       }
-
-       ad->haptic_handle = 0;
+       ret = haptic_stop_device(MP_VIBRATION_DEVICE);
+       if (ret != 0)
+               ERROR_TRACE("haptic_stop_device failed[%d]!", ret);
+       ret = haptic_deinitialize();
+       if (ret != 0)
+               ERROR_TRACE("haptic_deinitialize failed[%d]!", ret);
 }
 
 static Eina_Bool _mp_util_vibration_timer_cb(void *data)
@@ -1460,27 +1554,20 @@ bool mp_util_play_vibration(struct appdata *ad, float duration)
        MP_CHECK_FALSE(duration > 0);
 
        int ret = 0;
-       if (ad->haptic_handle > 0) {
-               DEBUG_TRACE("Remove previous haptic handle.");
-               mp_util_stop_vibration(ad);
-       }
 
-       ad->haptic_handle = device_haptic_open(DEV_IDX_0, 0);
-       if (ad->haptic_handle < 0) {
-               ERROR_TRACE("device_haptic_open failed[%d]!", ret);
+       ret = haptic_initialize();
+       if(ret != HAPTIC_ERROR_NONE)
+       {
+               DEBUG_TRACE("Error:haptic_initialize: %d ", ret);
                return FALSE;
        }
 
        mp_ecore_timer_del(ad->vib_timer);
        ad->vib_timer = ecore_timer_add(duration, _mp_util_vibration_timer_cb, ad);
 
-       char filepath[MAX_NAM_LEN+1];
-       svi_get_path(SVI_TYPE_VIB, SVI_VIB_TOUCH_TOUCH, filepath, sizeof(filepath));
-
-       ret = device_haptic_play_file(ad->haptic_handle, filepath, 1, HAPTIC_FEEDBACK_LEVEL_5);
-
+       ret = haptic_vibrate_monotone(MP_VIBRATION_DEVICE, duration, HAPTIC_LEVEL_AUTO);
        if (ret != 0) {
-               ERROR_TRACE("device_haptic_play_pattern failed[%d]!", ret);
+               ERROR_TRACE("haptic_vibrate_monotone failed[%d]!", ret);
                return FALSE;
        }
 
@@ -1491,12 +1578,13 @@ bool
 mp_util_is_bt_connected(void)
 {
        int ret = 0;
-       int connected = 0;
+       bool connected = 0;
        bool ret_val = FALSE;
        char *bt_name = NULL;
 
-       ret = mm_sound_route_get_a2dp_status(&connected, &bt_name);
-       if (ret == MM_ERROR_NONE) {
+       ret = sound_manager_get_a2dp_status(&connected, &bt_name);
+       if (ret == SOUND_MANAGER_ERROR_NONE)
+       {
                DEBUG_TRACE("Is Bluetooth A2DP On Success : [%d][%s]", connected,
                         bt_name);
                if (connected != 0) {
@@ -1533,31 +1621,30 @@ mp_util_is_earjack_inserted(void)
 void
 mp_util_get_sound_path(mp_snd_path *snd_path)
 {
-       system_audio_route_t policy = 0;
-       mm_sound_route_get_system_policy(&policy);
+       sound_device_in_e in;
+       sound_device_out_e out;
 
-       if (policy == SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT)
-       {
-               DEBUG_TRACE("SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT");
-               if (mp_util_is_bt_connected())
-                       *snd_path = MP_SND_PATH_BT;
-               else if (mp_util_is_earjack_inserted())
-                       *snd_path = MP_SND_PATH_EARPHONE;
-               else
-                       *snd_path = MP_SND_PATH_SPEAKER;
-       }
-       else if (policy == SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP)
-       {
-               DEBUG_TRACE("SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP");
-               if (mp_util_is_earjack_inserted())
-                       *snd_path = MP_SND_PATH_EARPHONE;
-               else
-                       *snd_path = MP_SND_PATH_SPEAKER;
-       }
-       else
-       {
-               DEBUG_TRACE("SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY");
+       sound_manager_get_active_device(&in, &out);
+       switch(out) {
+       case SOUND_DEVICE_OUT_SPEAKER:
+               ERROR_TRACE("SOUND_DEVICE_OUT_SPEAKER");
                *snd_path = MP_SND_PATH_SPEAKER;
+               break;
+
+       case SOUND_DEVICE_OUT_WIRED_ACCESSORY:
+               ERROR_TRACE("SOUND_DEVICE_OUT_WIRED_ACCESSORY");
+               *snd_path = MP_SND_PATH_EARPHONE;
+               break;
+
+       case SOUND_DEVICE_OUT_BT_A2DP:
+               ERROR_TRACE("SOUND_DEVICE_OUT_BT_A2DP");
+               *snd_path = MP_SND_PATH_BT;
+               break;
+
+       default:
+               DEBUG_TRACE("default:speaker");
+               *snd_path = MP_SND_PATH_SPEAKER;
+               break;
        }
 }
 
@@ -1631,15 +1718,120 @@ mp_util_search_markup_keyword(const char *string, char *searchword, bool *result
        return return_string;
 }
 
-inline Elm_Object_Item *
-mp_util_toolbar_append_object(Evas_Object *toolbar, Evas_Object *obj, int sel)
+bool
+mp_util_is_other_player_playing()
 {
-       MP_CHECK_NULL(toolbar);
+       bool ret = FALSE;
+
+       int state = 0;
+       int pid = 0;
+       if (vconf_get_int(VCONFKEY_MUSIC_STATE, &state) == 0) {
+               if (state == VCONFKEY_MUSIC_PLAY) {
+                       if (vconf_get_int(MP_VCONFKEY_PLAYING_PID, &pid) == 0) {
+                               if (pid != getpid()) {
+                                       mp_debug("## other player is playing some music ##");
+                                       ret = TRUE;
+                               }
+                       } else {
+                               mp_error("vconf_get_int() error");
+                       }
+               }
+       } else {
+               mp_error("vconf_get_int() error");
+       }
+
+       return ret;
+}
+
+int
+mp_commmon_check_rotate_lock(void)
+{
+       int lock = FALSE;
+       lock = -1;
+       if (!vconf_get_bool(VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL, &lock))
+       {
+               mp_debug("lock state: %d", lock);
+               return lock;
+       }
+       else
+               return -1;
+}
 
-       Elm_Object_Item *item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
-       elm_object_item_part_content_set(item, "object", obj);
 
-       return item;
+int
+mp_check_battery_available(void)
+{
+       int batt_state = -1;
+
+       if (!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &batt_state))
+       {
+               /* low battery status
+                *      VCONFKEY_SYSMAN_BAT_WARNING_LOW         = 15 %
+                *      VCONFKEY_SYSMAN_BAT_CRITICAL_LOW        = 5 %
+                *      VCONFKEY_SYSMAN_BAT_POWER_OFF           = 1 %
+                *      since 2011. 03. 02
+                */
+               if (batt_state <= VCONFKEY_SYSMAN_BAT_POWER_OFF)        //VCONFKEY_SYSMAN_BAT_POWER_OFF - 1% remaninging
+               {
+                       // don't need to check changing state.
+                       /*
+                          if(!vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &batt_state))
+                          {
+                          if(batt_state ==1)
+                          {
+                          DEBUG_TRACE("current chargine status");
+                          return 0;
+                          }
+                          } */
+
+                       WARN_TRACE("batt_state: %d", batt_state);
+                       return -1;
+               }
+       }
+       else
+       {
+               ERROR_TRACE("Fail to get battery status");
+       }
+       return 0;
+}
+
+int
+mp_check_mass_storage_mode(void)
+{
+       int mass_storage = -1;
+
+       if (!vconf_get_int(VCONFKEY_USB_STORAGE_STATUS, &mass_storage))
+       {
+               DEBUG_TRACE("current mass_storage : %d", mass_storage);
+               if (mass_storage != VCONFKEY_USB_STORAGE_STATUS_OFF)
+                       return -1;
+       }
+       else
+       {
+               ERROR_TRACE("Fail to get status");
+       }
+       return 0;
+}
+
+bool
+mp_util_sleep_lock_set(bool lock)
+{
+       int ret = POWER_ERROR_NONE;
+
+       if (lock) {
+               mp_debug("sleep_lock");
+               ret = power_lock_state(POWER_STATE_SCREEN_OFF, 0);
+       } else {
+               mp_debug("sleep_unlock");
+               ret = power_unlock_state(POWER_STATE_SCREEN_OFF);
+       }
+
+       if (ret != POWER_ERROR_NONE) {
+               mp_error("pm_lock(un_lock) error.. [%d]", ret);
+               return FALSE;
+       }
+
+       return TRUE;
 }
 
 bool
@@ -1657,4 +1849,20 @@ mp_util_toolbar_item_valid_check(Elm_Object_Item *item)
        return FALSE;
 }
 
+void
+mp_util_strncpy_safe(char *x_dst, const char *x_src, int max_len)
+{
+       if (!x_src || strlen(x_src) == 0) {
+               mp_error("x_src is NULL");
+               return;
+       }
+
+       if (max_len < 1) {
+               mp_error("length is Wrong");
+               return;
+       }
+
+    strncpy(x_dst, x_src, max_len-1);
+       x_dst[max_len-1] = '\0';
+}
 
index 09dfe77..2bc591e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #include "mp-view-manager.h"
 #include "mp-edit-view.h"
 #include "mp-playlist-view.h"
 #include "mp-common.h"
 #include "mp-menu.h"
 #include "mp-play-view.h"
+#include "mp-ug-launch.h"
 #include "mp-search.h"
 #include "mp-widget.h"
 #include "mp-library.h"
-#include "mp-util.h"
-
-#define MP_OPTION_HEADER_COND(type) type == MP_VIEW_CONTENT_NEW_PLAYLIST\
-                       || type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP\
-                       || type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT
 
 typedef struct
 {
@@ -51,6 +45,7 @@ mp_view_manager_push_view_content(view_data_t * view_data, Evas_Object * content
 {
        int view_idx = -1;
        mp_view_histroy_t *last_history;
+       Evas_Object *top_view = NULL;
 
        startfunc;
 
@@ -65,7 +60,7 @@ mp_view_manager_push_view_content(view_data_t * view_data, Evas_Object * content
        Elm_Object_Item *navi_item = elm_naviframe_top_item_get(view_data->navibar);
        if (navi_item)
        {
-               Evas_Object *top_view = elm_object_item_content_get(navi_item);
+               top_view = elm_object_item_content_get(navi_item);
                MP_CHECK(top_view);
 
                mp_view_layout_progress_timer_freeze(top_view);
@@ -79,33 +74,67 @@ mp_view_manager_push_view_content(view_data_t * view_data, Evas_Object * content
        last_history->view_index = view_idx;
        last_history->view_layout = content;
 
-       /*
-       last_history->navi_item =
-               elm_navigationbar_ex_item_push(view_data->navibar, content, "music/title_option_header");
-       */
-       if(MP_VIEW_CONTENT_PLAY == type || MP_OPTION_HEADER_COND(type))
+       MP_TA_ACUM_ITEM_BEGIN("          elm_naviframe_item_push(play_view)", 0);
+       if(view_idx == 0)
+       {
+               last_history->navi_item =
+                       elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content,  "tabbar");
+       }
+       else if(MP_VIEW_CONTENT_PLAY == type)
        {
                elm_naviframe_prev_btn_auto_pushed_set(view_data->navibar, EINA_FALSE);
                last_history->navi_item =
                        elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content,  "1line/music");
        }
        else
-               last_history->navi_item =
-                       elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content,  "1line/music");
-
-       mp_view_manager_set_option_header_visible(last_history->navi_item, last_history->content_type);
-
-       if(view_idx == 0)
        {
-               mp_library_controlbar_visible_set(ad, true);
-               elm_naviframe_item_title_visible_set(last_history->navi_item, false);
+               if (last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST
+                       || last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT
+                       || last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP)
+               {
+                       last_history->navi_item =
+                               elm_naviframe_item_push(view_data->navibar, GET_STR("IDS_MUSIC_BODY_CREATE_PLAYLIST"), NULL, NULL, content, "1line");
+
+                       Evas_Object *btn_save = NULL;
+                       btn_save = elm_button_add(view_data->navibar);
+                       elm_object_style_set(btn_save, "naviframe/title/default");
+                       evas_object_size_hint_align_set(btn_save, EVAS_HINT_FILL, EVAS_HINT_FILL);
+                       if(last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST)
+                               evas_object_smart_callback_add(btn_save, "clicked", mp_playlist_view_create_new_done_cb, view_data);
+                       else if(last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP)
+                               evas_object_smart_callback_add(btn_save, "clicked", mp_menu_add_to_play_list_done_create_cb, ad);
+                       else
+                               evas_object_smart_callback_add(btn_save, "clicked", mp_edit_view_create_new_done_cb, evas_object_data_get(top_view, "layout_data"));
+
+                       elm_object_text_set(btn_save, GET_SYS_STR("IDS_COM_SK_SAVE"));
+                       mp_language_mgr_object_item_text_ID_set(last_history->navi_item, "IDS_COM_SK_SAVE");
+                       evas_object_show(btn_save);
+                       elm_object_item_part_content_set(last_history->navi_item, "title_left_btn", btn_save);
+
+                       Evas_Object *btn_cancel = elm_button_add(view_data->navibar);
+                       elm_object_style_set(btn_cancel, "naviframe/title/default");
+                       evas_object_size_hint_align_set(btn_cancel, EVAS_HINT_FILL, EVAS_HINT_FILL);
+                       evas_object_smart_callback_add(btn_cancel, "clicked", mp_playlist_view_create_new_cancel_cb, view_data);
+                       elm_object_text_set(btn_cancel, GET_SYS_STR("IDS_COM_SK_CANCEL"));
+                       mp_language_mgr_object_item_text_ID_set(last_history->navi_item, "IDS_COM_SK_CANCEL");
+                       evas_object_show(btn_cancel);
+                       elm_object_item_part_content_set(last_history->navi_item, "title_right_btn", btn_cancel);
+
+                       mp_view_manager_set_controlbar_visible(last_history->navi_item, false);
+               }
+               else
+               {
+                       last_history->navi_item =
+                               elm_naviframe_item_push(view_data->navibar, NULL, NULL, NULL, content,  "1line");
+               }
        }
-       else
-               mp_library_controlbar_visible_set(ad, false);
+       MP_TA_ACUM_ITEM_END("          elm_naviframe_item_push(play_view)", 0);
+
+       mp_language_mgr_register_object_item(last_history->navi_item, NULL);
 
        evas_object_data_set(content, "navi_item", last_history->navi_item);
 
-       if (view_idx)           //It shouldn't be set true when first navi content is pushed. Effect finished callback not called in this case..
+       if (view_idx)           //Do not set as true when first push. Effect finished callback not called in this case..
                ad->navi_effect_in_progress = TRUE;
 
        ad->view_history = g_list_append(ad->view_history, last_history);
@@ -119,6 +148,12 @@ void
 mp_view_manager_unswallow_info_ug_layout(struct appdata *ad)
 {
        MP_CHECK(ad);
+       if(ad->info_ug_base)
+       {
+               edje_object_part_unswallow(ad->info_ug_base, ad->info_ug_layout);
+               evas_object_hide(ad->info_ug_layout);
+               mp_ug_send_message(ad, MP_UG_MESSAGE_DEL);
+       }
 }
 
 void
@@ -142,7 +177,8 @@ mp_view_manager_pop_view_content(view_data_t * view_data, bool pop_to_first, boo
        {
                elm_naviframe_item_pop(view_data->navibar);
                ad->navi_effect_in_progress = TRUE;
-               SAFE_FREE(view_item->data);
+               mp_language_mgr_unregister_object_item(last_history->navi_item);
+               SAFE_FREE(last_history);
                ad->view_history =
                        g_list_delete_link(ad->view_history, view_item);
                view_item = g_list_last(ad->view_history);
@@ -158,7 +194,8 @@ mp_view_manager_pop_view_content(view_data_t * view_data, bool pop_to_first, boo
                elm_naviframe_item_pop_to(elm_naviframe_bottom_item_get(view_data->navibar));
                while (last_history->view_index > 0)
                {
-                       SAFE_FREE(view_item->data);
+                       mp_language_mgr_unregister_object_item(last_history->navi_item);
+                       SAFE_FREE(last_history);
                        ad->view_history =
                                g_list_delete_link(ad->view_history, view_item);
                        view_item = g_list_last(ad->view_history);
@@ -167,8 +204,6 @@ mp_view_manager_pop_view_content(view_data_t * view_data, bool pop_to_first, boo
                }
        }
 
-       mp_view_manager_set_option_header_visible(last_history->navi_item, last_history->content_type);
-
        Elm_Object_Item *navi_item = elm_naviframe_top_item_get(view_data->navibar);
        MP_CHECK(navi_item);
        Evas_Object *top_view = elm_object_item_content_get(navi_item);
@@ -196,31 +231,28 @@ mp_view_manager_pop_to_view_content(view_data_t * view_data, mp_view_content_t t
 
        mp_view_manager_unswallow_info_ug_layout(ad);
 
-       if (last_history->content_type != type) {
-               while (last_history->view_index > 0)
+       while (last_history->view_index > 0)
+       {
+               DEBUG_TRACE("Content type: %d", last_history->content_type);
+               if (last_history->content_type == type)
                {
-                       DEBUG_TRACE("Content type: %d", last_history->content_type);
-                       if (last_history->content_type == type)
-                       {
-                               find_view = true;
-                       }
-                       SAFE_FREE(view_item->data);
-                       ad->view_history =
-                               g_list_delete_link(ad->view_history, view_item);
-                       view_item = g_list_last(ad->view_history);
-                       MP_CHECK(view_item);
-                       last_history = view_item->data;
+                       find_view = true;
+               }
+               mp_language_mgr_unregister_object_item(last_history->navi_item);
+               SAFE_FREE(last_history);
+               ad->view_history =
+                       g_list_delete_link(ad->view_history, view_item);
+               view_item = g_list_last(ad->view_history);
+               MP_CHECK(view_item);
+               last_history = view_item->data;
 
-                       if (find_view)
-                       {
-                               elm_naviframe_item_pop_to(last_history->navi_item);
-                               break;
-                       }
+               if (find_view)
+               {
+                       elm_naviframe_item_pop_to(last_history->navi_item);
+                       break;
                }
        }
 
-       mp_view_manager_set_option_header_visible(last_history->navi_item, last_history->content_type);
-
        Elm_Object_Item *navi_item = elm_naviframe_top_item_get(view_data->navibar);
        MP_CHECK(navi_item);
        Evas_Object *top_view = elm_object_item_content_get(navi_item);
@@ -246,10 +278,9 @@ Evas_Object *
 mp_view_manager_get_last_view_layout(struct appdata * ad)
 {
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
+       MP_CHECK_NULL(ad->naviframe);
 
-       Evas_Object *cur_view = ad->library->cur_view;
-       MP_CHECK_NULL(cur_view);
+       Evas_Object *cur_view = ad->naviframe;
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
        MP_CHECK_NULL(cur_view_data);
@@ -269,11 +300,10 @@ mp_view_manager_get_play_view_navi_item(struct appdata *ad)
 {
        startfunc;
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
+       MP_CHECK_NULL(ad->naviframe);
 
        mp_view_histroy_t *history;
-       Evas_Object *cur_view = ad->library->cur_view;
-       MP_CHECK_NULL(cur_view);
+       Evas_Object *cur_view = ad->naviframe;
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
        MP_CHECK_NULL(cur_view_data);
@@ -304,8 +334,11 @@ mp_view_manager_play_view_title_label_set(struct appdata *ad, const char *title)
        MP_CHECK(ad);
 
        navi_item = mp_view_manager_get_play_view_navi_item(ad);
-       if(navi_item)
+       if(navi_item) {
+               MP_TA_ACUM_ITEM_BEGIN("          elm_object_item_text_set(play_view_title)", 0);
                elm_object_item_text_set(navi_item, title);
+               MP_TA_ACUM_ITEM_END("          elm_object_item_text_set(play_view_title)", 0);
+       }
 
 }
 
@@ -313,9 +346,8 @@ Evas_Object *
 mp_view_manager_get_first_view_layout(struct appdata *ad)
 {
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
 
-       Evas_Object *cur_view = ad->library->cur_view;
+       Evas_Object *cur_view = ad->naviframe;
        MP_CHECK_NULL(cur_view);
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
@@ -337,9 +369,8 @@ mp_view_manager_get_edit_view_layout(struct appdata * ad)
        mp_view_histroy_t *history = NULL;
 
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
 
-       Evas_Object *cur_view = ad->library->cur_view;
+       Evas_Object *cur_view = ad->naviframe;
        MP_CHECK_NULL(cur_view);
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
@@ -368,9 +399,8 @@ bool
 mp_view_manager_is_play_view(struct appdata * ad)
 {
        MP_CHECK_FALSE(ad);
-       MP_CHECK_FALSE(ad->library);
 
-       Evas_Object *cur_view = ad->library->cur_view;
+       Evas_Object *cur_view = ad->naviframe;
        MP_CHECK_FALSE(cur_view);
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
@@ -396,9 +426,8 @@ mp_view_manager_get_view_layout(struct appdata * ad, mp_view_content_t type)
        mp_view_histroy_t *history = NULL;
 
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
 
-       Evas_Object *cur_view = ad->library->cur_view;
+       Evas_Object *cur_view = ad->naviframe;
        MP_CHECK_NULL(cur_view);
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
@@ -472,7 +501,7 @@ _mp_view_manager_set_back_button(Evas_Object * navibar, mp_view_histroy_t * last
        Evas_Object *button = NULL;
        if(cb)
        {
-               button = mp_widget_create_button(navibar,  "naviframe/back_btn/music/default", NULL, NULL, cb, data);
+               button = mp_widget_create_button(navibar,  "naviframe/back_btn/default", NULL, NULL, cb, data);
                elm_object_item_part_content_set(last_history->navi_item, ELM_NAVIFRAME_ITEM_PREV_BTN, button);
        }
        else
@@ -496,138 +525,105 @@ _mp_view_manager_set_title_button(Evas_Object * navibar, mp_view_histroy_t * las
        {
                last_history->controlbar = elm_toolbar_add(navibar);
                elm_toolbar_shrink_mode_set(last_history->controlbar, ELM_TOOLBAR_SHRINK_EXPAND);
-               if(MP_OPTION_HEADER_COND(last_history->content_type))
-               {
-                       elm_object_style_set(last_history->controlbar, "music/naviframe");
-                       elm_object_item_part_content_set(last_history->navi_item, ELM_NAVIFRAME_ITEM_OPTIONHEADER, last_history->controlbar);
-               }
-               else
-               {
-                       elm_object_style_set(last_history->controlbar, "music/naviframe");
-                       elm_object_item_part_content_set(last_history->navi_item, ELM_NAVIFRAME_ITEM_CONTROLBAR, last_history->controlbar);
-               }
+               elm_object_style_set(last_history->controlbar, "naviframe");
+               elm_object_item_part_content_set(last_history->navi_item, ELM_NAVIFRAME_ITEM_CONTROLBAR, last_history->controlbar);
        }
 
        control_bar = last_history->controlbar;
        MP_CHECK(control_bar);
 
-       if(MP_OPTION_HEADER_COND(last_history->content_type))
-       {
-               if (label || icon_path)
-               {
-
-                       button = elm_button_add(control_bar);
-                       elm_object_style_set(button, "music/navigationbar_control/multiline");
 
-                       evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-                       evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.5);
+       if(!icon_path && !label)
+       {
+               Elm_Object_Item *item = elm_toolbar_item_append(control_bar, NULL, NULL, NULL, NULL);
+               elm_object_item_part_content_set(item, "object", button);
+               elm_object_item_disabled_set(item, EINA_TRUE);
+               last_history->control_buttons[type] = item;
+       }
+       else
+       {
+               button = elm_button_add(control_bar);
+               elm_object_style_set(button, "bottom_control");
 
-                       if (label)
-                               elm_object_text_set(button, label);
+               evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.5);
 
-                       evas_object_smart_callback_add(button, "clicked", cb, data);
-                       elm_object_focus_allow_set(button, EINA_FALSE); /* Cancel the rename mode without be focused */
+               evas_object_smart_callback_add(button, "clicked", cb, data);
+               elm_object_focus_allow_set(button, EINA_FALSE); /* Cancel the rename mode without be focused */
 
-                       evas_object_show(button);
+               if (icon_path) {
+                       Evas_Object *icon = elm_icon_add(control_bar);
+                       elm_icon_file_set(icon, icon_path, NULL);
+                       elm_object_content_set(button, icon);
                }
 
-               last_history->control_buttons[type] = elm_toolbar_item_append(control_bar, NULL, NULL, NULL, NULL);
-               elm_object_item_part_content_set(last_history->control_buttons[type], "object", button);
+               evas_object_show(button);
 
-               if (label)
-               {
-                       if (!strcmp(GET_SYS_STR("IDS_COM_SK_EDIT"), label) ||!strcmp(GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), label))
-                       {
-                               last_history->edit_button = last_history->control_buttons[type];
-                       }
-                       else if (!strcmp(GET_SYS_STR("IDS_COM_SK_SEARCH"), label))
-                       {
-                               last_history->search_button = last_history->control_buttons[type];
-                       }
-                       else if (!strcmp(GET_SYS_STR("IDS_COM_SK_CANCEL"), label))
-                       {
-                               last_history->cancel_button = last_history->control_buttons[type];
-                       }
-               }
+               Elm_Object_Item *item = elm_toolbar_item_append(control_bar, icon_path, NULL, cb, data);
+               last_history->control_buttons[type] = item;
        }
-       else
+
+       if (label)
        {
-               if(!icon_path && !label) {
-                       last_history->control_buttons[type] = elm_toolbar_item_append(control_bar, NULL, NULL, NULL, NULL);
-                       elm_object_item_disabled_set(last_history->control_buttons[type], EINA_TRUE);
+               if (!strcmp(GET_SYS_STR("IDS_COM_SK_EDIT"), label) ||!strcmp(GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), label))
+               {
+                       last_history->edit_button = last_history->control_buttons[type];
                }
-               else
+               else if (!strcmp(GET_SYS_STR("IDS_COM_SK_SEARCH"), label))
                {
-                       button = elm_button_add(control_bar);
-                       elm_object_style_set(button, "music/bottom_control");
-
-                       evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-                       evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0.5);
-
-                       evas_object_smart_callback_add(button, "clicked", cb, data);
-                       elm_object_focus_allow_set(button, EINA_FALSE); /* Cancel the rename mode without be focused */
-
-                       if(icon_path)
-                       {
-                               Evas_Object *icon = elm_icon_add(control_bar);
-                               elm_icon_file_set(icon, icon_path, NULL);
-                               elm_object_content_set(button, icon);
-                       }
-
-                       evas_object_show(button);
-
-                       Elm_Object_Item *item = elm_toolbar_item_append(control_bar, NULL, NULL, NULL, NULL);
-                       elm_object_item_part_content_set(item, "object", button);
-                       last_history->control_buttons[type] = item;
+                       last_history->search_button = last_history->control_buttons[type];
                }
-
-               if (label)
+               else if (!strcmp(GET_SYS_STR("IDS_COM_SK_CANCEL"), label))
                {
-                       if (!strcmp(GET_SYS_STR("IDS_COM_SK_EDIT"), label) ||!strcmp(GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), label))
-                       {
-                               last_history->edit_button = last_history->control_buttons[type];
-                       }
-                       else if (!strcmp(GET_SYS_STR("IDS_COM_SK_SEARCH"), label))
-                       {
-                               last_history->search_button = last_history->control_buttons[type];
-                       }
-                       else if (!strcmp(GET_SYS_STR("IDS_COM_SK_CANCEL"), label))
-                       {
-                               last_history->cancel_button = last_history->control_buttons[type];
-                       }
+                       last_history->cancel_button = last_history->control_buttons[type];
                }
        }
 }
 
 void
-mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void *data)
+mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *text_ID, void *data)
 {
        startfunc;
-       Evas_Object *content = NULL;
+       struct appdata *ad = NULL;
+       GList *last_node = NULL;
+       mp_view_histroy_t *last_history = NULL;
+       Evas_Object *navibar = NULL;
+       char *title = NULL;
        int i = 0;
 
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
 
-       struct appdata *ad = view_data->ad;
+       ad = view_data->ad;
        MP_CHECK(ad);
 
-       GList *last_item = g_list_last(ad->view_history);
-       MP_CHECK(last_item);
+       last_node = g_list_last(ad->view_history);
+       MP_CHECK(last_node);
 
-       mp_view_histroy_t *last_history = last_item->data;
+       last_history = last_node->data;
        MP_CHECK(last_history);
 
-       content = last_history->view_layout;
-       MP_CHECK(content);
-
-       Evas_Object *navibar = view_data->navibar;
+       navibar = ad->naviframe;
        MP_CHECK(navibar);
 
+       if(text_ID && strstr(text_ID, "IDS_COM"))
+               title = GET_SYS_STR(text_ID);
+       else
+               title = GET_STR(text_ID);
+
        if (title)
        {
                DEBUG_TRACE("title: %s", title);
+               if (last_history->content_type == MP_VIEW_CONTENT_PLAY)
+                       MP_TA_ACUM_ITEM_BEGIN("            elm_object_item_text_set(play_view_first)", 0);
+               else
+                       MP_TA_ACUM_ITEM_BEGIN("        elm_object_item_text_set(track_view)", 0);
                elm_object_item_text_set(last_history->navi_item, title);
+               mp_language_mgr_object_item_text_ID_set(last_history->navi_item, text_ID);
+               if (last_history->content_type == MP_VIEW_CONTENT_PLAY)
+                       MP_TA_ACUM_ITEM_END("            elm_object_item_text_set(play_view_first)", 0);
+               else
+                       MP_TA_ACUM_ITEM_END("        elm_object_item_text_set(track_view)", 0);
        }
 
        //delete all buttons...
@@ -651,6 +647,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
        {
                mp_layout_data_t *layout_data = evas_object_data_get(last_history->view_layout, "layout_data");
                MP_CHECK(layout_data);
+               DEBUG_TRACE("layout_data: 0x%x", layout_data);
                MP_CHECK_LAYOUT_DATA(layout_data);
 
                DEBUG_TRACE("MP_VIEW_CONTENT_LIST. category: %d, rename mode: %d, add tracks : %d ",
@@ -662,19 +659,19 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                        if (layout_data->ad->b_add_tracks)
                        {
                                DEBUG_TRACE("");
-                               _mp_view_manager_set_title_button(navibar, last_history, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"),
-                                                                 MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1,
-                                                                 mp_track_view_add_to_playlist_done_cb, data);
+                               _mp_view_manager_set_title_button(navibar, last_history,
+                                                                 GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_ICON_NAVI_CANCEL,
+                                                                 MP_NAVI_CONTROL_BUTTON1,
+                                                                 mp_track_view_add_to_playlist_cancel_cb, data);
                                _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
                                                          MP_NAVI_CONTROL_BUTTON2, NULL, NULL);
                                _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
                                                          MP_NAVI_CONTROL_BUTTON3, NULL, NULL);
                                _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
                                                          MP_NAVI_CONTROL_BUTTON4, NULL, NULL);
-                               _mp_view_manager_set_title_button(navibar, last_history,
-                                                                 GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_ICON_NAVI_CANCEL,
-                                                                 MP_NAVI_CONTROL_BUTTON5,
-                                                                 mp_track_view_add_to_playlist_cancel_cb, data);
+                               _mp_view_manager_set_title_button(navibar, last_history, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"),
+                                                                 MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON5,
+                                                                 mp_track_view_add_to_playlist_done_cb, data);
                        }
                        else
                        {
@@ -697,19 +694,18 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                                                                                  MP_NAVI_CONTROL_BUTTON1,
                                                                                  mp_edit_view_delete_cb, data);
                                        }
-                                       _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON2, NULL, NULL);
+                                       _mp_view_manager_set_title_button(navibar, last_history,
+                                                                         GET_STR("IDS_MUSIC_SK_SHARE"),
+                                                                         MP_ICON_NAVI_SHARE, MP_NAVI_CONTROL_BUTTON2,
+                                                                         mp_edit_view_share_cb, data);
                                        _mp_view_manager_set_title_button(navibar, last_history,
                                                                          GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), MP_ICON_NAVI_ADD_TO_PLST,
                                                                          MP_NAVI_CONTROL_BUTTON3,
                                                                          mp_edit_view_add_to_plst_cb, data);
-                                       _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON4, NULL, NULL);
                                        _mp_view_manager_set_title_button(navibar, last_history,
                                                                          GET_SYS_STR("IDS_COM_SK_CANCEL"),
-                                                                         MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON5,
+                                                                         MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON4,
                                                                          mp_edit_view_cencel_cb, data);
-
                                }
                                else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
                                {
@@ -728,7 +724,6 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                                                                          GET_SYS_STR("IDS_COM_SK_CANCEL"),
                                                                          MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON5,
                                                                          mp_edit_view_cencel_cb, data);
-
                                }
                                else
                                {
@@ -760,8 +755,8 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                        if (title)
                                layout_data->navibar_title = g_strdup(title);
 
-                       if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type
-                           || AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type)
+                       if (MP_TRACK_BY_ALBUM == layout_data->track_type
+                           || MP_TRACK_BY_ARTIST == layout_data->track_type)
                                layout_data->navibar_title = g_strdup(layout_data->type_str);
 
                        layout_data->callback_data = data;
@@ -772,7 +767,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                                        DEBUG_TRACE("");
                                        _mp_view_manager_set_title_button(navibar, last_history,
                                                                          GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"),
-                                                                         MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON5,
+                                                                         MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1,
                                                                          mp_track_view_add_to_playlist_done_cb, data);
                                        _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
                                                                          MP_NAVI_CONTROL_BUTTON2, NULL, NULL);
@@ -782,11 +777,11 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                                                                          MP_NAVI_CONTROL_BUTTON4, NULL, NULL);
                                        _mp_view_manager_set_title_button(navibar, last_history,
                                                                          GET_SYS_STR("IDS_COM_SK_CANCEL"),
-                                                                         MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON1,
+                                                                         MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON5,
                                                                          mp_track_view_add_to_playlist_cancel_cb,
                                                                          data);
                                }
-                               else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYLIST)
+                               else if (layout_data->track_type == MP_TRACK_BY_PLAYLIST)
                                {
                                        if (!mp_view_manager_get_view_layout(ad, MP_VIEW_CONTENT_SEARCH))
                                        {
@@ -797,6 +792,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                                                                                  mp_common_edit_button_cb, data);
                                                _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
                                                                                  MP_NAVI_CONTROL_BUTTON2, NULL, NULL);
+
                                                if (layout_data->playlist_id > 0)
                                                        _mp_view_manager_set_title_button(navibar, last_history,
                                                                                          GET_SYS_STR("IDS_COM_ADD"),
@@ -813,7 +809,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                                                                                          data);
 
                                                _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                               MP_NAVI_CONTROL_BUTTON4, NULL, NULL);
+                                                                                 MP_NAVI_CONTROL_BUTTON4, NULL, NULL);
                                        }
                                        else
                                        {
@@ -839,7 +835,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                                                        DEBUG_TRACE("");
                                                        _mp_view_manager_set_title_button(navibar, last_history,
                                                                                          GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"),
-                                                                                         MP_ICON_NAVI_EDIT,
+                                                                                         MP_ICON_NAVI_ADD_TO_PLST,
                                                                                          MP_NAVI_CONTROL_BUTTON1,
                                                                                          mp_common_edit_button_cb,
                                                                                          data);
@@ -861,7 +857,7 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                                                        DEBUG_TRACE("");
                                                        _mp_view_manager_set_title_button(navibar, last_history,
                                                                                          GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"),
-                                                                                         MP_ICON_NAVI_EDIT,
+                                                                                         MP_ICON_NAVI_ADD_TO_PLST,
                                                                                          MP_NAVI_CONTROL_BUTTON1,
                                                                                          mp_common_edit_button_cb,
                                                                                          data);
@@ -940,74 +936,6 @@ mp_view_manager_set_title_and_buttons(view_data_t * view_data, char *title, void
                }
 
        }
-       else if (last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST)
-       {
-               DEBUG_TRACE("MP_VIEW_CONTENT_NEW_PLAYLIST. ");
-               mp_layout_data_t *layout_data = evas_object_data_get(last_history->view_layout, "layout_data");
-               if (layout_data)
-               {
-                       MP_CHECK_LAYOUT_DATA(layout_data);
-                       if (layout_data->view_mode == MP_VIEW_MODE_EDIT)
-                       {
-                               DEBUG_TRACE("");
-                               _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_DONE"),
-                                                                 MP_ICON_NAVI_DONE, MP_NAVI_CONTROL_BUTTON1,
-                                                                 mp_edit_view_create_new_done_cb, data);
-                               _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON2, NULL, NULL);
-                               _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON3, NULL, NULL);
-                               _mp_view_manager_set_title_button(navibar, last_history,
-                                                                 GET_SYS_STR("IDS_COM_SK_CANCEL"), MP_ICON_NAVI_CANCEL,
-                                                                 MP_NAVI_CONTROL_BUTTON4,
-                                                                 mp_edit_view_create_new_cancel_cb, data);
-                       }
-               }
-               else
-               {
-                       DEBUG_TRACE("");
-                       _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_DONE"),
-                                                         MP_ICON_NAVI_DONE, MP_NAVI_CONTROL_BUTTON1,
-                                                         mp_playlist_view_create_new_done_cb, data);
-                       _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON2, NULL, NULL);
-                       _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON3, NULL, NULL);
-                       _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON4, NULL, NULL);
-                       _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_CANCEL"),
-                                                         MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON5,
-                                                         mp_playlist_view_create_new_cancel_cb, data);
-               }
-       }
-       else if (last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP)
-       {
-               DEBUG_TRACE("MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP. ");
-               _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_DONE"),
-                                                 MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1,
-                                                 mp_menu_add_to_play_list_done_create_cb, data);
-               _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON2, NULL, NULL);
-               _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON3, NULL, NULL);
-               _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_CANCEL"),
-                                                 MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON4,
-                                                 mp_menu_add_to_play_list_cancel_create_cb, data);
-       }
-       else if (last_history->content_type == MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT)
-       {
-               DEBUG_TRACE("MP_VIEW_CONTENT_NEW_PLAYLIST_BY_SWEEP. ");
-               _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_DONE"),
-                                                 MP_ICON_NAVI_ADD_TO_PLST, MP_NAVI_CONTROL_BUTTON1,
-                                                 mp_edit_view_create_new_done_cb, data);
-               _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON2, NULL, NULL);
-               _mp_view_manager_set_title_button(navibar, last_history, NULL, NULL,
-                                                                 MP_NAVI_CONTROL_BUTTON3, NULL, NULL);
-               _mp_view_manager_set_title_button(navibar, last_history, GET_SYS_STR("IDS_COM_SK_CANCEL"),
-                                                 MP_ICON_NAVI_CANCEL, MP_NAVI_CONTROL_BUTTON4,
-                                                 mp_edit_view_create_new_cancel_cb, data);
-       }
        else if (last_history->content_type == MP_VIEW_CONTENT_SEARCH)
        {
                DEBUG_TRACE("MP_VIEW_CONTENT_SEARCH. ");
@@ -1076,7 +1004,7 @@ mp_view_manager_freeze_progress_timer(struct appdata *ad)
 void
 mp_view_manager_thaw_progress_timer(struct appdata *ad)
 {
-       mp_retm_if(!ad->prohibit_aul_relaunch, "app is in background. not thaw progress timer.. ");
+       mp_retm_if(!ad->app_is_foreground, "app is in background. not thaw progress timer.. ");
 
        Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad);
        if (top_view)
@@ -1089,9 +1017,8 @@ Elm_Object_Item *
 mp_view_manager_get_edit_controlbar_item(struct appdata *ad)
 {
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
 
-       Evas_Object *cur_view = ad->library->cur_view;
+       Evas_Object *cur_view = ad->naviframe;
        MP_CHECK_NULL(cur_view);
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
@@ -1111,9 +1038,8 @@ Elm_Object_Item *
 mp_view_manager_get_search_controlbar_item(struct appdata * ad)
 {
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
 
-       Evas_Object *cur_view = ad->library->cur_view;
+       Evas_Object *cur_view = ad->naviframe;
        MP_CHECK_NULL(cur_view);
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
@@ -1133,9 +1059,8 @@ Elm_Object_Item *
 mp_view_manager_get_cancel_controlbar_item(struct appdata * ad)
 {
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
 
-       Evas_Object *cur_view = ad->library->cur_view;
+       Evas_Object *cur_view = ad->naviframe;
        MP_CHECK_NULL(cur_view);
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
@@ -1156,9 +1081,8 @@ Elm_Object_Item *
 mp_view_manager_get_controlbar_item(struct appdata * ad, mp_navi_control_button_type type)
 {
        MP_CHECK_NULL(ad);
-       MP_CHECK_NULL(ad->library);
 
-       Evas_Object *cur_view = ad->library->cur_view;
+       Evas_Object *cur_view = ad->naviframe;
        MP_CHECK_NULL(cur_view);
 
        view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
@@ -1174,32 +1098,52 @@ mp_view_manager_get_controlbar_item(struct appdata * ad, mp_navi_control_button_
        return last_history->control_buttons[type];
 }
 
+Elm_Object_Item *
+mp_view_manager_get_navi_item(struct appdata * ad)
+{
+       MP_CHECK_NULL(ad);
+
+       Evas_Object *cur_view = ad->naviframe;
+       MP_CHECK_NULL(cur_view);
+
+       view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
+       MP_CHECK_NULL(cur_view_data);
+       MP_CHECK_VIEW_DATA(cur_view_data);
+
+       GList *last_item = g_list_last(ad->view_history);
+       MP_CHECK_NULL(last_item);
+
+       mp_view_histroy_t *last_history = last_item->data;
+       MP_CHECK_NULL(last_history);
+
+       return last_history->navi_item;
+}
+
 void
 mp_view_manager_pop_info_view(struct appdata *ad)
 {
        MP_CHECK(ad);
-       MP_CHECK(ad->library);
-       MP_CHECK(ad->playing_view);
+       MP_CHECK(ad->naviframe);
 
-       view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data");
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
        MP_CHECK(view_data);
 
-       mp_view_manager_pop_to_view_content(view_data, MP_VIEW_CONTENT_PLAY);
+       if(ad->info_ug_base)
+               mp_view_manager_pop_to_view_content(view_data, MP_VIEW_CONTENT_PLAY);
 
        MP_CHECK(ad->playing_view);
-       if (ad->playing_view->layout)
-               evas_object_show(ad->playing_view->layout);
+       evas_object_show(ad->playing_view->layout);
 }
 
 void
 mp_view_manager_pop_play_view(struct appdata *ad)
 {
        MP_CHECK(ad);
-       MP_CHECK(ad->library);
+       MP_CHECK(ad->naviframe);
 
        view_data_t *view_data;
 
-       view_data = evas_object_data_get(ad->library->cur_view, "view_data");
+       view_data = evas_object_data_get(ad->naviframe, "view_data");
        MP_CHECK(view_data);
 
        if (ad->playing_view)
@@ -1211,25 +1155,26 @@ mp_view_manager_clear(struct appdata *ad)
 {
        MP_CHECK(ad);
 
-       GList *view_item = g_list_last(ad->view_history);
-
-       while (ad->view_history)
+       GList *view_item = ad->view_history;
+       while (view_item)
        {
-               SAFE_FREE(view_item->data);
-               ad->view_history =
-                       g_list_delete_link(ad->view_history, ad->view_history);
+               mp_view_histroy_t *last_history = view_item->data;
+               mp_language_mgr_unregister_object_item(last_history->navi_item);
+               SAFE_FREE(last_history);
+               view_item = g_list_delete_link(view_item, view_item);
        }
-
+       ad->view_history = NULL;
 }
 
 void
-mp_view_manager_set_option_header_visible(Elm_Object_Item *navi_item, mp_view_content_t content_type)
+mp_view_manager_set_controlbar_visible(Elm_Object_Item *navi_item, bool visible)
 {
-       DEBUG_TRACE("content type: %d", content_type);
-       if(MP_OPTION_HEADER_COND(content_type))
-               elm_object_item_signal_emit(navi_item, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN);
-       else
-               elm_object_item_signal_emit(navi_item, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE);
+       startfunc;
+       MP_CHECK(navi_item);
 
+       DEBUG_TRACE("visible: %d", visible);
+       if(visible)
+               elm_object_item_signal_emit(navi_item, "elm,state,controlbar,open", "");
+       else
+               elm_object_item_signal_emit(navi_item, "elm,state,controlbar,close", "");
 }
-
index 7f7a4fb..2a1b949 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
 #include "mp-widget.h"
 #include "mp-player-debug.h"
-#include "mp-common.h"
 #include "mp-util.h"
 #include "mp-popup.h"
+#ifndef MP_SOUND_PLAYER
+#include "mp-common.h"
+#endif
 
 #define MAX_LEN_VIB_DURATION 0.5
 
+static void _mp_widget_genlist_flick_left_cb(void *data, Evas_Object * obj, void *event_info);
+static void _mp_widget_genlist_flick_right_cb(void *data, Evas_Object * obj, void *event_info);
+static void _mp_widget_genlist_flick_stop_cb(void *data, Evas_Object * obj, void *event_info);
+static void _mp_widget_realize_genlist_cb(void *data, Evas_Object * obj, void *event_info);
+
+
+static Evas_Object *g_main_win;
+
+
 static void
-_mp_widget_genlist_flick_start_cb(void *data, Evas_Object * obj, void *event_info)
+_mp_widget_genlist_flick_left_cb(void *data, Evas_Object * obj, void *event_info)
 {
-       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       if(ad->vertical_scroll)
+               return;
+       elm_object_scroll_freeze_push(obj);
+}
+
+static void
+_mp_widget_genlist_flick_right_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       if(ad->vertical_scroll)
+               return;
        elm_object_scroll_freeze_push(obj);
 }
 
 static void
 _mp_widget_genlist_flick_stop_cb(void *data, Evas_Object * obj, void *event_info)
 {
-       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       ad->vertical_scroll = false;
        elm_object_scroll_freeze_pop(obj);
 }
 
+static void
+_mp_widget_realize_genlist_cb(void *data, Evas_Object * obj, void *event_info)
+{
+
+}
+
 Evas_Object *
 mp_widget_navigation_new(Evas_Object * parent, struct appdata *ad)
 {
@@ -44,28 +75,82 @@ mp_widget_navigation_new(Evas_Object * parent, struct appdata *ad)
        mp_retv_if(parent == NULL, NULL);
        navi_bar = elm_naviframe_add(parent);
        mp_retvm_if(navi_bar == NULL, NULL, "Fail to create navigation bar");
+#ifndef MP_SOUND_PLAYER
        evas_object_smart_callback_add(navi_bar, "transition,finished", mp_common_navigationbar_finish_effect, ad);
+#endif
        evas_object_show(navi_bar);
        return navi_bar;
 }
 
+static void
+_mp_widget_gl_mode_right(void *data, Evas_Object * obj, void *event_info)
+{
+       MP_CHECK(obj);
+       MP_CHECK(event_info);
+
+       /* reset old sweep item mode */
+       mp_util_reset_genlist_mode_item(obj);
+
+       // disable sweep if edit mode.
+       MP_CHECK(elm_genlist_decorate_mode_get(obj) == EINA_FALSE);
+       MP_CHECK(elm_genlist_item_flip_get(event_info) == EINA_FALSE);
+       // Start genlist sweep
+       elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_TRUE);
+       elm_genlist_item_select_mode_set(event_info, ELM_OBJECT_SELECT_MODE_NONE);
+}
+
+static void
+_mp_widget_gl_mode_left(void *data, Evas_Object * obj, void *event_info)
+{
+       MP_CHECK(obj);
+       MP_CHECK(event_info);
+       // disable sweep if edit mode.
+       MP_CHECK(elm_genlist_decorate_mode_get(obj) == EINA_FALSE);
+       MP_CHECK(elm_genlist_item_flip_get(event_info) == EINA_FALSE);
+       // Finish genlist sweep
+       elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_FALSE);
+       elm_genlist_item_select_mode_set(event_info, ELM_OBJECT_SELECT_MODE_DEFAULT);
+}
+
+static void
+_mp_widget_gl_mode_cancel(void *data, Evas_Object * obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       MP_CHECK(obj);
+
+       mp_util_reset_genlist_mode_item(obj);
+
+       ad->vertical_scroll = true;
+}
+
 Evas_Object *
 mp_widget_genlist_create(struct appdata *ad, Evas_Object * parent, bool homogeneous)
 {
        Evas_Object *list = NULL;
 
+       MP_TA_ACUM_ITEM_BEGIN("elm_genlist_add()", 0);
        list = elm_genlist_add(parent);
+       MP_TA_ACUM_ITEM_END("elm_genlist_add()", 0);
        CHECK(list);
+       evas_object_data_set(list, "ap", ad);
        evas_object_show(list);
        elm_genlist_mode_set(list, ELM_LIST_COMPRESS);
        elm_genlist_homogeneous_set(list, homogeneous);
+
        evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_smart_callback_add(list, "realized", _mp_widget_realize_genlist_cb, ad);
 
-       evas_object_smart_callback_add(list, "drag,start,left", _mp_widget_genlist_flick_start_cb, ad);
-       evas_object_smart_callback_add(list, "drag,start,right", _mp_widget_genlist_flick_start_cb, ad);
+       evas_object_smart_callback_add(list, "drag,start,left", _mp_widget_genlist_flick_left_cb, ad);
+       evas_object_smart_callback_add(list, "drag,start,right", _mp_widget_genlist_flick_right_cb, ad);
        evas_object_smart_callback_add(list, "drag,stop", _mp_widget_genlist_flick_stop_cb, ad);
 
+       evas_object_smart_callback_add(list, "drag,start,right", _mp_widget_gl_mode_right, NULL);
+       evas_object_smart_callback_add(list, "drag,start,left", _mp_widget_gl_mode_left, NULL);
+       evas_object_smart_callback_add(list, "drag,start,up", _mp_widget_gl_mode_cancel, ad);
+       evas_object_smart_callback_add(list, "drag,start,down", _mp_widget_gl_mode_cancel, ad);
+
        return list;
 }
 
@@ -73,15 +158,13 @@ static void
 _mp_widget_lowbattery_del_cb(void *data, Evas * e, Evas_Object * eo, void *event_info)
 {
        struct appdata *ad = (struct appdata *)data;
-       ad->popup[MP_POPUP_NORAML] = NULL;
+       ad->popup[MP_POPUP_NORMAL] = NULL;
 }
 
 static void
 _mp_widget_lowbattery_res_cb(void *data, Evas_Object * obj, void *event_info)
 {
-       evas_object_del(obj);
-
-       return;
+       mp_evas_object_del(obj);
 }
 
 bool
@@ -91,10 +174,9 @@ mp_widget_check_lowbattery(void *data, Evas_Object * parent)
 
        if (mp_check_battery_available())
        {
-               Evas_Object *popup = elm_popup_add(parent);
-               mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_BODY_LOW_BATTERY"));
-               mp_popup_set_response_cb(popup, _mp_widget_lowbattery_res_cb, ad);
-               mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES);
+               Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, NULL, _mp_widget_lowbattery_res_cb, ad);
+               elm_object_text_set(popup, GET_SYS_STR("IDS_COM_BODY_LOW_BATTERY"));
+               mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_OK"), 0);
                evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_widget_lowbattery_del_cb, ad);
                evas_object_show(popup);
 
@@ -104,81 +186,27 @@ mp_widget_check_lowbattery(void *data, Evas_Object * parent)
        return TRUE;
 }
 
-bool
-mp_widget_load_fastscroller(Evas_Object * index, struct music_list_item * item, char **latest_string)
+static void
+_mp_widget_text_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       char *current_group_title = NULL;
-       char *item_value = NULL;
-
-       MP_CHECK_FALSE(index);
-       MP_CHECK_FALSE(item);
-
-       audio_svc_track_data_type_e item_type = AUDIO_SVC_TRACK_DATA_TITLE;
-       bool make_group_title = false;
-
-
-       struct appdata *ad = item->ad;
-       MP_CHECK_FALSE(ad);
-
-       item_type = (int)evas_object_data_get(index, MP_FAST_SCROLLER_TYPE);
-
-       item_value = mp_util_item_get_value_by_type(item_type, item);
-
-       if (item_value)
-       {
-               if (*latest_string)
-               {
-                       char *title_initial = mp_util_get_utf8_initial(item_value);
-
-                       if (title_initial)
-                       {
-                               if (strcmp(*latest_string, title_initial) != 0)
-                               {
-                                       make_group_title = TRUE;
-                                       current_group_title = title_initial;
-                               }
-                               else
-                               {
-                                       make_group_title = false;
-                                       IF_FREE(title_initial);
-                               }
-                       }
-               }
-               else
-               {
-                       make_group_title = true;
-                       current_group_title = mp_util_get_utf8_initial(item_value);
-                       mp_debug("latest_set_group is invalid=%s", current_group_title);
-               }
-       }
-
-       if (current_group_title && make_group_title)
-       {
-               mp_debug("current_group_title =%s", current_group_title);
-               elm_index_item_append(index, current_group_title, NULL, item->list_item);
-               IF_FREE(*latest_string);
-               *latest_string = strdup(current_group_title);
-       }
-
-       IF_FREE(current_group_title);
-       IF_FREE(item_value);
+       mp_evas_object_del(obj);
 
-       return true;
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+       ad->notify_delete = NULL;
 }
 
-
 int
 mp_widget_text_popup(void *data, const char *message)
 {
        struct appdata *ad = data;
        Evas_Object *popup;
-       popup = elm_popup_add(ad->win_main);
+       popup = mp_popup_create(ad->win_main, MP_POPUP_NOTIFY, NULL, ad, _mp_widget_text_popup_timeout_cb, ad);
        ad->notify_delete = popup;
 
        evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       mp_popup_desc_set(popup, message);
-       mp_popup_block_clicked_set(popup);
-       mp_popup_timeout_set(popup, 2.0);
+       elm_object_text_set(popup, message);
+       mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT);
        evas_object_show(popup);
        return 0;
 }
@@ -218,6 +246,7 @@ mp_widget_create_bgimg(Evas_Object * parent)
        elm_win_resize_object_add(parent, bg);
        evas_object_color_set(bg, 37, 37, 37, 255);
        evas_object_show(bg);
+
        return bg;
 }
 
@@ -293,6 +322,7 @@ _mp_widget_entry_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emi
        elm_entry_entry_set(entry, "");
 }
 
+
 Evas_Object *
 mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt, struct appdata *ad)
 {
@@ -309,7 +339,7 @@ mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt
 
        entry = elm_entry_add(editfield);
        MP_CHECK_NULL(entry);
-       elm_object_style_set(entry, "music/default");
+       elm_object_style_set(entry, "default");
        elm_entry_single_line_set(entry, EINA_TRUE);
        elm_entry_scrollable_set(entry, EINA_TRUE);
        elm_entry_autocapital_type_set(entry, ELM_AUTOCAPITAL_TYPE_NONE);
@@ -336,6 +366,7 @@ mp_widget_create_editfield(Evas_Object * parent, int limit_size, char *guide_txt
                elm_object_part_text_set(editfield, "elm.guidetext", guide_txt);
 
        return editfield;
+
 }
 
 Evas_Object *
@@ -348,13 +379,13 @@ mp_widget_editfield_entry_get(Evas_Object *editfield)
        return entry;
 }
 
-
 Evas_Object *
 mp_widget_create_title_btn(Evas_Object *parent, const char *text, const char * icon_path, Evas_Smart_Cb func, void *data)
 {
        Evas_Object *btn = elm_button_add(parent);
        Evas_Object * icon = NULL;
        MP_CHECK_NULL(btn);
+
        if(text)
                elm_object_text_set(btn, text);
        else if(icon_path)
@@ -363,8 +394,96 @@ mp_widget_create_title_btn(Evas_Object *parent, const char *text, const char * i
                MP_CHECK_NULL(icon);
                elm_icon_file_set(icon, icon_path, NULL);
                elm_object_content_set(btn, icon);
-               elm_object_style_set(btn, "music/title_button");
+               elm_object_style_set(btn, "title_button");
        }
        evas_object_smart_callback_add(btn, "clicked", func, data);
        return btn;
 }
+
+Evas_Object *
+mp_widget_create_layout_main(Evas_Object * parent)
+{
+       Evas_Object *layout;
+
+       mp_retv_if(parent == NULL, NULL);
+       MP_TA_ACUM_ITEM_BEGIN("        elm_layout_add", 0);
+       layout = elm_layout_add(parent);
+       MP_TA_ACUM_ITEM_END("        elm_layout_add", 0);
+       mp_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
+
+       MP_TA_ACUM_ITEM_BEGIN("        elm_layout_theme_set()", 0);
+       const char *profile = elm_config_profile_get();
+       mp_debug("elm_profile = %s", profile);
+       if (!g_strcmp0(profile, "desktop"))
+               elm_layout_theme_set(layout, "layout", "application", "noindicator");
+       else
+               elm_layout_theme_set(layout, "layout", "application", "default");
+       MP_TA_ACUM_ITEM_END("        elm_layout_theme_set()", 0);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, layout);
+
+       evas_object_show(layout);
+
+       return layout;
+}
+
+inline Evas_Object *
+mp_common_load_edj(Evas_Object * parent, const char *file, const char *group)
+{
+       Evas_Object *eo = NULL;
+       int r = -1;
+
+       eo = elm_layout_add(parent);
+       if (eo)
+       {
+               r = elm_layout_file_set(eo, file, group);
+               if (!r)
+               {
+                       evas_object_del(eo);
+                       return NULL;
+               }
+               evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(eo);
+       }
+
+       return eo;
+}
+
+static void
+_mp_common_win_del(void *data, Evas_Object * obj, void *event)
+{
+       elm_exit();
+}
+
+Evas_Object *
+mp_create_win(const char *name)
+{
+       Evas_Object *eo;
+       int w, h;
+
+       if (g_main_win)
+               return g_main_win;
+
+       MP_TA_ACUM_ITEM_BEGIN("      elm_win_add()", 0);
+       g_main_win = eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+       MP_TA_ACUM_ITEM_END("      elm_win_add()", 0);
+       if (eo)
+       {
+               elm_win_title_set(eo, name);
+               evas_object_smart_callback_add(eo, "delete,request", _mp_common_win_del, NULL);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+               evas_object_resize(eo, w, h);
+       }
+
+       return eo;
+}
+
+Evas_Object *
+mp_get_main_win(void)
+{
+       if (!g_main_win)
+               ERROR_TRACE("main_win is NULL, create it first!!!!!");
+       return g_main_win;
+}
+
+
index 2de91cb..470a9b2 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,7 +15,6 @@
  */
 
 
-
 #ifndef __mp_file_tag_info_H__
 #define __mp_file_tag_info_H__
 
@@ -33,13 +32,16 @@ typedef struct _tag_info_t
        char *track;
        char *rating;
        int duration;
-       int audio_codec;
        int audio_samplerate;
        int audio_bitrate;
        int audio_channel;
 } mp_tag_info_t;
 
+/* tag_info which must be freed with mp_file_tag_free() after use. */
 int mp_file_tag_info_get_all_tag(const char *filename, mp_tag_info_t * tag_info);
-void mp_file_tag_free(mp_tag_info_t * tag_info);
 
+char *mp_file_tag_info_get_genre(const char *filename);
+int mp_file_tag_info_get_albumart(const char *filename, char **albumart_path);
+
+void mp_file_tag_free(mp_tag_info_t * tag_info);
 #endif //__mp_file_tag_info_H__
index c70b412..3f86af5 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,7 +15,6 @@
  */
 
 
-
 #ifndef __MP_HTTP_MGR_H__
 #define __MP_HTTP_MGR_H__
 
@@ -25,6 +24,7 @@
 typedef enum
 {
        MP_HTTP_SVC_DEFAULT,
+       MP_HTTP_SVC_SHAZAM,
        MP_HTTP_SVC_STREAMING,
        MP_HTTP_SVC_MAX,
 } mp_http_svc_type;
@@ -42,6 +42,7 @@ typedef enum
 } MpHttpRespResultType_t;
 
 typedef void (*MpHttpRespCb) (gpointer user_data, int type, char *id, MpHttpRespResultType_t res, int view_id);
+typedef void (*MpHttpOpenCb) (gpointer user_data);
 typedef bool (*MpHttpRespExcuteCb)(gpointer user_data, mp_http_response_type response_type);
 typedef bool(*MpHttpOpenExcuteCb) (gpointer user_data);
 
@@ -56,7 +57,7 @@ typedef enum
 typedef struct mp_http_mgr_t
 {
        struct appdata *ad;
-       MpHttpState_t http_state;
+       MpHttpState_t http_state;               //the state of the http
        char ip[HTTP_ADDR_LEN_MAX];
        char proxy[HTTP_ADDR_LEN_MAX];
 
@@ -79,8 +80,7 @@ typedef struct mp_http_data_t
 bool mp_http_mgr_create(void *data);
 bool mp_http_mgr_destory(void *data);
 MpHttpState_t mp_http_mgr_get_state(void *data);
-/* return value should be freed */
-char* mp_http_mgr_get_user_agent();
+char* mp_http_mgr_get_user_agent(); /* return value should be freed */
 
 const char* mp_http_mgr_get_ip(void *data);
 const char* mp_http_mgr_get_proxy(void *data);
@@ -88,4 +88,5 @@ bool mp_http_mgr_get_svc_state(void *data, mp_http_svc_type svc_type);
 bool mp_http_mgr_start_svc(void *data, mp_http_svc_type svc_type, MpHttpOpenExcuteCb open_cb, MpHttpRespExcuteCb rsp_cb, gpointer cb_data);
 bool mp_http_mgr_stop_svc(void *data, mp_http_svc_type svc_type, mp_http_response_type response_type);
 
+#define TOKEN "025B58C0"
 #endif //__MP_HTTP_MGR_H__
diff --git a/src/core/include/mp-language-mgr.h b/src/core/include/mp-language-mgr.h
new file mode 100755 (executable)
index 0000000..2c0a179
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MP_LANGUAGE_CHANGER_H
+#define __MP_LANGUAGE_CHANGER_H
+
+#include <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
+
index 3d0826d..51329e9 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #ifndef __MP_PLAY_LIST_H_
 #define __MP_PLAY_LIST_H_
 
-#include <mm_player.h>
 #include "mp-define.h"
+#include "mp-media-info.h"
 typedef enum
 {
        MP_PLST_TYPE_NONE,
@@ -37,9 +35,10 @@ typedef enum
 
 typedef struct mp_list_item
 {
-       char fid[AUDIO_SVC_UUID_SIZE+1];
+       char *fid;
        gint list_index;
-       bool removed;
+
+       mp_plst_type_t item_type;
 } mp_list_item;
 
 typedef struct music_list_item
@@ -50,22 +49,24 @@ typedef struct music_list_item
        /* music metadata */
        int id;
        char filename[MAX_NAM_LEN+1];
-       char title[AUDIO_SVC_METADATA_LEN_MAX+1];
-       char artist[AUDIO_SVC_METADATA_LEN_MAX+1];
-       char album[AUDIO_SVC_METADATA_LEN_MAX+1];
+       char title[MP_METADATA_LEN_MAX+1];
+       char artist[MP_METADATA_LEN_MAX+1];
+       char album[MP_METADATA_LEN_MAX+1];
        char time[16];
        char albumart[MAX_NAM_LEN+1];
+       int favorite;
        struct appdata *ad;
        struct music_list_item *prev;
        struct music_list_item *next;
 
-       char key_id[AUDIO_SVC_UUID_SIZE+1];
-       gint playlist_uid;
+       char *key_id;
+       gint playlist_uid;      //playlist_uid; Use it to remove from favorite playlist...
        gint index;             // private.
        gint list_index;
        gboolean checked;
        gint order;
 
+       // to disable favorite button for sound type
        int category;
 
 } music_list_item;
@@ -86,12 +87,14 @@ typedef struct
        char *type_string;
        char *filter_string;
        int playlist_id;
-       audio_svc_track_type_e item_type;
+       mp_track_type_e item_type;
+
 } mp_play_list;
 
 void mp_play_list_item_copy(music_list_item ** to, music_list_item * from);
 
 music_list_item *mp_play_list_get_current_item(mp_play_list * playing_list);   // do not free
+mp_list_item *mp_play_list_get_nth_item(mp_play_list * playing_list, int index);
 bool mp_play_list_get_prev_item(void *data, mp_play_list * play_list, music_list_item ** item);        //must be free , allocation inside
 mp_plst_ret_t mp_play_list_get_next_item(void *data, mp_play_list * play_list, music_list_item ** item, bool forced);  //must be free , allocation inside
 bool mp_play_list_get_item_by_index(void *data, mp_play_list * playing_list, music_list_item ** item, int value);      //must be free , allocation inside
@@ -105,12 +108,12 @@ bool mp_play_list_clear_play_list(mp_play_list ** play_list);
 
 bool mp_play_list_refresh(void *data);
 bool mp_play_list_reset(void *data, mp_play_list ** set_play_list, char *fid);
-bool mp_play_list_create_play_list(void *data, AudioHandleType * svc_track, int count, int current_index,
+bool mp_play_list_create_play_list(void *data, mp_media_list_h svc_track, int count, int current_index,
                                   int playlist_id);
 bool mp_play_list_create_by_path(void *data, mp_play_list ** set_play_list, char *path);
 bool mp_play_list_remove_item_by_key(mp_play_list * play_list, char *key_id);
 bool mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list,
-                                          AudioHandleType * svc_track, const char *full_path,
+                                          mp_media_list_h svc_track, const char *full_path,
                                           int count, int current_index, bool shuffler_play_list, int playlist_id);
-bool mp_play_list_delete_item(mp_play_list *playing_list, char *fid);
 #endif
+
index bbca4c1..c0fe119 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #ifndef __DEF_music_player_contro_H_
 #define __DEF_music_player_contro_H_
 
@@ -31,10 +29,10 @@ void mp_play_control_volume_cb(void *data, Evas_Object * o, const char *emission
 void mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const char *source);
 void mp_play_control_end_of_stream(void *data);
 bool mp_player_control_ready_new_file(void *data, bool check_drm);
+
 void mp_play_stop_and_updateview(void *data, bool mmc_removed);
 void mp_play_control_visible_set(void *data, bool play_enable);
 void mp_play_control_shuffle_set(void *data, bool shuffle_enable);
 void mp_play_control_repeat_set(void *data, int repeat_state);
 
-
 #endif /*__DEF_music_player_contro_H_*/
index 3a03d99..b02c9a3 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #ifndef __MP_PLAYER_DRM_H_
 #define __MP_PLAYER_DRM_H_
 
@@ -28,18 +26,58 @@ typedef struct
        char description[256];
 } mp_drm;
 
-void mp_drm_set_consumption(bool enabled);
-bool mp_drm_get_consumption(void);
-void mp_drm_start_consumption(char *path);
-void mp_drm_pause_consumption(void);
-void mp_drm_resume_consumption(void);
-void mp_drm_stop_consumption(void);
+typedef struct
+{
+       char *type;
+       char *validity;
+} mp_drm_right_status_t;
+
+typedef enum
+{
+       SETAS_REQUEST_CHECK_STATUS,
+       SETAS_REQUEST_REGISTER,
+       SETAS_REQUEST_UNREGISTER,
+} mp_drm_setas_request_type_e;
+
+typedef enum {
+       DRM_CONTENT_INFO_NULL = -1,
+       DRM_CONTENT_INFO_AUTHOR,
+       DRM_CONTENT_INFO_RIGHTS_URL,
+       DRM_CONTENT_INFO_DESCRIPTION,
+} drm_content_info_e;
+
+enum {
+       MP_DRM_CONSTRAINT_UNLIMITED                     = 0x0,
+       MP_DRM_CONSTRAINT_COUNT                         = 0x01,
+       MP_DRM_CONSTRAINT_DATE_TIME                     = 0x02,
+       MP_DRM_CONSTRAINT_INTERVAL                      = 0x04,
+       MP_DRM_CONSTRAINT_TIMED_COUNT           = 0x08,
+       MP_DRM_CONSTRAINT_ACCUMLATED_TIME       = 0x10,
+};
+
+typedef struct {
+       int constraints;
+
+       int remaining_count;
+       bool date_time_expired;
+       int remaining_interval_sec;
+       int remaining_timed_count;
+       int remaining_acc_sec;
+} mp_constraints_info_s;
+
+bool mp_drm_get_content_info(const char *path, drm_content_info_e first_info, ...);
+void mp_drm_set_notify(void *data, char *message);
 bool mp_drm_file_right(char *path);
 bool mp_drm_has_valid_ro(char *path);
 bool mp_drm_get_description(void *data, char *path);
 bool mp_drm_check_forward(void *data, char *path);
+bool mp_drm_get_left_ro_info(const char *path, mp_constraints_info_s *info);
 bool mp_drm_check_left_ro(void *data, char *path);
 bool mp_drm_check_expiration(char *path, bool expired);
 bool mp_drm_check_foward_lock(char *path);
+GList* mp_drm_get_right_status(const char *path);
+void mp_drm_free_right_status(GList *list);
+bool mp_drm_request_setas_ringtone(const char *path, mp_drm_setas_request_type_e type);
+
 
 #endif /*__MP_PLAYER_DRM_H_*/
index 5454fa2..1600e3f 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
 #ifndef __MP_player_mgr_H_
 #define __MP_player_mgr_H_
 
-#include <mm_sound.h>
-#include <mm_sound_private.h>
-#include <mm_player.h>
+#include <sound_manager.h>
+#include <player.h>
 #include <vconf.h>
 
+#define EQ_USER_SLOT_NUM               7
+
+typedef enum {
+       MP_AUDIO_EFFECT_CUSTOM_EQ,
+       MP_AUDIO_EFFECT_3D,
+       MP_AUDIO_EFFECT_BASS,
+       MP_AUDIO_EFFECT_ROOM,
+       MP_AUDIO_EFFECT_REVERB,
+       MP_AUDIO_EFFECT_CLARITY,
+       MP_AUDIO_EFFECT_NUM,
+} Mp_Audio_Effect_Type;
+
+typedef struct {
+       /* equalizer */
+       double eq_level[EQ_USER_SLOT_NUM];
+
+       /* extended */
+       double effect_ratio[MP_AUDIO_EFFECT_NUM];
+} Audio_Effect_Data;
+
+
+typedef void (*Seek_Done_Cb)(void *data);
+
 bool mp_player_mgr_is_active(void);
-void mp_player_mgr_pipe_cb(void *data, void *buffer, unsigned int nbyte);
-bool mp_player_mgr_set_msg_callback(MMMessageCallback cb, gpointer user_data);
+void mp_player_mgr_set_started_cb(player_started_cb  callback, void *user_data);
+void mp_player_mgr_set_paused_cb(player_paused_cb  callback, void *user_data);
+void mp_player_mgr_set_completed_cb(player_completed_cb  callback, void *user_data);
+void mp_player_mgr_set_interrupted_cb(player_interrupted_cb  callback, void *user_data);
+void mp_player_mgr_set_error_cb(player_error_cb  callback, void *user_data);
+void mp_player_mgr_set_buffering_cb(player_buffering_cb  callback, void *user_data);
+void mp_player_mgr_unset_started_cb(void);
+void mp_player_mgr_unset_paused_cb(void);
+void mp_player_mgr_unset_completed_cb(void);
+void mp_player_mgr_unset_interrupted_cb(void);
+void mp_player_mgr_unset_error_cb(void);
+void mp_player_mgr_unset_buffering_cb(void);
+
 bool mp_player_mgr_create(void *data, const gchar * path);
 bool mp_player_mgr_destroy(void *data);
 bool mp_player_mgr_realize(void *data);
@@ -35,15 +67,13 @@ bool mp_player_mgr_stop(void *data);
 bool mp_player_mgr_resume(void *data);
 bool mp_player_mgr_pause(void *data);
 void mp_player_mgr_set_mute(bool bMuteEnable);
-bool mp_player_mgr_set_position(guint pos);
+bool mp_player_mgr_set_position(guint pos, Seek_Done_Cb done_cb, void *data);
 int mp_player_mgr_get_position(void);
 int mp_player_mgr_get_duration(void);
-int player_msg_cb(int msg_type, void *msg_param, void *user_param);
-
 int mp_player_mgr_vol_type_set(void);
 int mp_player_mgr_vol_type_unset(void);
 bool mp_player_mgr_session_init(void);
 bool mp_player_mgr_session_finish(void);
 
-MMPlayerStateType mp_player_mgr_get_state(void);
+player_state_e mp_player_mgr_get_state(void);
 #endif //__MP_player_mgr_H_
index 2797e45..7a3fb59 100755 (executable)
@@ -1,33 +1,26 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
+ /*
+  * Copyright 2012        Samsung Electronics Co., Ltd
+  *
+  * Licensed under the Flora License, Version 1.0 (the "License");
+  * you may not use this file except in compliance with the License.
+  * You may obtain a copy of the License at
+  *
+  *  http://www.tizenopensource.org/license
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
 
 #ifndef __MP_SETTING_CTRL_H_
 #define __MP_SETTING_CTRL_H_
 
 #include <vconf-keys.h>
+#ifndef MP_SOUND_PLAYER
 #include "mp-view-layout.h"
-
-enum mp_setting_rep_state
-{
-       MP_SETTING_REP_ALL,
-       MP_SETTING_REP_NON,
-       MP_SETTING_REP_1
-};
+#endif
 
 typedef struct _mp_setting_menu_t
 {
@@ -36,10 +29,12 @@ typedef struct _mp_setting_menu_t
        int genres;
        int composers;
        int years;
+       int folders;
 } mp_setting_menu_t;
 
 typedef void (*MpSettingMenu_Cb) (mp_setting_menu_t * state, void *data);
 typedef void (*MpSettingSRS_Cb) (int state, void *data);
+typedef void (*MpSettingAutoOff_Cb)(int min, void *data);
 
 int mp_setting_init(struct appdata *ad);
 int mp_setting_deinit(struct appdata *ad);
@@ -51,8 +46,13 @@ void mp_setting_set_albumart_path(const char *path);
 
 int mp_setting_menu_get_state(mp_setting_menu_t * menu_state);
 int mp_setting_menu_set_callback(MpSettingMenu_Cb func, void *data);
+int mp_setting_auto_off_set_callback(MpSettingAutoOff_Cb func, void *data);
 
 void mp_setting_save_now_playing(void *ad);
+void mp_setting_save_shortcut(char *shortcut_title, char *artist, char *shortcut_description,
+                             char *shortcut_image_path);
+#ifndef MP_SOUND_PLAYER
 void mp_setting_save_last_played(mp_layout_data_t * layout_data);
+#endif
 
 #endif // __MP_SETTING_CTRL_H_
index 4f13011..8d4b0fe 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * 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);
-int mp_streaming_mgr_message_callback(int msg_type, void *msg_param, void *user_param);
 
 bool mp_streaming_mgr_check_streaming(struct appdata *ad, const char *path);
-bool mp_streaming_mgr_set_attribute(struct appdata *ad, MMHandleType player);
+bool mp_streaming_mgr_set_attribute(struct appdata *ad, player_h player);
 bool mp_streaming_mgr_play_new_streaming(struct appdata *ad);
 
 #endif /* __MP_STREAMING_MGR_H__ */
index af91c70..b9d9378 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <glib.h>
+#include <metadata_extractor.h>
 #include <mm_file.h>
 #include <mm_error.h>
 #include "mp-file-tag-info.h"
 #include "mp-player-debug.h"
-#include "mp-define.h"
+
+#define SAFE_FREE(x)       if(x) {free(x); x = NULL;}
 
 /* tag_info which must be freed with mp_file_tag_free() after use. */
 int
 mp_file_tag_info_get_all_tag(const char *filename, mp_tag_info_t * tag_info)
 {
-       MMHandleType tag_attrs = 0;
-       MMHandleType content_attrs = 0;
        int ret = 0;
 
        if (!filename || !tag_info)
@@ -43,191 +44,154 @@ mp_file_tag_info_get_all_tag(const char *filename, mp_tag_info_t * tag_info)
 
        memset(tag_info, 0x00, sizeof(mp_tag_info_t));
 
-       ret = mm_file_create_content_attrs(&content_attrs, filename);
-       if (ret == MM_ERROR_NONE)
-       {
-               char *error = NULL;
-               int dur = 0;
-               int audio_codec = 0;
-               int audio_samplerate = 0;
-               int audio_bitrate = 0;
-               int audio_channel = 0;
-
-               ret = mm_file_get_attrs(content_attrs,
-                                       &error,
-                                       MM_FILE_CONTENT_DURATION, &dur,
-                                       MM_FILE_CONTENT_AUDIO_CODEC, &audio_codec,
-                                       MM_FILE_CONTENT_AUDIO_SAMPLERATE, &audio_samplerate,
-                                       MM_FILE_CONTENT_AUDIO_BITRATE, &audio_bitrate,
-                                       MM_FILE_CONTENT_AUDIO_CHANNELS, &audio_channel, NULL);
-
-               if (ret != MM_ERROR_NONE)
-               {
-                       if (error)
-                       {
-                               ERROR_TRACE("fail to mm_file_get_attrs() - ret(%x), error(%s)", ret, error);
-                               free(error);
-                       }
-                       else
-                       {
-                               ERROR_TRACE("fail to mm_file_get_attrs() - ret(%x)", ret);
-                       }
-                       goto CATCH_ERROR;
-               }
-               tag_info->duration = dur;
-               tag_info->audio_codec = audio_codec;
-               tag_info->audio_samplerate = audio_samplerate;
-               tag_info->audio_bitrate = audio_bitrate;
-               tag_info->audio_channel = audio_channel;
+       metadata_extractor_h handle = NULL;
+       ret = metadata_extractor_create(&handle);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               mp_error("metadata_extractor_create().. %d", ret);
+               goto CATCH_ERROR;
        }
-       else
+
+       ret = metadata_extractor_set_path(handle, filename);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE)
        {
-               ERROR_TRACE("fail to mm_file_create_content_attrs() - ret(%x)", ret);
+               mp_error("metadata_extractor_set_path().. %d", ret);
                goto CATCH_ERROR;
        }
 
+       char *value = NULL;
+       ret = metadata_extractor_get_metadata(handle, METADATA_DURATION, &value);
+       if (ret == METADATA_EXTRACTOR_ERROR_NONE && value) {
+               tag_info->duration = atoi(value);
+       }
+       SAFE_FREE(value);
+
+       ret = metadata_extractor_get_metadata(handle, METADATA_AUDIO_SAMPLERATE, &value);
+       if (ret == METADATA_EXTRACTOR_ERROR_NONE && value) {
+               tag_info->audio_samplerate = atoi(value);
+       }
+       SAFE_FREE(value);
+
+       ret = metadata_extractor_get_metadata(handle, METADATA_AUDIO_BITRATE, &value);
+       if (ret == METADATA_EXTRACTOR_ERROR_NONE && value) {
+               tag_info->audio_bitrate = atoi(value);
+       }
+       SAFE_FREE(value);
 
-       ret = mm_file_create_tag_attrs(&tag_attrs, filename);
-       if (ret == MM_ERROR_NONE)
+       value = NULL;
+       ret = metadata_extractor_get_metadata(handle, METADATA_AUDIO_CHANNELS, &value);
+       if (ret == METADATA_EXTRACTOR_ERROR_NONE && value) {
+               tag_info->audio_channel = atoi(value);
+       }
+       SAFE_FREE(value);
+
+       metadata_extractor_get_metadata(handle, METADATA_ARTIST, &tag_info->artist);
+       metadata_extractor_get_metadata(handle, METADATA_ALBUM, &tag_info->album);
+       metadata_extractor_get_metadata(handle, METADATA_TITLE, &tag_info->title);
+       metadata_extractor_get_metadata(handle, METADATA_GENRE, &tag_info->genre);
+       metadata_extractor_get_metadata(handle, METADATA_AUTHOR, &tag_info->author);
+       metadata_extractor_get_metadata(handle, METADATA_COPYRIGHT, &tag_info->copyright);
+       metadata_extractor_get_metadata(handle, METADATA_DATE, &tag_info->date);
+       metadata_extractor_get_metadata(handle, METADATA_DESCRIPTION, &tag_info->desc);
+       metadata_extractor_get_metadata(handle, METADATA_TRACK_NUM, &tag_info->track);
+       metadata_extractor_get_metadata(handle, METADATA_RATING, &tag_info->rating);
+
+       void *albumart = NULL;
+       int albumart_size = 0;
+       char *mime = NULL;
+       ret = metadata_extractor_get_artwork(handle, &albumart, &albumart_size, &mime);
+       if (ret == METADATA_EXTRACTOR_ERROR_NONE && albumart)
        {
-               char *error = NULL;
-               char *album = NULL;
-               int album_len = 0;
-               char *artist = NULL;
-               int artist_len = 0;
-               char *title = NULL;
-               int title_len = 0;
-               void *albumart = NULL;
-               int albumart_len = 0;
-               int albumart_size = 0;
-               char *genre = NULL;
-               int genre_len = 0;
-               char *copyright = NULL;
-               int copyright_len = 0;
-               char *date = NULL;
-               int date_len = 0;
-               char *desc = NULL;
-               int desc_len = 0;
-               char *author = NULL;
-               int author_len = 0;
-               char *track = NULL;
-               int track_len = 0;
-               char *rating = NULL;
-               int rating_len = 0;
-
-               ret = mm_file_get_attrs(tag_attrs,
-                                       &error,
-                                       MM_FILE_TAG_ARTIST, &artist, &artist_len,
-                                       MM_FILE_TAG_ALBUM, &album, &album_len,
-                                       MM_FILE_TAG_TITLE, &title, &title_len,
-                                       MM_FILE_TAG_GENRE, &genre, &genre_len,
-                                       MM_FILE_TAG_AUTHOR, &author, &author_len,
-                                       MM_FILE_TAG_COPYRIGHT, &copyright, &copyright_len,
-                                       MM_FILE_TAG_DATE, &date, &date_len,
-                                       MM_FILE_TAG_DESCRIPTION, &desc, &desc_len,
-                                       MM_FILE_TAG_ARTWORK, &albumart, &albumart_len,
-                                       MM_FILE_TAG_ARTWORK_SIZE, &albumart_size,
-                                       MM_FILE_TAG_TRACK_NUM, &track, &track_len,
-                                       MM_FILE_TAG_RATING, &rating, &rating_len, NULL);
-
-               if (ret != MM_ERROR_NONE)
+               gchar *path = NULL;
+               int fd = g_file_open_tmp(NULL, &path, NULL);
+
+               if (fd != -1)
                {
-                       if (error)
+                       FILE *fp = fdopen(fd, "w");
+                       if (fp == NULL)
                        {
-                               ERROR_TRACE("fail to mm_file_get_attrs() - ret(%x), error(%s)", ret, error);
-                               free(error);
+                               ERROR_TRACE("fail to fdopen()");
+                               close(fd);
                        }
                        else
                        {
-                               ERROR_TRACE("fail to mm_file_get_attrs() - ret(%x)", ret);
-                       }
-                       goto CATCH_ERROR;
-               }
-
-               if (albumart)
-               {
-                       gchar *path = NULL;
-                       int fd = g_file_open_tmp(NULL, &path, NULL);
-
-                       if (fd != -1)
-                       {
-                               FILE *fp = fdopen(fd, "w");
-                               if (fp == NULL)
+                               int n = fwrite((unsigned char *)albumart, 1, albumart_size, fp);
+                               if (n != albumart_size)
                                {
-                                       ERROR_TRACE("fail to fdopen()");
+                                       ERROR_TRACE("fail to fwrite()");
+                                       fclose(fp);
                                        close(fd);
                                }
                                else
                                {
-                                       int n = fwrite((unsigned char *)albumart, 1, albumart_size, fp);
-                                       if (n != albumart_size)
-                                       {
-                                               ERROR_TRACE("fail to fwrite()");
-                                               fclose(fp);
-                                               close(fd);
-                                       }
-                                       else
-                                       {
-                                               fflush(fp);
-                                               fclose(fp);
-                                               close(fd);
-                                       }
+                                       fflush(fp);
+                                       fclose(fp);
+                                       close(fd);
                                }
                        }
-                       tag_info->albumart_path = path;
                }
-
-               if (album)
-                       tag_info->album = strdup(album);
-               if (artist)
-                       tag_info->artist = strdup(artist);
-               if (title)
-                       tag_info->title = strdup(title);
-               if (genre)
-                       tag_info->genre = strdup(genre);
-               if (copyright)
-                       tag_info->copyright = strdup(copyright);
-               if (date)
-                       tag_info->date = strdup(date);
-               if (desc)
-                       tag_info->desc = strdup(desc);
-               if (author)
-                       tag_info->author = strdup(author);
-               if (track)
-                       tag_info->track = strdup(track);
-               if (rating)
-                       tag_info->rating = strdup(rating);
-
-       }
-       else
-       {
-               ERROR_TRACE("fail to mm_file_create_tag_attrs() - ret(%x)", ret);
-               goto CATCH_ERROR;
+               tag_info->albumart_path = path;
        }
+       SAFE_FREE(mime);
 
        DEBUG_TRACE
                ("file : %s\n duration: %d \n album: %s\n artist: %s\n title: %s\n genre: %s\n copyright:%s\n date: %s\n desc : %s\n author: %s\n albumart : %s",
                 filename, tag_info->duration, tag_info->album, tag_info->artist, tag_info->title, tag_info->genre,
                 tag_info->copyright, tag_info->date, tag_info->desc, tag_info->author, tag_info->albumart_path);
 
-       if (content_attrs)
-               mm_file_destroy_content_attrs(content_attrs);
-
-       if (tag_attrs)
-               mm_file_destroy_content_attrs(tag_attrs);
+       if (handle)
+               metadata_extractor_destroy(handle);
 
        return 0;
 
       CATCH_ERROR:
-       if (content_attrs)
-               mm_file_destroy_content_attrs(content_attrs);
-
-       if (tag_attrs)
-               mm_file_destroy_content_attrs(tag_attrs);
+       if (handle)
+               metadata_extractor_destroy(handle);
 
        return -1;
 }
 
+char *
+mp_file_tag_info_get_genre(const char *filename)
+{
+       /* return value shold be freed */
+       MP_CHECK_NULL(filename);
+
+       int ret = METADATA_EXTRACTOR_ERROR_NONE;
+
+       metadata_extractor_h handle = NULL;
+       ret = metadata_extractor_create(&handle);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               mp_error("metadata_extractor_create().. %d", ret);
+               goto CATCH_ERROR;
+       }
+
+       ret = metadata_extractor_set_path(handle, filename);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE)
+       {
+               mp_error("metadata_extractor_set_path().. %d", ret);
+               goto CATCH_ERROR;
+       }
+
+       char *genre = NULL;
+       ret = metadata_extractor_get_metadata(handle, METADATA_GENRE, &genre);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE)
+       {
+               mp_error("metadata_extractor_get_metadata().. %d", ret);
+               SAFE_FREE(genre);
+               goto CATCH_ERROR;
+       }
+
+       mp_debug("METADATA_GENRE = [%s]", genre);
+       metadata_extractor_destroy(handle);
+       return genre;
+
+CATCH_ERROR:
+       if (handle)
+               metadata_extractor_destroy(handle);
+
+       return NULL;
+}
+
 
 void
 mp_file_tag_free(mp_tag_info_t * tag_info)
@@ -235,16 +199,86 @@ mp_file_tag_free(mp_tag_info_t * tag_info)
        if (tag_info == NULL)
                return;
 
-       IF_FREE(tag_info->album);
-       IF_FREE(tag_info->genre);
-       IF_FREE(tag_info->author);
-       IF_FREE(tag_info->artist);
-       IF_FREE(tag_info->title);
-       IF_FREE(tag_info->copyright);
-       IF_FREE(tag_info->date);
-       IF_FREE(tag_info->desc);
-       IF_FREE(tag_info->albumart_path);
-       IF_FREE(tag_info->track);
-       IF_FREE(tag_info->rating);
+       SAFE_FREE(tag_info->album);
+       SAFE_FREE(tag_info->genre);
+       SAFE_FREE(tag_info->author);
+       SAFE_FREE(tag_info->artist);
+       SAFE_FREE(tag_info->title);
+       SAFE_FREE(tag_info->copyright);
+       SAFE_FREE(tag_info->date);
+       SAFE_FREE(tag_info->desc);
+       SAFE_FREE(tag_info->albumart_path);
+       SAFE_FREE(tag_info->track);
+       SAFE_FREE(tag_info->rating);
        return;
 }
+
+/* albumart_path as a string which should be freed after use */
+int
+mp_file_tag_info_get_albumart(const char *filename, char **albumart_path)
+{
+       /* return value shold be freed */
+       MP_CHECK_VAL(filename, -1);
+       MP_CHECK_VAL(albumart_path, -1);
+
+       int ret = METADATA_EXTRACTOR_ERROR_NONE;
+
+       metadata_extractor_h handle = NULL;
+       ret = metadata_extractor_create(&handle);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               mp_error("metadata_extractor_create().. %d", ret);
+               goto CATCH_ERROR;
+       }
+
+       void *albumart = NULL;
+       int albumart_size = 0;
+       char *mime = NULL;
+       ret = metadata_extractor_get_artwork(handle, &albumart, &albumart_size, &mime);
+       if (ret == METADATA_EXTRACTOR_ERROR_NONE && albumart)
+       {
+               gchar *path = NULL;
+               int fd = g_file_open_tmp(NULL, &path, NULL);
+
+               if (fd != -1)
+               {
+                       FILE *fp = fdopen(fd, "w");
+                       if (fp == NULL)
+                       {
+                               ERROR_TRACE("fail to fdopen()");
+                               close(fd);
+                       }
+                       else
+                       {
+                               int n = fwrite((unsigned char *)albumart, 1, albumart_size, fp);
+                               if (n != albumart_size)
+                               {
+                                       ERROR_TRACE("fail to fwrite()");
+                                       fclose(fp);
+                                       close(fd);
+                               }
+                               else
+                               {
+                                       fflush(fp);
+                                       fclose(fp);
+                                       close(fd);
+                               }
+                       }
+               }
+               *albumart_path = path;
+       }
+       SAFE_FREE(mime);
+
+       if (handle) {
+               metadata_extractor_destroy(handle);
+               handle = NULL;
+       }
+
+       return 0;
+
+CATCH_ERROR:
+       if (handle)
+               metadata_extractor_destroy(handle);
+
+       *albumart_path = NULL;
+       return -1;
+}
index fb72f59..af2e60d 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -116,6 +116,7 @@ bool mp_http_mgr_start_svc(void *data, mp_http_svc_type svc_type, MpHttpOpenExcu
                return FALSE;
        }
 
+       /* excute open callback */
        if (open_cb) {
                if (!open_cb(cb_data)) {
                        mp_error("[%d] svc fail to start", svc_type);
@@ -126,10 +127,12 @@ bool mp_http_mgr_start_svc(void *data, mp_http_svc_type svc_type, MpHttpOpenExcu
        mp_debug("## [%d] svc started ##", svc_type);
        mp_http_mgr_t *http_mgr = (mp_http_mgr_t *)ad->http_mgr;
 
+       /* register callback */
        http_mgr->cb_data[svc_type] = cb_data;
        http_mgr->http_open_cb[svc_type] = open_cb;
        http_mgr->http_resp_cb[svc_type] = rsp_cb;
 
+       /* set open state */
        http_mgr->svc_state[svc_type] = TRUE;
        return TRUE;
 }
@@ -143,13 +146,16 @@ bool mp_http_mgr_stop_svc(void *data, mp_http_svc_type svc_type, mp_http_respons
 
        mp_http_mgr_t *http_mgr = (mp_http_mgr_t *)ad->http_mgr;
        if (http_mgr->svc_state[svc_type] && http_mgr->http_resp_cb[svc_type]) {
+               /* send response */
                http_mgr->http_resp_cb[svc_type](http_mgr->cb_data[svc_type], response_type);
        }
 
+       /* deregister callback */
        http_mgr->cb_data[svc_type] = NULL;
        http_mgr->http_open_cb[svc_type] = NULL;
        http_mgr->http_resp_cb[svc_type] = NULL;
 
+       /* set open state */
        http_mgr->svc_state[svc_type] = FALSE;
        mp_debug("## [%d] svc stopped ##", svc_type);
 
@@ -206,12 +212,14 @@ static void _mp_http_mgr_refresh_network_info(mp_http_mgr_t *http_mgr)
        startfunc;
        MP_CHECK(http_mgr);
 
+       /* reset network info */
        memset(http_mgr->ip, 0, sizeof(http_mgr->ip));
        memset(http_mgr->proxy, 0, sizeof(http_mgr->proxy));
 
        http_mgr->http_state = _mp_http_mgr_get_network_status();
 
        if (http_mgr->http_state != MP_HTTP_STATE_OFF) {
+               /* refresh network infomation */
                char *ip = vconf_get_str(VCONFKEY_NETWORK_IP);
                if (ip) {
                        strncpy(http_mgr->ip, ip, sizeof(http_mgr->ip)-1);
@@ -274,6 +282,7 @@ mp_http_mgr_get_state(void *data)
 
 char* mp_http_mgr_get_user_agent()
 {
+       /* return value should be free */
        char *user_agent = vconf_get_str(USER_AGENT_KEY);
        return user_agent;
 }
diff --git a/src/core/mp-language-mgr.c b/src/core/mp-language-mgr.c
new file mode 100755 (executable)
index 0000000..d314c45
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <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->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);
+}
index bc6c3bc..6969603 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 #include "music.h"
 #include "mp-play-list.h"
 #include "mp-player-debug.h"
@@ -41,6 +40,7 @@ _mp_play_list_clear_list(GList ** list)
 
                if (handle)
                {
+                       SAFE_FREE(handle->fid);
                        free(handle);
                }
                handle = NULL;
@@ -85,36 +85,29 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it
        mp_tag_info_t tag_info;
        struct appdata *ad = (struct appdata *)data;
 
-       AudioHandleType *record = NULL;
+       mp_media_info_h record = NULL;
        char *pathname = NULL, *title = NULL, *album = NULL, *artist = NULL, *thumbname = NULL;
        int duration = 0;
-       int size = 0, ret = 1, category = -1;
+       bool favorite = 0;
+       int ret = 1, category = -1;
        MP_CHECK_FALSE(path);
 
        *get_item = calloc(1, sizeof(music_list_item));
        MP_CHECK_EXCEP((*get_item));
 
-       ret = audio_svc_item_new(&record);
-       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-
-       if (mp_util_file_is_in_phone_memory(path))
-               ret = audio_svc_get_item_by_path(ad->media_svc_handle, path, record);
-       else
-               ret = audio_svc_get_item_by_path(ad->media_svc_handle, path, record);
+       ret = mp_media_info_create_by_path(&record, path);
 
-       if (ret == AUDIO_SVC_ERROR_NONE)
+       if (ret == 0)
        {
                INFO_TRACE("get item from music db..");
-               ret = audio_svc_item_get_val(record,
-                                            AUDIO_SVC_TRACK_DATA_THUMBNAIL_PATH, &thumbname, &size,
-                                            AUDIO_SVC_TRACK_DATA_TITLE, &title, &size,
-                                            AUDIO_SVC_TRACK_DATA_ARTIST, &artist, &size,
-                                            AUDIO_SVC_TRACK_DATA_PATHNAME, &pathname, &size,
-                                            AUDIO_SVC_TRACK_DATA_ALBUM, &album, &size,
-                                            AUDIO_SVC_TRACK_DATA_DURATION, &duration,
-                                            AUDIO_SVC_TRACK_DATA_CATEGORY, &category, -1);
-
-               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+               mp_media_info_get_thumbnail_path(record, &thumbname);
+               mp_media_info_get_title(record, &title);
+               mp_media_info_get_artist(record, &artist);
+               mp_media_info_get_file_path(record, &pathname);
+               mp_media_info_get_album(record, &album);
+               mp_media_info_get_duration(record, &duration);
+               mp_media_info_get_media_type(record, &category);
+               mp_media_info_get_favorite(record, &favorite);
 
                *get_item = calloc(1, sizeof(music_list_item));
                MP_CHECK_EXCEP(*get_item);
@@ -126,7 +119,7 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it
                }
 
                if (title)
-                       g_strlcpy((*get_item)->title, title, AUDIO_SVC_METADATA_LEN_MAX);
+                       g_strlcpy((*get_item)->title, title, MP_METADATA_LEN_MAX);
 
                mp_util_format_duration((*get_item)->time, duration);
 
@@ -136,14 +129,15 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it
                        g_strlcpy((*get_item)->albumart, DEFAULT_THUMBNAIL, MAX_NAM_LEN);
 
                if (artist)
-                       g_strlcpy((*get_item)->artist, artist, AUDIO_SVC_METADATA_LEN_MAX);
+                       g_strlcpy((*get_item)->artist, artist, MP_METADATA_LEN_MAX);
 
                if (album)
-                       g_strlcpy((*get_item)->album, album, AUDIO_SVC_METADATA_LEN_MAX);
+                       g_strlcpy((*get_item)->album, album, MP_METADATA_LEN_MAX);
 
                (*get_item)->ad = ad;
                (*get_item)->list_index = set_item->list_index;
                (*get_item)->category = category;
+               (*get_item)->favorite = favorite;
        }
        else
        {
@@ -157,61 +151,61 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it
                        title = mp_util_get_title_from_path(path);
                        if (title)
                        {
-                               strncpy((*get_item)->title, title, AUDIO_SVC_METADATA_LEN_MAX);
-                               (*get_item)->title[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                               strncpy((*get_item)->title, title, MP_METADATA_LEN_MAX);
+                               (*get_item)->title[MP_METADATA_LEN_MAX - 1] = '\0';
                                free(title);
                        }
                        else
                        {
-                               strncpy((*get_item)->title, path, AUDIO_SVC_METADATA_LEN_MAX);
-                               (*get_item)->title[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                               strncpy((*get_item)->title, path, MP_METADATA_LEN_MAX);
+                               (*get_item)->title[MP_METADATA_LEN_MAX - 1] = '\0';
                        }
                        strncpy((*get_item)->filename, path, MAX_NAM_LEN);
                        (*get_item)->filename[MAX_NAM_LEN - 1] = '\0';
                }
                else
                {
-                       strncpy((*get_item)->filename, path, AUDIO_SVC_METADATA_LEN_MAX);
-                       (*get_item)->filename[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                       strncpy((*get_item)->filename, path, MP_METADATA_LEN_MAX);
+                       (*get_item)->filename[MP_METADATA_LEN_MAX - 1] = '\0';
 
                        if (tag_info.title)
                        {
-                               strncpy((*get_item)->title, tag_info.title, AUDIO_SVC_METADATA_LEN_MAX);
-                               (*get_item)->title[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                               strncpy((*get_item)->title, tag_info.title, MP_METADATA_LEN_MAX);
+                               (*get_item)->title[MP_METADATA_LEN_MAX - 1] = '\0';
                        }
                        else
                        {
                                char *title = mp_util_get_title_from_path(path);
                                if (title)
                                {
-                                       strncpy((*get_item)->title, title, AUDIO_SVC_METADATA_LEN_MAX);
-                                       (*get_item)->title[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                                       strncpy((*get_item)->title, title, MP_METADATA_LEN_MAX);
+                                       (*get_item)->title[MP_METADATA_LEN_MAX - 1] = '\0';
                                        free(title);
                                }
                        }
 
                        if (tag_info.artist)
                        {
-                               strncpy((*get_item)->artist, tag_info.artist, AUDIO_SVC_METADATA_LEN_MAX);
-                               (*get_item)->artist[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                               strncpy((*get_item)->artist, tag_info.artist, MP_METADATA_LEN_MAX);
+                               (*get_item)->artist[MP_METADATA_LEN_MAX - 1] = '\0';
                        }
                        else
                        {
                                strncpy((*get_item)->artist, GET_SYS_STR("IDS_COM_BODY_UNKNOWN"),
-                                       AUDIO_SVC_METADATA_LEN_MAX);
-                               (*get_item)->artist[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                                       MP_METADATA_LEN_MAX);
+                               (*get_item)->artist[MP_METADATA_LEN_MAX - 1] = '\0';
                        }
 
                        if (tag_info.album)
                        {
-                               strncpy((*get_item)->album, tag_info.album, AUDIO_SVC_METADATA_LEN_MAX);
-                               (*get_item)->album[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                               strncpy((*get_item)->album, tag_info.album, MP_METADATA_LEN_MAX);
+                               (*get_item)->album[MP_METADATA_LEN_MAX - 1] = '\0';
                        }
                        else
                        {
                                strncpy((*get_item)->album, GET_SYS_STR("IDS_COM_BODY_UNKNOWN"),
-                                       AUDIO_SVC_METADATA_LEN_MAX);
-                               (*get_item)->album[AUDIO_SVC_METADATA_LEN_MAX - 1] = '\0';
+                                       MP_METADATA_LEN_MAX);
+                               (*get_item)->album[MP_METADATA_LEN_MAX - 1] = '\0';
                        }
 
                        mp_util_format_duration((*get_item)->time, tag_info.duration);
@@ -227,15 +221,17 @@ _mp_play_list_get_item_by_path(void *data, char *path, music_list_item ** get_it
 
                (*get_item)->ad = ad;
                (*get_item)->list_index = set_item->list_index;
-               (*get_item)->category = AUDIO_SVC_CATEGORY_SOUND;
+               (*get_item)->category = MP_MEDIA_TYPE_SOUND;
+               (*get_item)->favorite = 0;
 
        }
-       audio_svc_item_free(record);
+       mp_media_info_destroy(record);
        return true;
 
       mp_exception:
-       audio_svc_item_free(record);
+       mp_media_info_destroy(record);
        IF_FREE(*get_item);
+
        return false;
 }
 
@@ -246,32 +242,30 @@ _mp_play_list_get_item_by_list_data(void *data, music_list_item ** get_item, mp_
 
        MP_CHECK_FALSE(set_item);
        DEBUG_TRACE("set_item->fid: %s", set_item->fid);
-       MP_CHECK_FALSE(strlen(set_item->fid));
+       MP_CHECK_FALSE(set_item->fid && strlen(set_item->fid));
 
        char *pathname = NULL, *title = NULL, *album = NULL, *artist = NULL, *thumbname = NULL;
        int duration = 0;
+       bool favorite = false;
 
-       int size = 0, ret = 1, category = -1;
+       int ret = 1, category = -1;
 
-       AudioHandleType *item_handle = NULL;
+       mp_media_info_h item_handle = NULL;
 
        {
-               ret = audio_svc_item_new(&item_handle);
-               MP_CHECK_FALSE(ret == AUDIO_SVC_ERROR_NONE);
-
-               ret = audio_svc_get_item_by_audio_id(ad->media_svc_handle, set_item->fid, item_handle);
-               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-
-               ret = audio_svc_item_get_val(item_handle,
-                                            AUDIO_SVC_TRACK_DATA_THUMBNAIL_PATH, &thumbname, &size,
-                                            AUDIO_SVC_TRACK_DATA_TITLE, &title, &size,
-                                            AUDIO_SVC_TRACK_DATA_ARTIST, &artist, &size,
-                                            AUDIO_SVC_TRACK_DATA_PATHNAME, &pathname, &size,
-                                            AUDIO_SVC_TRACK_DATA_ALBUM, &album, &size,
-                                            AUDIO_SVC_TRACK_DATA_DURATION, &duration,
-                                            AUDIO_SVC_TRACK_DATA_CATEGORY, &category, -1);
-
-               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+               ret = mp_media_info_create(&item_handle, set_item->fid);
+               MP_CHECK_EXCEP(ret == 0);
+
+               mp_media_info_get_file_path(item_handle, &pathname);
+               mp_media_info_get_title(item_handle, &title);
+               mp_media_info_get_album(item_handle, &album);
+               mp_media_info_get_artist(item_handle, &artist);
+               mp_media_info_get_thumbnail_path(item_handle, &thumbname);
+               mp_media_info_get_duration(item_handle, &duration);
+               mp_media_info_get_media_type(item_handle, &category);
+               mp_media_info_get_favorite(item_handle, &favorite);
+
+               MP_CHECK_EXCEP(ret == 0);
        }
 
        *get_item = calloc(1, sizeof(music_list_item));
@@ -284,7 +278,7 @@ _mp_play_list_get_item_by_list_data(void *data, music_list_item ** get_item, mp_
        }
 
        if (title)
-               g_strlcpy((*get_item)->title, title, AUDIO_SVC_METADATA_LEN_MAX);
+               g_strlcpy((*get_item)->title, title, MP_METADATA_LEN_MAX);
 
        mp_util_format_duration((*get_item)->time, duration);
 
@@ -294,18 +288,22 @@ _mp_play_list_get_item_by_list_data(void *data, music_list_item ** get_item, mp_
                g_strlcpy((*get_item)->albumart, DEFAULT_THUMBNAIL, MAX_NAM_LEN);
 
        if (artist)
-               g_strlcpy((*get_item)->artist, artist, AUDIO_SVC_METADATA_LEN_MAX);
+               g_strlcpy((*get_item)->artist, artist, MP_METADATA_LEN_MAX);
 
        if (album)
-               g_strlcpy((*get_item)->album, album, AUDIO_SVC_METADATA_LEN_MAX);
-       g_strlcpy((*get_item)->key_id, set_item->fid, AUDIO_SVC_UUID_SIZE+1);
+               g_strlcpy((*get_item)->album, album, MP_METADATA_LEN_MAX);
+
+       SAFE_FREE((*get_item)->key_id);
+       (*get_item)->key_id = g_strdup(set_item->fid);
+
        (*get_item)->ad = ad;
        (*get_item)->list_index = set_item->list_index;
        (*get_item)->category = category;
+       (*get_item)->favorite = favorite;
 
        {
                if (item_handle)
-                       audio_svc_item_free(item_handle);
+                       mp_media_info_destroy(item_handle);
                item_handle = NULL;
        }
 
@@ -315,7 +313,7 @@ _mp_play_list_get_item_by_list_data(void *data, music_list_item ** get_item, mp_
 
        IF_FREE(*get_item);
        if (item_handle)
-               audio_svc_item_free(item_handle);
+               mp_media_info_destroy(item_handle);
        item_handle = NULL;
 
        return false;
@@ -335,9 +333,12 @@ mp_play_list_item_copy(music_list_item ** to, music_list_item * from)
 
        (*to)->gen_list = from->gen_list;
        (*to)->ad = from->ad;
-       SAFE_STRCPY((*to)->key_id, from->key_id);
+       (*to)->key_id = g_strdup(from->key_id);
+       (*to)->playlist_uid = from->playlist_uid;
+
        (*to)->list_item = from->list_item;
        (*to)->list_index = from->list_index;
+       (*to)->favorite = from->favorite;
 
        return;
 }
@@ -430,6 +431,7 @@ mp_play_list_clear_play_list(mp_play_list ** play_list)
        IF_FREE((*play_list)->filter_string);
        IF_FREE((*play_list)->current_item);
        IF_FREE((*play_list)->path_excpetionDB);
+
        _mp_play_list_clear_list(&((*play_list)->normal_list));
        _mp_play_list_clear_list(&((*play_list)->shuffle_list));
        (*play_list)->list = NULL;
@@ -544,9 +546,11 @@ mp_play_list_create_shuffle_list(void *data, mp_play_list * play_list, int count
                mp_assert(new_item);
 
                memcpy(new_item, get_item, sizeof(mp_list_item));
-               SAFE_STRCPY(new_item->fid, get_item->fid);
+               new_item->fid = g_strdup(get_item->fid);
                new_item->list_index = index;
 
+               new_item->item_type = get_item->item_type;
+
                play_list->shuffle_list = g_list_append(play_list->shuffle_list, (gpointer) new_item);
                if (!g_strcmp0(fid, new_item->fid))
                {
@@ -568,7 +572,7 @@ mp_play_list_create_shuffle_list(void *data, mp_play_list * play_list, int count
 
 bool
 mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list,
-                                     AudioHandleType * svc_track, const char *full_path,
+                                     mp_media_list_h svc_track, const char *full_path,
                                      int count, int current_index, bool shuffler_play_list, int playlist_id)
 {
        startfunc;
@@ -588,6 +592,7 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list,
 
        *set_play_list = calloc(1, sizeof(mp_play_list));
 
+       (*set_play_list)->ad = ad;
        (*set_play_list)->current_item = NULL;
        (*set_play_list)->play_shuffle_state = shuffler_play_list;
        (*set_play_list)->start_index = -1;
@@ -600,26 +605,18 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list,
        char *fid = NULL;
        char *current_index_fid = NULL;
        char *fid_by_full_path = NULL;
-       int size;
 
        if (!svc_track)
        {                       //2 create play list by current full path
                MP_CHECK_FALSE(full_path);
-               AudioHandleType *record = NULL;
+               mp_media_info_h record = NULL;
                if (mp_check_file_exist(full_path))
                {
-                       ret = audio_svc_item_new(&record);
-                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-
-                       if (mp_util_file_is_in_phone_memory(full_path))
-                               ret = audio_svc_get_item_by_path(ad->media_svc_handle, full_path, record);
-                       else
-                               ret = audio_svc_get_item_by_path(ad->media_svc_handle, full_path, record);
-
-                       if(ret == AUDIO_SVC_ERROR_NONE)
+                       ret = mp_media_info_create_by_path(&record, full_path);
+                       if(ret == 0)
                        {
-                               ret = audio_svc_item_get_val(record, AUDIO_SVC_TRACK_DATA_AUDIO_ID, &fid_by_full_path, &size, -1);
-                               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+                               ret = mp_media_info_get_media_id(record, &fid_by_full_path);
+                               MP_CHECK_EXCEP(ret == 0);
                                DEBUG_TRACE("fid_by_full_path: %s", fid_by_full_path);
                                if (fid_by_full_path == NULL)
                                        goto mp_exception;
@@ -636,7 +633,7 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list,
                shuffle_state = false;
 
                if (record)
-                       audio_svc_item_free(record);
+                       mp_media_info_destroy(record);
                record = NULL;
        }
 
@@ -649,35 +646,37 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list,
 
                if (svc_track)
                {
-
+                       {
                        IF_FREE(fid);
-                       if (playlist_id >= 0)
-                               ret = audio_svc_playlist_item_get_val(svc_track, get_index,
-                                                                     AUDIO_SVC_PLAYLIST_ITEM_AUDIO_ID, &fid, &size, -1);
-                       else
-                               ret = audio_svc_list_item_get_val(svc_track, get_index, AUDIO_SVC_LIST_ITEM_AUDIO_ID,
-                                                                 &fid, &size,-1);
 
-                       DEBUG_TRACE("fid: %s", fid);
+                       {
+                               mp_media_info_h item = mp_media_info_list_nth_item(svc_track, get_index);
+                               ret = mp_media_info_get_media_id(item, &fid);
+                       }
+                       MP_CHECK_EXCEP(ret == 0);
                        fid = g_strdup(fid);
-                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+                       }
                }
                else
                {
                        IF_FREE(fid);
                        fid = g_strdup(fid_by_full_path);
                }
+
                mp_list_item *new_item = calloc(1, sizeof(mp_list_item));
                mp_assert(new_item);
-               SAFE_STRCPY(new_item->fid, fid);
-               DEBUG_TRACE("fid: %s", fid);
                new_item->list_index = index;
 
+               /* for allshare item */
+               new_item->item_type = (*set_play_list)->list_type;
+               new_item->fid = g_strdup(fid);
+               DEBUG_TRACE("fid: %s", fid);
+
                (*set_play_list)->normal_list = g_list_append((*set_play_list)->normal_list, (gpointer) new_item);
 
                if (current_index == get_index)
                {
-                       if (shuffle_state && count > 1)
+                       if (shuffle_state && count > 1) /* shufflist not created if count is 1 */
                        {
                                DEBUG_TRACE("current request get fid = %s", current_index_fid);
                                IF_FREE(current_index_fid);
@@ -732,7 +731,49 @@ mp_play_list_create_current_play_list(void *data, mp_play_list ** set_play_list,
        return false;
 }
 
+char* mp_play_list_get_fid_by_full_path(void *data, const char *full_path)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+
+       MP_CHECK_NULL(ad);
 
+       char *fid_by_full_path = NULL;
+
+       MP_CHECK_NULL(full_path);
+
+       int ret = 0;
+       mp_media_info_h record = NULL;
+       if (mp_check_file_exist(full_path))
+       {
+               ret = mp_media_info_create_by_path(&record, full_path);
+               if(ret == 0)
+               {
+                       ret = mp_media_info_get_media_id(record, &fid_by_full_path);
+                       if (ret != 0) {
+                               mp_media_info_destroy(record);
+                               return NULL;
+                       }
+                       DEBUG_TRACE("fid_by_full_path: %s", fid_by_full_path);
+                       if (fid_by_full_path == NULL) {
+                               mp_media_info_destroy(record);
+                               return NULL;
+                       }
+                       fid_by_full_path = g_strdup(fid_by_full_path);
+               }
+       }
+       else if (mp_util_check_uri_available(full_path))
+       {
+               DEBUG_TRACE("full_path: %s", full_path);
+               fid_by_full_path = NULL;
+       }
+
+       mp_media_info_destroy(record);
+       record = NULL;
+
+       return fid_by_full_path;
+}
 
 bool
 mp_play_list_reset(void *data, mp_play_list ** set_play_list, char *fid)
@@ -778,34 +819,33 @@ mp_play_list_refresh(void *data)
        mp_play_list *playing_list = ad->playing_list;
        music_list_item *item = mp_play_list_get_current_item(playing_list);
 
-
        if (item)
        {
                if(strlen(item->key_id))
                        current_fid = g_strdup(item->key_id);
        }
 
-       AudioHandleType *svc_track = NULL;
+       mp_media_list_h svc_track = NULL;
 
        int ret = -1, count = 0;
 
        if (playing_list->playlist_id >= 0)
        {
-               ret = audio_svc_count_playlist_item(ad->media_svc_handle, playing_list->playlist_id, playing_list->filter_string, NULL,
-                                                   &count);
-               ret = audio_svc_playlist_item_new(&svc_track, count);
-               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE && count == 0);
-               audio_svc_get_playlist_item(ad->media_svc_handle, playing_list->playlist_id, playing_list->filter_string, NULL, 0, count,
-                                           svc_track);
+               ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL,
+                               playing_list->filter_string, playing_list->playlist_id, &count);
+               MP_CHECK_EXCEP(ret == 0);
+               ret = mp_media_info_list_create(&svc_track, MP_TRACK_BY_PLAYLIST, NULL, NULL,
+                               playing_list->filter_string, playing_list->playlist_id, 0, count);
+               MP_CHECK_EXCEP(ret == 0);
        }
        else
        {
-               ret = audio_svc_count_list_item(ad->media_svc_handle, playing_list->item_type, playing_list->type_string, NULL,
-                                               playing_list->filter_string, NULL, &count);
-               ret = audio_svc_list_item_new(&svc_track, count);
-               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE && count == 0);
-               audio_svc_get_list_item(ad->media_svc_handle, playing_list->item_type, playing_list->type_string, NULL,
-                                       playing_list->filter_string, NULL, 0, count, svc_track);
+               ret = mp_media_info_list_count(playing_list->item_type, playing_list->type_string, NULL, playing_list->filter_string, 0, &count);
+               MP_CHECK_EXCEP(ret == 0);
+
+               ret = mp_media_info_list_create(&svc_track, playing_list->item_type, playing_list->type_string, NULL,
+                               playing_list->filter_string, 0, 0, count);
+               MP_CHECK_EXCEP(ret == 0);
        }
        DEBUG_TRACE("count =%d", count);
 
@@ -816,11 +856,7 @@ mp_play_list_refresh(void *data)
                mp_play_list_set_current_item(ad, ad->playing_list, current_fid);
        if (svc_track)
        {
-               if (playing_list->playlist_id >= 0)
-                       audio_svc_playlist_item_free(svc_track);
-               else
-                       audio_svc_list_item_free(svc_track);
-
+               mp_media_info_list_destroy(svc_track);
                svc_track = NULL;
        }
        IF_FREE(current_fid);
@@ -834,11 +870,7 @@ mp_play_list_refresh(void *data)
 
        if (svc_track)
        {
-               if (playing_list->playlist_id >= 0)
-                       audio_svc_playlist_item_free(svc_track);
-               else
-                       audio_svc_list_item_free(svc_track);
-
+               mp_media_info_list_destroy(svc_track);
                svc_track = NULL;
        }
        IF_FREE(current_fid);
@@ -917,7 +949,7 @@ mp_play_list_create_by_path(void *data, mp_play_list ** set_play_list, char *pat
 }
 
 bool
-mp_play_list_create_play_list(void *data, AudioHandleType * svc_track, int count, int current_index, int playlist_id)
+mp_play_list_create_play_list(void *data, mp_media_list_h svc_track, int count, int current_index, int playlist_id)
 {
        startfunc;
 
@@ -928,6 +960,7 @@ mp_play_list_create_play_list(void *data, AudioHandleType * svc_track, int count
 
        mp_play_list_create_current_play_list(ad, &ad->playing_list, svc_track, NULL, count, current_index,
                                              ad->play_shuffle_state, playlist_id);
+
        endfunc;
 
        return true;
@@ -977,6 +1010,16 @@ mp_play_list_get_current_item(mp_play_list * playing_list)
        return playing_list->current_item;
 }
 
+mp_list_item *
+mp_play_list_get_nth_item(mp_play_list * playing_list, int index)
+{
+       MP_CHECK_NULL(playing_list);
+
+       mp_list_item *item = (mp_list_item *)g_list_nth_data(playing_list->list, index);
+
+       return item;
+}
+
 bool
 mp_play_list_get_item_by_index(void *data, mp_play_list * playing_list, music_list_item ** get_item, int value)
 {                              //must be free
@@ -1021,21 +1064,10 @@ mp_play_list_get_prev_item(void *data, mp_play_list * play_list, music_list_item
        if (0 > next_index)
                next_index = (count - 1);
 
-       do {
-               item = (mp_list_item *) g_list_nth_data(play_list->list, next_index);
-               if (!item->removed)
-                       break;
-               mp_debug("[index : %d] removed from playlist", next_index);
-
-               next_index--;
-               if (0 > next_index)
-                       next_index = (count - 1);
+       DEBUG_TRACE("get index = %d", next_index);
 
-               if (next_index == play_list->current_index)
-                       return MP_PLST_RET_END;
-       } while (1);
+       item = (mp_list_item *) g_list_nth_data(play_list->list, next_index);
 
-       DEBUG_TRACE("get index = %d", next_index);
        ret = _mp_play_list_get_item_by_list_data(data, request_item, item);
 
        endfunc;
@@ -1072,21 +1104,10 @@ mp_play_list_get_next_item(void *data, mp_play_list * play_list, music_list_item
                        next_index = 0;
        }
 
-       do {
-               item = (mp_list_item *) g_list_nth_data(play_list->list, next_index);
-               if (!item->removed)
-                       break;
-               mp_debug("[index : %d] removed from playlist", next_index);
-
-               next_index++;
-               if (next_index >= count)
-                       next_index = 0;
+       DEBUG_TRACE("get index = %d", next_index);
 
-               if (next_index == play_list->current_index)
-                       return MP_PLST_RET_END;
-       } while (1);
+       item = (mp_list_item *) g_list_nth_data(play_list->list, next_index);
 
-       DEBUG_TRACE("get index = %d", next_index);
        if(!_mp_play_list_get_item_by_list_data(data, request_item, item))
                ret = MP_PLST_RET_ERR;
 
@@ -1104,6 +1125,7 @@ mp_play_list_get_normal_list_index_by_fid(mp_play_list * play_list, char *fid)
 
        if (play_list->shuffle_list == play_list->list)
        {
+               // shuffle list case , must refind at normal list
                int count = g_list_length(play_list->normal_list);
                int index = 0;
 
@@ -1130,44 +1152,3 @@ mp_play_list_get_normal_list_index_by_fid(mp_play_list * play_list, char *fid)
        return select_request_index;
 }
 
-bool
-mp_play_list_delete_item(mp_play_list *playing_list, char *fid)
-{
-       MP_CHECK_FALSE(playing_list);
-       MP_CHECK_FALSE(fid);
-
-       bool ret = FALSE;
-
-       mp_list_item *item = NULL;
-       int count = g_list_length(playing_list->normal_list);
-       int i = 0;
-       for (; i < count ; i++) {
-               item = (mp_list_item *)g_list_nth_data(playing_list->normal_list, i);
-               if (item) {
-                       if (!g_strcmp0(fid, item->fid)) {
-                               item->removed = TRUE;
-                               ret = TRUE;
-                               mp_debug("[%d : %s]", i, fid);
-                               break;
-                       }
-               }
-       }
-
-       if (playing_list->shuffle_list) {
-               count = g_list_length(playing_list->shuffle_list);
-               for (i = 0; i < count ; i++) {
-                       item = (mp_list_item *)g_list_nth_data(playing_list->shuffle_list, i);
-                       if (item) {
-                               if (!g_strcmp0(fid, item->fid)) {
-                                       item->removed = TRUE;
-                                       ret = TRUE;
-                                       mp_debug("[%d : %s]", item->list_index, fid);
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       return ret;
-}
-
index ccbbafa..0e58a95 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-#include <aul.h>
-#include <utilX.h>
 #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 <mm_sound.h>
 #include "mp-player-drm.h"
 #include "mp-play-view.h"
 #include "mp-item.h"
-#include "mp-common.h"
 #include "mp-play-list.h"
 #include "mp-play.h"
 #include "mp-play-list.h"
 #include "mp-util.h"
 #include "mp-setting-ctrl.h"
-#include "mp-view-manager.h"
 #include "mp-player-mgr.h"
-
+#include "mp-app.h"
 #include "mp-player-debug.h"
-#include <pmapi.h>
+#include "mp-minicontroller.h"
 #include "mp-widget.h"
 #include "mp-streaming-mgr.h"
+#ifdef MP_SOUND_PLAYER
+#include "mp-ug-launch.h"
+#include "sp-view-manager.h"
+#else
+#include "mp-common.h"
+#include "mp-view-manager.h"
+#endif
 
 
 #define CTR_EDJ_SIG_SRC "ctrl_edj"
 #define CTR_PROG_SIG_SRC "ctrl_prog"
 
-#define LONG_PRESS_INTERVAL             0.5
-#define FF_REW_INTERVAL             0.05
-#define LONG_PRESS_TIME_INCREASE       0.1
+#define LONG_PRESS_INTERVAL             0.5    //sec
+#define FF_REW_INTERVAL             0.25       //sec
+#define LONG_PRESS_TIME_INCREASE       0.5     //sec
+
+#define PAUSE_OFF_TIMEOUT                      (2 * 60)        // sec
 
 static Eina_Bool _mp_play_mute_popup_cb(void *data);
 
+static void
+_mp_play_control_long_press_seek_done_cb(void *data)
+{
+       struct appdata *ad = data;
+       mp_play_view_progress_timer_thaw(ad);
+}
+
 static Eina_Bool
 _mp_play_control_long_pressed_cb(void *data)
 {
@@ -62,9 +75,6 @@ _mp_play_control_long_pressed_cb(void *data)
 
        ad->is_Longpress = true;
 
-       if (ad->player_state == PLAY_STATE_PLAYING)
-               mp_player_mgr_pause(ad);
-
        if (ad->is_ff)
                ad->ff_rew += LONG_PRESS_TIME_INCREASE;
        else
@@ -80,25 +90,28 @@ _mp_play_control_long_pressed_cb(void *data)
 
        mp_debug("new pos=%f", new_pos);
 
+       int req_seek_pos = 0;
        if (new_pos < 0.)
        {
-               mp_player_mgr_set_position(0);
                ad->music_pos = 0;
+               req_seek_pos = 0;
        }
        else if (new_pos > ad->music_length)
        {
-               mp_player_mgr_set_position(duration);
                ad->music_pos = ad->music_length;
+               req_seek_pos = duration;
        }
        else
        {
-               mp_player_mgr_set_position(new_pos * 1000);
                ad->music_pos = new_pos;
+               req_seek_pos = new_pos * 1000;
        }
 
-       vconf_set_dbl(MP_EXT_CUR_PROGRESS_POS, ad->music_pos / ad->music_length);
+       if (mp_player_mgr_set_position(req_seek_pos, _mp_play_control_long_press_seek_done_cb, ad)) {
+               mp_play_view_progress_timer_freeze(ad);
+               mp_play_view_update_progressbar(ad);
+       }
 
-       mp_play_view_update_progressbar(data);
        ecore_timer_interval_set(ad->longpress_timer, FF_REW_INTERVAL);
 
        endfunc;
@@ -140,7 +153,7 @@ _mp_play_control_reset_play_list(void *data)
                mp_play_list_reset(ad, &ad->playing_list, current_item->key_id);
        }
 
-       current_item = mp_play_list_get_current_item(ad->playing_list);
+       current_item = mp_play_list_get_current_item(ad->playing_list); //reset at mp_play_list_reset, so must reget current item
        MP_CHECK_FALSE(current_item);
 
        mp_playing_view *playing_view = ad->playing_view;
@@ -157,6 +170,174 @@ _mp_play_control_reset_play_list(void *data)
        return true;
 }
 
+static void _hide_reflection(struct appdata *ad)
+{
+       MP_CHECK(ad);
+       if(ad->playing_view && ad->info_ug_base)
+       {
+               if (ad->playing_view->albumart_image_reflection)
+               {
+                       DEBUG_TRACE("hide albumart_image_reflection");
+                       evas_object_hide(ad->playing_view->albumart_image_reflection);
+               }
+               if (ad->playing_view->albumart_image)
+               {
+                       DEBUG_TRACE("hide albumart_image");
+                       evas_object_hide(ad->playing_view->albumart_image);
+               }
+       }
+}
+
+static void
+_mp_play_control_start_cb(void *userdata)
+{
+       MP_TA_ACUM_ITEM_END("         mm_player_start_cb_time", 0);
+       MP_TA_ACUM_ITEM_END("Selected_Item_to_play_start_cb", 0);
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       _hide_reflection(ad);
+
+       mp_play_start(ad);
+
+       vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid());
+
+       if (ad->player_state == PLAY_STATE_PAUSED)
+               mp_play_resume(ad);
+
+       ad->player_state = PLAY_STATE_PLAYING;
+
+}
+
+static void
+_mp_play_control_paused_cb(void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       _hide_reflection(ad);
+
+       mp_play_pause(ad);
+       ad->player_state = PLAY_STATE_PAUSED;
+       ad->paused_by_other_player = FALSE;
+}
+
+static void
+_mp_play_control_completed_cb(void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       _hide_reflection(ad);
+       mp_play_control_end_of_stream(ad);
+}
+
+static void
+_mp_play_control_interrupted_cb(player_interrupted_code_e code, void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       _hide_reflection(ad);
+
+       switch(code)
+       {
+       case PLAYER_INTERRUPTED_BY_OTHER_APP:
+               DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP");
+               break;
+       case PLAYER_INTERRUPTED_BY_CALL:
+               DEBUG_TRACE("receive PLAYER_INTERRUPTED_BY_CALL");
+               break;
+       case PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG:
+               DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG");
+               break;
+       case PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT:
+               DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT");
+               break;
+       case PLAYER_INTERRUPTED_BY_ALARM:
+               DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_ALARM_START");
+               break;
+       case PLAYER_INTERRUPTED_COMPLETED:
+               DEBUG_TRACE("PLAYER_INTERRUPTED_COMPLETED");
+               return;
+               break;
+       default:
+               DEBUG_TRACE("Unhandled code: %d", code);
+               break;
+       }
+
+       mp_play_pause(ad);
+}
+
+static Eina_Bool
+_mp_play_control_error(void *data)
+{
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad);
+
+       mp_play_destory(ad);
+       ad->playing_err_idler = NULL;
+       return EINA_FALSE;
+}
+
+static void
+_mp_play_control_error_cb(int error_code, void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       _hide_reflection(ad);
+
+       switch (error_code)
+       {
+       case PLAYER_ERROR_OUT_OF_MEMORY:
+               DEBUG_TRACE("PLAYER_ERROR_OUT_OF_MEMORY");
+               break;
+       case PLAYER_ERROR_INVALID_PARAMETER:
+               DEBUG_TRACE("PLAYER_ERROR_INVALID_PARAMETER");
+               //mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
+               break;
+       case PLAYER_ERROR_NOT_SUPPORTED_FILE:   //can receive error msg while playing.
+               DEBUG_TRACE("receive MM_ERROR_PLAYER_CODEC_NOT_FOUND\n");
+               mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"));
+               break;
+       case PLAYER_ERROR_CONNECTION_FAILED:
+               mp_debug("MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL");
+               mp_streaming_mgr_buffering_popup_control(ad, FALSE);
+               mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_CONNECTION_FAILED"));
+               break;
+       default:
+               mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"));
+               DEBUG_TRACE("error_code: %d", error_code);
+       }
+
+       if(!ad->playing_err_idler)
+               ad->playing_err_idler = ecore_idler_add(_mp_play_control_error, ad);
+}
+
+static void
+_mp_play_control_buffering_cb(int percent, void *userdata)
+{
+       startfunc;
+       struct appdata *ad = userdata;
+       MP_CHECK(ad);
+
+       _hide_reflection(ad);
+
+       mp_debug("Buffering : %d%% \n", percent);
+
+       bool is_show_buffering = true;
+       if (percent > 95 || ad->player_state == PLAY_STATE_PLAYING)
+               is_show_buffering = false;
+
+       mp_streaming_mgr_buffering_popup_control(ad, is_show_buffering);
+}
+
 bool
 mp_player_control_ready_new_file(void *data, bool check_drm)
 {
@@ -170,6 +351,7 @@ mp_player_control_ready_new_file(void *data, bool check_drm)
 
        bool is_drm = FALSE;
 
+       //mp_play_control_visible_set(ad, TRUE);
        DEBUG_TRACE("current item pathname : [%s]", current_item->filename);
        if (mp_util_check_uri_available(current_item->filename))
        {
@@ -178,10 +360,11 @@ mp_player_control_ready_new_file(void *data, bool check_drm)
        else    if (!mp_check_file_exist(current_item->filename))
        {
                ERROR_TRACE("There is no such file\n");
-               mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST"));
+               mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST"));    //show popup when file not exitst
                return FALSE;
        }
 
+       //DRM File Check
        if (check_drm)
        {
                if (mp_drm_file_right(current_item->filename))
@@ -189,7 +372,7 @@ mp_player_control_ready_new_file(void *data, bool check_drm)
                        DEBUG_TRACE("This is DRM Contents\n");
                        is_drm = TRUE;
 
-                       if (!mp_drm_check_left_ro(ad, current_item->filename))
+                       if (!mp_drm_check_left_ro(ad, current_item->filename))  //drm pop-up  raised.
                                return FALSE;
 
                        if (!mp_drm_check_forward(ad, current_item->filename))
@@ -199,9 +382,6 @@ mp_player_control_ready_new_file(void *data, bool check_drm)
        else
                is_drm = TRUE;
 
-       if (is_drm)
-               mp_drm_set_consumption(TRUE);
-
        ad->player_state = PLAY_STATE_INIT;
 
        if (!mp_player_mgr_create(ad, current_item->filename))
@@ -210,11 +390,12 @@ mp_player_control_ready_new_file(void *data, bool check_drm)
                return FALSE;
        }
 
-       if (!mp_player_mgr_set_msg_callback(player_msg_cb, ad)) //callback has to be set before realize
-       {
-               mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
-               return FALSE;
-       }
+       mp_player_mgr_set_started_cb(_mp_play_control_start_cb, ad);
+       mp_player_mgr_set_paused_cb(_mp_play_control_paused_cb, ad);
+       mp_player_mgr_set_completed_cb(_mp_play_control_completed_cb, ad);
+       mp_player_mgr_set_interrupted_cb(_mp_play_control_interrupted_cb, ad);
+       mp_player_mgr_set_error_cb(_mp_play_control_error_cb, ad);
+       mp_player_mgr_set_buffering_cb(_mp_play_control_buffering_cb, ad);
 
        if (!mp_player_mgr_realize(ad))
        {
@@ -222,6 +403,8 @@ mp_player_control_ready_new_file(void *data, bool check_drm)
                return FALSE;
        }
 
+       mp_play_ready(ad);
+
        return TRUE;
 }
 
@@ -240,7 +423,13 @@ mp_play_control_play_cb(void *data, Evas_Object * o, const char *emission, const
 
                if (ad->player_state == PLAY_STATE_PAUSED)
                {
-                       mp_player_mgr_resume(ad);
+                       if(mp_player_mgr_resume(ad))
+                       {
+                               vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid());
+                               if (ad->player_state == PLAY_STATE_PAUSED)
+                                       mp_play_resume(ad);
+                               ad->player_state = PLAY_STATE_PLAYING;
+                       }
                }
                else if (ad->player_state == PLAY_STATE_READY)
                {
@@ -252,6 +441,7 @@ mp_play_control_play_cb(void *data, Evas_Object * o, const char *emission, const
                }
                else
                {
+                       //silentmode -> go to listview -> click one track -> silent mode play no -> go to playing view -> click play icon
                        mp_play_new_file(ad, TRUE);
                }
        }
@@ -288,13 +478,12 @@ mp_play_control_ff_cb(void *data, Evas_Object * o, const char *emission, const c
                if (ad->is_Longpress)
                {
                        ad->is_Longpress = false;
-                       if (!ad->paused_by_user)
-                               mp_player_mgr_resume(ad);
                }
                else
                {
                        if(ad->playing_view)
                                ad->playing_view->flick_direction = 1;
+
                        mp_play_next_file(ad, TRUE);
                }
        }
@@ -325,19 +514,23 @@ mp_play_control_rew_cb(void *data, Evas_Object * o, const char *emission, const
                if (ad->is_Longpress)
                {
                        ad->is_Longpress = false;
-                       if (!ad->paused_by_user)
-                               mp_player_mgr_resume(ad);
                }
                else
                {
                        int pos = mp_player_mgr_get_position();
                        if (pos > 3000 ||mp_play_list_get_current_list_count(ad->playing_list) == 1)
                        {
-                               mp_player_mgr_set_position(0);
+                               mp_player_mgr_set_position(0, NULL, NULL);
 
-                               if (!ad->paused_by_user)
+                               if (!ad->paused_by_user && ad->player_state == PLAY_STATE_PAUSED)
                                {
-                                       mp_player_mgr_resume(ad);
+                                       if(mp_player_mgr_resume(ad))
+                                       {
+                                               vconf_set_int(MP_VCONFKEY_PLAYING_PID, getpid());
+                                               if (ad->player_state == PLAY_STATE_PAUSED)
+                                                       mp_play_resume(ad);
+                                               ad->player_state = PLAY_STATE_PLAYING;
+                                       }
                                }
                                else
                                {
@@ -376,6 +569,7 @@ _mp_play_control_volume_timer_cb(void *data)
 
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK_FALSE(playing_view);
+       //previous status is mute
        if (ad->mute_flag)
        {
                mp_player_mgr_set_mute(false);
@@ -384,7 +578,7 @@ _mp_play_control_volume_timer_cb(void *data)
                ad->mute_flag = false;
        }
        else
-       {
+       {               //previous status is unmute
                mp_player_mgr_set_mute(true);
                edje_object_signal_emit(_EDJ(playing_view->play_icon), "mute", "volume");
                edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_SHOW, "*");
@@ -403,8 +597,11 @@ mp_play_control_volume_down_cb(void *data, Evas_Object * o, const char *emission
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
 
+       //initilize flag data
        ad->volume_long_pressed = false;
+
        mp_ecore_timer_del(ad->volume_down_timer);
+
        ad->volume_down_timer = ecore_timer_add(MP_LONG_PRESS_TIMEOUT, _mp_play_control_volume_timer_cb, (void *)ad);
 
        return;
@@ -446,11 +643,11 @@ mp_play_control_volume_cb(void *data, Evas_Object * o, const char *emission, con
 
        DEBUG_TRACE("volume_long_pressed=%d,mute_flag=%d", ad->volume_long_pressed, ad->mute_flag);
        if (ad->volume_long_pressed)
-       {
+       {                       //longpress volume button
                ad->volume_long_pressed = false;
        }
        else if (ad->mute_flag)
-       {
+       {                       //previous status is mute
                mp_playing_view *playing_view = ad->playing_view;
                MP_CHECK(playing_view);
                edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_SHOW, "*");
@@ -478,7 +675,7 @@ mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const
        {
        }
        else if (!strcmp(emission, SIGNAL_SHUFFLE))
-       {
+       {                       // TURN OFF SHUFFLE
                if (!mp_setting_set_shuffle_state(FALSE))
                {
                        mp_play_control_shuffle_set(ad, FALSE);
@@ -489,7 +686,7 @@ mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const
 
        }
        else if (!strcmp(emission, SIGNAL_SHUFNON))
-       {
+       {                       // TURN ON SHUFFE
 
                if (!mp_setting_set_shuffle_state(TRUE))
                {
@@ -501,16 +698,19 @@ mp_play_control_menu_cb(void *data, Evas_Object * o, const char *emission, const
        }
        else if (!strcmp(emission, SIGNAL_REPALL))      //off -1 - all - off
        {
+               //turn off srs
                if (!mp_setting_set_repeat_state(MP_SETTING_REP_NON))
                        mp_play_control_repeat_set(ad, MP_SETTING_REP_NON);
        }
        else if (!strcmp(emission, SIGNAL_REPNON))
        {
+               //turn off srs
                if (!mp_setting_set_repeat_state(MP_SETTING_REP_1))
                        mp_play_control_repeat_set(ad, MP_SETTING_REP_1);
        }
        else if (!strcmp(emission, SIGNAL_REP1))
        {
+               //turn off srs
                if (!mp_setting_set_repeat_state(MP_SETTING_REP_ALL))
                        mp_play_control_repeat_set(ad, MP_SETTING_REP_ALL);
        }
@@ -643,3 +843,4 @@ mp_play_control_repeat_set(void *data, int repeat_state)
                ERROR_TRACE("Error when set repeat\n");
 
 }
+
index 844c1c6..e7a14d3 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
+#include <drm_client.h>
+#include <drm_client_types.h>
 
 #include "music.h"
 #include "mp-player-drm.h"
 #include "mp-play-list.h"
 #include "mp-util.h"
 #include "mp-popup.h"
+#include "mp-widget.h"
 
-static bool _g_drm_consumption = FALSE;
 #define ACCUMULATED_DATE        86400  // 24*60*60
 
-void
-mp_drm_set_consumption(bool enabled)
-{
-       _g_drm_consumption = enabled;
-}
+static bool check_interval_constraint = false;
 
 bool
-mp_drm_get_consumption(void)
+mp_drm_get_content_info(const char *path, drm_content_info_e first_info, ...)
 {
-       return _g_drm_consumption;
-}
+       /* return info shoud be freed */
+       MP_CHECK_FALSE(path);
 
-void
-mp_drm_start_consumption(char *path)
-{
+       drm_content_info_s info;
+       memset(&info, 0x0, sizeof(drm_content_info_s));
+       int res = drm_get_content_info(path, &info);
+       if (res != DRM_RETURN_SUCCESS) {
+               mp_error("drm_get_content_info().. [0x%x]", res);
+               return false;
+       }
+
+       va_list var_args;
+       drm_content_info_e attr;
+
+       attr = first_info;
+       va_start(var_args, first_info);
+       char **ret_val = NULL;
+       char *value = NULL;
+       while (attr > DRM_CONTENT_INFO_NULL) {
+               ret_val = va_arg((var_args), char **);
 
+               switch (attr) {
+               case DRM_CONTENT_INFO_AUTHOR:
+                       value = info.author;
+                       break;
+
+               case DRM_CONTENT_INFO_RIGHTS_URL:
+                       value = info.rights_url;
+                       break;
+
+               case DRM_CONTENT_INFO_DESCRIPTION:
+                       value = info.description;
+                       break;
+
+               default:
+                       mp_debug("Not defined [%d]", attr);
+                       value = NULL;
+                       break;
+               }
+
+               /* output */
+               *ret_val = g_strdup(value);
+
+               attr = va_arg(var_args, drm_content_info_e);
+       }
+
+       va_end(var_args);
+
+       return true;
 }
 
 
-void
-mp_drm_pause_consumption(void)
+static void
+_mp_drm_check_remain_ro(struct appdata *ad)
 {
+       MP_CHECK(ad);
 
+       music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
+       MP_CHECK(current_item);
+
+       const char *format_str = NULL;
+       char *message = NULL;
+
+       mp_constraints_info_s *info = &ad->drm_constraints_info;
+       if (info->constraints & MP_DRM_CONSTRAINT_COUNT && info->remaining_count <= 2)
+       {
+               int remain = info->remaining_count - 1;
+               if (remain == 1) {
+                       format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_GET_ANOTHER_LICENCE_Q");
+                       message = g_strdup_printf(format_str, current_item->title);
+               } else if (remain == 0) {
+                       format_str = GET_SYS_STR("IDS_COM_POP_YOU_CANNOT_USE_PS_ANY_MORE_TIMES_GET_ANOTHER_LICENCE_Q");
+                       message = g_strdup_printf(format_str, current_item->title);
+               }
+       }
+       else if (info->constraints & MP_DRM_CONSTRAINT_ACCUMLATED_TIME)
+       {
+               if (info->remaining_acc_sec/ACCUMULATED_DATE <= 1) {
+                       format_str = GET_SYS_STR("IDS_COM_POP_PS_IS_ABOUT_TO_EXPIRE_GET_ANOTHER_LICENCE_Q");
+                       message = g_strdup_printf(format_str, current_item->title);
+               }
+       }
+
+       if (message)
+       {
+               ad->can_play_drm_contents = false;      // wap launch
+               mp_drm_set_notify(ad, message);
+               SAFE_FREE(message);
+       }
 }
 
-void
-mp_drm_resume_consumption(void)
+static void
+mp_drm_popup_response_cb(void *data, Evas_Object * obj, void *event_info)
 {
+       struct appdata *ad = (struct appdata *)data;
+       DEBUG_TRACE("response callback=%d", (int)event_info);
+       mp_retm_if(!ad, "ad is NULL!!!!");
 
+       if(obj)
+               evas_object_del(obj);
+
+       music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
+
+       int response = (int)event_info;
+       if (response == MP_POPUP_YES && current_item)
+       {
+               if (ad->can_play_drm_contents)
+               {
+                       if (mp_play_new_file(data, FALSE))
+                       {
+                               _mp_drm_check_remain_ro(ad);
+                       }
+               }
+               else
+               {
+                       char *rights_url = NULL;
+                       bool ret = mp_drm_get_content_info(current_item->filename, DRM_CONTENT_INFO_RIGHTS_URL, &rights_url, -1);
+                       if (ret && rights_url) {
+                               DEBUG_TRACE("right url : %s", rights_url);
+                               if (!mp_util_launch_browser(rights_url, NULL))
+                                       WARN_TRACE("Fail to launch browser!!!");
+                               SAFE_FREE(rights_url);
+                       }
+                       else
+                       {
+                               WARN_TRACE("Fail to get right url");
+                       }
+               }
+       }
+       else if (response == MP_POPUP_NO)
+       {
+               // do nothing
+       }
 }
 
 void
-mp_drm_stop_consumption(void)
+mp_drm_set_notify(void *data, char *message)
 {
+       struct appdata *ad = (struct appdata *)data;
+
+       mp_popup_destroy(ad);
+
+       Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, ad, mp_drm_popup_response_cb, ad);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(popup, message);
+       mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_YES"), MP_POPUP_YES);
+       mp_popup_button_set(popup, MP_POPUP_BTN_2, GET_SYS_STR("IDS_COM_SK_NO"), MP_POPUP_NO);
+       evas_object_show(popup);
 
+       ad->popup[MP_POPUP_NORMAL] = popup;
 }
 
 bool
 mp_drm_file_right(char *path)
 {
+       MP_CHECK_FALSE(path);
+
+       drm_bool_type_e is_drm = DRM_UNKNOWN;
+       drm_is_drm_file(path, &is_drm);
+       if (is_drm == DRM_TRUE)
+               return TRUE;
+
        return FALSE;
 }
 
 bool
 mp_drm_has_valid_ro(char *path)
 {
-       return TRUE;
+       MP_CHECK_FALSE(path);
+
+       drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;
+       int res = drm_get_license_status(path, DRM_PERMISSION_TYPE_PLAY, &license_status);
+       if (res != DRM_RETURN_SUCCESS) {
+               mp_debug("drm_get_license_status().. [0x%x]", res);
+       }
+
+       mp_debug("license_status = %d", license_status);
+
+       if (license_status == DRM_LICENSE_STATUS_VALID)
+               return TRUE;
+
+       return FALSE;
+}
+
+static drm_file_type_e
+_mp_drm_get_file_type(const char *path)
+{
+       MP_CHECK_VAL(path, DRM_TYPE_UNDEFINED);
+
+       drm_file_type_e type = DRM_TYPE_UNDEFINED;
+       int ret = drm_get_file_type(path, &type);
+       if (ret != DRM_RETURN_SUCCESS) {
+               mp_error("drm_get_file_type().. [0x%x]", ret);
+               type = DRM_TYPE_UNDEFINED;
+       }
+
+       mp_debug("DRM file type[%s=>%d]", path, type);
+       return type;
 }
 
 bool
 mp_drm_get_description(void *data, char *path)
 {
-       return FALSE;
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad && path);
+
+       char *description = NULL;
+       bool ret = mp_drm_get_content_info(path, DRM_CONTENT_INFO_DESCRIPTION, &description, -1);
+       if (ret && description) {
+               mp_debug("description = [%s]", description);
+               SAFE_STRCPY(ad->drm_info.description, description);
+               ret = TRUE;
+       } else {
+               ret = FALSE;
+       }
+
+       SAFE_FREE(description);
+
+       return ret;
 }
 
 bool
 mp_drm_check_forward(void *data, char *path)
 {
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad && path);
+
+       drm_file_type_e type = _mp_drm_get_file_type(path);
+
+       if (type == DRM_TYPE_OMA_V1 || type == DRM_TYPE_OMA_V2)
+       {
+               drm_file_info_s info;
+               memset(&info, 0x0, sizeof(drm_file_info_s));
+               int ret = drm_get_file_info(path, &info);
+               if (ret != DRM_RETURN_SUCCESS) {
+                       mp_error("drm_get_file_info()... [0x%x]", ret);
+                       return FALSE;
+               }
+
+               ad->drm_info.version = info.oma_info.version;
+               if (info.oma_info.version == DRM_OMA_DRMV1_RIGHTS)
+               {
+                       if (info.oma_info.method == DRM_METHOD_TYPE_SEPARATE_DELIVERY)
+                               ad->drm_info.forward = TRUE;
+                       else
+                               ad->drm_info.forward = FALSE;
+               }
+               else if (info.oma_info.version == DRM_OMA_DRMV2_RIGHTS)
+               {
+                       //all drmv2 contents can be forwared.
+                       ad->drm_info.forward = TRUE;
+               }
+               else
+               {
+                       ERROR_TRACE("Unknown version\n");
+                       return FALSE;
+               }
+       }
+       else if (type == DRM_TYPE_PLAYREADY)
+       {
+               DEBUG_TRACE("playready drm file");
+               ad->drm_info.forward = TRUE;
+       }
+       else
+       {
+               ERROR_TRACE("Not supported drm type");
+               return FALSE;
+       }
+       return TRUE;
+}
+
+bool
+mp_drm_get_left_ro_info(const char *path, mp_constraints_info_s *info)
+{
+       MP_CHECK_FALSE(path && info);
+
+       if (!mp_drm_has_valid_ro((char *)path))
+       {
+               mp_error("No valid ro");
+               return false;
+       }
+
+       /* init info */
+       memset(info, 0x0, sizeof(mp_constraints_info_s));
+
+       drm_constraint_info_s constraint;
+       memset(&constraint, 0x0, sizeof(drm_constraint_info_s));
+
+       int res = drm_get_constraint_info(path, DRM_PERMISSION_TYPE_PLAY, &constraint);
+       if (res == DRM_RETURN_SUCCESS) {
+               if (constraint.const_type.is_unlimited) {
+                       DEBUG_TRACE("UNLIMITED");
+                       info->constraints = MP_DRM_CONSTRAINT_UNLIMITED;
+                       return true;
+               }
+
+               if (constraint.const_type.is_count) {
+                       DEBUG_TRACE("DRM_COUNT [%d]", constraint.remaining_count);
+                       info->constraints |= MP_DRM_CONSTRAINT_COUNT;
+                       info->remaining_count = constraint.remaining_count;
+               }
+
+               if (constraint.const_type.is_datetime) {
+                       DEBUG_TRACE("DRM_DATETIME");
+                       info->constraints |= MP_DRM_CONSTRAINT_DATE_TIME;
+                       DEBUG_TRACE("%d.%d.%d %d:%d~%d.%d.%d %d:%d",
+                               constraint.start_time.tm_mday,
+                               constraint.start_time.tm_mon + 1,
+                               constraint.start_time.tm_year + 1900,
+                               constraint.start_time.tm_hour,
+                               constraint.start_time.tm_min,
+                               constraint.end_time.tm_mday,
+                               constraint.end_time.tm_mon + 1,
+                               constraint.end_time.tm_year + 1900,
+                               constraint.end_time.tm_hour,
+                               constraint.end_time.tm_min);
+
+                       struct timeval tv;
+                       gettimeofday(&tv, NULL);
+                       struct tm *ptm = NULL;
+                       ptm = localtime(&tv.tv_sec);
+
+                       if (ptm->tm_year >= constraint.start_time.tm_year
+                               && ptm->tm_mon >= constraint.start_time.tm_mon
+                               && ptm->tm_mday >= constraint.start_time.tm_mday
+                               && ptm->tm_hour >= constraint.start_time.tm_hour
+                               && ptm->tm_min >= constraint.start_time.tm_min
+                               && ptm->tm_mon <= constraint.end_time.tm_mon
+                               && ptm->tm_mday <= constraint.end_time.tm_mday
+                               && ptm->tm_hour <= constraint.end_time.tm_hour
+                               && ptm->tm_min <= constraint.end_time.tm_min)
+                       {
+                               /* not expired */
+                               info->date_time_expired = false;
+                       }
+                       else
+                       {
+                               info->date_time_expired = true;
+                       }
+
+               }
+
+               if (constraint.const_type.is_interval) {
+                       DEBUG_TRACE("DRM_INTERVAL");
+                       info->constraints |= MP_DRM_CONSTRAINT_INTERVAL;
+                       DEBUG_TRACE("Remain... %d.%d.%d %d:%d",
+                               constraint.interval_time.tm_mon,
+                               constraint.interval_time.tm_mday,
+                               constraint.interval_time.tm_year,
+                               constraint.interval_time.tm_hour,
+                               constraint.interval_time.tm_min);
+
+                       info->remaining_interval_sec = constraint.interval_time.tm_sec + constraint.interval_time.tm_min * 60 + constraint.interval_time.tm_hour * 3600;
+                       info->remaining_interval_sec += (constraint.interval_time.tm_mday + constraint.interval_time.tm_mon * 30 + constraint.interval_time.tm_year * 365) * (3600 *24);
+               }
+
+               if (constraint.const_type.is_timedcount) {
+                       DEBUG_TRACE("DRM_TIMED_COUNT");
+                       DEBUG_TRACE("%d left (%d sec)", constraint.timed_remaining_count, constraint.timed_count_timer);
+                       info->constraints |= MP_DRM_CONSTRAINT_TIMED_COUNT;
+                       info->remaining_timed_count = constraint.timed_remaining_count;
+               }
+
+               if (constraint.const_type.is_accumulated) {
+                       DEBUG_TRACE("DRM_ACCUMULATED [%d]", constraint.accumulated_remaining_seconds);
+                       info->constraints |= MP_DRM_CONSTRAINT_ACCUMLATED_TIME;
+                       info->remaining_acc_sec = constraint.accumulated_remaining_seconds;
+               }
+
+               if (constraint.const_type.is_individual) {
+                       mp_debug("DRM_INDIVISUAL_ID [%s]", constraint.individual_id);
+               }
+
+               if (constraint.const_type.is_system) {
+                       mp_debug("DRM_SYSTEM [ID:%s, type:%d]", constraint.system_id, constraint.system_identity_type);
+               }
+       }
+       else {
+               mp_error("drm_get_constraint_info().. 0x%x", res);
+               return FALSE;
+       }
+
        return TRUE;
 }
 
+
 bool
 mp_drm_check_left_ro(void *data, char *path)
 {
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad);
+
+       bool wap_launch = FALSE;
+       bool expired = FALSE;
+
+       mp_retvm_if(!ad, NULL, "ad is NULL!!!!");
+       music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
+       MP_CHECK_FALSE(current_item);
+
+       char *title = current_item->title;
+       ad->can_play_drm_contents = FALSE;
+
+       DEBUG_TRACE("mp_drm_check_left_ro\n");
+       mp_constraints_info_s *info = &(ad->drm_constraints_info);
+       memset(info, 0x0, sizeof(mp_constraints_info_s));
+       bool has_valid_ro = mp_drm_get_left_ro_info(path, info);
+
+       const char *format_str = NULL;
+       char *message = NULL;
+       if (has_valid_ro)
+       {
+               while (info->constraints)
+               {
+                       if (info->constraints & MP_DRM_CONSTRAINT_COUNT)
+                       {
+                               if (info->remaining_count == 2) {
+                                       format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_2_MORE_TIMES_START_NOW_Q");
+                                       message = g_strdup_printf(format_str, title);
+                               } else if (info->remaining_count == 1) {
+                                       format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_START_NOW_Q");
+                                       message = g_strdup_printf(format_str, title);
+                               } else if (info->remaining_count == 0) {
+                                       wap_launch = true;
+                                       break;
+                               }
+                       }
+
+                       if (info->constraints & MP_DRM_CONSTRAINT_DATE_TIME)
+                       {
+                               if (info->date_time_expired)    {
+                                       wap_launch = true;
+                                       break;
+                               }
+                       }
+
+                       if (info->constraints & MP_DRM_CONSTRAINT_INTERVAL)
+                       {
+                               if (info->remaining_interval_sec == 0) {
+                                       wap_launch = true;
+                                       break;
+                               } else if (!check_interval_constraint) {
+                                       check_interval_constraint = true;
+                                       format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_FOR_PD_DAYS_START_NOW_Q");
+                                       int days = info->remaining_interval_sec / ACCUMULATED_DATE + 1;
+                                       message = g_strdup_printf(format_str, title, days);
+                               }
+                       }
+
+                       if (info->constraints & MP_DRM_CONSTRAINT_TIMED_COUNT)
+                       {
+                               if (info->remaining_timed_count == 2) {
+                                       format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_2_MORE_TIMES_START_NOW_Q");
+                                       message = g_strdup_printf(format_str, title);
+                               } else if (info->remaining_timed_count == 1) {
+                                       format_str = GET_SYS_STR("IDS_COM_POP_YOU_CAN_USE_PS_1_MORE_TIME_START_NOW_Q");
+                                       message = g_strdup_printf(format_str, title);
+                               } else if (info->remaining_timed_count == 0) {
+                                       wap_launch = true;
+                                       break;
+                               }
+                       }
+
+                       if (info->constraints & MP_DRM_CONSTRAINT_ACCUMLATED_TIME)
+                       {
+                               if (info->remaining_acc_sec == 0) {
+                                       wap_launch = true;
+                                       break;
+                               }
+                       }
+
+                       ad->can_play_drm_contents = true;
+                       break;
+               }
+
+               if (info->constraints == MP_DRM_CONSTRAINT_UNLIMITED) {
+                       ad->can_play_drm_contents = true;
+               }
+       }
+
+       if (!has_valid_ro || (wap_launch && !mp_drm_check_expiration(path, expired)))
+       {
+               DEBUG_TRACE("have no valid ro");
+               format_str = GET_SYS_STR("IDS_COM_POP_PS_CURRENTLY_LOCKED_UNLOCK_Q");
+               message = g_strdup_printf(format_str, title);
+               mp_drm_set_notify(ad, message);
+               SAFE_FREE(message);
+               return FALSE;
+       }
+       else if (message)
+       {
+               /* play possible */
+               mp_debug("warning popup=[%s]", message);
+               mp_drm_set_notify(ad, message);
+               SAFE_FREE(message);
+               return FALSE;
+       }
+
        return TRUE;
 }
 
 bool
 mp_drm_check_expiration(char *path, bool expired)
 {
-       return TRUE;
+       if (mp_drm_file_right(path))
+       {
+
+               drm_file_info_s info;
+               memset(&info, 0x0, sizeof(drm_file_info_s));
+               int ret = drm_get_file_info(path, &info);
+               if (ret == DRM_RETURN_SUCCESS) {
+                       DEBUG_TRACE("method [%d] expired [%d]\n", info.oma_info.method, expired);
+                       if (info.oma_info.method == DRM_METHOD_TYPE_COMBINED_DELIVERY
+                               || info.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK) {
+
+                               return TRUE;
+                       }
+
+                       return FALSE;
+               }
+       }
+
+       return FALSE;
 }
 
 bool
 mp_drm_check_foward_lock(char *path)
 {
-       return TRUE;
+       if (mp_drm_file_right(path))
+       {
+
+               drm_file_info_s info;
+               memset(&info, 0x0, sizeof(drm_file_info_s));
+               int ret = drm_get_file_info(path, &info);
+               if (ret == DRM_RETURN_SUCCESS) {
+                       if (info.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK) {
+                               mp_debug("forward lock..");
+                               return TRUE;
+                       }
+               }
+       }
+
+       return FALSE;
+}
+
+static mp_drm_right_status_t*
+_mp_drm_create_right_status_item(const char *type, const char *validity)
+{
+       MP_CHECK_NULL(type);
+
+       mp_drm_right_status_t *rs = calloc(1, sizeof(mp_drm_right_status_t));
+       mp_assert(rs);
+       rs->type = g_strdup(type);
+       rs->validity = g_strdup(validity);
+
+       return rs;
+}
+
+GList*
+mp_drm_get_right_status(const char *path)
+{
+       startfunc;
+       MP_CHECK_NULL(path);
+
+       GList *rs_list = NULL;
+
+       drm_constraint_info_s constraint;
+       memset(&constraint, 0x0, sizeof(drm_constraint_info_s));
+       int res = drm_get_constraint_info(path, DRM_PERMISSION_TYPE_PLAY, &constraint);
+       if (res != DRM_RETURN_SUCCESS) {
+               mp_error("drm_get_constraint_info().. [0x%x]", res);
+               return NULL;
+       }
+
+       char *validity_str = NULL;
+
+       if (constraint.const_type.is_unlimited) {
+               DEBUG_TRACE("UNLIMITED");
+               mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_SYS_STR("IDS_COM_POP_UNLIMITED"), NULL);
+               rs_list = g_list_append(rs_list, rs);
+       }
+
+       if (constraint.const_type.is_count) {
+               validity_str = g_strdup_printf("%d left", constraint.remaining_count);
+               mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_STR("Count"), validity_str);
+               SAFE_FREE(validity_str);
+               rs_list = g_list_append(rs_list, rs);
+       }
+
+       if (constraint.const_type.is_datetime) {
+               DEBUG_TRACE("DRM_DATETIME\n");
+               validity_str = g_strdup_printf("%d.%d.%d %d:%d~%d.%d.%d %d:%d",
+                                       constraint.start_time.tm_mday,
+                                       constraint.start_time.tm_mon + 1,
+                                       constraint.start_time.tm_year + 109,
+                                       constraint.start_time.tm_hour,
+                                       constraint.start_time.tm_min,
+                                       constraint.end_time.tm_mday,
+                                       constraint.end_time.tm_mon + 1,
+                                       constraint.end_time.tm_year + 109,
+                                       constraint.end_time.tm_hour,
+                                       constraint.end_time.tm_min);
+
+               mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_SYS_STR("IDS_COM_POP_TIME"), validity_str);
+               SAFE_FREE(validity_str);
+               rs_list = g_list_append(rs_list, rs);
+       }
+
+       if (constraint.const_type.is_interval) {
+               DEBUG_TRACE("DRM_INTERVAL\n");
+               int val = constraint.interval_time.tm_hour;
+               val += 24 * (constraint.interval_time.tm_mday + constraint.interval_time.tm_mon * 30 + constraint.interval_time.tm_year * 365);
+               const char *format = GET_SYS_STR("IDS_COM_POP_PD_HOURS");
+               validity_str = g_strdup_printf(format, val);
+               mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_STR("Interval"), validity_str);
+               SAFE_FREE(validity_str);
+               rs_list = g_list_append(rs_list, rs);
+       }
+
+       if (constraint.const_type.is_timedcount) {
+               validity_str = g_strdup_printf("%d left", constraint.timed_remaining_count);
+               mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_STR("Timed count"), validity_str);
+               SAFE_FREE(validity_str);
+               rs_list = g_list_append(rs_list, rs);
+       }
+
+       if (constraint.const_type.is_accumulated) {
+               const char *format = GET_SYS_STR("IDS_COM_POP_PD_HOURS");
+               int acc_sec = constraint.accumulated_remaining_seconds;
+               int hour = acc_sec / 3600;
+               validity_str = g_strdup_printf(format, hour);
+               mp_drm_right_status_t *rs = _mp_drm_create_right_status_item(GET_STR("Accumulate time"), validity_str);
+               SAFE_FREE(validity_str);
+               rs_list = g_list_append(rs_list, rs);
+       }
+
+       if (constraint.const_type.is_individual) {
+               mp_debug("DRM_INDIVISUAL_ID [%s]", constraint.individual_id);
+       }
+
+       if (constraint.const_type.is_system) {
+               mp_debug("DRM_SYSTEM [ID:%s, type:%d]", constraint.system_id, constraint.system_identity_type);
+       }
+       return rs_list;
+}
+
+void
+mp_drm_free_right_status(GList *list)
+{
+       MP_CHECK(list);
+
+       GList *current = list;
+       while(current) {
+               mp_drm_right_status_t *rs = current->data;
+               if (rs) {
+                       SAFE_FREE(rs->type);
+                       SAFE_FREE(rs->validity);
+
+                       free(rs);
+               }
+
+               current = current->next;
+       }
+
+       g_list_free(list);
+}
+
+bool
+mp_drm_request_setas_ringtone(const char *path, mp_drm_setas_request_type_e type)
+{
+       MP_CHECK_FALSE(path);
+
+       bool ret = false;
+
+       switch (type) {
+       case SETAS_REQUEST_CHECK_STATUS:
+       {
+               drm_bool_type_e allowed = DRM_UNKNOWN;
+               drm_action_allowed_data_s data;
+               memset(&data, 0x0, sizeof(drm_action_allowed_data_s));
+               SAFE_STRCPY(data.file_path, path);
+               int res = drm_is_action_allowed(DRM_HAS_VALID_SETAS_STATUS, &data, &allowed);
+               if (res == DRM_RETURN_SUCCESS) {
+                       if (allowed == DRM_TRUE)
+                               ret = true;
+               } else {
+                       mp_error("drm_is_action_allowed().. [0x%x]", res);
+               }
+
+               break;
+       }
+       case SETAS_REQUEST_REGISTER:
+       {
+               drm_register_setas_info_s info;
+               memset(&info, 0x0, sizeof(drm_register_setas_info_s));
+               SAFE_STRCPY(info.file_path, path);
+               info.setas_cat = DRM_SETAS_RINGTONE;
+               int res = drm_process_request(DRM_REQUEST_TYPE_REGISTER_SETAS, (void *)&info, NULL);
+               if (res == DRM_RETURN_SUCCESS)
+                       ret = true;
+               else
+                       mp_error("drm_process_request().. [0x%x]", res);
+               break;
+       }
+       case SETAS_REQUEST_UNREGISTER:
+       {
+
+               drm_unregister_setas_info_s info;
+               memset(&info, 0x0, sizeof(drm_unregister_setas_info_s));
+               SAFE_STRCPY(info.file_path, path);
+               info.setas_cat = DRM_SETAS_RINGTONE;
+               int res = drm_process_request(DRM_REQUEST_TYPE_UNREGISTER_SETAS, (void *)&info, NULL);
+               if (res == DRM_RETURN_SUCCESS)
+                       ret = true;
+               else
+                       mp_error("drm_process_request().. [0x%x]", res);
+               break;
+       }
+       default:
+               mp_debug("Not defined");
+               break;
+       }
+
+       return ret;
 }
index a7f153c..984d3d8 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #include <glib.h>
-#include <mm_error.h>
 #include "music.h"
 #include "mp-player-mgr.h"
 #include "mp-player-control.h"
 #include "mp-play.h"
 #include "mp-player-drm.h"
-#include <mm_session.h>
-#include <mm_message.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 bool is_seeking = false;
+static int g_reserved_seek_pos = -1;
+
+static Seek_Done_Cb g_requesting_cb = NULL;
+static void *g_requesting_cb_data = NULL;
+
+static Seek_Done_Cb g_reserved_cb = NULL;
+static void *g_reserved_cb_data = NULL;
+
+static Ecore_Pipe *g_player_pipe = NULL;
 
-#define MAX_PATH_LEN MAX_NAM_LEN
+typedef enum {
+       MP_PLAYER_CB_TYPE_STARTED,
+       MP_PLAYER_CB_TYPE_PAUSED,
+       MP_PLAYER_CB_TYPE_COMPLETED,
+       MP_PLAYER_CB_TYPE_INTURRUPTED,
+       MP_PLAYER_CB_TYPE_ERROR,
+       MP_PLAYER_CB_TYPE_BUFFERING,
+       MP_PLAYER_CB_TYPE_NUM,
+} mp_player_cb_type;
 
-static MMHandleType _player = 0;
+typedef struct {
+       /* player callbacks */
+       player_started_cb started_cb;
+       player_paused_cb paused_cb;
+       player_completed_cb completed_cb;
+       player_interrupted_cb interrupted_cb;
+       player_error_cb error_cb;
+       player_buffering_cb buffering_cb;
+
+       /* callback user data */
+       void *user_data[MP_PLAYER_CB_TYPE_NUM];
+} mp_player_cbs;
+
+typedef struct {
+       mp_player_cb_type cb_type;
+
+       union {
+               player_interrupted_code_e interrupted_code;
+               int error_code;
+               int percent;
+       } param;
+} mp_player_cb_extra_data;
+
+static mp_player_cbs *g_player_cbs = NULL;
 
 bool
 mp_player_mgr_is_active(void)
@@ -40,33 +85,264 @@ mp_player_mgr_is_active(void)
        return _player ? TRUE : FALSE;
 }
 
-bool
-mp_player_mgr_set_msg_callback(MMMessageCallback cb, gpointer user_data)
+void mp_player_mgr_set_started_cb(player_started_cb  callback, void *user_data)
 {
        if (!mp_player_mgr_is_active())
-               return FALSE;
+               return;
 
-       if (mm_player_set_message_callback(_player, cb, user_data) != MM_ERROR_NONE)
-       {
-               ERROR_TRACE("Error when mp_player_mgr_set_msg_callback\n");
-               return FALSE;
-       }
-       return TRUE;
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->started_cb = callback;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_STARTED] = user_data;
+}
+
+void mp_player_mgr_set_paused_cb(player_paused_cb  callback, void *user_data)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->paused_cb = callback;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PAUSED] = user_data;
+}
+
+void mp_player_mgr_set_completed_cb(player_completed_cb  callback, void *user_data)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->completed_cb = callback;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_COMPLETED] = user_data;
+}
+
+void mp_player_mgr_set_interrupted_cb(player_interrupted_cb  callback, void *user_data)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->interrupted_cb = callback;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_INTURRUPTED] = user_data;
+}
+
+void mp_player_mgr_set_error_cb(player_error_cb  callback, void *user_data)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->error_cb = callback;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_ERROR] = user_data;
+}
+
+void mp_player_mgr_set_buffering_cb(player_buffering_cb  callback, void *user_data)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->buffering_cb = callback;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_BUFFERING] = user_data;
+}
+
+void mp_player_mgr_unset_started_cb(void)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->started_cb = NULL;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_STARTED] = NULL;
+}
+
+void mp_player_mgr_unset_paused_cb(void)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->paused_cb = NULL;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PAUSED] = NULL;
+}
+
+void mp_player_mgr_unset_completed_cb(void)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->completed_cb = NULL;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_COMPLETED] = NULL;
+}
+
+void mp_player_mgr_unset_interrupted_cb(void)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->interrupted_cb = NULL;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_INTURRUPTED] = NULL;
 }
 
-MMPlayerStateType
+void mp_player_mgr_unset_error_cb(void)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->error_cb = NULL;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_ERROR] = NULL;
+}
+
+void mp_player_mgr_unset_buffering_cb(void)
+{
+       if (!mp_player_mgr_is_active())
+               return;
+
+       MP_CHECK(g_player_cbs);
+
+       g_player_cbs->buffering_cb = NULL;
+       g_player_cbs->user_data[MP_PLAYER_CB_TYPE_BUFFERING] = NULL;
+}
+
+player_state_e
 mp_player_mgr_get_state(void)
 {
        int ret = -1;
-       MMPlayerStateType state_now = MM_PLAYER_STATE_NULL;
+       player_state_e state_now = PLAYER_STATE_NONE;
 
        if (!_player)
                return state_now;
 
-       ret = mm_player_get_state(_player, &state_now);
+       ret = player_get_state(_player, &state_now);
        return state_now;
 }
 
+static void
+_mp_player_mgr_callback_pipe_handler(void *data, void *buffer, unsigned int nbyte)
+{
+       mp_player_cb_extra_data *extra_data = buffer;
+       MP_CHECK(extra_data);
+       MP_CHECK(g_player_cbs);
+
+       switch (extra_data->cb_type) {
+       case MP_PLAYER_CB_TYPE_STARTED:
+               if (g_player_cbs->started_cb)
+                       g_player_cbs->started_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_STARTED]);
+               break;
+
+       case MP_PLAYER_CB_TYPE_PAUSED:
+               if (g_player_cbs->paused_cb)
+                       g_player_cbs->paused_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_PAUSED]);
+               break;
+
+       case MP_PLAYER_CB_TYPE_COMPLETED:
+               if (g_player_cbs->completed_cb)
+                       g_player_cbs->completed_cb(g_player_cbs->user_data[MP_PLAYER_CB_TYPE_COMPLETED]);
+               break;
+
+       case MP_PLAYER_CB_TYPE_INTURRUPTED:
+               if (g_player_cbs->interrupted_cb)
+                       g_player_cbs->interrupted_cb(extra_data->param.interrupted_code, g_player_cbs->user_data[MP_PLAYER_CB_TYPE_INTURRUPTED]);
+               break;
+
+       case MP_PLAYER_CB_TYPE_ERROR:
+               if (g_player_cbs->error_cb)
+                       g_player_cbs->error_cb(extra_data->param.error_code, g_player_cbs->user_data[MP_PLAYER_CB_TYPE_ERROR]);
+               break;
+
+       case MP_PLAYER_CB_TYPE_BUFFERING:
+               if (g_player_cbs->buffering_cb)
+                       g_player_cbs->buffering_cb(extra_data->param.percent ,g_player_cbs->user_data[MP_PLAYER_CB_TYPE_BUFFERING]);
+               break;
+
+       default:
+               WARN_TRACE("Not suppoted callback type [%d]", extra_data->cb_type);
+       }
+}
+
+static void
+_mp_player_mgr_start_cb(void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       extra_data.cb_type = MP_PLAYER_CB_TYPE_STARTED;
+
+       ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data));
+}
+
+static void
+_mp_player_mgr_paused_cb(void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       extra_data.cb_type = MP_PLAYER_CB_TYPE_PAUSED;
+
+       ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data));
+}
+
+static void
+_mp_player_mgr_completed_cb(void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       extra_data.cb_type = MP_PLAYER_CB_TYPE_COMPLETED;
+
+       ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data));
+}
+
+static void
+_mp_player_mgr_interrupted_cb(player_interrupted_code_e code, void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       extra_data.cb_type = MP_PLAYER_CB_TYPE_INTURRUPTED;
+       extra_data.param.interrupted_code = code;
+
+       ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data));
+}
+
+
+static void
+_mp_player_mgr_error_cb(int error_code, void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       extra_data.cb_type = MP_PLAYER_CB_TYPE_ERROR;
+       extra_data.param.error_code = error_code;
+
+       ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data));
+}
+
+static void
+_mp_player_mgr_buffering_cb(int percent, void *userdata)
+{
+       MP_CHECK(g_player_pipe);
+
+       mp_player_cb_extra_data extra_data;
+       extra_data.cb_type = MP_PLAYER_CB_TYPE_BUFFERING;
+       extra_data.param.percent = percent;
+
+       ecore_pipe_write(g_player_pipe, &extra_data, sizeof(mp_player_cb_extra_data));
+}
+
 
 bool
 mp_player_mgr_create(void *data, const gchar * path)
@@ -74,14 +350,10 @@ mp_player_mgr_create(void *data, const gchar * path)
        struct appdata *ad = (struct appdata *)data;
        int path_len = strlen(path);
 
-       char *g_err_name = NULL;
-       int ret = MM_ERROR_NONE;
+       int ret = PLAYER_ERROR_NONE;
 
        DEBUG_TRACE("mp_player_mgr_create with [%s]\n", path);
 
-       if(!ad->player_msg_pipe)
-               ad->player_msg_pipe = ecore_pipe_add(mp_player_mgr_pipe_cb, ad);
-
        if (path_len > 0 && path_len < MAX_PATH_LEN)
        {
 
@@ -89,25 +361,30 @@ mp_player_mgr_create(void *data, const gchar * path)
                {
                        return FALSE;
                }
-               if (mm_player_create(&_player) != MM_ERROR_NONE)
+               MP_TA_ACUM_ITEM_BEGIN("         mm_player_create", 0);
+               if (player_create(&_player) != PLAYER_ERROR_NONE)
                {
                        ERROR_TRACE("Error when mp_player_mgr_create\n");
                        return FALSE;
                }
+               MP_TA_ACUM_ITEM_END("         mm_player_create", 0);
+               /*avsysaudiosink volume table setting */
 
-               ret = mm_player_set_attribute(_player, &g_err_name,
-                                             "sound_volume_type", MM_SOUND_VOLUME_TYPE_MEDIA,
-                                             "profile_uri", path, strlen(path), NULL);
-               if (ret != MM_ERROR_NONE)
+               ret = player_set_uri(_player, path);
+
+               if (ret != PLAYER_ERROR_NONE)
                {
-                       ERROR_TRACE(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name);
-                       SAFE_FREE(g_err_name);
+                       ERROR_TRACE("fail to set uri");
+                       mp_player_mgr_destroy(data);
                        return FALSE;
                }
 
+               player_set_sound_type(_player, SOUND_TYPE_MEDIA);
+
                if (mp_streaming_mgr_check_streaming(ad, path)) {
                        if (!mp_streaming_mgr_set_attribute(ad, _player)) {
                                mp_error("streaming set attribute fail");
+                               mp_player_mgr_destroy(data);
                                return FALSE;
                        }
                }
@@ -117,6 +394,22 @@ mp_player_mgr_create(void *data, const gchar * path)
 
                return FALSE;
        }
+
+       is_seeking = false;
+       g_reserved_seek_pos = -1;
+
+       g_player_cbs = calloc(1, sizeof(mp_player_cbs));
+       mp_assert(g_player_cbs);
+
+       g_player_pipe = ecore_pipe_add(_mp_player_mgr_callback_pipe_handler, ad);
+
+       player_set_started_cb(_player, _mp_player_mgr_start_cb, NULL);
+       player_set_paused_cb(_player, _mp_player_mgr_paused_cb, NULL);
+       player_set_completed_cb(_player, _mp_player_mgr_completed_cb, NULL);
+       player_set_interrupted_cb(_player, _mp_player_mgr_interrupted_cb, NULL);
+       player_set_error_cb(_player, _mp_player_mgr_error_cb, NULL);
+       player_set_buffering_cb(_player, _mp_player_mgr_buffering_cb, NULL);
+
        return TRUE;
 }
 
@@ -126,16 +419,10 @@ mp_player_mgr_destroy(void *data)
 {
        struct appdata *ad = data;
 
-       if(ad->player_msg_pipe)
-       {
-               ecore_pipe_del(ad->player_msg_pipe);
-               ad->player_msg_pipe = NULL;
-       }
-
        if (!mp_player_mgr_is_active())
                return FALSE;
 
-       if (mm_player_destroy(_player) != MM_ERROR_NONE)
+       if (player_destroy(_player) != PLAYER_ERROR_NONE)
        {
                ERROR_TRACE("Error when mp_player_mgr_destroy\n");
                return FALSE;
@@ -143,26 +430,44 @@ mp_player_mgr_destroy(void *data)
 
        _player = 0;
        ad->player_state = PLAY_STATE_INIT;
-       if (!ad->freeze_indicator_icon)
+       if (!ad->freeze_indicator_icon && !mp_util_is_other_player_playing())
                vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_OFF);
        else
                ad->freeze_indicator_icon = FALSE;
 
+       is_seeking = false;
+       g_reserved_seek_pos = -1;
+       g_reserved_cb = NULL;
+       g_reserved_cb_data = NULL;
+       g_requesting_cb = NULL;
+       g_requesting_cb_data = NULL;
+
+       SAFE_FREE(g_player_cbs);
+       if (g_player_pipe) {
+               ecore_pipe_del(g_player_pipe);
+               g_player_pipe = NULL;
+       }
+
        return TRUE;
 }
 
 bool
 mp_player_mgr_realize(void *data)
 {
+       struct appdata *ad = data;
+
        if (!mp_player_mgr_is_active())
                return FALSE;
 
-       if (mm_player_realize(_player) != MM_ERROR_NONE)
+       MP_TA_ACUM_ITEM_BEGIN("         mm_player_realize", 0);
+       if (player_prepare(_player) != PLAYER_ERROR_NONE)
        {
                ERROR_TRACE("Error when mp_player_mgr_realize\n");
                _player = 0;
                return FALSE;
        }
+       MP_TA_ACUM_ITEM_END("         mm_player_realize", 0);
+       ad->player_state = PLAY_STATE_READY;
        return TRUE;
 }
 
@@ -172,7 +477,7 @@ mp_player_mgr_unrealize(void *data)
        if (!mp_player_mgr_is_active())
                return FALSE;
 
-       if (mm_player_unrealize(_player) != MM_ERROR_NONE)
+       if (player_unprepare(_player) != PLAYER_ERROR_NONE)
        {
                ERROR_TRACE("Error when mp_player_mgr_unrealize\n");
                return FALSE;
@@ -190,10 +495,11 @@ mp_player_mgr_play(void *data)
        if (!mp_player_mgr_is_active())
                return FALSE;
 
-       err = mm_player_start(_player);
-       if (err != MM_ERROR_NONE)
+       MP_TA_ACUM_ITEM_BEGIN("         mm_player_start", 0);
+       err = player_start(_player);
+       if (err != PLAYER_ERROR_NONE)
        {
-               if (err == MM_ERROR_POLICY_BLOCKED)
+               if (err == PLAYER_ERROR_SOUND_POLICY)
                {
                        mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"));
                }
@@ -205,6 +511,12 @@ mp_player_mgr_play(void *data)
                ERROR_TRACE("Error when mp_player_mgr_play. err[%x]\n", err);
                return FALSE;
        }
+       MP_TA_ACUM_ITEM_END("         mm_player_start", 0);
+       MP_TA_ACUM_ITEM_BEGIN("         mm_player_start_cb_time", 0);
+
+       is_seeking = false;
+       g_reserved_seek_pos = -1;
+
        return TRUE;
 }
 
@@ -218,12 +530,15 @@ mp_player_mgr_stop(void *data)
        if (!mp_player_mgr_is_active())
                return FALSE;
 
-       if (mm_player_stop(_player) != MM_ERROR_NONE)
+       if (player_stop(_player) != PLAYER_ERROR_NONE)
        {
                ERROR_TRACE("Error when mp_player_mgr_stop\n");
                return FALSE;
        }
 
+       is_seeking = false;
+       g_reserved_seek_pos = -1;
+
        mp_play_stop(ad);
        return TRUE;
 }
@@ -238,11 +553,11 @@ mp_player_mgr_resume(void *data)
        if (!mp_player_mgr_is_active())
                return FALSE;
 
-       err = mm_player_resume(_player);
-       if (err != MM_ERROR_NONE)
+       err = player_start(_player);
+       if (err != PLAYER_ERROR_NONE)
        {
                ERROR_TRACE("Error when mp_player_mgr_resume. err[%x]\n", err);
-               if (err == MM_ERROR_POLICY_BLOCKED)
+               if (err == PLAYER_ERROR_SOUND_POLICY)
                {
                        mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_DURING_CALL"));
                }
@@ -253,6 +568,9 @@ mp_player_mgr_resume(void *data)
                return FALSE;
        }
 
+       is_seeking = false;
+       g_reserved_seek_pos = -1;
+
        mp_play_view_update_progressbar(data);
        mp_play_view_progress_timer_thaw(data);
 
@@ -268,28 +586,80 @@ mp_player_mgr_pause(void *data)
        if (!mp_player_mgr_is_active())
                return FALSE;
 
-       err = mm_player_pause(_player);
-       if (err != MM_ERROR_NONE)
+       err = player_pause(_player);
+       if (err != PLAYER_ERROR_NONE)
        {
                ERROR_TRACE("Error when mp_player_mgr_pause. err[%x]\n", err);
                return FALSE;
        }
+
        return TRUE;
 }
 
+static Eina_Bool
+_mp_player_mgr_seek_done_idler(void *data)
+{
+       mp_debug("seek done[%d]", (int)data);
+
+       if (!is_seeking) {
+               mp_debug("seek canceled");
+               return ECORE_CALLBACK_DONE;
+       }
+
+       is_seeking = false;
+
+       if (g_requesting_cb) {
+               /* invoke seek done callback */
+               g_requesting_cb(g_requesting_cb_data);
+
+               g_requesting_cb = NULL;
+               g_requesting_cb_data = NULL;
+       }
+
+       if (g_reserved_seek_pos >= 0) {
+               mp_debug("request reseved seek");
+               mp_player_mgr_set_position(g_reserved_seek_pos, g_reserved_cb, g_reserved_cb_data);
+               g_reserved_seek_pos = -1;
+               g_reserved_cb = NULL;
+               g_reserved_cb_data = NULL;
+       }
+
+       return ECORE_CALLBACK_DONE;
+}
+
+static void
+_mp_player_mgr_seek_done_cb(void *data)
+{
+       if (is_seeking)
+               ecore_idler_add(_mp_player_mgr_seek_done_idler, data);
+}
+
 bool
-mp_player_mgr_set_position(guint pos)
+mp_player_mgr_set_position(guint pos, Seek_Done_Cb done_cb, void *data)
 {
-       startfunc;
        if (!mp_player_mgr_is_active())
                return FALSE;
 
-       if (mm_player_set_position(_player, MM_PLAYER_POS_FORMAT_TIME, (int)pos) != MM_ERROR_NONE)
+       if (is_seeking) {
+               mp_debug("previous seek is NOT completed.. reserve seek[%d]", pos);
+               g_reserved_seek_pos = pos;
+               g_reserved_cb = done_cb;
+               g_reserved_cb_data = data;
+               return TRUE;
+       }
+
+       int err = player_set_position(_player, (int)pos, _mp_player_mgr_seek_done_cb, (void *)pos);
+       if (err != PLAYER_ERROR_NONE)
        {
-               ERROR_TRACE("Error when mp_player_mgr_set_position\n");
+               ERROR_TRACE("Error [0x%x] when mp_player_mgr_set_position(%d)\n", err, pos);
                return FALSE;
        }
 
+       mp_debug("seek reqeuesting.. [%d]", pos);
+       is_seeking = true;
+       g_requesting_cb = done_cb;
+       g_requesting_cb_data = data;
+
        return TRUE;
 }
 
@@ -301,7 +671,7 @@ mp_player_mgr_get_position(void)
        if (!mp_player_mgr_is_active())
                return 0;
 
-       if (mm_player_get_position(_player, MM_PLAYER_POS_FORMAT_TIME, &pos) != MM_ERROR_NONE)
+       if (player_get_position(_player, &pos) != PLAYER_ERROR_NONE)
        {
                ERROR_TRACE("Error when mp_player_mgr_get_position\n");
                return 0;
@@ -316,248 +686,40 @@ mp_player_mgr_get_duration(void)
        if (!mp_player_mgr_is_active())
                return -1;
 
-       int ret = MM_ERROR_NONE;
-       char *g_err_name = NULL;
-       int duration = -1;
-
-       ret = mm_player_get_attribute(_player, &g_err_name, "content_duration", &duration, NULL);
-       if (ret != MM_ERROR_NONE)
-       {
-               ERROR_TRACE(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name);
-               SAFE_FREE(g_err_name);
-               return FALSE;
-       }
-       else
-       {
-               return duration;
-       }
-       return duration;
-}
-
-static Eina_Bool
-mp_playing_paused_by_bluetooth(void *data)
-{
-       struct appdata *ad = data;
-       MP_CHECK_FALSE(ad);
-
-       int earjack = 0;
-
-       if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack))
-       {
-               WARN_TRACE("Earjack state get Fail...");
-
-               if (earjack == 0)
-               {
-                       mp_play_pause(ad);
-               }
-       }
-
-       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_BLUETOOTH_DISCONNECTED"));
-       ad->bt_pause_idler = NULL;
-       return 0;
-}
-
-static Eina_Bool
-mp_playing_error(void *data)
-{
-       struct appdata *ad = data;
-       MP_CHECK_FALSE(ad);
-
-       mp_play_destory(ad);
-       ad->playing_err_idler = NULL;
-       return EINA_FALSE;
-}
-
-typedef struct{
-       int msg_type;
-       MMMessageParamType msg_param;
-}mp_pipe_msg;
-
-void
-mp_player_mgr_pipe_cb(void *data, void *buffer, unsigned int nbyte)
-{
-       struct appdata *ad = data;
-       MP_CHECK(ad);
-       MP_CHECK(buffer);
-       mp_pipe_msg *pipe_msg = buffer;
-       MMMessageParamType *param = &(pipe_msg->msg_param);
-       int msg_type = pipe_msg->msg_type;
+       int duration = 0;
 
-       DEBUG_TRACE("msg_type: %d,", msg_type);
+       if (!mp_player_mgr_is_active())
+               return 0;
 
-       switch (msg_type)
+       if (player_get_duration(_player, &duration) != PLAYER_ERROR_NONE)
        {
-       case MM_MESSAGE_BEGIN_OF_STREAM:
-               DEBUG_TRACE("receive MM_MESSAGE_BEGIN_OF_STREAM\n");
-               mp_play_start(ad);
-               break;
-
-       case MM_MESSAGE_ERROR:
-               DEBUG_TRACE("receive MM_MESSAGE_ERROR \n");
-               DEBUG_TRACE("Error Code=%x\n", param->code);
-               MP_CHECK(param);
-               switch (param->code)
-               {
-               case MM_ERROR_PLAYER_BT_CONNECTION:
-                       DEBUG_TRACE("receive MM_ERROR_PLAYER_BT_CONNECTION\n");
-                       break;
-               case MM_ERROR_PLAYER_INTERNAL:
-                       DEBUG_TRACE("receive MM_ERROR_PLAYER_INTERNAL\n");
-                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_ERROR_OCCURRED"));
-                       break;
-               case MM_ERROR_PLAYER_CODEC_NOT_FOUND:
-                       DEBUG_TRACE("receive MM_ERROR_PLAYER_CODEC_NOT_FOUND\n");
-                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"));
-                       break;
-               default:
-                       if (!mp_streaming_mgr_message_callback(msg_type, param, ad))
-                               mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_PLAY_UNSUPPORTED_FILETYPE"));
-                       break;
-               }
-               if(!ad->playing_err_idler)
-                       ad->playing_err_idler = ecore_idler_add(mp_playing_error, ad);
-               break;
-
-       case MM_MESSAGE_WARNING:
-               DEBUG_TRACE("receive MM_MESSAGE_WARNING\n");
-               break;
-
-       case MM_MESSAGE_END_OF_STREAM:
-               DEBUG_TRACE("receive MM_MESSAGE_END_OF_STREAM\n");
-               mp_play_control_end_of_stream(ad);
-               break;
-
-       case MM_MESSAGE_STATE_CHANGED:
-               MP_CHECK(param);
-               switch (param->state.current)
-               {
-               case MM_PLAYER_STATE_NONE:
-                       DEBUG_TRACE("==> [MediaPlayerApp] Player is [NONE]\n");
-                       break;
-               case MM_PLAYER_STATE_READY:
-                       DEBUG_TRACE("==> [MediaPlayerApp] Player is [READY]\n");
-                       ad->player_state = PLAY_STATE_READY;
-                       mp_play_ready(ad);
-                       break;
-               case MM_PLAYER_STATE_PLAYING:
-                       DEBUG_TRACE("==> [MediaPlayerApp] Player is [PLAYING]\n");
-                       if (ad->player_state == PLAY_STATE_PAUSED)
-                               mp_play_resume(ad);
-
-                       ad->player_state = PLAY_STATE_PLAYING;
-
-                       if (ad->is_focus_out) {
-                               mp_debug("prohibit playing in bg");
-                               mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
-                       }
-
-                       break;
-               case MM_PLAYER_STATE_PAUSED:
-                       DEBUG_TRACE("==> [MediaPlayerApp] Player is [PAUSED]\n");
-                       mp_play_pause(ad);
-                       ad->player_state = PLAY_STATE_PAUSED;
-                       break;
-               case MM_PLAYER_STATE_NULL:
-                       DEBUG_TRACE("==> [MediaPlayerApp] Player is [NULL]\n");
-                       break;
-               }
-
-               break;
-
-       case MM_MESSAGE_STATE_INTERRUPTED:
-               DEBUG_TRACE("receive MM_MESSAGE_STATE_CHANGED_BY_ASM\n");
-               MP_CHECK(param);
-               switch (param->code)
-               {
-               case MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP:
-                       DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP");
-                       break;
-               case MM_MSG_CODE_INTERRUPTED_BY_CALL_START:
-                       DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_CALL_START");
-                       break;
-               case MM_MSG_CODE_INTERRUPTED_BY_CALL_END:
-                       DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_CALL_END");
-                       break;
-               case MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG:
-                       DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG");
-                       break;
-               case MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT:
-                       DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT");
-                       break;
-               case MM_MSG_CODE_INTERRUPTED_BY_ALARM_START:
-                       DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_ALARM_START");
-                       break;
-               case MM_MSG_CODE_INTERRUPTED_BY_ALARM_END:
-                       DEBUG_TRACE("receive MM_MSG_CODE_INTERRUPTED_BY_ALARM_END");
-                       break;
-               }
-               mp_play_pause(ad);
-
-               break;
-
-       case MM_MESSAGE_BLUETOOTH_OFF:
-               DEBUG_TRACE("receive MM_MESSAGE_BLUETOOTH_OFF\n");
-               if(!ad->bt_pause_idler)
-                       ad->bt_pause_idler = ecore_idler_add(mp_playing_paused_by_bluetooth, ad);
-               break;
-
-       case MM_MESSAGE_READY_TO_RESUME:
-               DEBUG_TRACE("receive MM_MESSAGE_READY_TO_RESUME");
-
-               if (ad->player_state == PLAY_STATE_PAUSED)
-                       mp_player_mgr_resume(ad);
-               else
-                       ERROR_TRACE("Check player state");
-               break;
-
-       default:
-               if (!mp_streaming_mgr_message_callback(msg_type, param, ad)) {
-                       DEBUG_TRACE("receive unknown msg [0x%x]", msg_type);
-               }
+               ERROR_TRACE("Error when mp_player_mgr_get_position\n");
+               return 0;
        }
-       return;
-}
-
-int
-player_msg_cb(int msg_type, void *msg_param, void *user_param)
-{
-       startfunc;
-       struct appdata *ad = user_param;
-       MP_CHECK_VAL(ad, 0);
-
-       MP_CHECK_VAL(mp_player_mgr_is_active(), 1);
 
-       mp_pipe_msg *pipe_msg = calloc(sizeof(mp_pipe_msg), 1);
-       if(msg_param)
-               memcpy(&(pipe_msg->msg_param), msg_param, sizeof(MMMessageParamType));
-       pipe_msg->msg_type = msg_type;
-
-       ecore_pipe_write(ad->player_msg_pipe, pipe_msg, sizeof(mp_pipe_msg));
-
-       IF_FREE(pipe_msg);
-       return 1;
+       return duration;
 }
 
 int
 mp_player_mgr_vol_type_set(void)
 {
-       return mm_sound_volume_primary_type_set(VOLUME_TYPE_MEDIA);
+       return sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
 }
 
 int
 mp_player_mgr_vol_type_unset(void)
 {
-       return mm_sound_volume_primary_type_clear();
+       return sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE);
 }
 
 bool
 mp_player_mgr_session_init(void)
 {
-       int ret = MM_ERROR_NONE;
+       int ret = SOUND_MANAGER_ERROR_NONE;
 
-       ret = mm_session_init(MM_SESSION_TYPE_SHARE);
+       ret = sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
 
-       if (ret != MM_ERROR_NONE)
+       if (ret != SOUND_MANAGER_ERROR_NONE)
                return FALSE;
 
        return TRUE;
@@ -566,15 +728,7 @@ mp_player_mgr_session_init(void)
 bool
 mp_player_mgr_session_finish(void)
 {
-       int ret = MM_ERROR_NONE;
-
-       ret = mm_session_finish();
-
-       if (ret != MM_ERROR_NONE)
-               return FALSE;
-
        return TRUE;
-
 }
 
 void
@@ -584,7 +738,7 @@ mp_player_mgr_set_mute(bool bMuteEnable)
        if (!mp_player_mgr_is_active())
                return;
 
-       if (mm_player_set_mute(_player, (int)bMuteEnable) != MM_ERROR_NONE)
+       if (player_set_mute(_player, bMuteEnable) != PLAYER_ERROR_NONE)
        {
                ERROR_TRACE("[ERR] mm_player_set_mute");
        }
index 93a6c57..dfd8617 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  */
 
 
-
 #include <string.h>
 #include <stdlib.h>
 #include <vconf.h>
-#include <audio-svc.h>
+#include "mp-media-info.h"
 
 #include "music.h"
 
 #include "mp-setting-ctrl.h"
-#include "mp-setting-keys.h"
 #include "mp-player-debug.h"
 #include "mp-file-tag-info.h"
 #include "mp-player-mgr.h"
 #include "mp-widget.h"
 #include "mp-util.h"
+#include "mp-vconf-private-keys.h"
+
+enum _mp_menu_item
+{
+       MP_MENU_ALBUMS,
+       MP_MENU_ARTISTS,
+       MP_MENU_GENRES,
+       MP_MEMU_COMPOSER,
+       MP_MENU_YEARS,
+       MP_MENU_FOLDERS,
+       MP_MENU_NUMS,
+};
 
 typedef struct _mp_setting_t
 {
@@ -37,25 +47,43 @@ typedef struct _mp_setting_t
        int output;
        MpSettingMenu_Cb menu_cb;
        void *menu_udata;
+       MpSettingAutoOff_Cb auto_off_cb;
+       void *auto_off_udata;
 } mp_setting_t;
 
-
-#define MP_VCONFKEY_MUSIC_SHUFFLE      "db/music/menu/shuffle"
-#define MP_VCONFKEY_MUSIC_REPEAT               "db/music/menu/repeat"
-#define MP_VCONFKEY_MUSIC_ALBUM_ART  "memory/music/album_art"
-
 static mp_setting_t *g_setting = NULL;
 static char *c_file_path = NULL;
 
 static Eina_Bool _mp_setting_init_idler_cb(void *data);
 
+
+
 void
 mp_setting_set_albumart_path(const char *path)
 {
        if (path && strlen(path))
-               vconf_set_str(MP_VCONFKEY_MUSIC_ALBUM_ART, path);
+               vconf_set_str(VCONFKEY_MUSIC_ALBUM_ART, path);
+       else
+               vconf_set_str(VCONFKEY_MUSIC_ALBUM_ART, DEFAULT_THUMBNAIL);
+}
+
+static void
+_mp_setting_earjack_changed_cb(keynode_t * node, void *user_data)
+{
+       mp_setting_t *sd = NULL;
+       int ear_jack = 0;
+
+       mp_retm_if(node == NULL, "keymode is NULL");
+       mp_retm_if(user_data == NULL, "user_date is NULL");
+       sd = (mp_setting_t *) user_data;
+
+       ear_jack = vconf_keynode_get_int(node);
+       if (ear_jack == VCONFKEY_SYSMAN_EARJACK_REMOVED)
+               sd->output = SOUND_DEVICE_OUT_SPEAKER;
        else
-               vconf_set_str(MP_VCONFKEY_MUSIC_ALBUM_ART, DEFAULT_THUMBNAIL);
+               sd->output = SOUND_DEVICE_OUT_WIRED_ACCESSORY;
+
+       return;
 }
 
 static void
@@ -97,6 +125,12 @@ mp_setting_key_cb_init(void)
 
        mp_retvm_if(g_setting == NULL, -1, "setting data is not initialized, init first!!!!!");
 
+       if (vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK, _mp_setting_earjack_changed_cb, g_setting) < 0)
+       {
+               ERROR_TRACE("Fail to register VCONFKEY_SYSMAN_EARJACK key callback");
+               ret = -1;
+       }
+
        if (vconf_notify_key_changed(VCONFKEY_MUSIC_MENU_CHANGE, _mp_setting_menu_changed_cb, g_setting) < 0)
        {
                ERROR_TRACE("Fail to register VCONFKEY_MUSIC_MENU_CHANGE key callback");
@@ -110,6 +144,7 @@ static void
 mp_setting_key_cb_deinit(void)
 {
 
+       vconf_ignore_key_changed(VCONFKEY_SYSMAN_EARJACK, _mp_setting_earjack_changed_cb);
        vconf_ignore_key_changed(VCONFKEY_MUSIC_MENU_CHANGE, _mp_setting_menu_changed_cb);
 
        return;
@@ -120,8 +155,26 @@ _mp_setting_init_idler_cb(void *data)
 {
        struct appdata *ad = (struct appdata *)data;
 
+       //output
+       int ear_jack = 0;
+       if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &ear_jack))
+       {
+               ERROR_TRACE("Fail to get VCONFKEY_SYSMAN_EARJACK");
+       }
+       else
+       {
+               DEBUG_TRACE("VCONFKEY_SYSMAN_EARJACK : %d", ear_jack);
+               if (ear_jack == VCONFKEY_SYSMAN_EARJACK_REMOVED)
+               {
+                       g_setting->output = SOUND_DEVICE_OUT_SPEAKER;
+               }
+               else
+                       g_setting->output = SOUND_DEVICE_OUT_WIRED_ACCESSORY;
+       }
+
        mp_setting_key_cb_init();
        ad->setting_idler = NULL;
+
        return EINA_FALSE;
 }
 
@@ -138,13 +191,19 @@ mp_setting_init(struct appdata *ad)
        }
        memset(g_setting, 0x00, sizeof(mp_setting_t));
 
+       //menu
+       MP_TA_ACUM_ITEM_BEGIN("      vconf_get_bool()", 0);
        if (vconf_get_int(VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT, &(g_setting->menu_state)))
        {
                ERROR_TRACE("Fail to get %s", VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT);
                ret = -1;
        }
+       MP_TA_ACUM_ITEM_END("      vconf_get_bool()", 0);
        if(!ad->setting_idler)
                ad->setting_idler = ecore_idler_add(_mp_setting_init_idler_cb, ad);
+
+       mp_setting_get_shuffle_state(&ad->play_shuffle_state);
+
        return ret;
 }
 
@@ -170,6 +229,7 @@ mp_setting_deinit(struct appdata *ad)
        return 0;
 }
 
+
 int
 mp_setting_set_shuffle_state(int b_val)
 {
@@ -228,7 +288,6 @@ mp_setting_get_repeat_state(int *val)
        return 0;
 }
 
-
 int
 mp_setting_menu_get_state(mp_setting_menu_t * menu_state)
 {
@@ -242,6 +301,7 @@ mp_setting_menu_get_state(mp_setting_menu_t * menu_state)
        menu_state->genres = g_setting->menu_state & SETTING_MUSIC_MENU_GENRE ? true : false;
        menu_state->composers = g_setting->menu_state & SETTING_MUSIC_MENU_COMPOSER ? true : false;
        menu_state->years = g_setting->menu_state & SETTING_MUSIC_MENU_YEAR ? true : false;
+       menu_state->folders = g_setting->menu_state & SETTING_MUSIC_MENU_FOLDER ? true : false;
 
        return 0;
 }
@@ -257,6 +317,17 @@ mp_setting_menu_set_callback(MpSettingMenu_Cb func, void *data)
        return 0;
 }
 
+int
+mp_setting_auto_off_set_callback(MpSettingAutoOff_Cb func, void *data)
+{
+       mp_retvm_if(g_setting == NULL, -1, "setting data is not initialized, init first!!!!!");
+
+       g_setting->auto_off_cb = func;
+       g_setting->auto_off_udata = data;
+
+       return 0;
+}
+
 void
 mp_setting_save_now_playing(void *data)
 {
@@ -271,7 +342,7 @@ mp_setting_save_now_playing(void *data)
        item = mp_play_list_get_current_item(ad->playing_list);
        MP_CHECK(item);
 
-       fp = fopen(MP_NOWPLAYING_INI_FILE_NAME, "w");
+       fp = fopen(MP_NOWPLAYING_INI_FILE_NAME, "w");   // make new file.
 
        if (fp == NULL)
        {
@@ -291,6 +362,49 @@ mp_setting_save_now_playing(void *data)
        endfunc;
 }
 
+#define MP_SHORTCUT_COUNT 4
+
+void
+mp_setting_save_shortcut(char *shortcut_title, char *artist, char *shortcut_description, char *shortcut_image_path)
+{
+       startfunc;
+       FILE *fp = NULL;
+
+       if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_2))
+       {
+               rename(MP_SHORTCUT_INI_FILE_NAME_2, MP_SHORTCUT_INI_FILE_NAME_3);
+       }
+       if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_1))
+       {
+               rename(MP_SHORTCUT_INI_FILE_NAME_1, MP_SHORTCUT_INI_FILE_NAME_2);
+       }
+       if (ecore_file_exists(MP_SHORTCUT_INI_FILE_NAME_0))
+       {
+               rename(MP_SHORTCUT_INI_FILE_NAME_0, MP_SHORTCUT_INI_FILE_NAME_1);
+       }
+
+       fp = fopen(MP_SHORTCUT_INI_FILE_NAME_0, "w");   // make new file.
+
+       if (fp == NULL)
+       {
+               ERROR_TRACE("Failed to open ini files. : %s", MP_SHORTCUT_INI_FILE_NAME_0);
+               return;
+       }
+
+       fprintf(fp, "[ShortCut]\n");
+       fprintf(fp, "title=%s\n", shortcut_title);
+       if (artist)
+               fprintf(fp, "artist=%s\n", artist);
+       fprintf(fp, "desc=%s\n", shortcut_description);
+       fprintf(fp, "artwork=%s\n", shortcut_image_path);
+       fprintf(fp, "\n");
+
+       fclose(fp);
+
+       endfunc;
+}
+
+#ifndef MP_SOUND_PLAYER
 void
 mp_setting_save_last_played(mp_layout_data_t * layout_data)
 {
@@ -303,13 +417,19 @@ mp_setting_save_last_played(mp_layout_data_t * layout_data)
 
                MP_CHECK(ad);
                MP_CHECK(ad->playing_list);
-               if (ad->loadtype != LOAD_PLAY)
+
+               if (ad->loadtype == LOAD_VOICE_UI)
                {
-                       fp = fopen(MP_RECENT_PLAYED_INI_FILE_NAME, "w");
+
+
+               }
+               else
+               {
+                       fp = fopen(MP_RECENT_PLAYED_INI_FILE_NAME, "w");        // make new file.
 
                        if (fp == NULL)
                        {
-                               ERROR_TRACE("Failed to open ini files. : %s", MP_RECENT_PLAYED_INI_FILE_NAME);
+                               ERROR_TRACE("Failed to open ini files. : %s", MP_SHORTCUT_INI_FILE_NAME_0);
                                return;
                        }
 
@@ -337,3 +457,6 @@ mp_setting_save_last_played(mp_layout_data_t * layout_data)
        }
 
 }
+#endif
+
+
index 44e1da6..5e24520 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #include "music.h"
 #include "mp-streaming-mgr.h"
 #include "mp-http-mgr.h"
@@ -78,93 +76,6 @@ mp_streaming_mgr_buffering_popup_control(struct appdata *ad, bool is_show)
        }
 }
 
-int
-mp_streaming_mgr_message_callback(int msg_type, void *msg_param, void *user_param)
-{
-       startfunc;
-       struct appdata *ad = user_param;
-       MMMessageParamType *param = (MMMessageParamType *) msg_param;
-
-       int ret = TRUE;
-
-       switch (msg_type)
-       {
-       case MM_MESSAGE_ERROR:
-               DEBUG_TRACE("receive MM_MESSAGE_ERROR(Streaming) \n");
-               DEBUG_TRACE("Error Code=%x\n", param->code);
-               switch (param->code)
-               {
-               case MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL:
-                       mp_debug("MM_ERROR_PLAYER_STREAMING_CONNECTION_FAIL");
-                       mp_streaming_mgr_buffering_popup_control(ad, FALSE);
-                       mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_CONNECTION_FAILED"));
-                       break;
-
-               case MM_ERROR_PLAYER_STREAMING_SERVER_DISCONNECTED:
-                       mp_debug("MM_ERROR_PLAYER_STREAMING_SERVER_DISCONNECTED");
-                       mp_widget_text_popup(ad, GET_SYS_STR("IDS_COM_POP_CONNECTION_FAILED"));
-                       break;
-
-               default:
-                       mp_debug("Unhandled error!!");
-                       ret = FALSE;
-               }
-               break;
-
-       case MM_MESSAGE_CONNECTING:
-               mp_debug("MM_MESSAGE_CONNECTING");
-               break;
-
-       case MM_MESSAGE_CONNECTED:
-               mp_debug("MM_MESSAGE_CONNECTED");
-               break;
-
-       case MM_MESSAGE_CONNECTION_TIMEOUT:
-               mp_debug("MM_MESSAGE_CONNECTION_TIMEOUT");
-               break;
-
-       case MM_MESSAGE_BUFFERING:
-               {
-                       mp_debug("MM_MESSAGE_BUFFERING");
-                       mp_debug("Buffering : %d%% \n", param->connection.buffering);
-
-                       bool is_show_buffering = true;
-                       if (param->connection.buffering > 95 || ad->player_state == PLAY_STATE_PLAYING)
-                               is_show_buffering = false;
-
-                       mp_streaming_mgr_buffering_popup_control(ad, is_show_buffering);
-               }
-               break;
-
-       case MM_MESSAGE_RTP_SENDER_REPORT:
-               mp_debug("MM_MESSAGE_RTP_SENDER_REPORT");
-               break;
-
-       case MM_MESSAGE_RTP_RECEIVER_REPORT:                 /**< RTP receiver report */
-               mp_debug("MM_MESSAGE_RTP_RECEIVER_REPORT");
-               break;
-
-       case MM_MESSAGE_RTP_SESSION_STATUS:                  /**< RTP session status */
-               mp_debug("MM_MESSAGE_RTP_SESSION_STATUS");
-               break;
-
-       case MM_MESSAGE_SENDER_STATE:                                /**< Sender state */
-               mp_debug("MM_MESSAGE_SENDER_STATE");
-               break;
-
-       case MM_MESSAGE_RECEIVER_STATE:                      /**< Receiver state */
-               mp_debug("MM_MESSAGE_RECEIVER_STATE");
-               break;
-
-       default:
-               mp_debug("@@@@@@@@ streaming msg cb [%d]", msg_type);
-               ret = FALSE;
-               break;
-       }
-
-       return ret;
-}
-
 bool mp_streaming_mgr_check_streaming(struct appdata *ad, const char *path)
 {
        MP_CHECK_FALSE(path);
@@ -177,43 +88,9 @@ bool mp_streaming_mgr_check_streaming(struct appdata *ad, const char *path)
        return FALSE;
 }
 
-bool mp_streaming_mgr_set_attribute(struct appdata *ad, MMHandleType player)
+bool mp_streaming_mgr_set_attribute(struct appdata *ad, player_h player)
 {
        startfunc;
-       MP_CHECK_FALSE(ad);
-       MP_CHECK_FALSE(player);
-
-       int ret = 0;
-       char *g_err_name = NULL;
-
-       const char *proxy_addr = NULL;
-       proxy_addr = mp_http_mgr_get_proxy(ad);
-       if (proxy_addr && strlen(proxy_addr) > 0) {
-               ret = mm_player_set_attribute(player, &g_err_name,
-                                                 "streaming_proxy", proxy_addr, strlen(proxy_addr), NULL);
-               if (ret != MM_ERROR_NONE) {
-                       ERROR_TRACE(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name);
-                       SAFE_FREE(g_err_name);
-                       return FALSE;
-               }
-       }
-
-       char *user_agent = mp_http_mgr_get_user_agent();
-       if (user_agent) {
-               if (strlen(user_agent) > 0)     {
-                       mp_debug("UA = [%s]", user_agent);
-                       ret = mm_player_set_attribute(player, &g_err_name,
-                                                         "streaming_user_agent", user_agent, strlen(user_agent),
-                                                         NULL);
-                       if (ret != MM_ERROR_NONE) {
-                               ERROR_TRACE(">>>>>>>>>>>>>g_err_name : %s\n", g_err_name);
-                               SAFE_FREE(g_err_name);
-                               SAFE_FREE(user_agent);
-                               return FALSE;
-                       }
-               }
-               SAFE_FREE(user_agent);
-       }
 
        return TRUE;
 }
index 9a61c05..269205e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,7 +15,6 @@
  */
 
 
-
 #ifndef __MP_DEFINE_H_
 #define __MP_DEFINE_H_
 
 #include <unistd.h>
 #include <glib.h>
 #include <vconf.h>
-#include <audio-svc.h>
+#include "mp-media-info.h"
 #include <Ecore_IMF.h>
 #include <Ecore_X.h>
-#include <E_DBus.h>
-#include <appcore-efl.h>
 #include <Edje.h>
 #include <errno.h>
 #include <libintl.h>
-#include <mm_error.h>
-#include <mm_player.h>
 #include <libxml/tree.h>
 #include <libxml/parser.h>
 #include <libxml/xpath.h>
@@ -43,6 +38,8 @@
 #include <sys/times.h>
 
 #include "mp-player-debug.h"
+#include "mp-ta.h"
+#include "mp-vconf-private-keys.h"
 
 #ifndef bool
 #define bool Eina_Bool
 #define GET_SYS_STR(str) dgettext("sys_string", str)
 #define GET_STR(str) _(str)
 
+#ifdef __ARM__
+#else
+#define __I386__               //define for support i386
+#endif
 #ifndef PREFIX
 #  define PREFIX "/opt/apps/org.tizen.music-player"
 #endif
 
+/* define macro to remove content related to AMG icon */
+#ifndef PACKAGE
 #define PACKAGE "music-player"
+#endif
+
+#define LOCALE_PACKAGE "music-player"
 #define INSTALL_DIR PREFIX
 #ifndef LOCALEDIR
 #define LOCALEDIR INSTALL_DIR"/res/locale"
 #endif
 
+#define DATA_DIR       INSTALL_DIR"/data"
+
 #ifndef MP_INI_DIR
 #define MP_INI_DIR INSTALL_DIR"/data"
 #endif
 #define EDJDIR PREFIX"res/edj"
 #endif
 
+#define PKGNAME_FOR_SHORTCUT   "org.tizen.music-player"
+
 #define EDJ_PATH EDJDIR
 #define EDJ_NAME EDJ_PATH"/mp-library.edj"
+#define MINICON_EDJ_NAME EDJ_PATH"/mp-minicontroller.edj"
 #define GRP_MAIN "main"
 
 #define THEME_NAME     EDJ_PATH"/mp-custom-winset-style.edj"
 
 #define TITLE_H 90
+#define START_Y_POSITION       94
 
 #define MP_PHONE_ROOT_PATH        "/opt/media"
 #define MP_MMC_ROOT_PATH               "/opt/storage/sdcard"
 #define MAX_URL_LEN                            MAX_NAM_LEN
 
 #define DEFAULT_THUMBNAIL                      ICON_DIRECTORY"/music_player/34_thumb_07.png"
+#define DEFAULT_THUMBNAIL_FOLDER        ICON_DIRECTORY"/music_player/default_folder.png"
 
 #define THUMBNAIL_MOST_PLAYED          ICON_DIRECTORY"/music_player/34_mostplayed.png"
 #define THUMBNAIL_RECENTLY_PLAYED   ICON_DIRECTORY"/music_player/34_recentlyplayed.png"
 #define THUMBNAIL_PLAYLIST                     ICON_DIRECTORY"/music_player/34_playlist.png"
 #define THUMBNAIL_PLAYLIST_NOITEM      ICON_DIRECTORY"/music_player/34_player_list_thum_noitems.png"
 
-#define MP_CTRBAR_ICON_SONGS           ICON_DIRECTORY"/music_player/01_controlbar_icon_songs.png"
-#define MP_CTRBAR_ICON_PLAYLIST        ICON_DIRECTORY"/music_player/01_controlbar_icon_playlists.png"
-#define MP_CTRBAR_ICON_ALBUM           ICON_DIRECTORY"/music_player/01_controlbar_icon_music_albums.png"
-#define MP_CTRBAR_ICON_ARTIST          ICON_DIRECTORY"/music_player/01_controlbar_icon_artist.png"
-#define MP_CTRBAR_ICON_GENRE           ICON_DIRECTORY"/music_player/01_controlbar_icon_genre.png"
-#define MP_CTRBAR_ICON_YEAR            ICON_DIRECTORY"/music_player/01_controlbar_icon_year.png"
-#define MP_CTRBAR_ICON_COMPOSER        ICON_DIRECTORY"/music_player/01_controlbar_icon_composer.png"
-#define MP_CTRBAR_ICON_FOLDER          ICON_DIRECTORY"/music_player/01_controlbar_icon_albums.png"
+#define MP_CTRBAR_ICON_SONGS           ICON_DIRECTORY"/music_player/T02_controlbar_icon_all.png"
+#define MP_CTRBAR_ICON_PLAYLIST        ICON_DIRECTORY"/music_player/T02_controlbar_icon_playlists.png"
+#define MP_CTRBAR_ICON_ALBUM           ICON_DIRECTORY"/music_player/T02_controlbar_icon_music_albums.png"
+#define MP_CTRBAR_ICON_ARTIST          ICON_DIRECTORY"/music_player/T02_controlbar_icon_artist.png"
+#define MP_CTRBAR_ICON_GENRE           ICON_DIRECTORY"/music_player/T02_controlbar_icon_genres.png"
+#define MP_CTRBAR_ICON_YEAR            ICON_DIRECTORY"/music_player/T02_controlbar_icon_years.png"
+#define MP_CTRBAR_ICON_COMPOSER        ICON_DIRECTORY"/music_player/T02_controlbar_icon_composer.png"
+#define MP_CTRBAR_ICON_FOLDER          ICON_DIRECTORY"/music_player/T02_controlbar_icon_folders.png"
+#define MP_CTRBAR_ICON_SQUARE          ICON_DIRECTORY"/music_player/T02_controlbar_icon_music_square.png"
 
 
 #define MP_ICON_NAVI_EDIT              ICON_DIRECTORY"/music_player/T02_controlbar_icon_edit.png"
 #define MP_ICON_NAVI_SEARCH    ICON_DIRECTORY"/music_player/T02_controlbar_icon_search.png"
 #define MP_ICON_NAVI_CANCEL            ICON_DIRECTORY"/music_player/T02_controlbar_icon_cancel.png"
 #define MP_ICON_NAVI_DONE              NULL
+#define MP_ICON_NAVI_SHARE             ICON_DIRECTORY"/music_player/T02_controlbar_icon_share.png"
 #define MP_ICON_NAVI_INFO              NULL
 #define MP_ICON_NAVI_DELETE            ICON_DIRECTORY"/music_player/T02_controlbar_icon_delete.png"
 #define MP_ICON_NAVI_ADD_TO_PLST               ICON_DIRECTORY"/music_player/T02_controlbar_icon_add_to_playlist.png"
 #define MP_ICON_NAVI_NEW               ICON_DIRECTORY"/music_player/T02_controlbar_icon_add.png"
+#define MP_ICON_NAVI_SYNC_START        ICON_DIRECTORY"/music_player/02_controlbar_icon_synchronise_start_sync.png"
 
 #define MP_ICON_SOUND_PATH             ICON_DIRECTORY"/music_player/T02_icon_soundPath.png"
+#define MP_ICON_ALL_SHARE              ICON_DIRECTORY"/music_player/T02_controlbar_icon_nearby_device.png"
+#define MP_ICON_NEARBY_DMR             ICON_DIRECTORY"/music_player/T02_title_icon_nearby_device.png"
 
 #define MP_ICON_BG                                     ICON_DIRECTORY"/music_player/12_music_list_bg.png"
 
+#define MP_ICON_MINI_PLAYER    ICON_DIRECTORY"/music_player/mini_app/T02_control_icon_apps.png"
+
+#define MP_ICON_STORAGE_PHONE          ICON_DIRECTORY"/music_player/storage_type/T02_phone_02.png"
+#define MP_ICON_STORAGE_MMC                    ICON_DIRECTORY"/music_player/storage_type/T02_memory_card_02.png"
+#define MP_ICON_STORAGE_EXTERNAL       ICON_DIRECTORY"/music_player/storage_type/T02_external_storage_02.png"
+
 #define PLAY_VIEW_EDJ_NAME                     EDJ_PATH"/music.edj"
 
 #define SIGNAL_PAUSE                                           "pause_clicked"
 #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_FAVORITE_CLICKED                        "favorite_clicked"
 #define SIGNAL_NOW_PLAYING_CLICKED     "now_playing_clicked"
 
+//2 support add to home playlist
+#define MP_FUNC_ADD_TO_HOME_SEPARATION         "/"
+#define MP_FUNC_ADD_TO_HOME_DESC_PREFIX        "_Shortcut:Description://"
+#define MP_FUNC_ADD_TO_HOME_THUMBNAIL_PREFIX   "_Shortcut:ThumbnailPath://"
+#define MP_FUNC_ADD_TO_HOME_PREFIX             "_Shortcut:MusicPlayer://"
+#define MP_SHORTCUT_PLAYLIST                           "playlist/"
+#define MP_SHORTCUT_GROUP                                      "group/"
+#define MP_SHORTCUT_SONG                                       "song/"
+#define MP_FUNC_ADD_TO_HOME_PLAYLIST           MP_FUNC_ADD_TO_HOME_PREFIX"playlist/"
+#define MP_FUNC_ADD_TO_HOME_GROUP              MP_FUNC_ADD_TO_HOME_PREFIX"group/"
+#define MP_FUNC_ADD_TO_HOME_SONG                       MP_FUNC_ADD_TO_HOME_PREFIX"song/"
+
+//2 EVAS_OBJECT_TYPE define
 #define MP_FAST_SCROLLER_TYPE                                  "mp_data_fast_scroller_type"
 
+//2 FEATURE define
+#define MP_FEATURE_WIFI_SHARE
+#define MP_FUNC_ALLSHARE_PLAYLIST                      "music-player:allshare_"
+
+
 #define MP_POPUP_YES   1
-#define MP_POPUP_NO    0
-#define MP_POPUP_DEL -1
+#define MP_POPUP_NO    0
+#define MP_POPUP_TIMEOUT       (2.0)
 
+#define MP_STR_UNKNOWN "Unknown"
 #define MP_YEAR_S              "%03u0s"
 
+typedef int SLP_Bool;
+typedef void (*MpHttpOpenRspCb) (gpointer user_data);
+typedef void (*MpGetShazamSigCb) (char *signature, int size, void *data);
+
+#define TIME_FORMAT_LEN        15
 #define PLAY_TIME_ARGS(t) \
         (((int)t) / 60) % 60, \
         ((int)t) % 60
         ((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) { \
        } \
 } 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);\
                strncpy (dest , src, sizeof(dest)-1);\
                dest[sizeof(dest)-1] = 0;       }while(0)
 
+#define mp_evas_object_response_set(obj, response) do { \
+       if (obj) { \
+               evas_object_data_set((obj), "response", (void *)(response)); \
+       } \
+} while (0)
+
+#define mp_evas_object_response_get(obj) (int)evas_object_data_get((obj), "response")
+
+
+typedef enum
+{
+       MP_SCREEN_MODE_PORTRAIT = 0,
+       MP_SCREEN_MODE_LANDSCAPE,
+} mp_screen_mode;
+
+
 typedef enum
 {
        MP_SND_PATH_BT,
@@ -223,13 +302,18 @@ typedef enum
                next = elm_genlist_item_next_get(current),                    \
                data = elm_object_item_data_get(current))
 
-#define        MP_PLAYLIST_MAX_ITEM_COUNT 1000
-#define        MP_NOW_PLAYING_ICON_SIZE 48 * elm_scale_get()
-#define        MP_LIST_ICON_SIZE 70 * elm_scale_get()
-#define        MP_ALBUM_LIST_ICON_SIZE 48 * elm_scale_get()
-#define        MP_PLAY_VIEW_ARTWORK_SIZE 480 * elm_scale_get()
+//#define      MP_PLAYLIST_MAX_ITEM_COUNT 1000
+#define        MP_NOW_PLAYING_ICON_SIZE 48 * elm_config_scale_get()
+#define        MP_LIST_ICON_SIZE 70 * elm_config_scale_get()
+#define        MP_ALBUM_LIST_ICON_SIZE 48 * elm_config_scale_get()
+#define        MP_PLAY_VIEW_ARTWORK_SIZE 480 * elm_config_scale_get()
 
 #define MP_NOWPLAYING_INI_FILE_NAME    MP_INI_DIR"/now_playing.ini"
+#define MP_SHORTCUT_INI_FILE_NAME_0            MP_INI_DIR"/shortcut_0.ini"
+#define MP_SHORTCUT_INI_FILE_NAME_1            MP_INI_DIR"/shortcut_1.ini"
+#define MP_SHORTCUT_INI_FILE_NAME_2            MP_INI_DIR"/shortcut_2.ini"
+#define MP_SHORTCUT_INI_FILE_NAME_3            MP_INI_DIR"/shortcut_3.ini"
+
 #define MP_RECENT_PLAYED_INI_FILE_NAME         MP_INI_DIR"/recent_played.ini"
 
 #define SINGLE_BYTE_MAX 0x7F
@@ -241,32 +325,10 @@ typedef enum
        MP_UG_MESSAGE_LOAD,
 }mp_ug_message_t;
 
-#define MP_LIVE_VCONF_PREFIX   "memory/music/"
-
-#define MP_EXT_PLAY_STATE              VCONFKEY_MUSIC_STATE
-#define MP_EXT_CUR_POS                 MP_LIVE_VCONF_PREFIX"pos"               //str
-#define MP_EXT_CUR_PROGRESS_POS        MP_LIVE_VCONF_PREFIX"progress_pos"      //double
-
-#define MP_EXT_PLAY_CLICKED    MP_LIVE_VCONF_PREFIX"play_clicked"      //bool
-#define MP_EXT_PAUSE_CLICKED   MP_LIVE_VCONF_PREFIX"pause_clicked"     //bool
-#define MP_EXT_PREV_PRESSED    MP_LIVE_VCONF_PREFIX"prev_pressed"      //bool
-#define MP_EXT_PREV_RELEASED   MP_LIVE_VCONF_PREFIX"prev_released"     //bool
-#define MP_EXT_NEXT_PRESSED    MP_LIVE_VCONF_PREFIX"next_pressed"      //bool
-#define MP_EXT_NEXT_RELEASED   MP_LIVE_VCONF_PREFIX"next_released"     //bool
-
 #define MP_POPUP_GENLIST_ITEM_H 112
 #define MP_POPUP_GENLIST_ITEM_H_MAX 408
 #define MP_POPUP_GENLIST_ITEM_W 610
 
-#define MP_B_PATH "path"
-#define MP_MM_KEY "multimedia_key"
-#define MP_PLAY_RECENT "play_recent"
-#define MP_PLAY_PLAYLIST "play_playlist"
-#define MP_PLAY_ARTIST "play_artist"
-#define MP_PLAY_ALBUM "play_album"
-#define MP_PLAY_GENRE "play_genre"
-#define MP_PLAY_SOMETHING "play_music"
-
 #define ELM_NAVIFRAME_ITEM_CONTENT                             "default"
 #define ELM_NAVIFRAME_ITEM_ICON                                        "icon"
 #define ELM_NAVIFRAME_ITEM_OPTIONHEADER                        "optionheader"
@@ -279,4 +341,7 @@ typedef enum
 #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_CLOSE           "elm,state,optionheader,close", ""
 #define ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_OPEN                    "elm,state,optionheader,open", ""
 
+#define MP_PLAYLIST_NAME_SIZE                  101
+#define MP_METADATA_LEN_MAX    193
+
 #endif /* __MP_DEFINE_H_ */
index 4146c4e..0c96e6b 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 #ifndef __MP_PLAYER_DEBUG_H_
 #define __MP_PLAYER_DEBUG_H_
 
@@ -24,7 +23,8 @@
 #include "assert.h"
 #include <linux/unistd.h>
 
-#define ENABLE_CHECK_START_END_FUNCTION
+#define ENABLE_CHECK_START_END_FUNCTION        // support enter leave debug message
+
 #define ENABLE_LOG_SYSTEM
 
 #ifdef ENABLE_LOG_SYSTEM
 #undef LOG_TAG
 #endif //LOG_TAG
 
+#ifdef MP_SOUND_PLAYER
+#define LOG_TAG "SOUND_PLAYER"
+#else
 #define LOG_TAG "MUSIC"
+#endif
 
+#define LOG_COLOR_RESET    "\033[0m"
+#define LOG_COLOR_RED      "\033[31m"
+#define LOG_COLOR_YELLOW   "\033[33m"
+#define LOG_COLOR_GREEN        "\033[32m"
+#define LOG_COLOR_BLUE         "\033[36m"
 
-#define mp_debug(fmt, arg...)                  LOGD("[TID:%d][ %s : %d]   "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg)
-#define mp_error(fmt, arg...)                  LOGE("[TID:%d]###########      ERROR   CHECK  ############# [ %s : %d]   "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg)
+#define mp_debug(fmt, arg...)                  LOGD(LOG_COLOR_GREEN"[TID:%d][ %s : %d]   "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg)
+#define mp_error(fmt, arg...)                  LOGE(LOG_COLOR_RED"[TID:%d]# ERROR   CHECK  # [ %s : %d]   "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg)
 
-#define DEBUG_TRACE(fmt, arg...)       LOGD("[TID:%d][ %s : %d]   "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg)
-#define INFO_TRACE(fmt, arg...)        LOGI("[TID:%d][ %s : %d]    "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg)
-#define WARN_TRACE(fmt, arg...)        LOGW("[TID:%d][ %s : %d]   "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg)
-#define ERROR_TRACE(fmt, arg...)       LOGE("[TID:%d][ %s : %d]   "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg)
-#define mp_debug_temp(fmt, arg...)     LOGD("[TID:%d][Temp debug %s : %d]   "fmt"\n", gettid(), __FUNCTION__, __LINE__,##arg)
+#define DEBUG_TRACE(fmt, arg...)       LOGD(LOG_COLOR_GREEN"[TID:%d][ %s : %d]   "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg)
+#define INFO_TRACE(fmt, arg...)        LOGI(LOG_COLOR_GREEN"[TID:%d][ %s : %d]    "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg)
+#define WARN_TRACE(fmt, arg...)        LOGW(LOG_COLOR_YELLOW"[TID:%d][ %s : %d]   "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg)
+#define ERROR_TRACE(fmt, arg...)       LOGE(LOG_COLOR_RED"[TID:%d][ %s : %d]   "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg)
+#define mp_debug_temp(fmt, arg...)     LOGD(LOG_COLOR_GREEN"[TID:%d][Temp debug %s : %d]   "fmt""LOG_COLOR_RESET, gettid(), __FUNCTION__, __LINE__,##arg)
 
 #else // use USE_DLOG_SYSTEM
 
@@ -85,7 +94,7 @@
 #ifdef ENABLE_CHECK_START_END_FUNCTION
 #define startfunc              DEBUG_TRACE("+-  START -------------------------");
 #define endfunc                DEBUG_TRACE("+-  END  --------------------------");
-#define exceptionfunc  ERROR_TRACE("#################################      CRITICAL ERROR   #####################################");
+#define exceptionfunc  ERROR_TRACE("### CRITICAL ERROR   ###");
 #else
 #define startfunc
 #define endfunc
 
 #define MP_CHECK_EXCEP(expr) do { \
        if(!(expr)) { \
-               ERROR_TRACE("CRITICAL ERROR ########################################## CHECK BELOW ITEM");\
+               ERROR_TRACE("CRITICAL ERROR ## CHECK BELOW ITEM");\
                goto mp_exception;\
        } \
 } while (0)
 
-#define MP_CHECK_VAL(expr, val)                mp_retvm_if(!(expr),val,"INVALID PARM RETURN NULL")
+#define MP_CHECK_VAL(expr, val)                mp_retvm_if(!(expr),val,"INVALID PARM RETURN VAL: 0x%x", val)
 #define MP_CHECK_NULL(expr)            mp_retvm_if(!(expr),NULL,"INVALID PARM RETURN NULL")
 #define MP_CHECK_FALSE(expr)           mp_retvm_if(!(expr),FALSE,"INVALID PARM RETURN FALSE")
 #define MP_CHECK_CANCEL(expr)          mp_retvm_if(!(expr), ECORE_CALLBACK_CANCEL, "INVALID PARAM RETURN")
 
 #define mp_assert(expr) do { \
        if(!(expr)) { \
-               ERROR_TRACE("CRITICAL ERROR ########################################## CHECK BELOW ITEM");\
+               ERROR_TRACE("CRITICAL ERROR ## CHECK BELOW ITEM");\
                assert(FALSE); \
        } \
 } while (0)
diff --git a/src/include/mp-setting-keys.h b/src/include/mp-setting-keys.h
deleted file mode 100755 (executable)
index 33fb6ae..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-
-#ifndef __mp_setting_keys_H__
-#define __mp_setting_keys_H__
-
-#ifndef VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT
-enum
-{
-       SETTING_MUSIC_MENU_ALBUM = 0x0001,
-       SETTING_MUSIC_MENU_ARTIST = 0x0002,
-       SETTING_MUSIC_MENU_GENRE = 0x0004,
-       SETTING_MUSIC_MENU_COMPOSER = 0x0008,
-       SETTING_MUSIC_MENU_YEAR = 0x0010,
-};
-#define VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT                    "db/setting/music-player/menu"
-#endif
-
-#define VCONFKEY_MUSIC_MENU_CHANGE                     "db/setting/music-player/menu_change"
-
-#endif //__mp_setting_keys_H__
index 997c351..064344e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
 #include <unistd.h>
 #include <glib.h>
 #include <vconf.h>
-#include <audio-svc.h>
-#include <audio-svc-error.h>
-#include <audio-svc-types.h>
 #include <Ecore_IMF.h>
 #include <Ecore_X.h>
-#include <appcore-efl.h>
+#include <app.h>
 #include <Edje.h>
 #include <errno.h>
 #include <libintl.h>
+#include <ui-gadget.h>
 
-#include <mm_error.h>
-#include <mm_player.h>
 #include <sys/times.h>
 
 #include "mp-player-debug.h"
 #include "mp-define.h"
 #include "mp-play-list.h"
 #include "mp-http-mgr.h"
+#include "mp-ta.h"
+#include "mp-language-mgr.h"
+#include "mp-media-info.h"
+
+#ifdef MP_SOUND_PLAYER
+#include "sp-view-manager.h"
+#endif
+
+E_DBus_Connection *EDBusHandle;
 
 typedef struct
 {
@@ -56,9 +61,7 @@ typedef struct
        Elm_Object_Item *ctltab_genres;
        Elm_Object_Item *ctltab_year;
        Elm_Object_Item *ctltab_composer;
-
-       /* navi bar */
-       Evas_Object *cur_view;  //navibar of current view
+       Elm_Object_Item *ctltab_folder;
 
        //relative to music setting
        int albums;
@@ -66,6 +69,9 @@ typedef struct
        int genres;
        int composers;
        int years;
+       int folders;
+
+       bool first_append;
 } mp_library;
 
 
@@ -85,6 +91,8 @@ typedef enum
        MP_VIEW_TYPE_ARTIST,
        MP_VIEW_TYPE_YEAR,
        MP_VIEW_TYPE_COMPOSER,
+       MP_VIEW_TYPE_FOLDER,
+       MP_VIEW_TYPE_ALLSHARE,
        MP_VIEW_TYPE_PLAYVIEW,
        MP_VIEW_TYPE_MAX,
 } mp_view_type_t;
@@ -108,6 +116,32 @@ typedef struct
        struct appdata *ad;     //appdata
 } view_data_t;
 
+
+typedef struct
+{
+       Evas_Object *layout;
+       void *EvasPlugin;
+       Evas_Object *box;
+
+       Ecore_Timer *mouse_up_timer;
+       Ecore_Timer *left_title_timer;
+       Ecore_Timer *now_playing_timer;
+
+       Evas_Object *track_list;
+
+       mp_media_list_h svc_handle;
+       int        track_count;
+
+       Evas_Object *left_title;
+       Evas_Object *now_playing;
+       Evas_Object *back_button;
+
+       int now_playing_album_seq;
+
+       struct appdata *ad;
+} mp_coverflow_view;
+
+
 typedef struct
 {
        //EDJ Layout
@@ -119,24 +153,39 @@ typedef struct
        Evas_Object *play_info;
        Evas_Object *play_progressbar;
        Evas_Object *play_ctrl; //progress bar and index, track name
+       Evas_Object *land_naviframe;
+       Elm_Object_Item* play_head;
        Evas_Object *play_title;
-       Evas_Object *albumart_bg;
 
+       Evas_Object *albumart_img;
+
+       Evas_Object *albumart_image;
+       Evas_Object *albumart_bg;
+       Evas_Object *albumart_image_reflection; // for showing the reflection of albumart_image
+       Evas_Object *pre_albumart_image_reflection;
        int flick_direction;    //1 for right, 2 for left, other for invalid
+       bool hide_image_flag;   //flag for hide pre_albumart_image_reflection
        int albumart_width;
        int albumart_height;
 
        Evas_Object *play_view_next;
        char music_play_time_text[16];
+       int x;
+       int y;
+       int favour_longpress;
+       Ecore_Timer *favourite_timer;
        Ecore_Timer *progressbar_timer;
+
        Ecore_Timer *show_ctrl_timer;
 
-       bool transition_state;
+       bool transition_state;  //if user start transiton start, set that value if finish transiton reset it
+
 
        struct music_list_item *playing_list_item;
+       mp_screen_mode play_view_screen_mode;
        Evas_Object *play_icon;
 
-       bool paused_by_progressbar;
+       bool b_play_all; /* for update playlist view when back from playview which created by playall */
 
        struct appdata *ad;
 } mp_playing_view;
@@ -150,21 +199,18 @@ enum
        MP_CREATE_PLAYLIST_MODE_SWEEP
 };
 
-typedef struct
-{
-       AudioHandleType *plst;
-       Elm_Object_Item *item;
-       void *data;
-} mp_playlist_item_t;
-
 typedef enum
 {
-       MP_LAUNCH_DEFAULT = 0,
-       MP_LAUNCH_PATH,
-       MP_LAUNCH_PLAY_RECENT,
-       MP_LAUNCH_PLAY_GROUP,
+       MP_LAUNCH_DEFAULT = 0,  //normal case
+       MP_LAUNCH_UG,           //ug case
+       MP_LAUNCH_ADD_TO_HOME,  //add to home
+
+       /*voice ui */
+       MP_LAUNCH_PLAY_RECENT,  //play recent
+       MP_LAUNCH_PLAY_GROUP,   // play album, genre,
        MP_LAUNCH_PLAY_PLAYLIST,
-       MP_LAUNCH_PLAY_SOMETHING,
+       MP_LAUNCH_PLAY_SOMETHING,       //play track by title
+       /*voice ui */
 
 } mp_launch_type;
 
@@ -172,19 +218,23 @@ typedef enum
 {
        LOAD_DEFAULT,
        LOAD_TRACK,             //load by path
-       LOAD_GROUP,
-       LOAD_PLAYLIST,
-       LOAD_PLAY,
+       LOAD_GROUP,             //load by shortcut
+       LOAD_PLAYLIST,          //load by shortcut
+
+       /*voice ui */
+       LOAD_VOICE_UI,
+       /*voice ui */
        LOAD_MM_KEY,
 
 } mp_load_type;
 
 typedef enum
 {
-       MP_POPUP_NORAML = 0,
+       MP_POPUP_NORMAL = 0,
        MP_POPUP_GENLIST,
        MP_POPUP_CTX,
        MP_POPUP_PROGRESS,
+       MP_POPUP_NOTIFY,        // NOT destroyed by mp_popup_destroy()
        MP_POPUP_MAX,
 } mp_popup_type;
 
@@ -212,16 +262,19 @@ struct appdata
        Evas_Object *win_main;
        Evas_Object *bg;
        Evas_Object *popup[MP_POPUP_MAX];
+       int win_angle;
 
        Ecore_X_Window xwin;
 
        /* Layout for each view */
        Evas_Object *base_layout_main;          //layout for transparent indicator area
+       Evas_Object *naviframe;
        Evas_Object *controlbar_layout;         //layout for show hide controlbar.
 
        bool show_optional_menu;
        double music_pos;
        double music_length;
+       //int isDragging;
        Ecore_Timer *progressbar_timer;
 
        mp_playing_view *playing_view;
@@ -229,31 +282,40 @@ struct appdata
 
        // for Plalying Control
        mp_player_rep_state play_rep_state;     //repeat_all, repeat_non, repeat_1
-       bool play_shuffle_state;        //shuffle on/off
+       int play_shuffle_state; //shuffle on/off
        bool can_play_drm_contents;
        bool show_now_playing;
 
        mp_player_state player_state;
 
+       Evas_Object *bgimage;
+
        mp_drm drm_info;
+       mp_constraints_info_s drm_constraints_info;
        char * latest_playing_key_id;
        mp_play_list *playing_list;
 
-       mp_launch_type launch_type;
-       mp_load_type loadtype;
-       audio_svc_track_type_e track_type;
-       audio_svc_group_type_e group_type;
+       mp_launch_type launch_type;     // Support Play from outside
+       mp_load_type loadtype;  // Support Add to home
+       mp_track_type_e track_type;     // Support voice ui
+       mp_group_type_e group_type;     // Support voice ui
 
        char *request_group_name;
        char *request_playing_path;
-       audio_svc_group_type_e request_group_type;
+       mp_group_type_e request_group_type;
        int request_play_id;
-       //update default view layout if this flag set. set true when album/artist/genre short cut pressed.
+       // update default view layout if this flag set. set true when album/artist/genre short cut pressed.
+       bool update_default_view;
 
        Ecore_IMF_Context *imf_context;
+#ifdef MP_SOUND_PLAYER
+       Sp_View_Manager *view_mgr;
+#else
        mp_library *library;
-
-       Evas_Object *ctrl_bar;
+       GList *view_history;
+#endif
+       Evas_Object *tabbar;
+       Evas_Object *genlist_edit;
 
        Evas_Object *editfiled_new_playlist;
        Evas_Object *editfiled_entry;
@@ -263,6 +325,13 @@ struct appdata
 
        int new_playlist_id;
 
+       struct {
+               bool  downed;
+               bool  moving;
+               Evas_Coord sx;
+               Evas_Coord sy;
+       } mouse;
+
        Evas_Object *radio_group;
        Evas_Object *notify;
        Evas_Object *notify_layout;
@@ -279,42 +348,74 @@ struct appdata
        int ear_key_press_cnt;
        Ecore_Timer *ear_key_timer;
 
-       //scale factor for scalable UI..
-       double scale;           //scale factor;
+       Evas_Object *win_minicon;
+       Evas_Object *minicontroller_layout;
+       Evas_Object *minicon_icon;
+       Ecore_Timer *minicon_timer;
+       Ecore_Timer *minicon_progress_timer;
+       bool b_minicontroller_show;
+       bool minicon_visible;
+
+       mp_playing_view *backup_playing_view;
+       Evas_Object *backup_layout_play_view;   //Used to swap the Playing layout from Landscape and Portrait.
+       double latest_moved_left_size;
+
+       int current_appcore_rm;
+       mp_screen_mode screen_mode;
+
+       int screen_height;      //current screen height
+       int screen_width;       //current screen width
+
+       Evas_Object *edit_ctrl_bar;
 
-       GList *view_history;
        Ecore_Pipe *inotify_pipe;
 
+       // for add to playlist
        void *layout_data;
-       AudioHandleType *group_item_handler;
+       mp_media_info_h group_item_handler;
        char *fid;
 
        bool paused_by_user;
 
-       mp_http_mgr_t *http_mgr;        //http mgr
+       mp_http_mgr_t *http_mgr;
+
+       bool navi_effect_in_progress;   // Use this not to excute button callbacks while transition effect
 
-       bool navi_effect_in_progress;   //Use this not to excute button callbacks while transition effect
-       bool prohibit_aul_relaunch;     //aul relaunch only available when music is in pause state
-       bool is_focus_out;
+       bool app_is_foreground; // relaunch only available when music is in pause state
 
-       mp_snd_path snd_path;   //indicate sound path;
+       bool is_focus_out;      // update minicontroller in bgm mode.
+
+       mp_snd_path snd_path;   // indicate sound path;
 
        Ecore_Event_Handler *key_down;
+       Ecore_Event_Handler *mouse_button_down;
        Ecore_Event_Handler *focus_in;
        Ecore_Event_Handler *focus_out;
        Ecore_Event_Handler *visibility_change;
        Ecore_Event_Handler *client_msg;
+       Ecore_Event_Handler *mouse_button_up;
+       Ecore_Event_Handler *mouse_move;
+
+       int motion_handle;
 
        Evas_Object *buffering_popup;
 
-       bool edit_in_progress;  //don't update view in inotify callback while delete operation.
+       ui_gadget_h ug;
+       ui_gadget_h setting_ug;
+       ui_gadget_h info_ug;    //info ug handle - Do not destory info ug.
+       Evas_Object *info_ug_base;      //if thist is not null, info ug is visible. use this to determine info view is exist or not.
+       Evas_Object *info_ug_layout; //do not del this object. if it is deleted, info ug layout will not be displayed properly.
+       bool info_click_flag;     //flag for click info button in play view
+       bool info_back_play_view_flag;     //flag for info view back  play view
+
+       bool edit_in_progress;  // don't update view in inotify callback while delete operation.
 
        Ecore_Timer *volume_down_timer;
        Ecore_Timer *mute_popup_show_timer;     //timer for showing mute popup
        bool volume_long_pressed;
        bool mute_flag;         //flag for mute
 
-       double ff_rew;          //for ff and rew when there is no play view
+       double ff_rew;          // for ff and rew when there is no play view
 
        bool music_setting_change_flag; //true for change music setting data, false for not
 
@@ -323,24 +424,51 @@ struct appdata
        bool is_Longpress;
        bool is_ff;
 
+       Ecore_Idler *mss_startup_idler;
        Ecore_Idler *playing_err_idler;
        Ecore_Idler *bt_pause_idler;
        Ecore_Idler *setting_idler;
        Ecore_Idler *app_init_idler;
+       Ecore_Idler *playview_show_idler;
 
        Ecore_Timer *longpress_timer;
-       Ecore_Timer *live_pos_timer;
        bool seek_off;
 
-       int haptic_handle;
+       bool vertical_scroll;
+
        Ecore_Timer *vib_timer;
-       Ecore_Pipe *player_msg_pipe;
+
+       char *shortcut_descrition;
+       char *shortcut_image_path;
 
        Ecore_Animator *minfo_ani;
        GList *minfo_list;
        Evas_Object *minfo_genlist;
 
-       MediaSvcHandle *media_svc_handle;
+       bool direct_win_minimize;
+
+       int album_image_w;
+       int album_image_h;
+
+       bool prohibit_activate_win;
+
+       bool paused_by_other_player;
 };
 
+
+typedef void (*mpOptCallBack) (void *, Evas_Object *, void *);
+
+typedef struct
+{
+       const char *name;
+       mpOptCallBack cb;
+} MpOptItemType;
+
+typedef struct
+{
+       MpOptItemType *l_opt;
+       MpOptItemType *m_opt;
+       MpOptItemType *r_opt;
+} MpOptGroupType;
+
 #endif /* __DEF_music_H__ */
index 5742650..e4e369e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-
+#include "mp-ta.h"
 #include "music.h"
-#include "mp-library.h"
 #include "mp-widget.h"
 #include "mp-util.h"
 #include "mp-setting-ctrl.h"
 #include "mp-player-control.h"
 #include "mp-play-view.h"
 #include "mp-http-mgr.h"
-#include "mp-common.h"
 #include "mp-play-list.h"
-#include "mp-view-manager.h"
+#include "mp-ug-launch.h"
 #include "mp-popup.h"
 
 #include <signal.h>
-#include <aul.h>
 #include <glib.h>
 #include <glib-object.h>
 #include "mp-player-mgr.h"
 #include "mp-player-debug.h"
-#include <utilX.h>
 #include <syspopup_caller.h>
-#include <media-svc.h>
+#include <power.h>
+#include "mp-minicontroller.h"
 #include "mp-app.h"
 #include "mp-play.h"
 
+#ifdef MP_SOUND_PLAYER
+#include "sp-view-manager.h"
+#else
+#include "mp-library.h"
+#include "mp-common.h"
+#include "mp-view-manager.h"
+#endif
+
+#define MP_B_PATH "path"
+#define MP_MM_KEY "multimedia_key"
+#define MP_PLAY_RECENT "play_recent"
+#define MP_PLAY_PLAYLIST "play_playlist"
+#define MP_PLAY_ARTIST "play_artist"
+#define MP_PLAY_ALBUM "play_album"
+#define MP_PLAY_GENRE "play_genre"
+#define MP_PLAY_FOLDER "play_folder"
+#define MP_PLAY_SOMETHING "play_music"
+#define MP_DIRECT_WIND_MINIMIZE "direct_win_minimize"
+
 static bool _mp_main_init(struct appdata *ad);
 static Eina_Bool _mp_main_win_visibility_change_cb(void *data, int type, void *event);
 static Eina_Bool _mp_main_win_focus_in_cb(void *data, int type, void *event);
@@ -49,21 +65,9 @@ static Eina_Bool _mp_main_win_focus_out_cb(void *data, int type, void *event);
 static void
 _mp_main_exit_cb(void *data, Evas_Object * obj, void *event_info)
 {
-       evas_object_del(obj);
-       mp_app_exit(data);
-}
+       mp_evas_object_del(obj);
 
-static int
-_mp_main_low_battery_cb(void *data)
-{
-       struct appdata *ad = (struct appdata *)data;
-       MP_CHECK_VAL(ad, 0);
-
-       if (mp_check_battery_available())
-       {
-               mp_app_exit(ad);
-       }
-       return 0;
+       mp_app_exit(data);
 }
 
 static void
@@ -71,6 +75,7 @@ _mp_evas_flush_post(void *data, Evas * e, void *event_info)
 {
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
+
        evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST, _mp_evas_flush_post);
 
 }
@@ -78,16 +83,13 @@ _mp_evas_flush_post(void *data, Evas * e, void *event_info)
 static bool
 _mp_main_init(struct appdata *ad)
 {
-       /* initialize library view layout */
+       EDBusHandle = NULL;
        ad->request_play_id = -1;
-       ad->music_setting_change_flag = false;  //initialize
-       MediaSvcHandle *handle = NULL;
-       if (media_svc_connect(&handle) != AUDIO_SVC_ERROR_NONE)
-       {
-               ERROR_TRACE("Fail when init music db");
-               return FALSE;
-       }
-       ad->media_svc_handle = handle;
+       ad->music_setting_change_flag = false;
+
+       MP_TA_ACUM_ITEM_BEGIN("    mp_media_info_connect", 0);
+       mp_media_info_connect();
+       MP_TA_ACUM_ITEM_END("    mp_media_info_connect", 0);
 
        return TRUE;
 }
@@ -97,10 +99,8 @@ _mp_main_set_current_playing_item(struct appdata *ad, const char *current_player
 {
        startfunc;
        ad->loadtype = LOAD_TRACK;
-
        mp_play_list_create_current_play_list(ad, &ad->playing_list, NULL, current_player_path, 1, 0, FALSE, -1);
-
-       ad->launch_type = MP_LAUNCH_PATH;
+       ad->launch_type = MP_LAUNCH_UG;
 
        return true;
 
@@ -109,32 +109,117 @@ _mp_main_set_current_playing_item(struct appdata *ad, const char *current_player
 static bool
 _mp_main_is_launching_available(struct appdata *ad)
 {
+       MP_TA_ACUM_ITEM_BEGIN("    battery_check", 0);
        if (mp_check_battery_available())
        {
-               Evas_Object *popup = elm_popup_add(ad->win_main);
-               mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_BODY_LOW_BATTERY"));
-               mp_popup_set_response_cb(popup, _mp_main_exit_cb, ad);
-               mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES);
-               mp_popup_timeout_set(popup, 3.0);
+               Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, ad, _mp_main_exit_cb, ad);
+               elm_object_text_set(popup, GET_SYS_STR("IDS_COM_BODY_LOW_BATTERY"));
+               mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES);
+               mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT);
                evas_object_show(ad->win_main);
                evas_object_show(popup);
                return false;
        }
+       MP_TA_ACUM_ITEM_END("    battery_check", 0);
 
+       MP_TA_ACUM_ITEM_BEGIN("    mass_stroage_check", 0);
        if (mp_check_mass_storage_mode())
        {
-               Evas_Object *popup = elm_popup_add(ad->win_main);
-               mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_POP_UNABLE_TO_USE_DURING_MASS_STORAGE_MODE"));
-               mp_popup_set_response_cb(popup, _mp_main_exit_cb, ad);
-               mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES);
-               mp_popup_timeout_set(popup, 3.0);
+               Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, ad, _mp_main_exit_cb, ad);
+               elm_object_text_set(popup, GET_SYS_STR("IDS_COM_POP_UNABLE_TO_USE_DURING_MASS_STORAGE_MODE"));
+               mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES);
+               mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT);
                evas_object_show(ad->win_main);
                evas_object_show(popup);
                return false;
        }
+       MP_TA_ACUM_ITEM_END("    mass_stroage_check", 0);
        return true;
 }
 
+#ifndef MP_SOUND_PLAYER
+void
+_mp_main_create_view_by_item(struct appdata *ad, const char *argv1)
+{
+       mp_retm_if(argv1 == NULL, "argv1 is NULL");
+       mp_retm_if(ad == NULL, "ad is NULL");
+
+       if (argv1)
+       {
+               if (strstr(argv1, MP_SHORTCUT_PLAYLIST) == argv1)
+               {
+                       int playlist_id = -1;
+                       char *id;
+                       id = strtok((char *)argv1, MP_FUNC_ADD_TO_HOME_SEPARATION);
+                       id = strtok(NULL, MP_FUNC_ADD_TO_HOME_SEPARATION);
+                       if(id)
+                       {
+                               playlist_id = atoi(id);
+                               DEBUG_TRACE("Playlist id is %d", playlist_id);
+                               ad->launch_type = MP_LAUNCH_ADD_TO_HOME;
+                               ad->loadtype = LOAD_PLAYLIST;
+                               ad->request_play_id = playlist_id;
+
+                               mp_library_load(ad);
+                       }
+               }
+               else if (strstr(argv1, MP_SHORTCUT_GROUP) == argv1)
+               {
+                       char *id;
+                       id = strtok((char *)argv1, MP_FUNC_ADD_TO_HOME_SEPARATION);
+                       id = strtok(NULL, MP_FUNC_ADD_TO_HOME_SEPARATION);
+                       if (id)
+                       {
+                               ad->request_group_type = (atoi(id));
+                               mp_debug("view_type is %d", ad->request_group_type);
+
+                               id = strtok(NULL, MP_FUNC_ADD_TO_HOME_SEPARATION);
+
+                               if (id)
+                               {
+                                       IF_FREE(ad->request_group_name);
+                                       ad->request_group_name = g_strdup(id);
+
+                                       DEBUG_TRACE("Reqest Album name is %s", ad->request_group_name);
+                                       ad->launch_type = MP_LAUNCH_ADD_TO_HOME;
+                                       ad->loadtype = LOAD_GROUP;
+                                       mp_library_load(ad);
+                               }
+                       }
+               }
+               else if (strstr(argv1, MP_SHORTCUT_SONG) == argv1)
+               {
+                       char current_player_path[255] = { 0, };
+                       char temp[255] = { 0, };
+                       strncpy(temp, argv1, 255);
+
+                       int i = 0;
+                       for (i = 0; i < strlen(temp); i++)
+                       {
+                               if (temp[i] == '/')
+                               {
+                                       int j = i + 1;
+                                       while (temp[j])
+                                       {
+                                               current_player_path[j - (i + 1)] = temp[j];
+                                               j++;
+                                       }
+                                       DEBUG_TRACE("current_player_path is %s", current_player_path);
+                                       break;
+                               }
+                       }
+
+                       ad->launch_type = MP_LAUNCH_ADD_TO_HOME;
+                       ad->loadtype = LOAD_TRACK;
+
+                       IF_FREE(ad->request_playing_path);
+                       ad->request_playing_path = g_strdup(current_player_path);
+
+               }
+       }
+}
+#endif
+
 static Eina_Bool _mp_main_win_visibility_change_cb(void *data, int type, void *event)
 {
        struct appdata *ad = (struct appdata *)data;
@@ -151,18 +236,29 @@ static Eina_Bool _mp_main_win_visibility_change_cb(void *data, int type, void *e
                        mp_debug("hide main window");
                        mp_player_mgr_vol_type_unset();
 
-                       ad->prohibit_aul_relaunch = false;
+                       ad->app_is_foreground = false;
                        hided = true;
-
+#ifdef MP_SOUND_PLAYER
+                       mp_play_view_progress_timer_freeze(ad);
+#else
                        mp_view_manager_freeze_progress_timer(ad);
-                       mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
+#endif
                } else {
                        mp_debug("show main window");
                        mp_player_mgr_vol_type_set();
-                       ad->prohibit_aul_relaunch = true;
+                       ad->app_is_foreground = true;
 
                        DEBUG_TRACE("load_type: %d", ad->loadtype);
+
+                       /* for refresh progressbar */
+                       ad->music_pos = mp_player_mgr_get_position() / 1000.0;
+                       ad->music_length = mp_player_mgr_get_duration() / 1000.0;
+
+#ifdef MP_SOUND_PLAYER
+                       mp_play_view_progress_timer_thaw(ad);
+#else
                        mp_view_manager_thaw_progress_timer(ad);
+#endif
                }
        }
 
@@ -177,8 +273,10 @@ static Eina_Bool _mp_main_win_focus_in_cb(void *data, int type, void *event)
        Ecore_X_Event_Window_Focus_In *ev = (Ecore_X_Event_Window_Focus_In *)event;
        if (ev->win == ad->xwin) {
                ad->is_focus_out = false;
+               if (ad->win_minicon && ad->b_minicontroller_show)
+                       mp_minicontroller_destroy(ad);
        }
-
+#ifndef MP_SOUND_PLAYER
        int db_state = VCONFKEY_FILEMANAGER_DB_UPDATED;
        vconf_get_int(VCONFKEY_FILEMANAGER_DB_STATUS, &db_state);
        if(db_state == VCONFKEY_FILEMANAGER_DB_UPDATING)
@@ -186,6 +284,8 @@ static Eina_Bool _mp_main_win_focus_in_cb(void *data, int type, void *event)
                DEBUG_TRACE("update list");
                mp_view_manager_update_list_contents(mp_util_get_view_data(ad), true);
        }
+#endif
+
        return ECORE_CALLBACK_PASS_ON;
 }
 
@@ -196,12 +296,66 @@ static Eina_Bool _mp_main_win_focus_out_cb(void *data, int type, void *event)
 
        Ecore_X_Event_Window_Focus_Out *ev = (Ecore_X_Event_Window_Focus_Out *)event;
        if (ev->win == ad->xwin) {
+               /* Testing Code. If a track is getting played or paused,
+                  the MiniController should be displayed as soon as the main window goes to back ground.
+                  When again the Music ICon in Main menu is pressed, the mini controller will be hidden and
+                  The Main Screen of the Music Application will be displayed. */
+
                ad->is_focus_out = true;
-               mp_play_control_play_cb(ad, NULL, SIGNAL_PAUSE, NULL);
+               if (ad->player_state == PLAY_STATE_PAUSED || ad->player_state == PLAY_STATE_PLAYING)
+               {
+                       if (!ad->win_minicon)
+                               mp_minicontroller_create(ad);
+                       else
+                               mp_minicontroller_show(ad);
+               }
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool _mp_main_client_message_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad);
+
+       Ecore_X_Event_Client_Message *ev =
+           (Ecore_X_Event_Client_Message *) event;
+       int new_angle = 0;
+
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE)
+       {
+               new_angle = ev->data.l[0];
+               DEBUG_TRACE("ROTATION: %d", new_angle);
+               mp_minicontroller_rotate(ad, new_angle);
+       }
+       else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE)
+       {
+               bool visible = false;
+               if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON)
+               {
+                       mp_debug("quickpanel show");
+                       visible = true;
+               }
+               else
+               {
+                       mp_debug("quickpanel hide");
+                       visible = false;
+               }
+               mp_minicontroller_visible_set(ad, visible);
        }
+
        return ECORE_CALLBACK_PASS_ON;
 }
 
+static void __mp_main_lcd_state_changed_cb(power_state_e state, void *user_data)
+{
+       DEBUG_TRACE("power_state: %d", state);
+
+       struct appdata *ad = user_data;
+       MP_CHECK(ad);
+}
+
 static Eina_Bool
 _mp_main_app_init_idler_cb(void *data)
 {
@@ -213,212 +367,258 @@ _mp_main_app_init_idler_cb(void *data)
        {
                ERROR_TRACE("Error when noti init");
        }
-       ad->key_down =
-               ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, mp_app_hard_key_down_cb, ad);
-       ad->key_down =
-               ecore_event_handler_add(ECORE_EVENT_KEY_UP, mp_app_hard_key_up_cb, ad);
-       ad->visibility_change =
-               ecore_event_handler_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, _mp_main_win_visibility_change_cb, ad);
-       ad->focus_in =
-               ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _mp_main_win_focus_in_cb, ad);
-       ad->focus_out =
-               ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _mp_main_win_focus_out_cb, ad);
+
+       ad->mouse_button_down = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, mp_app_mouse_event_cb, ad);
+       ad->mouse_button_up = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, mp_app_mouse_event_cb, ad);
+       ad->mouse_move = ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, mp_app_mouse_event_cb, ad);
+       /* window visibility change event */
+       ad->visibility_change = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, _mp_main_win_visibility_change_cb, ad);
+       /* window focus in/out event */
+       ad->focus_in = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _mp_main_win_focus_in_cb, ad);
+       ad->focus_out = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _mp_main_win_focus_out_cb, ad);
+       ad->client_msg = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _mp_main_client_message_cb, ad);
 
        mp_app_inotify_init(ad);
 
        elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_SHOW);
-
        ad->app_init_idler = NULL;
+
+       power_set_changed_cb(__mp_main_lcd_state_changed_cb, ad);
+
        return ECORE_CALLBACK_CANCEL;
 }
 
-static void
-_mp_main_scale_set(struct appdata *ad)
+static bool __mp_main_service_extra_data_cb(service_h service, const char *key, void *user_data)
 {
-       Evas_Coord w, h;
-       evas_object_geometry_get(ad->win_main, NULL, NULL, &w, &h);
+       MP_CHECK_FALSE(service);
+       char * value = NULL;
+       service_get_extra_data(service, key, &value);
+       DEBUG_TRACE("key: %s, value: %s", key, value);
+       IF_FREE(value);
 
-       if (w < h)
-       {
-               ad->scale = (double)w / 480;
-       }
-       else
-       {
-               ad->scale = (double)h / 480;
-       }
-
-       DEBUG_TRACE("scale factor: %f", ad->scale);
+       return true;
 }
 
 static void
-mp_main_parse_bundle(struct appdata *ad, bundle *b, char **request_title, char **path, int *lunching_by_menu_icon)
+_mp_main_parse_service(struct appdata *ad, service_h service, char **request_title, char **path, int *lunching_by_menu_icon)
 {
+       MP_CHECK(service);
 
+       service_foreach_extra_data(service, __mp_main_service_extra_data_cb, NULL);
 
-       if (b)
+#ifdef MP_SOUND_PLAYER
+       if(mp_util_get_uri_from_app_svc(service, ad, path))
        {
-               const char *mime_type = NULL;
-               mime_type = (char *)bundle_get_val(b, AUL_K_MIME_TYPE);
-               if (mime_type)
+               DEBUG_TRACE("uri: %s", *path);
+       }
+       else
+               ERROR_TRACE("No uri...");
+#else
+       char *value = NULL;
+       char *uri = NULL;
+
+       service_get_extra_data(service, "shortcut", &uri);
+       if (uri)
+       {
+               mp_debug("uri = %s", uri);
+               *lunching_by_menu_icon = 1;
+               *path = uri;
+       }
+       else
+       {
+               if (!service_get_extra_data(service, MP_PLAY_RECENT, &value))
                {
-                       if (!strcmp(mime_type, "music-player.uri"))
-                       {
-                               *path = g_strdup(bundle_get_val(b, AUL_K_MIME_CONTENT));
-                               *lunching_by_menu_icon = 1;
-                               DEBUG_TRACE("bundle: mime_type[%s], contents[%s]\n", mime_type, *path);
-                       }
-                       else
-                       {
-                               *path = g_strdup(bundle_get_val(b, AUL_K_MIME_CONTENT));
-                       }
+                       ad->launch_type = MP_LAUNCH_PLAY_RECENT;
+                       ad->loadtype = LOAD_VOICE_UI;
+                       IF_FREE(value);
                }
-               else if(mp_util_get_uri_from_app_svc(b, ad, path))
+               else if (!service_get_extra_data(service, MP_PLAY_PLAYLIST, &value))
                {
-                       DEBUG_TRACE("launching by APP SVC. path: %s", *path);
+                       *request_title = value;
+                       ad->launch_type = MP_LAUNCH_PLAY_PLAYLIST;
+                       ad->loadtype = LOAD_VOICE_UI;
                }
-               else
+               else if (!service_get_extra_data(service, MP_PLAY_ARTIST, &value))
                {
-                       *path = g_strdup(bundle_get_val(b, MP_B_PATH));
-                       if (!*path)
-                       {
-                               if (bundle_del(b, MP_PLAY_RECENT) == 0)
-                               {
-                                       ad->launch_type = MP_LAUNCH_PLAY_RECENT;
-                                       ad->loadtype = LOAD_PLAY;
-                               }
-                               else if (bundle_get_val(b, MP_PLAY_PLAYLIST))
-                               {
-                                       *request_title = (char *)bundle_get_val(b, MP_PLAY_PLAYLIST);
-                                       ad->launch_type = MP_LAUNCH_PLAY_PLAYLIST;
-                                       ad->loadtype = LOAD_PLAY;
-                               }
-                               else if (bundle_get_val(b, MP_PLAY_ARTIST))
-                               {
-                                       *request_title = (char *)bundle_get_val(b, MP_PLAY_ARTIST);
-                                       ad->launch_type = MP_LAUNCH_PLAY_GROUP;
-                                       ad->loadtype = LOAD_PLAY;
-                                       ad->track_type = AUDIO_SVC_TRACK_BY_ARTIST;
-                                       ad->group_type = AUDIO_SVC_GROUP_BY_ARTIST;
-                               }
-                               else if (bundle_get_val(b, MP_PLAY_ALBUM))
-                               {
-                                       *request_title = (char *)bundle_get_val(b, MP_PLAY_ALBUM);
-                                       ad->launch_type = MP_LAUNCH_PLAY_GROUP;
-                                       ad->loadtype = LOAD_PLAY;
-                                       ad->track_type = AUDIO_SVC_TRACK_BY_ALBUM;
-                                       ad->group_type = AUDIO_SVC_GROUP_BY_ALBUM;
-                               }
-                               else if (bundle_get_val(b, MP_PLAY_GENRE))
-                               {
-                                       *request_title = (char *)bundle_get_val(b, MP_PLAY_GENRE);
-                                       ad->launch_type = MP_LAUNCH_PLAY_GROUP;
-                                       ad->loadtype = LOAD_PLAY;
-                                       ad->track_type = AUDIO_SVC_TRACK_BY_GENRE;
-                                       ad->group_type = AUDIO_SVC_GROUP_BY_GENRE;
-                               }
-                               else if (bundle_get_val(b, MP_PLAY_SOMETHING))
-                               {
-                                       *request_title = (char *)bundle_get_val(b, MP_PLAY_SOMETHING);
-                                       ad->launch_type = MP_LAUNCH_PLAY_SOMETHING;
-                                       ad->loadtype = LOAD_PLAY;
-                                       ad->track_type = AUDIO_SVC_TRACK_ALL;
-                               }
-
-                       }
+                       *request_title = value;
+                       ad->launch_type = MP_LAUNCH_PLAY_GROUP;
+                       ad->loadtype = LOAD_VOICE_UI;
+                       ad->track_type = MP_TRACK_BY_ARTIST;
+                       ad->group_type = MP_GROUP_BY_ARTIST;
                }
-               if(*path)
-                       DEBUG_TRACE("Path is %s", *path);
-
-               if(bundle_get_val(b, MP_MM_KEY))
+               else if (!service_get_extra_data(service, MP_PLAY_ALBUM, &value))
+               {
+                       *request_title = value;
+                       ad->launch_type = MP_LAUNCH_PLAY_GROUP;
+                       ad->loadtype = LOAD_VOICE_UI;
+                       ad->track_type = MP_TRACK_BY_ALBUM;
+                       ad->group_type = MP_GROUP_BY_ALBUM;
+               }
+               else if (!service_get_extra_data(service, MP_PLAY_GENRE, &value))
+               {
+                       *request_title = value;
+                       ad->launch_type = MP_LAUNCH_PLAY_GROUP;
+                       ad->loadtype = LOAD_VOICE_UI;
+                       ad->track_type = MP_TRACK_BY_GENRE;
+                       ad->group_type = MP_GROUP_BY_GENRE;
+               }
+               else if (!service_get_extra_data(service, MP_PLAY_FOLDER, &value))
+               {
+                       *request_title = value;
+                       ad->launch_type = MP_LAUNCH_PLAY_GROUP;
+                       ad->loadtype = LOAD_VOICE_UI;
+                       ad->track_type = MP_TRACK_BY_FOLDER;
+                       ad->group_type = MP_GROUP_BY_FOLDER;
+               }
+               else if (!service_get_extra_data(service, MP_PLAY_SOMETHING, &value))
+               {
+                       *request_title = value;
+                       ad->launch_type = MP_LAUNCH_PLAY_SOMETHING;
+                       ad->loadtype = LOAD_VOICE_UI;
+                       ad->track_type = MP_TRACK_ALL;
+               }
+               else if(!service_get_extra_data(service, MP_MM_KEY, &value))
                {
                        DEBUG_TRACE("mm key event, ad->player_state : %d", ad->player_state);
+                       ad->prohibit_activate_win = true;
                        if(ad->player_state == PLAY_STATE_PAUSED)
                        {
+                               ad->launch_type = MP_LAUNCH_DEFAULT;
+                               ad->loadtype = LOAD_DEFAULT;
                                mp_play_control_play_cb(ad, NULL, SIGNAL_PLAY, NULL);
-                               ad->loadtype = LOAD_MM_KEY;
                        }
                        else
                        {
                                ad->launch_type = MP_LAUNCH_PLAY_RECENT;
-                               ad->loadtype = LOAD_PLAY;
+                               ad->loadtype = LOAD_VOICE_UI;
                        }
+                       IF_FREE(value);
                }
        }
 
+#endif
+}
+
+static void
+_mp_main_win_profile_changed_cb(void *data, Evas_Object *obj, void *event)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+       MP_CHECK(ad->base_layout_main);
+
+       const char *profile = elm_config_profile_get();
+       mp_debug("profile = %s", profile);
+       if (!g_strcmp0(profile, "desktop"))
+               elm_layout_theme_set(ad->base_layout_main, "layout", "application", "noindicator");
+       else
+               elm_layout_theme_set(ad->base_layout_main, "layout", "application", "default");
+       evas_object_size_hint_weight_set(ad->base_layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(ad->base_layout_main);
+}
+
+static void
+_mp_atexit_cb(void)
+{
+       ERROR_TRACE("%%%%%%%%%%%%%%%%%%%%%");
+       ERROR_TRACE("#exit() invoked. music-player is exiting");
+       ERROR_TRACE("%%%%%%%%%%%%%%%%%%%%%");
 }
 
 /**< Called before main loop */
-static int
+static bool
 mp_create(void *data)
 {
        struct appdata *ad = data;
-       int ret = 0;
 
-       MP_CHECK_VAL(ad, -1);
+       elm_config_preferred_engine_set("opengl_x11");
 
+       atexit(_mp_atexit_cb);
 
-       ret = appcore_set_i18n(PACKAGE, LOCALEDIR);
-       mp_retv_if(ret, -1);
+       MP_CHECK_VAL(ad, EINA_FALSE);
 
-       appcore_set_event_callback(APPCORE_EVENT_LOW_BATTERY, _mp_main_low_battery_cb, ad);
+       MP_TA_ACUM_ITEM_END("main_to_create", 0);
+       MP_TA_ACUM_ITEM_BEGIN("  mp_create", 0);
 
+       MP_TA_ACUM_ITEM_BEGIN("    elm_theme_extension_add", 0);
        /* do extension add before add elm object.*/
        elm_theme_extension_add(NULL, THEME_NAME);
+       MP_TA_ACUM_ITEM_END("    elm_theme_extension_add", 0);
 
+       MP_TA_ACUM_ITEM_BEGIN("    create_window_time", 0);
        ad->win_main = mp_create_win(PACKAGE);
+       mp_retv_if(ad->win_main == NULL, EINA_FALSE);
        evas_event_callback_add(evas_object_evas_get(ad->win_main), EVAS_CALLBACK_RENDER_FLUSH_POST,
                                _mp_evas_flush_post, ad);
-
-       mp_retv_if(ad->win_main == NULL, -1);
+       evas_object_smart_callback_add(ad->win_main, "profile,changed", _mp_main_win_profile_changed_cb, ad);
 
        ad->xwin = elm_win_xwindow_get(ad->win_main);
+       MP_TA_ACUM_ITEM_END("    create_window_time", 0);
 
-       mp_widget_create_bgimg(ad->win_main);
+       MP_TA_ACUM_ITEM_BEGIN("    create_bg_img", 0);
+       ad->bgimage = mp_widget_create_bgimg(ad->win_main);
        ad->evas = evas_object_evas_get(ad->win_main);
+       MP_TA_ACUM_ITEM_END("    create_bg_img", 0);
 
+       MP_TA_ACUM_ITEM_BEGIN("    mp_player_mgr_session_init", 0);
+       /*initialize session type */
        if (!mp_player_mgr_session_init())
        {
                ERROR_TRACE("Error when set session");
-               return -1;
+               return EINA_FALSE;
        }
+       MP_TA_ACUM_ITEM_END("    mp_player_mgr_session_init", 0);
 
+       MP_TA_ACUM_ITEM_BEGIN("    mp_setting_init()", 0);
        mp_setting_init(ad);
+       MP_TA_ACUM_ITEM_END("    mp_setting_init()", 0);
 
+       MP_TA_ACUM_ITEM_BEGIN("   music_init_time", 0);
        if (!_mp_main_init(ad))
        {
                ERROR_TRACE("Fail when init music");
-               return -1;
+               return EINA_FALSE;
        }
+       MP_TA_ACUM_ITEM_END("   music_init_time", 0);
 
-       _mp_main_scale_set(ad);
-
+       MP_TA_ACUM_ITEM_BEGIN("   mp_http_mgr_create", 0);
        mp_http_mgr_create(ad);
+       MP_TA_ACUM_ITEM_END("   mp_http_mgr_create", 0);
 
        ad->app_init_idler = ecore_idler_add(_mp_main_app_init_idler_cb, ad);
 
-       return 0;
+       MP_TA_ACUM_ITEM_BEGIN("   mp_language_mgr_create", 0);
+       mp_language_mgr_create();
+       MP_TA_ACUM_ITEM_END("   mp_language_mgr_create", 0);
+
+       MP_TA_ACUM_ITEM_END("  mp_create", 0);
+       MP_TA_ACUM_ITEM_BEGIN("create_to_reset", 0);
+       return EINA_TRUE;
 }
 
 /**< Called after main loop */
-static int
+static void
 mp_terminate(void *data)
 {
        struct appdata *ad = data;
        DEBUG_TRACE_FUNC();
-       MP_CHECK_VAL(ad, 0);
+       MP_CHECK(ad);
 
+       mp_language_mgr_destroy();
+
+       mp_ecore_idler_del(ad->mss_startup_idler);
        mp_ecore_idler_del(ad->playing_err_idler);
        mp_ecore_idler_del(ad->bt_pause_idler);
        mp_ecore_idler_del(ad->app_init_idler);
        mp_ecore_timer_del(ad->longpress_timer);
-       mp_ecore_timer_del(ad->live_pos_timer);
        mp_util_stop_vibration(ad);
        mp_ecore_timer_del(ad->vib_timer);
 
-       mp_util_ungrab_mm_keys(ad);
+       mp_app_ungrab_mm_keys();
 
        if (ad->key_down)
                ecore_event_handler_del(ad->key_down);
+       if (ad->mouse_button_down)
+               ecore_event_handler_del(ad->mouse_button_down);
        if (ad->visibility_change) {
                ecore_event_handler_del(ad->visibility_change);
                ad->visibility_change = NULL;
@@ -438,7 +638,9 @@ mp_terminate(void *data)
                mp_player_mgr_destroy(ad);
        }
 
-       vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_OFF);
+       if (!mp_util_is_other_player_playing())
+               vconf_set_int(VCONFKEY_MUSIC_STATE, VCONFKEY_MUSIC_OFF);
+       mp_minicontroller_destroy(ad);
        mp_player_mgr_vol_type_unset();
        if (!mp_player_mgr_session_finish())
                ERROR_TRACE("Error when set session");
@@ -446,59 +648,110 @@ mp_terminate(void *data)
 
        mp_http_mgr_destory(ad);
 
-       if (ad->media_svc_handle) {
-               media_svc_disconnect(ad->media_svc_handle);
-       }
+       mp_media_info_disconnect();
 
        mp_setting_deinit(ad);
        if (!mp_app_noti_ignore())
                ERROR_TRACE("Error when ignore noti");
 
-       return 0;
+#ifdef MP_SOUND_PLAYER
+       sp_view_mgr_destroy(ad->view_mgr);
+       ad->view_mgr = NULL;
+#endif
+
+       MP_TA_ACUM_ITEM_SHOW_RESULT_TO(MP_TA_SHOW_FILE);
+       MP_TA_RELEASE();
+
+       return;
 }
 
 /**< Called when every window goes back */
-static int
+static void
 mp_pause(void *data)
 {
+//      struct appdata *ad = data;
+
        DEBUG_TRACE_FUNC();
-       return 0;
+       return;
 }
 
 /**< Called when any window comes on top */
-static int
+static void
 mp_resume(void *data)
 {
        DEBUG_TRACE_FUNC();
-       return 0;
+       return;
 }
 
 /**< Called at the first idler and relaunched by AUL*/
-static int
-mp_reset(bundle * b, void *data)
+static void
+mp_service(service_h service, void *data)
 {
        startfunc;
+
        struct appdata *ad = data;
-       mp_retv_if(ad == NULL, -1);
+       mp_ret_if(ad == NULL);
+
+       mp_retm_if(ad->app_is_foreground, "relaunch not allowed.. ");
+       if (!ad->app_is_foreground)
+               ad->app_is_foreground = true;
 
-       mp_retvm_if(ad->prohibit_aul_relaunch, 0, "relaunch not allowed.. ");
-       if (!ad->prohibit_aul_relaunch)
-               ad->prohibit_aul_relaunch = true;
+       MP_TA_ACUM_ITEM_END("create_to_reset", 0);
+       MP_TA_ACUM_ITEM_BEGIN("  mp_service", 0);
 
+       MP_TA_ACUM_ITEM_BEGIN("    _mp_main_is_launching_available", 0);
        if (!_mp_main_is_launching_available(ad))
-               return -1;
+               return;
+       MP_TA_ACUM_ITEM_END("    _mp_main_is_launching_available", 0);
 
        char *request_title = NULL;
        int lunching_by_menu_icon = 0;
-       char *path;
+       char *path = NULL;
+
+       MP_TA_ACUM_ITEM_BEGIN("    parse_bundle", 0);
+       _mp_main_parse_service(ad, service, &request_title, &path, &lunching_by_menu_icon);
+       MP_TA_ACUM_ITEM_END("    parse_bundle", 0);
+
+#ifdef MP_SOUND_PLAYER
+       if (path) {
+               _mp_main_set_current_playing_item(ad, path);
+               free(path);
+       }
+       else {
+               mp_error("no path");
+               _mp_main_exit_cb(ad, NULL, NULL);
+
+               return;
+       }
+
+       IF_FREE(ad->latest_playing_key_id);
+       if (!ad->base_layout_main) {
+               ad->base_layout_main = mp_widget_create_layout_main(ad->win_main);
 
-       mp_main_parse_bundle(ad, b, &request_title, &path, &lunching_by_menu_icon);
+               ad->loadtype = LOAD_TRACK;
+               /* create base navi bar */
+               Evas_Object *navibar = mp_widget_navigation_new(ad->base_layout_main, ad);
+               elm_object_part_content_set(ad->base_layout_main, "elm.swallow.content", navibar);
+
+               ad->view_mgr = sp_view_mgr_create(navibar);
+       }
+
+       mp_play_destory(ad);
+       mp_play_view_load(ad);
+       ad->paused_by_user = FALSE;
+       mp_play_new_file(data, TRUE);
+#else
 
        if (path)
        {
-               _mp_main_set_current_playing_item(ad, path);
-               IF_FREE(ad->request_playing_path);
-               ad->request_playing_path = g_strdup(path);
+               if (lunching_by_menu_icon)
+                       _mp_main_create_view_by_item(ad, path);
+               else
+               {
+                       _mp_main_set_current_playing_item(ad, path);
+                       IF_FREE(ad->request_playing_path);
+                       ad->request_playing_path = g_strdup(path);
+               }
                free(path);
        }
 
@@ -506,8 +759,15 @@ mp_reset(bundle * b, void *data)
 
        if (ad->launch_type != MP_LAUNCH_DEFAULT)
        {
+               //destory popup
                mp_popup_destroy(ad);
+
+               //destroy info view..
                mp_view_manager_pop_info_view(ad);
+
+               //destroy ug.
+               mp_ug_destory_all(ad);
+
        }
 
        if (ad->launch_type != MP_LAUNCH_DEFAULT && ad->loadtype == LOAD_TRACK)
@@ -523,8 +783,7 @@ mp_reset(bundle * b, void *data)
                ad->paused_by_user = FALSE;
 
        }
-       else if (ad->launch_type >= MP_LAUNCH_PLAY_RECENT
-               && ad->launch_type <= MP_LAUNCH_PLAY_SOMETHING)
+       else if (ad->launch_type >= MP_LAUNCH_PLAY_RECENT && ad->launch_type <= MP_LAUNCH_PLAY_SOMETHING)
        {
                IF_FREE(ad->latest_playing_key_id);
                ad->load_play_view = true;
@@ -532,47 +791,101 @@ mp_reset(bundle * b, void *data)
 
                ad->paused_by_user = FALSE;
 
-               if (!mp_play_view_load_by_play(ad, request_title))
-                       return -1;
+               if (!mp_play_view_load_by_voice_ui(ad, request_title))
+                       return;
 
        }
        else if (ad->launch_type == MP_LAUNCH_DEFAULT)
        {
+               MP_TA_ACUM_ITEM_BEGIN("    load_library_view", 0);
                if (ad->base_layout_main == NULL)
                        mp_library_create(ad);
+               MP_TA_ACUM_ITEM_END("    load_library_view", 0);
        }
+#endif
 
-
-       enum appcore_rm mode;
-       appcore_get_rotation_state(&mode);
-
+       MP_TA_ACUM_ITEM_BEGIN("    evas_object_show()-win", 0);
        evas_object_show(ad->win_main);
+       MP_TA_ACUM_ITEM_END("    evas_object_show()-win", 0);
 
-       if(ad->loadtype != LOAD_MM_KEY)
+       if(!ad->prohibit_activate_win)
+       {
+               DEBUG_TRACE("activate window");
+               MP_TA_ACUM_ITEM_BEGIN("    elm_win_activate()", 0);
                elm_win_activate(ad->win_main);
+               MP_TA_ACUM_ITEM_END("    elm_win_activate()", 0);
+       }
 
+       MP_TA_ACUM_ITEM_BEGIN("    mp_player_mgr_vol_type_set", 0);
        mp_player_mgr_vol_type_set();
+       MP_TA_ACUM_ITEM_END("    mp_player_mgr_vol_type_set", 0);
+
+       MP_TA_ACUM_ITEM_END("MP-LAUNCH_TIME", 0);
+       MP_TA_ACUM_ITEM_END("  mp_service", 0);
 
        endfunc;
 
-       return 0;
+       return;
+}
+
+static void
+mp_low_battery(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       if (mp_check_battery_available())
+       {
+               mp_app_exit(ad);
+       }
+       return;
+}
+
+void
+mp_device_orientation_cb(app_device_orientation_e orientation, void *user_data)
+{
+
+}
+
+static void
+__mp_language_changed_cb(void *user_data)
+{
+       DEBUG_TRACE("");
+       struct appdata *ad = user_data;
+       mp_popup_destroy(ad);
+#ifndef MP_SOUND_PLAYER
+       mp_view_manager_pop_info_view(ad);
+#endif
+       mp_ug_destory_all(ad);
+       mp_language_mgr_update();
 }
 
 int
 main(int argc, char *argv[])
 {
        struct appdata ad;
-       struct appcore_ops ops = {
-               .create = mp_create,
-               .terminate = mp_terminate,
-               .pause = mp_pause,
-               .resume = mp_resume,
-               .reset = mp_reset,
-       };
+       app_event_callback_s event_callbacks;
+
+       event_callbacks.create = mp_create;
+       event_callbacks.terminate = mp_terminate;
+       event_callbacks.pause = mp_pause;
+       event_callbacks.resume = mp_resume;
+       event_callbacks.service = mp_service;
+       event_callbacks.low_memory = NULL;
+       event_callbacks.low_battery = mp_low_battery;
+       event_callbacks.device_orientation = mp_device_orientation_cb;
+       event_callbacks.language_changed = __mp_language_changed_cb;
+       event_callbacks.region_format_changed = NULL;
+
        DEBUG_TRACE(" starting music main");
 
+       MP_TA_INIT();
+       MP_TA_ACUM_ITEM_BEGIN("MP-LAUNCH_TIME", 0);
+       MP_TA_ACUM_ITEM_BEGIN(" main", 0);
        memset(&ad, 0x0, sizeof(struct appdata));
-       ops.data = &ad;
 
-       return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
+       MP_TA_ACUM_ITEM_END(" main", 0);
+       MP_TA_ACUM_ITEM_BEGIN("main_to_create", 0);
+
+       return app_efl_main(&argc, &argv, &event_callbacks, &ad);
 }
index 7fc754e..e1a9bfd 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
 
 #include "music.h"
 #include "mp-view-layout.h"
-\rEvas_Object * mp_edit_view_create(view_data_t * view_data);
+       \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);
 
index 2138e53..320fbc2 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-#ifndef __MP_GROUP_VIEW_H__
-#define __MP_GROUP_VIEW_H__
-
 #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);
 
-Evas_Object * mp_group_view_create(struct appdata *ad, mp_view_type_t type);
-void mp_group_view_destroy(Evas_Object * group_view);
-void mp_group_view_refresh(Evas_Object * group_view);
-Evas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part);
-char *mp_group_view_album_list_label_get(void *data, Evas_Object * obj, const char *part);
-void mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_info);
-char *mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part);
-Evas_Object * mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part);
-bool mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, audio_svc_group_type_e type);
-
-#endif //__MP_GROUP_VIEW_H__
index b0d64e8..619f1fc 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
 #include "mp-view-manager.h"
 #include "mp-setting-ctrl.h"
 
-#define     STR_MP_ALL_TRACKS          N_("IDS_MUSIC_HEADER_SONGS")
-#define     STR_MP_PLAYLISTS                   N_("IDS_MUSIC_BODY_PLAYLISTS")
-#define     STR_MP_ALBUMS                      N_("IDS_MUSIC_TAB4_ALBUMS")
-#define     STR_MP_ARTISTS                     N_("IDS_MUSIC_TAB4_ARTISTS")
-#define     STR_MP_GENRES                      N_("IDS_MUSIC_TAB4_GENRES")
-#define     STR_MP_COMPOSERS           N_("IDS_MUSIC_TAB4_COMPOSERS")
-#define     STR_MP_CONDUCTORS          N_("IDS_MUSIC_TAB4_CONDUCTORS")
-#define     STR_MP_YEARS                               N_("IDS_MUSIC_TAB4_YEARS")
-#define     STR_MP_PODCASTS                    N_("IDS_MUSIC_TAB4_PODCASTS")
-#define     STR_MP_MOST_PLAYED         N_("IDS_MUSIC_BODY_MOST_PLAYED")
-#define     STR_MP_RECENTLY_ADDED      N_("IDS_MUSIC_BODY_RECENTLY_ADDED")
-#define     STR_MP_RECENTLY_PLAYED     N_("IDS_MUSIC_BODY_RECENTLY_PLAYED")
-#define     STR_MP_QUICK_LIST                  N_("IDS_MUSIC_BODY_FAVOURITES")
-#define     STR_MP_ADD_TO_PLAYLIST  N_("IDS_MUSIC_BODY_ADD_TO_PLAYLIST")
+#define     STR_MP_ALL_TRACKS          ("IDS_MUSIC_TAB4_ALL")
+#define     STR_MP_PLAYLISTS                   ("IDS_MUSIC_BODY_PLAYLISTS")
+#define     STR_MP_ALBUMS                      ("IDS_MUSIC_TAB4_ALBUMS")
+#define     STR_MP_ARTISTS                     ("IDS_MUSIC_TAB4_ARTISTS")
+#define     STR_MP_GENRES                      ("IDS_MUSIC_TAB4_GENRES")
+#define     STR_MP_COMPOSERS           ("IDS_MUSIC_TAB4_COMPOSERS")
+#define     STR_MP_CONDUCTORS          ("IDS_MUSIC_TAB4_CONDUCTORS")
+#define     STR_MP_YEARS                               ("IDS_MUSIC_TAB4_YEARS")
+#define     STR_MP_PODCASTS                    ("IDS_MUSIC_TAB4_PODCASTS")
+#define     STR_MP_FOLDERS                     ("IDS_COM_BODY_FOLDERS")
+#define     STR_MP_MOST_PLAYED         ("IDS_MUSIC_BODY_MOST_PLAYED")
+#define     STR_MP_RECENTLY_ADDED      ("IDS_MUSIC_BODY_RECENTLY_ADDED")
+#define     STR_MP_RECENTLY_PLAYED     ("IDS_MUSIC_BODY_RECENTLY_PLAYED")
+#define     STR_MP_QUICK_LIST                  ("IDS_MUSIC_BODY_FAVOURITES")
+#define     STR_MP_ADD_TO_PLAYLIST  ("IDS_MUSIC_BODY_ADD_TO_PLAYLIST")
+#define                STR_MP_ALLSHARE_TAB             ("Nearby device")
 
 void mp_library_create(struct appdata *ad);
 void mp_library_update_view(struct appdata *ad);
-void mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info);
 void mp_library_now_playing_hide(struct appdata *ad);
 void mp_library_now_playing_set(struct appdata *ad);
 bool mp_library_load(struct appdata *ad);
 void mp_view_manager_clear(struct appdata *ad);
 
-void mp_library_controlbar_visible_set(struct appdata *ad, bool visible);
+void mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info);
 
 #endif //__MP_LIBRARY_H_
index 3150885..0df3915 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #ifndef __MP_PLAY_VIEW_H_
 #define __MP_PLAY_VIEW_H_
 
 #include "music.h"
+#ifndef MP_SOUND_PLAYER
 #include "mp-view-layout.h"
+#endif
 
+bool mp_play_view_set_screen_mode(void *data, int mode);
 bool mp_play_view_stop_transit(void *data);
 
 bool mp_play_view_pop(void *data);
 bool mp_play_view_load(void *data);
 
-bool mp_play_view_load_by_path(struct appdata *ad, char *path);
 bool mp_play_view_load_track(void *data);
+#ifdef MP_SOUND_PLAYER
+void mp_play_view_unswallow_info_ug_layout(struct appdata *ad);
+#else
+bool mp_play_view_load_by_path(struct appdata *ad, char *path);
 bool mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effect_value);
-bool mp_play_view_refresh(void *data);
+#endif
+bool mp_play_view_refresh(void *data); // use for refresh playing view
 
-bool mp_play_view_create_library(void *data);
+bool mp_play_view_create_library(void *data);  //create base layout
 bool mp_play_view_create(void *data);
 bool mp_play_view_destory(void *data);
 
@@ -45,10 +50,11 @@ void mp_play_view_set_snd_path_sensitivity(void *data);
 void mp_play_view_info_cb(void *data, Evas_Object * obj, void *event_info);
 void mp_play_view_back_clicked_cb(void *data, Evas_Object * obj, void *event_info);
 
-bool mp_play_view_load_by_play(struct appdata *ad, const char *request_title);
+bool mp_play_view_load_by_voice_ui(struct appdata *ad, const char *request_title);
 void mp_play_view_info_back_cb(void *data, Evas_Object * obj, void *event_info);
 void mp_play_view_show_default_info(struct appdata *ad);
 void mp_play_view_update_snd_path(struct appdata *ad);
+void mp_play_view_update_dmr_icon_state(struct appdata *ad);
 bool mp_play_view_set_menu_state(void *data, bool show, bool animation);
 void mp_play_view_set_snd_path_cb(void *data, Evas_Object *obj, void *event_info);
 
index b48b141..09dcba5 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * 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);
index ed961fc..3e184b7 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
index ebdd6f2..9ec1f43 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #include "mp-edit-view.h"
 #include "mp-view-layout.h"
 #include "mp-library.h"
 #include "mp-menu.h"
 #include "mp-play-list.h"
 #include "mp-playlist-view.h"
-#include "mp-popup.h"
-
-static void
-_mp_edit_view_destroy_view(view_data_t * view_data)
-{
-       startfunc;
-       MP_CHECK(view_data);
-       MP_CHECK_VIEW_DATA(view_data);
-       mp_view_manager_pop_view_content(view_data, true, TRUE);
-       if (view_data->ad->notify)
-               evas_object_del(view_data->ad->notify);
-       endfunc;
-}
 
 void
 mp_edit_view_back_button_cb(void *data, Evas_Object * obj, void *event_info)
@@ -51,8 +36,7 @@ mp_edit_view_back_button_cb(void *data, Evas_Object * obj, void *event_info)
 
        evas_object_smart_callback_del(obj, "clicked", mp_edit_view_back_button_cb);
        mp_view_manager_pop_view_content(view_data, FALSE, FALSE);
-       if (view_data->ad->notify)
-               evas_object_del(view_data->ad->notify);
+       mp_evas_object_del(view_data->ad->notify);
 }
 
 static char *
@@ -60,13 +44,34 @@ _mp_edit_view_get_view_title(mp_layout_data_t * layout_data)
 {
        char *title = NULL;
 
-       GET_SYS_STR("IDS_COM_SK_SELECT");
-
+       title = "IDS_COM_BODY_EDIT";
        return title;
 
 }
 
 void
+mp_edit_view_share_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE("");
+
+       mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
+
+       if (layout_data->checked_count <= 0)
+       {
+               mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_NOTHING_SELECTED"));
+               return;
+       }
+
+       mp_genlist_popup_create(layout_data->ad->win_main, MP_POPUP_LIST_SHARE, data, layout_data->ad);
+
+       return;
+}
+
+void
 mp_edit_view_create_new_cancel_cb(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE("");
@@ -87,6 +92,7 @@ void
 mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE_FUNC();
+       mp_playlist_h playlist_handle;
        mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
        MP_CHECK(layout_data);
        MP_CHECK_LAYOUT_DATA(layout_data);
@@ -109,7 +115,13 @@ mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info)
        }
        converted_name = elm_entry_markup_to_utf8(name);
 
-       plst_uid = mp_util_create_playlist(ad, converted_name);
+       if(layout_data->edit_playlist_handle)
+       {
+               mp_media_info_playlist_handle_destroy(layout_data->edit_playlist_handle);
+               layout_data->edit_playlist_handle = NULL;
+       }
+
+       plst_uid = mp_util_create_playlist(ad, converted_name, &playlist_handle);
        IF_FREE(converted_name);
        if (plst_uid < 0)
                return;
@@ -117,6 +129,7 @@ mp_edit_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_info)
        mp_view_manager_pop_view_content(view_data, FALSE, TRUE);
 
        layout_data->edit_playlist_id = plst_uid;
+       layout_data->edit_playlist_handle = playlist_handle;
        mp_edit_view_excute_edit(layout_data, MP_EDIT_ADD_TO_PLAYLIST);
 
        if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
@@ -138,18 +151,16 @@ _mp_edit_view_create_playlist_cb(void *data, Evas_Object * obj, void *event_info
        Evas_Object *create_plst_layout = NULL;
        char *new_playlist_name = NULL;
 
-       new_playlist_name = mp_util_get_new_playlist_name(view_data->ad->media_svc_handle);
+       new_playlist_name = mp_util_get_new_playlist_name();
        create_plst_layout = mp_common_create_editfield_layout(view_data->navibar, view_data->ad, new_playlist_name);
        IF_FREE(new_playlist_name);
        mp_retm_if(create_plst_layout == NULL, "create_plst_layout is NULL");
 
        mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST_BY_EDIT);
-       mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_OPT_ADD_PLAYLIST"), layout_data);
 
        evas_object_show(create_plst_layout);
 
        mp_popup_destroy(layout_data->ad);
-
 }
 
 static void
@@ -166,6 +177,11 @@ _mp_edit_view_add_to_playlist_cb(void *data, Evas_Object * obj, void *event_info
        mp_edit_view_excute_edit(layout_data, MP_EDIT_ADD_TO_PLAYLIST);
 }
 
+static void _mp_edit_view_popup_del_cb(void *data, Evas * e, Evas_Object * eo, void *event_info)
+{
+       mp_media_list_h list = data;
+       mp_media_info_group_list_destroy(list);
+}
 
 void
 mp_edit_view_add_to_plst_cb(void *data, Evas_Object * obj, void *event_info)
@@ -196,40 +212,39 @@ mp_edit_view_add_to_plst_cb(void *data, Evas_Object * obj, void *event_info)
                                     _mp_edit_view_create_playlist_cb, layout_data);
        int i = 0, count = -1, ret = -1;
 
-       ret = audio_svc_count_playlist(layout_data->ad->media_svc_handle, "", "", &count);
-
-       if (ret != AUDIO_SVC_ERROR_NONE)
+       ret = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
+       if (ret != 0)
        {
-               ERROR_TRACE("Error in audio_svc_list_get_count (%d)\n", ret);
-               evas_object_del(popup);
+               ERROR_TRACE("Error in mp_media_info_group_list_count (%d)\n", ret);
                return;
        }
 
        if (count)
        {
-               AudioHandleType *playlists = NULL;
-               ret = audio_svc_playlist_new(&playlists, count);
-               mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to make new playlist");
+               mp_media_list_h list = NULL;
 
-               ret = audio_svc_get_playlist(layout_data->ad->media_svc_handle, "", "", 0, count, playlists);
-               if (ret != AUDIO_SVC_ERROR_NONE)
+               ret = mp_media_info_group_list_create(&list, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count);
+               if (ret != 0)
                {
                        WARN_TRACE("Fail to get playlist");
-                       audio_svc_playlist_free(playlists);
                        return;
                }
                for (i = 0; i < count; i++)
                {
                        char *name = NULL;
-                       int size;
                        int id;
+                       mp_media_info_h item = NULL;
+                       item = mp_media_info_group_list_nth_item(list, i);
 
-                       ret = audio_svc_playlist_get_val(playlists, i, AUDIO_SVC_PLAYLIST_NAME, &name, &size,
-                                                        AUDIO_SVC_PLAYLIST_ID, &id, -1);
-                       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
+                       ret = mp_media_info_group_get_main_info(item, &name);
+                       mp_retm_if(ret != 0, "Fail to get value");
+                       ret = mp_media_info_group_get_playlist_id(item, &id);
+                       mp_retm_if(ret != 0, "Fail to get value");
 
                        mp_genlist_popup_item_append(popup, name, NULL, _mp_edit_view_add_to_playlist_cb, (void *)id);
                }
+
+               evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_edit_view_popup_del_cb, list);
        }
 
        evas_object_show(popup);
@@ -241,14 +256,13 @@ _mp_edit_view_edit_idler_cb(void *data)
        mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
        struct appdata *ad = NULL;
        mp_genlist_item_data_t *item = NULL;
-       AudioHandleType *item_handle = NULL;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       mp_media_info_h item_handle = NULL;
+       int ret = 0;
        int plst_id = -1;
        char *fid = NULL;
        int uid = 0;
        char *file_path;
        char *title;
-       int size;
        bool error_occured = FALSE;
 
        MP_CHECK_FALSE(layout_data);
@@ -262,6 +276,13 @@ _mp_edit_view_edit_idler_cb(void *data)
                WARN_TRACE("CHECK here...");
                goto END;
        }
+
+       if(elm_genlist_item_select_mode_get(layout_data->current_edit_item) == ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
+       {
+               layout_data->current_edit_item = elm_genlist_item_next_get(layout_data->current_edit_item);
+               return EINA_TRUE;
+       }
+
        item = elm_object_item_data_get(layout_data->current_edit_item);
 
        if (!item)
@@ -270,8 +291,8 @@ _mp_edit_view_edit_idler_cb(void *data)
                goto END;
        }
 
-       if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type
-           || AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type)
+       if (MP_TRACK_BY_ALBUM == layout_data->track_type
+           || MP_TRACK_BY_ARTIST == layout_data->track_type)
                layout_data->category = MP_LAYOUT_TRACK_LIST;
 
        if (item->checked)
@@ -284,24 +305,20 @@ _mp_edit_view_edit_idler_cb(void *data)
                                {
                                        layout_data->current_edit_item =
                                                elm_genlist_item_next_get(layout_data->current_edit_item);
-                                       item_handle = (AudioHandleType *) (item->handle);
+                                       item_handle = (item->handle);
                                        if (!item_handle)
                                        {
                                                WARN_TRACE("CHECK here...");
                                                goto END;
                                        }
 
-                                       if (item_handle)
-                                       {
-                                               ret = audio_svc_playlist_get_val(item_handle, 0, AUDIO_SVC_PLAYLIST_ID,
-                                                                                &plst_id, -1);
-                                               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+                                       ret = mp_media_info_group_get_playlist_id(item_handle, &plst_id);
+                                       MP_CHECK_EXCEP(ret == 0);
 
-                                               ret = audio_svc_delete_playlist(ad->media_svc_handle, plst_id);
-                                               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+                                       ret = mp_media_info_playlist_delete_from_db(plst_id);
+                                       MP_CHECK_EXCEP(ret == 0);
 
-                                               DEBUG_TRACE("playlist (%d) deleted", plst_id);
-                                       }
+                                       DEBUG_TRACE("playlist (%d) deleted", plst_id);
                                        elm_object_item_del(item->it);
                                        layout_data->is_item_del = true;
                                        layout_data->item_count--;
@@ -313,75 +330,44 @@ _mp_edit_view_edit_idler_cb(void *data)
                                {
                                        layout_data->current_edit_item =
                                                elm_genlist_item_next_get(layout_data->current_edit_item);
-                                       item_handle = (AudioHandleType *) (item->handle);
+                                       item_handle =  (item->handle);
                                        if (item_handle)
                                        {
                                                if (layout_data->playlist_id >= 0)
                                                {
-                                                       ret = audio_svc_playlist_item_get_val(item_handle, 0,
-                                                                                             AUDIO_SVC_PLAYLIST_ITEM_UID,
-                                                                                             &uid, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       ret = audio_svc_remove_item_from_playlist_by_uid(ad->media_svc_handle,
-                                                                                                       layout_data->playlist_id,
-                                                                                                        uid);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+                                                       int member_id = 0;
+                                                       ret = mp_media_info_get_playlist_member_id(item_handle, &member_id);
+                                                       MP_CHECK_EXCEP(ret == 0);
+                                                       ret = mp_media_info_playlist_remove_media(layout_data->playlist_handle, member_id);
+                                                       MP_CHECK_EXCEP(ret == 0);
                                                        DEBUG_TRACE("playlist id = %d, id = %d", plst_id, uid);
-
-                                                       if (ad->playing_list) {
-                                                               if (ad->playing_list->playlist_id == layout_data->playlist_id) {
-                                                                       mp_debug("delete track from now playing list");
-                                                                       fid = mp_util_get_fid_by_handle(layout_data, item_handle);
-                                                                       mp_play_list_delete_item(ad->playing_list, fid);
-                                                               }
-                                                       }
                                                }
-                                               else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_ADDED_TIME)
+                                               else if (layout_data->track_type == MP_TRACK_BY_ADDED_TIME)
+                                               {
+                                                       ret = mp_media_info_set_added_time(item_handle, 0);
+                                                       MP_CHECK_EXCEP(ret == 0);
+                                               }
+                                               else if (layout_data->track_type == MP_TRACK_BY_PLAYED_TIME)
                                                {
-                                                       ret = audio_svc_list_item_get_val(item_handle, 0,
-                                                                                         AUDIO_SVC_LIST_ITEM_AUDIO_ID,
-                                                                                         &fid, &size, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid,
-                                                                                            AUDIO_SVC_TRACK_DATA_ADDED_TIME,
-                                                                                            0, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       DEBUG_TRACE("playlist id = %d, id = %d", plst_id, fid);
+                                                       ret = mp_media_info_set_played_time(item_handle, 0);
+                                                       MP_CHECK_EXCEP(ret == 0);
                                                }
-                                               else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYED_TIME)
+                                               else if (layout_data->track_type == MP_TRACK_BY_FAVORITE)
                                                {
-                                                       ret = audio_svc_list_item_get_val(item_handle, 0,
-                                                                                         AUDIO_SVC_LIST_ITEM_AUDIO_ID,
-                                                                                         &fid, &size, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid,
-                                                                                            AUDIO_SVC_TRACK_DATA_PLAYED_TIME,
-                                                                                            0, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       DEBUG_TRACE("playlist id = %d, id = %d", plst_id, fid);
+                                                       ret = mp_media_info_set_favorite(item_handle, false);
+                                                       MP_CHECK_EXCEP(ret == 0);
                                                }
-                                               else if (layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYED_COUNT)
+                                               else if (layout_data->track_type == MP_TRACK_BY_PLAYED_COUNT)
                                                {
-                                                       ret = audio_svc_list_item_get_val(item_handle, 0,
-                                                                                         AUDIO_SVC_LIST_ITEM_AUDIO_ID,
-                                                                                         &fid, &size, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       ret = audio_svc_update_item_metadata(ad->media_svc_handle, fid,
-                                                                                            AUDIO_SVC_TRACK_DATA_PLAYED_COUNT,
-                                                                                            0, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       DEBUG_TRACE("playlist id = %d, id = %d", plst_id, fid);
+                                                       ret = mp_media_info_set_played_count(item_handle, 0);
+                                                       MP_CHECK_EXCEP(ret == 0);
                                                }
                                                else
                                                {
-                                                       ret = audio_svc_list_item_get_val(item_handle, 0,
-                                                                                         AUDIO_SVC_LIST_ITEM_AUDIO_ID,
-                                                                                         &fid, &size,
-                                                                                         AUDIO_SVC_LIST_ITEM_PATHNAME,
-                                                                                         &file_path, &size, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       if (mp_util_delete_track(layout_data->ad, fid, file_path, false)
-                                                           != MP_FILE_DELETE_ERR_NONE)
+                                                       ret = mp_media_info_get_media_id(item_handle, &fid);
+                                                       ret = mp_media_info_get_file_path(item_handle, &file_path);
+                                                       MP_CHECK_EXCEP(ret == 0);
+                                                       if (mp_util_delete_track(layout_data->ad, fid, file_path, false) != MP_FILE_DELETE_ERR_NONE)
                                                        {
                                                                DEBUG_TRACE("Fail to delete item, fid: %d, path: %s",
                                                                            fid, file_path);
@@ -392,30 +378,19 @@ _mp_edit_view_edit_idler_cb(void *data)
                                        }
                                        if (!error_occured)
                                        {
-                                               if (AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) {
-                                                       int index = -1;
-                                                       int sub_index = -1;
-                                                       bool ret_val = FALSE;
-                                                       /* get group index and sub index when the status is artist album */
-                                                       ret_val = mp_common_track_get_aa_index(0, layout_data, item->it, FALSE);
-                                                       if (ret_val) {
-                                                               index = layout_data->selected_group_index;
-                                                               sub_index = layout_data->selected_album_sub_index;
-                                                               layout_data->aa_item_count[index]--;
-                                                               if (layout_data->aa_item_count[index] < 1) {
-                                                                       /* delete group title if this album have no item */
-                                                                       elm_object_item_del(layout_data->aa_group[index]);
-                                                               } else {
-                                                                       /* update group title */
-                                                                       elm_genlist_item_item_class_update(layout_data->aa_group[index],
-                                                                                                          layout_data->aa_group_itc);
-                                                               }
+                                               if (MP_TRACK_BY_ARTIST == layout_data->track_type) {
+                                                       if(!elm_genlist_item_parent_get(elm_genlist_item_next_get(item->it))
+                                                               && !elm_genlist_item_parent_get(elm_genlist_item_prev_get(item->it)))
+                                                       {
+                                                               elm_object_item_del(elm_genlist_item_parent_get(item->it));
+                                                       }
+                                                       else
+                                                       {
+                                                               elm_genlist_item_update(elm_genlist_item_parent_get(item->it));
                                                        }
-                                                       DEBUG_TRACE("index=%d, sub_index=%d, ret_val=%d", index, sub_index, ret_val);
-                                               } else if (AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type) {
+                                               } else if (MP_TRACK_BY_ALBUM == layout_data->track_type) {
                                                        /* update group title */
-                                                       elm_genlist_item_item_class_update(layout_data->album_group,
-                                                                                          layout_data->album_group_itc);
+                                                       elm_genlist_item_update(layout_data->album_group);
                                                }
                                                elm_object_item_del(item->it);
                                                layout_data->is_item_del = true;
@@ -424,97 +399,6 @@ _mp_edit_view_edit_idler_cb(void *data)
                                        }
                                        break;
                                }
-                       case MP_LAYOUT_GROUP_LIST:
-                               {
-                                       item_handle = (AudioHandleType *) (item->handle);
-                                       if (item_handle)
-                                       {
-                                               audio_svc_track_type_e item_type = AUDIO_SVC_TRACK_ALL;
-                                               int count = 0;
-                                               char *path = NULL;
-                                               int size = 0;
-
-                                               ret = audio_svc_group_item_get_val(item_handle, 0,
-                                                                                          AUDIO_SVC_GROUP_ITEM_MAIN_INFO,
-                                                                                          &title, &size, -1);
-                                               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                               MP_CHECK_EXCEP(title);
-
-                                               item_type = mp_menu_get_track_type_by_group(layout_data->group_type);
-
-                                               if (!layout_data->group_track_handle)
-                                               {
-                                                       ret = audio_svc_count_list_item(ad->media_svc_handle, item_type, title, "", "", "",
-                                                                                       &count);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                                       MP_CHECK_EXCEP(count > 0);
-                                                       mp_debug("track_count: %d", count);
-
-                                                       ret = audio_svc_list_item_new(&layout_data->group_track_handle,
-                                                                                     count);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-
-                                                       ret = audio_svc_get_list_item(ad->media_svc_handle, item_type, title, NULL, NULL,
-                                                                                     NULL, 0, count,
-                                                                                     layout_data->group_track_handle);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-
-                                                       layout_data->edit_track_index = count - 1;
-                                                       layout_data->group_item_delete_error = false;
-                                               }
-                                               ret = audio_svc_list_item_get_val(layout_data->group_track_handle,
-                                                                                 layout_data->edit_track_index,
-                                                                                 AUDIO_SVC_LIST_ITEM_PATHNAME, &path,
-                                                                                 &size, AUDIO_SVC_LIST_ITEM_AUDIO_ID,
-                                                                                 &fid, &size, -1);
-                                               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                               MP_CHECK_EXCEP(path);
-
-                                               music_list_item *cur_item =
-                                                       mp_play_list_get_current_item(layout_data->view_data->ad->
-                                                                                     playing_list);
-                                               if ((cur_item != NULL) && !g_strcmp0(cur_item->key_id, fid))
-                                               {
-                                                       DEBUG_TRACE("Playing file is not deleted., fid: %s, path: %s",
-                                                                   fid, path);
-                                                       layout_data->error_count++;
-                                                       layout_data->group_item_delete_error = TRUE;
-                                               }
-                                               else
-                                               {
-                                                       if (mp_util_delete_track(layout_data->ad, 0, path, FALSE) !=
-                                                           MP_FILE_DELETE_ERR_NONE)
-                                                       {
-                                                               DEBUG_TRACE("Fail to delete item, fid: %s, path: %s",
-                                                                           fid, path);
-                                                               layout_data->error_count++;
-                                                               layout_data->group_item_delete_error = TRUE;
-                                                       }
-                                               }
-                                               DEBUG_TRACE("layout_data->edit_track_index: %d",
-                                                           layout_data->edit_track_index);
-                                               if (layout_data->edit_track_index <= 0)
-                                               {
-                                                       DEBUG_TRACE("all tracks in %s deleted.", title);
-                                                       layout_data->current_edit_item =
-                                                               elm_genlist_item_next_get(layout_data->
-                                                                                         current_edit_item);
-                                                       audio_svc_list_item_free(layout_data->group_track_handle);
-                                                       layout_data->group_track_handle = NULL;
-                                                       if (!layout_data->group_item_delete_error)
-                                                       {
-                                                               elm_object_item_del(item->it);
-                                                               layout_data->is_item_del = true;
-                                                               layout_data->item_count--;
-                                                               layout_data->checked_count--;
-                                                       }
-                                               }
-                                               else
-                                                       layout_data->edit_track_index--;
-
-                                       }
-                                       break;
-                               }
                        default:
                                WARN_TRACE("unexpected case...");
                                break;
@@ -523,36 +407,30 @@ _mp_edit_view_edit_idler_cb(void *data)
                }
                else if (layout_data->edit_operation == MP_EDIT_ADD_TO_PLAYLIST)
                {
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
                        if (layout_data->playlist_track_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
                        {
                                DEBUG_TRACE("unable to add more tracks...");
                                goto mp_exception;
                        }
+#endif
                        switch (layout_data->category)
                        {
                        case MP_LAYOUT_TRACK_LIST:
                                {
                                        layout_data->current_edit_item =
                                                elm_genlist_item_next_get(layout_data->current_edit_item);
-                                       item_handle = (AudioHandleType *) (item->handle);
+                                       item_handle =  (item->handle);
                                        if (item_handle)
                                        {
-                                               if (layout_data->playlist_id >= 0)
-                                               {
-                                                       ret = audio_svc_playlist_item_get_val(item_handle, 0,
-                                                                                             AUDIO_SVC_PLAYLIST_ITEM_AUDIO_ID,
-                                                                                             &fid, &size, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                               }
-                                               else
+                                               ret = mp_media_info_get_media_id(item_handle,  &fid);
+                                               MP_CHECK_EXCEP(ret == 0);
+
+                                               if (!mp_util_add_to_playlist_by_key(layout_data->edit_playlist_id, fid))
                                                {
-                                                       ret = audio_svc_list_item_get_val(item_handle, 0,
-                                                                                         AUDIO_SVC_LIST_ITEM_AUDIO_ID,
-                                                                                         &fid, &size, -1);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-                                               }
-                                               if (!mp_util_add_to_playlist_by_key(ad->media_svc_handle, layout_data->edit_playlist_id, fid))
+                                                       mp_widget_text_popup(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
                                                        goto mp_exception;
+                                               }
                                                else
                                                        layout_data->playlist_track_count++;
                                        }
@@ -560,48 +438,46 @@ _mp_edit_view_edit_idler_cb(void *data)
                                }
                        case MP_LAYOUT_GROUP_LIST:
                                {
-                                       item_handle = (AudioHandleType *) (item->handle);
+                                       item_handle =  (item->handle);
                                        if (item_handle)
                                        {
-                                               audio_svc_track_type_e item_type = AUDIO_SVC_TRACK_ALL;
+                                               mp_track_type_e item_type = MP_TRACK_ALL;
                                                int count = 0;
-                                               int size = 0;
+                                               mp_media_info_h item = NULL;
 
-                                               ret = audio_svc_group_item_get_val(item_handle, 0,
-                                                                                          AUDIO_SVC_GROUP_ITEM_MAIN_INFO,
-                                                                                          &title, &size, -1);
-                                               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+                                               if (layout_data->view_data->view_type == MP_VIEW_TYPE_FOLDER)
+                                               {
+                                                       ret = mp_media_info_group_get_sub_info(item_handle, &title);
+                                               }
+                                               else
+                                               {
+                                                       ret = mp_media_info_group_get_main_info(item_handle, &title);
+                                               }
+                                               MP_CHECK_EXCEP(ret == 0);
                                                MP_CHECK_EXCEP(title);
 
                                                item_type = mp_menu_get_track_type_by_group(layout_data->group_type);
 
                                                if (!layout_data->group_track_handle)
                                                {
-                                                       ret = audio_svc_count_list_item(ad->media_svc_handle, item_type, title, "", "", "",
-                                                                                       &count);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+                                                       ret = mp_media_info_list_count(item_type, title, NULL, NULL, 0, &count);
+
+                                                       MP_CHECK_EXCEP(ret == 0);
                                                        MP_CHECK_EXCEP(count > 0);
                                                        mp_debug("track_count: %d", count);
 
-                                                       ret = audio_svc_list_item_new(&layout_data->group_track_handle,
-                                                                                     count);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
-
-                                                       ret = audio_svc_get_list_item(ad->media_svc_handle, item_type, title, NULL, NULL,
-                                                                                     NULL, 0, count,
-                                                                                     layout_data->group_track_handle);
-                                                       MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
+                                                       ret = mp_media_info_list_create(&layout_data->group_track_handle, item_type, title, NULL, NULL, 0, 0, count);
+                                                       MP_CHECK_EXCEP(ret == 0);
 
                                                        layout_data->edit_track_index = count - 1;
                                                        layout_data->group_item_delete_error = false;
                                                }
-                                               ret = audio_svc_list_item_get_val(layout_data->group_track_handle,
-                                                                                 layout_data->edit_track_index,
-                                                                                 AUDIO_SVC_LIST_ITEM_AUDIO_ID, &fid, &size,
-                                                                                 -1);
-                                               MP_CHECK_EXCEP(ret == AUDIO_SVC_ERROR_NONE);
 
-                                               if (!mp_util_add_to_playlist_by_key(ad->media_svc_handle, layout_data->edit_playlist_id, fid))
+                                               item = mp_media_info_list_nth_item(layout_data->group_track_handle, layout_data->edit_track_index);
+                                               ret = mp_media_info_get_media_id(item, &fid);
+                                               MP_CHECK_EXCEP(ret == 0);
+
+                                               if (!mp_util_add_to_playlist_by_key(layout_data->edit_playlist_id, fid))
                                                        goto mp_exception;
                                                else
                                                        layout_data->playlist_track_count++;
@@ -610,9 +486,8 @@ _mp_edit_view_edit_idler_cb(void *data)
                                                {
                                                        DEBUG_TRACE("all tracks in %s added.", title);
                                                        layout_data->current_edit_item =
-                                                               elm_genlist_item_next_get(layout_data->
-                                                                                         current_edit_item);
-                                                       audio_svc_list_item_free(layout_data->group_track_handle);
+                                                               elm_genlist_item_next_get(layout_data->current_edit_item);
+                                                       mp_media_info_list_destroy(layout_data->group_track_handle);
                                                        layout_data->group_track_handle = NULL;
                                                }
                                                else
@@ -643,17 +518,17 @@ _mp_edit_view_edit_idler_cb(void *data)
        DEBUG_TRACE("no more items");
 
       END:
-       mp_popup_response(ad->popup[MP_POPUP_PROGRESS], 0);
+       mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_YES);
        layout_data->edit_idler = NULL;
        return EINA_FALSE;
 
       mp_exception:
        if (layout_data->group_track_handle)
        {
-               audio_svc_list_item_free(layout_data->group_track_handle);
+               mp_media_info_list_destroy(layout_data->group_track_handle);
                layout_data->group_track_handle = NULL;
        }
-       mp_popup_response(ad->popup[MP_POPUP_PROGRESS], 0);
+       mp_popup_response(ad->popup[MP_POPUP_PROGRESS], MP_POPUP_NO);
        layout_data->edit_idler = NULL;
        return EINA_FALSE;
 
@@ -668,8 +543,7 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev
        MP_CHECK(layout_data);
        MP_CHECK_LAYOUT_DATA(layout_data);
        MP_CHECK(obj);
-
-       evas_object_del(obj);
+       mp_evas_object_del(obj);
 
        struct appdata *ad = layout_data->ad;
        MP_CHECK(ad);
@@ -682,35 +556,13 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev
 
        if (layout_data->group_track_handle)
        {
-               audio_svc_list_item_free(layout_data->group_track_handle);
+               mp_media_info_list_destroy(layout_data->group_track_handle);
                layout_data->group_track_handle = NULL;
        }
 
-       if(mp_view_manager_count_view_content(layout_data->view_data) > 1)
+       if(mp_view_manager_count_view_content(layout_data->view_data) >= 1)
                mp_view_manager_update_list_contents(layout_data->view_data, TRUE);
 
-       if (layout_data->item_count < 1)
-       {
-               if(mp_view_manager_count_view_content(layout_data->view_data) > 1)
-               {
-                       int category = layout_data->category;
-                       int view_type = layout_data->view_data->view_type;
-                       _mp_edit_view_destroy_view(layout_data->view_data);
-                       if ((category == MP_LAYOUT_TRACK_LIST)
-                           && (view_type == MP_VIEW_TYPE_PLAYLIST))
-                       {
-                               mp_util_create_notify(ad, GET_SYS_STR("IDS_COM_POP_REMOVED"));
-                       }
-                       else
-                       {
-                               mp_util_create_notify(ad, GET_SYS_STR("IDS_COM_POP_DELETED"));
-                       }
-                       return;
-               }
-               else
-                       mp_view_manager_update_list_contents(layout_data->view_data, TRUE);
-       }
-
        int selected_count = layout_data->selected_count;
 
        mp_edit_view_cencel_cb(layout_data, NULL, NULL);
@@ -724,16 +576,6 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev
        }
        else
        {
-               bool deleted = FALSE;
-               if (layout_data->genlist) {
-                       int before_count = (int)evas_object_data_get(layout_data->genlist, "item_count_before_delete");
-                       int current_count = elm_genlist_items_count(layout_data->genlist);
-
-                       mp_debug("before: %d, after: %d", before_count, current_count);
-                       if (before_count > current_count)
-                               deleted = TRUE;
-               }
-
                if ((selected_count == 1) && layout_data->error_count)
                {
                        if ((layout_data->category == MP_LAYOUT_TRACK_LIST)
@@ -746,7 +588,7 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev
                                mp_util_create_notify(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_DELETE_SELECTED_MUSIC_IS_PLAYING"));
                        }
                }
-               else if (deleted)
+               else
                {
                        if ((layout_data->category == MP_LAYOUT_TRACK_LIST)
                            && (layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST))
@@ -762,6 +604,7 @@ _mp_edit_view_progress_popup_response_cb(void *data, Evas_Object * obj, void *ev
 
        layout_data->ad->edit_in_progress = false;
 
+       // elm_toolbar_item_selected_set() must be called at last. After that layout_data is not valid anymore...
        if (layout_data->edit_operation == MP_EDIT_ADD_TO_PLAYLIST && layout_data->ad->b_add_tracks)
        {
                layout_data->ad->b_add_tracks = FALSE;
@@ -798,9 +641,9 @@ mp_edit_view_excute_edit(mp_layout_data_t * layout_data, mp_edit_operation_t edi
 
        if (edit_operation == MP_EDIT_ADD_TO_PLAYLIST)
        {
-               audio_svc_count_playlist_item(layout_data->ad->media_svc_handle, layout_data->edit_playlist_id, NULL, NULL,
-                                             &layout_data->playlist_track_count);
+               mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, layout_data->edit_playlist_id, &layout_data->playlist_track_count);
                DEBUG_TRACE("number of tracks in playlist: %d", layout_data->playlist_track_count);
+#ifdef MP_PLAYLIST_MAX_ITEM_COUNT
                if (layout_data->playlist_track_count >= MP_PLAYLIST_MAX_ITEM_COUNT)
                {
                        if (layout_data->ad->b_add_tracks)
@@ -815,6 +658,7 @@ mp_edit_view_excute_edit(mp_layout_data_t * layout_data, mp_edit_operation_t edi
                        IF_FREE(noti_str);
                        return;
                }
+#endif
        }
 
        layout_data->edit_idler = ecore_idler_add(_mp_edit_view_edit_idler_cb, layout_data);
@@ -849,20 +693,17 @@ _mp_edit_view_excute_delete_cb(void *data, Evas_Object * obj, void *event_info)
        MP_CHECK(layout_data);
        MP_CHECK_LAYOUT_DATA(layout_data);
 
-       evas_object_del(obj);
        MP_CHECK(layout_data->ad);
        layout_data->ad->popup_delete = NULL;
 
-       if ((int)event_info == MP_POPUP_NO)
+       mp_evas_object_del(obj);
+
+       int response = (int)event_info;
+       if (response == MP_POPUP_NO)
        {
                return;
        }
 
-       if (layout_data->genlist) {
-               int count = elm_genlist_items_count(layout_data->genlist);
-               evas_object_data_set(layout_data->genlist, "item_count_before_delete", (void *)count);
-       }
-
        mp_edit_view_excute_edit(layout_data, MP_EDIT_DELETE);
 
        endfunc;
@@ -882,8 +723,7 @@ mp_edit_view_cencel_cb(void *data, Evas_Object * obj, void *event_info)
 
        ad = layout_data->ad;
 
-       if (layout_data->ad->notify)
-               evas_object_del(layout_data->ad->notify);
+       mp_evas_object_del(layout_data->ad->notify);
 
        mp_view_layout_set_edit_mode(layout_data, false);
        mp_util_unset_rename(layout_data); /* Cancel the rename mode */
@@ -909,7 +749,7 @@ mp_edit_view_delete_cb(void *data, Evas_Object * obj, void *event_info)
 
        ad = layout_data->ad;
 
-       Evas_Object *popup = elm_popup_add(ad->win_main);
+       Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, layout_data, _mp_edit_view_excute_delete_cb, ad);
        evas_object_data_set(popup, "layout_data", layout_data);
        ad->popup_delete = popup;
 
@@ -917,15 +757,15 @@ mp_edit_view_delete_cb(void *data, Evas_Object * obj, void *event_info)
        if ((layout_data->category == MP_LAYOUT_TRACK_LIST)
            && (layout_data->view_data->view_type == MP_VIEW_TYPE_PLAYLIST))
        {
-               mp_popup_desc_set(popup, GET_STR("IDS_MUSIC_POP_REMOVE_Q"));
+               elm_object_text_set(popup, GET_STR("IDS_MUSIC_POP_REMOVE_Q"));
        }
        else
        {
-               mp_popup_desc_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q"));
+               elm_object_text_set(popup, GET_SYS_STR("IDS_COM_POP_DELETE_Q"));
        }
-       mp_popup_set_response_cb(popup, _mp_edit_view_excute_delete_cb, layout_data);
-       mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_YES"), MP_POPUP_YES);
-       mp_popup_button_set(popup, "button2", GET_SYS_STR("IDS_COM_SK_NO"), MP_POPUP_NO);
+
+       mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_YES"), MP_POPUP_YES);
+       mp_popup_button_set(popup, MP_POPUP_BTN_2, GET_SYS_STR("IDS_COM_SK_NO"), MP_POPUP_NO);
 
        evas_object_show(popup);
 
@@ -967,7 +807,6 @@ mp_edit_view_genlist_sel_cb(void *data, Evas_Object * obj, void *event_info)
                elm_check_state_pointer_set(layout_data->select_all_checkbox, &layout_data->select_all_checked);
        }
 
-       //elm_genlist_item_update(item->it);
        elm_genlist_item_fields_update(item->it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
        mp_util_create_selectioninfo_with_count(layout_data->ad, layout_data->checked_count);
        mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count);
@@ -988,7 +827,7 @@ mp_edit_view_create(view_data_t * view_data)
        mp_layout_data_t *layout_data = evas_object_data_get(top_view, "layout_data");
        MP_CHECK_LAYOUT_DATA(layout_data);
 
-       if (layout_data->category == MP_LAYOUT_TRACK_LIST && layout_data->track_type == AUDIO_SVC_TRACK_BY_PLAYLIST)
+       if (layout_data->category == MP_LAYOUT_TRACK_LIST && layout_data->track_type == MP_TRACK_BY_PLAYLIST)
                reorder = TRUE;
 
        mp_view_layout_set_layout_data(top_view, MP_LAYOUT_EDIT_MODE, TRUE, MP_LAYOUT_REORDER_MODE, reorder, -1);
@@ -1004,3 +843,42 @@ mp_edit_view_create(view_data_t * view_data)
        return NULL;
 
 }
+
+bool
+mp_edit_view_get_selected_track_list(void *data, GList **p_list)
+{
+       struct appdata *ad = data;
+       MP_CHECK_FALSE(ad);
+
+       Evas_Object *top_view = mp_view_manager_get_last_view_layout(ad);
+       MP_CHECK_FALSE(top_view);
+
+       mp_layout_data_t *layout_data = evas_object_data_get(top_view, "layout_data");
+       MP_CHECK_FALSE(layout_data);    /* not list layout */
+
+       if (layout_data->category != MP_LAYOUT_TRACK_LIST || !layout_data->edit_mode)
+       {
+               mp_debug("Not track list (edit mode)");
+               return false;
+       }
+
+       if (layout_data->checked_count > 0)
+       {
+               Elm_Object_Item *gl_item = elm_genlist_first_item_get(layout_data->genlist);
+               char *path = NULL;
+               while (gl_item) {
+                       mp_genlist_item_data_t *item = elm_object_item_data_get(gl_item);
+                       if (item && item->checked) {
+                               mp_media_info_get_file_path(item->handle, &path);
+                               if (path) {
+                                       *p_list = g_list_append(*p_list, path);
+                               }
+                       }
+
+                       gl_item = elm_genlist_item_next_get(gl_item);
+               }
+       }
+
+       return true;
+}
+
index 00cbc02..1c485e7 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,8 +15,8 @@
  */
 
 
-
 #include "mp-library.h"
+#include "mp-ta.h"
 #include "mp-player-debug.h"
 #include "mp-common.h"
 #include "music.h"
 #include "mp-edit-view.h"
 #include "mp-util.h"
 #include "mp-widget.h"
+#include "mp-play-view.h"
 
-static void _mp_group_view_push_group_content(view_data_t * view_data, Evas_Object * content);
 static void _mp_group_view_push_item_content(view_data_t * view_data, Evas_Object * content, char *title);
 
-static Elm_Genlist_Item_Class g_track_class_sweep = {
-       .item_style = "music_player/1icon.3text",
-       .func.text_get = mp_common_track_list_label_get,
-       .func.content_get = mp_common_track_list_icon_get,
-};
+static Elm_Genlist_Item_Class *
+_mp_group_view_get_track_list_itc(int list_type)
+{
+       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+       MP_CHECK_NULL(itc);
+
+       if (list_type == MP_TRACK_BY_ARTIST || list_type == MP_TRACK_BY_ALBUM) {
+               itc->item_style = "music_player/2text";
+               itc->decorate_item_style = "mode/slide4";
+       } else if (list_type == MP_TRACK_BY_FOLDER) {
+               itc->item_style = "music_player/folder_track";
+               itc->decorate_item_style = "mode/slide4.text";
+       } else {
+               itc->item_style = "music_player/1icon.3text";
+               itc->decorate_item_style = "mode/slide4.text";
+       }
 
-static Elm_Genlist_Item_Class g_aa_track_class_sweep = {
-       .item_style = "music_player/2text",
-       .func.text_get = mp_common_track_list_label_get,
-       .func.content_get = mp_common_track_list_icon_get,
-};
+       itc->func.text_get = mp_common_track_list_label_get;
+       itc->func.content_get = mp_common_track_list_icon_get;
+
+       return itc;
+}
 
 static int
 _mp_group_view_get_list_type_by_group_type(int type)
@@ -48,23 +59,26 @@ _mp_group_view_get_list_type_by_group_type(int type)
        int list_type = 0;
        switch (type)
        {
-       case AUDIO_SVC_GROUP_BY_ALBUM:
-               list_type = AUDIO_SVC_TRACK_BY_ALBUM;
+       case MP_GROUP_BY_ALBUM:
+               list_type = MP_TRACK_BY_ALBUM;
                break;
-       case AUDIO_SVC_GROUP_BY_ARTIST:
-               list_type = AUDIO_SVC_TRACK_BY_ARTIST;
+       case MP_GROUP_BY_ARTIST:
+               list_type = MP_TRACK_BY_ARTIST;
                break;
-       case AUDIO_SVC_GROUP_BY_ARTIST_ALBUM:
-               list_type = AUDIO_SVC_TRACK_BY_ARTIST_ALBUM;
+       case MP_GROUP_BY_ARTIST_ALBUM:
+               list_type = MP_TRACK_BY_ARTIST_ALBUM;
                break;
-       case AUDIO_SVC_GROUP_BY_GENRE:
-               list_type = AUDIO_SVC_TRACK_BY_GENRE;
+       case MP_GROUP_BY_GENRE:
+               list_type = MP_TRACK_BY_GENRE;
                break;
-       case AUDIO_SVC_GROUP_BY_YEAR:
-               list_type = AUDIO_SVC_TRACK_BY_YEAR;
+       case MP_GROUP_BY_YEAR:
+               list_type = MP_TRACK_BY_YEAR;
                break;
-       case AUDIO_SVC_GROUP_BY_COMPOSER:
-               list_type = AUDIO_SVC_TRACK_BY_COMPOSER;
+       case MP_GROUP_BY_COMPOSER:
+               list_type = MP_TRACK_BY_COMPOSER;
+               break;
+       case MP_GROUP_BY_FOLDER:
+               list_type = MP_TRACK_BY_FOLDER;
                break;
 
        default:
@@ -74,7 +88,7 @@ _mp_group_view_get_list_type_by_group_type(int type)
 }
 
 static Evas_Object *
-_mp_group_create_detail_view_layout(view_data_t * view_data, char *name, audio_svc_group_type_e type)
+_mp_group_create_detail_view_layout(view_data_t * view_data, char *type_str, mp_group_type_e type)
 {
        int list_type = 0;
        int category = MP_LAYOUT_TRACK_LIST;
@@ -87,13 +101,7 @@ _mp_group_create_detail_view_layout(view_data_t * view_data, char *name, audio_s
        mp_assert(layout);
 
        list_type = _mp_group_view_get_list_type_by_group_type(type);
-
-       if (AUDIO_SVC_TRACK_BY_ARTIST == list_type
-           || AUDIO_SVC_TRACK_BY_ALBUM == list_type) {
-               itc = &g_aa_track_class_sweep;
-       } else {
-               itc = &g_track_class_sweep;
-       }
+       itc = _mp_group_view_get_track_list_itc(list_type);
 
        mp_genlist_cb_t genlist_cbs;
        memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t));
@@ -102,7 +110,7 @@ _mp_group_create_detail_view_layout(view_data_t * view_data, char *name, audio_s
        mp_view_layout_set_layout_data(layout,
                                       MP_LAYOUT_CATEGORY_TYPE, category,
                                       MP_LAYOUT_TRACK_LIST_TYPE, list_type,
-                                      MP_LAYOUT_TYPE_STR, name,
+                                      MP_LAYOUT_TYPE_STR, type_str,
                                       MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, itc, -1);
 
        mp_view_layout_update(layout);
@@ -111,8 +119,38 @@ _mp_group_create_detail_view_layout(view_data_t * view_data, char *name, audio_s
 
 }
 
+static char *
+_get_folder_name_by_id(char *folder_id)
+{
+       mp_retvm_if(!folder_id, NULL, "File path is null...");
+       mp_media_list_h media_list = NULL;
+       int count;
+       char *folder_name = NULL;
+
+       mp_media_info_group_list_count(MP_GROUP_BY_FOLDER, NULL, NULL, &count);
+       mp_media_info_group_list_create(&media_list, MP_GROUP_BY_FOLDER, NULL, NULL, 0, count);
+
+       int i = 0;
+       for (i = 0; i < count; i++)
+       {
+               mp_media_info_h info;
+               char *id = NULL;
+               info = mp_media_info_group_list_nth_item(media_list, i);
+               mp_media_info_group_get_folder_id(info, & id);
+               if(!g_strcmp0(folder_id, id)){
+                       mp_media_info_group_get_main_info (info, &folder_name);
+                       folder_name = g_strdup(folder_name);
+                       IF_FREE(id);
+                       break;
+               }
+               IF_FREE(id);
+       }
+       mp_media_info_group_list_destroy(media_list);
+       return folder_name;
+}
+
 bool
-mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, audio_svc_group_type_e type)
+mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, mp_group_type_e type)
 {
        startfunc;
 
@@ -120,21 +158,29 @@ mp_group_view_create_by_group_name(Evas_Object * obj, char *group_name, audio_sv
        MP_CHECK_FALSE(view_data);
        MP_CHECK_VIEW_DATA(view_data);
        Evas_Object *view_layout = _mp_group_create_detail_view_layout(view_data, group_name, type);
-       _mp_group_view_push_item_content(view_data, view_layout, group_name);
 
+       if(type == MP_GROUP_BY_FOLDER)
+       {
+               char *folder_name = _get_folder_name_by_id(group_name);
+               _mp_group_view_push_item_content(view_data, view_layout, folder_name);
+               IF_FREE(folder_name);
+       }
+       else
+               _mp_group_view_push_item_content(view_data, view_layout, group_name);
        endfunc;
 
        return true;
 }
 
+
 void
 mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE("");
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        int index = (int)data;
        char *name = NULL;
-       int size = 0;
+       char *folder_id = 0;
 
        Elm_Object_Item *gli = (Elm_Object_Item *) event_info;
        MP_CHECK(gli);
@@ -155,41 +201,54 @@ mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_in
                return;
        }
 
-       view_data_t *view_data = evas_object_data_get(layout_data->navibar, "view_data");
+       mp_media_info_h item_handle = NULL;
+       view_data_t *view_data = evas_object_data_get(layout_data->ad->naviframe, "view_data");
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
        if (layout_data->view_mode == MP_VIEW_MODE_SEARCH)
        {
                layout_data->group_type = gli_data->group_type;
-               if (gli_data->group_type == AUDIO_SVC_GROUP_BY_ARTIST)
-                       ret = audio_svc_group_item_get_val(layout_data->artist_handle, index,
-                                                          AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
-               else if (gli_data->group_type == AUDIO_SVC_GROUP_BY_ALBUM)
-                       ret = audio_svc_group_item_get_val(layout_data->album_handle, index,
-                                                          AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
+               if (gli_data->group_type == MP_GROUP_BY_ARTIST)
+               {
+                       item_handle = mp_media_info_group_list_nth_item(layout_data->artist_handle, index);
+                       ret = mp_media_info_group_get_main_info(item_handle, &name);
+               }
+               else if (gli_data->group_type == MP_GROUP_BY_ALBUM)
+               {
+                       item_handle = mp_media_info_group_list_nth_item(layout_data->album_handle, index);
+                       ret = mp_media_info_group_get_main_info(item_handle, &name);
+               }
                else
                {
                        ERROR_TRACE("never should be here...");
                        return;
                }
 
-               mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
+               mp_retm_if(ret != 0, "Fail to get value");
                mp_retm_if(name == NULL, "Fail to get value");
        }
        else
        {
-               ret = audio_svc_group_item_get_val(layout_data->svc_handle, index, AUDIO_SVC_GROUP_ITEM_MAIN_INFO,
-                                                  &name, &size, -1);
+               item_handle = mp_media_info_group_list_nth_item(layout_data->svc_handle, index);
+               ret = mp_media_info_group_get_main_info(item_handle, &name);
+               if (view_data->view_type == MP_VIEW_TYPE_FOLDER)
+                       ret = mp_media_info_group_get_folder_id(item_handle, &folder_id);
 
-               mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
+               mp_retm_if(ret != 0, "Fail to get value");
                mp_retm_if(name == NULL, "Fail to get value");
        }
 
-
        DEBUG_TRACE("name: %s, type: %d", name, layout_data->group_type);
 
        Evas_Object *view_layout = NULL;
-       view_layout = _mp_group_create_detail_view_layout(view_data, name, layout_data->group_type);
+       if (view_data->view_type == MP_VIEW_TYPE_FOLDER && layout_data->view_mode != MP_VIEW_MODE_SEARCH)
+       {
+               view_layout = _mp_group_create_detail_view_layout(view_data, folder_id, layout_data->group_type);
+       }
+       else
+       {
+               view_layout = _mp_group_create_detail_view_layout(view_data, name, layout_data->group_type);
+       }
 
        mp_util_reset_genlist_mode_item(layout_data->genlist);
 
@@ -198,25 +257,25 @@ mp_group_view_group_list_select_cb(void *data, Evas_Object * obj, void *event_in
 }
 
 static void
-_mp_group_view_push_group_content(view_data_t * view_data, Evas_Object * content)
+_mp_group_view_set_title(view_data_t * view_data)
 {
        char *title = NULL;
 
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
 
-       mp_view_manager_push_view_content(view_data, content, MP_VIEW_CONTENT_LIST);
-
        if (view_data->view_type == MP_VIEW_TYPE_ALBUM)
-               title = GET_STR("IDS_MUSIC_TAB4_ALBUMS");
+               title = "IDS_MUSIC_TAB4_ALBUMS";
        else if (view_data->view_type == MP_VIEW_TYPE_ARTIST)
-               title = GET_STR("IDS_MUSIC_TAB4_ARTISTS");
+               title = "IDS_MUSIC_TAB4_ARTISTS";
        else if (view_data->view_type == MP_VIEW_TYPE_GENRE)
-               title = GET_STR("IDS_MUSIC_TAB4_GENRES");
+               title = "IDS_MUSIC_TAB4_GENRES";
        else if (view_data->view_type == MP_VIEW_TYPE_COMPOSER)
-               title = GET_STR("IDS_MUSIC_TAB4_COMPOSERS");
+               title = "IDS_MUSIC_TAB4_COMPOSERS";
        else if (view_data->view_type == MP_VIEW_TYPE_YEAR)
-               title = GET_STR("IDS_MUSIC_TAB4_YEARS");
+               title = "IDS_MUSIC_TAB4_YEARS";
+       else if (view_data->view_type == MP_VIEW_TYPE_FOLDER)
+               title = "IDS_MUSIC_TAB4_FOLDERS";
        else
                DEBUG_TRACE("unexpected type: %d", view_data->view_type);
 
@@ -234,6 +293,63 @@ _mp_group_view_push_item_content(view_data_t * view_data, Evas_Object * content,
        mp_view_manager_set_title_and_buttons(view_data, title, view_data);
 }
 
+static void
+_mp_group_view_playall_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+
+       struct appdata *ad = NULL;
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       ad = layout_data->ad;
+
+       mp_media_info_h handle = data;
+       MP_CHECK(handle);
+
+       int count = 0;
+       char *folder_id = NULL;
+       int ret = 0;
+
+       /* get playlist name */
+       ret = mp_media_info_group_get_folder_id(handle, &folder_id);
+       MP_CHECK(folder_id);
+
+       /* get playlist data by name */
+       mp_layout_data_t *layout_data_new = calloc(1, sizeof(mp_layout_data_t));
+       MP_CHECK(layout_data_new);
+       MP_SET_LAYOUT_DATA_MAGIC(layout_data_new);
+       layout_data_new->ad = ad;
+
+       layout_data_new->track_type = MP_TRACK_BY_FOLDER;
+       layout_data_new->type_str = folder_id;
+
+       mp_media_info_list_count(MP_TRACK_BY_FOLDER, folder_id, NULL, NULL, 0, &count);
+       mp_media_info_list_create(&layout_data_new->svc_handle,
+               MP_TRACK_BY_FOLDER, folder_id, NULL, NULL, 0, 0, count);
+
+       layout_data_new->item_count = count;
+
+       mp_play_view_load_by_index(layout_data_new, 0, false);
+
+       /* set the flag for update playlist view when back from playview */
+       if (ad->playing_view != NULL)
+       {
+               ad->playing_view->b_play_all = true;
+       }
+
+       if (layout_data_new->svc_handle)
+       {
+               mp_media_info_list_destroy(layout_data_new->svc_handle);
+       }
+
+       free(layout_data_new);
+
+       endfunc;
+}
+
+
 Evas_Object *
 mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part)
 {
@@ -241,22 +357,65 @@ mp_group_view_icon_get(void *data, Evas_Object * obj, const char *part)
 
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *svc_item = (AudioHandleType *) (item->handle);
+       mp_media_info_h svc_item = (item->handle);
 
        mp_retv_if(svc_item == NULL, NULL);
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        MP_CHECK_LAYOUT_DATA(layout_data);
 
        char *thumb_name = NULL;
-       int size;
 
-       audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_THUMBNAIL_PATH, &thumb_name, &size, -1);
+       mp_media_info_group_get_thumbnail_path(svc_item, &thumb_name);
 
        if (!strcmp(part, "elm.icon"))
        {
                icon = mp_util_create_thumb_icon(obj, thumb_name, MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE);
        }
 
+       Evas_Object *button;
+       if (!strcmp(part, "elm.slide.swallow.1"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_MUSIC_BODY_ADD_TO_PLAYLIST");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_add_to_playlist_cb, item->handle);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.2"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_STR("Play all"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "Play all");
+               evas_object_smart_callback_add(button, "clicked", _mp_group_view_playall_button_cb, item->handle);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!g_strcmp0(part, "elm.icon.storage"))
+       {
+               char *folder = NULL;
+               icon = NULL;
+               int ret = mp_media_info_group_get_sub_info(svc_item, &folder);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+               if (folder) {
+                       const char *icon_path = NULL;
+                       if (g_strstr_len(folder, strlen(MP_PHONE_ROOT_PATH), MP_PHONE_ROOT_PATH))
+                               icon_path = MP_ICON_STORAGE_PHONE;
+                       else if (g_strstr_len(folder, strlen(MP_MMC_ROOT_PATH), MP_MMC_ROOT_PATH))
+                               icon_path = MP_ICON_STORAGE_MMC;
+                       else
+                               icon_path = MP_ICON_STORAGE_EXTERNAL;
+
+                       icon = elm_icon_add(obj);
+                       MP_CHECK_NULL(icon);
+                       elm_icon_file_set(icon, icon_path, NULL);
+                       evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+                       return icon;
+               }
+       }
+
        Evas_Object *check = NULL;
 
        if (elm_genlist_decorate_mode_get(obj) || layout_data->ad->b_add_tracks)
@@ -277,40 +436,84 @@ char *
 mp_group_view_album_list_label_get(void *data, Evas_Object * obj, const char *part)
 {
        char *name = NULL;
-       int size = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
 
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *svc_item = (AudioHandleType *) (item->handle);
+       mp_media_info_h svc_item = (item->handle);
 
        mp_retv_if(svc_item == NULL, NULL);
 
-       if (!strcmp(part, "elm.text.1"))
+       if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1"))
        {
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_group_get_main_info(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
                if (!name || !strlen(name))
                        name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
-               return elm_entry_utf8_to_markup(name);
+
+               if (!strcmp(part, "elm.text.1"))
+                       return elm_entry_utf8_to_markup(name);
+               else
+                       return g_strdup(name);
 
        }
        else if (!strcmp(part, "elm.text.2"))
        {
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_SUB_INFO, &name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_group_get_sub_info(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
                if (!name || !strlen(name))
                        name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
-               return strdup(name);
+               return g_strdup(name);
        }
        else if (!strcmp(part, "elm.text.3"))
        {
                int count = -1;
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_group_get_main_info(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+
+               ret = mp_media_info_list_count(MP_TRACK_BY_ALBUM, name, NULL, NULL, 0, &count);
+               mp_retvm_if(ret != 0, NULL, "Fail to get count");
+               mp_retvm_if(count < 0, NULL, "Fail to get count");
+               return g_strdup_printf("(%d)", count);
+       }
 
-               ret = audio_svc_count_list_item(item->media_svc_handle, AUDIO_SVC_TRACK_BY_ALBUM, name, "", "", "", &count);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get count");
+       DEBUG_TRACE("Unusing part: %s", part);
+       return NULL;
+}
+
+static char *
+_mp_group_view_folder_list_label_get(void *data, Evas_Object * obj, const char *part)
+{
+       char *name = NULL;
+       int ret = 0;
+       mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
+       MP_CHECK_NULL(item);
+       mp_media_info_h svc_item = (item->handle);
+       mp_retv_if(svc_item == NULL, NULL);
+
+       if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1"))
+       {
+               ret = mp_media_info_group_get_main_info(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+               if (!name || !strlen(name))
+                       name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
+               return strdup(name);
+       }
+       else if (!strcmp(part, "elm.text.2"))
+       {
+               ret = mp_media_info_group_get_sub_info(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+               if (!name || !strlen(name))
+                       name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
+               return mp_util_shorten_path(name);
+       }
+       else if (!strcmp(part, "elm.text.3"))
+       {
+               int count = -1;
+               ret = mp_media_info_group_get_folder_id(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+               ret = mp_media_info_list_count(MP_TRACK_BY_FOLDER, name, NULL, NULL, 0, &count);
+               mp_retvm_if(ret != 0, NULL, "Fail to get count");
                mp_retvm_if(count < 0, NULL, "Fail to get count");
                return g_strdup_printf("(%d)", count);
        }
@@ -323,20 +526,19 @@ char *
 mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part)
 {
        char *name = NULL;
-       int size = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
 
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *svc_item = (AudioHandleType *) (item->handle);
+       mp_media_info_h svc_item = (item->handle);
        mp_retv_if(svc_item == NULL, NULL);
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        MP_CHECK_NULL(layout_data);
 
-       if (!strcmp(part, "elm.text.1"))
+       if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1"))
        {
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_group_get_main_info(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
                if (!name || !strlen(name))
                        name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
                if(layout_data->filter_str)
@@ -345,20 +547,22 @@ mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part)
                        bool res = false;
                        markup_name = (char *)mp_util_search_markup_keyword(name, layout_data->filter_str, &res);
                        if(res)
-                               return strdup(markup_name);
-               } else
+                               return g_strdup(markup_name);
+               } else if (!strcmp(part, "elm.text.1"))
                        return elm_entry_utf8_to_markup(name);
+               else
+                       return g_strdup(name);
        }
        else if (!strcmp(part, "elm.text.2"))
        {
                int count = -1;
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_group_get_main_info(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
 
                int list_type = _mp_group_view_get_list_type_by_group_type(item->group_type);
                DEBUG_TRACE("name: %s, list_type: %d", name, list_type);
-               ret = audio_svc_count_list_item(item->media_svc_handle, list_type, name, "", "", "", &count);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get count");
+               ret = mp_media_info_list_count(list_type, name, NULL, NULL, 0, &count);
+               mp_retvm_if(ret != 0, NULL, "Fail to get count");
                mp_retvm_if(count < 0, NULL, "Fail to get count");
                return g_strdup_printf("(%d)", count);
        }
@@ -366,22 +570,50 @@ mp_group_view_list_label_get(void *data, Evas_Object * obj, const char *part)
        return NULL;
 }
 
-static Elm_Genlist_Item_Class g_group_class_sweep = {
-       .item_style = "music_player/1icon.2text",
-       .func.text_get = mp_group_view_list_label_get,
-       .func.content_get = mp_group_view_icon_get,
-};
-
-static Elm_Genlist_Item_Class g_album_class_sweep = {
-       .item_style = "music_player/1icon.3text",
-       .func.text_get = mp_group_view_album_list_label_get,
-       .func.content_get = mp_group_view_icon_get,
-};
-
 static mp_genlist_cb_t g_group_list_cbs = {
        .selected_cb = mp_group_view_group_list_select_cb,
 };
 
+static Elm_Genlist_Item_Class*
+_mp_group_view_get_group_list_itec(mp_view_type_t view_type)
+{
+       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+       MP_CHECK_NULL(itc);
+
+       switch (view_type) {
+       case MP_VIEW_TYPE_ALBUM:
+               itc->item_style = "music_player/1icon.3text";
+               itc->decorate_item_style = "mode/slide";
+               itc->func.text_get = mp_group_view_album_list_label_get;
+               itc->func.content_get = mp_group_view_icon_get;
+               break;
+
+       case MP_VIEW_TYPE_ARTIST:
+       case MP_VIEW_TYPE_GENRE:
+       case MP_VIEW_TYPE_COMPOSER:
+       case MP_VIEW_TYPE_YEAR:
+               itc->item_style = "music_player/1icon.2text";
+               itc->decorate_item_style = "mode/slide";
+               itc->func.text_get = mp_group_view_list_label_get;
+               itc->func.content_get = mp_group_view_icon_get;
+               break;
+
+       case MP_VIEW_TYPE_FOLDER:
+               itc->item_style = "music_player/folder";
+               itc->decorate_item_style = "mode/slide2";
+               itc->func.text_get = _mp_group_view_folder_list_label_get;
+               itc->func.content_get = mp_group_view_icon_get;
+               break;
+
+       default:
+               elm_genlist_item_class_free(itc);
+               itc = NULL;
+       }
+
+       return itc;
+}
+
+
 Evas_Object *
 mp_group_view_create(struct appdata *ad, mp_view_type_t view_type)
 {
@@ -390,62 +622,60 @@ mp_group_view_create(struct appdata *ad, mp_view_type_t view_type)
 
        Elm_Genlist_Item_Class *itc;
 
-       Evas_Object *navibar = mp_widget_navigation_new(ad->ctrl_bar, ad);
-
-       view_data_t *view_data = calloc(sizeof(view_data_t), 1);
-       MP_SET_VIEW_DATA_MAGIC(view_data);
-       view_data->ad = ad;
-       view_data->navibar = navibar;
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
        view_data->view_type = view_type;
+       Evas_Object *view_layout = mp_view_layout_create(ad->tabbar, view_data, MP_VIEW_MODE_DEFAULT);
 
-       evas_object_data_set(navibar, "view_data", view_data);
-       Evas_Object *view_layout = mp_view_layout_create(navibar, view_data, MP_VIEW_MODE_DEFAULT);
+       mp_layout_data_t *layout_data = NULL;
+       layout_data = evas_object_data_get(view_layout, "layout_data");
+       MP_CHECK_NULL(layout_data);
+       evas_object_data_set(ad->controlbar_layout, "layout_data", layout_data);
 
        if (view_type == MP_VIEW_TYPE_ALBUM)
        {
                DEBUG_TRACE("album view");
-               list_type = AUDIO_SVC_GROUP_BY_ALBUM;
-
-               itc = &g_album_class_sweep;
+               list_type = MP_GROUP_BY_ALBUM;
        }
        else if (view_type == MP_VIEW_TYPE_ARTIST)
        {
                DEBUG_TRACE("artist view");
-               list_type = AUDIO_SVC_GROUP_BY_ARTIST;
-               itc = &g_group_class_sweep;
+               list_type = MP_GROUP_BY_ARTIST;
        }
        else if (view_type == MP_VIEW_TYPE_GENRE)
        {
                DEBUG_TRACE("genre view");
-               list_type = AUDIO_SVC_GROUP_BY_GENRE;
-               itc = &g_group_class_sweep;
+               list_type = MP_GROUP_BY_GENRE;
        }
        else if (view_type == MP_VIEW_TYPE_COMPOSER)
        {
                DEBUG_TRACE("composer view");
-               list_type = AUDIO_SVC_GROUP_BY_COMPOSER;
-               itc = &g_group_class_sweep;
+               list_type = MP_GROUP_BY_COMPOSER;
        }
        else if (view_type == MP_VIEW_TYPE_YEAR)
        {
                DEBUG_TRACE("year view");
-               list_type = AUDIO_SVC_GROUP_BY_YEAR;
-               itc = &g_group_class_sweep;
+               list_type = MP_GROUP_BY_YEAR;
+       }
+       else if (view_type == MP_VIEW_TYPE_FOLDER)
+       {
+               DEBUG_TRACE("folder view");
+               list_type = MP_GROUP_BY_FOLDER;
        }
        else
        {
                ERROR_TRACE("unexpected type: %d", view_type);
-               evas_object_del(navibar);
                return NULL;
        }
 
+       itc = _mp_group_view_get_group_list_itec(view_type);
+
        mp_view_layout_set_layout_data(view_layout,
                                       MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_GROUP_LIST,
                                       MP_LAYOUT_GROUP_LIST_TYPE, list_type,
                                       MP_LAYOUT_LIST_CB, &g_group_list_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, itc, -1);
-       _mp_group_view_push_group_content(view_data, view_layout);
+       _mp_group_view_set_title(view_data);
 
-       return navibar;
+       return view_layout;
 }
 
 void
index 67535fb..a480ee0 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-
-
 #include "mp-library.h"
+#include "mp-ta.h"
 #include "mp-setting-ctrl.h"
 #include "mp-player-debug.h"
 #include "mp-common.h"
@@ -30,7 +29,7 @@
 
 static void _mp_library_init(void *data);
 static Evas_Object *_mp_library_create_layout_main(Evas_Object * parent);
-static Evas_Object *_mp_library_create_control_bar(struct appdata *ad);
+static Evas_Object *_mp_library_create_tabbar(struct appdata *ad);
 static void _mp_library_controlbar_item_append(struct appdata *ad, mp_setting_menu_t * menu_state);
 static bool _mp_library_check_request_item(struct appdata *ad);
 
@@ -52,10 +51,19 @@ _mp_library_create_layout_main(Evas_Object * parent)
        Evas_Object *layout;
 
        mp_retv_if(parent == NULL, NULL);
+       MP_TA_ACUM_ITEM_BEGIN("        elm_layout_add", 0);
        layout = elm_layout_add(parent);
+       MP_TA_ACUM_ITEM_END("        elm_layout_add", 0);
        mp_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
 
-       elm_layout_theme_set(layout, "layout", "application", "default");
+       MP_TA_ACUM_ITEM_BEGIN("        elm_layout_theme_set", 0);
+       const char *profile = elm_config_profile_get();
+       mp_debug("elm_profile = %s", profile);
+       if (!g_strcmp0(profile, "desktop"))
+               elm_layout_theme_set(layout, "layout", "application", "noindicator");
+       else
+               elm_layout_theme_set(layout, "layout", "application", "default");
+       MP_TA_ACUM_ITEM_END("        elm_layout_theme_set", 0);
        evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        elm_win_resize_object_add(parent, layout);
 
@@ -65,38 +73,43 @@ _mp_library_create_layout_main(Evas_Object * parent)
 }
 
 static Evas_Object *
-_mp_library_create_control_bar(struct appdata *ad)
+_mp_library_create_tabbar(struct appdata *ad)
 {
        Evas_Object *obj;
 
-       obj = elm_toolbar_add(ad->controlbar_layout);
+       /* create controlbar */
+       MP_TA_ACUM_ITEM_BEGIN("        elm_toolbar_add()", 0);
+
+       obj = elm_toolbar_add(ad->naviframe);
        elm_toolbar_shrink_mode_set(obj, ELM_TOOLBAR_SHRINK_EXPAND);
-       mp_retvm_if(obj == NULL, NULL, "Fail to create control bar");
-       elm_object_style_set(obj, "music/tabbar");
        elm_toolbar_select_mode_set(obj, ELM_OBJECT_SELECT_MODE_ALWAYS);
+       elm_object_style_set(obj, "tabbar");
 
+       MP_TA_ACUM_ITEM_END("        elm_toolbar_add()", 0);
+       mp_retvm_if(obj == NULL, NULL, "Fail to create control bar");
+
+       MP_TA_ACUM_ITEM_BEGIN("        mp_setting_menu_get_state", 0);
        mp_setting_menu_t menu_state;
        mp_setting_menu_get_state(&menu_state);
+       MP_TA_ACUM_ITEM_END("        mp_setting_menu_get_state", 0);
 
-       ad->ctrl_bar = obj;
+       ad->tabbar = obj;
+       MP_TA_ACUM_ITEM_BEGIN("        _mp_library_controlbar_item_append", 0);
        _mp_library_controlbar_item_append(ad, &menu_state);
+       MP_TA_ACUM_ITEM_END("        _mp_library_controlbar_item_append", 0);
        evas_object_show(obj);
 
-       elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.controlbar", obj);
-
        return obj;
 }
 
+// update menu when menu changed while bgm.
 static void
 _mp_library_menu_changed(mp_setting_menu_t * menu_state, void *data)
 {
        struct appdata *ad = (struct appdata *)data;
 
-       Evas_Object *obj;
-       obj = ad->ctrl_bar;
-
        MP_CHECK(ad->library->ctltab_songs);
-       MP_CHECK(obj);
+       MP_CHECK(ad->tabbar);
 
        DEBUG_TRACE("loadtype=%d", ad->loadtype);
        if (ad->loadtype == LOAD_TRACK)
@@ -105,12 +118,19 @@ _mp_library_menu_changed(mp_setting_menu_t * menu_state, void *data)
                return;
        }
 
-       ad->music_setting_change_flag = true;
+       //set data from music setting
        ad->library->albums = menu_state->albums;
        ad->library->artists = menu_state->artists;
        ad->library->genres = menu_state->genres;
        ad->library->composers = menu_state->composers;
        ad->library->years = menu_state->years;
+       ad->library->folders = menu_state->folders;
+
+       if (ad->setting_ug) {
+               mp_debug("setting ug on playing view.. reserve menu change");
+               ad->music_setting_change_flag = true;
+               return;
+       }
 
        mp_util_set_library_controlbar_items(ad);
 }
@@ -122,38 +142,83 @@ _mp_library_controlbar_item_append(struct appdata *ad, mp_setting_menu_t * menu_
 
        Evas_Object *obj;
 
-       obj = ad->ctrl_bar;
+       obj = ad->tabbar;
 
+       ad->library->first_append = true;
+       MP_TA_ACUM_ITEM_BEGIN("          CONTROLBAR_SYSTEM_ICON_SONGS", 0);
        ad->library->ctltab_songs =
                elm_toolbar_item_append(obj, MP_CTRBAR_ICON_SONGS, GET_STR(STR_MP_ALL_TRACKS), mp_library_view_change_cb, ad);
+       mp_language_mgr_register_object_item(ad->library->ctltab_songs, STR_MP_ALL_TRACKS);
+       MP_TA_ACUM_ITEM_END("          CONTROLBAR_SYSTEM_ICON_SONGS", 0);
+       MP_TA_ACUM_ITEM_BEGIN("          elm_toolbar_item_append", 0);
+       ad->library->first_append = false;
 
        ad->library->ctltab_plist =
                elm_toolbar_item_append(obj, MP_CTRBAR_ICON_PLAYLIST, GET_STR(STR_MP_PLAYLISTS), mp_library_view_change_cb, ad);
+       mp_language_mgr_register_object_item( ad->library->ctltab_plist,STR_MP_PLAYLISTS);
 
+       MP_TA_ACUM_ITEM_END("          elm_toolbar_item_append", 0);
+       MP_TA_ACUM_ITEM_BEGIN("          elm_toolbar_item_append", 0);
        if (menu_state->albums)
+       {
                ad->library->ctltab_album =
                        elm_toolbar_item_append(obj, MP_CTRBAR_ICON_ALBUM, GET_STR(STR_MP_ALBUMS), mp_library_view_change_cb, ad);
-
+               mp_language_mgr_register_object_item( ad->library->ctltab_album, STR_MP_ALBUMS);
+       }
+       MP_TA_ACUM_ITEM_END("          elm_toolbar_item_append", 0);
+       MP_TA_ACUM_ITEM_BEGIN("          elm_toolbar_item_append", 0);
        if (menu_state->artists)
+       {
                ad->library->ctltab_artist =
                        elm_toolbar_item_append(obj, MP_CTRBAR_ICON_ARTIST, GET_STR(STR_MP_ARTISTS), mp_library_view_change_cb, ad);
-
+               mp_language_mgr_register_object_item( ad->library->ctltab_artist, STR_MP_ARTISTS);
+       }
+       MP_TA_ACUM_ITEM_END("          elm_toolbar_item_append", 0);
+       MP_TA_ACUM_ITEM_BEGIN("          elm_toolbar_item_append", 0);
        if (menu_state->genres)
+       {
                ad->library->ctltab_genres =
                        elm_toolbar_item_append(obj, MP_CTRBAR_ICON_GENRE, GET_STR(STR_MP_GENRES), mp_library_view_change_cb, ad);
-
+               mp_language_mgr_register_object_item( ad->library->ctltab_genres, STR_MP_GENRES);
+       }
+       MP_TA_ACUM_ITEM_END("          elm_toolbar_item_append", 0);
+       MP_TA_ACUM_ITEM_BEGIN("          elm_toolbar_item_append", 0);
        if (menu_state->composers)
+       {
                ad->library->ctltab_composer =
                        elm_toolbar_item_append(obj, MP_CTRBAR_ICON_COMPOSER, GET_STR(STR_MP_COMPOSERS), mp_library_view_change_cb, ad);
-
+               mp_language_mgr_register_object_item( ad->library->ctltab_composer,STR_MP_COMPOSERS);
+       }
+       MP_TA_ACUM_ITEM_END("          elm_toolbar_item_append", 0);
+       MP_TA_ACUM_ITEM_BEGIN("          elm_toolbar_item_append", 0);
        if (menu_state->years)
+       {
                ad->library->ctltab_year =
                        elm_toolbar_item_append(obj, MP_CTRBAR_ICON_YEAR, GET_STR(STR_MP_YEARS), mp_library_view_change_cb, ad);
+               mp_language_mgr_register_object_item( ad->library->ctltab_year, STR_MP_YEARS);
+       }
+       MP_TA_ACUM_ITEM_END("          elm_toolbar_item_append", 0);
+       MP_TA_ACUM_ITEM_BEGIN("          elm_toolbar_item_append", 0);
+       if (menu_state->folders)
+       {
+               ad->library->ctltab_folder =
+                       elm_toolbar_item_append(obj, MP_CTRBAR_ICON_FOLDER, GET_SYS_STR(STR_MP_FOLDERS), mp_library_view_change_cb, ad);
+               mp_language_mgr_register_object_item(ad->library->ctltab_folder, STR_MP_FOLDERS);
+       }
+       MP_TA_ACUM_ITEM_END("          elm_toolbar_item_append", 0);
 
        mp_setting_menu_set_callback(_mp_library_menu_changed, ad);
 
 }
 
+/**
+ * load view  use for _mp_library_view_change_cb
+ *
+ * @param void *data, Evas_Object* navi_bar
+ * @return FALSE or TRUE if it success create
+ * @author aramie.kim@samsung.com
+ */
+
 static bool
 _mp_library_load_request_view(void *data, Evas_Object * navi_bar)
 {
@@ -169,12 +234,14 @@ _mp_library_load_request_view(void *data, Evas_Object * navi_bar)
                mp_debug("group name = %s", ad->request_group_name);
                mp_group_view_create_by_group_name(navi_bar, ad->request_group_name, ad->request_group_type);
                IF_FREE(ad->request_group_name);
+               ad->update_default_view = TRUE;
        }
        else if (ad->request_play_id > -1)
        {
                mp_debug("play list id = %d", ad->request_play_id);
                mp_playlist_view_create_by_id(navi_bar, ad->request_play_id);
                ad->request_play_id = -1;
+               ad->update_default_view = TRUE;
        }
        else
        {
@@ -187,66 +254,126 @@ _mp_library_load_request_view(void *data, Evas_Object * navi_bar)
        return true;
 }
 
+static Elm_Object_Item *
+_mp_library_get_request_control_item(struct appdata *ad)
+{
+       Elm_Object_Item *select_request_item = NULL;
+
+       if (ad->loadtype == LOAD_DEFAULT)
+       {
+               select_request_item = ad->library->ctltab_songs;
+       }
+       else if (ad->loadtype == LOAD_PLAYLIST)
+       {
+               select_request_item = ad->library->ctltab_plist;
+       }
+       else if (ad->loadtype == LOAD_GROUP)
+       {
+               mp_setting_menu_t menu_state;
+               mp_setting_menu_get_state(&menu_state);
+
+               if (ad->request_group_type == MP_GROUP_BY_ARTIST)
+               {
+                       if (menu_state.artists)
+                               select_request_item = ad->library->ctltab_artist;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_ALBUM)
+               {
+                       if (menu_state.albums)
+                               select_request_item = ad->library->ctltab_album;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_GENRE)
+               {
+                       if (menu_state.genres)
+                               select_request_item = ad->library->ctltab_genres;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_COMPOSER)
+               {
+                       if (menu_state.composers)
+                               select_request_item = ad->library->ctltab_composer;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_YEAR)
+               {
+                       if (menu_state.years)
+                               select_request_item = ad->library->ctltab_year;
+               }
+               else if (ad->request_group_type == MP_GROUP_BY_FOLDER)
+               {
+                       if (menu_state.folders)
+                               select_request_item = ad->library->ctltab_folder;
+               }
+               else
+               {
+                       mp_error("can not support that value");
+               }
+       }
+
+       return select_request_item;
+}
+
+
 static void
 _mp_library_show_selected_view(struct appdata *ad, const char *label)
 {
        MP_CHECK(ad);
-       MP_CHECK(ad->library);
        MP_CHECK(label);
 
-       Evas_Object *navi_bar = NULL;
+       Evas_Object *content = NULL;
        view_data_t *view_data = NULL;
+       mp_layout_data_t *layout_data = NULL;
 
-       DEBUG_TRACE("label: %s", label);
+       DEBUG_TRACE("selected view: %s", label);
 
-       if (ad->notify != NULL)
-       {
-               evas_object_del(ad->notify);
-       }
-       if (ad->notify_layout != NULL)
-       {
-               evas_object_del(ad->notify_layout);
-       }
+       mp_evas_object_del(ad->notify);
+       mp_evas_object_del(ad->notify_layout);
 
-       ad->notify = NULL;
-       ad->notify_layout = NULL;
+       content = elm_object_part_content_unset(ad->controlbar_layout, "elm.swallow.content");
 
-       if (ad->library->cur_view)
+       if (content)
        {
+               DEBUG_TRACE("destory previous view");
                mp_view_manager_unswallow_info_ug_layout(ad);
-               evas_object_del(ad->library->cur_view);
-               ad->library->cur_view = NULL;
-               mp_view_manager_clear(ad);
+               evas_object_del(content);
+               content = NULL;
        }
 
        if (!strcmp(label, GET_STR(STR_MP_ALL_TRACKS)))
        {
-               navi_bar = mp_track_view_create(ad);
-               mp_track_view_update_title_button(navi_bar);
+               MP_TA_ACUM_ITEM_BEGIN("       mp_track_view_create", 0);
+               content = mp_track_view_create(ad);
+               MP_TA_ACUM_ITEM_END("       mp_track_view_create", 0);
+               MP_TA_ACUM_ITEM_BEGIN("       mp_track_view_update_title_button", 0);
+               mp_track_view_update_title_button(ad->naviframe);
+               MP_TA_ACUM_ITEM_END("       mp_track_view_update_title_button", 0);
        }
        else if (!strcmp(label, GET_STR(STR_MP_ALBUMS)))
        {
-               navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_ALBUM);
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_ALBUM);
        }
        else if (!strcmp(label, GET_STR(STR_MP_ARTISTS)))
        {
-               navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_ARTIST);
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_ARTIST);
        }
        else if (!strcmp(label, GET_STR(STR_MP_GENRES)))
        {
-               navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_GENRE);
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_GENRE);
        }
        else if (!strcmp(label, GET_STR(STR_MP_YEARS)))
        {
-               navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_YEAR);
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_YEAR);
        }
        else if (!strcmp(label, GET_STR(STR_MP_COMPOSERS)))
        {
-               navi_bar = mp_group_view_create(ad, MP_VIEW_TYPE_COMPOSER);
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_COMPOSER);
        }
+       else if (!strcmp(label, GET_SYS_STR(STR_MP_FOLDERS)))
+       {
+               content = mp_group_view_create(ad, MP_VIEW_TYPE_FOLDER);
+       }
+
        else if (!strcmp(label, GET_STR(STR_MP_PLAYLISTS)))
        {
-               navi_bar = mp_playlist_view_create(ad, MP_VIEW_TYPE_PLAYLIST);
+               content = mp_playlist_view_create(ad, MP_VIEW_TYPE_PLAYLIST);
        }
        else
        {
@@ -254,44 +381,55 @@ _mp_library_show_selected_view(struct appdata *ad, const char *label)
                return;
        }
 
+       MP_CHECK(content);
+
+       layout_data = evas_object_data_get(content, "layout_data");
+       MP_CHECK(layout_data);
+
        if (strcmp(label, GET_STR(STR_MP_ALL_TRACKS)))
        {
                ad->b_add_tracks = FALSE;
        }
 
-       elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.content", navi_bar);
-       ad->library->cur_view = navi_bar;
+       elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.content", content);
+       mp_view_layout_update(content);
 
-       if (!_mp_library_load_request_view(ad, navi_bar))
+       if (!_mp_library_load_request_view(ad, ad->naviframe))
        {
                DEBUG_TRACE("Update default layout...");
-               view_data = (view_data_t *) evas_object_data_get(ad->library->cur_view, "view_data");
+               view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data");
                MP_CHECK(view_data);
                MP_CHECK_VIEW_DATA(view_data);
 
-               Evas_Object *view_layout = mp_view_manager_get_last_view_layout(ad);
                if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
                {
-                       mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
-                       if (layout_data)
-                               mp_playlist_view_update_navibutton(layout_data);
+                       mp_playlist_view_update_navibutton(layout_data);
                }
-
-               mp_view_layout_update(view_layout);
        }
 
-       evas_object_show(navi_bar);
+       evas_object_show(content);
 }
 
-void
-mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info)
+void mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info)
 {
        struct appdata *ad = (struct appdata *)data;
        Elm_Object_Item *it;
+       view_data_t *view_data = mp_util_get_view_data(ad);
 
        MP_CHECK(ad);
        DEBUG_TRACE_FUNC();
 
+       if (ad->library->first_append && ad->launch_type == MP_LAUNCH_ADD_TO_HOME) {
+               WARN_TRACE("add to home.. first view change");
+               ad->library->first_append = false;
+               return;
+       }
+
+       if(mp_view_manager_count_view_content(view_data) > 1)
+       {
+               DEBUG_TRACE("pop to first view");
+               mp_view_manager_pop_view_content(view_data, true, true);
+       }
        it = elm_toolbar_selected_item_get(obj);
        mp_retm_if(it == NULL, "tab item is NULL");
        const char *label = elm_object_item_text_get(it);
@@ -303,58 +441,6 @@ mp_library_view_change_cb(void *data, Evas_Object * obj, void *event_info)
 }
 
 
-static Elm_Object_Item *
-_mp_library_get_request_control_item(struct appdata *ad)
-{
-       Elm_Object_Item *select_request_item = NULL;
-
-       if (ad->loadtype == LOAD_DEFAULT)
-       {
-               select_request_item = ad->library->ctltab_songs;
-       }
-       else if (ad->loadtype == LOAD_PLAYLIST)
-       {
-               select_request_item = ad->library->ctltab_plist;
-       }
-       else if (ad->loadtype == LOAD_GROUP)
-       {
-               mp_setting_menu_t menu_state;
-               mp_setting_menu_get_state(&menu_state);
-
-               if (ad->request_group_type == AUDIO_SVC_GROUP_BY_ARTIST)
-               {
-                       if (menu_state.artists)
-                               select_request_item = ad->library->ctltab_artist;
-               }
-               else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_ALBUM)
-               {
-                       if (menu_state.albums)
-                               select_request_item = ad->library->ctltab_album;
-               }
-               else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_GENRE)
-               {
-                       if (menu_state.genres)
-                               select_request_item = ad->library->ctltab_genres;
-               }
-               else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_COMPOSER)
-               {
-                       if (menu_state.composers)
-                               select_request_item = ad->library->ctltab_composer;
-               }
-               else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_YEAR)
-               {
-                       if (menu_state.years)
-                               select_request_item = ad->library->ctltab_year;
-               }
-               else
-               {
-                       mp_error("can not support that value");
-               }
-       }
-
-       return select_request_item;
-}
-
 static bool
 _mp_library_check_request_item(struct appdata *ad)
 {
@@ -362,58 +448,78 @@ _mp_library_check_request_item(struct appdata *ad)
 
        char *popup_text = NULL;
        int count = -1;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        MP_CHECK_FALSE(ad);
 
        if (!ad->request_group_name && ad->request_play_id > -1)
        {
-               char plst_name[AUDIO_SVC_PLAYLIST_NAME_SIZE] = "";
-               ret = audio_svc_get_playlist_name_by_playlist_id(ad->media_svc_handle, ad->request_play_id, plst_name,
-                                                                AUDIO_SVC_PLAYLIST_NAME_SIZE);
+               int i = 0;
+               mp_media_list_h list = NULL;
+
+               ret = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
+               MP_CHECK_FALSE(ret == 0);
+
+               ret = mp_media_info_group_list_create(&list, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count);
+               MP_CHECK_FALSE(ret == 0);
+
+               for(i=0; 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 (!(ret == AUDIO_SVC_ERROR_NONE && g_strcmp0(plst_name, "")))
+               if (i == count)
                {
                        IF_FREE(ad->request_group_name);
                        ad->request_play_id = -1;
                        mp_error("removed play list");
-                       popup_text = g_strdup_printf(GET_STR("IDS_MUSIC_BODY_NO_PLAYLISTS"));
+                       popup_text = g_strdup(GET_STR("IDS_MUSIC_BODY_NO_PLAYLISTS"));
                }
        }
        else if (ad->request_group_name)
        {
-               audio_svc_track_type_e list_type = AUDIO_SVC_TRACK_ALL;
+               mp_track_type_e list_type = MP_TRACK_ALL;
 
                switch (ad->request_group_type)
                {
-               case AUDIO_SVC_GROUP_BY_ALBUM:
+               case MP_GROUP_BY_ALBUM:
                        DEBUG_TRACE("create album detail view");
-                       list_type = AUDIO_SVC_TRACK_BY_ALBUM;
+                       list_type = MP_TRACK_BY_ALBUM;
                        break;
-               case AUDIO_SVC_GROUP_BY_ARTIST:
+               case MP_GROUP_BY_ARTIST:
                        DEBUG_TRACE("create artist detail view");
-                       list_type = AUDIO_SVC_TRACK_BY_ARTIST;
+                       list_type = MP_TRACK_BY_ARTIST;
                        break;
-               case AUDIO_SVC_GROUP_BY_GENRE:
+               case MP_GROUP_BY_GENRE:
                        DEBUG_TRACE("create genre detail view");
-                       list_type = AUDIO_SVC_TRACK_BY_GENRE;
+                       list_type = MP_TRACK_BY_GENRE;
                        break;
-               case AUDIO_SVC_GROUP_BY_YEAR:
+               case MP_GROUP_BY_YEAR:
                        DEBUG_TRACE("create year detail view");
-                       list_type = AUDIO_SVC_TRACK_BY_YEAR;
+                       list_type = MP_TRACK_BY_YEAR;
                        break;
-               case AUDIO_SVC_GROUP_BY_COMPOSER:
+               case MP_GROUP_BY_COMPOSER:
                        DEBUG_TRACE("create composer detail view");
-                       list_type = AUDIO_SVC_TRACK_BY_COMPOSER;
+                       list_type = MP_TRACK_BY_COMPOSER;
+                       break;
+               case MP_GROUP_BY_FOLDER:
+                       DEBUG_TRACE("create folder detail view");
+                       list_type = MP_TRACK_BY_FOLDER;
                        break;
                default:
                        break;
                }
 
-               ret = audio_svc_count_list_item(ad->media_svc_handle, list_type, ad->request_group_name, NULL, NULL, NULL, &count);
-
+               ret = mp_media_info_list_count(list_type, ad->request_group_name, NULL, NULL, 0, &count);
                mp_debug("group cout %d", count);
 
-               if (!(ret == AUDIO_SVC_ERROR_NONE && count > 0))
+               if (!(ret == 0 && count > 0))
                {
                        mp_error("removed group");
                        char *fmt = GET_STR("IDS_MUSIC_POP_PS_REMOVED");
@@ -432,14 +538,14 @@ _mp_library_check_request_item(struct appdata *ad)
                {
                        mp_error("removed file");
                        IF_FREE(ad->request_playing_path);
-                       popup_text = g_strdup(GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST"));
+                       popup_text = g_strdup_printf(GET_SYS_STR("IDS_COM_POP_FILE_NOT_EXIST"));
                }
        }
 
        if (popup_text)
        {
                mp_widget_text_popup(ad, popup_text);
-               IF_FREE(popup_text);
+               free(popup_text);
                return false;
        }
 
@@ -451,26 +557,30 @@ _mp_library_get_control_tab_label(struct appdata *ad)
 {
        MP_CHECK_NULL(ad);
        char *label = NULL;
-       if (ad->request_group_type == AUDIO_SVC_GROUP_BY_ARTIST)
+       if (ad->request_group_type == MP_GROUP_BY_ARTIST)
        {
                label = GET_STR(STR_MP_ARTISTS);
        }
-       else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_ALBUM)
+       else if (ad->request_group_type == MP_GROUP_BY_ALBUM)
        {
                label = GET_STR(STR_MP_ALBUMS);
        }
-       else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_GENRE)
+       else if (ad->request_group_type == MP_GROUP_BY_GENRE)
        {
                label = GET_STR(STR_MP_GENRES);
        }
-       else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_COMPOSER)
+       else if (ad->request_group_type == MP_GROUP_BY_COMPOSER)
        {
                label = GET_STR(STR_MP_COMPOSERS);
        }
-       else if (ad->request_group_type == AUDIO_SVC_GROUP_BY_YEAR)
+       else if (ad->request_group_type == MP_GROUP_BY_YEAR)
        {
                label = GET_STR(STR_MP_YEARS);
        }
+       else if (ad->request_group_type == MP_GROUP_BY_FOLDER)
+       {
+               label = GET_SYS_STR(STR_MP_FOLDERS);
+       }
        else
        {
                mp_error("can not support that value");
@@ -478,6 +588,14 @@ _mp_library_get_control_tab_label(struct appdata *ad)
        return label;
 }
 
+/**
+ * load library use for add to home case
+ *
+ * @param struct appdata *ad, char *path, int fid
+ * @return FALSE or TRUE if it success create
+ * @author aramie.kim@samsung.com
+ */
+
 bool
 mp_library_load(struct appdata * ad)
 {
@@ -491,13 +609,14 @@ mp_library_load(struct appdata * ad)
        }
        else
        {
+               //Select current tab
                Elm_Object_Item *selected_item = NULL;
                Elm_Object_Item *select_request_item = NULL;
 
-               if (!ad->ctrl_bar)
-                       _mp_library_create_control_bar(ad);
+               if (!ad->tabbar)
+                       _mp_library_create_tabbar(ad);
                else
-                       selected_item = elm_toolbar_selected_item_get(ad->ctrl_bar);
+                       selected_item = elm_toolbar_selected_item_get(ad->tabbar);
 
                select_request_item = _mp_library_get_request_control_item(ad);
 
@@ -505,14 +624,15 @@ mp_library_load(struct appdata * ad)
                {
                        view_data_t *view_data = NULL;
 
-                       if (ad->library->cur_view)
+                       if (ad->naviframe)
                        {
-                               view_data = evas_object_data_get(ad->library->cur_view, "view_data");
+                               //clear all item
+                               view_data = evas_object_data_get(ad->naviframe, "view_data");
                                MP_CHECK_FALSE(view_data);
                                MP_CHECK_VIEW_DATA(view_data);
                                mp_view_manager_pop_view_content(view_data, TRUE, TRUE);
 
-                               _mp_library_load_request_view(ad, ad->library->cur_view);
+                               _mp_library_load_request_view(ad, ad->naviframe);
                        }
                        else
                                mp_error("invalid cur_view");
@@ -528,7 +648,7 @@ mp_library_load(struct appdata * ad)
                        {
                                char *label = _mp_library_get_control_tab_label(ad);
                                MP_CHECK_FALSE(label);
-                               _mp_library_show_selected_view(ad, label);
+                               elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE);
                        }
                        else
                                ERROR_TRACE("It shouldn't be here..");
@@ -546,18 +666,42 @@ mp_library_create(struct appdata *ad)
 {
        startfunc;
 
+       Evas_Object *tabbar = NULL;
+       view_data_t *view_data = NULL;
+
+       //init
        _mp_library_init(ad);
 
+       //create layout_main
+       MP_TA_ACUM_ITEM_BEGIN("      _mp_library_create_layout_main", 0);
        ad->base_layout_main = _mp_library_create_layout_main(ad->win_main);
        mp_retm_if(ad->base_layout_main == NULL, "library view layout is not initialized");
+       MP_TA_ACUM_ITEM_END("      _mp_library_create_layout_main", 0);
 
-       ad->controlbar_layout = mp_common_load_edj(ad->base_layout_main, EDJ_NAME, "control_layout");
+       ad->naviframe = mp_widget_navigation_new(ad->base_layout_main, ad);
+
+       view_data = calloc(sizeof(view_data_t), 1);
+       MP_SET_VIEW_DATA_MAGIC(view_data);
+       view_data->ad = ad;
+       view_data->navibar = ad->naviframe;
+
+       evas_object_data_set(ad->naviframe, "view_data", view_data);
+
+       MP_TA_ACUM_ITEM_BEGIN("      elm_layout_add", 0);
+       ad->controlbar_layout = elm_layout_add(ad->base_layout_main);
        MP_CHECK(ad->controlbar_layout);
-       mp_library_controlbar_visible_set(ad, true);
+       elm_layout_theme_set(ad->controlbar_layout, "layout", "tabbar", "default");
+       MP_TA_ACUM_ITEM_END("      elm_layout_add", 0);
 
-       elm_object_part_content_set(ad->base_layout_main, "elm.swallow.content", ad->controlbar_layout);
+       mp_view_manager_push_view_content(view_data, ad->controlbar_layout, MP_VIEW_CONTENT_LIST);
 
-       _mp_library_create_control_bar(ad);
+       elm_object_part_content_set(ad->base_layout_main, "elm.swallow.content", ad->naviframe);
+
+       //create control tab
+       MP_TA_ACUM_ITEM_BEGIN("      _mp_library_create_tabbar", 0);
+       tabbar = _mp_library_create_tabbar(ad);
+       elm_object_part_content_set(ad->controlbar_layout, "elm.swallow.tabbar", tabbar);
+       MP_TA_ACUM_ITEM_END("      _mp_library_create_tabbar", 0);
 
        if(ad->loadtype == LOAD_TRACK)
        {
@@ -566,9 +710,13 @@ mp_library_create(struct appdata *ad)
        }
 
        Elm_Object_Item *reqeust_item = _mp_library_get_request_control_item(ad);
+
+       //select tabbar item
        if (reqeust_item)
        {
+               MP_TA_ACUM_ITEM_BEGIN("      elm_toolbar_item_selected_set", 0);
                elm_toolbar_item_selected_set(reqeust_item, EINA_TRUE);
+               MP_TA_ACUM_ITEM_END("      elm_toolbar_item_selected_set", 0);
        }
        else
        {
@@ -587,11 +735,9 @@ void
 mp_library_update_view(struct appdata *ad)
 {
        MP_CHECK(ad);
-       MP_CHECK(ad->library);
-       Evas_Object *cur_view = ad->library->cur_view;
-       MP_CHECK(ad->library->cur_view);
+       MP_CHECK(ad->naviframe);
 
-       view_data_t *cur_view_data = evas_object_data_get(cur_view, "view_data");
+       view_data_t *cur_view_data = evas_object_data_get(ad->naviframe, "view_data");
        MP_CHECK(cur_view_data);
 
        MP_CHECK_VIEW_DATA(cur_view_data);
@@ -604,7 +750,7 @@ mp_library_now_playing_hide(struct appdata *ad)
        if (ad->show_now_playing)
        {
                ad->show_now_playing = FALSE;
-               view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->library->cur_view, "view_data");
+               view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data");
                MP_CHECK(view_data);
                MP_CHECK_VIEW_DATA(view_data);
 
@@ -615,7 +761,7 @@ mp_library_now_playing_hide(struct appdata *ad)
 void
 mp_library_now_playing_set(struct appdata *ad)
 {
-       view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->library->cur_view, "view_data");
+       view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data");
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
 
@@ -627,13 +773,4 @@ mp_library_now_playing_set(struct appdata *ad)
        mp_view_manager_set_now_playing(view_data, TRUE);
 }
 
-void
-mp_library_controlbar_visible_set(struct appdata *ad, bool visible)
-{
-       MP_CHECK(ad);
-       if(visible)
-               edje_object_signal_emit(_EDJ(ad->controlbar_layout), "show.control", "music_app");
-       else
-               edje_object_signal_emit(_EDJ(ad->controlbar_layout), "hide.control", "music_app");
-}
 
index 837ad03..6dd430e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 #include <glib.h>
 #include "music.h"
 #include "mp-play-view.h"
 #include "mp-player-drm.h"
 #include "mp-smart-event-box.h"
 #include "mp-file-tag-info.h"
-#include "mp-common.h"
 #include "mp-player-mgr.h"
 #include "mp-player-debug.h"
 #include "mp-play-list.h"
 #include "mp-util.h"
-#include "mp-library.h"
 #include "mp-app.h"
 #include "mp-menu.h"
 #include "mp-widget.h"
 #include "mp-popup.h"
+#include "mp-ug-launch.h"
 #include "mp-streaming-mgr.h"
 
+#include "mp-minicontroller.h"
+#include "mp-setting-ctrl.h"
+
+#ifdef MP_SOUND_PLAYER
+#include "sp-view-manager.h"
+#else
+#include "mp-common.h"
+#include "mp-library.h"
+#endif
+
+#ifndef ABS
+#define ABS(x) ((x) < 0 ? -(x) : (x))
+#endif
+
+#define MAIN_W                 480
+#define MAIN_H                 800
+
+#define HD_SCREEN_WIDTH 720.0
+#define HD_INFO_RIGHT_WIDTH 550.0
 #define HD_ALBUM_IMAGE_H_SCALE 720/1280
 
+#define PROGRESS_BAR_POSITION 20       /*80 */
+#define LS_PROGRESS_BAR_POSITION 340   /*400 */
+
 #define CTR_EDJ_SIG_SRC "ctrl_edj"
 #define CTR_PROG_SIG_SRC "ctrl_prog"
 #define PLAYVIEW_TRANSIT_TIME (0.35)
 #define FAVOUR_LONG_PRESS_TIME (1.5)
 
+#define ALBUMART_IMAGE_COLOR 160
+#define ALBUMART_IMAGE_SHADOW_RGBA 60, 60, 60, 123
+#define ALBUMART_IMAGE_SHADOW_RGBA1 100, 100, 100, 123
+#define ALBUMART_IMAGE_SHADOW_RGBA2 0, 0, 0, 123
+#define EVAS_OBJ_SHOW(obj) if(obj){evas_object_show(obj);}
+#define EVAS_OBJ_HIDE(obj) if(obj){evas_object_hide(obj);}
+#define EVAS_OBJ_MOVE(obj, x, y) if(obj){evas_object_move(obj, x, y);}
+static void _mp_play_view_set_album_art(void *data, char *file_path);
+static void _mp_play_view_album_art_update(void *data);
+Evas_Object *_mp_play_view_create_bg_map(void *data, Evas_Object * parents, music_list_item * current_item);
+
 static void _mp_play_progress_val_set(void *data, double position);
 static bool _mp_play_view_init_progress_bar(void *data);
 static bool _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_left);
 static void _mp_play_view_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_info);
 static Evas_Object *_mp_play_view_create_ctrl_layout(void *data, Evas_Object * parents, Evas_Object ** progress,
                                                     bool remove_signal);
+#ifndef MP_SOUND_PLAYER
 static void _mp_play_view_start_request(void *data, Evas_Object * obj, void *event_info);
+#endif
 static void _mp_play_view_glist_free_cb(gpointer data);
 
 
@@ -69,18 +102,28 @@ _mp_play_view_init(void *data)
        playing_view->layout = NULL;
        playing_view->play_view = NULL;
        playing_view->play_control = NULL;
-       playing_view->play_menu = NULL; //information, shuffle, repeat
+       playing_view->play_menu = NULL; //information, srs, shuffle, repeat
        playing_view->play_progressbar = NULL;
        playing_view->play_info = NULL;
+       playing_view->albumart_img = NULL;
 
        playing_view->albumart_bg = NULL;
+       playing_view->albumart_image_reflection = NULL;
+       playing_view->pre_albumart_image_reflection = NULL;
        playing_view->flick_direction = 0;
        ad->volume_long_pressed = false;
 
        playing_view->play_view_next = NULL;
+       playing_view->x = 0;
+       playing_view->y = 0;
+       playing_view->favour_longpress = 0;
+       playing_view->favourite_timer = NULL;
        playing_view->progressbar_timer = NULL;
 
+       playing_view->play_view_screen_mode = MP_SCREEN_MODE_PORTRAIT;
+
        playing_view->transition_state = false;
+       playing_view->b_play_all = false;
 
        endfunc;
 
@@ -102,8 +145,11 @@ mp_play_view_back_clicked_cb(void *data, Evas_Object * obj, void *event_info)
                mp_evas_object_del(ad->playing_view->play_icon);
 
        {
-               MP_CHECK(ad->library);
-               view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data");
+#ifdef MP_SOUND_PLAYER
+               mp_play_view_unswallow_info_ug_layout(ad);
+               sp_view_mgr_pop_view_content(ad->view_mgr, FALSE);
+#else
+               view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
                MP_CHECK(view_data);
                mp_view_manager_pop_view_content(view_data, FALSE, FALSE);
 
@@ -112,6 +158,7 @@ mp_play_view_back_clicked_cb(void *data, Evas_Object * obj, void *event_info)
                        mp_util_set_library_controlbar_items(ad);
                        ad->music_setting_change_flag = false;
                }
+#endif
        }
        if (ad->buffering_popup)
                mp_streaming_mgr_buffering_popup_control(ad, false);
@@ -144,12 +191,50 @@ mp_play_view_info_back_cb(void *data, Evas_Object * obj, void *event_info)
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
        mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
+       ad->info_click_flag = FALSE;
        mp_playing_view *playing_view = ad->playing_view;
-       _mp_play_view_clear_animator(ad);
-       view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data");
-       mp_view_manager_pop_view_content(view_data, FALSE, FALSE);
-       if (playing_view)
-               playing_view->play_info = NULL;
+       //show albumart_image_reflection
+       if (playing_view && playing_view->albumart_image_reflection)
+       {
+               evas_object_show(playing_view->albumart_image_reflection);
+               evas_object_show(playing_view->albumart_image);
+       }
+       if(ad->info_ug)
+       {
+               int first_view = (int)evas_object_data_get(ad->info_ug_layout, "first_view");
+               if(first_view)
+               {
+                       ad->info_back_play_view_flag = TRUE;
+#ifdef MP_SOUND_PLAYER
+                       mp_play_view_unswallow_info_ug_layout(ad);
+                       sp_view_mgr_pop_view_content(ad->view_mgr, FALSE);
+#else
+                       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
+                       mp_view_manager_pop_view_content(view_data, FALSE, FALSE);
+#endif
+                       if (playing_view)
+                               playing_view->play_info = NULL;
+               }
+               else
+               {
+                       ad->info_back_play_view_flag = FALSE;
+                       mp_ug_send_message(ad, MP_UG_MESSAGE_BACK);
+               }
+       }
+       else
+       {
+               _mp_play_view_clear_animator(ad);
+               ad->info_back_play_view_flag = TRUE;
+#ifdef MP_SOUND_PLAYER
+               mp_play_view_unswallow_info_ug_layout(ad);
+               sp_view_mgr_pop_view_content(ad->view_mgr, FALSE);
+#else
+               view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
+               mp_view_manager_pop_view_content(view_data, FALSE, FALSE);
+#endif
+               if (playing_view)
+                       playing_view->play_info = NULL;
+       }
        endfunc;
        return;
 }
@@ -175,17 +260,26 @@ static char *
 _mp_play_view_info_gl_label_get(void *data, Evas_Object * obj, const char *part)
 {
        mp_media_info_t *info = (mp_media_info_t *)data;
+       char *text;
 
        if (!g_strcmp0(part, "elm.text.1"))
        {
                MP_CHECK_NULL(info);
                DEBUG_TRACE("%s", info->header);
-               return g_strdup(info->header);
+               if(info->header && strstr(info->header, "IDS_COM"))
+                       text = GET_SYS_STR(info->header);
+               else
+                       text = GET_STR(info->header);
+               return g_strdup(text);
        }
        else if (!g_strcmp0(part, "elm.text.2"))
        {
                MP_CHECK_NULL(info);
-               return elm_entry_utf8_to_markup(info->detail);
+               if(info->detail && strstr(info->detail, "IDS_COM"))
+                       text = GET_SYS_STR(info->detail);
+               else
+                       text = GET_STR(info->detail);
+               return g_strdup(text);
        }
 
        return NULL;
@@ -202,6 +296,9 @@ _mp_play_view_info_gl_item_del(void *data, Evas_Object * obj)
 }
 
 static Elm_Genlist_Item_Class info_view_info_item_class = {
+       .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+       .refcount = 0,
+       .delete_me = EINA_FALSE,
        .item_style = "multiline/music_player/info",
        .func.text_get = _mp_play_view_info_gl_label_get,
        .func.del = _mp_play_view_info_gl_item_del,
@@ -229,6 +326,8 @@ _ecore_animator_cb(void *data)
                if(item)
                        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
+               mp_language_mgr_register_genlist_item(item);
+
                ad->minfo_list = g_list_delete_link(ad->minfo_list, ad->minfo_list);
                return EINA_TRUE;
        }
@@ -269,6 +368,32 @@ _mp_play_view_glist_free_cb(gpointer data)
        _mp_play_view_info_gl_item_del(data, NULL);
 }
 
+static void
+_mp_play_view_append_drm_info(Evas_Object *genlist, const char *path)
+{
+       startfunc;
+       MP_CHECK(genlist);
+       MP_CHECK(path);
+
+       GList *rs_list = mp_drm_get_right_status(path);
+       if (rs_list) {
+               mp_debug("show right_status");
+               GList *current = rs_list;
+               while (current) {
+                       mp_drm_right_status_t *rs = current->data;
+                       if (rs)
+                               _mp_play_view_create_info_item(genlist,
+                                                             rs->type,
+                                                             rs->validity);
+
+                       current = current->next;
+               }
+
+               mp_drm_free_right_status(rs_list);
+               rs_list = NULL;
+       }
+}
+
 static Evas_Object *
 _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
 {
@@ -280,24 +405,26 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
        int ret = 0;
        Evas_Object *genlist;
 
-       AudioHandleType *svc_audio_item;
+       mp_media_info_h svc_audio_item;
        char *pathname = NULL, *title = NULL, *album = NULL, *artist = NULL, *thumbname = NULL, *genre = NULL;
-       char *author = NULL, *copyright = NULL, *format = NULL;
-       int duration = 0, track = 0, size = 0;
-
-       audio_svc_item_new(&svc_audio_item);
-               ret = audio_svc_get_item_by_audio_id(ad->media_svc_handle, cur_item->key_id, svc_audio_item);
-       ret = audio_svc_item_get_val(svc_audio_item, AUDIO_SVC_TRACK_DATA_PATHNAME, &pathname, &size,
-                                            AUDIO_SVC_TRACK_DATA_TITLE, &title, &size,
-                                            AUDIO_SVC_TRACK_DATA_ALBUM, &album, &size,
-                                            AUDIO_SVC_TRACK_DATA_ARTIST, &artist, &size,
-                                            AUDIO_SVC_TRACK_DATA_THUMBNAIL_PATH, &thumbname, &size,
-                                            AUDIO_SVC_TRACK_DATA_GENRE, &genre, &size,
-                                            AUDIO_SVC_TRACK_DATA_COPYRIGHT, &copyright, &size,
-                                            AUDIO_SVC_TRACK_DATA_AUTHOR, &author, &size,
-                                            AUDIO_SVC_TRACK_DATA_DURATION, &duration,
-                                            AUDIO_SVC_TRACK_DATA_TRACK_NUM, &track,
-                                            AUDIO_SVC_TRACK_DATA_FORMAT, &format, &size, -1);
+       char *author = NULL, *copyright = NULL, *format = NULL, *track_num = NULL;
+       int duration = 0;
+
+       {
+               ret = mp_media_info_create(&svc_audio_item, cur_item->key_id);
+
+               mp_media_info_get_file_path(svc_audio_item, &pathname);
+               mp_media_info_get_title(svc_audio_item, &title);
+               mp_media_info_get_album(svc_audio_item, &album);
+               mp_media_info_get_artist(svc_audio_item, &artist);
+               mp_media_info_get_thumbnail_path(svc_audio_item, &thumbname);
+               mp_media_info_get_genre(svc_audio_item, &genre);
+               mp_media_info_get_copyright(svc_audio_item, &copyright);
+               mp_media_info_get_composer(svc_audio_item, &author);
+               mp_media_info_get_duration(svc_audio_item, &duration);
+               mp_media_info_get_track_num(svc_audio_item, &track_num);
+               mp_media_info_get_format(svc_audio_item, &format);
+       }
 
        _mp_play_view_clear_animator(ad);
 
@@ -308,24 +435,16 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
        elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
        evas_object_data_set(genlist, "ad", ad);
 
-       if (ret == AUDIO_SVC_ERROR_NONE)
+       if (ret == 0)
        {
-               if (artist && strlen(artist))
-               {
-
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_ARTIST"), artist);
-
-               }
-
 
-                       _mp_play_view_create_info_item(genlist, GET_SYS_STR("IDS_COM_BODY_DETAILS_TITLE"), title);
+               if (artist && strlen(artist))
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ARTIST"), artist);
 
+               _mp_play_view_create_info_item(genlist, ("IDS_COM_BODY_DETAILS_TITLE"), title);
 
                if (album && strlen(album))
-               {
-                        _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_ALBUM"), album);
-
-               }
+                        _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ALBUM"), album);
 
                char duration_format[10] = { 0, };
                int dur_sec = duration / 1000;
@@ -333,74 +452,56 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                int min = dur_sec / 60;
                snprintf(duration_format, sizeof(duration_format), "%02u:%02u", min, sec);
 
-
-                       _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_TRACK_LENGTH"),
+               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_LENGTH"),
                                                              duration_format);
 
 
                if (genre && strlen(genre))
-               {
-                        _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_GENRE"), genre);
-
-               }
+                        _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_GENRE"), genre);
 
                if (author && strlen(author))
-               {
-
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_AUTHOR"), author);
-
-               }
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_AUTHOR"), author);
 
                if (copyright && strlen(copyright))
-               {
-                        _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_COPYRIGHT"), copyright);
-
-               }
+                        _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_COPYRIGHT"), copyright);
 
-               if(mp_drm_file_right(cur_item->filename))
                {
                        if (mp_drm_get_description(ad, cur_item->filename))
-
-                                       _mp_play_view_create_info_item(genlist,
-                                                                             GET_STR("IDS_MUSIC_BODY_DESCRIPTION"),
+                               _mp_play_view_create_info_item(genlist,
+                                                                             ("IDS_MUSIC_BODY_DESCRIPTION"),
                                                                              ad->drm_info.description);
                        else
-
-                                       _mp_play_view_create_info_item(genlist,
-                                                                             GET_STR("IDS_MUSIC_BODY_DESCRIPTION"),
+                               _mp_play_view_create_info_item(genlist,
+                                                                             ("IDS_MUSIC_BODY_DESCRIPTION"),
                                                                              "-");
 
 
                        if (ad->drm_info.forward)
-
-                                       _mp_play_view_create_info_item(genlist,
-                                                                             GET_STR("IDS_MUSIC_BODY_FORWARDING"),
-                                                                             GET_STR("IDS_MUSIC_BODY_POSSIBLE"));
+                               _mp_play_view_create_info_item(genlist,
+                                                                             ("IDS_MUSIC_BODY_FORWARDING"),
+                                                                             ("IDS_MUSIC_BODY_POSSIBLE"));
                        else
+                               _mp_play_view_create_info_item(genlist,
+                                                                             ("IDS_MUSIC_BODY_FORWARDING"),
+                                                                             ("IDS_MUSIC_BODY_IMPOSSIBLE"));
 
-                                       _mp_play_view_create_info_item(genlist,
-                                                                             GET_STR("IDS_MUSIC_BODY_FORWARDING"),
-                                                                             GET_STR("IDS_MUSIC_BODY_IMPOSSIBLE"));
-
+                       /* right status */
+                       _mp_play_view_append_drm_info(genlist, cur_item->filename);
                }
 
-               if (track > 0)
+               if (track_num && strlen(track_num))
                {
-                       char *track_num = g_strdup_printf("%d", track);
-                        _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_TRACK_NUMBER"), track_num);
-
-                       SAFE_FREE(track_num);
+                        _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_NUMBER"), track_num);
                }
 
                if (format && strlen(format))
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_FORMAT"), format);
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_FORMAT"), format);
 
                }
 
-
-                       _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_MUSIC_LOCATION"),
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_MUSIC_LOCATION"),
                                                              cur_item->filename);
        }
        else
@@ -411,7 +512,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                if (tag_info.artist && strlen(tag_info.artist))
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_ARTIST"),
+                               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ARTIST"),
                                                                      tag_info.artist);
 
                }
@@ -419,7 +520,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                if (tag_info.title && strlen(tag_info.title))
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_SYS_STR("IDS_COM_BODY_DETAILS_TITLE"),
+                               _mp_play_view_create_info_item(genlist, ("IDS_COM_BODY_DETAILS_TITLE"),
                                                                      tag_info.title);
 
                }
@@ -427,7 +528,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                if (tag_info.album && strlen(tag_info.album))
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_ALBUM"),
+                               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_ALBUM"),
                                                                      tag_info.album);
 
                }
@@ -439,14 +540,14 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                snprintf(duration_format, sizeof(duration_format), "%02u:%02u", min, sec);
 
 
-                       _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_TRACK_LENGTH"),
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_LENGTH"),
                                                              duration_format);
 
 
                if (tag_info.genre && strlen(tag_info.genre))
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_GENRE"),
+                               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_GENRE"),
                                                                      tag_info.genre);
 
                }
@@ -454,7 +555,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                if (tag_info.author && strlen(tag_info.author))
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_AUTHOR"),
+                               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_AUTHOR"),
                                                                      tag_info.author);
 
                }
@@ -462,35 +563,36 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                if (tag_info.copyright && strlen(tag_info.copyright))
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_COPYRIGHT"), tag_info.copyright);
+                               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_COPYRIGHT"), tag_info.copyright);
 
                }
 
-               if(mp_drm_file_right(cur_item->filename))
                {
                        if (mp_drm_get_description(ad, cur_item->filename))
 
                                        _mp_play_view_create_info_item(genlist,
-                                                                             GET_STR("IDS_MUSIC_BODY_DESCRIPTION"),
+                                                                             ("IDS_MUSIC_BODY_DESCRIPTION"),
                                                                              ad->drm_info.description);
                        else
 
                                        _mp_play_view_create_info_item(genlist,
-                                                                             GET_STR("IDS_MUSIC_BODY_DESCRIPTION"),
+                                                                             ("IDS_MUSIC_BODY_DESCRIPTION"),
                                                                              "-");
 
 
                        if (ad->drm_info.forward)
 
                                        _mp_play_view_create_info_item(genlist,
-                                                                             GET_STR("IDS_MUSIC_BODY_FORWARDING"),
-                                                                             GET_STR("IDS_MUSIC_BODY_POSSIBLE"));
+                                                                             ("IDS_MUSIC_BODY_FORWARDING"),
+                                                                             ("IDS_MUSIC_BODY_POSSIBLE"));
                        else
 
                                        _mp_play_view_create_info_item(genlist,
-                                                                             GET_STR("IDS_MUSIC_BODY_FORWARDING"),
-                                                                             GET_STR("IDS_MUSIC_BODY_IMPOSSIBLE"));
+                                                                             ("IDS_MUSIC_BODY_FORWARDING"),
+                                                                             ("IDS_MUSIC_BODY_IMPOSSIBLE"));
 
+                       /* right status */
+                       _mp_play_view_append_drm_info(genlist, cur_item->filename);
                }
 
                if (tag_info.track && strlen(tag_info.track))
@@ -498,7 +600,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                        if (!strstr(tag_info.track, "-") && g_strcmp0(tag_info.track, "0"))
                        {
 
-                                       _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_TRACK_NUMBER"),
+                                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_TRACK_NUMBER"),
                                                                              tag_info.track);
 
                        }
@@ -507,7 +609,7 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                if (tag_info.rating && strlen(tag_info.rating))
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_PARENT_RATING"),
+                               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_PARENT_RATING"),
                                                                      tag_info.rating);
 
                }
@@ -525,14 +627,14 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
                if (format)
                {
 
-                               _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_FORMAT"),
+                               _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_FORMAT"),
                                                                      format->str);
 
                        g_string_free(format, TRUE);
                }
 
 
-                       _mp_play_view_create_info_item(genlist, GET_STR("IDS_MUSIC_BODY_MUSIC_LOCATION"),
+                       _mp_play_view_create_info_item(genlist, ("IDS_MUSIC_BODY_MUSIC_LOCATION"),
                                                              cur_item->filename);
 
 
@@ -540,7 +642,8 @@ _mp_play_view_create_info_detail(Evas_Object * parent, void *data)
        }
 
        evas_object_show(genlist);
-       audio_svc_item_free(svc_audio_item);
+
+       mp_media_info_destroy(svc_audio_item);
        elm_object_part_content_set(parent, "mi_content", genlist);
        return genlist;
 }
@@ -566,6 +669,7 @@ mp_play_view_create_info_contents(Evas_Object * parent, void *data)
        elm_object_part_content_set(info_view_left_area, "video_play_img", video_play_img);
        evas_object_show(video_play_img);
 
+       //add current albumart image
        Evas_Object *album_image = elm_image_add(info_view_left_area);
        if (strlen(cur_item->albumart) && mp_util_is_image_valid(ad->evas, cur_item->albumart))
        {
@@ -581,7 +685,9 @@ mp_play_view_create_info_contents(Evas_Object * parent, void *data)
        evas_object_event_callback_add(video_play_img, EVAS_CALLBACK_MOUSE_MOVE, NULL, NULL);
        evas_object_event_callback_add(video_play_img, EVAS_CALLBACK_MOUSE_UP,
                                       _mp_play_view_sb_click_info_albumart, ad);
+       /***********create left area end********************/
 
+       /***********create right area start********************/
        Evas_Object *right_base_box = mp_common_load_edj(parent, PLAY_VIEW_EDJ_NAME, "base_box_no_xml");
        MP_CHECK(right_base_box);
        elm_object_part_content_set(parent, "base_box", right_base_box);
@@ -593,10 +699,13 @@ mp_play_view_create_info_contents(Evas_Object * parent, void *data)
        elm_object_part_content_set(right_base_box, "no_sim_media_content", right_base_box_detail);
        evas_object_show(right_base_box_detail);
        edje_object_part_text_set(_EDJ(right_base_box_detail), "title", GET_STR("IDS_MUSIC_BODY_DETAILS_MEADIA_INFO"));
+       mp_language_mgr_register_object(right_base_box_detail, OBJ_TYPE_EDJE_OBJECT, "title", "IDS_MUSIC_BODY_DETAILS_MEADIA_INFO");
        Evas_Object *item = _mp_play_view_create_info_detail(right_base_box_detail, ad);
        MP_CHECK(item);
        elm_object_part_content_set(right_base_box_detail, "mi_scroller", item);
+       /***********create right area end********************/
 
+       //add scroller to right area
        elm_object_part_content_set(parent, "no_xml_no_sim_detail_scroller", right_base_box_detail);
 }
 
@@ -606,10 +715,9 @@ _mp_play_view_popup_bt_cb(void *data, Evas_Object * obj, void *event_info)
        DEBUG_TRACE_FUNC();
        struct appdata *ad = (struct appdata *)data;
 
-       int ret = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_DEFAULT);
-
-       if (ret != MM_ERROR_NONE)
-               WARN_TRACE("Error: mm_sound_route_set_system_policy(0x%x)", ret);
+       int ret = sound_manager_set_active_route(SOUND_ROUTE_OUT_BLUETOOTH);
+       if (ret != SOUND_MANAGER_ERROR_NONE)
+               WARN_TRACE("Error: sound_manager_set_route_policy(0x%x)", ret);
        else
                elm_radio_value_set(ad->radio_group, MP_SND_PATH_BT);
 
@@ -622,35 +730,26 @@ _mp_play_view_popup_headphone_cb(void *data, Evas_Object * obj, void *event_info
        DEBUG_TRACE_FUNC();
        struct appdata *ad = (struct appdata *)data;
 
-       int ret = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP);
-       if (ret != MM_ERROR_NONE)
-               WARN_TRACE("Error: mm_sound_route_set_system_policy(0x%x)", ret);
+       int ret = sound_manager_set_active_route(SOUND_ROUTE_OUT_WIRED_ACCESSORY);
+       if (ret != SOUND_MANAGER_ERROR_NONE)
+               WARN_TRACE("Error: sound_manager_set_route_policy(0x%x)", ret);
        else
                elm_radio_value_set(ad->radio_group, MP_SND_PATH_EARPHONE);
 
        mp_popup_destroy(ad);
 }
 
-
+//2 merge play view at 20110118
 static void
 _mp_play_view_popup_speaker_cb(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE_FUNC();
        struct appdata *ad = (struct appdata *)data;
 
-       int earjack = 0;
        int ret = 0;
-
-       if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack))
-               WARN_TRACE("Earjack state get Fail...");
-
-       if (earjack)
-               ret = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_HANDSET_ONLY);
-       else
-               ret = mm_sound_route_set_system_policy(SYSTEM_AUDIO_ROUTE_POLICY_IGNORE_A2DP);
-
-       if (ret != MM_ERROR_NONE)
-               WARN_TRACE("Error: mm_sound_route_set_system_policy(0x%x)", ret);
+       ret = sound_manager_set_active_route(SOUND_ROUTE_OUT_SPEAKER);
+       if (ret != SOUND_MANAGER_ERROR_NONE)
+               WARN_TRACE("Error: sound_manager_set_route_policy(0x%x)", ret);
        else
                elm_radio_value_set(ad->radio_group, MP_SND_PATH_SPEAKER);
 
@@ -681,7 +780,7 @@ mp_play_view_update_snd_path(struct appdata *ad)
        MP_CHECK(ad);
 
        bool popup_exist = false;
-       int bt_connected = 0;
+       bool bt_connected = false;
        int earjack = 0;
        static char *bt_name;
        int ret = 0;
@@ -697,10 +796,10 @@ mp_play_view_update_snd_path(struct appdata *ad)
        if(popup_exist)
        {
                IF_FREE(bt_name);
-               ret = mm_sound_route_get_a2dp_status(&bt_connected, &bt_name);
-               if (ret != MM_ERROR_NONE)
+               ret = sound_manager_get_a2dp_status(&bt_connected, &bt_name);
+               if (ret != SOUND_MANAGER_ERROR_NONE)
                {
-                       WARN_TRACE("Fail to mm_sound_route_get_a2dp_status ret = [%d]", ret);
+                       WARN_TRACE("Fail to sound_manager_get_a2dp_status ret = [%d]", ret);
                }
                if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack))
                        WARN_TRACE("Earjack state get Fail...");
@@ -711,6 +810,7 @@ mp_play_view_update_snd_path(struct appdata *ad)
                }
                else
                {
+                       // TODO: updating list is not working now.. there is timing issue... complete it after MMFW support..
                        evas_object_del(popup);
                }
        }
@@ -731,9 +831,10 @@ mp_play_view_set_snd_path_cb(void *data, Evas_Object *obj, void *event_info)
        Evas_Object *popup = NULL;
 
        int ret = 0;
-       int bt_connected = 0;
+       bool bt_connected = false;
        int earjack = 0;
 
+       // use bt_name as static. bt_name can be used again in gl_label_get function when genlist of popup scrolled.
        static char *bt_name = NULL;
 
        popup = mp_genlist_popup_create(ad->win_main, MP_POPUP_SOUND_PATH, ad, ad);
@@ -747,10 +848,10 @@ mp_play_view_set_snd_path_cb(void *data, Evas_Object *obj, void *event_info)
        evas_object_data_set(genlist, "ad", ad);
 
        IF_FREE(bt_name);
-       ret = mm_sound_route_get_a2dp_status(&bt_connected, &bt_name);
-       if (ret != MM_ERROR_NONE)
+       ret = sound_manager_get_a2dp_status(&bt_connected, &bt_name);
+       if (ret != SOUND_MANAGER_ERROR_NONE)
        {
-               WARN_TRACE("Fail to mm_sound_route_get_a2dp_status ret = [%d]", ret);
+               WARN_TRACE("Fail to sound_manager_get_a2dp_status ret = [%d]", ret);
        }
 
        if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack))
@@ -770,7 +871,10 @@ _mp_play_view_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_in
        struct appdata *ad = playing_view->ad;
        MP_CHECK(ad);
 
+       mp_evas_object_del(playing_view->albumart_image_reflection);
+       mp_evas_object_del(playing_view->pre_albumart_image_reflection);
        playing_view->flick_direction = 0;
+       playing_view->hide_image_flag = false;
        //hide mute popup
        if (playing_view->play_view)
                edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
@@ -779,16 +883,24 @@ _mp_play_view_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_in
        //reset flag
        ad->volume_long_pressed = false;
 
+       mp_ecore_timer_del(playing_view->favourite_timer);
        mp_ecore_timer_del(playing_view->progressbar_timer);
        mp_ecore_timer_del(playing_view->show_ctrl_timer);
 
-       if(ad->playing_view == playing_view)
+       if(ad->backup_playing_view == playing_view)
+       {
+               IF_FREE(ad->backup_playing_view);
+               ad->backup_layout_play_view = NULL;
+       }
+       else if(ad->playing_view == playing_view)
        {
                IF_FREE(ad->playing_view);
        }
        else
                ERROR_TRACE("++++++++ check here ++++++++++");
 
+       mp_ecore_idler_del(ad->playview_show_idler);
+
        endfunc;
 
        return;
@@ -802,15 +914,27 @@ mp_play_view_show_default_info(struct appdata *ad)
        MP_CHECK(playing_view);
 
        mp_evas_object_del(playing_view->play_info);
+       Evas_Object *parent = NULL;
+#ifdef MP_SOUND_PLAYER
+       parent = sp_view_mgr_get_naviframe(ad->view_mgr);
+#else
+       parent = ad->naviframe;
+#endif
        playing_view->play_info =
-               mp_common_load_edj(ad->library->cur_view, PLAY_VIEW_EDJ_NAME, "richinfo/base_layout");
+               mp_common_load_edj(parent, PLAY_VIEW_EDJ_NAME, "richinfo/test_rich_info");
 
        mp_play_view_create_info_contents(playing_view->play_info, ad);
 
-       view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data");
+#ifdef MP_SOUND_PLAYER
+       sp_view_mgr_push_view_content(ad->view_mgr, playing_view->play_info, SP_VIEW_TYPE_INFO);
+       sp_view_mgr_set_title_label(ad->view_mgr, GET_STR("IDS_MUSIC_BODY_DETAILSMEADIAINFO"));
+       sp_view_mgr_set_back_button(ad->view_mgr, mp_play_view_info_back_cb, ad);
+#else
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
        mp_view_manager_push_view_content(view_data, playing_view->play_info, MP_VIEW_CONTENT_INFO);
-       mp_view_manager_set_title_and_buttons(view_data, GET_SYS_STR("IDS_COM_BODY_DETAILS"),
+       mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_BODY_DETAILSMEADIAINFO",
                                              ad);
+#endif
 }
 
 void
@@ -818,11 +942,20 @@ mp_play_view_info_cb(void *data, Evas_Object * obj, void *event_info)
 {
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
+       if (ad->info_click_flag && !ad->info_ug)
+               return ;
+       if (!ad->info_ug)
+               ad->info_click_flag = TRUE;
+       else
+               ad->info_click_flag = FALSE;
+       ad->info_back_play_view_flag = FALSE;
        mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
 
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK(playing_view);
 
+       EVAS_OBJ_HIDE(playing_view->albumart_img);
+       EVAS_OBJ_HIDE(playing_view->albumart_image_reflection);
        //hide mute popup
        if (playing_view->play_view)
                edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
@@ -866,10 +999,10 @@ _mp_play_view_load_track_info(void *data, music_list_item * item)
        MP_CHECK_FALSE(current_item);
 
        DEBUG_TRACE("category: %d", current_item->category);
-       if (current_item->category == AUDIO_SVC_CATEGORY_MUSIC)
+       if (current_item->category == MP_MEDIA_TYPE_MUSIC)
        {
                if (current_item->key_id > 0
-                   && mp_util_is_item_in_playlist(ad->media_svc_handle, AUDIO_SVC_FAVORITE_LIST_ID, current_item->key_id))
+                   && current_item->favorite)
                {
                        edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_on", "play_view");
                }
@@ -883,7 +1016,15 @@ _mp_play_view_load_track_info(void *data, music_list_item * item)
                edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_invisible", "play_view");
        }
 
-       mp_view_manager_play_view_title_label_set(ad, item->title);
+       if (item == current_item) {
+       #ifdef MP_SOUND_PLAYER
+               sp_view_mgr_play_view_title_label_set(ad->view_mgr, item->title);
+       #else
+               mp_view_manager_play_view_title_label_set(ad, item->title);
+       #endif
+       }
+       if(playing_view->play_head)
+               elm_object_item_text_set(playing_view->play_head, current_item->title);
 
        edje_object_part_text_set(_EDJ(playing_view->play_title), "artist", current_item->artist);
        edje_object_part_text_set(_EDJ(playing_view->play_title), "album", current_item->album);
@@ -907,23 +1048,54 @@ _mp_play_view_create_next_item(music_list_item * next_item, void *data)
 
        mp_debug("next item : %s", next_item->title);
 
-       next_view = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_play_view");
-       evas_object_size_hint_max_set(next_view, 480 * ad->scale, 800 * ad->scale);
+       next_view = elm_layout_add(playing_view->layout);
+
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+       {
+               mp_debug_temp
+                       (" invalid state MP_SCREEN_MODE_LANDSCAPE MP_SCREEN_MODE_LANDSCAPE MP_SCREEN_MODE_LANDSCAPE MP_SCREEN_MODE_LANDSCAPE");
+               elm_layout_file_set(next_view, PLAY_VIEW_EDJ_NAME, "mp_play_view_landscape");
+               evas_object_size_hint_max_set(next_view, 480 * elm_scale_get(), 480 * elm_scale_get());
+               evas_object_size_hint_align_set(next_view, EVAS_HINT_FILL, EVAS_HINT_EXPAND);
+               evas_object_size_hint_weight_set(next_view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(ad->win_main, next_view);
+       }
+       else
+       {
+
+               next_view = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "mp_play_view");
+               evas_object_size_hint_max_set(next_view, 480 * elm_scale_get(), 800 * elm_scale_get());
+       }
 
        evas_object_show(next_view);
 
-       album_img = evas_object_image_add(ad->evas);
-       int w, h;
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
-       evas_object_image_load_size_set(album_img, w, h*HD_ALBUM_IMAGE_H_SCALE);
-       evas_object_image_fill_set(album_img, 0, 0, w, h*HD_ALBUM_IMAGE_H_SCALE);
-       if (strlen(next_item->albumart) && mp_util_is_image_valid(ad->evas, next_item->albumart))
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
        {
-               evas_object_image_file_set(album_img, next_item->albumart, NULL);
+               album_img = elm_bg_add(next_view);
+               if (strlen(next_item->albumart) && mp_util_is_image_valid(ad->evas, next_item->albumart))
+               {
+                       elm_bg_file_set(album_img, next_item->albumart, NULL);
+               }
+               else
+               {
+                       elm_bg_file_set(album_img, DEFAULT_THUMBNAIL, NULL);
+               }
        }
        else
        {
-               evas_object_image_file_set(album_img, DEFAULT_THUMBNAIL, NULL);
+               album_img = evas_object_image_add(ad->evas);
+               int w, h;
+               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+               evas_object_image_load_size_set(album_img, w, h*HD_ALBUM_IMAGE_H_SCALE);
+               evas_object_image_fill_set(album_img, 0, 0, w, h*HD_ALBUM_IMAGE_H_SCALE);
+               if (strlen(next_item->albumart) && mp_util_is_image_valid(ad->evas, next_item->albumart))
+               {
+                       evas_object_image_file_set(album_img, next_item->albumart, NULL);
+               }
+               else
+               {
+                       evas_object_image_file_set(album_img, DEFAULT_THUMBNAIL, NULL);
+               }
        }
 
        elm_object_part_content_set(next_view, "album_art", album_img);
@@ -990,6 +1162,9 @@ _mp_play_view_eventbox_flick_left_cb(void *data, Evas_Object * obj, void *event_
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK(playing_view);
 
+       if (ad->playing_list && ad->playing_list->count <= 1)
+               return;
+
        music_list_item *next_item = NULL;
 
        if (mp_play_list_get_next_item(data, ad->playing_list, &next_item, TRUE)== MP_PLST_RET_OK)
@@ -1014,6 +1189,9 @@ _mp_play_view_eventbox_flick_right_cb(void *data, Evas_Object * obj, void *event
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK(playing_view);
 
+       if (ad->playing_list && ad->playing_list->count <= 1)
+               return;
+
        music_list_item *next_item = NULL;
 
        if (mp_play_list_get_prev_item(data, ad->playing_list, &next_item))
@@ -1031,6 +1209,20 @@ _mp_play_view_eventbox_flick_right_cb(void *data, Evas_Object * obj, void *event
        return;
 }
 
+static Eina_Bool
+_mp_play_view_favourite_timer_cb(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       mp_retvm_if(!ad, ECORE_CALLBACK_CANCEL, "ad");
+
+       mp_playing_view *playing_view = ad->playing_view;
+       mp_retvm_if(!playing_view, ECORE_CALLBACK_CANCEL, "ad");
+
+       mp_ecore_timer_del(playing_view->favourite_timer);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
 static void
 _mp_play_view_favourite_cb(void *data, Evas_Object * o, const char *emission, const char *source)
 {
@@ -1042,42 +1234,65 @@ _mp_play_view_favourite_cb(void *data, Evas_Object * o, const char *emission, co
 
        DEBUG_TRACE("%s", emission);
 
-       if (!strcmp(emission, "favorite_up"))
+       if (!strcmp(emission, "favorite_down"))
        {
-               music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
-               MP_CHECK(current_item);
+               playing_view->favour_longpress = 0;
 
-               if (current_item->key_id > 0
-                           && mp_util_is_item_in_playlist(ad->media_svc_handle, AUDIO_SVC_FAVORITE_LIST_ID, current_item->key_id))
+               mp_ecore_timer_del(playing_view->favourite_timer);
+
+               playing_view->favourite_timer =
+                       ecore_timer_add(FAVOUR_LONG_PRESS_TIME, _mp_play_view_favourite_timer_cb, ad);
+       }
+       else if (!strcmp(emission, "favorite_up"))
+       {
+               mp_ecore_timer_del(playing_view->favourite_timer);
+
+               if (playing_view->favour_longpress)
                {
-                       int ret = AUDIO_SVC_ERROR_NONE;
-                               ret = audio_svc_remove_item_from_playlist_by_audio_id(ad->media_svc_handle, AUDIO_SVC_FAVORITE_LIST_ID,
-                                                                             current_item->key_id);
-                       if (ret == AUDIO_SVC_ERROR_NONE) {
-                               edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_off",
-                                                       "play_view");
-                               mp_util_create_notify(ad, GET_SYS_STR("IDS_COM_POP_REMOVED"));
-                       }
+                       playing_view->favour_longpress = 0;
                }
                else
                {
-                       int ret = AUDIO_SVC_ERROR_NONE;
-                               ret = audio_svc_add_item_to_playlist(ad->media_svc_handle, AUDIO_SVC_FAVORITE_LIST_ID, current_item->key_id);
-                       if (ret == AUDIO_SVC_ERROR_NONE) {
-                               edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_on",
-                                                       "play_view");
+                       int ret = 0;
+                       mp_media_info_h media = NULL;
+                       music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
+                       MP_CHECK(current_item);
+
+                       ret = mp_media_info_create(&media, current_item->key_id);
+                       MP_CHECK(ret == 0);
+                       ret = mp_media_info_set_favorite(media, !current_item->favorite);
+                       mp_media_info_destroy(media);
+                       if(ret)
+                       {
+                               if(current_item->favorite)
+                                       mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_UNABLE_TO_ADD"));
+                               else
+                                       mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_ITEM_NOT_REMOVE"));
+
+                               return;
+                       }
+                       current_item->favorite = !current_item->favorite;
+
+                       if (!current_item->favorite)
+                       {
+                               edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_off", "play_view");
+                               mp_util_create_notify(ad, GET_SYS_STR("IDS_COM_POP_REMOVED"));
+                       }
+                       else
+                       {
+                               edje_object_signal_emit(_EDJ(playing_view->play_menu), "favorite_on", "play_view");
                                mp_util_create_notify(ad, GET_STR("IDS_MUSIC_POP_ADDED"));
                        }
+
                }
        }
-
-       MP_CHECK(ad->library);
-       MP_CHECK(ad->library->cur_view);
-       view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->library->cur_view, "view_data");
+#ifndef MP_SOUND_PLAYER
+       MP_CHECK(ad->naviframe);
+       view_data_t *view_data = (view_data_t *) evas_object_data_get(ad->naviframe, "view_data");
        MP_CHECK(view_data);
        if (view_data->view_type == MP_VIEW_TYPE_PLAYLIST)
                mp_library_update_view(ad);
-
+#endif
        return;
 }
 
@@ -1088,6 +1303,8 @@ _mp_play_view_progressbar_down_cb(void *data, Evas * e, Evas_Object * obj, void
        if (data == NULL && obj == NULL && event_info == NULL)
                return;
 
+       evas_object_data_set(obj, "pressed", (void *)1);
+
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
 
@@ -1105,12 +1322,6 @@ _mp_play_view_progressbar_down_cb(void *data, Evas * e, Evas_Object * obj, void
                return;
        }
 
-       if (ad->player_state == PLAY_STATE_PLAYING)
-       {
-               mp_player_mgr_pause(ad);
-               playing_view->paused_by_progressbar = true;
-       }
-
        mp_play_view_progress_timer_freeze(ad);
        evas_object_geometry_get(progressbar, &x, NULL, &w, NULL);
        current = ev->canvas.x - x;
@@ -1132,12 +1343,23 @@ _mp_play_view_progressbar_down_cb(void *data, Evas * e, Evas_Object * obj, void
 }
 
 static void
+_mp_play_view_progressbar_seek_done_cb(void *data)
+{
+       startfunc;
+       struct appdata *ad = data;
+
+       mp_play_view_progress_timer_thaw(ad);
+}
+
+static void
 _mp_play_view_progressbar_up_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
 {
        startfunc;
        if (data == NULL && obj == NULL && event_info == NULL)
                return;
 
+       evas_object_data_set(obj, "pressed", (void *)0);
+
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
 
@@ -1154,6 +1376,7 @@ _mp_play_view_progressbar_up_cb(void *data, Evas * e, Evas_Object * obj, void *e
                ERROR_TRACE("Invaild player_state : %d", ad->player_state);
                return;
        }
+
        evas_object_geometry_get(progressbar, &x, NULL, &w, NULL);
 
        current = ev->canvas.x - x;
@@ -1170,15 +1393,13 @@ _mp_play_view_progressbar_up_cb(void *data, Evas * e, Evas_Object * obj, void *e
        ad->music_length = duration / 1000.;
 
        ad->music_pos = ratio * ad->music_length;
-       mp_play_view_update_progressbar(ad);
 
-       mp_player_mgr_set_position(ad->music_pos * 1000);
+       if (mp_player_mgr_set_position(ad->music_pos * 1000, _mp_play_view_progressbar_seek_done_cb, ad))
+               mp_play_view_update_progressbar(ad);
+       else
+               _mp_play_view_progressbar_seek_done_cb(ad);
+
 
-       if (playing_view->paused_by_progressbar)
-       {
-               mp_player_mgr_resume(ad);
-               playing_view->paused_by_progressbar = false;
-       }
        return;
 }
 
@@ -1188,6 +1409,12 @@ _mp_play_progressbar_move_cb(void *data, Evas * e, Evas_Object * obj, void *even
        if (data == NULL && obj == NULL && event_info == NULL)
                return;
 
+       int pressed = (int)evas_object_data_get(obj, "pressed");
+       if (!pressed) {
+               mp_debug("-_- progressbar is not pressed yet!");
+               return;
+       }
+
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK(ad);
 
@@ -1203,9 +1430,10 @@ _mp_play_progressbar_move_cb(void *data, Evas * e, Evas_Object * obj, void *even
        }
 
        Evas_Object *progressbar = obj;
-       int duration = 0, w = 0, current = 0;
+       int w = 0, current = 0;
        int x;
        double ratio = 0.0;
+       int new_pos;
 
        if (ad->player_state == PLAY_STATE_INIT)
                return;
@@ -1220,12 +1448,14 @@ _mp_play_progressbar_move_cb(void *data, Evas * e, Evas_Object * obj, void *even
                current = w;
 
        ratio = (double)current / w;
-       duration = mp_player_mgr_get_duration();
-
-       ad->music_length = duration / 1000.;
 
-       ad->music_pos = ratio * ad->music_length;
-       mp_play_view_update_progressbar(ad);
+       new_pos= ratio * ad->music_length;
+       if(new_pos != mp_player_mgr_get_position()/1000 )
+       {
+               mp_player_mgr_set_position(ad->music_pos*1000, NULL, NULL);
+               ad->music_pos = new_pos;
+               mp_play_view_update_progressbar(ad);
+       }
 
        return;
 }
@@ -1240,7 +1470,7 @@ _mp_play_view_update_progressbar_cb(void *data)
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK_CANCEL(playing_view);
 
-       if(!ad->prohibit_aul_relaunch)
+       if(!ad->app_is_foreground)
        {
                WARN_TRACE("Check here.. progress timer should be freezed..");
                ecore_timer_freeze(playing_view->progressbar_timer);
@@ -1261,6 +1491,7 @@ _mp_play_view_update_progressbar_cb(void *data)
 
                if (get_length != ad->music_length || get_pos != ad->music_pos)
                {
+                       // update only value is changed
                        ad->music_length = get_length;
                        ad->music_pos = get_pos;
 
@@ -1323,7 +1554,7 @@ _mp_play_view_add_progress_timer(void *data)
        mp_ecore_timer_del(playing_view->progressbar_timer);
 
        playing_view->progressbar_timer = ecore_timer_add(0.1, _mp_play_view_update_progressbar_cb, ad);
-       if(ad->player_state != PLAY_STATE_PLAYING || !ad->prohibit_aul_relaunch)
+       if(ad->player_state != PLAY_STATE_PLAYING || !ad->app_is_foreground)
                ecore_timer_freeze(playing_view->progressbar_timer);
 
        return;
@@ -1388,6 +1619,8 @@ _mp_play_view_create_menu(void *data)
        edje_object_signal_callback_add(_EDJ(playing_view->play_menu), "favorite_up", "*", _mp_play_view_favourite_cb,
                                        ad);
 
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+               evas_object_size_hint_max_set(playing_view->play_menu, elm_scale_get(), 70 * elm_scale_get());
        edje_object_signal_callback_add(_EDJ(playing_view->play_menu), SIGNAL_SHUFFLE, "*", mp_play_control_menu_cb,
                                        ad);
        edje_object_signal_callback_add(_EDJ(playing_view->play_menu), SIGNAL_SHUFNON, "*", mp_play_control_menu_cb,
@@ -1412,21 +1645,41 @@ mp_play_view_set_snd_path_sensitivity(void *data)
        MP_CHECK(ad);
 
        int ret = 0;
-       int bt_connected = 0;
+       bool bt_connected = 0;
        char *bt_name = NULL;
        int earjack = 0;
        Elm_Object_Item *navi_item = NULL;
+       Elm_Object_Item *land_navi_item = NULL;
        Evas_Object *btn = NULL;
+       Evas_Object *land_btn = NULL;
 
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK(playing_view);
 
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+       {
+               DEBUG_TRACE("");
+               land_navi_item = playing_view->play_head;
+       }
+#ifdef MP_SOUND_PLAYER
+       navi_item = sp_view_mgr_get_play_view_navi_item(ad->view_mgr);
+#else
        navi_item =  mp_view_manager_get_play_view_navi_item(ad);
+#endif
 
        if(navi_item)
                btn = elm_object_item_part_content_get(navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN);
 
-       ret = mm_sound_route_get_a2dp_status(&bt_connected, &bt_name);
+       if(land_navi_item)
+               land_btn = elm_object_item_part_content_get(land_navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN);
+
+
+       ret = sound_manager_get_a2dp_status(&bt_connected, &bt_name);
+       if (ret != SOUND_MANAGER_ERROR_NONE)
+       {
+               WARN_TRACE("Fail to sound_manager_get_a2dp_status ret = [%d]", ret);
+       }
+
        if (!bt_connected)
        {
                if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earjack))
@@ -1440,30 +1693,71 @@ mp_play_view_set_snd_path_sensitivity(void *data)
                        elm_object_item_part_content_unset(navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN);
                        evas_object_del(btn);
                }
+               if(land_btn)
+               {
+                       elm_object_item_part_content_unset(land_navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN);
+                       evas_object_del(land_btn);
+               }
        }
        else
        {
                if(!btn && navi_item)
                {
-                       Evas_Object *btn = mp_widget_create_title_btn(ad->library->cur_view, NULL, MP_ICON_SOUND_PATH,
+                       Evas_Object *parent = NULL;
+#ifdef MP_SOUND_PLAYER
+                       parent = sp_view_mgr_get_naviframe(ad->view_mgr);
+#else
+                       parent = ad->naviframe;
+#endif
+                       Evas_Object *btn = mp_widget_create_title_btn(parent, NULL, MP_ICON_SOUND_PATH,
                                                                        mp_play_view_set_snd_path_cb, ad);
                        elm_object_item_part_content_set(navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN, btn);
                }
+               if(!land_btn && land_navi_item)
+               {
+                       Evas_Object *btn = mp_widget_create_title_btn(playing_view->land_naviframe, NULL, MP_ICON_SOUND_PATH,
+                                                                       mp_play_view_set_snd_path_cb, ad);
+                       elm_object_item_part_content_set(land_navi_item, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN, btn);
+               }
        }
 }
 
 static void
 mp_play_view_back_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
+#ifdef MP_SOUND_PLAYER
+       struct appdata *ad = (struct appdata *)data;
+#else
        view_data_t *view_data = (view_data_t *) data;
        MP_CHECK(view_data);
        MP_CHECK_VIEW_DATA(view_data);
 
        struct appdata *ad = view_data->ad;
+#endif
        MP_CHECK(ad);
        mp_retm_if(ad->navi_effect_in_progress, "navi effect in progress");
 
-       mp_common_back_button_cb(data, obj, NULL);
+#ifdef MP_SOUND_PLAYER
+       if (ad->player_state == PLAY_STATE_PLAYING || ad->player_state == PLAY_STATE_PAUSED) {
+               mp_debug("mm player alive");
+               elm_win_lower(ad->win_main);
+       } else {
+               mp_debug("terminate");
+               mp_app_exit(ad);
+       }
+#else
+       if(ad->direct_win_minimize)
+               elm_win_lower(ad->win_main);
+       else
+               mp_common_back_button_cb(data, obj, NULL);
+
+       if (ad->music_setting_change_flag)
+       {
+               mp_debug("# menu update #");
+               mp_util_set_library_controlbar_items(ad);
+               ad->music_setting_change_flag = false;
+       }
+#endif
 }
 
 static bool
@@ -1478,7 +1772,11 @@ _mp_play_view_create_control_bar(void *data)
 
        Evas_Object *play_control = NULL, *play_icon = NULL;
 
-       play_control =
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+               play_control =
+                       mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/main/control_ls");
+       else
+               play_control =
                        mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/main/control");
 
        MP_CHECK_FALSE(play_control);
@@ -1493,12 +1791,20 @@ _mp_play_view_create_control_bar(void *data)
 
        elm_object_part_content_set(play_control, "buttons", play_icon);
        evas_object_data_set(play_control, "buttons", play_icon);
-
-       edje_object_signal_callback_add(_EDJ(play_icon), "info_clicked", CTR_EDJ_SIG_SRC, mp_play_view_back_cb,
+#ifdef MP_SOUND_PLAYER
+               edje_object_signal_callback_add(_EDJ(play_icon), "info_clicked", CTR_EDJ_SIG_SRC, mp_play_view_back_cb, ad);
+#else
+               edje_object_signal_callback_add(_EDJ(play_icon), "info_clicked", CTR_EDJ_SIG_SRC, mp_play_view_back_cb,
                                        mp_util_get_view_data(ad));
-
+#endif
        edje_object_signal_callback_add(_EDJ(play_icon), "volume_clicked", CTR_EDJ_SIG_SRC, mp_play_control_volume_cb,
                                        ad);
+#ifdef MP_FEATURE_VOLMUE_MUTE
+       edje_object_signal_callback_add(_EDJ(play_icon), "vol_btn_down", CTR_EDJ_SIG_SRC,
+                                       mp_play_control_volume_down_cb, ad);
+       edje_object_signal_callback_add(_EDJ(play_icon), "vol_btn_up", CTR_EDJ_SIG_SRC, mp_play_control_volume_up_cb,
+                                       ad);
+#endif
        edje_object_signal_callback_add(_EDJ(play_icon), "play_clicked", CTR_EDJ_SIG_SRC, mp_play_control_play_cb, ad);
        edje_object_signal_callback_add(_EDJ(play_icon), "pause_clicked", CTR_EDJ_SIG_SRC, mp_play_control_play_cb, ad);
 
@@ -1508,8 +1814,8 @@ _mp_play_view_create_control_bar(void *data)
        edje_object_signal_callback_add(_EDJ(play_icon), "rew_btn_down", CTR_EDJ_SIG_SRC, mp_play_control_rew_cb, ad);
        edje_object_signal_callback_add(_EDJ(play_icon), "rew_btn_up", CTR_EDJ_SIG_SRC, mp_play_control_rew_cb, ad);
 
-       MMPlayerStateType player_state = mp_player_mgr_get_state();
-       if (player_state != MM_PLAYER_STATE_PLAYING)
+       player_state_e player_state = mp_player_mgr_get_state();
+       if (player_state != PLAYER_STATE_PLAYING)
                edje_object_signal_emit(_EDJ(play_icon), "play", CTR_PROG_SIG_SRC);
        else
                edje_object_signal_emit(_EDJ(play_icon), "pause", CTR_PROG_SIG_SRC);
@@ -1608,7 +1914,7 @@ _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_
                return FALSE;
        }
 
-       if (playing_view->transition_state)
+       if (playing_view->transition_state)     // transiton(transition_state)  should be transiit callback
        {
                mp_debug("skip_by transiton effect");
                return FALSE;
@@ -1618,7 +1924,7 @@ _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_
 
        mp_play_view_progress_timer_freeze(ad);
 
-       mp_play_view_set_menu_state(ad, ad->show_optional_menu, false);
+       mp_play_view_set_menu_state(ad, false, false);
 
        mp_debug("current index = %d, set index = %d", current_item->list_index, it->list_index);
 
@@ -1626,9 +1932,7 @@ _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_
        mp_play_list_item_copy(&playing_view->playing_list_item, it);
 
        next = _mp_play_view_create_next_item(it, ad);
-
        MP_CHECK_FALSE(next);
-
        playing_view->play_view_next = next;
        elm_object_part_content_set(playing_view->layout, "list_content_temp", next);
        edje_object_signal_callback_add(elm_layout_edje_get(playing_view->layout), "transit_done", "*",
@@ -1649,6 +1953,15 @@ _mp_play_view_transit_by_item(void *data, struct music_list_item *it, bool move_
 
        playing_view->transition_state = true;
 
+       if (!playing_view->play_view_screen_mode)
+       {
+               mp_evas_object_del(playing_view->albumart_image);
+               playing_view->albumart_image = _mp_play_view_create_bg_map(data, playing_view->play_view, it);
+               elm_object_part_content_set(playing_view->play_view, "album_art", playing_view->albumart_image);
+               evas_object_show(playing_view->albumart_image);
+               evas_object_repeat_events_set(playing_view->albumart_image, 1);
+       }
+
        return true;
 }
 
@@ -1660,17 +1973,29 @@ _mp_play_view_push_navibar(void *data)
 
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK_FALSE(playing_view);
+       {
+               elm_object_part_content_set(playing_view->layout, "list_content", playing_view->play_view);
+
+               mp_playing_view *playing_view = ad->playing_view;
+               MP_CHECK_FALSE(playing_view);
 
-       elm_object_part_content_set(playing_view->layout, "list_content", playing_view->play_view);
-       view_data_t *view_data = NULL;
+#ifdef MP_SOUND_PLAYER
+               sp_view_mgr_push_view_content(ad->view_mgr, playing_view->layout, SP_VIEW_TYPE_PLAY);
+               sp_view_mgr_set_title_label(ad->view_mgr, GET_SYS_STR("IDS_COM_SK_PLAY"));
+               mp_play_view_set_snd_path_sensitivity(ad);
+#else
+               MP_CHECK_FALSE(ad->naviframe);
 
-       MP_CHECK_FALSE(ad->library);
-       MP_CHECK_FALSE(ad->library->cur_view);
+               view_data_t *view_data = NULL;
+               view_data = evas_object_data_get(ad->naviframe, "view_data");
+               MP_CHECK_FALSE(view_data);
+               mp_view_manager_push_view_content(view_data, playing_view->layout, MP_VIEW_CONTENT_PLAY);
 
-       view_data = evas_object_data_get(ad->library->cur_view, "view_data");
-       MP_CHECK_FALSE(view_data);
-       mp_view_manager_push_view_content(view_data, playing_view->layout, MP_VIEW_CONTENT_PLAY);
-       mp_view_manager_set_title_and_buttons(view_data, GET_SYS_STR("IDS_COM_SK_PLAY"), ad);
+               MP_TA_ACUM_ITEM_BEGIN("          mp_view_manager_set_title_and_buttons", 0);
+               mp_view_manager_set_title_and_buttons(view_data, NULL, ad);
+               MP_TA_ACUM_ITEM_END("          mp_view_manager_set_title_and_buttons", 0);
+#endif
+       }
 
        return true;
 
@@ -1681,11 +2006,18 @@ _mp_play_view_play_option_cb(void *data, Evas_Object * obj, const char *emission
 {
        MP_CHECK(emission);
 
-       if (!strcmp(emission, "option_3_clicked"))
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+
+       if (!strcmp(emission, "option_1_clicked"))
+               mp_menu_share_cb(data, obj, NULL);
+       else if (!strcmp(emission, "option_2_clicked"))
+               mp_menu_set_cb(data, obj, NULL);
+       else if (!strcmp(emission, "option_3_clicked"))
        {
-               struct appdata *ad = (struct appdata *)data;
-               MP_CHECK(ad);
-               mp_play_view_info_cb(data, obj, NULL);
+               MP_CHECK(ad->playing_view);
+               if (ad->playing_view->play_view_screen_mode != MP_SCREEN_MODE_LANDSCAPE)
+                       mp_play_view_info_cb(data, obj, NULL);
        }
 }
 
@@ -1704,7 +2036,12 @@ _mp_play_view_create_ctrl_layout(void *data, Evas_Object * parents, Evas_Object
 
        elm_object_part_content_set(parents, "player_info", ctrl_layout);
 
-       *progress = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/progress_box");
+       //2 Create progress bar
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+               *progress =
+                       mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/progress_box_ls");
+       else
+               *progress = mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/progress_box");
 
        Evas_Object *play_progress =
                mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "music/playing/progress_box/progress_bar");
@@ -1731,18 +2068,51 @@ _mp_play_view_create_ctrl_layout(void *data, Evas_Object * parents, Evas_Object
        elm_object_part_content_set(playing_view->layout, "player_info", play_info);
        playing_view->play_title = play_info;
 
-       Evas_Object *play_options =
-               mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "player_view_options");
-       elm_object_part_content_set(playing_view->layout, "player_options", play_options);
+       if (playing_view->play_view_screen_mode != MP_SCREEN_MODE_LANDSCAPE)
+       {
+               Evas_Object *play_options =
+                       mp_common_load_edj(playing_view->layout, PLAY_VIEW_EDJ_NAME, "player_view_options");
+
+               edje_object_part_text_set(_EDJ(play_options), "option_1", GET_SYS_STR("IDS_COM_BUTTON_SHARE"));
+               mp_language_mgr_register_object(play_options, OBJ_TYPE_EDJE_OBJECT, "option_1", "IDS_COM_BUTTON_SHARE");
+               edje_object_part_text_set(_EDJ(play_options), "option_2", GET_SYS_STR("IDS_COM_SK_SET"));
+               mp_language_mgr_register_object(play_options, OBJ_TYPE_EDJE_OBJECT, "option_2", "IDS_COM_SK_SET");
+               edje_object_part_text_set(_EDJ(play_options), "option_3", GET_SYS_STR("IDS_COM_BODY_DETAILS"));
+               mp_language_mgr_register_object(play_options, OBJ_TYPE_EDJE_OBJECT, "option_3", "IDS_COM_BODY_DETAILS");
 
-       edje_object_part_text_set(_EDJ(play_options), "option_3", GET_SYS_STR("IDS_COM_BODY_DETAILS"));
+               elm_object_part_content_set(playing_view->layout, "player_options", play_options);
 
-       edje_object_signal_callback_add(_EDJ(play_options), "option_3_clicked", "*", _mp_play_view_play_option_cb,
-                                       ad);
+               edje_object_signal_callback_add(_EDJ(play_options), "option_1_clicked", "*", _mp_play_view_play_option_cb,
+                                               ad);
+               edje_object_signal_callback_add(_EDJ(play_options), "option_2_clicked", "*", _mp_play_view_play_option_cb,
+                                               ad);
+               edje_object_signal_callback_add(_EDJ(play_options), "option_3_clicked", "*", _mp_play_view_play_option_cb,
+                                               ad);
+       }
 
        return ctrl_layout;
 }
 
+static void
+_mp_play_view_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = data;
+       MP_CHECK(ad);
+
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       Evas_Coord w, h;
+       edje_object_part_geometry_get(_EDJ(playing_view->play_view), "album_bg", NULL, NULL, &w, &h);
+       mp_debug("album bg size =  [%d * %d]", w, h);
+
+       if (playing_view->albumart_bg)
+       {
+               evas_object_image_load_size_set(playing_view->albumart_bg, w, h);
+               evas_object_image_fill_set(playing_view->albumart_bg, 0, 0, w, h);
+       }
+}
+
 
 static bool
 _mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bool b_next)
@@ -1756,10 +2126,16 @@ _mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bo
        MP_CHECK_FALSE(playing_view);
 
        //2 Create playing view
-       playing_view->play_view = mp_common_load_edj(parents_layout, PLAY_VIEW_EDJ_NAME, "mp_play_view");
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+               playing_view->play_view =
+                       mp_common_load_edj(parents_layout, PLAY_VIEW_EDJ_NAME, "mp_play_view_landscape");
+       else
+               playing_view->play_view = mp_common_load_edj(parents_layout, PLAY_VIEW_EDJ_NAME, "mp_play_view");
 
        MP_CHECK_FALSE(playing_view->play_view);
 
+       evas_object_event_callback_add(playing_view->play_view, EVAS_CALLBACK_RESIZE, _mp_play_view_resize_cb, ad);
+
        //hide mute popup
        edje_object_signal_emit(_EDJ(playing_view->play_view), SIGNAL_MAIN_MUTE_HIDE, "*");
 
@@ -1771,18 +2147,22 @@ _mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bo
        evas_object_smart_callback_add(event_box, "mouse.flick.left", _mp_play_view_eventbox_flick_left_cb, ad);
        evas_object_smart_callback_add(event_box, "mouse.flick.right", _mp_play_view_eventbox_flick_right_cb, ad);
 
-
        evas_object_show(event_box);
        elm_object_part_content_set(playing_view->play_view, "event_box", event_box);
        evas_object_data_set(playing_view->play_view, "event_box", event_box);
 
-       mp_evas_object_del(playing_view->albumart_bg);
-       playing_view->albumart_bg = evas_object_image_add(ad->evas);
-       int w, h;
-       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
-       evas_object_image_load_size_set(playing_view->albumart_bg, w, h*HD_ALBUM_IMAGE_H_SCALE);
-       evas_object_image_fill_set(playing_view->albumart_bg, 0, 0, w, h*HD_ALBUM_IMAGE_H_SCALE);
+       if (playing_view->play_view_screen_mode == MP_SCREEN_MODE_LANDSCAPE)
+       {                       // landscape mode
+               playing_view->albumart_img = elm_bg_add(playing_view->play_view);
+               elm_bg_load_size_set(playing_view->albumart_img, MP_PLAY_VIEW_ARTWORK_SIZE, MP_PLAY_VIEW_ARTWORK_SIZE);
+               elm_object_part_content_set(playing_view->play_view, "album_art", playing_view->albumart_img);
+       }
+       else
+       {
+               mp_evas_object_del(playing_view->albumart_bg);
+               playing_view->albumart_bg = evas_object_image_add(ad->evas);
                elm_object_part_content_set(playing_view->play_view, "album_bg", playing_view->albumart_bg);
+       }
 
        playing_view->play_ctrl =
                _mp_play_view_create_ctrl_layout(ad, playing_view->play_view, &playing_view->play_progressbar, FALSE);
@@ -1797,6 +2177,28 @@ _mp_play_view_create_playing_layout(void *data, Evas_Object * parents_layout, bo
        return TRUE;
 }
 
+static Eina_Bool
+_mp_play_view_idler_cb(void *data)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+       MP_CHECK_FALSE(ad->playing_view->albumart_bg);
+
+       Evas_Coord img_x, img_y, img_w, img_h;
+       evas_object_geometry_get(ad->playing_view->albumart_bg, &img_x, &img_y, &img_w, &img_h);
+
+       ad->album_image_w = img_w;
+       ad->album_image_h = img_h;
+
+       _mp_play_view_album_art_update(ad);
+       ad->playview_show_idler = NULL;
+
+       endfunc;
+       return EINA_FALSE;
+}
+
 static bool
 _mp_play_view_create_layout(void *data)
 {
@@ -1816,15 +2218,25 @@ _mp_play_view_create_layout(void *data)
                return TRUE;
        }
 
-       MP_CHECK_FALSE(ad->library);
-       MP_CHECK_FALSE(ad->library->cur_view);
-       playing_view->layout =
-               mp_common_load_edj(ad->library->cur_view, PLAY_VIEW_EDJ_NAME, "mp_play_view_layout");
-       MP_CHECK_FALSE(playing_view->layout);
+       {
+               Evas_Object *parent = NULL;
+#ifdef MP_SOUND_PLAYER
+               parent = sp_view_mgr_get_naviframe(ad->view_mgr);
+#else
+               MP_CHECK_FALSE(ad->naviframe);
+               parent = ad->naviframe;
+#endif
+               playing_view->layout =
+                       mp_common_load_edj(parent, PLAY_VIEW_EDJ_NAME, "mp_play_view_layout");
+               MP_CHECK_FALSE(playing_view->layout);
+       }
 
+       MP_CHECK_FALSE(playing_view->layout);
        evas_object_event_callback_add(playing_view->layout, EVAS_CALLBACK_DEL, _mp_play_view_destory_cb, playing_view);
        //2 Create playing view
+       MP_TA_ACUM_ITEM_BEGIN("      mp_play_view_create_playing_layout", 0);
        _mp_play_view_create_playing_layout(ad, playing_view->layout, FALSE);
+       MP_TA_ACUM_ITEM_END("      mp_play_view_create_playing_layout", 0);
 
        //2 Create menu layout
        _mp_play_view_create_menu(ad);
@@ -1833,7 +2245,12 @@ _mp_play_view_create_layout(void *data)
        _mp_play_view_create_control_bar(ad);
 
        //2 Push at navibar
+       MP_TA_ACUM_ITEM_BEGIN("      mp_play_view_push_navibar", 0);
        _mp_play_view_push_navibar(ad);
+       MP_TA_ACUM_ITEM_END("      mp_play_view_push_navibar", 0);
+
+       if(!ad->playview_show_idler)
+               ad->playview_show_idler = ecore_idler_add(_mp_play_view_idler_cb, ad);
 
        mp_debug("");
 
@@ -1841,6 +2258,7 @@ _mp_play_view_create_layout(void *data)
 
        return true;
 }
+
 void
 _mp_play_view_delete_progress_timer(void *data)
 {
@@ -1866,8 +2284,8 @@ mp_play_view_set_menu_state(void *data, bool show, bool anim)
                mp_debug("set hide state");
 
                mp_ecore_timer_del(ad->longpress_timer);
-               _mp_play_view_menu_visible_set(ad, FALSE, anim);
 
+               _mp_play_view_menu_visible_set(ad, FALSE, anim);
        }
        else
        {
@@ -1888,11 +2306,16 @@ mp_play_view_progress_timer_thaw(void *data)
 
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK(playing_view);
+       MP_CHECK(playing_view->progressbar_timer);
 
-       if (playing_view->progressbar_timer && ad->player_state == PLAY_STATE_PLAYING)
+       if (ad->player_state == PLAY_STATE_PLAYING)
        {
                ecore_timer_thaw(playing_view->progressbar_timer);
        }
+       else if (ad->player_state == PLAY_STATE_PAUSED)
+       {
+               mp_play_view_update_progressbar(ad);
+       }
 }
 
 void
@@ -1981,8 +2404,370 @@ mp_play_view_stop_transit(void *data)
        return true;
 }
 
-bool
-mp_play_view_load_track(void *data)
+static void
+_mp_play_view_album_art_update(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       Evas_Coord img_x, img_y, img_w, img_h;
+       evas_object_geometry_get(playing_view->albumart_image, &img_x, &img_y, &img_w, &img_h);
+       if ( playing_view->albumart_width <= 0 && playing_view->albumart_height <= 0
+           && ad->album_image_w > 0 && ad->album_image_h > 0
+           && img_w == ad->album_image_w && img_h == ad->album_image_h ) {
+               playing_view->albumart_width = img_w;
+               playing_view->albumart_height = img_h;
+       }
+       DEBUG_TRACE ("albumart_width=%d, albumart_height=%d", playing_view->albumart_width, playing_view->albumart_height);
+
+       if (0 == img_x && playing_view->albumart_width == img_w && playing_view->albumart_height == img_h)
+       {
+               mp_evas_object_del(playing_view->pre_albumart_image_reflection);
+       }
+       if (ad->info_ug_base && !ad->info_back_play_view_flag)
+       {
+               EVAS_OBJ_HIDE(playing_view->albumart_image_reflection);
+               EVAS_OBJ_HIDE(playing_view->pre_albumart_image_reflection);
+       }
+       else
+       {
+               EVAS_OBJ_SHOW(playing_view->albumart_image_reflection);
+               EVAS_OBJ_SHOW(playing_view->pre_albumart_image_reflection);
+       }
+
+       double zoomx = 1.0, zoomy = 1.0;
+       int x = 0, y = 0;
+       int albumart_image_raw_w = 0, albumart_image_raw_h = 0;
+       int albumart_image_x = 0, albumart_image_y = 0, albumart_image_w = 0, albumart_image_h = 0;
+
+       if (playing_view->albumart_image_reflection)
+       {
+               if (playing_view->flick_direction == 1)
+               {
+                       x = img_x + playing_view->albumart_width;
+               }
+               else if (playing_view->flick_direction == 2)
+               {
+                       x = img_x - playing_view->albumart_width;
+               }
+               y = img_y + playing_view->albumart_height;
+
+               evas_object_geometry_get(playing_view->albumart_image_reflection, &albumart_image_x,
+                                        &albumart_image_y, &albumart_image_w, &albumart_image_h);
+               evas_object_image_size_get(playing_view->albumart_image_reflection, &albumart_image_raw_w,
+                                          &albumart_image_raw_h);
+
+               x = x - (albumart_image_raw_w - playing_view->albumart_width) / 2;
+               y = y - (albumart_image_raw_h - playing_view->albumart_height) / 2;
+               zoomx = playing_view->albumart_width / ((double)albumart_image_raw_w);
+               zoomy = playing_view->albumart_height / ((double)albumart_image_raw_h);
+
+               Evas_Map *m2 = evas_map_new(4);
+               MP_CHECK(m2);
+               evas_map_smooth_set(m2, EINA_TRUE);
+               evas_map_point_coord_set(m2, 0, x, y, 0);
+               evas_map_point_image_uv_set(m2, 0, 0, albumart_image_raw_h);
+               if (img_x == 0 && playing_view->hide_image_flag)
+               {
+                       evas_map_point_color_set(m2, 0, ALBUMART_IMAGE_SHADOW_RGBA1);
+               }
+               else
+               {
+                       evas_map_point_color_set(m2, 0, ALBUMART_IMAGE_SHADOW_RGBA);
+               }
+
+               evas_map_point_coord_set(m2, 1, (x + albumart_image_raw_w), y, 0);
+               evas_map_point_image_uv_set(m2, 1, albumart_image_raw_w, albumart_image_raw_h);
+               if (img_x == 0 && playing_view->hide_image_flag)
+               {
+                       evas_map_point_color_set(m2, 1, ALBUMART_IMAGE_SHADOW_RGBA1);
+               }
+               else
+               {
+                       evas_map_point_color_set(m2, 1, ALBUMART_IMAGE_SHADOW_RGBA);
+               }
+
+               evas_map_point_coord_set(m2, 2, (x + albumart_image_raw_w), (y + albumart_image_raw_h), 0);
+               evas_map_point_image_uv_set(m2, 2, albumart_image_raw_w, 0);
+               evas_map_point_color_set(m2, 2, ALBUMART_IMAGE_SHADOW_RGBA2);
+
+               evas_map_point_coord_set(m2, 3, x, (y + albumart_image_raw_h), 0);
+               evas_map_point_image_uv_set(m2, 3, 0, 0);
+               evas_map_point_color_set(m2, 3, ALBUMART_IMAGE_SHADOW_RGBA2);
+
+               evas_map_util_3d_rotate(m2, 0, 0, 0, x + (albumart_image_raw_w / 2), y + (albumart_image_raw_h / 2), 0);
+               evas_map_util_3d_perspective(m2, x, y, 0, albumart_image_raw_w * 10);
+               evas_map_util_zoom(m2, zoomx, zoomy, x + (albumart_image_raw_w / 2), y + (albumart_image_raw_h / 2));
+               evas_object_map_enable_set(playing_view->albumart_image_reflection, EINA_TRUE);
+               evas_object_map_set(playing_view->albumart_image_reflection, m2);
+               evas_map_free(m2);
+
+               evas_object_repeat_events_set(playing_view->albumart_image_reflection, 1);
+       }
+
+       if (playing_view->pre_albumart_image_reflection)
+       {
+               x = img_x;
+               y = img_y + playing_view->albumart_height;
+               evas_object_geometry_get(playing_view->pre_albumart_image_reflection, &albumart_image_x,
+                                        &albumart_image_y, &albumart_image_w, &albumart_image_h);
+               evas_object_image_size_get(playing_view->pre_albumart_image_reflection, &albumart_image_raw_w,
+                                          &albumart_image_raw_h);
+               x = x - (albumart_image_raw_w - playing_view->albumart_width) / 2;
+               y = y - (albumart_image_raw_h - playing_view->albumart_height) / 2;
+               zoomx = playing_view->albumart_width / ((double)albumart_image_raw_w);
+               zoomy = playing_view->albumart_height / ((double)albumart_image_raw_h);
+
+               Evas_Map *m4 = evas_map_new(4);
+               MP_CHECK(m4);
+               evas_map_smooth_set(m4, EINA_TRUE);
+               evas_map_point_coord_set(m4, 0, x, y, 0);
+               evas_map_point_image_uv_set(m4, 0, 0, albumart_image_raw_h);
+               if (img_x == 0 && playing_view->hide_image_flag)
+               {
+                       evas_map_point_color_set(m4, 0, ALBUMART_IMAGE_SHADOW_RGBA1);
+               }
+               else
+               {
+                       evas_map_point_color_set(m4, 0, ALBUMART_IMAGE_SHADOW_RGBA);
+               }
+
+               evas_map_point_coord_set(m4, 1, (x + albumart_image_raw_w), y, 0);
+               evas_map_point_image_uv_set(m4, 1, albumart_image_raw_w, albumart_image_raw_h);
+               if (img_x == 0 && playing_view->hide_image_flag)
+               {
+                       evas_map_point_color_set(m4, 1, ALBUMART_IMAGE_SHADOW_RGBA1);
+               }
+               else
+               {
+                       evas_map_point_color_set(m4, 1, ALBUMART_IMAGE_SHADOW_RGBA);
+               }
+
+               evas_map_point_coord_set(m4, 2, (x + albumart_image_raw_w), (y + albumart_image_raw_h), 0);
+               evas_map_point_image_uv_set(m4, 2, albumart_image_raw_w, 0);
+               evas_map_point_color_set(m4, 2, ALBUMART_IMAGE_SHADOW_RGBA2);
+
+               evas_map_point_coord_set(m4, 3, x, (y + albumart_image_raw_h), 0);
+               evas_map_point_image_uv_set(m4, 3, 0, 0);
+               evas_map_point_color_set(m4, 3, ALBUMART_IMAGE_SHADOW_RGBA2);
+
+               evas_map_util_3d_rotate(m4, 0, 0, 0, x + (albumart_image_raw_w / 2), y + (albumart_image_raw_h / 2), 0);
+               evas_map_util_zoom(m4, zoomx, zoomy, x + (albumart_image_raw_w / 2), y + (albumart_image_raw_h / 2));
+               evas_map_util_3d_perspective(m4, x, y, 0, albumart_image_raw_w * 10);
+               evas_object_map_enable_set(playing_view->pre_albumart_image_reflection, EINA_TRUE);
+               evas_object_map_set(playing_view->pre_albumart_image_reflection, m4);
+               evas_map_free(m4);
+       }
+}
+
+
+static void
+_mp_play_view_bg_map_move(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(ad->playing_view);
+
+       _mp_play_view_album_art_update(data);
+
+       if (playing_view->hide_image_flag && playing_view->flick_direction == 0)
+       {
+               EVAS_OBJ_HIDE(playing_view->pre_albumart_image_reflection);
+       }
+
+       EVAS_OBJ_SHOW(obj);
+}
+
+static void
+_mp_play_view_bg_map_resize(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       playing_view->hide_image_flag = true;
+
+       if (playing_view->hide_image_flag && playing_view->flick_direction == 0)
+       {
+               EVAS_OBJ_HIDE(playing_view->pre_albumart_image_reflection);
+       }
+
+       endfunc;
+}
+
+
+static void
+_mp_play_view_bg_map_hide(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+
+       endfunc;
+}
+
+static void
+_mp_play_view_bg_map_show(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+
+       if (!data)
+       {
+               return;
+       }
+
+       _mp_play_view_album_art_update(data);
+       EVAS_OBJ_SHOW(obj);
+
+       endfunc;
+}
+
+static void
+_mp_play_view_texture_destory_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       MP_CHECK(ad->playing_view);
+
+       if(obj == ad->playing_view->albumart_image_reflection)
+               ad->playing_view->albumart_image_reflection = NULL;
+       else if(obj == ad->playing_view->pre_albumart_image_reflection)
+               ad->playing_view->pre_albumart_image_reflection = NULL;
+       else
+               ERROR_TRACE("++++++++ check here ++++++++++");
+}
+
+static Evas_Object *
+_mp_play_view_load_texture(void *data, const char *const tex_path, const int tex_size_width, const int tex_size_height)
+{
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_NULL(ad);
+
+       Evas_Object *o = evas_object_image_add(ad->evas);
+       evas_object_image_file_set(o, tex_path, NULL);
+       int w = 0, h = 0;
+       evas_object_image_size_get(o, &w, &h);
+       evas_object_image_fill_set(o, 0, 0, w, h);
+       evas_object_resize(o, w, h);
+       evas_object_image_smooth_scale_set(o, 0);
+
+       evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _mp_play_view_texture_destory_cb, ad);
+
+       EVAS_OBJ_HIDE(o);
+       return o;
+}
+
+static void
+_mp_play_view_set_album_art(void *data, char *file_path)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK(ad);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(ad->playing_view);
+
+       EVAS_OBJ_HIDE(playing_view->albumart_image);
+
+       if (playing_view->albumart_image_reflection)
+       {
+               mp_evas_object_del(playing_view->pre_albumart_image_reflection);
+               playing_view->pre_albumart_image_reflection = playing_view->albumart_image_reflection;
+               playing_view->albumart_image_reflection = NULL;
+               evas_object_hide(playing_view->pre_albumart_image_reflection);
+               playing_view->hide_image_flag = false;
+       }
+       playing_view->albumart_image_reflection =
+               _mp_play_view_load_texture(data, file_path, 0, 0);
+
+       endfunc;
+}
+
+Evas_Object *
+_mp_play_view_create_bg_map(void *data, Evas_Object * parents, music_list_item * current_item)
+{
+       startfunc;
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_NULL(ad);
+       MP_CHECK_NULL(parents);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK_NULL(ad->playing_view);
+
+       Evas_Object *obj = NULL;
+       Evas *evas = NULL;
+
+       evas = evas_object_evas_get(parents);
+
+       if (evas == NULL)
+       {
+               return NULL;
+       }
+
+       obj = edje_object_add(evas);
+
+       MP_CHECK_NULL(current_item);
+
+       //2 get alubmart
+       if (!strstr(PREFIX, current_item->albumart) && mp_util_is_image_valid(ad->evas, current_item->albumart))
+       {
+               mp_debug(" draw album art");
+               _mp_play_view_set_album_art(data, current_item->albumart);
+       }
+       else
+       {
+               _mp_play_view_set_album_art(data, DEFAULT_THUMBNAIL);
+       }
+
+       if (playing_view->albumart_image_reflection)
+       {
+               evas_object_smart_member_add(playing_view->albumart_image_reflection, obj);
+       }
+
+       evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _mp_play_view_bg_map_resize, data);
+       evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _mp_play_view_bg_map_move, data);
+       evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, _mp_play_view_bg_map_show, data);
+       evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _mp_play_view_bg_map_hide, data);
+
+       endfunc;
+       return obj;
+}
+
+static void
+_mp_play_view_update_option_btn_sensitivity(struct appdata *ad)
+{
+       startfunc;
+
+       MP_CHECK(ad);
+       mp_playing_view *playing_view = ad->playing_view;
+       MP_CHECK(playing_view);
+
+       music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
+       MP_CHECK(current_item);
+
+       const char *filename =current_item->filename;
+
+       if (playing_view->play_view_screen_mode != MP_SCREEN_MODE_LANDSCAPE)
+       {
+               Evas_Object *play_options = elm_object_part_content_get(playing_view->layout, "player_options");
+               MP_CHECK(play_options);
+
+               const char *signal = NULL;
+               if (mp_check_file_exist(filename))
+                       signal = "sig_enable_option_btn";
+               else
+                       signal = "sig_disable_option_btn";
+
+               edje_object_signal_emit(_EDJ(play_options), signal, "c_source");
+       }
+}
+
+
+bool
+mp_play_view_load_track(void *data)
 {
        startfunc;
 
@@ -1996,26 +2781,66 @@ mp_play_view_load_track(void *data)
        music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
        MP_CHECK_FALSE(current_item);
 
-       // get alubmart
-       if (!strstr(PREFIX, current_item->albumart) && mp_util_is_image_valid(ad->evas, current_item->albumart))
-       {
-               evas_object_image_file_set(playing_view->albumart_bg, current_item->albumart, NULL);
+       DEBUG_TRACE("ad->screen_mode=%d,flick_direction=%d", ad->screen_mode, playing_view->flick_direction);
+       if (playing_view->play_view_screen_mode)
+       {                       // landscape mode
+               // get alubmart
+               if (!strstr(PREFIX, current_item->albumart) && mp_util_is_image_valid(ad->evas, current_item->albumart))
+               {
+                       elm_bg_file_set(playing_view->albumart_img, current_item->albumart, NULL);
+               }
+               else
+               {
+                       elm_bg_file_set(playing_view->albumart_img, DEFAULT_THUMBNAIL, NULL);
+               }
+               evas_object_show(playing_view->albumart_img);
        }
        else
-       {
-               evas_object_image_file_set(playing_view->albumart_bg, DEFAULT_THUMBNAIL, NULL);
+       {                       //portrait mode
+               if (playing_view->flick_direction || MP_SCREEN_MODE_PORTRAIT == ad->screen_mode)
+               {
+                       // get alubmart
+                       if (!strstr(PREFIX, current_item->albumart) && mp_util_is_image_valid(ad->evas, current_item->albumart))
+                       {
+                               evas_object_image_file_set(playing_view->albumart_bg, current_item->albumart, NULL);
+                       }
+                       else
+                       {
+                               evas_object_image_file_set(playing_view->albumart_bg, DEFAULT_THUMBNAIL, NULL);
+                       }
+                       evas_object_show(playing_view->albumart_bg);
+
+                       mp_evas_object_del(playing_view->albumart_image);
+                       music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
+                       playing_view->albumart_image =
+                               _mp_play_view_create_bg_map(data, playing_view->play_view, current_item);
+                       elm_object_part_content_set(playing_view->play_view, "album_art", playing_view->albumart_image);
+                       evas_object_show(playing_view->albumart_image);
+                       evas_object_repeat_events_set(playing_view->albumart_image, 1);
+                       playing_view->flick_direction = 0;
+               }
        }
-       evas_object_show(playing_view->albumart_bg);
-
-       playing_view->flick_direction = 0;
 
+       MP_TA_ACUM_ITEM_BEGIN("        _mp_play_view_load_track_info", 0);
        _mp_play_view_load_track_info(data, mp_play_list_get_current_item(ad->playing_list));
+       MP_TA_ACUM_ITEM_END("        _mp_play_view_load_track_info", 0);
+
+       /* disable share/set button when file do not exist */
+       _mp_play_view_update_option_btn_sensitivity(ad);
 
        endfunc;
 
        return true;
 }
 
+#ifndef MP_SOUND_PLAYER
+/**
+ * load play view by path use for add to home case
+ *
+ * @param struct appdata *ad, char *path, int fid
+ * @return FALSE or TRUE if it success create
+ * @author aramie.kim@samsung.com
+ */
 
 bool
 mp_play_view_load_by_path(struct appdata * ad, char *path)
@@ -2039,16 +2864,15 @@ mp_play_view_load_by_path(struct appdata * ad, char *path)
 
        if (ad->playing_view)
        {
-               evas_object_del(ad->playing_view->play_control);
+               mp_evas_object_del(ad->playing_view->play_control);
                _mp_play_view_create_control_bar(ad);
                mp_play_view_play_item(ad, current_item, false, true);
        }
        else
        {
                mp_play_view_load(ad);
-               MP_CHECK_FALSE(ad->library);
-               MP_CHECK_FALSE(ad->library->cur_view);
-               evas_object_smart_callback_add(ad->library->cur_view, "transition,finished",
+               MP_CHECK_FALSE(ad->naviframe);
+               evas_object_smart_callback_add(ad->naviframe, "transition,finished",
                                                                       _mp_play_view_start_request, ad);
        }
 
@@ -2059,6 +2883,7 @@ mp_play_view_load_by_path(struct appdata * ad, char *path)
 static void
 _mp_play_view_start_request(void *data, Evas_Object * obj, void *event_info)
 {
+       MP_TA_ACUM_ITEM_END("navi_frame_transition_time", 0);
        struct appdata *ad = (struct appdata *)data;
        mp_retm_if(!ad, "ad");
 
@@ -2071,7 +2896,7 @@ _mp_play_view_start_request(void *data, Evas_Object * obj, void *event_info)
 
        _mp_play_view_init_progress_bar(data);
 
-       evas_object_smart_callback_del(ad->library->cur_view, "transition,finished", _mp_play_view_start_request);
+       evas_object_smart_callback_del(ad->naviframe, "transition,finished", _mp_play_view_start_request);
 
        endfunc;
 
@@ -2099,10 +2924,21 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec
        else
                reqest_play = true;
 
-       if (layout_data->view_mode == MP_VIEW_MODE_DEFAULT)
-               result = mp_play_list_create_play_list(ad, layout_data->svc_handle, layout_data->item_count, index, layout_data->playlist_id);  //set current item here!!1
-       else
-               result = mp_play_list_create_play_list(ad, layout_data->track_handle, layout_data->track_count, index, layout_data->playlist_id);       //use track_handle when playback started from search result...
+       MP_TA_ACUM_ITEM_BEGIN("  create_play_list", 0);
+       mp_media_list_h svc_handle = NULL;
+       int item_count = 0;
+       if (layout_data->view_mode == MP_VIEW_MODE_DEFAULT) {
+               svc_handle = layout_data->svc_handle;           //set current item here!!1
+               item_count = layout_data->item_count;
+       }
+       else {
+               svc_handle = layout_data->track_handle;         //use track_handle when playback started from search result...
+               item_count = layout_data->track_count;
+       }
+
+       result = mp_play_list_create_play_list(ad, svc_handle, item_count, index, layout_data->playlist_id);    //set current item here!!1
+
+       MP_TA_ACUM_ITEM_END("  create_play_list", 0);
 
        current_item = mp_play_list_get_current_item(ad->playing_list); //reget current item
 
@@ -2110,8 +2946,12 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec
        MP_CHECK_EXCEP(result);
        MP_CHECK_EXCEP(ad->playing_list);
 
-       if (ad->loadtype != LOAD_PLAY)
+       // TODO: support recent play for voice ui.
+       if (ad->loadtype != LOAD_VOICE_UI) {
+               MP_TA_ACUM_ITEM_BEGIN("  mp_setting_save_last_played", 0);
                mp_setting_save_last_played(layout_data);       //store playlist info.
+               MP_TA_ACUM_ITEM_END("  mp_setting_save_last_played", 0);
+       }
 
        if (layout_data->type_str)
                ad->playing_list->type_string = g_strdup(layout_data->type_str);
@@ -2122,7 +2962,7 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec
 
        ad->playing_list->item_type = layout_data->track_type;
 
-       if (ad->loadtype == LOAD_PLAY)  //when there is no transition effect, directly play track.
+       if (ad->loadtype == LOAD_VOICE_UI)      //when there is no transition effect, directly play track.
        {
                ad->paused_by_user = FALSE;
                mp_play_destory(ad);
@@ -2144,11 +2984,14 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec
                }
                else
                {
+                       MP_TA_ACUM_ITEM_BEGIN("  mp_play_view_load", 0);
                        mp_play_view_load(ad);
+                       MP_TA_ACUM_ITEM_END("  mp_play_view_load", 0);
                        {
                                if (reqest_play)
-                                       evas_object_smart_callback_add(ad->library->cur_view, "transition,finished",
+                                       evas_object_smart_callback_add(ad->naviframe, "transition,finished",
                                                                       _mp_play_view_start_request, ad);
+
                        }
                }
        }
@@ -2161,7 +3004,7 @@ mp_play_view_load_by_index(mp_layout_data_t * layout_data, int index, bool effec
        return false;
 
 }
-
+#endif
 
 bool
 mp_play_view_play_item(void *data, struct music_list_item * it, bool effect_value, bool move_left)
@@ -2177,7 +3020,7 @@ mp_play_view_play_item(void *data, struct music_list_item * it, bool effect_valu
 
        if (effect_value && (ad->playing_list->count > 1))
        {
-               if(ad->prohibit_aul_relaunch)
+               if(ad->app_is_foreground)
                        _mp_play_view_transit_by_item(data, it, move_left);
                else
                {
@@ -2200,6 +3043,77 @@ mp_play_view_play_item(void *data, struct music_list_item * it, bool effect_valu
        return true;
 }
 
+
+
+bool
+mp_play_view_set_screen_mode(void *data, int mode)
+{
+       startfunc;
+
+       struct appdata *ad = (struct appdata *)data;
+       MP_CHECK_FALSE(ad);
+
+       if (mode == MP_SCREEN_MODE_LANDSCAPE)
+       {
+               mp_playing_view *playing_view = ad->playing_view;
+
+               if (playing_view)
+               {
+                       playing_view->play_view_screen_mode = mode;
+
+                       if (playing_view->layout)
+                       {
+                               evas_object_hide(playing_view->layout);
+
+                               mp_play_view_stop_transit(data);
+
+                               if (playing_view->layout)
+                               {
+                                       ad->backup_layout_play_view = playing_view->layout;
+                                       playing_view->layout = NULL;
+                               }
+
+                               ad->backup_playing_view = playing_view;
+                               if(playing_view->progressbar_timer)
+                                       ecore_timer_freeze(playing_view->progressbar_timer);
+
+                               ad->playing_view = NULL;
+                       }
+               }
+       }
+       else
+       {
+               if (mp_play_list_get_current_item(ad->playing_list)
+                   && ad->backup_playing_view && ad->backup_layout_play_view)
+               {
+                       ad->playing_view = ad->backup_playing_view;
+                       ad->playing_view->layout = ad->backup_layout_play_view;
+                       ad->playing_view->play_view_screen_mode = MP_SCREEN_MODE_PORTRAIT;
+
+                       mp_play_view_stop_transit(ad);  //reset transition effect
+
+                       _mp_play_view_set_menu_item(ad);        //reset menu item
+
+                       mp_play_view_refresh(ad);
+
+                       evas_object_show(ad->playing_view->layout);
+                       evas_object_show(ad->base_layout_main);
+
+                       ad->backup_playing_view = NULL;
+                       ad->backup_layout_play_view = NULL;
+
+               }
+               else
+                       evas_object_show(ad->base_layout_main);
+
+       }
+
+       endfunc;
+
+       return true;
+}
+
+#ifndef MP_SOUND_PLAYER
 bool
 mp_play_view_create_library(void *data)
 {
@@ -2215,8 +3129,6 @@ mp_play_view_create_library(void *data)
 
                mp_library_create(ad);
                MP_CHECK_FALSE(ad->library);
-
-               elm_toolbar_item_selected_set(ad->library->ctltab_songs, EINA_TRUE);
        }
 
        ad->b_add_tracks = 0;
@@ -2227,6 +3139,14 @@ mp_play_view_create_library(void *data)
 
        return true;
 }
+#endif
+/**
+ * create play view
+ *
+ * @param data ,appdata
+ * @return FALSE or TRUE if it success create
+ * @author aramie.kim@samsung.com
+ */
 
 bool
 mp_play_view_create(void *data)
@@ -2258,7 +3178,9 @@ mp_play_view_destory(void *data)
        MP_CHECK_FALSE(playing_view);
 
        if (playing_view->layout)
+       {
                mp_evas_object_del(playing_view->layout);       //=> call _mp_play_view_layout_del_cb watchout
+       }
        else
                IF_FREE(ad->playing_view);
 
@@ -2273,15 +3195,21 @@ mp_play_view_load(void *data)
        struct appdata *ad = (struct appdata *)data;
        MP_CHECK_FALSE(ad);
 
+       MP_TA_ACUM_ITEM_BEGIN("    mp_play_view_create", 0);
        mp_play_view_create(data);
+       MP_TA_ACUM_ITEM_END("    mp_play_view_create", 0);
 
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK_FALSE(playing_view);
 
+       MP_TA_ACUM_ITEM_BEGIN("    _mp_play_view_create_layout", 0);
        _mp_play_view_create_layout(data);
+       MP_TA_ACUM_ITEM_END("    _mp_play_view_create_layout", 0);
        MP_CHECK_FALSE(playing_view->layout);
 
+       MP_TA_ACUM_ITEM_BEGIN("    mp_play_view_refresh", 0);
        mp_play_view_refresh(data);
+       MP_TA_ACUM_ITEM_END("    mp_play_view_refresh", 0);
 
        endfunc;
 
@@ -2297,7 +3225,14 @@ mp_play_view_pop(void *data)
 
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK_FALSE(playing_view);
+#ifdef MP_SOUND_PLAYER
+       mp_play_view_unswallow_info_ug_layout(ad);
+
+       if (ad->playing_view)
+               sp_view_mgr_pop_view_to(ad->view_mgr, SP_VIEW_TYPE_PLAY);
+#else
        mp_view_manager_pop_play_view(ad);
+#endif
        endfunc;
        return true;
 }
@@ -2313,17 +3248,19 @@ mp_play_view_refresh(void *data)
        mp_playing_view *playing_view = ad->playing_view;
        MP_CHECK_FALSE(playing_view);
 
+       MP_TA_ACUM_ITEM_BEGIN("      mp_play_view_load_track", 0);
        mp_play_view_load_track(ad);
+       MP_TA_ACUM_ITEM_END("      mp_play_view_load_track", 0);
 
-       mp_play_view_set_menu_state(ad, ad->show_optional_menu, false);
+       mp_play_view_set_menu_state(ad, false, false);
 
        _mp_play_view_init_progress_bar(data);
 
        const Evas_Object *play_icon = elm_object_part_content_get(ad->playing_view->play_control, "buttons");
        if (play_icon != NULL)
        {
-               MMPlayerStateType player_state = mp_player_mgr_get_state();
-               if (player_state != MM_PLAYER_STATE_PLAYING)
+               player_state_e player_state = mp_player_mgr_get_state();
+               if (player_state != PLAYER_STATE_PLAYING)
                {
                        edje_object_signal_emit(_EDJ(play_icon), "play", CTR_PROG_SIG_SRC);
                }
@@ -2332,18 +3269,34 @@ mp_play_view_refresh(void *data)
                        edje_object_signal_emit(_EDJ(play_icon), "pause", CTR_PROG_SIG_SRC);
                }
        }
+
        endfunc;
        return true;
 }
 
+#ifdef MP_SOUND_PLAYER
+void mp_play_view_unswallow_info_ug_layout(struct appdata *ad)
+{
+       MP_CHECK(ad);
+
+       if(ad->info_ug_base)
+       {
+               edje_object_part_unswallow(ad->info_ug_base, ad->info_ug_layout);
+               evas_object_hide(ad->info_ug_layout);
+               mp_ug_send_message(ad, MP_UG_MESSAGE_DEL);
+       }
+}
+
+#else
 static void
 _mp_play_view_popup_response_cb(void *data, Evas_Object * obj, void *event_info)
 {
+       mp_evas_object_del(obj);
        mp_app_exit(data);
 }
 
 bool
-mp_play_view_load_by_play(struct appdata *ad, const char *request_title)
+mp_play_view_load_by_voice_ui(struct appdata *ad, const char *request_title)
 {
        startfunc;
        MP_CHECK_FALSE(ad);
@@ -2371,10 +3324,7 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title)
 
                                        if (layout_data->svc_handle)
                                        {
-                                               if (layout_data->playlist_id < 0)
-                                                       audio_svc_list_item_free(layout_data->svc_handle);
-                                               else
-                                                       audio_svc_playlist_item_free(layout_data->svc_handle);
+                                               mp_media_info_list_destroy(layout_data->svc_handle);
                                        }
                                }
                                else
@@ -2426,7 +3376,7 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title)
 
                                if (layout_data->svc_handle)
                                {
-                                       audio_svc_playlist_item_free(layout_data->svc_handle);
+                                       mp_media_info_list_destroy(layout_data->svc_handle);
                                }
                        }
                        else
@@ -2455,7 +3405,7 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title)
 
                                if (layout_data->svc_handle)
                                {
-                                       audio_svc_group_item_free(layout_data->svc_handle);
+                                       mp_media_info_group_list_destroy(layout_data->svc_handle);
                                }
                        }
                        else
@@ -2484,7 +3434,7 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title)
 
                                if (layout_data->svc_handle)
                                {
-                                       audio_svc_group_item_free(layout_data->svc_handle);
+                                       mp_media_info_group_list_destroy(layout_data->svc_handle);
                                }
                        }
                        else
@@ -2503,14 +3453,15 @@ mp_play_view_load_by_play(struct appdata *ad, const char *request_title)
 
        if (!success)
        {
-               Evas_Object *popup = elm_popup_add(ad->win_main);
-               mp_popup_desc_set(popup, popup_txt);
-               mp_popup_set_response_cb(popup, _mp_play_view_popup_response_cb, ad);
-               mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES);
-               mp_popup_timeout_set(popup, 3.0);
+               Evas_Object *popup = mp_popup_create(ad->win_main, MP_POPUP_NORMAL, NULL, ad, _mp_play_view_popup_response_cb, ad);
+               elm_object_text_set(popup, popup_txt);
+               mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_SK_OK"), MP_POPUP_YES);
+               mp_popup_timeout_set(popup, MP_POPUP_TIMEOUT);
                evas_object_show(ad->win_main);
                evas_object_show(popup);
        }
        endfunc;
        return true;
 }
+#endif
+
index b6e8521..b372e41 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-
-
 #include "mp-library.h"
+#include "mp-ta.h"
 #include "mp-player-debug.h"
 #include "mp-common.h"
 #include "music.h"
 #include "mp-widget.h"
 #include "mp-widget.h"
 #include "mp-menu.h"
+#include "mp-play-list.h"
+#include "mp-play.h"
+#include "mp-play-view.h"
 
-static void _mp_playlist_view_push_group_content(view_data_t * view_data, Evas_Object * content);
 static void _mp_playlist_view_push_item_content(view_data_t * view_data, Evas_Object * content, char *title);
 static void _mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *event_info);
 
-static Elm_Genlist_Item_Class g_track_class_sweep = {
-       .item_style = "music_player/1icon.3text",
-       .func.text_get = mp_common_track_list_label_get,
-       .func.content_get = mp_common_track_list_icon_get,
-};
+static Elm_Genlist_Item_Class *
+_mp_playlist_view_get_track_sweep_itc()
+{
+       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+       MP_CHECK_NULL(itc);
+
+       itc->item_style = "music_player/1icon.3text";
+       itc->decorate_item_style = "mode/slide4.text";
+       itc->func.text_get = mp_common_track_list_label_get;
+       itc->func.content_get = mp_common_track_list_icon_get;
+
+       return itc;
+}
 
 static void
 _mp_playlist_view_auto_playlist_list_select_cb(void *data, Evas_Object * obj, void *event_info)
 {
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        int index = (int)data;
        char *name = NULL;
-       int size = 0;
+       mp_media_info_h media;
 
        Elm_Object_Item *gli = (Elm_Object_Item *) event_info;
        elm_genlist_item_selected_set(gli, FALSE);
@@ -67,15 +76,14 @@ _mp_playlist_view_auto_playlist_list_select_cb(void *data, Evas_Object * obj, vo
                return;
        }
 
-       view_data_t *view_data = evas_object_data_get(layout_data->navibar, "view_data");
+       view_data_t *view_data = evas_object_data_get(layout_data->ad->naviframe, "view_data");
        mp_retm_if(!view_data, "view_data is null");
        MP_CHECK_VIEW_DATA(view_data);
 
        mp_retm_if(mp_view_manager_count_view_content(view_data) != 1, "detail view_layout might be destroying....");
-
-       ret = audio_svc_playlist_get_val(layout_data->default_playlists, index, AUDIO_SVC_PLAYLIST_NAME, &name, &size,
-                                        -1);
-       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
+       media = mp_media_info_group_list_nth_item(layout_data->default_playlists, index);
+       ret = mp_media_info_group_get_main_info(media, &name);
+       mp_retm_if(ret != 0, "Fail to get value");
        mp_retm_if(name == NULL, "Fail to get value");
 
        DEBUG_TRACE("playlist name: %s, playlist id: %d", name);
@@ -86,38 +94,45 @@ _mp_playlist_view_auto_playlist_list_select_cb(void *data, Evas_Object * obj, vo
        memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t));
        genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb;
 
-       if (!strcmp(GET_STR(STR_MP_MOST_PLAYED), name))
+       if (!strcmp((STR_MP_MOST_PLAYED), name))
        {
                mp_view_layout_set_layout_data(view_layout,
                                               MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
-                                              MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_PLAYED_COUNT,
-                                              MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYED_COUNT,
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(),
                                               MP_LAYOUT_LIST_CB, &genlist_cbs, -1);
        }
-       else if (!strcmp(GET_STR(STR_MP_RECENTLY_ADDED), name))
+       else if (!strcmp((STR_MP_RECENTLY_ADDED), name))
        {
                mp_view_layout_set_layout_data(view_layout,
                                               MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
-                                              MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_ADDED_TIME,
-                                              MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_ADDED_TIME,
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(),
                                               MP_LAYOUT_LIST_CB, &genlist_cbs, -1);
        }
-       else if (!strcmp(GET_STR(STR_MP_RECENTLY_PLAYED), name))
+       else if (!strcmp((STR_MP_RECENTLY_PLAYED), name))
        {
                mp_view_layout_set_layout_data(view_layout,
                                               MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
-                                              MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_PLAYED_TIME,
-                                              MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYED_TIME,
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(),
+                                              MP_LAYOUT_LIST_CB, &genlist_cbs, -1);
+       }
+       else if (!strcmp((STR_MP_QUICK_LIST), name))
+       {
+               mp_view_layout_set_layout_data(view_layout,
+                                              MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_FAVORITE,
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(),
                                               MP_LAYOUT_LIST_CB, &genlist_cbs, -1);
        }
        else
        {
                mp_view_layout_set_layout_data(view_layout,
                                               MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
-                                              MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_PLAYLIST,
-                                              MP_LAYOUT_PLAYLIT_ID, AUDIO_SVC_FAVORITE_LIST_ID,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYLIST,
                                               MP_LAYOUT_LIST_CB, &genlist_cbs,
-                                              MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep, -1);
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), -1);
        }
 
        _mp_playlist_view_push_item_content(view_data, view_layout, name);
@@ -129,28 +144,53 @@ bool
 mp_playlist_view_create_by_id(Evas_Object * obj, int p_id)
 {
        startfunc;
-
+       char *name = NULL;
+       mp_media_list_h list = NULL;
+       int count = 0;
+       int res = 0;
+       int i = 0;
+       mp_media_info_h media = NULL;
+       mp_genlist_cb_t genlist_cbs;
+       Evas_Object *view_layout = NULL;
        view_data_t *view_data = evas_object_data_get(obj, "view_data");
        mp_retvm_if(!view_data, FALSE, "view_data is null");
        MP_CHECK_VIEW_DATA(view_data);
-       Evas_Object *view_layout = mp_view_layout_create(obj, view_data, MP_VIEW_MODE_DEFAULT);
+       MP_CHECK_FALSE(p_id >= 0);
+
+       view_layout = mp_view_layout_create(obj, view_data, MP_VIEW_MODE_DEFAULT);
 
-       mp_genlist_cb_t genlist_cbs;
        memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t));
        genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb;
 
-       char name[AUDIO_SVC_PLAYLIST_NAME_SIZE] = { '0' };
+       res = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
+       MP_CHECK_FALSE(res == 0);
+       MP_CHECK_FALSE(count > 0);
 
-       audio_svc_get_playlist_name_by_playlist_id(view_data->ad->media_svc_handle, p_id, name, AUDIO_SVC_PLAYLIST_NAME_SIZE);
+       res = mp_media_info_group_list_create(&list, MP_GROUP_BY_PLAYLIST, NULL, NULL, 0, count);
+       MP_CHECK_FALSE(res == 0);
 
-       if (p_id >= 0)
+       for(i=0; 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, AUDIO_SVC_TRACK_BY_PLAYLIST,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYLIST,
                                               MP_LAYOUT_PLAYLIT_ID, p_id,
+                                              MP_LAYOUT_PLAYLIT_HANDLE, media,
                                               MP_LAYOUT_LIST_CB, &genlist_cbs,
-                                              MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep, -1);
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), -1);
        }
        else
                WARN_TRACE("invalid playlist!!");
@@ -158,6 +198,8 @@ mp_playlist_view_create_by_id(Evas_Object * obj, int p_id)
        _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;
@@ -167,11 +209,10 @@ static void
 _mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE("");
-       int ret = AUDIO_SVC_ERROR_NONE;
-       int index = (int)data;
+       int ret = 0;
        char *name = NULL;
-       int size = 0;
        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);
@@ -199,16 +240,21 @@ _mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *e
                return;
        }
 
-       view_data_t *view_data = evas_object_data_get(layout_data->navibar, "view_data");
+       view_data_t *view_data = evas_object_data_get(layout_data->ad->naviframe, "view_data");
        mp_retm_if(!view_data, "view_data is null");
        MP_CHECK_VIEW_DATA(view_data);
 
        mp_retm_if(layout_data->rename_mode, "rename mode.. ignore selection...");
        mp_retm_if(mp_view_manager_count_view_content(view_data) != 1, "detail view_layout might be destroying....");
 
-       ret = audio_svc_playlist_get_val(layout_data->svc_handle, index, AUDIO_SVC_PLAYLIST_ID, &p_id,
-                                        AUDIO_SVC_PLAYLIST_NAME, &name, &size, -1);
-       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
+       item_data = elm_object_item_data_get(gli);
+       MP_CHECK(item_data);
+
+       ret = mp_media_info_group_get_playlist_id(item_data->handle, &p_id);
+       mp_retm_if(ret != 0, "Fail to get value");
+
+       ret = mp_media_info_group_get_main_info(item_data->handle, &name);
+       mp_retm_if(ret != 0, "Fail to get value");
        mp_retm_if(name == NULL, "Fail to get value");
 
        DEBUG_TRACE("playlist name: %s, playlist id: %d", name, p_id);
@@ -223,10 +269,11 @@ _mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *e
        {
                mp_view_layout_set_layout_data(view_layout,
                                               MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
-                                              MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_BY_PLAYLIST,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_BY_PLAYLIST,
                                               MP_LAYOUT_PLAYLIT_ID, p_id,
+                                              MP_LAYOUT_PLAYLIT_HANDLE, item_data->handle,
                                               MP_LAYOUT_LIST_CB, &genlist_cbs,
-                                              MP_LAYOUT_GENLIST_ITEMCLASS, &g_track_class_sweep, -1);
+                                              MP_LAYOUT_GENLIST_ITEMCLASS, _mp_playlist_view_get_track_sweep_itc(), -1);
        }
        else
                WARN_TRACE("invalid playlist!!");
@@ -238,16 +285,6 @@ _mp_playlist_view_playlist_list_select_cb(void *data, Evas_Object * obj, void *e
 
 }
 
-static void
-_mp_playlist_view_push_group_content(view_data_t * view_data, Evas_Object * content)
-{
-       mp_retm_if(!view_data, "view_data is NULL");
-       MP_CHECK_VIEW_DATA(view_data);
-
-       mp_view_manager_push_view_content(view_data, content, MP_VIEW_CONTENT_LIST);
-       mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_BODY_PLAYLISTS"), view_data);
-}
-
 void
 mp_playlist_view_add_button_cb(void *data, Evas_Object * obj, void *event_info)
 {
@@ -313,7 +350,7 @@ mp_playlist_view_create_new_done_cb(void *data, Evas_Object * obj, void *event_i
        }
        converted_name = elm_entry_markup_to_utf8(name);
 
-       plst_uid = mp_util_create_playlist(ad, converted_name);
+       plst_uid = mp_util_create_playlist(ad, converted_name, NULL);
        IF_FREE(converted_name);
        if (plst_uid < 0)
                return;
@@ -336,13 +373,12 @@ mp_playlist_view_create_playlist_button_cb(void *data, Evas_Object * obj, void *
 
        Evas_Object *create_plst_layout = NULL;
 
-       new_playlist_name = mp_util_get_new_playlist_name(view_data->ad->media_svc_handle);
+       new_playlist_name = mp_util_get_new_playlist_name();
        create_plst_layout = mp_common_create_editfield_layout(view_data->navibar, view_data->ad, new_playlist_name);
        IF_FREE(new_playlist_name);
        mp_retm_if(create_plst_layout == NULL, "create_plst_layout is NULL");
 
        mp_view_manager_push_view_content(view_data, create_plst_layout, MP_VIEW_CONTENT_NEW_PLAYLIST);
-       mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_BODY_CREATE_PLAYLIST"), view_data);
 
        evas_object_show(create_plst_layout);
 
@@ -353,34 +389,35 @@ _mp_playlist_view_label_get(void *data, Evas_Object * obj, const char *part)
 {
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *plst_item = (AudioHandleType *) (item->handle);
-
+       mp_media_info_h plst_item = (item->handle);
        MP_CHECK_NULL(plst_item);
 
-       int ret = AUDIO_SVC_ERROR_NONE;
-       if (!strcmp(part, "elm.text.1"))
+       int ret = 0;
+       if (!strcmp(part, "elm.text.1") || !strcmp(part, "elm.slide.text.1"))
        {
 
                char *name = NULL;
-               int size;
-               ret = audio_svc_playlist_get_val(plst_item, 0, AUDIO_SVC_PLAYLIST_NAME, &name, &size, -1);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get value");
+               ret = mp_media_info_group_get_main_info(plst_item, &name);
+               mp_retvm_if(ret != 0, NULL, "Fail to get value");
                mp_retvm_if(name == NULL, NULL, "Fail to get value");
-               return strdup(name);
+
+               if (!strcmp(part, "elm.text.1"))
+                       return elm_entry_utf8_to_markup(GET_STR(name));
+               else
+                       return g_strdup(GET_STR(name));
        }
        else if(!strcmp(part, "elm.text.2"))
        {
                int count = -1;
                int plst_id = -1;
-               ret = audio_svc_playlist_get_val(plst_item, 0, AUDIO_SVC_PLAYLIST_ID, &plst_id, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
-               MP_CHECK_NULL(plst_id > 0);
+               ret = mp_media_info_group_get_playlist_id(plst_item, &plst_id);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+               MP_CHECK_NULL(plst_id >= 0);
 
-               ret = audio_svc_count_playlist_item(item->media_svc_handle, plst_id, NULL, NULL, &count);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get count");
+               ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, plst_id, &count);
+               mp_retvm_if(ret != 0, NULL, "Fail to get count");
                mp_retvm_if(count < 0, NULL, "Fail to get count");
                return g_strdup_printf("(%d)", count);
-
        }
 
        return NULL;
@@ -398,9 +435,11 @@ mp_playlist_view_rename_done_cb(void *data, Evas_Object * obj, void *event_info)
 
        mp_retm_if(layout_data->ad->navi_effect_in_progress, "navi effect in progress");
 
+       /* save */
+
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) elm_object_item_data_get(layout_data->rename_git);
        MP_CHECK(item);
-       AudioHandleType *plst = (AudioHandleType *) (item->handle);
+       mp_media_info_h plst = (item->handle);
        MP_CHECK(plst);
 
        bool rename_success = FALSE;
@@ -412,19 +451,18 @@ mp_playlist_view_rename_done_cb(void *data, Evas_Object * obj, void *event_info)
                mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_RENAME_PLAYLIST"));
        else
        {
-               int count = 0;
-               ret = audio_svc_count_playlist_by_name(layout_data->ad->media_svc_handle, text, &count);
-               if (ret != AUDIO_SVC_ERROR_NONE)
+               bool exist = false;
+               ret = mp_media_info_playlist_is_exist(text, &exist);
+               if (ret != 0)
                {
                        ERROR_TRACE("Fail to get playlist count by name: %d", ret);
                        mp_widget_text_popup(layout_data->ad, GET_STR("IDS_MUSIC_POP_UNABLE_CREATE_PLAYLIST"));
                }
                else
                {
-                       if (count > 0) {
+                       if (exist) {
                                char *origin_name = NULL;
-                               int size = 0;
-                               audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_NAME, &origin_name, &size, -1);
+                               mp_media_info_group_get_main_info(plst, &origin_name);
                                if (origin_name && !g_strcmp0(origin_name, text)) {
                                        mp_debug("Not edited.. rename OK");
                                        rename_success = TRUE;
@@ -434,16 +472,11 @@ mp_playlist_view_rename_done_cb(void *data, Evas_Object * obj, void *event_info)
                                        SAFE_FREE(msg);
                                }
                        } else {
-                               audio_svc_playlist_set_val(plst, 0, AUDIO_SVC_PLAYLIST_NAME, text, AUDIO_SVC_METADATA_LEN_MAX, -1);
-
-                               int plst_id = -1;
-                               audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_ID, &plst_id, -1);
-                               ret = audio_svc_update_playlist_name(layout_data->ad->media_svc_handle, plst_id, text);
-                               if (ret == AUDIO_SVC_ERROR_NONE) {
-                                       mp_debug("audio_svc_update_playlist_name().. OK");
+                               ret = mp_media_info_playlist_rename(plst, text);
+                               if (ret == 0) {
+                                       mp_debug("mp_media_info_playlist_rename().. OK");
                                        rename_success = TRUE;
                                }
-
                        }
                }
        }
@@ -501,62 +534,210 @@ _mp_playlist_rename_button_cb(void *data, Evas_Object * obj, void *event_info)
        mp_common_set_title_button_sensitivity(layout_data, layout_data->checked_count);
 }
 
+
+static bool
+_mp_playlist_view_get_playlist_data_by_name(void *data, char *name)
+{
+       DEBUG_TRACE_FUNC();
+
+       MP_CHECK_FALSE(data);
+       MP_CHECK_FALSE(name);
+
+       int ret = 0;
+       char *playlist_name = name;
+       mp_layout_data_t *layout_data = data;
+
+       mp_media_list_h svc_handle = NULL;
+       int count = -1;
+       int playlist_id = -1;
+
+       if (!strcmp((STR_MP_MOST_PLAYED), playlist_name))
+       {
+               playlist_id = -1;
+
+               mp_media_info_list_count(MP_TRACK_BY_PLAYED_COUNT, NULL, NULL, NULL, 0, &count);
+               DEBUG_TRACE("music count=%d\n", count);
+
+               ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_PLAYED_COUNT, NULL, NULL, NULL, 0, 0, count);
+               if (ret != 0)
+               {
+                       DEBUG_TRACE("fail to get list item: %d", ret);
+                       ret = mp_media_info_list_destroy(svc_handle);
+                       svc_handle = NULL;
+               }
+       }
+       else if (!strcmp((STR_MP_RECENTLY_ADDED), playlist_name))
+       {
+               playlist_id = -1;
+               mp_media_info_list_count(MP_TRACK_BY_ADDED_TIME, NULL, NULL, NULL, 0, &count);
+               DEBUG_TRACE("music count=%d\n", count);
+
+               /* get music item data */
+               ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_ADDED_TIME, NULL, NULL, NULL, 0, 0, count);
+               if (ret != 0)
+               {
+                       DEBUG_TRACE("fail to get list item: %d", ret);
+                       ret = mp_media_info_list_destroy(svc_handle);
+                       svc_handle = NULL;
+               }
+       }
+       else if (!strcmp((STR_MP_RECENTLY_PLAYED), playlist_name))
+       {
+               playlist_id = -1;
+
+               mp_media_info_list_count(MP_TRACK_BY_PLAYED_TIME, NULL, NULL, NULL, 0, &count);
+               DEBUG_TRACE("music count=%d\n", count);
+
+               /* get music item data */
+               ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_PLAYED_TIME, NULL, NULL, NULL, 0, 0, count);
+               if (ret != 0)
+               {
+                       DEBUG_TRACE("fail to get list item: %d", ret);
+                       ret = mp_media_info_list_destroy(svc_handle);
+                       svc_handle = NULL;
+               }
+       }
+       else if (!strcmp((STR_MP_QUICK_LIST), playlist_name))
+       {
+               mp_media_info_list_count(MP_TRACK_BY_FAVORITE, NULL, NULL, NULL, 0, &count);
+               DEBUG_TRACE("music count=%d\n", count);
+
+               /* get music item data */
+               ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_FAVORITE, NULL, NULL, NULL, 0, 0, count);
+               if (ret != 0)
+               {
+                       DEBUG_TRACE("fail to get list item: %d", ret);
+                       ret = mp_media_info_list_destroy(svc_handle);
+                       svc_handle = NULL;
+               }
+       }
+       else
+       {
+               ret = mp_media_info_playlist_get_id_by_name(playlist_name, &playlist_id);
+               mp_retvm_if(ret != 0, FALSE, "ret: %d, playlist_name: %s", ret, playlist_name);
+               mp_retvm_if(playlist_id < 0, FALSE, "id is not valid.. %d", playlist_id);
+
+               ret = mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, &count);
+               mp_retvm_if(ret != 0, FALSE, "ret: %d", ret);
+
+               if (count <= 0)
+               {
+                       DEBUG_TRACE("Recently played tracks were removed...");
+                       return NULL;
+               }
+
+               ret = mp_media_info_list_create(&svc_handle, MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, 0, count);
+               if (ret != 0)
+               {
+                       WARN_TRACE("fail to get list item: %d", ret);
+               }
+       }
+
+       layout_data->playlist_id = playlist_id;
+       layout_data->item_count = count;
+       layout_data->svc_handle = svc_handle;
+
+       return TRUE;
+}
+
+static void
+_mp_playlist_view_playall_button_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+
+       struct appdata *ad = NULL;
+       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+       ad = layout_data->ad;
+
+       mp_media_info_h handle = data;
+       MP_CHECK(handle);
+
+       int playlist_id = -1;
+       char *playlist_name = NULL;
+       int size = -1;
+       int ret = 0;
+
+       /* get playlist name */
+       ret = mp_media_info_group_get_main_info(handle, &playlist_name);
+       ret = mp_media_info_group_get_playlist_id(handle, &playlist_id);
+       mp_retm_if(playlist_name == NULL, "Fail to get playlist_name");
+       DEBUG_TRACE("playlist_id=%d, size=%d, playlist_name=%s\n", playlist_id, size, playlist_name);
+
+       /* get playlist data by name */
+       mp_layout_data_t *layout_data_new = calloc(1, sizeof(mp_layout_data_t));
+       MP_CHECK(layout_data_new);
+       MP_SET_LAYOUT_DATA_MAGIC(layout_data_new);
+       layout_data_new->ad = ad;
+
+       if (!_mp_playlist_view_get_playlist_data_by_name(layout_data_new, playlist_name))
+       {
+               IF_FREE(layout_data_new->type_str);
+               IF_FREE(layout_data_new->filter_str);
+               free(layout_data_new);
+
+               return;
+       }
+
+       mp_play_view_load_by_index(layout_data_new, 0, false);
+
+       /* set the flag for update playlist view when back from playview */
+       if (ad->playing_view != NULL)
+       {
+               ad->playing_view->b_play_all = true;
+       }
+
+       if (layout_data_new->svc_handle)
+       {
+               mp_media_info_list_destroy(layout_data_new->svc_handle);
+       }
+
+       IF_FREE(layout_data_new->type_str);
+       IF_FREE(layout_data_new->filter_str);
+       free(layout_data_new);
+
+       endfunc;
+}
+
 static Evas_Object *
 _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part)
 {
        mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
        MP_CHECK_NULL(item);
-       AudioHandleType *plst = (AudioHandleType *) (item->handle);
-
+       mp_media_info_h plst = (item->handle);
        MP_CHECK_NULL(plst);
 
        Evas_Object *eo = NULL;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
        int playlist_id = 0;
        char *thumb_path = NULL;
        char *name = NULL;
-       int size;
        mp_retvm_if(!layout_data, NULL, "list data is NULL !!!");
        MP_CHECK_LAYOUT_DATA(layout_data);
 
-       ret = audio_svc_playlist_get_val(plst, 0, AUDIO_SVC_PLAYLIST_ID, &playlist_id,
-                                        AUDIO_SVC_PLAYLIST_THUMBNAIL_PATH, &thumb_path, &size, AUDIO_SVC_PLAYLIST_NAME,
-                                        &name, &size, -1);
+       mp_media_info_group_get_playlist_id(plst, &playlist_id);
+       ret = mp_media_info_group_get_thumbnail_path(plst, &thumb_path);
+       mp_retvm_if(ret != 0, NULL, "Fail to get value");
+       ret = mp_media_info_group_get_main_info(plst, &name);
+       mp_retvm_if(ret != 0, NULL, "Fail to get value");
 
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get value");
        if (!strcmp(part, "elm.icon"))
        {
 
                if (!playlist_id)
                {
-                       if (!strcmp(GET_STR(STR_MP_MOST_PLAYED), name))
-                       {
-                               eo = mp_util_create_thumb_icon(obj, THUMBNAIL_MOST_PLAYED, MP_LIST_ICON_SIZE,
+                       eo = mp_util_create_thumb_icon(obj, thumb_path, MP_LIST_ICON_SIZE,
                                                               MP_LIST_ICON_SIZE);
-                       }
-                       else if (!strcmp(GET_STR(STR_MP_RECENTLY_ADDED), name))
-                       {
-                               eo = mp_util_create_thumb_icon(obj, THUMBNAIL_RECENTLY_ADDED, MP_LIST_ICON_SIZE,
-                                                              MP_LIST_ICON_SIZE);
-                       }
-                       else if (!strcmp(GET_STR(STR_MP_RECENTLY_PLAYED), name))
-                       {
-                               eo = mp_util_create_thumb_icon(obj, THUMBNAIL_RECENTLY_PLAYED, MP_LIST_ICON_SIZE,
-                                                              MP_LIST_ICON_SIZE);
-                       }
-                       else
-                       {
-                               eo = mp_util_create_thumb_icon(obj, THUMBNAIL_QUICK_LIST, MP_LIST_ICON_SIZE,
-                                                              MP_LIST_ICON_SIZE);
-                       }
                }
                else
                {
                        if (thumb_path == NULL)
                        {
                                int count = 0;
-                               audio_svc_count_playlist_item(item->media_svc_handle, playlist_id, NULL, NULL, &count);
+                               mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, NULL, playlist_id, &count);
                                if (count <= 0)
                                        eo = mp_util_create_thumb_icon(obj, THUMBNAIL_PLAYLIST_NOITEM,
                                                                       MP_LIST_ICON_SIZE, MP_LIST_ICON_SIZE);
@@ -580,6 +761,39 @@ _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part)
                }
        }
 
+       Evas_Object *button;
+       if (!strcmp(part, "elm.slide.swallow.1"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_STR("Play all"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "Play all");
+               evas_object_smart_callback_add(button, "clicked", _mp_playlist_view_playall_button_cb, plst);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.2"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/multiline");
+               elm_object_text_set(button, GET_SYS_STR("IDS_COM_BODY_RENAME"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_BODY_RENAME");
+               evas_object_smart_callback_add(button, "clicked", _mp_playlist_rename_button_cb, item->it);
+               evas_object_data_set(button, "layout_data", layout_data);
+               return button;
+       }
+       else if (!strcmp(part, "elm.slide.swallow.3"))
+       {
+               button = elm_button_add(obj);
+               elm_object_style_set(button, "sweep/delete");
+               elm_object_text_set(button, GET_SYS_STR("IDS_COM_OPT_DELETE"));
+               mp_language_mgr_register_object(button, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_OPT_DELETE");
+               evas_object_smart_callback_add(button, "clicked", mp_menu_delete_cb, plst);
+               evas_object_data_set(button, "layout_data", layout_data);
+
+               return button;
+       }
+
        Evas_Object *btn = NULL, *check = NULL, *edit_field = NULL, *entry = NULL;
 
        if (elm_genlist_decorate_mode_get(obj))
@@ -601,7 +815,6 @@ _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part)
                        if (item->it)
                        {
                                evas_object_smart_callback_add(btn, "clicked", _mp_playlist_rename_button_cb, item->it);
-                               evas_object_propagate_events_set(btn, EINA_FALSE);
                                evas_object_data_set(btn, "layout_data", layout_data);
                        }
                        return btn;
@@ -610,7 +823,7 @@ _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part)
 
        if (!strcmp(part, "elm.flip.content"))
        {
-               edit_field = mp_widget_create_editfield(obj, AUDIO_SVC_PLAYLIST_NAME_SIZE - 1, NULL, layout_data->ad);
+               edit_field = mp_widget_create_editfield(obj, MP_PLAYLIST_NAME_SIZE - 1, NULL, layout_data->ad);
                entry = mp_widget_editfield_entry_get(edit_field);
                name = elm_entry_utf8_to_markup(name);
                elm_entry_entry_set(entry, name);
@@ -625,18 +838,27 @@ _mp_playlist_view_icon_get(void *data, Evas_Object * obj, const char *part)
 
                return edit_field;
        }
+       //}
 
        return eo;
 }
 
 static Elm_Genlist_Item_Class g_playlist_class_sweep = {
+       .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+       .refcount = 0,
+       .delete_me = EINA_FALSE,
        .item_style = "music_player/1icon.2text",
+       .decorate_item_style = "mode/slide3",
        .func.text_get = _mp_playlist_view_label_get,
        .func.content_get = _mp_playlist_view_icon_get,
 };
 
 static Elm_Genlist_Item_Class g_playlist_class = {
+       .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+       .refcount = 0,
+       .delete_me = EINA_FALSE,
        .item_style = "music_player/1icon.2text",
+       .decorate_item_style = "mode/slide",
        .func.text_get = _mp_playlist_view_label_get,
        .func.content_get = _mp_playlist_view_icon_get,
 };
@@ -650,26 +872,24 @@ Evas_Object *
 mp_playlist_view_create(struct appdata *ad, mp_view_type_t view_type)
 {
        DEBUG_TRACE("view_type: %d", view_type);
-       Evas_Object *navibar = mp_widget_navigation_new(ad->ctrl_bar, ad);
-
-       view_data_t *view_data = calloc(sizeof(view_data_t), 1);
-       MP_SET_VIEW_DATA_MAGIC(view_data);
-       view_data->ad = ad;
-       view_data->navibar = navibar;
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
        view_data->view_type = view_type;
-       DEBUG_TRACE("view_data->navibar: %x", view_data->navibar);
+       Evas_Object *view_layout = mp_view_layout_create(ad->tabbar, view_data, MP_VIEW_MODE_DEFAULT);
 
-       evas_object_data_set(navibar, "view_data", view_data);
+       mp_layout_data_t *layout_data = NULL;
+       layout_data = evas_object_data_get(view_layout, "layout_data");
+       MP_CHECK_NULL(layout_data);
+       evas_object_data_set(ad->controlbar_layout, "layout_data", layout_data);
 
-       Evas_Object *view_layout = mp_view_layout_create(navibar, view_data, MP_VIEW_MODE_DEFAULT);
        mp_view_layout_set_layout_data(view_layout,
                                       MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_PLAYLIST_LIST,
                                       MP_LAYOUT_LIST_CB, &g_playlist_list_cbs,
                                       MP_LAYOUT_GENLIST_ITEMCLASS, &g_playlist_class_sweep,
                                       MP_LAYOUT_GENLIST_AUTO_PLAYLIST_ITEMCLASS, &g_playlist_class, -1);
-       _mp_playlist_view_push_group_content(view_data, view_layout);
 
-       return navibar;
+       mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_BODY_PLAYLISTS", view_data);
+
+       return view_layout;
 }
 
 void
@@ -712,10 +932,9 @@ mp_playlist_view_reset_rename_mode(struct appdata *ad)
 {
        MP_CHECK_FALSE(ad);
 
-       MP_CHECK_FALSE(ad->library);
-       MP_CHECK_FALSE(ad->library->cur_view);
+       MP_CHECK_FALSE(ad->naviframe);
 
-       view_data_t *view_data = evas_object_data_get(ad->library->cur_view, "view_data");
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
        MP_CHECK_FALSE(view_data);
 
        mp_layout_data_t *layout_data = NULL;
index 7fb6812..4ccd5d7 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,9 +14,8 @@
  * limitations under the License.
  */
 
-
-
 #include "mp-library.h"
+#include "mp-ta.h"
 #include "mp-player-debug.h"
 #include "mp-common.h"
 #include "music.h"
@@ -38,15 +37,14 @@ mp_track_view_add_to_playlist_done_cb(void *data, Evas_Object * obj, void *event
        if (view_data->ad->notify != NULL)
        {
                evas_object_del(view_data->ad->notify);
+               view_data->ad->notify = NULL;
        }
        if (view_data->ad->notify_layout != NULL)
        {
                evas_object_del(view_data->ad->notify_layout);
+               view_data->ad->notify_layout = NULL;
        }
 
-       view_data->ad->notify = NULL;
-       view_data->ad->notify_layout = NULL;
-
        mp_layout_data_t *layout_data = NULL;
        layout_data = evas_object_data_get(mp_view_manager_get_first_view_layout(view_data->ad), "layout_data");
        if (layout_data)
@@ -75,15 +73,14 @@ mp_track_view_add_to_playlist_cancel_cb(void *data, Evas_Object * obj, void *eve
        if (view_data->ad->notify != NULL)
        {
                evas_object_del(view_data->ad->notify);
+               view_data->ad->notify = NULL;
        }
        if (view_data->ad->notify_layout != NULL)
        {
                evas_object_del(view_data->ad->notify_layout);
+               view_data->ad->notify_layout = NULL;
        }
 
-       view_data->ad->notify = NULL;
-       view_data->ad->notify_layout = NULL;
-
        Evas_Object *view_layout = mp_view_manager_get_last_view_layout(view_data->ad);
        MP_CHECK(view_layout);
 
@@ -97,33 +94,33 @@ Evas_Object *
 mp_track_view_create(struct appdata *ad)
 {
        DEBUG_TRACE("");
-       Evas_Object *navibar = mp_widget_navigation_new(ad->ctrl_bar, ad);
 
-       view_data_t *view_data = calloc(sizeof(view_data_t), 1);
-       MP_SET_VIEW_DATA_MAGIC(view_data);
-       view_data->ad = ad;
-       view_data->navibar = navibar;
+       view_data_t *view_data = evas_object_data_get(ad->naviframe, "view_data");
+       view_data->view_type = MP_VIEW_TYPE_SONGS;
+       Evas_Object *view_layout = mp_view_layout_create(ad->tabbar, view_data, MP_VIEW_MODE_DEFAULT);
 
-       evas_object_data_set(navibar, "view_data", view_data);
-       Evas_Object *view_layout = mp_view_layout_create(navibar, view_data, MP_VIEW_MODE_DEFAULT);
+       Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
 
-       Elm_Genlist_Item_Class itc;
-       memset(&itc, 0, sizeof(Elm_Genlist_Item_Class));
-       itc.item_style = "music_player/1icon.3text";
-       itc.func.text_get = mp_common_track_list_label_get;
-       itc.func.content_get = mp_common_track_list_icon_get;
+       itc->item_style = "music_player/1icon.3text";
+       itc->decorate_item_style = "mode/slide4.text";
+       itc->func.text_get = mp_common_track_list_label_get;
+       itc->func.content_get = mp_common_track_list_icon_get;
 
        mp_genlist_cb_t genlist_cbs;
        memset(&genlist_cbs, 0, sizeof(mp_genlist_cb_t));
        genlist_cbs.selected_cb = mp_common_track_genlist_sel_cb;
 
        mp_view_layout_set_layout_data(view_layout,
-                                      MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_ALL,
-                                      MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, &itc, -1);
+                                      MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_ALL,
+                                      MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, itc, -1);
+
+       mp_layout_data_t *layout_data = NULL;
+       layout_data = evas_object_data_get(view_layout, "layout_data");
+       MP_CHECK_NULL(layout_data);
 
-       mp_view_manager_push_view_content(view_data, view_layout, MP_VIEW_CONTENT_LIST);
+       evas_object_data_set(ad->controlbar_layout, "layout_data", layout_data);
 
-       return navibar;
+       return view_layout;
 }
 
 void
@@ -160,11 +157,11 @@ mp_track_view_update_title_button(Evas_Object * track_view)
 
        if (view_data->ad->b_add_tracks)
        {
-               mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_OPT_ADD_PLAYLIST"), view_data);
+               mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_OPT_ADD_PLAYLIST", view_data);
        }
        else
        {
-               mp_view_manager_set_title_and_buttons(view_data, GET_STR("IDS_MUSIC_HEADER_SONGS"), view_data);
+               mp_view_manager_set_title_and_buttons(view_data, "IDS_MUSIC_HEADER_SONGS", view_data);
        }
 
 }
diff --git a/src/widget/include/mp-minicontroller.h b/src/widget/include/mp-minicontroller.h
new file mode 100755 (executable)
index 0000000..a8dde91
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MP_MINICONTROLLER_H__
+#define __MP_MINICONTROLLER_H__
+
+#include "mp-ta.h"
+#include "music.h"
+#include "mp-item.h"
+#include "mp-player-control.h"
+#include "mp-play-view.h"
+#include "mp-common.h"
+#include "mp-minicontroller.h"
+#include "mp-player-mgr.h"
+#include "mp-player-debug.h"
+
+int mp_minicontroller_create(struct appdata *ad);
+int mp_minicontroller_hide(struct appdata *ad);
+int mp_minicontroller_show(struct appdata *ad);
+int mp_minicontroller_destroy(struct appdata *ad);
+void mp_minicontroller_update(struct appdata *ad);
+void mp_minicontroller_rotate(struct appdata *ad, int angle);
+void mp_minicontroller_visible_set(struct appdata *ad, bool visible);
+
+#endif
index 79a9a3e..1a5388f 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 #ifndef __MP_popup_H_
 #define __MP_popup_H_
 
 
 typedef enum _mp_popup_t
 {
+       MP_POPUP_PV_SET_AS = 0,
+       MP_POPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME,
+       MP_POPUP_PV_SHARE,
+       MP_POPUP_LIST_SHARE,
        MP_POPUP_SOUND_PATH,
        MP_POPUP_ADD_TO_PLST,
 } mp_popup_t;
 
-#define mp_popup_title_set(obj, title) elm_object_part_text_set((obj), "title,text", (title))
-#define mp_popup_desc_set(obj, desc) elm_object_text_set((obj), (desc))
-#define mp_popup_content_set(obj, content) elm_object_content_set((obj), (content))
-
-#define mp_popup_btn_popup_set(obj, popup) do { \
-       if (obj) { \
-               evas_object_data_set((obj), "popup", (popup)); \
-       } \
-} while (0)
-#define mp_popup_btn_popup_get(obj) evas_object_data_get((obj), "popup")
-#define mp_popup_btn_response_set(obj, response) do { \
-       if (obj) { \
-               evas_object_data_set((obj), "response", (void *)(response)); \
-       } \
-} while (0)
-#define mp_popup_btn_response_get(obj) (int)evas_object_data_get((obj), "response")
-
+typedef enum {
+       MP_POPUP_BTN_1,
+       MP_POPUP_BTN_2,
+       MP_POPUP_BTN_3,
+       MP_POPUP_BTN_MAX,
+} popup_button_t;
 
 Elm_Object_Item *mp_genlist_popup_item_append(Evas_Object * popup, char *label, Evas_Object * icon, void *cb,
                                               void *data);
 Evas_Object *mp_genlist_popup_create(Evas_Object * parent, mp_popup_t type, void *user_data, struct appdata *ad);
-Evas_Object *mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *user_data, void *response_cb,
+Evas_Object *mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *user_data, Evas_Smart_Cb response_cb,
                             struct appdata *ad);
 void mp_popup_destroy(struct appdata *ad);
-
-void mp_popup_set_response_cb(Evas_Object *popup, Evas_Smart_Cb response_cb, void *data);
 void mp_popup_response(Evas_Object *popup, int response);
-Evas_Object *mp_popup_button_set(Evas_Object *popup, const char *part, const char *text, int response);
+bool mp_popup_button_set(Evas_Object *popup, popup_button_t btn_index, const char *text, int response);
 void mp_popup_timeout_set(Evas_Object *popup, double timeout);
-void mp_popup_block_clicked_set(Evas_Object *popup);
 
 #endif // __MP_contextpopup_H_
index b2b3e45..473be7e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,7 +15,6 @@
  */
 
 
-
 #ifndef __MP_SEARCH_H_
 #define __MP_SEARCH_H_
 #include <Evas.h>
index a2aac6f..374276e 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #ifndef        __MP_SMART_EVENT_BOX_H_
 #define        __MP_SMART_EVENT_BOX_H_
 
index 85cfcdd..ed4d25c 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,8 +14,6 @@
  * limitations under the License.
  */
 
-
-
 #ifndef __MP_VIEW_LAYOUT_H_
 #define __MP_VIEW_LAYOUT_H_
 
@@ -40,9 +38,10 @@ typedef enum
 enum
 {
        MP_LAYOUT_CATEGORY_TYPE = 1,    //track list or group list or playlist
-       MP_LAYOUT_TRACK_LIST_TYPE,      //audio_svc_track_type_e
-       MP_LAYOUT_GROUP_LIST_TYPE,      //audio_svc_group_type_e
+       MP_LAYOUT_TRACK_LIST_TYPE,      //mp_track_type_e
+       MP_LAYOUT_GROUP_LIST_TYPE,      //mp_group_type_e
        MP_LAYOUT_PLAYLIT_ID,
+       MP_LAYOUT_PLAYLIT_HANDLE,
        MP_LAYOUT_TYPE_STR,     //type_str for db query
        MP_LAYOUT_FILTER_STR,
        MP_LAYOUT_GENLIST_ITEMCLASS,    //item class of genlist
@@ -50,6 +49,7 @@ enum
        MP_LAYOUT_LIST_CB,
        MP_LAYOUT_EDIT_MODE,
        MP_LAYOUT_REORDER_MODE,
+       MP_LAYOUT_PLST_HANDLE_TYPE,
 };
 
 typedef struct
@@ -58,14 +58,21 @@ typedef struct
        genlist_cb_t auto_playlist_cb;
 } mp_genlist_cb_t;
 
+typedef enum
+{
+       MP_SQUARE_VIEW_GENGRID,
+       MP_SQUARE_VIEW_GENLIST
+} mp_square_view_type_e;
+
 typedef struct
 {
        int magic;
        mp_list_category_t category;
-       audio_svc_track_type_e track_type;
-       audio_svc_group_type_e group_type;
+       mp_track_type_e track_type;
+       mp_group_type_e group_type;
 
        int playlist_id;
+       mp_media_info_h playlist_handle;
        char *type_str;
        char *filter_str;
 
@@ -79,25 +86,24 @@ typedef struct
        int item_count;
        int track_count;        //for create playing list from search result.
 
-       AudioHandleType *svc_handle;
-       AudioHandleType *track_handle;  //for search
-       AudioHandleType *artist_handle; //for search
-       AudioHandleType *album_handle;  //for search
-       AudioHandleType *default_playlists;
-
-       Evas_Object *navibar;   //parent navibar of layout
+       mp_media_list_h svc_handle;
+       mp_media_list_h track_handle;   //for search
+       mp_media_list_h artist_handle;  //for search
+       mp_media_list_h album_handle;   //for search
+       mp_media_list_h default_playlists;
 
        Evas_Object *layout;
        Evas_Object *genlist;
        Evas_Object *search_bar;
        Evas_Object *now_playing;
        Evas_Object *box;       //content of confomant, genlist or sentinal should be contained in it.
+       Evas_Object *index_fast;
        Evas_Object *sentinel;
        Evas_Object *isf_entry;
 
        Ecore_IMF_Context *imf_context;
 
-       Elm_Genlist_Item_Class itc;
+       Elm_Genlist_Item_Class *itc;
        Elm_Genlist_Item_Class auto_playlist_item_class;
        Elm_Object_Item *selected_it;   //Selected genlist item;
 
@@ -109,6 +115,7 @@ typedef struct
 
        view_data_t *view_data;
 
+       char *old_name;
        Elm_Object_Item *rename_git;
 
        mp_view_mode_t view_mode;       // to classify edit & search view.
@@ -118,46 +125,40 @@ typedef struct
        Evas_Object *now_playing_progress;
        Ecore_Timer *progress_timer;
 
-       //added for append item in idler callback.
+       // append item in idler callback.
+       char *fast_scrooll_index;
        Ecore_Idler *load_item_idler;
        Ecore_Idler *block_size_idler;
 
-       //added for genlist edit mode
+       // genlist edit mode
        Evas_Object *select_all_layout;
        Evas_Object *select_all_checkbox;
        Eina_Bool select_all_checked;
        int checked_count;
 
-       //support cancel while processing edit function.
+       mp_plst_type_t plst_handle_type;
+
+       // support cancel while processing edit function.
        Ecore_Idler *edit_idler;
        Ecore_Idler *reorder_idler;
        Elm_Object_Item *current_edit_item;
        int selected_count;     //use to store checked count when editing strared.
        int error_count;
-       AudioHandleType *group_track_handle;    //for deleting group items
+       mp_media_list_h group_track_handle;     //for deleting group items
        int edit_track_index;   //for deleting group items
        bool group_item_delete_error;   //for deleting group items
        mp_edit_operation_t edit_operation;
        int playlist_track_count;       //number of tracks in playlist..
        int edit_playlist_id;   //playlist_id  tracks to be added.
+       mp_playlist_h edit_playlist_handle;
 
        char *navibar_title;
        void *callback_data;
        int default_playlist_count;
 
-       Elm_Object_Item **aa_group;     //group item for artist-album list.
-       Elm_Genlist_Item_Class *aa_group_itc; //group for album list.
-       int aa_group_count; // count of group item
-       int selected_group_index; //selected index for group
-       AudioHandleType *aa_handle; //handle for artist-album group
-       int selected_album_sub_index; //selected index for artist-album sub genlist
-       int *aa_item_count; //item count for artist-album sub genlist
        bool album_delete_flag; //flag for delete album item
-       int selected_index; //selected index for group
 
        Elm_Object_Item *album_group;   //group item for album track view.
-       Elm_Genlist_Item_Class *album_group_itc; //group for album track view.
-       AudioHandleType *album_track_handle; //group item handle for album track view
 
        Eina_Bool is_item_del;  //set it true if elm_object_item_del() used. When play track after delete track, svc_handle mismatch with list.
 
@@ -167,9 +168,9 @@ typedef struct
 {
        Elm_Object_Item *it;    // Genlist Item pointer
        Eina_Bool checked;      // Check status
-       audio_svc_group_type_e group_type;      //use this to classify ablum or artist when group item seleted in search view.
-       AudioHandleType *handle;
-       MediaSvcHandle *media_svc_handle;
+       mp_group_type_e group_type;     //use this to classify ablum or artist when group item seleted in search view.
+       mp_media_info_h handle;
+       bool unregister_lang_mgr;
 } mp_genlist_item_data_t;
 
 #define MP_LAYOUT_DATA_MAGIC   0x810522bb
diff --git a/src/widget/mp-minicontroller.c b/src/widget/mp-minicontroller.c
new file mode 100755 (executable)
index 0000000..a23ce6e
--- /dev/null
@@ -0,0 +1,446 @@
+/*
+ * Copyright 2012        Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <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 (720)
+#define MINI_CONTROLLER_WIDTH_LANDSCAPE (1280)
+#define MINI_CONTROLLER_HEIGHT (170)
+#define WL_INDI_H 27           //Window Layout Indicator Height
+#define PAUSE_TIME_OUT 120
+
+#define CTR_EDJ_SIG_SRC "ctrl_edj"
+#define CTR_PROG_SIG_SRC "ctrl_prog"
+
+#define BUFFER_MAX             256
+
+static void _minicontroller_action_cb(void *data, Evas_Object * obj, const char *emission, const char *source);
+static Evas_Object *_load_edj(Evas_Object * parent, const char *file, const char *group);
+static Evas_Object *_create_bgimg(Evas_Object * parent);
+static Evas_Object *_load_minicontroller(struct appdata *ad);
+
+static inline void
+_mp_minicontroller_update_elapsed_time(struct appdata *ad)
+{
+       MP_CHECK(ad);
+       MP_CHECK(ad->minicontroller_layout);
+
+
+       int sec = mp_player_mgr_get_position() / 1000;
+       int min = sec / 60;
+       sec = sec % 60;
+
+       char *time_text = g_strdup_printf("%02d:%02d", min, sec);
+       if (time_text) {
+               edje_object_part_text_set(_EDJ(ad->minicontroller_layout), "elm.elapsed_time", time_text);
+               free(time_text);
+               time_text = NULL;
+       }
+}
+
+static Eina_Bool
+_minicontroller_update_progresstime_cb(void *data)
+{
+       struct appdata *ad = data;
+       mp_retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "appdata is NULL");
+
+       if (ad->player_state == PLAY_STATE_PLAYING)
+       {
+               _mp_minicontroller_update_elapsed_time(ad);
+       }
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static void
+_minicontroller_progress_timer_add(void *data)
+{
+       struct appdata *ad = data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+       DEBUG_TRACE();
+
+       mp_ecore_timer_del(ad->minicon_progress_timer);
+
+       _mp_minicontroller_update_elapsed_time(ad);
+       if (ad->player_state == PLAY_STATE_PLAYING)
+               ad->minicon_progress_timer = ecore_timer_add(1.0, _minicontroller_update_progresstime_cb, ad);
+}
+
+static void
+_minicontroller_action_cb(void *data, Evas_Object * obj, const char *emission, const char *source)
+{
+       DEBUG_TRACE("emission: %s, source: %s\n", emission, source);
+
+       struct appdata *ad = (struct appdata *)data;
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       if (source)
+
+       {
+               if (strcmp(source, "rew_btn_down") == 0)
+               {
+                       DEBUG_TRACE("REW");
+                       mp_play_control_rew_cb(data, obj, "rew_btn_down", CTR_EDJ_SIG_SRC);
+
+               }
+               else if (strcmp(source, "rew_btn_up") == 0)
+               {
+                       DEBUG_TRACE("REW_up");
+                       mp_play_control_rew_cb(data, obj, "rew_btn_up", CTR_EDJ_SIG_SRC);
+
+
+               }
+               else if (strcmp(source, "play") == 0)
+               {
+
+                       if (ad->minicon_timer)  //Destroy the Hide out Timer.
+                       {
+                               ecore_timer_del(ad->minicon_timer);
+                               ad->minicon_timer = NULL;
+                       }
+                       if (ad->player_state == PLAY_STATE_PLAYING)
+                       {
+                               mp_play_control_play_cb(data, obj, SIGNAL_PAUSE, source);
+                               edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_pause",
+                                                       "play.pause.image");
+                       }
+                       else
+                       {
+                               mp_play_control_play_cb(data, obj, SIGNAL_PLAY, source);
+                               edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_play",
+                                                       "play.pause.image");
+
+                       }
+               }
+
+               else if (strcmp(source, "ff_btn_down") == 0)
+               {
+                       DEBUG_TRACE("FWD_down");
+                       mp_play_control_ff_cb(data, obj, "ff_btn_down", CTR_EDJ_SIG_SRC);
+
+               }
+               else if (strcmp(source, "ff_btn_up") == 0)
+               {
+                       DEBUG_TRACE("FWD_up");
+                       mp_play_control_ff_cb(data, obj, "ff_btn_up", CTR_EDJ_SIG_SRC);
+
+
+               }
+               else if (!g_strcmp0(source, "repeat"))
+               {
+                       DEBUG_TRACE("REPEAT");
+                       int repeat_state = 0;
+                       mp_setting_get_repeat_state(&repeat_state);
+                       repeat_state++;
+                       repeat_state %= 3;
+                       ad->play_rep_state = repeat_state;
+                       mp_setting_set_repeat_state(repeat_state);
+                       mp_play_control_repeat_set(ad, repeat_state);
+               }
+               else if (!g_strcmp0(source, "shuffle"))
+               {
+                       DEBUG_TRACE("SHUFFLE");
+                       int shuffle_state = 0;
+                       mp_setting_get_shuffle_state(&shuffle_state);
+                       shuffle_state = !shuffle_state;
+                       ad->play_shuffle_state = shuffle_state;
+                       mp_setting_set_shuffle_state(shuffle_state);
+                       mp_play_control_shuffle_set(ad, shuffle_state);
+               }
+               else if (strcmp(source, "albumart") == 0)
+               {
+                       //mp_minicontroller_destroy(ad);
+                       DEBUG_TRACE("albumart");
+                       ad->load_play_view = true;
+                       elm_win_activate(ad->win_main);
+                       return;
+               }
+               mp_minicontroller_update(ad);
+
+       }
+
+
+
+}
+
+static Evas_Object *
+_load_edj(Evas_Object * parent, const char *file, const char *group)
+{
+       Evas_Object *eo;
+       int r;
+
+       eo = elm_layout_add(parent);
+       if (eo)
+       {
+               r = elm_layout_file_set(eo, file, group);
+               if (!r)
+               {
+                       evas_object_del(eo);
+                       return NULL;
+               }
+               evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(parent, eo);
+               evas_object_show(eo);
+       }
+
+       return eo;
+}
+
+static Evas_Object *
+_create_bgimg(Evas_Object * parent)
+{
+       Evas_Object *bg;
+
+       mp_retvm_if(parent == NULL, NULL, "parent is NULL");
+
+       DEBUG_TRACE_FUNC();
+
+       bg = elm_bg_add(parent);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, bg);
+       evas_object_color_set(bg, 37, 37, 37, 255);
+       evas_object_show(bg);
+
+       return bg;
+}
+
+static Evas_Object *
+_load_minicontroller(struct appdata *ad)
+{
+       DEBUG_TRACE_FUNC();
+       mp_retvm_if(ad == NULL, NULL, "appdata is NULL");
+       Evas_Object *win = NULL;
+       Evas_Object *eo = NULL;
+       Evas_Object *icon = NULL;
+
+       win = minicontrol_win_add("musicplayer-mini");
+       if (!win)
+               return NULL;
+
+       double scale = elm_config_scale_get();
+       evas_object_resize(win, MINI_CONTROLLER_WIDTH * scale, MINI_CONTROLLER_HEIGHT * scale);
+
+       _create_bgimg(win);
+       ad->win_minicon = win;
+
+       /* load edje */
+       eo = _load_edj(win, MINICON_EDJ_NAME, "music-minicontroller");
+       if (!eo)
+               return NULL;
+
+       icon = elm_icon_add(eo);
+       ad->minicon_icon = icon;
+       edje_object_signal_callback_add(_EDJ(eo), "clicked", "*", _minicontroller_action_cb, ad);
+
+       evas_object_show(win);
+       //evas_object_show(eo);
+
+       return eo;
+}
+
+int
+mp_minicontroller_create(struct appdata *ad)
+{
+       DEBUG_TRACE_FUNC();
+       mp_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+       if (!(ad->minicontroller_layout && ad->win_minicon))
+       {
+               ad->minicontroller_layout = _load_minicontroller(ad);
+               if (ad->minicontroller_layout == NULL)
+               {
+                       DEBUG_TRACE("ERROR");
+                       return -1;
+               }
+       }
+
+
+       mp_minicontroller_show(ad);
+       return 0;
+}
+
+
+int
+mp_minicontroller_show(struct appdata *ad)
+{
+       DEBUG_TRACE("minicontroller view show!!");
+       mp_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+       ad->b_minicontroller_show = TRUE;
+       mp_minicontroller_update(ad);
+       evas_object_show(ad->win_minicon);
+       return 0;
+
+}
+
+void
+mp_minicontroller_update(struct appdata *ad)
+{
+
+       DEBUG_TRACE();
+       mp_retm_if(ad == NULL, "appdata is NULL");
+
+       if (ad->player_state == PLAY_STATE_PLAYING)
+       {
+               edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_pause", "play.pause.image");
+
+               if (ad->minicon_visible)
+                       _minicontroller_progress_timer_add(ad);
+       }
+       else
+       {
+               edje_object_signal_emit(elm_layout_edje_get(ad->minicontroller_layout), "set_play",
+                                       "play.pause.image");
+       }
+
+       if (ad->playing_list) {
+               music_list_item *current_item = mp_play_list_get_current_item(ad->playing_list);
+               MP_CHECK(current_item);
+               DEBUG_TRACE("album art is %s", current_item->albumart);
+               if (strlen(current_item->album) > 0 && mp_util_is_image_valid(ad->evas, current_item->albumart))
+                       elm_icon_file_set(ad->minicon_icon, current_item->albumart, NULL);
+               else
+                       elm_icon_file_set(ad->minicon_icon, DEFAULT_THUMBNAIL, NULL);
+               edje_object_part_swallow(_EDJ(ad->minicontroller_layout), "albumart_image", ad->minicon_icon);
+               edje_object_part_text_set(_EDJ(ad->minicontroller_layout), "elm.text", current_item->title);
+               edje_object_part_text_set(_EDJ(ad->minicontroller_layout), "elm.text.2", current_item->artist);
+
+               if (!ad->minicon_progress_timer)
+                       _mp_minicontroller_update_elapsed_time(ad);
+
+               const char *signal = NULL;
+               /* repeat state */
+               int repeat_state = 0;
+               mp_setting_get_repeat_state(&repeat_state);
+               if (repeat_state == MP_SETTING_REP_ALL)
+                       signal = "set_repeat_all";
+               else if (repeat_state == MP_SETTING_REP_1)
+                       signal = "set_repeat_one";
+               else
+                       signal = "set_repeat_none";
+               edje_object_signal_emit(_EDJ(ad->minicontroller_layout), signal, "c_source");
+
+               /* shuffle state */
+               int shuffle_state = false;
+               mp_setting_get_shuffle_state(&shuffle_state);
+               if (shuffle_state)
+                       signal = "set_shuffle_on";
+               else
+                       signal = "set_shuffle_off";
+               edje_object_signal_emit(_EDJ(ad->minicontroller_layout), signal, "c_source");
+
+               evas_object_show(ad->minicontroller_layout);
+       }
+}
+
+int
+mp_minicontroller_hide(struct appdata *ad)
+{
+       DEBUG_TRACE("minicontroller view hide!!\n");
+       mp_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+       evas_object_hide(ad->win_minicon);
+       ad->b_minicontroller_show = FALSE;
+
+       if (ad->minicon_timer)
+       {
+               ecore_timer_del(ad->minicon_timer);
+               ad->minicon_timer = NULL;
+       }
+
+       if (ad->minicon_progress_timer)
+       {
+               ecore_timer_del(ad->minicon_progress_timer);
+               ad->minicon_progress_timer = NULL;
+       }
+
+       return 0;
+
+}
+
+int
+mp_minicontroller_destroy(struct appdata *ad)
+{
+       DEBUG_TRACE("minicontroller view destroy!!");
+       mp_retvm_if(ad == NULL, -1, "appdata is NULL");
+
+       if (ad->minicontroller_layout != NULL)
+       {
+               evas_object_hide(ad->minicontroller_layout);
+               evas_object_del(ad->minicontroller_layout);
+               ad->minicontroller_layout = NULL;
+               ad->b_minicontroller_show = FALSE;
+       }
+
+       if (ad->win_minicon)
+       {
+               evas_object_del(ad->win_minicon);
+               ad->win_minicon = NULL;
+       }
+
+       ad->minicon_visible = false;
+
+       return 0;
+}
+
+void
+mp_minicontroller_rotate(struct appdata *ad, int angle)
+{
+       MP_CHECK(ad);
+
+       int w = 0;
+       const char *signal = NULL;
+       if (angle == 90 || angle == 270) {
+               signal = "sig_set_landscape_mode";
+               w = MINI_CONTROLLER_WIDTH_LANDSCAPE;
+       } else {
+               signal = "sig_set_portrait_mode";
+               w = MINI_CONTROLLER_WIDTH;
+       }
+
+       edje_object_signal_emit(_EDJ(ad->minicontroller_layout), signal, "c_source");
+
+       double scale = elm_scale_get();
+       evas_object_resize(ad->win_minicon, w * scale, MINI_CONTROLLER_HEIGHT * scale);
+       elm_win_rotation_with_resize_set(ad->win_minicon, angle);
+}
+
+void
+mp_minicontroller_visible_set(struct appdata *ad, bool visible)
+{
+       MP_CHECK(ad);
+
+       ad->minicon_visible = visible;
+       if (visible)
+       {
+               _minicontroller_progress_timer_add(ad);
+
+       }
+       else
+       {
+               mp_ecore_timer_del(ad->minicon_progress_timer);
+       }
+}
+
index f3fa552..6170b29 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,9 +14,7 @@
  * limitations under the License.
  */
 
-
 #include <stdio.h>
-#include <appcore-efl.h>
 #include "music.h"
 #include "mp-menu.h"
 #include "mp-popup.h"
 #include "mp-view-layout.h"
 #include "mp-play-list.h"
 #include "mp-common.h"
-#include "mm_sound.h"
+#include <sound_manager.h>
+#include "mp-util.h"
 #include "mp-widget.h"
 
-typedef struct {
-       Evas_Object *popup;
-       Evas_Smart_Cb response_cb;
-       void *cb_data;
-       int response;
-} Popup_Cb_Data;
-
 static Elm_Genlist_Item_Class itc;
 
-static Evas_Object *g_popup_win = NULL;
+typedef struct {
+       struct appdata *ad;
+       mp_popup_type type;
 
-static void
-_mp_popup_response_cb(void *data, Evas_Object * obj, void *event_info)
-{
-       DEBUG_TRACE("response callback=%d", (int)event_info);
-       if (g_popup_win)
-       {
-               evas_object_del(g_popup_win);
-               g_popup_win = NULL;
-       }
+       Evas_Smart_Cb response_cb;
+       void *cb_data;
+} Popup_Data;
 
-       if ((int)event_info != 5)
-               evas_object_del(obj);
-}
+#define mp_popup_set_popup_data(obj, data) evas_object_data_set((obj), "popup_data", (data))
+#define mp_popup_get_popup_data(obj) evas_object_data_get((obj), "popup_data")
 
 static char *
 _mp_popup_gl_label_get(void *data, Evas_Object * obj, const char *part)
@@ -78,7 +65,7 @@ _mp_popup_gl_icon_get(void *data, Evas_Object * obj, const char *part)
                elm_radio_state_value_set(radio, MP_SND_PATH_EARPHONE);
                evas_object_data_set(radio, "idx", (void *)(MP_SND_PATH_EARPHONE));
        }
-       else if (!strcmp(GET_SYS_STR("Speaker"), data))
+       else if (!strcmp(GET_STR("Speaker"), data))
        {
                elm_radio_state_value_set(radio, MP_SND_PATH_SPEAKER);
                evas_object_data_set(radio, "idx", (void *)(MP_SND_PATH_SPEAKER));
@@ -97,7 +84,7 @@ _mp_popup_gl_icon_get(void *data, Evas_Object * obj, const char *part)
 }
 
 static void
-_mp_popup_set_min_size(Evas_Object *box, int cnt)
+mp_popup_set_min_size(Evas_Object *box, int cnt)
 {
        int min_h = 0;
        MP_CHECK(box);
@@ -107,24 +94,30 @@ _mp_popup_set_min_size(Evas_Object *box, int cnt)
                min_h = MP_POPUP_GENLIST_ITEM_H*cnt + cnt -1;
 
        evas_object_size_hint_min_set(box,
-                       MP_POPUP_GENLIST_ITEM_W * elm_scale_get(), min_h * elm_scale_get());
+                       MP_POPUP_GENLIST_ITEM_W * elm_config_scale_get(), min_h * elm_config_scale_get());
+}
+
+static void
+_mp_popup_cancel_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       evas_object_del(obj);
 }
 
 static Evas_Object *
-_mp_popup_create_min_style_popup(Evas_Object * parent, char *title, int cnt)
+_mp_popup_create_min_style_popup(Evas_Object * parent, char *title, int cnt,
+                               void *user_data, Evas_Smart_Cb cb, struct appdata *ad)
 {
        Evas_Object *genlist = NULL;
        Evas_Object *box = NULL;
-       Evas_Object *popup = elm_popup_add(parent);
+       Evas_Object *popup = mp_popup_create(parent, MP_POPUP_GENLIST, title, user_data, cb, ad);
        MP_CHECK_NULL(popup);
 
        elm_object_style_set(popup, "min_menustyle");
-       mp_popup_title_set(popup, title);
 
        box = elm_box_add(popup);
        MP_CHECK_NULL(box);
 
-       _mp_popup_set_min_size(box, cnt);
+       mp_popup_set_min_size(box, cnt);
 
        genlist = elm_genlist_add(box);
        MP_CHECK_NULL(genlist);
@@ -135,32 +128,153 @@ _mp_popup_create_min_style_popup(Evas_Object * parent, char *title, int cnt)
 
        evas_object_show(genlist);
        elm_box_pack_end(box, genlist);
-       mp_popup_content_set(popup, box);
+       elm_object_content_set(popup, box);
        evas_object_show(box);
 
-       mp_popup_set_response_cb(popup, _mp_popup_response_cb, NULL);
-       mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO);
        evas_object_show(popup);
 
        return popup;
 }
 
 static Evas_Object *
-_mp_popup_sound_path_create(Evas_Object * parent, void *data)
+_mp_popup_pv_set_as_create(Evas_Object * parent, void *user_data, bool add_to_home, struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       MP_CHECK_NULL(ad);
+       Evas_Object *popup = NULL;
+       Elm_Object_Item *item;
+       Evas_Object *genlist;
+
+       popup = _mp_popup_create_min_style_popup(parent, GET_SYS_STR("IDS_COM_SK_SET"), add_to_home ? 3:2, NULL, _mp_popup_cancel_button_cb, ad);
+       MP_CHECK_NULL(popup);
+
+       mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO);
+
+       itc.item_style = "1text";
+       itc.func.text_get = _mp_popup_gl_label_get;
+       itc.func.content_get = NULL;
+       itc.func.state_get = NULL;
+       itc.func.del = NULL;
+
+       genlist = evas_object_data_get(popup, "genlist");
+       MP_CHECK_NULL(genlist);
+
+       if (add_to_home)
+       {
+
+       }
+
+       item = elm_genlist_item_append(genlist, &itc, GET_STR(CALL_RINGTONE), NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_set_as_select_cb, user_data);
+
+       item = elm_genlist_item_append(genlist, &itc, GET_STR(CALLER_RINGTONE), NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_set_as_select_cb, user_data);
+
+       return popup;
+}
+
+static Evas_Object *
+_mp_popup_pv_share_create(Evas_Object * parent, void *user_data, struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       MP_CHECK_NULL(ad);
+       Evas_Object *popup = NULL;
+       Elm_Object_Item *item;
+       Evas_Object *genlist;
+       int option_count;
+#ifdef MP_FEATURE_WIFI_SHARE
+       option_count = 4;
+#else
+       option_count = 3;
+#endif
+       popup = _mp_popup_create_min_style_popup(parent, GET_SYS_STR("IDS_COM_BUTTON_SHARE"), option_count, NULL, _mp_popup_cancel_button_cb, ad);
+
+       MP_CHECK_NULL(popup);
+       mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO);
+
+       itc.item_style = "1text";
+       itc.func.text_get = _mp_popup_gl_label_get;
+       itc.func.content_get = NULL;
+       itc.func.state_get = NULL;
+       itc.func.del = NULL;
+       genlist = evas_object_data_get(popup, "genlist");
+       MP_CHECK_NULL(genlist);
+
+       item = elm_genlist_item_append(genlist, &itc, BLUETOOTH_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data);
+
+       item = elm_genlist_item_append(genlist, &itc, EMAIL_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data);
+       item = elm_genlist_item_append(genlist, &itc, MESSAGE_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data);
+#ifdef MP_FEATURE_WIFI_SHARE
+       item = elm_genlist_item_append(genlist, &itc, WIFI_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_select_cb, user_data);
+#endif
+
+       return popup;
+}
+
+static Evas_Object *
+_mp_popup_list_share_create(Evas_Object * parent, void *user_data, struct appdata *ad)
+{
+       DEBUG_TRACE("");
+       MP_CHECK_NULL(ad);
+       Evas_Object *popup = NULL;
+       Elm_Object_Item *item;
+       Evas_Object *genlist;
+       int option_count;
+#ifdef MP_FEATURE_WIFI_SHARE
+       option_count = 4;
+#else
+       option_count = 3;
+#endif
+
+       popup = _mp_popup_create_min_style_popup(parent, GET_SYS_STR("IDS_COM_BUTTON_SHARE"), option_count, NULL, _mp_popup_cancel_button_cb, ad);
+       MP_CHECK_NULL(popup);
+       mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO);
+
+       itc.item_style = "1text";
+       itc.func.text_get = _mp_popup_gl_label_get;
+       itc.func.content_get = NULL;
+       itc.func.state_get = NULL;
+       itc.func.del = NULL;
+
+       genlist = evas_object_data_get(popup, "genlist");
+       MP_CHECK_NULL(genlist);
+
+       item = elm_genlist_item_append(genlist, &itc, BLUETOOTH_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data);
+       item = elm_genlist_item_append(genlist, &itc, EMAIL_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data);
+
+       item = elm_genlist_item_append(genlist, &itc, MESSAGE_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data);
+#ifdef MP_FEATURE_WIFI_SHARE
+       item = elm_genlist_item_append(genlist, &itc, WIFI_SYS, NULL,
+                                      ELM_GENLIST_ITEM_NONE, mp_menu_share_list_select_cb, user_data);
+#endif
+
+       return popup;
+}
+
+static Evas_Object *
+_mp_popup_sound_path_create(Evas_Object * parent, void *data, struct appdata *ad)
 {
        DEBUG_TRACE_FUNC();
+       MP_CHECK_NULL(ad);
 
        Evas_Object *popup = NULL;
-       int bt_connected = 0;
+       bool bt_connected = false;
        int earjack = 0;
        int ret = 0;
        char *bt_name = NULL;
        int cnt = 1;
 
-       ret = mm_sound_route_get_a2dp_status(&bt_connected, &bt_name);
-       if (ret != MM_ERROR_NONE)
+       ret = sound_manager_get_a2dp_status(&bt_connected, &bt_name);
+       if (ret != SOUND_MANAGER_ERROR_NONE)
        {
-               WARN_TRACE("Fail to mm_sound_route_get_a2dp_status ret = [%d]", ret);
+               WARN_TRACE("Fail to sound_manager_get_a2dp_status ret = [%d]", ret);
        }
        IF_FREE(bt_name);
        if(bt_connected)
@@ -171,7 +285,9 @@ _mp_popup_sound_path_create(Evas_Object * parent, void *data)
        if(earjack)
                cnt++;
 
-       popup = _mp_popup_create_min_style_popup(parent, GET_STR("Sound path"), cnt);
+       popup = _mp_popup_create_min_style_popup(parent, GET_SYS_STR("IDS_COM_HEADER_AUDIO_DEVICE_ABB"), cnt, NULL, _mp_popup_cancel_button_cb, ad);
+       MP_CHECK_NULL(popup);
+       mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO);
 
        return popup;
 }
@@ -180,15 +296,17 @@ static Evas_Object *
 _mp_popup_add_to_playlist_create(Evas_Object * parent, void *data, struct appdata *ad)
 {
        DEBUG_TRACE_FUNC();
-
+       MP_CHECK_NULL(ad);
        Evas_Object *popup = NULL;
        int ret;
        int count = 0;
 
-       ret = audio_svc_count_playlist(ad->media_svc_handle, "", "", &count);
+       ret = mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, NULL, &count);
        DEBUG_TRACE("count,%d", count);
 
-       popup = _mp_popup_create_min_style_popup(parent, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), count+1);
+       popup = _mp_popup_create_min_style_popup(parent, GET_STR("IDS_MUSIC_BODY_ADD_TO_PLAYLIST"), count+1, NULL, _mp_popup_cancel_button_cb, ad);
+       MP_CHECK_NULL(popup);
+       mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO);
 
        return popup;
 }
@@ -267,11 +385,23 @@ mp_genlist_popup_create(Evas_Object * parent, mp_popup_t type, void *user_data,
 
        switch (type)
        {
+       case MP_POPUP_PV_SET_AS:
+               popup = _mp_popup_pv_set_as_create(parent, user_data, false, ad);
+               break;
+       case MP_POPUP_PV_SET_AS_INCLUDE_ADD_TO_HOME:
+               popup = _mp_popup_pv_set_as_create(parent, user_data, false, ad);
+               break;
+       case MP_POPUP_PV_SHARE:
+               popup = _mp_popup_pv_share_create(parent, user_data, ad);
+               break;
+       case MP_POPUP_LIST_SHARE:
+               popup = _mp_popup_list_share_create(parent, user_data, ad);
+               break;
        case MP_POPUP_ADD_TO_PLST:
                popup = _mp_popup_add_to_playlist_create(parent, user_data, ad);
                break;
        case MP_POPUP_SOUND_PATH:
-               popup = _mp_popup_sound_path_create(parent, user_data);
+               popup = _mp_popup_sound_path_create(parent, user_data, ad);
                evas_object_data_set(popup, "sound_path", (char *)1);
                break;
        default:
@@ -295,23 +425,37 @@ mp_popup_destroy(struct appdata *ad)
        int i = 0;
        for(i=0; i < MP_POPUP_MAX; i++)
        {
-               if (ad->popup[i])
+               if (ad->popup[i] && i != MP_POPUP_NOTIFY)
                {
-                       mp_popup_response(ad->popup[i], -1);
+                       mp_evas_object_del(ad->popup[i]);
                        ad->popup[i] = NULL;
                }
        }
 }
 
+static void
+_mp_popup_destroy_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       Popup_Data *popup_data = data;
+       MP_CHECK(popup_data);
+
+       if (popup_data->type < MP_POPUP_MAX && popup_data->ad)
+       {
+               popup_data->ad->popup[popup_data->type] = NULL;
+       }
+
+       SAFE_FREE(popup_data);
+}
+
+
 Evas_Object *
-mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *user_data, void *response_cb,
+mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *user_data, Evas_Smart_Cb response_cb,
                struct appdata *ad)
 {
        Evas_Object *popup = NULL;
        Evas_Object *progressbar = NULL;
 
        MP_CHECK_NULL(parent);
-       MP_CHECK_NULL(type);
        MP_CHECK_NULL(ad);
 
        if (_mp_popup_popup_exist(ad, type))
@@ -320,12 +464,34 @@ mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *use
                return NULL;
        }
 
+       popup = elm_popup_add(ad->win_main);
+       MP_CHECK_NULL(popup);
+
+       Popup_Data *popup_data = (Popup_Data *)calloc(1, sizeof(Popup_Data));
+       mp_assert(popup_data);
+
+       popup_data->ad = ad;
+       popup_data->type = type;
+       popup_data->response_cb = response_cb;
+       popup_data->cb_data = user_data;
+       mp_popup_set_popup_data(popup, popup_data);
+
+       evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_popup_destroy_cb, popup_data);
+
+       if (title)
+               elm_object_part_text_set(popup, "title,text", title);
+
        switch (type)
        {
-       case MP_POPUP_PROGRESS:
-               popup = elm_popup_add(ad->win_main);
-               MP_CHECK_NULL(popup);
+       case MP_POPUP_NORMAL:
+               DEBUG_TRACE("MP_POPUP_NORMAL");
+               break;
+
+       case MP_POPUP_GENLIST:
+               DEBUG_TRACE("MP_POPUP_GENLIST");
+               break;
 
+       case MP_POPUP_PROGRESS:
                progressbar = elm_progressbar_add(popup);
                MP_CHECK_NULL(progressbar);
 
@@ -335,20 +501,17 @@ mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *use
                evas_object_show(progressbar);
                elm_progressbar_pulse(progressbar, EINA_TRUE);
 
-               mp_popup_title_set(popup, title);
-               mp_popup_content_set(popup, progressbar);
+               elm_object_content_set(popup, progressbar);
 
-               mp_popup_set_response_cb(popup, response_cb, user_data);
-               mp_popup_button_set(popup, "button1", GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO);
-
-               evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _mp_popup_del_cb, ad);
-               evas_object_data_set(popup, "type", (void *)type);
+               mp_popup_button_set(popup, MP_POPUP_BTN_1, GET_SYS_STR("IDS_COM_POP_CANCEL"), MP_POPUP_NO);
+               break;
 
+       case MP_POPUP_NOTIFY:
+               DEBUG_TRACE("MP_POPUP_NOTIFY");
                break;
 
        default:
                DEBUG_TRACE("Unsupported type: %d", type);
-               return NULL;
        }
 
        evas_object_show(popup);
@@ -359,64 +522,67 @@ mp_popup_create(Evas_Object * parent, mp_popup_type type, char *title, void *use
 
 }
 
-static void
-_mp_poup_button_response_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       MP_CHECK(data);
-       Evas_Object *popup = data;
-
-       int response = mp_popup_btn_response_get(obj);
-       mp_popup_response(popup, response);
-}
-
 void
-mp_popup_set_response_cb(Evas_Object *popup, Evas_Smart_Cb response_cb, void *data)
+mp_popup_response(Evas_Object *popup, int response)
 {
        MP_CHECK(popup);
 
-       evas_object_data_set(popup, "popup_response_cb", response_cb);
-       evas_object_data_set(popup, "popup_response_cb_data", data);
+       Popup_Data *popup_data = mp_popup_get_popup_data(popup);
+       MP_CHECK(popup_data);
+
+       if (popup_data->response_cb)
+               popup_data->response_cb(popup_data->cb_data, popup, (void *)response);
+       else
+               mp_evas_object_del(popup);
 }
 
-void
-mp_popup_response(Evas_Object *popup, int response)
+
+static void
+_mp_popup_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
+       Evas_Object *popup = data;
        MP_CHECK(popup);
 
-       Evas_Smart_Cb response_cb = evas_object_data_get(popup, "popup_response_cb");
-       void *cb_data = evas_object_data_get(popup, "popup_response_cb_data");
+       Popup_Data *popup_data = mp_popup_get_popup_data(popup);
+       MP_CHECK(popup_data);
 
-       if (response_cb)
-               response_cb(cb_data, popup, (void *)response);
-       else
-               evas_object_del(popup);
+       int response = mp_evas_object_response_get(obj);
+       mp_popup_response(popup, response);
 }
 
-Evas_Object *
-mp_popup_button_set(Evas_Object *popup, const char *part, const char *text, int response)
+bool
+mp_popup_button_set(Evas_Object *popup, popup_button_t btn_index, const char *text, int response)
 {
-       MP_CHECK_NULL(popup);
-       MP_CHECK_NULL(part);
-
-       if (g_strcmp0(part, "button1") && g_strcmp0(part, "button2") && g_strcmp0(part, "button3")) {
-               mp_error("invalid part");
-               return NULL;
+       MP_CHECK_FALSE(popup);
+       MP_CHECK_FALSE(text);
+       if (btn_index == MP_POPUP_BTN_MAX) {
+               mp_error("invalid button type");
+               return FALSE;
        }
 
-       Evas_Object *button = mp_widget_create_button(popup, NULL, (char *)text, NULL, _mp_poup_button_response_cb, popup);
+       bool ret = FALSE;
+
+       static char *part[MP_POPUP_BTN_MAX] = {
+               "button1",
+               "button2",
+               "button3",
+       };
+
+       Evas_Object *button = mp_widget_create_button(popup, "popup_button/default", (char *)text, NULL, _mp_popup_button_clicked_cb, popup);
        if (button) {
-               elm_object_part_content_set(popup, part, button);
-               mp_popup_btn_popup_set(button, popup);
-               mp_popup_btn_response_set(button, response);
+               elm_object_part_content_set(popup, part[btn_index], button);
+               mp_evas_object_response_set(button, response);
+               ret = TRUE;
        }
 
-       return button;
+       return ret;
 }
 
 static void
-_mp_poup_default_response_cb(void *data, Evas_Object *obj, void *event_info)
+__mp_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       mp_popup_response(obj, (int)data);
+       int response = (int)data;
+       mp_popup_response(obj, response);
 }
 
 void
@@ -425,13 +591,7 @@ mp_popup_timeout_set(Evas_Object *popup, double timeout)
        MP_CHECK(popup);
 
        elm_popup_timeout_set(popup, timeout);
-       evas_object_smart_callback_add(popup, "timeout", _mp_poup_default_response_cb, (void *)MP_POPUP_DEL);
+       evas_object_smart_callback_add(popup, "timeout", __mp_popup_timeout_cb, (void *)MP_POPUP_NO);
+       evas_object_smart_callback_add(popup, "block,clicked", __mp_popup_timeout_cb, (void *)MP_POPUP_NO);
 }
 
-void
-mp_popup_block_clicked_set(Evas_Object *popup)
-{
-       MP_CHECK(popup);
-
-       evas_object_smart_callback_add(popup, "block,clicked", _mp_poup_default_response_cb, (void *)MP_POPUP_DEL);
-}
index c4b7a9e..b18d08c 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * limitations under the License.
  */
 
-
-
 #include "music.h"
 #include "mp-search.h"
 #include "mp-player-debug.h"
 #include "mp-view-layout.h"
 
+#define MP_SEARCHBAR_W 400*elm_scale_get()
+
 void
 _mp_search_view_activated_cb(void *data, Evas_Object * obj, void *event_info)
 {
@@ -54,6 +54,7 @@ _mp_search_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission,
        elm_entry_entry_set(entry, "");
 }
 
+
 Evas_Object *
 mp_search_create_new(Evas_Object * parent, Evas_Smart_Cb change_cb, void *change_cb_data, Evas_Smart_Cb cancel_cb, void *cancel_cb_data)
 {
@@ -69,8 +70,9 @@ mp_search_create_new(Evas_Object * parent, Evas_Smart_Cb change_cb, void *change
 
        if (cancel_cb) {
                Evas_Object *cancel_btn = elm_button_add(sb);
-               elm_object_style_set(cancel_btn, "searchbar/default");
+               elm_object_style_set(cancel_btn, "multiline");
                elm_object_text_set(cancel_btn, GET_SYS_STR("IDS_COM_SK_CANCEL"));
+               mp_language_mgr_register_object(cancel_btn, OBJ_TYPE_ELM_OBJECT, NULL, "IDS_COM_SK_CANCEL");
                evas_object_smart_callback_add(cancel_btn, "clicked", cancel_cb, cancel_cb_data);
 
                elm_object_part_content_set(sb, "button_cancel", cancel_btn);
@@ -96,7 +98,7 @@ mp_search_create_new(Evas_Object * parent, Evas_Smart_Cb change_cb, void *change
 
        static Elm_Entry_Filter_Limit_Size limit_filter_data;
        limit_filter_data.max_char_count = 0;
-       limit_filter_data.max_byte_count = AUDIO_SVC_METADATA_LEN_MAX;
+       limit_filter_data.max_byte_count = MP_METADATA_LEN_MAX;
        elm_entry_markup_filter_append(en, elm_entry_filter_limit_size, &limit_filter_data);
 
        evas_object_show(sb);
index cfef47e..6a3af02 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 #include <Elementary.h>
 #include "mp-smart-event-box.h"
 #include "mp-player-debug.h"
index d1638c0..b8762ff 100755 (executable)
@@ -1,11 +1,11 @@
 /*
- * Copyright 2012  Samsung Electronics Co., Ltd
+ * Copyright 2012        Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *     http://www.tizenopensource.org/license
+ *  http://www.tizenopensource.org/license
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,9 +15,9 @@
  */
 
 
-
 #include "mp-view-layout.h"
 #include "mp-player-debug.h"
+#include "mp-ta.h"
 #include "mp-library.h"
 #include "mp-widget.h"
 #include "mp-util.h"
 #include "mp-playlist-view.h"
 #include "mp-group-view.h"
 #include "mp-player-mgr.h"
+#include "mp-popup.h"
+
+typedef struct{
+       Elm_Object_Item *item;
+       char *text_ID;
+}mp_group_item_data_t;
 
-#define MP_INIT_ITEM_LOAD_COUNT 8
-#define MP_AUTO_PLAYLIST_COUNT 4
+#define MP_INIT_ITEM_LOAD_COUNT 9
+#define MP_SYS_PLAYLIST_COUNT 4
 #define MP_GENLIST_DEFALT_BLOCK_SIZE 81
 #define MP_MAX_TEXT_PRE_FORMAT_LEN 256
 #define MP_MAX_ARTIST_NAME_WIDTH 320
@@ -41,6 +47,7 @@ static void _mp_view_layout_reorder(void *data, Evas_Object * obj, void *event_i
 static void _mp_view_layout_load_search_list_item(Evas_Object * view_layout);
 static void _mp_view_layout_load_list_item(Evas_Object * view_layout);
 static void _mp_view_layout_load_search_item(Evas_Object * view_layout);
+static Evas_Object *_mp_view_layout_create_fastscroll_index(Evas_Object * parent, mp_layout_data_t * layout_data);
 static void _mp_view_layout_gl_del(void *data, Evas_Object * obj);
 static void _mp_view_layout_update_icon(Evas_Object * view_layout);
 
@@ -90,11 +97,9 @@ _mp_view_layout_reorder_idle_cb(void *data)
        int err = -1;
        int old_order;
        int new_order = 1;
-       char *title;
-       int size;
        int uid;
 
-       audio_svc_count_playlist_item(layout_data->ad->media_svc_handle, layout_data->playlist_id, "", "", &count);
+       mp_media_info_list_count(MP_TRACK_BY_PLAYLIST, NULL, NULL, layout_data->filter_str, layout_data->playlist_id, &count);
        if (count > 0)
        {
                list_item = elm_genlist_first_item_get(layout_data->genlist);
@@ -106,40 +111,34 @@ _mp_view_layout_reorder_idle_cb(void *data)
                                mp_genlist_item_data_t *gl_item =
                                        (mp_genlist_item_data_t *) elm_object_item_data_get(list_item);
                                MP_CHECK_FALSE(gl_item);
-                               AudioHandleType *item = (AudioHandleType *) (gl_item->handle);
+                               mp_media_info_h item = (gl_item->handle);
                                MP_CHECK_FALSE(item);
                                if (item != NULL)
                                {
-                                       err = audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE,
-                                                                             &title, &size,
-                                                                             AUDIO_SVC_PLAYLIST_ITEM_PLAY_ORDER,
-                                                                             &old_order, AUDIO_SVC_PLAYLIST_ITEM_UID,
-                                                                             &uid, -1);
-                                       DEBUG_TRACE("uid: %d, title: %s, old_order: %d", uid, title, old_order);
+                                       err = mp_media_info_get_playlist_member_id(item, &uid);
+                                       err = mp_media_info_playlist_get_play_order(layout_data->playlist_handle, uid, &old_order);
+                                       DEBUG_TRACE("uid: %d, old_order: %d", uid, old_order);
                                        if (old_order == new_order)
                                        {
                                                DEBUG_TRACE("same order.. skip..");
                                                new_order++;
                                                continue;
                                        }
-                                       if (err != AUDIO_SVC_ERROR_NONE)
+                                       if (err != 0)
                                        {
-                                               ERROR_TRACE("Error in audio_svc_playlist_item_get_val (%d)\n", err);
+                                               ERROR_TRACE("Error in mp_media_info_playlist_get_play_order (%d)\n", err);
                                                break;
                                        }
-                                       err = audio_svc_update_playlist_item_play_order(layout_data->ad->media_svc_handle, layout_data->playlist_id, uid,
-                                                                                       new_order++);
-                                       if (err != AUDIO_SVC_ERROR_NONE)
+                                       err = mp_media_info_playlist_set_play_order(layout_data->playlist_handle, uid, new_order++);
+                                       if (err != 0)
                                        {
-                                               ERROR_TRACE("Error in audio_svc_update_playlist_item_play_order (%d)\n",
-                                                           err);
+                                               ERROR_TRACE("Error in mp_media_info_playlist_set_play_order (%d)\n", err);
                                                break;
                                        }
                                }
                        }
                        while ((list_item = elm_genlist_item_next_get(list_item)) != NULL);
                }
-               mp_view_manager_update_list_contents(layout_data->view_data, TRUE);
        }
        layout_data->reorder_idler = NULL;
        return EINA_FALSE;
@@ -149,17 +148,9 @@ static void
 _mp_view_layout_reorder(void *data, Evas_Object * obj, void *event_info)
 {
        DEBUG_TRACE("");
-       mp_layout_data_t *layout_data = evas_object_data_get(obj, "layout_data");
+       mp_layout_data_t *layout_data = data;
        MP_CHECK_LAYOUT_DATA(layout_data);
-#if 0
-       if (rel_item)
-       {
-               if (move_after)
-                       elm_genlist_item_move_after(rel_item, it);
-               else
-                       elm_genlist_item_move_before(rel_item, it);
-       }
-#endif
+
        if(!layout_data->reorder_idler)
                layout_data->reorder_idler = ecore_idler_add(_mp_view_layout_reorder_idle_cb, layout_data);
 
@@ -185,28 +176,28 @@ _mp_view_layout_genlist_del_cb(void *data, Evas * e, Evas_Object * obj, void *ev
                SAFE_FREE(layout_data->type_str);
                SAFE_FREE(layout_data->filter_str);
                if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
-                       audio_svc_playlist_free(layout_data->svc_handle);
+                       mp_media_info_group_list_destroy(layout_data->svc_handle);
                else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
-                       audio_svc_group_item_free(layout_data->svc_handle);
+                       mp_media_info_group_list_destroy(layout_data->svc_handle);
                else
-                       audio_svc_list_item_free(layout_data->svc_handle);
+                       mp_media_info_list_destroy(layout_data->svc_handle);
 
                if (layout_data->track_handle)
-                       audio_svc_list_item_free(layout_data->track_handle);
+                       mp_media_info_list_destroy(layout_data->track_handle);
                if (layout_data->artist_handle)
-                       audio_svc_group_item_free(layout_data->artist_handle);
+                       mp_media_info_group_list_destroy(layout_data->artist_handle);
                if (layout_data->album_handle)
-                       audio_svc_group_item_free(layout_data->album_handle);
-               /* free album svc group */
-               if (layout_data->album_track_handle)
-                       audio_svc_group_item_free(layout_data->album_track_handle);
-               /* free artist album svc group */
-               if (layout_data->aa_handle)
-                       audio_svc_group_item_free(layout_data->aa_handle);
-               IF_FREE(layout_data->aa_group);
-               IF_FREE(layout_data->aa_item_count);
+                       mp_media_info_group_list_destroy(layout_data->album_handle);
+
+               SAFE_FREE(layout_data->old_name);
+               IF_FREE(layout_data->fast_scrooll_index);
                IF_FREE(layout_data->navibar_title);
 
+               if (layout_data->itc) {
+                       elm_genlist_item_class_free(layout_data->itc);
+                       layout_data->itc = NULL;
+               }
+
                free(layout_data);
        }
        endfunc;
@@ -216,38 +207,36 @@ static void
 _mp_view_layout_append_auto_playlists(mp_layout_data_t * layout_data)
 {
        int i;
-       static char names[][50] =
-               { STR_MP_MOST_PLAYED, STR_MP_RECENTLY_ADDED, STR_MP_RECENTLY_PLAYED, STR_MP_QUICK_LIST };
-       AudioHandleType *plst;
+       mp_media_list_h plst;
 
        MP_CHECK(layout_data);
 
        if (layout_data->default_playlists)
-               audio_svc_playlist_free(layout_data->default_playlists);
+               mp_media_info_group_list_destroy(layout_data->default_playlists);
 
        layout_data->default_playlist_count = 0;
 
-       audio_svc_playlist_new(&plst, MP_AUTO_PLAYLIST_COUNT);
+       mp_media_info_group_list_create(&plst, MP_GROUP_BY_SYS_PLAYLIST, NULL, NULL, 0, 0);
        layout_data->default_playlists = plst;
-       for (i = 0; i < MP_AUTO_PLAYLIST_COUNT; i++)
+       for (i = 0; i < MP_SYS_PLAYLIST_COUNT; i++)
        {
-               AudioHandleType *item;
-               audio_svc_playlist_get_item(plst, i, &item);
-               audio_svc_playlist_set_val(plst, i, AUDIO_SVC_PLAYLIST_NAME, GET_STR(names[i]),
-                                          AUDIO_SVC_METADATA_LEN_MAX, -1);
+               mp_media_info_h item;
+               item = mp_media_info_group_list_nth_item(plst, i);
 
                mp_genlist_item_data_t *item_data;
                item_data = calloc(1, sizeof(mp_genlist_item_data_t));
                MP_CHECK(item_data);
-               item_data->media_svc_handle = layout_data->ad->media_svc_handle;
-               item_data->handle = (void *)item;
+               item_data->handle = item;
+               item_data->unregister_lang_mgr = true;
 
+               // func.del shouldn't be used in other place....
                layout_data->auto_playlist_item_class.func.del = _mp_view_layout_gl_del;
 
                item_data->it = elm_genlist_item_append(layout_data->genlist, &(layout_data->auto_playlist_item_class),
                                                        item_data, NULL,
                                                        ELM_GENLIST_ITEM_NONE, layout_data->cb_func.auto_playlist_cb,
                                                        (void *)i);
+               mp_language_mgr_register_genlist_item(item_data->it);
                layout_data->default_playlist_count++;
                if (layout_data->edit_mode)
                        elm_object_item_disabled_set(item_data->it, EINA_TRUE);
@@ -269,11 +258,19 @@ _mp_view_layout_sentinel_add(mp_layout_data_t * layout_data)
        {
                elm_layout_file_set(no_contents, EDJ_NAME, "no_result");
                edje_object_part_text_set(_EDJ(no_contents), "elm.text", GET_SYS_STR("IDS_COM_BODY_NO_SEARCH_RESULTS"));
+               mp_language_mgr_register_object(no_contents, OBJ_TYPE_EDJE_OBJECT, "elm.text", "IDS_COM_BODY_NO_SEARCH_RESULTS");
        }
        else
        {
-               elm_layout_file_set(no_contents, EDJ_NAME, "no_content");
+
+               if (layout_data->ad->screen_mode == MP_SCREEN_MODE_PORTRAIT)
+                       elm_layout_file_set(no_contents, EDJ_NAME, "no_content");
+               else {
+                       elm_layout_file_set(no_contents, EDJ_NAME, "no_content_landscape");
+               }
+
                edje_object_part_text_set(_EDJ(no_contents), "elm.text", GET_SYS_STR("IDS_COM_BODY_NO_CONTENTS"));
+               mp_language_mgr_register_object(no_contents, OBJ_TYPE_EDJE_OBJECT, "elm.text", "IDS_COM_BODY_NO_CONTENTS");
        }
 
        if (layout_data->genlist)
@@ -288,6 +285,31 @@ _mp_view_layout_sentinel_add(mp_layout_data_t * layout_data)
        return no_contents;
 }
 
+static int
+_mp_view_layout_set_sentinel(mp_layout_data_t * layout_data, int count)
+{
+       if (0 >= count
+           && (layout_data->category != MP_LAYOUT_PLAYLIST_LIST
+               || (layout_data->filter_str && strlen(layout_data->filter_str))))
+       {
+               ERROR_TRACE("no tracks");
+               if (!layout_data->sentinel)
+                       layout_data->sentinel = _mp_view_layout_sentinel_add(layout_data);
+               return -1;
+       }
+
+       if (layout_data->sentinel)
+       {
+               elm_box_unpack(layout_data->box, layout_data->sentinel);
+               evas_object_del(layout_data->sentinel);
+               layout_data->sentinel = NULL;
+               elm_box_pack_end(layout_data->box, layout_data->genlist);
+               evas_object_show(layout_data->genlist);
+       }
+
+       return 0;
+}
+
 static Eina_Bool
 _mp_view_layout_set_block_count_idle_cb(void *data)
 {
@@ -301,10 +323,19 @@ _mp_view_layout_set_block_count_idle_cb(void *data)
 char *
 _mp_view_layout_gl_label_get_title(void *data, Evas_Object * obj, const char *part)
 {
-       MP_CHECK_NULL(data);
+       mp_group_item_data_t *item_data = data;
+       char *text = NULL;
+
+       MP_CHECK_NULL(item_data);
+
        if (!strcmp(part, "elm.text"))
        {
-               return strdup(data);
+               if(item_data->text_ID && strstr(item_data->text_ID, "IDS_COM"))
+                       text = GET_SYS_STR(item_data->text_ID);
+               else
+                       text = GET_STR(item_data->text_ID);
+
+               return g_strdup(text);
        }
        return NULL;
 }
@@ -313,22 +344,43 @@ static void
 _mp_view_layout_gl_del(void *data, Evas_Object * obj)
 {
        mp_genlist_item_data_t *item_data = (mp_genlist_item_data_t *) data;
+       if(item_data->unregister_lang_mgr)
+               mp_language_mgr_unregister_genlist_item(item_data->it);
        IF_FREE(item_data);
 }
 
 static void
-_mp_view_layout_append_group_title(mp_layout_data_t * layout_data, char *title)
+_mp_view_layout_group_gl_del(void *data, Evas_Object * obj)
 {
-       static Elm_Genlist_Item_Class itc = {
-               .item_style = "music_player/grouptitle",
-               .func.text_get = _mp_view_layout_gl_label_get_title,
-       };
+       mp_group_item_data_t *item_data = data;
+       MP_CHECK(item_data);
+       mp_language_mgr_unregister_genlist_item(item_data->item);
+       free(item_data);
+}
+
+static void
+_mp_view_layout_append_group_title(mp_layout_data_t * layout_data, char *text_ID)
+{
+       static Elm_Genlist_Item_Class itc;
+       mp_group_item_data_t *item_data = NULL;
 
-       layout_data->search_group_git =
-               elm_genlist_item_append(layout_data->genlist, &itc, (void *)title, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+       itc.version = ELM_GENGRID_ITEM_CLASS_VERSION;
+       itc.refcount = 0;
+       itc.delete_me = EINA_FALSE;
+       itc.item_style = "music_player/grouptitle";
+       itc.func.text_get = _mp_view_layout_gl_label_get_title;
+       itc.func.del = _mp_view_layout_group_gl_del;
+
+       item_data = calloc(1, sizeof(mp_group_item_data_t));
+       item_data->text_ID = text_ID;
+
+       item_data->item = layout_data->search_group_git =
+               elm_genlist_item_append(layout_data->genlist, &itc, item_data, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+
+       mp_language_mgr_register_genlist_item(item_data->item);
 
        MP_CHECK(layout_data->search_group_git);
-       elm_genlist_item_select_mode_set(layout_data->search_group_git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
 }
 
 static char *
@@ -336,35 +388,36 @@ _mp_view_layout_aa_list_label_get(void *data, Evas_Object * obj, const char *par
 {
        MP_CHECK_NULL(data);
        char *name = NULL;
-       int size = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
-       mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
-       AudioHandleType *svc_item = (AudioHandleType *) (item->handle);
+       int ret = 0;
+
+       mp_media_info_h svc_item =  data;
        MP_CHECK_NULL(svc_item);
 
        if (!g_strcmp0(part, "elm.text.1")) {
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_get_album(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
                if (!name || !strlen(name))
                        name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
                return strdup(name);
 
        } else if (!g_strcmp0(part, "elm.text.2")) {
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_SUB_INFO, &name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_get_artist(svc_item, &name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
                if (!name || !strlen(name))
                        name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
                return strdup(name);
        } else if (!g_strcmp0(part, "elm.text.3")) {
                char *album_name = NULL;
                char *artist_name = NULL;
-               int track_num = -1;
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &album_name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_SUB_INFO, &artist_name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
-               ret = audio_svc_count_list_item(item->media_svc_handle, AUDIO_SVC_TRACK_BY_ARTIST_ALBUM, album_name, artist_name, "", "", &track_num);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get track_num");
+               int track_num = 0;
+               ret = mp_media_info_get_album(svc_item, &album_name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+               ret = mp_media_info_get_artist(svc_item, &artist_name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
+
+               ret = mp_media_info_list_count(MP_TRACK_BY_ARTIST_ALBUM, album_name, artist_name,
+                                       NULL, 0, &track_num);
+               mp_retvm_if(ret != 0, NULL, "Fail to get track_num");
                mp_retvm_if(track_num < 0, NULL, "Fail to get track_num");
                return g_strdup_printf("%d", track_num);
        }
@@ -377,17 +430,14 @@ static Evas_Object *
 _mp_view_layout_aa_list_icon_get(void *data, Evas_Object * obj, const char *part)
 {
        MP_CHECK_NULL(data);
-       mp_genlist_item_data_t *item = (mp_genlist_item_data_t *) data;
-       AudioHandleType *svc_item = (AudioHandleType *) (item->handle);
+       mp_media_info_h svc_item =  data;
        MP_CHECK_NULL(svc_item);
 
        char *thumb_name = NULL;
        Evas_Object *icon = NULL;
-       int size = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
-
-       ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_THUMBNAIL_PATH, &thumb_name, &size, -1);
-       mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+       int ret = 0;
+       ret = mp_media_info_get_thumbnail_path(svc_item, &thumb_name);
+       mp_retvm_if((ret != 0), NULL, "Fail to get value");
 
        if (!g_strcmp0(part, "elm.icon")) {
                icon = mp_util_create_thumb_icon(obj, thumb_name, MP_ALBUM_LIST_ICON_SIZE, MP_ALBUM_LIST_ICON_SIZE);
@@ -396,103 +446,6 @@ _mp_view_layout_aa_list_icon_get(void *data, Evas_Object * obj, const char *part
        return icon;
 }
 
-static char *
-_mp_view_layout_album_list_get_artist_name(MediaSvcHandle *handle, AudioHandleType *svc_item)
-{
-       MP_CHECK_NULL(handle);
-       MP_CHECK_NULL(svc_item);
-       int ret = AUDIO_SVC_ERROR_NONE;
-       char *name = NULL;
-       int size = -1;
-       ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_SUB_INFO, &name, &size, -1);
-       mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
-
-       int count = -1;
-       int track_num = -1;
-       char *album_name = NULL;
-       ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &album_name, &size, -1);
-       mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
-
-       ret = audio_svc_count_list_item(handle, AUDIO_SVC_TRACK_BY_ALBUM, album_name, "", "", "", &count);
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get count");
-       mp_retvm_if(count < 0, NULL, "Fail to get count");
-
-       ret = audio_svc_count_list_item(handle, AUDIO_SVC_TRACK_BY_ARTIST_ALBUM, album_name, name, "", "", &track_num);
-       mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get track_num");
-       mp_retvm_if(track_num < 0, NULL, "Fail to get track_num");
-       DEBUG_TRACE("track_num=%d,count=%d", track_num, count);
-       if (track_num < count) {
-               char *artist = NULL;
-               AudioHandleType *svc_handle = NULL;
-               /* create album svc list */
-               ret = audio_svc_list_item_new(&svc_handle, count);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to create svc list");
-               /* get album svc list */
-               ret = audio_svc_get_list_item(handle, AUDIO_SVC_TRACK_BY_ALBUM, album_name, NULL,
-                                             NULL, NULL, 0, count, svc_handle);
-               if (ret != AUDIO_SVC_ERROR_NONE) {
-                       DEBUG_TRACE("Fail to get svc list");
-                       audio_svc_list_item_free(svc_handle);
-                       return NULL;
-               }
-               /* get artist name */
-               ret = audio_svc_list_item_get_val(svc_handle, 0, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1);
-               if (ret != AUDIO_SVC_ERROR_NONE || artist == NULL) {
-                       DEBUG_TRACE("Fail to get value: ret: %d, artist: %s", ret, artist);
-                       if (svc_handle)
-                               audio_svc_list_item_free(svc_handle);
-                       return NULL;
-               }
-
-               char *artist_name = NULL;
-               int alloc_size = strlen(artist) + 1;
-               artist_name = (char *)g_malloc(alloc_size);
-               if (!artist_name) {
-                       DEBUG_TRACE("Fail to allocate memory");
-                       if (svc_handle)
-                               audio_svc_list_item_free(svc_handle);
-                       return NULL;
-               }
-               memset(artist_name, 0, alloc_size);
-               if (artist)
-                       strncat(artist_name, artist, strlen(artist));
-               int index = 1;
-               for (; index < count; index++) {
-                       /* get artist name */
-                       artist = NULL;
-                       ret = audio_svc_list_item_get_val(svc_handle, index, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1);
-                       if (ret != AUDIO_SVC_ERROR_NONE) {
-                               DEBUG_TRACE("Fail to get value");
-                               if (svc_handle)
-                                       audio_svc_list_item_free(svc_handle);
-                               return NULL;
-                       }
-
-                       if (artist && !strstr(artist_name, artist)) {
-                               alloc_size += strlen(artist) + 1;
-                               artist_name = (char *)g_realloc(artist_name, alloc_size);
-                               if (!artist_name) {
-                                       DEBUG_TRACE("Fail to reallocate memory");
-                                       if (svc_handle)
-                                               audio_svc_list_item_free(svc_handle);
-                                       return NULL;
-                               }
-                               strncat(artist_name, ",", 1);
-                               strncat(artist_name, artist, strlen(artist));
-                               DEBUG_TRACE("artist_name=%s,artist=%s", artist_name, artist);
-                       }
-               }
-               DEBUG_TRACE("artist_name=%s", artist_name);
-               if (svc_handle)
-                       audio_svc_list_item_free(svc_handle);
-               return artist_name;
-       }
-
-       if (!name || !strlen(name))
-               name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
-       return g_strdup(name);
-}
-
 static Evas_Object *
 _mp_view_layout_get_label_slide(Evas_Object *parent, char *name, int font_size, char *color, int max_size)
 {
@@ -531,28 +484,19 @@ _mp_view_layout_album_list_label_get(void *data, Evas_Object * obj, const char *
 {
        MP_CHECK_NULL(data);
        char *name = NULL;
-       int size = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
-       AudioHandleType *svc_item = (AudioHandleType *) (layout_data->album_track_handle);
+       mp_media_info_h svc_item = mp_media_info_list_nth_item(layout_data->svc_handle, 0);
        MP_CHECK_NULL(svc_item);
 
        if (!g_strcmp0(part, "elm.text.1")) {
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_get_album(svc_item, &name);
                if (!name || !strlen(name))
                        name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
                return strdup(name);
 
        } else if (!g_strcmp0(part, "elm.text.3")) {
-               char *album_name = NULL;
-               int track_num = -1;
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &album_name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
-               ret = audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_BY_ALBUM, album_name, NULL, "", "", &track_num);
-               mp_retvm_if(ret != AUDIO_SVC_ERROR_NONE, NULL, "Fail to get track_num");
-               mp_retvm_if(track_num < 0, NULL, "Fail to get track_num");
-               return g_strdup_printf("%d", track_num);
+               return g_strdup_printf("%d", layout_data->item_count);
        }
 
        DEBUG_TRACE("Unusing part: %s", part);
@@ -565,46 +509,47 @@ _mp_view_layout_album_list_icon_get(void *data, Evas_Object * obj, const char *p
        startfunc;
        MP_CHECK_NULL(data);
        mp_layout_data_t *layout_data = (mp_layout_data_t *) data;
-       AudioHandleType *svc_item = (AudioHandleType *) (layout_data->album_track_handle);
+       mp_media_info_h svc_item = mp_media_info_list_nth_item(layout_data->svc_handle, 0);
        MP_CHECK_NULL(svc_item);
 
        Evas_Object *icon = NULL;
-       int size = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        if (!g_strcmp0(part, "elm.icon")) {
                char *thumb_name = NULL;
-               ret = audio_svc_group_item_get_val(svc_item, 0, AUDIO_SVC_GROUP_ITEM_THUMBNAIL_PATH, &thumb_name, &size, -1);
-               mp_retvm_if((ret != AUDIO_SVC_ERROR_NONE), NULL, "Fail to get value");
+               ret = mp_media_info_get_thumbnail_path(svc_item, &thumb_name);
+               mp_retvm_if((ret != 0), NULL, "Fail to get value");
                icon = mp_util_create_thumb_icon(obj, thumb_name, MP_ALBUM_LIST_ICON_SIZE, MP_ALBUM_LIST_ICON_SIZE);
        } else if (!g_strcmp0(part, "elm.text.swallow")) {
-               char *name = _mp_view_layout_album_list_get_artist_name(layout_data->ad->media_svc_handle, svc_item);
-               if (name) {
-                       icon = _mp_view_layout_get_label_slide(obj, name, 36, "FFFFFFFF", 42);
-                       g_free(name);
-               }
+               char *name = NULL;
+               mp_media_info_get_artist(svc_item, &name);
+               if(!name)
+                       name = GET_SYS_STR("IDS_COM_BODY_UNKNOWN");
+               icon = _mp_view_layout_get_label_slide(obj, name, 36, "FFFFFFFF", 42);
        }
        return icon;
 }
 
 
 
-static void
-_mp_view_layout_append_aa_group_title(mp_layout_data_t * layout_data, mp_genlist_item_data_t *item_data, int index)
+static Elm_Object_Item *
+_mp_view_layout_append_aa_group_title(mp_layout_data_t * layout_data, mp_media_info_h media)
 {
-       MP_CHECK(layout_data);
-       MP_CHECK(item_data);
-       MP_CHECK(index >= 0);
+       MP_CHECK_NULL(layout_data);
+       MP_CHECK_NULL(media);
+       Elm_Object_Item *item = NULL;
        static Elm_Genlist_Item_Class aa_group_itc = {
+               .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+               .refcount = 0,
+               .delete_me = EINA_FALSE,
                .item_style = "music_player/dialogue_title",
                .func.text_get = _mp_view_layout_aa_list_label_get,
                .func.content_get = _mp_view_layout_aa_list_icon_get,
        };
-       layout_data->aa_group_itc = &aa_group_itc;
-       layout_data->aa_group[index] =
-                       elm_genlist_item_append(layout_data->genlist, layout_data->aa_group_itc, item_data,
+       item = elm_genlist_item_append(layout_data->genlist, &aa_group_itc, media,
                                                NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
-       MP_CHECK(layout_data->aa_group[index]);
-       elm_genlist_item_select_mode_set(layout_data->aa_group[index], ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+       MP_CHECK_NULL(item);
+       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+       return item;
 }
 
 static void
@@ -613,13 +558,15 @@ _mp_view_layout_append_album_group_title(mp_layout_data_t * layout_data)
        startfunc;
        MP_CHECK(layout_data);
        static Elm_Genlist_Item_Class album_group_itc = {
+               .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+               .refcount = 0,
+               .delete_me = EINA_FALSE,
                .item_style = "music_player/album_title",
                .func.text_get = _mp_view_layout_album_list_label_get,
                .func.content_get = _mp_view_layout_album_list_icon_get,
        };
-       layout_data->album_group_itc = &album_group_itc;
        layout_data->album_group =
-                       elm_genlist_item_append(layout_data->genlist, layout_data->album_group_itc, layout_data,
+                       elm_genlist_item_append(layout_data->genlist, &album_group_itc, layout_data,
                                                NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
        MP_CHECK(layout_data->album_group);
        elm_genlist_item_select_mode_set(layout_data->album_group, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
@@ -627,47 +574,12 @@ _mp_view_layout_append_album_group_title(mp_layout_data_t * layout_data)
 }
 
 static void
-_mp_view_layout_add_album_group_title(mp_layout_data_t * layout_data)
-{
-       startfunc;
-       MP_CHECK(layout_data);
-       MP_CHECK(layout_data->svc_handle);
-       int ret = AUDIO_SVC_ERROR_NONE;
-       char *artist = NULL;
-       int size = -1;
-       ret = audio_svc_list_item_get_val(layout_data->svc_handle, 0, AUDIO_SVC_LIST_ITEM_ARTIST, &artist, &size, -1);
-       mp_retm_if((ret != AUDIO_SVC_ERROR_NONE), "Fail to get value");
-       DEBUG_TRACE("artist=%s,type_str=%s", artist, layout_data->type_str);
-       /* create album svc group */
-       AudioHandleType *group_handle = NULL;
-       ret = audio_svc_group_item_new(&group_handle, 1);
-       mp_retm_if((ret != AUDIO_SVC_ERROR_NONE), "Fail to create structure");
-       DEBUG_TRACE("artist=%s,type_str=%s", artist, layout_data->type_str);
-       /* get album svc group */
-       ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST_ALBUM, artist, NULL,
-                                      layout_data->type_str, NULL, 0, 1, group_handle);
-       if (ret != AUDIO_SVC_ERROR_NONE) {
-               DEBUG_TRACE("Fail to get group items");
-               audio_svc_group_item_free(group_handle);
-               return;
-       }
-       /* free last album svc group */
-       if (layout_data->album_track_handle)
-               audio_svc_group_item_free(layout_data->album_track_handle);
-       /* set album_track_handle value */
-       layout_data->album_track_handle = group_handle;
-
-       _mp_view_layout_append_album_group_title(layout_data);
-       endfunc;
-}
-
-static void
 _mp_view_layout_load_search_list_item(Evas_Object * view_layout)
 {
 
        DEBUG_TRACE("");
 
-       Elm_Genlist_Item_Class itc;
+       static Elm_Genlist_Item_Class itc;
 
        mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
        mp_retm_if(!layout_data, "layout_data is null");
@@ -681,6 +593,9 @@ _mp_view_layout_load_search_list_item(Evas_Object * view_layout)
        else
        {
                memset(&itc, 0, sizeof(Elm_Genlist_Item_Class));
+               itc.version = ELM_GENGRID_ITEM_CLASS_VERSION;
+               itc.refcount = 0;
+               itc.delete_me = EINA_FALSE;
                itc.item_style = "music_player/1icon.3text";
                itc.func.text_get = mp_common_track_list_label_get;
                itc.func.content_get = mp_common_track_list_icon_get;
@@ -691,7 +606,7 @@ _mp_view_layout_load_search_list_item(Evas_Object * view_layout)
 
                mp_view_layout_set_layout_data(view_layout,
                                               MP_LAYOUT_CATEGORY_TYPE, MP_LAYOUT_TRACK_LIST,
-                                              MP_LAYOUT_TRACK_LIST_TYPE, AUDIO_SVC_TRACK_ALL,
+                                              MP_LAYOUT_TRACK_LIST_TYPE, MP_TRACK_ALL,
                                               MP_LAYOUT_LIST_CB, &genlist_cbs, MP_LAYOUT_GENLIST_ITEMCLASS, &itc, -1);
 
                _mp_view_layout_load_list_item(view_layout);
@@ -700,6 +615,15 @@ _mp_view_layout_load_search_list_item(Evas_Object * view_layout)
        }
 }
 
+static void
+_mp_view_layout_index_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Elm_Object_Item *gl_item = data;
+       MP_CHECK(gl_item);
+
+       elm_genlist_item_bring_in(gl_item, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE);
+}
+
 static Eina_Bool
 _mp_view_layout_load_item_idler_cb(void *data)
 {
@@ -716,58 +640,67 @@ _mp_view_layout_load_item_idler_cb(void *data)
                return EINA_FALSE;
        }
 
-       itc = &(layout_data->itc);
+       itc = layout_data->itc;
        sel_cb = layout_data->cb_func.selected_cb;
 
        for (index = MP_INIT_ITEM_LOAD_COUNT; index < layout_data->item_count; index++)
        {
-               AudioHandleType *item = NULL;
+               mp_media_info_h item = NULL;
                Elm_Object_Item *list_item = NULL;
                char *title = NULL;
-               int size = 0;
 
                if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
                {
-                       ret = audio_svc_playlist_get_item(layout_data->svc_handle, index, &item);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
+                       item = mp_media_info_group_list_nth_item(layout_data->svc_handle, index);
+                       if (!item)
                        {
-                               DEBUG_TRACE("Fail to audio_svc_playlist_get_item, ret[%d], index[%d]", ret, index);
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
                                goto END;
                        }
-                       audio_svc_playlist_get_val(item, 0, AUDIO_SVC_PLAYLIST_NAME, &title, &size, -1);
+                       mp_media_info_group_get_main_info(item, &title);
                }
                else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
                {
-                       ret = audio_svc_group_item_get(layout_data->svc_handle, index, &item);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
+                       item = mp_media_info_group_list_nth_item(layout_data->svc_handle, index);
+                       if (item == NULL)
                        {
-                               DEBUG_TRACE("Fail to audio_svc_group_item_get, ret[%d], index[%d]", ret, index);
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, index[%d]", index);
                                goto END;
                        }
-                       audio_svc_group_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1);
+                       ret = mp_media_info_group_get_main_info(item, &title);
                }
                else
                {
-                       if (layout_data->playlist_id < 0)
+                       item = mp_media_info_list_nth_item(layout_data->svc_handle, index);
+                       if (!item)
                        {
-                               ret = audio_svc_list_item_get(layout_data->svc_handle, index, &item);
-                               if (ret != AUDIO_SVC_ERROR_NONE)
-                               {
-                                       DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index);
-                                       goto END;
-                               }
-                               audio_svc_list_item_get_val(item, 0, AUDIO_SVC_LIST_ITEM_TITLE, &title, &size, -1);
+                               DEBUG_TRACE("Fail to mp_media_info_list_nth_item, ret[%d], index[%d]", ret, index);
+                               goto END;
                        }
-                       else
+                       mp_media_info_get_title(item, &title);
+               }
+               bool make_group_title = FALSE;
+
+               if (layout_data->fast_scrooll_index == NULL)
+               {
+                       make_group_title = TRUE;
+                       layout_data->fast_scrooll_index = mp_util_get_utf8_initial(title);
+               }
+               else
+               {
+                       char *title_initial = mp_util_get_utf8_initial(title);
+                       if (title_initial)
                        {
-                               ret = audio_svc_playlist_item_get(layout_data->svc_handle, index, &item);
-                               if (ret != AUDIO_SVC_ERROR_NONE)
+                               if (strcmp(layout_data->fast_scrooll_index, title_initial) != 0)
                                {
-                                       DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index);
-                                       goto END;
+                                       make_group_title = TRUE;
+                                       free(layout_data->fast_scrooll_index);
+                                       layout_data->fast_scrooll_index = title_initial;
+                               }
+                               else
+                               {
+                                       free(title_initial);
                                }
-                               audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE, &title, &size,
-                                                               -1);
                        }
                }
 
@@ -775,15 +708,19 @@ _mp_view_layout_load_item_idler_cb(void *data)
                item_data = calloc(1, sizeof(mp_genlist_item_data_t));
                if (!item_data)
                        goto END;
-               item_data->media_svc_handle = layout_data->ad->media_svc_handle;
-               item_data->handle = (void *)item;
+               item_data->handle = item;
                item_data->group_type = layout_data->group_type;
 
+               // func.del shouldn't be used in other place....
                itc->func.del = _mp_view_layout_gl_del;
 
                item_data->it = list_item = elm_genlist_item_append(layout_data->genlist, itc, item_data, NULL,
                                                                    ELM_GENLIST_ITEM_NONE, sel_cb, (void *)index);
 
+               if (make_group_title && layout_data->index_fast != NULL)
+               {
+                       elm_index_item_append(layout_data->index_fast, layout_data->fast_scrooll_index, _mp_view_layout_index_item_selected_cb, list_item);
+               }
        }
 
       END:
@@ -866,7 +803,7 @@ _mp_view_layout_create_select_all(mp_layout_data_t * layout_data)
        MP_CHECK(layout_data);
 
        layout_data->select_all_layout = elm_layout_add(layout_data->box);
-       elm_layout_theme_set(layout_data->select_all_layout, "genlist", "item", "select_all/music/default");
+       elm_layout_theme_set(layout_data->select_all_layout, "genlist", "item", "select_all/default");
        evas_object_size_hint_weight_set(layout_data->select_all_layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
        evas_object_size_hint_align_set(layout_data->select_all_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
        evas_object_event_callback_add(layout_data->select_all_layout, EVAS_CALLBACK_MOUSE_DOWN,
@@ -880,6 +817,9 @@ _mp_view_layout_create_select_all(mp_layout_data_t * layout_data)
 
        edje_object_part_text_set(elm_layout_edje_get(layout_data->select_all_layout), "elm.text",
                                  GET_SYS_STR("IDS_COM_BODY_SELECT_ALL"));
+
+       mp_language_mgr_register_object(layout_data->select_all_layout, OBJ_TYPE_EDJE_OBJECT, "elm.text", "IDS_COM_BODY_SELECT_ALL");
+
        elm_box_pack_start(layout_data->box, layout_data->select_all_layout);
        evas_object_show(layout_data->select_all_layout);
 }
@@ -894,8 +834,8 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
        gint album_count = 0;
 
        gint index = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
-       AudioHandleType *svc_handle = NULL;
+       int ret = 0;
+       mp_media_list_h svc_handle = NULL;
 
        mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
        mp_retm_if(!layout_data, "layout_data is null");
@@ -905,22 +845,20 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
 
        elm_genlist_clear(layout_data->genlist);
 
-       ret = audio_svc_count_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST, NULL, NULL, layout_data->filter_str, NULL,
-                                        &artist_count);
-       if (ret != AUDIO_SVC_ERROR_NONE)
+       ret = mp_media_info_group_list_count(MP_GROUP_BY_ARTIST, NULL, layout_data->filter_str, &artist_count);
+       if (ret != 0)
        {
                DEBUG_TRACE("Fail to create structure");
                goto END;
        }
-       ret = audio_svc_count_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ALBUM, NULL, NULL, layout_data->filter_str, NULL,
-                                        &album_count);
-       if (ret != AUDIO_SVC_ERROR_NONE)
+       ret = mp_media_info_group_list_count(MP_GROUP_BY_ALBUM, NULL, layout_data->filter_str, &album_count);
+       if (ret != 0)
        {
                DEBUG_TRACE("Fail to create structure");
                goto END;
        }
-       ret = audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_ALL, NULL, NULL, layout_data->filter_str, NULL, &track_count);
-       if (ret != AUDIO_SVC_ERROR_NONE)
+       ret = mp_media_info_list_count(MP_TRACK_ALL, NULL, NULL, layout_data->filter_str, 0, &track_count);
+       if (ret != 0)
        {
                DEBUG_TRACE("Fail to create structure");
                goto END;
@@ -929,24 +867,13 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
        count = artist_count + album_count + track_count;
        layout_data->track_count = track_count;
 
-       if (0 >= count)
-       {
-               ERROR_TRACE("no tracks");
-               if (!layout_data->sentinel)
-                       layout_data->sentinel = _mp_view_layout_sentinel_add(layout_data);
+       if(_mp_view_layout_set_sentinel(layout_data, count))
                goto END;
-       }
-
-       if (layout_data->sentinel)
-       {
-               elm_box_unpack(layout_data->box, layout_data->sentinel);
-               evas_object_del(layout_data->sentinel);
-               layout_data->sentinel = NULL;
-               elm_box_pack_end(layout_data->box, layout_data->genlist);
-               evas_object_show(layout_data->genlist);
-       }
 
        static Elm_Genlist_Item_Class group_class = {
+               .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+               .refcount = 0,
+               .delete_me = EINA_FALSE,
                .item_style = "music_player/1icon.2text",
                .func.text_get = mp_group_view_list_label_get,
                .func.content_get = mp_group_view_icon_get,
@@ -954,6 +881,9 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
        };
 
        static Elm_Genlist_Item_Class track_class = {
+               .version = ELM_GENGRID_ITEM_CLASS_VERSION,
+               .refcount = 0,
+               .delete_me = EINA_FALSE,
                .item_style = "music_player/1icon.3text",
                .func.text_get = mp_common_track_list_label_get,
                .func.content_get = mp_common_track_list_icon_get,
@@ -963,16 +893,9 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
        if (artist_count)
        {
                DEBUG_TRACE("append artist list items");
-               _mp_view_layout_append_group_title(layout_data, GET_STR("IDS_MUSIC_TAB4_ARTISTS"));
-               ret = audio_svc_group_item_new(&svc_handle, artist_count);
-               if (ret != AUDIO_SVC_ERROR_NONE)
-               {
-                       DEBUG_TRACE("Fail to create structure");
-                       goto END;
-               }
-               ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST, NULL, NULL, layout_data->filter_str, NULL, 0,
-                                              artist_count, svc_handle);
-               if (ret != AUDIO_SVC_ERROR_NONE)
+               _mp_view_layout_append_group_title(layout_data, ("IDS_MUSIC_TAB4_ARTISTS"));
+               ret = mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_ARTIST, NULL, layout_data->filter_str, 0, artist_count);
+               if (ret != 0)
                {
                        DEBUG_TRACE("Fail to get items");
                        goto END;
@@ -980,23 +903,23 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
 
                for (index = 0; index < artist_count; index++)
                {
-                       AudioHandleType *item = NULL;
+                       mp_media_info_h item = NULL;
                        Elm_Object_Item *list_item = NULL;
                        char *title = NULL;
-                       int size = 0;
-                       ret = audio_svc_group_item_get(svc_handle, index, &item);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
+
+                       item = mp_media_info_group_list_nth_item(svc_handle, index);
+                       if (item == NULL)
                        {
-                               DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index);
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index);
                                goto END;
                        }
-                       audio_svc_group_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1);
+                       ret = mp_media_info_group_get_main_info(item, &title);
 
                        mp_genlist_item_data_t *item_data;
                        item_data = calloc(1, sizeof(mp_genlist_item_data_t));
                        MP_CHECK(item_data);
-                       item_data->handle = (void *)item;
-                       item_data->group_type = AUDIO_SVC_GROUP_BY_ARTIST;
+                       item_data->handle = item;
+                       item_data->group_type = MP_GROUP_BY_ARTIST;
 
                        item_data->it = list_item =
                                elm_genlist_item_append(layout_data->genlist, &group_class, item_data,
@@ -1007,7 +930,7 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
 
                if (layout_data->artist_handle)
                {
-                       audio_svc_group_item_free(layout_data->artist_handle);
+                       mp_media_info_group_list_destroy(layout_data->artist_handle);
                        layout_data->track_handle = NULL;
                }
                layout_data->artist_handle = svc_handle;
@@ -1017,16 +940,10 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
        if (album_count)
        {
                DEBUG_TRACE("append album_count list items");
-               _mp_view_layout_append_group_title(layout_data, GET_STR("IDS_MUSIC_TAB4_ALBUMS"));
-               ret = audio_svc_group_item_new(&svc_handle, album_count);
-               if (ret != AUDIO_SVC_ERROR_NONE)
-               {
-                       DEBUG_TRACE("Fail to create structure");
-                       goto END;
-               }
-               ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ALBUM, NULL, NULL, layout_data->filter_str, NULL, 0,
-                                              album_count, svc_handle);
-               if (ret != AUDIO_SVC_ERROR_NONE)
+               _mp_view_layout_append_group_title(layout_data, ("IDS_MUSIC_TAB4_ALBUMS"));
+
+               ret = mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_ALBUM, NULL, layout_data->filter_str, 0, album_count);
+               if (ret != 0)
                {
                        DEBUG_TRACE("Fail to get items");
                        goto END;
@@ -1034,24 +951,22 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
 
                for (index = 0; index < album_count; index++)
                {
-                       AudioHandleType *item = NULL;
+                       mp_media_info_h item = NULL;
                        Elm_Object_Item *list_item = NULL;
                        char *title = NULL;
-                       int size = 0;
-                       ret = audio_svc_group_item_get(svc_handle, index, &item);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
+                       item = mp_media_info_group_list_nth_item(svc_handle, index);
+                       if (item == NULL)
                        {
-                               DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index);
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index);
                                goto END;
                        }
-                       audio_svc_group_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1);
+                       ret = mp_media_info_group_get_main_info(item, &title);
 
                        mp_genlist_item_data_t *item_data;
                        item_data = calloc(1, sizeof(mp_genlist_item_data_t));
                        MP_CHECK(item_data);
-                       item_data->media_svc_handle = layout_data->ad->media_svc_handle;
-                       item_data->handle = (void *)item;
-                       item_data->group_type = AUDIO_SVC_GROUP_BY_ALBUM;
+                       item_data->handle = item;
+                       item_data->group_type = MP_GROUP_BY_ALBUM;
 
                        item_data->it = list_item =
                                elm_genlist_item_append(layout_data->genlist, &group_class, item_data,
@@ -1062,7 +977,7 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
 
                if (layout_data->album_handle)
                {
-                       audio_svc_group_item_free(layout_data->album_handle);
+                       mp_media_info_group_list_destroy(layout_data->album_handle);
                        layout_data->track_handle = NULL;
                }
                layout_data->album_handle = svc_handle;
@@ -1072,16 +987,10 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
        if (track_count)
        {
                DEBUG_TRACE("append track_count list items");
-               _mp_view_layout_append_group_title(layout_data, GET_STR("IDS_MUSIC_HEADER_SONGS"));
-               ret = audio_svc_list_item_new(&svc_handle, track_count);
-               if (ret != AUDIO_SVC_ERROR_NONE)
-               {
-                       DEBUG_TRACE("Fail to create structure");
-                       goto END;
-               }
-               ret = audio_svc_get_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_ALL, NULL, NULL, layout_data->filter_str, NULL, 0,
-                                             track_count, svc_handle);
-               if (ret != AUDIO_SVC_ERROR_NONE)
+               _mp_view_layout_append_group_title(layout_data, ("IDS_MUSIC_HEADER_SONGS"));
+
+               ret = mp_media_info_list_create(&svc_handle, MP_TRACK_ALL, NULL, NULL, layout_data->filter_str, 0, 0, track_count);
+               if (ret != 0)
                {
                        DEBUG_TRACE("Fail to get items");
                        goto END;
@@ -1089,34 +998,25 @@ _mp_view_layout_load_search_item(Evas_Object * view_layout)
 
                for (index = 0; index < track_count; index++)
                {
-                       AudioHandleType *item = NULL;
                        Elm_Object_Item *list_item = NULL;
-                       char *title = NULL;
-                       int size = 0;
-                       ret = audio_svc_list_item_get(svc_handle, index, &item);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
-                       {
-                               DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index);
-                               goto END;
-                       }
-                       audio_svc_list_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1);
+
+                       mp_media_info_h item = NULL;
+                       item = mp_media_info_list_nth_item(svc_handle, index);
 
                        mp_genlist_item_data_t *item_data;
                        item_data = calloc(1, sizeof(mp_genlist_item_data_t));
                        MP_CHECK(item_data);
-                       item_data->media_svc_handle = layout_data->ad->media_svc_handle;
-                       item_data->handle = (void *)item;
+                       item_data->handle = item;
 
                        item_data->it = list_item =
                                elm_genlist_item_append(layout_data->genlist, &track_class, item_data,
                                                        layout_data->search_group_git, ELM_GENLIST_ITEM_NONE,
                                                        mp_common_track_genlist_sel_cb, (void *)index);
-
                }
 
                if (layout_data->track_handle)
                {
-                       audio_svc_list_item_free(layout_data->track_handle);
+                       mp_media_info_list_destroy(layout_data->track_handle);
                        layout_data->track_handle = NULL;
                }
                layout_data->track_handle = svc_handle;
@@ -1133,9 +1033,15 @@ _mp_view_layout_load_aa_list_item(Evas_Object * view_layout)
 {
        startfunc;
        MP_CHECK(view_layout);
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        gint count = -1;
+       int i;
+       mp_media_list_h track_list = NULL;
+       mp_media_info_h media = NULL;
+       char *album = "";
+       Elm_Object_Item *parent_group = NULL;
 
+       MP_TA_ACUM_ITEM_BEGIN("        _mp_view_layout_load_aa_list_item", 0);
 
        mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
        mp_retm_if(!layout_data, "layout_data is null");
@@ -1153,154 +1059,64 @@ _mp_view_layout_load_aa_list_item(Evas_Object * view_layout)
                layout_data->load_item_idler = NULL;
        }
 
+       IF_FREE(layout_data->fast_scrooll_index);
+
        Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
        if (item) {
                elm_genlist_item_bring_in(item, ELM_GENLIST_ITEM_SCROLLTO_IN);
                elm_genlist_clear(layout_data->genlist);
        }
 
-       audio_svc_count_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST_ALBUM, layout_data->type_str, NULL,
-                                                  layout_data->filter_str, NULL, &count);
-
+       ret = mp_media_info_list_count(MP_TRACK_BY_ARTIST, layout_data->type_str, NULL, NULL, 0, &count);
+       MP_CHECK(ret == 0);
        layout_data->item_count = count;
 
-       if (0 >= count
-           && (layout_data->category != MP_LAYOUT_PLAYLIST_LIST
-           || (layout_data->filter_str && strlen(layout_data->filter_str))))
-       {
-               ERROR_TRACE("no tracks");
-               if (!layout_data->sentinel)
-                       layout_data->sentinel = _mp_view_layout_sentinel_add(layout_data);
+       if(_mp_view_layout_set_sentinel(layout_data, count))
                goto END;
-       }
 
-       if (layout_data->sentinel) {
-               elm_box_unpack(layout_data->box, layout_data->sentinel);
-               evas_object_del(layout_data->sentinel);
-               layout_data->sentinel = NULL;
-               elm_box_pack_end(layout_data->box, layout_data->genlist);
-               evas_object_show(layout_data->genlist);
-       }
+       ret = mp_media_info_list_create(&track_list, MP_TRACK_BY_ARTIST, layout_data->type_str, NULL, NULL, 0, 0, count);
+       MP_CHECK(ret == 0);
 
-       /* create artist-album svc group */
-       AudioHandleType *group_handle = NULL;
-       ret = audio_svc_group_item_new(&group_handle, count);
-       if (ret != AUDIO_SVC_ERROR_NONE) {
-               DEBUG_TRACE("Fail to create structure");
-               goto END;
-       }
-       /* get artist-album svc group */
-       ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, AUDIO_SVC_GROUP_BY_ARTIST_ALBUM, layout_data->type_str, NULL,
-                                      layout_data->filter_str, NULL, 0, count, group_handle);
-       if (ret != AUDIO_SVC_ERROR_NONE) {
-               DEBUG_TRACE("Fail to get group items");
-               audio_svc_group_item_free(group_handle);
-               goto END;
-       }
-       /* free last artist-album svc group */
-       if (layout_data->aa_handle)
-               audio_svc_group_item_free(layout_data->aa_handle);
-       /* set aa_handle value */
-       layout_data->aa_handle = group_handle;
-       /* set aa_group_count value */
-       layout_data->aa_group_count = count;
-
-       IF_FREE(layout_data->aa_group);
-       IF_FREE(layout_data->aa_item_count);
-       layout_data->aa_group = calloc(count, sizeof(Elm_Object_Item *));
-       layout_data->aa_item_count = calloc(count, sizeof(int));
-       if (!layout_data->aa_item_count || !layout_data->aa_group) {
-               DEBUG_TRACE("allocate memory fail");
-               goto END;
-       }
-       int track_num = -1;
-       int size = 0;
-       ret = audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_BY_ARTIST, layout_data->type_str,
-                                       NULL, "", "", &track_num);
-       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get track_num");
-
-       AudioHandleType *svc_handle = NULL;
-       /* create artist-album svc list */
-       ret = audio_svc_list_item_new(&svc_handle, track_num);
-       /* get sub list track count */
-       ret = audio_svc_get_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_BY_ARTIST, layout_data->type_str, NULL,
-                                     layout_data->filter_str, NULL, 0, track_num, svc_handle);
-       /* free last artist-album svc list */
        if (layout_data->svc_handle)
-               audio_svc_group_item_free(layout_data->svc_handle);
+               mp_media_info_list_destroy(layout_data->svc_handle);
        /* set svc_handle value */
-       layout_data->svc_handle = svc_handle;
-
-       layout_data->item_count = track_num;
-       int group_index = 0;
-       int index = 0;
+       layout_data->svc_handle = track_list;
 
        Elm_Genlist_Item_Class *itc = NULL;
-       genlist_cb_t sel_cb = NULL;
-       itc = &(layout_data->itc);
-       sel_cb = layout_data->cb_func.selected_cb;
+       char *thumbnail_path = NULL;
+       itc = layout_data->itc;
        itc->func.del = _mp_view_layout_gl_del;
        itc->decorate_all_item_style = "music_edit_default";
 
-       //itc->func.moved = _mp_view_layout_reorder;
-       evas_object_smart_callback_del(layout_data->genlist, "moved", _mp_view_layout_reorder);
-       evas_object_smart_callback_add(layout_data->genlist, "moved", _mp_view_layout_reorder, layout_data);
-
-       DEBUG_TRACE("item_count=%d,count=%d", layout_data->item_count, count);
-       for (group_index = 0; group_index < count; group_index++) {
-               char *album_name = NULL;
-               int item_num = -1;
-               AudioHandleType *group_item = NULL;
-               /* get item value */
-               ret = audio_svc_group_item_get(group_handle, group_index, &group_item);
-               if (ret != AUDIO_SVC_ERROR_NONE) {
-                       DEBUG_TRACE("Fail to audio_svc_group_item_get, ret[%d]", ret);
-                       goto END;
+       for(i=0; i< count; i++)
+       {
+               char *temp;
+               media = mp_media_info_list_nth_item(track_list, i);
+               mp_retm_if(!media, "Fail to get value");
+               mp_media_info_get_album(media, &temp);
+
+               if(g_strcmp0(album, temp)){
+                       album = temp;
+                       parent_group = _mp_view_layout_append_aa_group_title(layout_data, media);
+                       mp_media_info_get_thumbnail_path(media, &thumbnail_path);
+               }else if(!thumbnail_path){
+                       mp_media_info_get_thumbnail_path(media, &thumbnail_path);
+                       if(thumbnail_path)
+                               elm_object_item_data_set(parent_group, media);
                }
 
-               /* add artist-album group title */
-               mp_genlist_item_data_t *group_item_data = NULL;
-               group_item_data = calloc(1, sizeof(mp_genlist_item_data_t));
-               if (!group_item_data) {
+               mp_genlist_item_data_t *sub_item_data = NULL;
+               sub_item_data = calloc(1, sizeof(mp_genlist_item_data_t));
+               if (!sub_item_data) {
                        DEBUG_TRACE("allocate memory fail");
                        goto END;
                }
-               group_item_data->media_svc_handle = layout_data->ad->media_svc_handle;
-               group_item_data->handle = (void *)group_item;
-               _mp_view_layout_append_aa_group_title(layout_data, group_item_data, group_index);
-
-               ret = audio_svc_group_item_get_val(group_handle, group_index, AUDIO_SVC_GROUP_ITEM_MAIN_INFO,
-                                                  &album_name, &size, -1);
-               mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
-
-               ret = audio_svc_count_list_item(layout_data->ad->media_svc_handle, AUDIO_SVC_TRACK_BY_ARTIST_ALBUM, album_name,
-                                               layout_data->type_str, "", "", &item_num);
-               mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get item_num");
-               mp_retm_if(item_num < 0, "Fail to get item_num");
-               layout_data->aa_item_count[group_index] = item_num;
-
-               int sub_index = 0;
-               for (; sub_index < item_num; sub_index++) {
-                       AudioHandleType *sub_item = NULL;
-                       Elm_Object_Item *sub_list_item = NULL;
-                       ret = audio_svc_list_item_get(svc_handle, index, &sub_item);
-                       mp_retm_if(ret != AUDIO_SVC_ERROR_NONE, "Fail to get value");
-
-                       mp_genlist_item_data_t *sub_item_data = NULL;
-                       sub_item_data = calloc(1, sizeof(mp_genlist_item_data_t));
-                       if (!sub_item_data) {
-                               DEBUG_TRACE("allocate memory fail");
-                               goto END;
-                       }
-                       sub_item_data->media_svc_handle = layout_data->ad->media_svc_handle;
-                       sub_item_data->handle = (void *)sub_item;
-                       Elm_Object_Item *parent_group = NULL;
-                       parent_group = layout_data->aa_group[group_index];
-                       sub_item_data->it = sub_list_item = elm_genlist_item_append(layout_data->genlist, itc, sub_item_data,
-                                                                                   parent_group, ELM_GENLIST_ITEM_NONE,
-                                                                                   sel_cb, (void *)index);
-                       ++index;
-               }
+               sub_item_data->handle = media;
+
+               sub_item_data->it = elm_genlist_item_append(layout_data->genlist, itc, sub_item_data,
+                                                                           parent_group, ELM_GENLIST_ITEM_NONE,
+                                                                           layout_data->cb_func.selected_cb, (void *)i);
+               DEBUG_TRACE("0x%x", elm_genlist_item_parent_get(sub_item_data->it));
        }
 
        if (layout_data->edit_mode || (layout_data->ad->b_add_tracks
@@ -1322,14 +1138,11 @@ _mp_view_layout_load_aa_list_item(Evas_Object * view_layout)
                elm_genlist_select_mode_set(layout_data->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
        }
 
-       if (layout_data->reorder && layout_data->playlist_id > 0) {
-               elm_genlist_reorder_mode_set(layout_data->genlist, EINA_TRUE);
-       } else {
-               elm_genlist_reorder_mode_set(layout_data->genlist, EINA_FALSE);
-       }
+       elm_genlist_reorder_mode_set(layout_data->genlist, EINA_FALSE);
 
       END:
        layout_data->b_loading = FALSE;
+       MP_TA_ACUM_ITEM_END("        _mp_view_layout_load_aa_list_item", 0);
        endfunc;
 }
 
@@ -1337,13 +1150,15 @@ static void
 _mp_view_layout_load_list_item(Evas_Object * view_layout)
 {
        startfunc;
+       int id = 0; //id for playlist or folder
        gint count = -1;
        gint load_count = -1;
        gint index = 0;
-       int ret = AUDIO_SVC_ERROR_NONE;
+       int ret = 0;
        Elm_Genlist_Item_Class *itc;
        genlist_cb_t sel_cb;
 
+       MP_TA_ACUM_ITEM_BEGIN("        _mp_view_layout_load_list_item", 0);
 
        mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
        mp_retm_if(!layout_data, "layout_data is null");
@@ -1361,6 +1176,8 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout)
                layout_data->load_item_idler = NULL;
        }
 
+       IF_FREE(layout_data->fast_scrooll_index);
+
        Elm_Object_Item *item = elm_genlist_first_item_get(layout_data->genlist);
        if (item)
        {
@@ -1368,21 +1185,20 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout)
                elm_genlist_clear(layout_data->genlist);
        }
 
+       MP_TA_ACUM_ITEM_BEGIN("          mp_media_info_list_count", 0);
+
+       if(layout_data->track_type == MP_TRACK_BY_PLAYLIST)
+               id = layout_data->playlist_id;
 
        if (layout_data->category == MP_LAYOUT_TRACK_LIST)
        {
-               if (layout_data->playlist_id < 0)
-                       audio_svc_count_list_item(layout_data->ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL,
-                                                 layout_data->filter_str, NULL, &count);
-               else
-                       audio_svc_count_playlist_item(layout_data->ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, &count);
+               mp_media_info_list_count(layout_data->track_type, layout_data->type_str, NULL, layout_data->filter_str, id, &count);
        }
        else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
-               audio_svc_count_group_item(layout_data->ad->media_svc_handle, layout_data->group_type, layout_data->type_str, NULL,
-                                          layout_data->filter_str, NULL, &count);
+               mp_media_info_group_list_count(layout_data->group_type, layout_data->type_str, layout_data->filter_str, &count);
        else if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
        {
-               audio_svc_count_playlist(layout_data->ad->media_svc_handle, layout_data->filter_str, NULL, &count);
+               mp_media_info_group_list_count(MP_GROUP_BY_PLAYLIST, NULL, layout_data->filter_str, &count);
                _mp_view_layout_append_auto_playlists(layout_data);
        }
        else
@@ -1390,89 +1206,74 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout)
                WARN_TRACE("category is not valid: %d", layout_data->category);
                goto END;
        }
+       MP_TA_ACUM_ITEM_END("          mp_media_info_list_count", 0);
+
        layout_data->item_count = count;
        DEBUG_TRACE("count: %d", count);
 
-       if (0 >= count
-           && (layout_data->category != MP_LAYOUT_PLAYLIST_LIST
-               || (layout_data->filter_str && strlen(layout_data->filter_str))))
-       {
-               ERROR_TRACE("no tracks");
-               if (!layout_data->sentinel)
-                       layout_data->sentinel = _mp_view_layout_sentinel_add(layout_data);
+       if(_mp_view_layout_set_sentinel(layout_data, count))
                goto END;
-       }
 
-       if (layout_data->sentinel)
-       {
-               elm_box_unpack(layout_data->box, layout_data->sentinel);
-               evas_object_del(layout_data->sentinel);
-               layout_data->sentinel = NULL;
-               elm_box_pack_end(layout_data->box, layout_data->genlist);
-               evas_object_show(layout_data->genlist);
-       }
+       if(count < 0)
+               goto END;
 
-       AudioHandleType *svc_handle = NULL;
-       if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
-               ret = audio_svc_playlist_new(&svc_handle, count);
-       else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
-               ret = audio_svc_group_item_new(&svc_handle, count);
-       else
+       MP_TA_ACUM_ITEM_BEGIN("          _mp_view_layout_create_fastscroll_index", 0);
+       if (layout_data->category != MP_LAYOUT_PLAYLIST_LIST && layout_data->view_mode != MP_VIEW_MODE_SEARCH)
        {
-               if (layout_data->playlist_id < 0)
-                       ret = audio_svc_list_item_new(&svc_handle, count);
+               if (layout_data->index_fast)
+                       elm_index_item_clear(layout_data->index_fast);
                else
-                       ret = audio_svc_playlist_item_new(&svc_handle, count);
+               {
+                       layout_data->index_fast = _mp_view_layout_create_fastscroll_index(view_layout, layout_data);
+               }
        }
-       if (ret != AUDIO_SVC_ERROR_NONE)
+       MP_TA_ACUM_ITEM_END("          _mp_view_layout_create_fastscroll_index", 0);
+
+       MP_TA_ACUM_ITEM_BEGIN("          mp_media_info_list_create", 0);
+
+       mp_media_list_h svc_handle;
+
+       if (ret != 0)
        {
                DEBUG_TRACE("Fail to create structure");
                goto END;
        }
        if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
-               ret = audio_svc_get_playlist(layout_data->ad->media_svc_handle, layout_data->filter_str, NULL, 0, count, svc_handle);
+               ret = mp_media_info_group_list_create(&svc_handle, MP_GROUP_BY_PLAYLIST, NULL, layout_data->filter_str, 0, count);
        else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
-               ret = audio_svc_get_group_item(layout_data->ad->media_svc_handle, layout_data->group_type, layout_data->type_str, NULL,
-                                              layout_data->filter_str, NULL, 0, count, svc_handle);
+               ret = mp_media_info_group_list_create(&svc_handle, layout_data->group_type, layout_data->type_str, layout_data->filter_str, 0, count);
        else
        {
-               if (layout_data->playlist_id < 0)
-                       ret = audio_svc_get_list_item(layout_data->ad->media_svc_handle, layout_data->track_type, layout_data->type_str, NULL,
-                                                     layout_data->filter_str, NULL, 0, count, svc_handle);
-               else
-                       ret = audio_svc_get_playlist_item(layout_data->ad->media_svc_handle, layout_data->playlist_id, layout_data->filter_str, NULL, 0,
-                                                         count, svc_handle);
+               ret = mp_media_info_list_create(&svc_handle, layout_data->track_type, layout_data->type_str, NULL, layout_data->filter_str, id, 0, count);
        }
-       if (ret != AUDIO_SVC_ERROR_NONE)
+       if (ret != 0)
        {
                DEBUG_TRACE("Fail to get items");
-               audio_svc_list_item_free(svc_handle);
                goto END;
        }
 
        if (layout_data->svc_handle)
        {
                if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
-                       audio_svc_playlist_free(layout_data->svc_handle);
+                       mp_media_info_group_list_destroy(layout_data->svc_handle);
                else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
-                       audio_svc_group_item_free(layout_data->svc_handle);
+                       mp_media_info_group_list_destroy(layout_data->svc_handle);
                else
                {
-                       if (layout_data->playlist_id < 0)
-                               audio_svc_list_item_free(layout_data->svc_handle);
-                       else
-                               audio_svc_playlist_item_free(layout_data->svc_handle);
+                       mp_media_info_list_destroy(layout_data->svc_handle);
                }
        }
        layout_data->svc_handle = svc_handle;
+       MP_TA_ACUM_ITEM_END("          mp_media_info_list_create", 0);
+
+       MP_TA_ACUM_ITEM_BEGIN("          add_genlist_items", 0);
 
-       itc = &(layout_data->itc);
+       itc = layout_data->itc;
        sel_cb = layout_data->cb_func.selected_cb;
 
        itc->func.del = _mp_view_layout_gl_del;
        itc->decorate_all_item_style = "music_edit_default";
 
-       //itc->func.moved = _mp_view_layout_reorder;
        evas_object_smart_callback_del(layout_data->genlist, "moved", _mp_view_layout_reorder);
        evas_object_smart_callback_add(layout_data->genlist, "moved", _mp_view_layout_reorder, layout_data);
 
@@ -1493,77 +1294,96 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout)
 
        if (layout_data->playlist_id < 0
            && MP_LAYOUT_TRACK_LIST == layout_data->category
-           && AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type)
-               _mp_view_layout_add_album_group_title(layout_data);
+           && MP_TRACK_BY_ALBUM == layout_data->track_type)
+               _mp_view_layout_append_album_group_title(layout_data);
 
        for (index = 0; index < load_count; index++)
        {
-               AudioHandleType *item = NULL;
+               mp_media_info_h item = NULL;
                Elm_Object_Item *list_item = NULL;
                char *title = NULL;
-               int size = 0;
 
-               if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST)
+               MP_TA_ACUM_ITEM_BEGIN("            mp_media_info_list_nth_item", 0);
+               if (layout_data->category == MP_LAYOUT_PLAYLIST_LIST || layout_data->category == MP_LAYOUT_GROUP_LIST)
                {
-                       ret = audio_svc_playlist_get_item(svc_handle, index, &item);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
+                       item = mp_media_info_group_list_nth_item(svc_handle, index);
+                       if (!item)
                        {
-                               DEBUG_TRACE("Fail to audio_svc_playlist_get_item, ret[%d], index[%d]", ret, index);
+                               DEBUG_TRACE("Fail to mp_media_info_group_list_nth_item, ret[%d], index[%d]", ret, index);
                                goto END;
                        }
-                       audio_svc_playlist_get_val(item, 0, AUDIO_SVC_PLAYLIST_NAME, &title, &size, -1);
+                       mp_media_info_group_get_main_info(item, &title);
                }
-               else if (layout_data->category == MP_LAYOUT_GROUP_LIST)
+               else
                {
-                       ret = audio_svc_group_item_get(svc_handle, index, &item);
-                       if (ret != AUDIO_SVC_ERROR_NONE)
+                       item = mp_media_info_list_nth_item(svc_handle, index);
+                       ret = mp_media_info_get_title(item, &title);
+                       if (ret != 0)
                        {
-                               DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index);
+                               DEBUG_TRACE("Fail to mp_media_info_get_title, ret[%d], index[%d]", ret, index);
                                goto END;
                        }
-                       audio_svc_group_item_get_val(item, 0, AUDIO_SVC_GROUP_ITEM_MAIN_INFO, &title, &size, -1);
+               }
+               MP_TA_ACUM_ITEM_END("            mp_media_info_list_nth_item", 0);
+
+               MP_TA_ACUM_ITEM_BEGIN("            mp_util_get_utf8_initial", 0);
+               bool make_group_title = FALSE;
+
+               if (layout_data->fast_scrooll_index == NULL)
+               {
+                       make_group_title = TRUE;
+                       layout_data->fast_scrooll_index = mp_util_get_utf8_initial(title);
                }
                else
                {
-                       if (layout_data->playlist_id < 0)
+                       char *title_initial = mp_util_get_utf8_initial(title);
+                       if (title_initial)
                        {
-                               ret = audio_svc_list_item_get(svc_handle, index, &item);
-                               audio_svc_list_item_get_val(item, 0, AUDIO_SVC_LIST_ITEM_TITLE, &title, &size, -1);
-                       }
-                       else
-                       {
-                               ret = audio_svc_playlist_item_get(svc_handle, index, &item);
-                               audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_TITLE, &title, &size,
-                                                               -1);
-                               int play_order;
-                               audio_svc_playlist_item_get_val(item, 0, AUDIO_SVC_PLAYLIST_ITEM_PLAY_ORDER,
-                                                               &play_order, -1);
-                       }
-
-                       if (ret != AUDIO_SVC_ERROR_NONE)
-                       {
-                               DEBUG_TRACE("Fail to audio_svc_list_item_get, ret[%d], index[%d]", ret, index);
-                               goto END;
+                               if (strcmp(layout_data->fast_scrooll_index, title_initial) != 0)
+                               {
+                                       make_group_title = TRUE;
+                                       free(layout_data->fast_scrooll_index);
+                                       layout_data->fast_scrooll_index = title_initial;
+                               }
+                               else
+                               {
+                                       free(title_initial);
+                               }
                        }
                }
 
+               MP_TA_ACUM_ITEM_END("            mp_util_get_utf8_initial", 0);
+
+               MP_TA_ACUM_ITEM_BEGIN("            elm_genlist_item_append", 0);
+
                mp_genlist_item_data_t *item_data;
                item_data = calloc(1, sizeof(mp_genlist_item_data_t));
                MP_CHECK(item_data);
-               item_data->media_svc_handle = layout_data->ad->media_svc_handle;
-               item_data->handle = (void *)item;
+               item_data->handle = item;
                item_data->group_type = layout_data->group_type;
 
                Elm_Object_Item *parent_group = NULL;
                if (layout_data->playlist_id < 0
                    && MP_LAYOUT_TRACK_LIST == layout_data->category
-                   && AUDIO_SVC_TRACK_BY_ALBUM == layout_data->track_type)
+                   && MP_TRACK_BY_ALBUM == layout_data->track_type)
                        parent_group = layout_data->album_group;
                item_data->it = list_item = elm_genlist_item_append(layout_data->genlist, itc, item_data, parent_group,
                                                                    ELM_GENLIST_ITEM_NONE, sel_cb, (void *)index);
 
+               MP_TA_ACUM_ITEM_END("            elm_genlist_item_append", 0);
+
+               MP_TA_ACUM_ITEM_BEGIN("            elm_index_item_append", 0);
+               if (make_group_title && layout_data->index_fast != NULL)
+               {
+                       elm_index_item_append(layout_data->index_fast, layout_data->fast_scrooll_index, _mp_view_layout_index_item_selected_cb, list_item);
+               }
+               MP_TA_ACUM_ITEM_END("            elm_index_item_append", 0);
+
        }
 
+       MP_TA_ACUM_ITEM_END("          add_genlist_items", 0);
+
+
        if (count > load_count && layout_data->view_mode != MP_VIEW_MODE_SEARCH)
        {
                if(!layout_data->load_item_idler)
@@ -1597,7 +1417,7 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout)
                elm_genlist_select_mode_set(layout_data->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
        }
 
-       if (layout_data->reorder && layout_data->playlist_id > 0)
+       if (layout_data->reorder && layout_data->playlist_id > 0)       // reordering of favorite list is not allowed..
                elm_genlist_reorder_mode_set(layout_data->genlist, EINA_TRUE);
        else
                elm_genlist_reorder_mode_set(layout_data->genlist, EINA_FALSE);
@@ -1605,6 +1425,118 @@ _mp_view_layout_load_list_item(Evas_Object * view_layout)
       END:
        layout_data->b_loading = FALSE;
        endfunc;
+       MP_TA_ACUM_ITEM_END("        _mp_view_layout_load_list_item", 0);
+}
+
+static void
+_mp_view_layout_level_up(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       // get the level we are at (presumably 1)
+       int level = elm_index_item_level_get(obj);
+       const Elm_Object_Item *item;
+       int pindex;
+       char *title = NULL;
+       mp_media_info_h svc_handle = NULL;
+       const char *p_idx = NULL;
+       const char *c_idx = NULL;
+       const char *g_idx = NULL;
+       int ret;
+       mp_layout_data_t *layout_data = data;
+       MP_CHECK(layout_data);
+       MP_CHECK_LAYOUT_DATA(layout_data);
+
+       if (level != 1)
+               return;
+
+       // get the item selected at the previous level (0)
+       item = elm_index_selected_item_get(obj, level - 1);
+       elm_index_item_clear(obj);      // clear the new level
+
+       // this is a hack - but walk genlist items (maybe use your own data
+       // structs for this, but this is easy for a demo).
+       pindex = -1;
+       mp_genlist_item_data_t *gl_item = (mp_genlist_item_data_t *) elm_object_item_data_get(item);
+       MP_CHECK(gl_item);
+       svc_handle = (gl_item->handle);
+       MP_CHECK(svc_handle);
+
+       ret = mp_media_info_get_title(svc_handle, &title);
+       mp_retm_if(ret != 0, "ret: %d", ret);
+       mp_retm_if(!title, "title is null");
+
+       g_idx = mp_util_get_index(title);
+       c_idx = mp_util_get_second_index(title);
+
+       while (item)
+       {
+               mp_genlist_item_data_t *gl_item = (mp_genlist_item_data_t *) elm_object_item_data_get(item);
+               MP_CHECK(gl_item);
+               svc_handle = (gl_item->handle);
+               MP_CHECK(svc_handle);
+               ret = mp_media_info_get_title(svc_handle, &title);
+
+               if (g_idx != mp_util_get_index(title))
+               {
+                       break;
+               }
+
+               c_idx = mp_util_get_second_index(title);
+               if (c_idx != NULL && p_idx != c_idx)
+               {
+                       elm_index_item_append(obj, c_idx, _mp_view_layout_index_item_selected_cb, item);
+                       p_idx = c_idx;
+               }
+               item = elm_genlist_item_next_get(item);
+       }
+
+       elm_index_level_go(obj, level); // go for the new level
+}
+
+static void
+_mp_view_layout_index_delayed_changed(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       // called on a change but delayed in case multiple changes happen in a
+       // short timespan
+       elm_genlist_item_bring_in(event_info, ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+static void
+_mp_view_layout_index_changed(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       // this is calld on every change, no matter how often
+       return;
+}
+
+static void
+_mp_view_layout_index_selected(void *data, Evas_Object * obj, void *event_info)
+{
+       DEBUG_TRACE_FUNC();
+       // called on final select
+       elm_genlist_item_bring_in(event_info, ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+static Evas_Object *
+_mp_view_layout_create_fastscroll_index(Evas_Object * parent, mp_layout_data_t * layout_data)
+{
+       DEBUG_TRACE_FUNC();
+       Evas_Object *index = NULL;
+
+       // Create index
+       MP_TA_ACUM_ITEM_BEGIN("          elm_index_add()", 0);
+       index = elm_index_add(parent);
+       MP_TA_ACUM_ITEM_END("          elm_index_add()", 0);
+       elm_object_part_content_set(parent, "elm.swallow.content.index", index);
+
+       evas_object_smart_callback_add(index, "level,up", _mp_view_layout_level_up, layout_data);
+       evas_object_smart_callback_add(index, "delay,changed", _mp_view_layout_index_delayed_changed, layout_data);
+       evas_object_smart_callback_add(index, "changed", _mp_view_layout_index_changed, layout_data);
+       evas_object_smart_callback_add(index, "selected", _mp_view_layout_index_selected, layout_data);
+       elm_index_level_go(index, 0);
+
+       return index;
 }
 
 static void
@@ -1650,7 +1582,9 @@ _mp_view_layout_create_now_playing(Evas_Object * parent, mp_layout_data_t * layo
        elm_object_part_content_set(playing_pannel, "thumb_image", thumbnail);
        layout_data->now_playing_icon = thumbnail;
 
+       MP_TA_ACUM_ITEM_BEGIN("        elm_progressbar_add()", 0);
        Evas_Object *progress = elm_progressbar_add(playing_pannel);
+       MP_TA_ACUM_ITEM_END("        elm_progressbar_add()", 0);
        elm_object_style_set(progress, "music/list_progress");
        elm_progressbar_horizontal_set(progress, EINA_TRUE);
        evas_object_size_hint_align_set(progress, EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -1712,14 +1646,18 @@ _mp_view_layout_create_layout(Evas_Object * parent, view_data_t * view_data, mp_
                elm_object_part_content_set(layout, "list_content", box);
 
                Evas_Object *search_bar = mp_search_create_new(layout,
-                               mp_view_layout_search_changed_cb, layout_data,
-                               mp_common_back_button_cb, view_data);
+                       mp_view_layout_search_changed_cb, layout_data, mp_common_back_button_cb, view_data);
+               if (!search_bar) {
+                       mp_error("fail to create search bar");
+                       mp_evas_object_del(layout);
+                       return NULL;
+               }
                elm_object_part_content_set(layout, "search_bar", search_bar);
                evas_object_show(search_bar);
                layout_data->search_bar = search_bar;
 
        }
-       else
+       else                    // use conformant to use auto scroll
        {
                layout = elm_layout_add(parent);
                mp_retvm_if(layout == NULL, NULL, "layout is NULL");
@@ -1757,6 +1695,7 @@ _mp_view_layout_create_layout(Evas_Object * parent, view_data_t * view_data, mp_
 Evas_Object *
 mp_view_layout_create(Evas_Object * parent, view_data_t * view_data, mp_view_mode_t view_mode)
 {
+       MP_TA_ACUM_ITEM_BEGIN("        mp_view_layout_create", 0);
        startfunc;
        MP_CHECK_NULL(view_data);
        MP_CHECK_VIEW_DATA(view_data);
@@ -1765,20 +1704,25 @@ mp_view_layout_create(Evas_Object * parent, view_data_t * view_data, mp_view_mod
        MP_SET_LAYOUT_DATA_MAGIC(layout_data);
 
        layout_data->ad = view_data->ad;
-       layout_data->navibar = parent;
-
-       Evas_Object *layout = _mp_view_layout_create_layout(parent, view_data, layout_data, view_mode);
-
-       layout_data->layout = layout;
        layout_data->view_data = view_data;
        layout_data->view_mode = view_mode;
        layout_data->playlist_id = -1;
 
+       Evas_Object *layout = _mp_view_layout_create_layout(parent, view_data, layout_data, view_mode);
+       if (!layout) {
+               mp_error("fail to create layout");
+               SAFE_FREE(layout_data);
+               return NULL;
+       }
+       layout_data->layout = layout;
+
        evas_object_show(layout);
 
        evas_object_data_set(layout, "layout_data", layout_data);
+       DEBUG_TRACE("layout_data: 0x%x", layout_data);
 
        endfunc;
+       MP_TA_ACUM_ITEM_END("        mp_view_layout_create", 0);
        return layout;
 }
 
@@ -1832,6 +1776,12 @@ mp_view_layout_set_layout_data(Evas_Object * view_layout, ...)
                                DEBUG_TRACE("layout_data->playlist_id = %d", layout_data->playlist_id);
                                break;
                        }
+               case MP_LAYOUT_PLAYLIT_HANDLE:
+                       {
+                               mp_media_info_h val = va_arg((var_args), mp_media_info_h);
+                               layout_data->playlist_handle= val;
+                               break;
+                       }
                case MP_LAYOUT_TYPE_STR:
                        {
                                char *val = va_arg((var_args), char *);
@@ -1867,8 +1817,13 @@ mp_view_layout_set_layout_data(Evas_Object * view_layout, ...)
                case MP_LAYOUT_GENLIST_ITEMCLASS:
                        {
                                Elm_Genlist_Item_Class *itc = va_arg((var_args), Elm_Genlist_Item_Class *);
-                               if (itc)
-                                       memcpy(&(layout_data->itc), itc, sizeof(Elm_Genlist_Item_Class));
+                               if (itc) {
+                                       if (layout_data->itc) {
+                                               elm_genlist_item_class_free(layout_data->itc);
+                                               layout_data->itc = NULL;
+                                       }
+                                       layout_data->itc = itc;
+                               }
                                break;
                        }
                case MP_LAYOUT_GENLIST_AUTO_PLAYLIST_ITEMCLASS:
@@ -1886,6 +1841,13 @@ mp_view_layout_set_layout_data(Evas_Object * view_layout, ...)
                                        memcpy(&(layout_data->cb_func), cb_func, sizeof(layout_data->cb_func));
                                break;
                        }
+               case MP_LAYOUT_PLST_HANDLE_TYPE:
+                       {
+                               int val = va_arg((var_args), int);
+                               layout_data->plst_handle_type= val;
+                               DEBUG_TRACE("layout_data->plst_handle_type = %d", layout_data->edit_mode);
+                               break;
+                       }
                default:
                        DEBUG_TRACE("Invalid arguments");
                }
@@ -1918,9 +1880,11 @@ mp_view_layout_update(Evas_Object * view_layout)
                if (layout_data->view_mode != MP_VIEW_MODE_SEARCH) {
                        if (layout_data->playlist_id < 0
                            && MP_LAYOUT_TRACK_LIST == layout_data->category
-                           && AUDIO_SVC_TRACK_BY_ARTIST == layout_data->track_type) {
+                           && MP_TRACK_BY_ARTIST == layout_data->track_type) {
+                               /* loading artist-album track genlist */
                                _mp_view_layout_load_aa_list_item(view_layout);
-                       }  else {
+                       }
+                       else {
                                _mp_view_layout_load_list_item(view_layout);
                        }
                }
@@ -1988,7 +1952,7 @@ _mp_view_layout_set_progress_pos(void *data)
        MP_CHECK(layout_data);
        MP_CHECK(layout_data->ad);
 
-       if(!layout_data->ad->prohibit_aul_relaunch)
+       if(!layout_data->ad->app_is_foreground)
                WARN_TRACE("Check here.. progress timer should be freezed..");
 
        double pos = layout_data->ad->music_pos;
@@ -2010,8 +1974,8 @@ _mp_view_layout_progress_timer_cb(void *data)
        MP_CHECK_LAYOUT_DATA(layout_data);
        MP_CHECK_FALSE(layout_data->ad);
 
-       layout_data->ad->music_pos = mp_player_mgr_get_position();
-       layout_data->ad->music_length = mp_player_mgr_get_duration();
+       layout_data->ad->music_pos = mp_player_mgr_get_position() / 1000.0;
+       layout_data->ad->music_length = mp_player_mgr_get_duration() / 1000.0;
 
        _mp_view_layout_set_progress_pos(data);
        return ECORE_CALLBACK_RENEW;
@@ -2022,12 +1986,12 @@ mp_view_layout_show_now_playing(Evas_Object * view_layout)
 {
        mp_retm_if(!view_layout, "view_layout is null!!");
 
-       edje_object_signal_emit(_EDJ(view_layout), "SHOW_NOW_PLAING", "music_app");
-
        mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
        MP_CHECK(layout_data);
        MP_CHECK(layout_data->now_playing_progress);
 
+       edje_object_signal_emit(_EDJ(layout_data->layout), "SHOW_NOW_PLAING", "music_app");
+
        _mp_view_layout_set_progress_pos(layout_data);
 
        if (!layout_data->progress_timer)
@@ -2094,6 +2058,7 @@ mp_view_layout_progress_timer_freeze(Evas_Object * view_layout)
 void
 mp_view_layout_set_now_playing_info(Evas_Object * view_layout)
 {
+       startfunc;
        mp_retm_if(!view_layout, "view_layout is null!!");
        mp_layout_data_t *layout_data = evas_object_data_get(view_layout, "layout_data");
        mp_retm_if(!layout_data, "Layout data is null !!!!");
@@ -2166,7 +2131,7 @@ mp_view_layout_set_edit_mode(mp_layout_data_t * layout_data, bool edit_mode)
                                elm_check_state_set(layout_data->select_all_checkbox, false);
                }
 
-               Elm_Object_Item *sweeped_item = (Elm_Object_Item *) elm_genlist_decorated_item_get(layout_data->genlist);
+               Elm_Object_Item *sweeped_item = (Elm_Object_Item *)elm_genlist_decorated_item_get(layout_data->genlist);
                if (sweeped_item)
                {
                        elm_genlist_item_decorate_mode_set(sweeped_item, "slide", EINA_FALSE);
diff --git a/target_images/music_player/01_controlbar_icon_albums.png b/target_images/music_player/01_controlbar_icon_albums.png
deleted file mode 100755 (executable)
index 9d22c0c..0000000
Binary files a/target_images/music_player/01_controlbar_icon_albums.png and /dev/null differ
diff --git a/target_images/music_player/01_controlbar_icon_artist.png b/target_images/music_player/01_controlbar_icon_artist.png
deleted file mode 100755 (executable)
index cdfc4da..0000000
Binary files a/target_images/music_player/01_controlbar_icon_artist.png and /dev/null differ
diff --git a/target_images/music_player/01_controlbar_icon_composer.png b/target_images/music_player/01_controlbar_icon_composer.png
deleted file mode 100755 (executable)
index 0b6a8c6..0000000
Binary files a/target_images/music_player/01_controlbar_icon_composer.png and /dev/null differ
diff --git a/target_images/music_player/01_controlbar_icon_genre.png b/target_images/music_player/01_controlbar_icon_genre.png
deleted file mode 100755 (executable)
index cc3ca3c..0000000
Binary files a/target_images/music_player/01_controlbar_icon_genre.png and /dev/null differ
diff --git a/target_images/music_player/01_controlbar_icon_music_albums.png b/target_images/music_player/01_controlbar_icon_music_albums.png
deleted file mode 100755 (executable)
index 3b8bb7d..0000000
Binary files a/target_images/music_player/01_controlbar_icon_music_albums.png and /dev/null differ
diff --git a/target_images/music_player/01_controlbar_icon_playlists.png b/target_images/music_player/01_controlbar_icon_playlists.png
deleted file mode 100755 (executable)
index 87d9f59..0000000
Binary files a/target_images/music_player/01_controlbar_icon_playlists.png and /dev/null differ
diff --git a/target_images/music_player/01_controlbar_icon_songs.png b/target_images/music_player/01_controlbar_icon_songs.png
deleted file mode 100644 (file)
index b47daf3..0000000
Binary files a/target_images/music_player/01_controlbar_icon_songs.png and /dev/null differ
diff --git a/target_images/music_player/01_controlbar_icon_year.png b/target_images/music_player/01_controlbar_icon_year.png
deleted file mode 100755 (executable)
index 8d2268e..0000000
Binary files a/target_images/music_player/01_controlbar_icon_year.png and /dev/null 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_rating_00.png b/target_images/music_player/34_rating_00.png
deleted file mode 100755 (executable)
index d109fa9..0000000
Binary files a/target_images/music_player/34_rating_00.png and /dev/null differ
diff --git a/target_images/music_player/34_rating_01.png b/target_images/music_player/34_rating_01.png
deleted file mode 100755 (executable)
index a1b134e..0000000
Binary files a/target_images/music_player/34_rating_01.png and /dev/null differ
diff --git a/target_images/music_player/34_rating_02.png b/target_images/music_player/34_rating_02.png
deleted file mode 100755 (executable)
index c1673a7..0000000
Binary files a/target_images/music_player/34_rating_02.png and /dev/null differ
diff --git a/target_images/music_player/34_rating_03.png b/target_images/music_player/34_rating_03.png
deleted file mode 100755 (executable)
index 4dcfdc7..0000000
Binary files a/target_images/music_player/34_rating_03.png and /dev/null differ
diff --git a/target_images/music_player/34_rating_04.png b/target_images/music_player/34_rating_04.png
deleted file mode 100755 (executable)
index 7b15c95..0000000
Binary files a/target_images/music_player/34_rating_04.png and /dev/null differ
diff --git a/target_images/music_player/34_rating_05.png b/target_images/music_player/34_rating_05.png
deleted file mode 100755 (executable)
index cb37a47..0000000
Binary files a/target_images/music_player/34_rating_05.png and /dev/null differ
diff --git a/target_images/music_player/3d_picture/T02_3d_view_bg.png b/target_images/music_player/3d_picture/T02_3d_view_bg.png
new file mode 100755 (executable)
index 0000000..2401b70
Binary files /dev/null and b/target_images/music_player/3d_picture/T02_3d_view_bg.png differ
diff --git a/target_images/music_player/3d_picture/T02_cover_flow_album_shadow_bg.png b/target_images/music_player/3d_picture/T02_cover_flow_album_shadow_bg.png
new file mode 100755 (executable)
index 0000000..1b29679
Binary files /dev/null and b/target_images/music_player/3d_picture/T02_cover_flow_album_shadow_bg.png differ
diff --git a/target_images/music_player/3d_picture/T02_cover_flow_bg.png b/target_images/music_player/3d_picture/T02_cover_flow_bg.png
new file mode 100755 (executable)
index 0000000..d76d20a
Binary files /dev/null and b/target_images/music_player/3d_picture/T02_cover_flow_bg.png differ
diff --git a/target_images/music_player/3d_picture/T02_cover_flow_now_playing_album.png b/target_images/music_player/3d_picture/T02_cover_flow_now_playing_album.png
new file mode 100755 (executable)
index 0000000..4615a76
Binary files /dev/null and b/target_images/music_player/3d_picture/T02_cover_flow_now_playing_album.png differ
diff --git a/target_images/music_player/3d_picture/T02_cover_flow_now_playing_arrow.png b/target_images/music_player/3d_picture/T02_cover_flow_now_playing_arrow.png
new file mode 100755 (executable)
index 0000000..047031c
Binary files /dev/null and b/target_images/music_player/3d_picture/T02_cover_flow_now_playing_arrow.png differ
diff --git a/target_images/music_player/3d_picture/T02_cover_flow_now_playing_bg.png b/target_images/music_player/3d_picture/T02_cover_flow_now_playing_bg.png
new file mode 100755 (executable)
index 0000000..f9c36d1
Binary files /dev/null and b/target_images/music_player/3d_picture/T02_cover_flow_now_playing_bg.png differ
diff --git a/target_images/music_player/3d_picture/back-button.png b/target_images/music_player/3d_picture/back-button.png
new file mode 100755 (executable)
index 0000000..19c1011
Binary files /dev/null and b/target_images/music_player/3d_picture/back-button.png differ
diff --git a/target_images/music_player/3d_picture/picture-frame.png b/target_images/music_player/3d_picture/picture-frame.png
new file mode 100755 (executable)
index 0000000..aca5e01
Binary files /dev/null and b/target_images/music_player/3d_picture/picture-frame.png differ
index e60bfb9..02cb967 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_add.png and b/target_images/music_player/T02_controlbar_icon_add.png differ
index 446f330..8205121 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_add_to_playlist.png 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 100755 (executable)
index 0000000..f02f863
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_all.png differ
index 5e42d85..d1cc167 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_artist.png and b/target_images/music_player/T02_controlbar_icon_artist.png differ
index 8d12808..6c3eac6 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_cancel.png 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 100755 (executable)
index 0000000..f5f815d
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_composer.png differ
index c13897d..ee52ace 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_delete.png and b/target_images/music_player/T02_controlbar_icon_delete.png differ
index ed90f86..748461d 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_edit.png 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 100755 (executable)
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 100755 (executable)
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_move.png b/target_images/music_player/T02_controlbar_icon_move.png
new file mode 100755 (executable)
index 0000000..e702f2f
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_move.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 100755 (executable)
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 100755 (executable)
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 100755 (executable)
index 0000000..96bcf05
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_nearby_device.png differ
index 7d1d467..6e7c6eb 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_playlists.png and b/target_images/music_player/T02_controlbar_icon_playlists.png differ
index e748043..58fd8a8 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_search.png 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 100755 (executable)
index 0000000..a8e4611
Binary files /dev/null and b/target_images/music_player/T02_controlbar_icon_share.png differ
index b2a2ebf..3a29ea3 100755 (executable)
Binary files a/target_images/music_player/T02_controlbar_icon_songs.png and b/target_images/music_player/T02_controlbar_icon_songs.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 100755 (executable)
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 100755 (executable)
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_square_cell_press.png b/target_images/music_player/T02_square_cell_press.png
new file mode 100755 (executable)
index 0000000..21f0874
Binary files /dev/null and b/target_images/music_player/T02_square_cell_press.png differ
diff --git a/target_images/music_player/T02_title_icon_nearby_device.png b/target_images/music_player/T02_title_icon_nearby_device.png
new file mode 100755 (executable)
index 0000000..aee1624
Binary files /dev/null and b/target_images/music_player/T02_title_icon_nearby_device.png differ
diff --git a/target_images/music_player/default_folder.png b/target_images/music_player/default_folder.png
new file mode 100755 (executable)
index 0000000..01f3df7
Binary files /dev/null and b/target_images/music_player/default_folder.png differ
diff --git a/target_images/music_player/mini_app/T01_control_icon_apps.png b/target_images/music_player/mini_app/T01_control_icon_apps.png
new file mode 100755 (executable)
index 0000000..eb2949a
Binary files /dev/null and b/target_images/music_player/mini_app/T01_control_icon_apps.png differ
diff --git a/target_images/music_player/music_play_square_cell.png b/target_images/music_player/music_play_square_cell.png
new file mode 100755 (executable)
index 0000000..4bffce6
Binary files /dev/null and b/target_images/music_player/music_play_square_cell.png differ
diff --git a/target_images/music_player/music_play_square_cell_selected.png b/target_images/music_player/music_play_square_cell_selected.png
new file mode 100755 (executable)
index 0000000..7f14e63
Binary files /dev/null and b/target_images/music_player/music_play_square_cell_selected.png differ
diff --git a/target_images/music_player/storage_type/T02_external_storage_02.png b/target_images/music_player/storage_type/T02_external_storage_02.png
new file mode 100755 (executable)
index 0000000..383df95
Binary files /dev/null and b/target_images/music_player/storage_type/T02_external_storage_02.png differ
diff --git a/target_images/music_player/storage_type/T02_memory_card_02.png b/target_images/music_player/storage_type/T02_memory_card_02.png
new file mode 100755 (executable)
index 0000000..6430627
Binary files /dev/null and b/target_images/music_player/storage_type/T02_memory_card_02.png differ
similarity index 86%
rename from images/music_player/00_Option_header_bt_dim.png
rename to target_images/music_player/storage_type/T02_phone_02.png
index 6de8b93..26b52c0 100755 (executable)
Binary files a/images/music_player/00_Option_header_bt_dim.png and b/target_images/music_player/storage_type/T02_phone_02.png differ