Tizen 2.1 base
authorJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:37:43 +0000 (01:37 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Tue, 12 Mar 2013 16:37:43 +0000 (01:37 +0900)
325 files changed:
CMakeLists.txt [new file with mode: 0755]
LICENSE [new file with mode: 0755]
NOTICE [new file with mode: 0755]
class0/CMakeLists.txt [new file with mode: 0755]
class0/edje/msg_class0.edc [new file with mode: 0755]
class0/msg-ui-class0-main.c [new file with mode: 0755]
class0/msg-ui-class0-main.h [new file with mode: 0755]
common/CMakeLists.txt [new file with mode: 0755]
common/data/edc_image/00_MessageBubble_BG_receive.png [new file with mode: 0755]
common/data/edc_image/00_MessageBubble_BG_send.png [new file with mode: 0755]
common/data/edc_image/00_MessageBubble_date_bg.png [new file with mode: 0755]
common/data/edc_image/00_btn_circle_bg_normal.png [new file with mode: 0755]
common/data/edc_image/00_btn_circle_bg_press.png [new file with mode: 0755]
common/data/edc_image/00_button.png [new file with mode: 0755]
common/data/edc_image/00_button_04_dim.png [new file with mode: 0755]
common/data/edc_image/00_button_04_normal.png [new file with mode: 0755]
common/data/edc_image/00_button_04_normal_focus.png [new file with mode: 0755]
common/data/edc_image/00_button_04_press.png [new file with mode: 0755]
common/data/edc_image/00_button_dim.png [new file with mode: 0755]
common/data/edc_image/00_button_press.png [new file with mode: 0755]
common/data/edc_image/00_contacts_circle_bg.png [new file with mode: 0755]
common/data/edc_image/M01_Play_btn__play.png [new file with mode: 0755]
common/data/edc_image/M01_Play_btn__play_press.png [new file with mode: 0755]
common/data/edc_image/M01_Play_btn_next_dim.png [new file with mode: 0755]
common/data/edc_image/M01_Play_btn_previous_dim.png [new file with mode: 0755]
common/data/edc_image/M01_btn_add_plus.png [new file with mode: 0755]
common/data/edc_image/M01_button_contact.png [new file with mode: 0755]
common/data/edc_image/M01_controller_icon_volume.png [new file with mode: 0755]
common/data/edc_image/M01_controller_icon_volume_press.png [new file with mode: 0755]
common/data/edc_image/M01_icon_locked.png [new file with mode: 0755]
common/data/edc_image/M01_input_bg.png [new file with mode: 0755]
common/data/edc_image/M01_play_btn_next.png [new file with mode: 0755]
common/data/edc_image/M01_play_btn_next_press.png [new file with mode: 0755]
common/data/edc_image/M01_play_btn_pause.png [new file with mode: 0755]
common/data/edc_image/M01_play_btn_pause_press.png [new file with mode: 0755]
common/data/edc_image/M01_play_btn_previous.png [new file with mode: 0755]
common/data/edc_image/M01_play_btn_previous_press.png [new file with mode: 0755]
common/data/edc_image/M01_player_bg.png [new file with mode: 0755]
common/data/edc_image/M01_player_progress_bar.png [new file with mode: 0755]
common/data/edc_image/M01_player_progress_bg.png [new file with mode: 0755]
common/data/edc_image/M01_popup_bubble_bg.png [new file with mode: 0755]
common/data/edc_image/M01_popup_bubble_tail_top.png [new file with mode: 0755]
common/data/edc_image/M01_search_input_field_attach_bg.png [new file with mode: 0755]
common/data/edc_image/M01_search_input_field_bg.png [new file with mode: 0755]
common/data/edc_image/M01_subject_bg.png [new file with mode: 0755]
common/data/edc_image/myfile_icon_music.png [new file with mode: 0755]
common/data/edc_image/nf_title_separator.png [new file with mode: 0755]
common/data/edc_image/optionheader_arrow.png [new file with mode: 0755]
common/data/edj_image_list/00_icon_plus.png [new file with mode: 0755]
common/data/edj_image_list/00_slider_btn_volume01.png [new file with mode: 0644]
common/data/edj_image_list/00_slider_btn_volume02.png [new file with mode: 0644]
common/data/edj_image_list/01_controlbar_icon_compose.png [new file with mode: 0755]
common/data/edj_image_list/01_controllbar_icon_add_to_contact.png [new file with mode: 0755]
common/data/edj_image_list/01_header_icon_cancel.png [new file with mode: 0755]
common/data/edj_image_list/01_header_icon_done.png [new file with mode: 0755]
common/data/edj_image_list/60_myfiles_file_etc.png [new file with mode: 0755]
common/data/edj_image_list/M01_btn_delete.png [new file with mode: 0755]
common/data/edj_image_list/M01_btn_delete_press.png [new file with mode: 0755]
common/data/edj_image_list/M01_btn_message_send.png [new file with mode: 0755]
common/data/edj_image_list/M01_btn_message_send_dim.png [new file with mode: 0755]
common/data/edj_image_list/M01_btn_mms_message_send.png [new file with mode: 0755]
common/data/edj_image_list/M01_btn_mms_message_send_dim.png [new file with mode: 0755]
common/data/edj_image_list/M01_btn_scheduled_message_send.png [new file with mode: 0755]
common/data/edj_image_list/M01_btn_scheduled_message_send_dim.png [new file with mode: 0755]
common/data/edj_image_list/M01_contact_default_image.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_DRM.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_DRM_64x64.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_OTA.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_Push.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_Unsupported.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_attach_voice.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_block.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_broadcasting.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_message_status_mms_read_n.png [new file with mode: 0644]
common/data/edj_image_list/M01_icon_message_status_mms_sent_n.png [new file with mode: 0644]
common/data/edj_image_list/M01_icon_message_status_mms_unread_n.png [new file with mode: 0644]
common/data/edj_image_list/M01_icon_message_status_sms_read_n.png [new file with mode: 0644]
common/data/edj_image_list/M01_icon_message_status_sms_sent_n.png [new file with mode: 0644]
common/data/edj_image_list/M01_icon_message_status_sms_unread_n.png [new file with mode: 0644]
common/data/edj_image_list/M01_icon_save.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_unblock.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_video_call.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_view_contact.png [new file with mode: 0755]
common/data/edj_image_list/M01_icon_voice_call.png [new file with mode: 0755]
common/data/edj_image_list/M01_photo_btn_delete.png [new file with mode: 0755]
common/data/edj_image_list/M01_photo_btn_delete_press.png [new file with mode: 0755]
common/data/edj_image_list/M01_title_icon_attach.png [new file with mode: 0644]
common/data/edj_image_list/M01_title_icon_attach_dim.png [new file with mode: 0755]
common/data/edj_image_list/M01_title_icon_compose.png [new file with mode: 0644]
common/data/edj_image_list/M01_title_icon_search.png [new file with mode: 0644]
common/data/edj_image_list/M01_title_icon_search_dim.png [new file with mode: 0644]
common/data/edj_image_list/M02_button_save.png [new file with mode: 0755]
common/data/edj_image_list/attach_icon.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_etc.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_excel.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_html.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_images.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_java.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_music.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_pdf.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_ppt.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_rss.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_svg.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_swf.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_text.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_video.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_word.png [new file with mode: 0755]
common/data/image/07_message_sim.png [new file with mode: 0755]
common/data/image/M01_icon_locked.png [new file with mode: 0755]
common/data/image/M01_icon_voice.png [new file with mode: 0755]
common/data/image/attach_icon.png [new file with mode: 0755]
common/data/image/controlbar/01_controlbar_icon_Play.png [new file with mode: 0755]
common/data/image/controlbar/01_controlbar_icon_compose.png [new file with mode: 0755]
common/data/image/controlbar/01_controlbar_icon_create.png [new file with mode: 0755]
common/data/image/controlbar/01_controlbar_icon_delete.png [new file with mode: 0755]
common/data/image/controlbar/01_controlbar_icon_edit.png [new file with mode: 0755]
common/data/image/controlbar/01_controlbar_icon_forward.png [new file with mode: 0755]
common/data/image/controlbar/01_controlbar_icon_settings.png [new file with mode: 0755]
common/data/image/controlbar/01_controllbar_icon_close.png [new file with mode: 0755]
common/data/image/controlbar/M01_controlbar_icon_attach.png [new file with mode: 0755]
common/data/image/controlbar/M01_controlbar_icon_cancel_message.png [new file with mode: 0644]
common/data/image/controlbar/M01_controlbar_icon_copy_to_phone.png [new file with mode: 0644]
common/data/image/controlbar/M01_controlbar_icon_message_boxes.png [new file with mode: 0644]
common/data/image/controlbar/M01_controlbar_icon_more.png [new file with mode: 0755]
common/data/image/controlbar/M01_controlbar_icon_protection_off.png [new file with mode: 0644]
common/data/image/controlbar/M01_controlbar_icon_reply.png [new file with mode: 0755]
common/data/image/controlbar/M01_controlbar_icon_resend.png [new file with mode: 0755]
common/data/image/controlbar/M01_controlbar_icon_restore.png [new file with mode: 0644]
common/data/image/indicator_live panel_handle.png [new file with mode: 0755]
common/data/image/org.tizen.message.cb.png [new file with mode: 0644]
common/data/image/org.tizen.message.noti.png [new file with mode: 0644]
common/data/image/org.tizen.message.png [new file with mode: 0755]
common/data/image/org.tizen.message.voice.png [new file with mode: 0644]
common/data/msg_bubble_entry.edc [new file with mode: 0755]
common/data/msg_button.edc [new file with mode: 0755]
common/data/msg_common.edc [new file with mode: 0755]
common/data/msg_custom_winset.edc [new file with mode: 0755]
common/data/msg_genlist.edc [new file with mode: 0755]
common/data/msg_image_macro.edc [new file with mode: 0644]
common/data/msg_images.edc [new file with mode: 0755]
common/msg-ui-bundle.h [new file with mode: 0755]
common/msg-ui-common-utility.c [new file with mode: 0755]
common/msg-ui-common-utility.h [new file with mode: 0755]
common/msg-ui-image-resource.h [new file with mode: 0755]
common/msg-ui-util.h [new file with mode: 0755]
composer/CMakeLists.txt [new file with mode: 0755]
composer/data/composer_edc/composer_main.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-attachment.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-body.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-bubble.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-custom.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-data.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-main.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-recipient.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-subject.edc [new file with mode: 0755]
composer/include/msg-ui-composer-attachment.h [new file with mode: 0755]
composer/include/msg-ui-composer-body-callback.h [new file with mode: 0755]
composer/include/msg-ui-composer-body-page.h [new file with mode: 0755]
composer/include/msg-ui-composer-body.h [new file with mode: 0755]
composer/include/msg-ui-composer-bubble.h [new file with mode: 0755]
composer/include/msg-ui-composer-common.h [new file with mode: 0755]
composer/include/msg-ui-composer-data.h [new file with mode: 0755]
composer/include/msg-ui-composer-external.h [new file with mode: 0755]
composer/include/msg-ui-composer-main.h [new file with mode: 0755]
composer/include/msg-ui-composer-message-data.h [new file with mode: 0755]
composer/include/msg-ui-composer-message.h [new file with mode: 0755]
composer/include/msg-ui-composer-pageduration.h [new file with mode: 0755]
composer/include/msg-ui-composer-popup.h [new file with mode: 0755]
composer/include/msg-ui-composer-predictsearch.h [new file with mode: 0755]
composer/include/msg-ui-composer-recipient-callback.h [new file with mode: 0755]
composer/include/msg-ui-composer-recipient.h [new file with mode: 0755]
composer/include/msg-ui-composer-res.h [new file with mode: 0755]
composer/include/msg-ui-composer-string.h [new file with mode: 0755]
composer/include/msg-ui-composer-subject.h [new file with mode: 0755]
composer/src/bubble/msg-ui-composer-bubble-callback.c [new file with mode: 0755]
composer/src/bubble/msg-ui-composer-bubble-list.c [new file with mode: 0755]
composer/src/bubble/msg-ui-composer-bubble-main.c [new file with mode: 0755]
composer/src/bubble/msg-ui-composer-bubble-util.c [new file with mode: 0755]
composer/src/external/msg-ui-composer-external.c [new file with mode: 0755]
composer/src/gadget/msg-ui-composer-gadget.c [new file with mode: 0755]
composer/src/message/msg-ui-composer-message.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-attachment.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-body-callback.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-body-page.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-body.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-common.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-main.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-pageduration.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-popup.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-predictsearch.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-recipient-callback.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-recipient.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-subject.c [new file with mode: 0755]
composer/src/util/msg-ui-composer-util.c [new file with mode: 0755]
composer/src/util/msg-ui-composer-util.h [new file with mode: 0755]
debian/changelog [new file with mode: 0755]
debian/compat [new file with mode: 0755]
debian/control [new file with mode: 0755]
debian/dirs [new file with mode: 0755]
debian/docs [new file with mode: 0755]
debian/org.tizen.message.install.in [new file with mode: 0755]
debian/org.tizen.message.postinst.in [new file with mode: 0755]
debian/rules [new file with mode: 0755]
dialog/CMakeLists.txt [new file with mode: 0755]
dialog/message-dialog.c [new file with mode: 0755]
dialog/message-dialog.h [new file with mode: 0755]
main/CMakeLists.txt [new file with mode: 0755]
main/message.c [new file with mode: 0755]
main/message.h [new file with mode: 0755]
main/po/CMakeLists.txt [new file with mode: 0644]
main/po/ar.po [new file with mode: 0755]
main/po/az.po [new file with mode: 0755]
main/po/bg.po [new file with mode: 0755]
main/po/ca.po [new file with mode: 0755]
main/po/cs.po [new file with mode: 0755]
main/po/da.po [new file with mode: 0755]
main/po/de_DE.po [new file with mode: 0755]
main/po/el_GR.po [new file with mode: 0755]
main/po/en.po [new file with mode: 0755]
main/po/en_PH.po [new file with mode: 0755]
main/po/en_US.po [new file with mode: 0755]
main/po/es_ES.po [new file with mode: 0755]
main/po/es_MX.po [new file with mode: 0755]
main/po/et.po [new file with mode: 0755]
main/po/eu.po [new file with mode: 0755]
main/po/fi.po [new file with mode: 0755]
main/po/fr_CA.po [new file with mode: 0755]
main/po/fr_FR.po [new file with mode: 0755]
main/po/ga.po [new file with mode: 0755]
main/po/gl.po [new file with mode: 0755]
main/po/hi.po [new file with mode: 0755]
main/po/hr.po [new file with mode: 0755]
main/po/hu.po [new file with mode: 0755]
main/po/hy.po [new file with mode: 0755]
main/po/is.po [new file with mode: 0755]
main/po/it_IT.po [new file with mode: 0755]
main/po/ja_JP.po [new file with mode: 0755]
main/po/ka.po [new file with mode: 0755]
main/po/kk.po [new file with mode: 0755]
main/po/ko_KR.po [new file with mode: 0755]
main/po/lt.po [new file with mode: 0755]
main/po/lv.po [new file with mode: 0755]
main/po/mk.po [new file with mode: 0755]
main/po/nb.po [new file with mode: 0755]
main/po/nl_NL.po [new file with mode: 0755]
main/po/pl.po [new file with mode: 0755]
main/po/pt_BR.po [new file with mode: 0755]
main/po/pt_PT.po [new file with mode: 0755]
main/po/ro.po [new file with mode: 0755]
main/po/ru_RU.po [new file with mode: 0755]
main/po/sk.po [new file with mode: 0755]
main/po/sl.po [new file with mode: 0755]
main/po/sr.po [new file with mode: 0755]
main/po/sv.po [new file with mode: 0755]
main/po/tr_TR.po [new file with mode: 0755]
main/po/uk.po [new file with mode: 0755]
main/po/uz.po [new file with mode: 0755]
main/po/zh_CN.po [new file with mode: 0755]
main/po/zh_HK.po [new file with mode: 0755]
main/po/zh_SG.po [new file with mode: 0755]
main/po/zh_TW.po [new file with mode: 0755]
org.tizen.message.manifest [new file with mode: 0755]
org.tizen.message.xml.emul [new file with mode: 0755]
org.tizen.message.xml.target [new file with mode: 0755]
packaging/org.tizen.message.spec [new file with mode: 0755]
setting/CMakeLists.txt [new file with mode: 0755]
setting/include/msg-ui-setting-callback.h [new file with mode: 0755]
setting/include/msg-ui-setting-common-util.h [new file with mode: 0755]
setting/include/msg-ui-setting-gadget.h [new file with mode: 0755]
setting/include/msg-ui-setting-main.h [new file with mode: 0755]
setting/include/msg-ui-setting-mm-message.h [new file with mode: 0755]
setting/include/msg-ui-setting-msg-service-wrapper.h [new file with mode: 0755]
setting/include/msg-ui-setting-spam-setting.h [new file with mode: 0755]
setting/include/msg-ui-setting-text-message.h [new file with mode: 0755]
setting/include/msg-ui-setting-types.h [new file with mode: 0755]
setting/src/main/msg-ui-setting-callback.c [new file with mode: 0755]
setting/src/main/msg-ui-setting-common-util.c [new file with mode: 0755]
setting/src/main/msg-ui-setting-gadget.c [new file with mode: 0755]
setting/src/main/msg-ui-setting-main.c [new file with mode: 0755]
setting/src/main/msg-ui-setting-msg-service-wrapper.c [new file with mode: 0755]
setting/src/multimedia/msg-ui-setting-mm-message.c [new file with mode: 0755]
setting/src/multimedia/msg-ui-setting-mm-recv-option.c [new file with mode: 0755]
setting/src/spam/msg-ui-setting-spam-block-number.c [new file with mode: 0755]
setting/src/spam/msg-ui-setting-spam-block-word.c [new file with mode: 0755]
setting/src/spam/msg-ui-setting-spam-setting.c [new file with mode: 0755]
setting/src/text/msg-ui-setting-text-message.c [new file with mode: 0755]
setting/src/text/msg-ui-setting-text-service-center.c [new file with mode: 0755]
setting/theme/setting_theme.edc [new file with mode: 0755]
thread/include/msg-ui-thread-main.h [new file with mode: 0755]
thread/src/msg-ui-thread-callback.c [new file with mode: 0755]
thread/src/msg-ui-thread-list.c [new file with mode: 0755]
thread/src/msg-ui-thread-main.c [new file with mode: 0755]
thread/src/msg-ui-thread-util.c [new file with mode: 0755]
thread/theme/thread_genlist.edc [new file with mode: 0755]
viewer/CMakeLists.txt [new file with mode: 0755]
viewer/include/msg-ui-viewer-drm-list.h [new file with mode: 0755]
viewer/include/msg-ui-viewer-drm-utility.h [new file with mode: 0755]
viewer/include/msg-ui-viewer-main.h [new file with mode: 0755]
viewer/include/msg-ui-viewer-play-view.h [new file with mode: 0755]
viewer/include/msg-ui-viewer-types.h [new file with mode: 0755]
viewer/include/msg-ui-viewer-utility.h [new file with mode: 0755]
viewer/smil-player/include/msg-smil-content-manager.h [new file with mode: 0755]
viewer/smil-player/include/msg-smil-event-manager.h [new file with mode: 0755]
viewer/smil-player/include/msg-smil-player-interface.h [new file with mode: 0755]
viewer/smil-player/include/msg-smil-player.h [new file with mode: 0755]
viewer/smil-player/include/msg-smil-render.h [new file with mode: 0755]
viewer/smil-player/include/msg-smil-types.h [new file with mode: 0755]
viewer/smil-player/include/msg-smil-util.h [new file with mode: 0755]
viewer/smil-player/src/msg-smil-content-manager.c [new file with mode: 0755]
viewer/smil-player/src/msg-smil-event-manager.c [new file with mode: 0755]
viewer/smil-player/src/msg-smil-media-render.c [new file with mode: 0755]
viewer/smil-player/src/msg-smil-player-interface.c [new file with mode: 0755]
viewer/smil-player/src/msg-smil-player.c [new file with mode: 0755]
viewer/smil-player/src/msg-smil-render.c [new file with mode: 0755]
viewer/smil-player/src/msg-smil-text-render.c [new file with mode: 0755]
viewer/smil-player/src/msg-smil-util.c [new file with mode: 0755]
viewer/src/msg-ui-viewer-callback.c [new file with mode: 0755]
viewer/src/msg-ui-viewer-drm-list.c [new file with mode: 0755]
viewer/src/msg-ui-viewer-drm-utility.c [new file with mode: 0755]
viewer/src/msg-ui-viewer-gadget.c [new file with mode: 0755]
viewer/src/msg-ui-viewer-main.c [new file with mode: 0755]
viewer/src/msg-ui-viewer-play-view-callback.c [new file with mode: 0755]
viewer/src/msg-ui-viewer-play-view.c [new file with mode: 0755]
viewer/src/msg-ui-viewer-utility.c [new file with mode: 0755]
viewer/theme/msg_viewer.edc [new file with mode: 0755]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..d8e2ff7
--- /dev/null
@@ -0,0 +1,41 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(PKGNAME "org.tizen.message")
+SET(CMAKE_SOURCE_COMMON_DIR "${CMAKE_SOURCE_DIR}/common")
+SET(CMAKE_SOURCE_MAIN_DIR "${CMAKE_SOURCE_DIR}/main")
+SET(CMAKE_SOURCE_THREAD_DIR "${CMAKE_SOURCE_DIR}/thread")
+SET(CMAKE_SOURCE_BUBBLE_DIR "${CMAKE_SOURCE_DIR}/bubble")
+SET(CMAKE_SOURCE_COMPOSER_DIR "${CMAKE_SOURCE_DIR}/composer")
+SET(CMAKE_SOURCE_SETTING_DIR "${CMAKE_SOURCE_DIR}/setting")
+SET(CMAKE_SOURCE_VIEWER_DIR "${CMAKE_SOURCE_DIR}/viewer")
+SET(CMAKE_SOURCE_CLASS0_DIR "${CMAKE_SOURCE_DIR}/class0")
+SET(CMAKE_SOURCE_DIALOG_DIR "${CMAKE_SOURCE_DIR}/dialog")
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR ${CMAKE_INSTALL_DATADIR})
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(ICONDIR "${RESDIR}/icons/default/small")
+SET(IMGDIR "${RESDIR}/images")
+SET(EDJDIR "${RESDIR}/edje")
+SET(UGDIR "/usr/ug/lib")
+SET(LIBDIR "${PREFIX}/lib")
+
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
+ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+
+SET(CMAKE_LDFLAGS "-Wl,-zdefs" )
+
+#Add your submodule directory name
+ADD_SUBDIRECTORY(common)
+ADD_SUBDIRECTORY(main)
+ADD_SUBDIRECTORY(composer)
+ADD_SUBDIRECTORY(setting)
+ADD_SUBDIRECTORY(viewer)
+ADD_SUBDIRECTORY(class0)
+ADD_SUBDIRECTORY(dialog)
diff --git a/LICENSE b/LICENSE
new file mode 100755 (executable)
index 0000000..e133421
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,75 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://floralicense.org/license
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies with the standards set forth in the Compatibility Definition Document and passes the Compatibility Test Suite as defined from time to time by the Tizen Technical Steering Group and certified by the Tizen Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work solely as incorporated into a Tizen Certified Platform, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work solely as incorporated into a Tizen Certified Platform to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof pursuant to the copyright license above, in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+  1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+  2. You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+  3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+  4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Flora License, Version 1.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://floralicense.org/license
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/NOTICE b/NOTICE
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/class0/CMakeLists.txt b/class0/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..48bbd9a
--- /dev/null
@@ -0,0 +1,59 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(message C)
+
+SET(MSG_UI_CLASS0 msg-ui-class0)
+SET(SRCS ./msg-ui-class0-main.c)
+SET(CMAKE_SKIP_BUILD_RPATH TRUE)
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_COMMON_DIR}
+                               ${CMAKE_SOURCE_CLASS0_DIR}
+                               /usr/include/msg-service/
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED elementary aul dlog msg-service capi-appfw-application)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fpie")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DDEBUG")
+ADD_DEFINITIONS("-DDEBUG_ON")
+ADD_DEFINITIONS("-DLCD_TYPE_WVGA")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+
+ADD_EXECUTABLE(${MSG_UI_CLASS0} ${SRCS})
+TARGET_LINK_LIBRARIES(${MSG_UI_CLASS0} ${pkgs_LDFLAGS})
+
+ADD_CUSTOM_TARGET(msg_class0.edj
+               COMMAND edje_cc -id ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+               ${CMAKE_CURRENT_SOURCE_DIR}/edje/msg_class0.edc
+               ${CMAKE_CURRENT_SOURCE_DIR}/edje/msg_class0.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/edje/msg_class0.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} msg_class0.edj)
+
+INSTALL(TARGETS ${MSG_UI_CLASS0} DESTINATION bin)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/edje/msg_class0.edj DESTINATION ${EDJDIR})
+
+# install desktop file & icon
+
+# i18n
+#ADD_SUBDIRECTORY(po)
diff --git a/class0/edje/msg_class0.edc b/class0/edje/msg_class0.edc
new file mode 100755 (executable)
index 0000000..bbfe18f
--- /dev/null
@@ -0,0 +1,72 @@
+collections{
+       group{
+               name : "class0_viewer_layout";
+
+               parts{
+                       part {
+                               name: "pad_left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min : 70 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "pad_right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min : 70 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "pad_top";
+                               type: RECT;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 0.0; to_x: "pad_left"; }
+                                       rel2 { relative: 0.0 0.0; to_x: "pad_right"; }
+                               }
+                       }
+                       part {
+                               name: "pad_bottom";
+                               type: RECT;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 1.0; to_x: "pad_left"; }
+                                       rel2 { relative: 0.0 1.0; to_x: "pad_right"; }
+                               }
+                       }
+                       part{
+                               name:"elm.swallow.content";
+                               type: SWALLOW;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       align: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 0.0 1.0;       to: "pad_top"; }
+                                       rel2 { relative: 1.0 1.0;       to: "pad_bottom"; }
+                               }
+                       }
+               }
+       }
diff --git a/class0/msg-ui-class0-main.c b/class0/msg-ui-class0-main.c
new file mode 100755 (executable)
index 0000000..f3e4862
--- /dev/null
@@ -0,0 +1,644 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-class0-main.h"
+#include "msg-ui-common-utility.h"
+
+#define __TITLE_TEXT()         dgettext(MESSAGE_PKGNAME, "Class 0 message")
+#define        __LEFT_BTN_TEXT()       dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DISCARD")
+#define        __RIGHT_BTN_TEXT()      dgettext("sys_string", "IDS_COM_SK_SAVE")
+
+static Eina_Bool __msg_ui_class0_keydown_cb(void *data, int type, void *event);
+static int __msg_ui_class0_load_msg_data(void *data);
+static char *__msg_ui_str_append(char *str, const char *txt, int *len, int *alloc);
+static char *__msg_ui_text_to_markup(const char *text);
+static void __msg_ui_class0_btn_clicked_event(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_class0_create_contents(void *data);
+static int __msg_ui_class0_create_view(void *data);
+
+static void __msg_ui_class0_win_del(void *data, Evas_Object *obj, void *event);
+static Evas_Object *__msg_ui_class0_create_win(const char *name);
+static int __msg_ui_class0_show_message (void*  data);
+
+
+
+void msg_ui_class0_exit(void *data)
+{
+       struct appdata *ad = data;
+
+       int ret = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       if (ad->msgInfo != NULL) {
+               msg_release_struct(&ad->msgInfo);
+               ad->msgInfo = NULL;
+       }
+
+       if (ad->msgHandle != NULL) {
+               ret = msg_close_msg_handle(&ad->msgHandle);
+               if (ret != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_close_msg_handle() is failed !! : ret value is %d", ret);
+               }
+       }
+
+       if (ad->msgid_list)
+       {
+               int *msgId = NULL;
+
+               EINA_LIST_FREE(ad->msgid_list, msgId)
+               {
+                       if (msgId)      free (msgId);
+               }
+               ad->msgid_list = NULL;
+       }
+
+       elm_exit();
+}
+
+static Eina_Bool __msg_ui_class0_keydown_cb(void *data, int type, void *event)
+{
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       if (data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "data is null, calling elm_exit...\n");
+               elm_exit();
+       }
+
+       Ecore_Event_Key *ev = event;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY = %s\n", ev->keyname);
+
+       if (!strcmp(ev->keyname, KEY_END)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "keyname = %s ...calling elm_exit...\n", ev->keyname);
+               elm_exit();
+       }
+
+       return EINA_FALSE;
+}
+
+static int __msg_ui_class0_load_msg_data(void *data)
+{
+       struct appdata *ad = data;
+       msg_error_t err = MSG_SUCCESS;
+       int     rtn = MSG_UI_RET_ERR;
+
+       Eina_List *l = NULL, *l_next = NULL;
+       int     *msgId = 0;
+
+       if (ad->msgHandle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msgHandle is NULL !!");
+               return MSG_UI_RET_ERR;
+       }
+
+       EINA_LIST_FOREACH_SAFE(ad->msgid_list, l, l_next, msgId)
+       {
+               if (msgId == NULL)
+               {
+                       ad->msgid_list = eina_list_remove_list(ad->msgid_list, l);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msgId is NULL !!");
+                       continue;
+               }
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msgInfo with id(%d) will be loaded.", *msgId);
+
+               if (ad->msgInfo != NULL) {
+                       msg_release_struct(&ad->msgInfo);
+                       ad->msgInfo = NULL;
+               }
+
+               ad->msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+               if (ad->msgInfo == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_create_struct() for msgInfo is failed!");
+                       return MSG_UI_RET_ERR;
+               }
+
+               msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+               if (sendOpt == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_create_struct() for sendOpt is failed!");
+                       msg_release_struct(&ad->msgInfo);
+                       ad->msgInfo = NULL;
+                       return MSG_UI_RET_ERR;
+               }
+
+               err = msg_get_message(ad->msgHandle, *msgId, ad->msgInfo, sendOpt);
+               if (err == MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message is success");
+                       rtn = MSG_UI_RET_SUCCESS;
+
+                       msg_release_struct(&sendOpt);
+                       sendOpt = NULL;
+                       break;
+               }
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message for id(%d) is failed! : %d", *msgId, err);
+               msg_release_struct(&ad->msgInfo);
+               ad->msgInfo = NULL;
+               msg_release_struct(&sendOpt);
+               sendOpt = NULL;
+
+               free (msgId);
+               ad->msgid_list = eina_list_remove_list(ad->msgid_list, l);
+       }
+
+       return rtn;
+}
+
+static char *
+__msg_ui_str_append(char *str, const char *txt, int *len, int *alloc)
+{
+       //MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       int txt_len = strlen(txt);
+
+       if (txt_len <= 0)
+               return str;
+
+       if ((*len + txt_len) >= *alloc) {
+               char *str2;
+               int alloc2;
+
+               alloc2 = *alloc + txt_len + 128;
+               str2 = realloc(str, alloc2);
+               if (!str2)
+                       return str;
+
+               *alloc = alloc2;
+               str = str2;
+       }
+
+       strcpy(str + *len, txt);
+       *len += txt_len;
+       return str;
+}
+
+static char *
+__msg_ui_text_to_markup(const char *text)
+{
+       char *str = NULL;
+       int str_len = 0, str_alloc = 0;
+       int ch, pos = 0, pos2 = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       if (!text)
+               return NULL;
+
+       for (;;) {
+               pos = pos2;
+               pos2 = evas_string_char_next_get(text, pos2, &ch);
+               if ((ch <= 0) || (pos2 <= 0))
+                       break;
+
+               if (ch == '\n')
+                       str = __msg_ui_str_append(str, "<br>", &str_len, &str_alloc);
+               else if (ch == '\t')
+                       str = __msg_ui_str_append(str, "<\t>", &str_len, &str_alloc);
+               else if (ch == '<')
+                       str = __msg_ui_str_append(str, "&lt;", &str_len, &str_alloc);
+               else if (ch == '>')
+                       str = __msg_ui_str_append(str, "&gt;", &str_len, &str_alloc);
+               else if (ch == '&')
+                       str = __msg_ui_str_append(str, "&amp;", &str_len, &str_alloc);
+               else {
+                       char tstr[16];
+
+                       strncpy(tstr, text + pos, pos2 - pos);
+                       tstr[pos2 - pos] = 0;
+                       str = __msg_ui_str_append(str, tstr, &str_len, &str_alloc);
+               }
+       }
+
+       return str;
+}
+
+static void __msg_ui_class0_btn_clicked_event(void *data, Evas_Object *obj, void *event_info)
+{
+       struct appdata *ad = data;
+       int *msgId = NULL;
+
+       int err = MSG_SUCCESS;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "obj = 0x%x", obj);
+
+       msgId = eina_list_nth(ad->msgid_list, 0);
+       if (msgId == NULL)              goto class0_exit;
+
+       if (obj == ad->right_btn) {
+               /* Save it to Inbox. */
+               err = msg_move_msg_to_folder(ad->msgHandle, *msgId, MSG_INBOX_ID);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_move_msg_to_folder() is failed : err = %d", err);
+               }
+       } else if (obj == ad->left_btn) {
+               /* Discard this message */
+               err = msg_delete_message(ad->msgHandle, *msgId);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_message() is failed : err = %d", err);
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid obj = 0x%x", obj);
+               return;
+       }
+
+       /* check if the next message exists */
+       if (eina_list_count(ad->msgid_list) > 1)
+       {
+               int ret = MSG_UI_LEVEL_DEBUG;
+
+               /* remove current msgId */
+               ad->msgid_list = eina_list_remove(ad->msgid_list, msgId);
+               free(msgId);
+
+               /* show next message */
+               ret = __msg_ui_class0_show_message(ad);
+               if (ret < 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "__msg_ui_class0_load_msg_data() is failed : ret = %d", ret);
+                       goto class0_exit;
+               }
+
+               return;
+       }
+
+class0_exit :
+       msg_ui_class0_exit(ad);
+
+}
+
+static Evas_Object*
+__msg_ui_class0_create_contents(void *data)
+{
+       struct appdata *ad = data;
+
+       Evas_Object* layout = NULL;
+       Evas_Object *scroller = NULL;
+
+       char buf[2048] = { 0, };
+       char *str = NULL;
+
+       int msgSize = 0;
+       char pMsgBody[2048] = {0,};
+       char strSenderNumber[MAX_ADDRESS_VAL_LEN + 1] = {0,};
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       layout = elm_layout_add(ad->navi_frame);
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       elm_layout_file_set(layout,MSG_CLASS0_EDJ, "class0_viewer_layout");
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+
+       /* Create scroller. */
+       scroller = elm_scroller_add(layout);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+       evas_object_show(scroller);
+
+       elm_object_part_content_set(layout,"elm.swallow.content", scroller);
+
+       /* Create label. */
+       ad->label = elm_entry_add(scroller);
+       evas_object_size_hint_align_set(ad->label, EVAS_HINT_FILL, 0.0);
+       evas_object_size_hint_weight_set(ad->label, EVAS_HINT_EXPAND, 0.0);
+       elm_entry_editable_set(ad->label, EINA_FALSE);
+
+       /* get sender address */
+       {
+               msg_struct_list_s *addr_list = NULL;
+
+               msg_get_list_handle(ad->msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+               msg_get_str_value(addr_list->msg_struct_info[0], MSG_ADDRESS_INFO_DISPLAYNAME_STR, strSenderNumber, MAX_ADDRESS_VAL_LEN);
+               if (strSenderNumber[0] == '\0')
+                       msg_get_str_value(addr_list->msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strSenderNumber, MAX_ADDRESS_VAL_LEN);
+       }
+
+       /* get message body */
+       msg_get_int_value(ad->msgInfo, MSG_MESSAGE_DATA_SIZE_INT, &msgSize);
+       if (msgSize > 0) {
+               msg_get_str_value(ad->msgInfo, MSG_MESSAGE_SMS_DATA_STR, pMsgBody, sizeof(pMsgBody));
+               if (pMsgBody[0] != '\0') {
+                       snprintf(buf, sizeof(buf), "%s\n\n%s", pMsgBody, /*dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_FROM"), */strSenderNumber);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_sms_get_message_body() is failed !!");
+                       snprintf(buf, sizeof(buf), "Message is empty !!");
+               }
+       } else {
+               snprintf(buf, sizeof(buf), "Message is empty !!");
+       }
+
+       buf[2047] = '\n';
+
+       str = __msg_ui_text_to_markup(buf);
+       elm_object_text_set(ad->label, str);
+       elm_object_content_set(scroller, ad->label);
+       evas_object_show(ad->label);
+
+       if (str)
+               free(str);
+
+       return layout;
+}
+
+static int __msg_ui_class0_create_view(void *data)
+{
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       struct appdata *ad = data;
+
+       Evas_Object *content = NULL;
+
+       Evas_Object *ctrl_btn_left = NULL;
+       Evas_Object *ctrl_btn_right = NULL;
+
+       /* Create layout */
+       ad->layout_main = elm_layout_add(ad->win_main);
+       elm_layout_theme_set(ad->layout_main, "layout", "application", "default");
+       evas_object_size_hint_weight_set(ad->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(ad->win_main, ad->layout_main);
+       evas_object_show(ad->layout_main);
+
+       /* Create navi_frame */
+       ad->navi_frame = elm_naviframe_add(ad->layout_main);
+       elm_object_part_content_set(ad->layout_main, "elm.swallow.content", ad->navi_frame);
+       evas_object_show(ad->navi_frame);
+
+       /* Create contents */
+       content = __msg_ui_class0_create_contents(ad);
+       if (content == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_ui_class0_create_contents() is failed !!");
+               return MSG_UI_RET_ERR;
+       }
+
+       // create left toolbar "discard"
+       ctrl_btn_left = elm_button_add(ad->navi_frame);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_DEBUG, ctrl_btn_left == NULL, MSG_UI_RET_ERR, "ctrl_btn_left is NULL !!");
+       elm_object_style_set(ctrl_btn_left, "naviframe/toolbar/left");
+       elm_object_text_set(ctrl_btn_left, __LEFT_BTN_TEXT());
+       evas_object_smart_callback_add(ctrl_btn_left, "clicked", __msg_ui_class0_btn_clicked_event, ad);
+
+       // create right toolbar "save"
+       ctrl_btn_right = elm_button_add(ad->navi_frame);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_DEBUG, ctrl_btn_right == NULL, MSG_UI_RET_ERR, "ctrl_btn_right is NULL !!");
+       elm_object_style_set(ctrl_btn_right, "naviframe/toolbar/right");
+       elm_object_text_set(ctrl_btn_right, __RIGHT_BTN_TEXT());
+       evas_object_smart_callback_add(ctrl_btn_right, "clicked", __msg_ui_class0_btn_clicked_event, ad);
+
+       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->navi_frame, __TITLE_TEXT(), NULL, NULL, content, NULL);
+       elm_object_item_part_content_set(nf_it, "toolbar_button1", ctrl_btn_left);
+       ad->left_btn = ctrl_btn_left;
+       elm_object_item_part_content_set(nf_it, "toolbar_button2", ctrl_btn_right);
+       ad->right_btn = ctrl_btn_right;
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+static void __msg_ui_class0_win_del(void *data, Evas_Object *obj, void *event)
+{
+       elm_exit();
+}
+
+static Evas_Object *__msg_ui_class0_create_win(const char *name)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       Evas_Object *eo;
+       int w, h;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+       if (eo) {
+               elm_win_title_set(eo, name);
+               evas_object_smart_callback_add(eo, "delete,request", __msg_ui_class0_win_del, NULL);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+               evas_object_resize(eo, w, h);
+       }
+
+       return eo;
+}
+
+static int __msg_ui_class0_show_message (void*  data)
+{
+       struct appdata *ad = data;
+       int ret = MSG_UI_RET_SUCCESS;
+
+       /* Load message data by using message ID. */
+       ret = __msg_ui_class0_load_msg_data(ad);
+       if (ret < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "__msg_ui_class0_load_msg_data() is failed : ret = %d", ret);
+               return ret;
+       }
+
+       /* delete the old layout_main */
+       if (ad->layout_main != NULL)
+       {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete old layout_main");
+               evas_object_del(ad->layout_main);
+               ad->layout_main = NULL;
+       }
+
+       /* Create main view */
+       __msg_ui_class0_create_view(ad);
+
+       if (ad->win_main)
+       {
+               evas_object_show(ad->win_main);
+               elm_win_activate(ad->win_main);
+       }
+
+       return ret;
+}
+
+static bool app_create(void *data)
+{
+       struct appdata *ad = data;
+
+       int ret = 0;
+
+       // MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg ID = %d", ad->msg_id);
+       ad->msgid_list = NULL;
+
+       ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __msg_ui_class0_keydown_cb, ad);
+
+       ret = msg_open_msg_handle(&ad->msgHandle);
+       if (ret != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "msg_open_msg_handle() is failed : ret = %d", ret);
+               msg_ui_class0_exit(ad);
+               return FALSE;
+       }
+
+       /* init internationalization */
+       if (bindtextdomain(MESSAGE_PKGNAME, LOCALEDIR) == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "bindtextdomain() is failed : ret = %d", ret);
+               return FALSE;
+       }
+
+       if (textdomain(MESSAGE_PKGNAME) == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "textdomain() is failed : ret = %d", ret);
+               return FALSE;
+       }
+
+       ad->win_main = __msg_ui_class0_create_win(PACKAGE);
+       if (ad->win_main == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "Main window is NULL");
+               return FALSE;
+       } else {
+               evas_object_show(ad->win_main);
+       }
+
+       /* Indicator */
+       elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_HIDE);
+
+       evas_object_geometry_get(ad->win_main, NULL, NULL, &ad->root_w, &ad->root_h);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "main window width[%d], height[%d]", ad->root_w, ad->root_h);
+
+       /* draw background image */
+       ad->bg = elm_bg_add(ad->win_main);
+       evas_object_size_hint_weight_set(ad->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(ad->win_main, ad->bg);
+       evas_object_show(ad->bg);
+
+       return TRUE;
+}
+
+static void app_terminate(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       msg_ui_class0_exit(data);
+}
+
+static void app_pause(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+}
+
+static void app_resume(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+}
+
+static void app_service(service_h service, void *data)
+{
+       struct appdata *ad = data;
+
+       char *strMsgId = NULL;
+       int* msgId = NULL;
+       int ret = 0;
+
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       service_get_extra_data(service, MSG_BUNDLE_KEY_MSG_ID, &strMsgId);
+
+       if (strMsgId == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_get_extra_data() is failed !!");
+               return;
+       }
+
+       /* add message ID into first node of msgid_list */
+       if ((msgId = malloc(sizeof(int))) == NULL)      return;
+       memset(msgId, 0, sizeof(int));
+       *msgId = atoi(strMsgId);
+       ad->msgid_list = eina_list_prepend(ad->msgid_list, msgId);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "new msgid(%d) was added into msgid_list ", *msgId);
+
+       /* show the first message of msgid_list. */
+       ret = __msg_ui_class0_show_message(ad);
+       if (ret < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "__msg_ui_class0_load_msg_data() is failed : ret = %d", ret);
+               msg_ui_class0_exit(ad);
+               return;
+       }
+}
+
+static void lang_changed(void * data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       struct appdata *ad = data;
+       Elm_Object_Item *nf_it = NULL;
+
+       if(!ad) return;
+
+       // title text update
+       nf_it = elm_naviframe_top_item_get(ad->navi_frame);
+       elm_object_item_text_set (nf_it, __TITLE_TEXT());
+
+       // toolbar text update
+       if(ad->left_btn)
+               elm_object_text_set(ad->left_btn, __LEFT_BTN_TEXT());
+       if(ad->right_btn)
+               elm_object_text_set(ad->right_btn, __RIGHT_BTN_TEXT());
+}
+
+static void rotated(app_device_orientation_e orientation, void *data)
+{
+       struct appdata *ad = data;
+       int r;
+
+       if (ad == NULL || ad->win_main == NULL)
+               return;
+
+       switch (orientation) {
+       case APP_DEVICE_ORIENTATION_0:
+               r = 0;
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               r = 180;
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               r = 270;
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               r = 90;
+               break;
+       default:
+               r = -1;
+               break;
+       }
+
+       if (r >= 0) {
+               if (ad->win_main) {
+                       elm_win_rotation_with_resize_set(ad->win_main, r);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid case !!");
+               }
+       }
+}
+
+
+int main(int argc, char *argv[])
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       struct appdata ad;
+       memset(&ad, 0x0, sizeof(struct appdata));
+
+       app_event_callback_s event_callback = {0, };
+
+       event_callback.create = app_create;
+       event_callback.terminate = app_terminate;
+       event_callback.pause = app_pause;
+       event_callback.resume = app_resume;
+       event_callback.service = app_service;
+       event_callback.low_memory = NULL;
+       event_callback.low_battery = NULL;
+       event_callback.device_orientation = rotated;
+       event_callback.language_changed = lang_changed;
+       event_callback.region_format_changed = NULL;
+
+       return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
diff --git a/class0/msg-ui-class0-main.h b/class0/msg-ui-class0-main.h
new file mode 100755 (executable)
index 0000000..39d1abd
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_msg_ui_class0_main_H__
+#define __DEF_msg_ui_class0_main_H__
+
+#include <stdio.h>
+#include <app.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include "msg-ui-util.h"
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+#include <Elementary.h>
+
+#define PACKAGE "msg-ui-class0" /* for i18n */
+#define GRP_MAIN "main"
+
+#define MSG_CLASS0_EDJ         EDJDIR"/msg_class0.edj"
+
+struct appdata {
+       int root_w;
+       int root_h;
+       int root_x;
+       int root_y;
+       double w_ratio, h_ratio;
+
+       Evas *evas;
+       Evas_Object *win_main;
+       Evas_Object *bg;
+       Evas_Object *layout_main;
+       Evas_Object *navi_frame;
+       Evas_Object *label;
+       Evas_Object *left_btn;
+       Evas_Object *right_btn;
+       msg_handle_t msgHandle;
+
+       /* argument */
+       // int msg_id;
+       Eina_List *msgid_list;
+
+       msg_struct_t msgInfo;
+};
+
+void msg_ui_class0_exit(void *data);
+int main(int argc, char **argv);
+
+#endif /* __DEF_msg_ui_class0_main_H__ */
diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..62c8987
--- /dev/null
@@ -0,0 +1,93 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(msg-common C)
+
+SET(VERSION 0.1.0)
+#################################
+#      Message Common          #
+#################################
+
+SET(COMMON_SRCS
+       ./msg-ui-common-utility.c
+)
+
+INCLUDE_DIRECTORIES(
+       ${CMAKE_SOURCE_COMMON_DIR}
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+       appsvc
+       bundle
+       capi-appfw-application contacts-service2
+       dlog drm-client
+       elementary ecore ecore-x ecore-input ecore-imf ecore-file eina
+       glib-2.0
+       icu-i18n
+       msg-service
+       mm-common mm-player mm-session
+       ui-gadget-1
+       utilX
+       vconf
+       syspopup-caller
+       capi-media-sound-manager
+       capi-system-info
+       capi-system-system-settings
+       capi-media-metadata-extractor
+       capi-media-image-util
+       capi-media-player
+       capi-content-media-content
+       status
+       libexif
+       tapi
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+
+ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{PREFIX}\"")
+ADD_DEFINITIONS("-DDATAFS=\"$ENV{DATADIR}\"")
+ADD_DEFINITIONS("-DTARGET")
+ADD_DEFINITIONS("-DSLP_PROF")
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${COMMON_SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION} )
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${CMAKE_LDFLAGS})
+
+ADD_CUSTOM_TARGET(msg_common.edj
+               COMMAND edje_cc -id
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/msg_common.edc
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/msg_common.edj
+                       DEPENDS ${CMAKE_SOURCE_COMMON_DIR}/data/msg_common.edc
+)
+
+ADD_CUSTOM_TARGET(msg_custom_winset.edj
+               COMMAND edje_cc -id
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/msg_custom_winset.edc
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/msg_custom_winset.edj
+                       DEPENDS ${CMAKE_SOURCE_COMMON_DIR}/data/msg_custom_winset.edc
+)
+
+ADD_CUSTOM_TARGET(msg_images.edj
+               COMMAND edje_cc -id
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/edj_image_list
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edc
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edj
+                       DEPENDS ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} msg_common.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} msg_custom_winset.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} msg_images.edj)
+
+# Install so files.
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIBDIR})
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_common.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_custom_winset.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edj DESTINATION ${EDJDIR})
+
diff --git a/common/data/edc_image/00_MessageBubble_BG_receive.png b/common/data/edc_image/00_MessageBubble_BG_receive.png
new file mode 100755 (executable)
index 0000000..bf98eae
Binary files /dev/null and b/common/data/edc_image/00_MessageBubble_BG_receive.png differ
diff --git a/common/data/edc_image/00_MessageBubble_BG_send.png b/common/data/edc_image/00_MessageBubble_BG_send.png
new file mode 100755 (executable)
index 0000000..799910b
Binary files /dev/null and b/common/data/edc_image/00_MessageBubble_BG_send.png differ
diff --git a/common/data/edc_image/00_MessageBubble_date_bg.png b/common/data/edc_image/00_MessageBubble_date_bg.png
new file mode 100755 (executable)
index 0000000..b0fb761
Binary files /dev/null and b/common/data/edc_image/00_MessageBubble_date_bg.png differ
diff --git a/common/data/edc_image/00_btn_circle_bg_normal.png b/common/data/edc_image/00_btn_circle_bg_normal.png
new file mode 100755 (executable)
index 0000000..981d624
Binary files /dev/null and b/common/data/edc_image/00_btn_circle_bg_normal.png differ
diff --git a/common/data/edc_image/00_btn_circle_bg_press.png b/common/data/edc_image/00_btn_circle_bg_press.png
new file mode 100755 (executable)
index 0000000..bc5f8b2
Binary files /dev/null and b/common/data/edc_image/00_btn_circle_bg_press.png differ
diff --git a/common/data/edc_image/00_button.png b/common/data/edc_image/00_button.png
new file mode 100755 (executable)
index 0000000..b1dfb75
Binary files /dev/null and b/common/data/edc_image/00_button.png differ
diff --git a/common/data/edc_image/00_button_04_dim.png b/common/data/edc_image/00_button_04_dim.png
new file mode 100755 (executable)
index 0000000..76865ec
Binary files /dev/null and b/common/data/edc_image/00_button_04_dim.png differ
diff --git a/common/data/edc_image/00_button_04_normal.png b/common/data/edc_image/00_button_04_normal.png
new file mode 100755 (executable)
index 0000000..76865ec
Binary files /dev/null and b/common/data/edc_image/00_button_04_normal.png differ
diff --git a/common/data/edc_image/00_button_04_normal_focus.png b/common/data/edc_image/00_button_04_normal_focus.png
new file mode 100755 (executable)
index 0000000..06c39d8
Binary files /dev/null and b/common/data/edc_image/00_button_04_normal_focus.png differ
diff --git a/common/data/edc_image/00_button_04_press.png b/common/data/edc_image/00_button_04_press.png
new file mode 100755 (executable)
index 0000000..2c43c71
Binary files /dev/null and b/common/data/edc_image/00_button_04_press.png differ
diff --git a/common/data/edc_image/00_button_dim.png b/common/data/edc_image/00_button_dim.png
new file mode 100755 (executable)
index 0000000..2d7db00
Binary files /dev/null and b/common/data/edc_image/00_button_dim.png differ
diff --git a/common/data/edc_image/00_button_press.png b/common/data/edc_image/00_button_press.png
new file mode 100755 (executable)
index 0000000..7c61d6a
Binary files /dev/null and b/common/data/edc_image/00_button_press.png differ
diff --git a/common/data/edc_image/00_contacts_circle_bg.png b/common/data/edc_image/00_contacts_circle_bg.png
new file mode 100755 (executable)
index 0000000..133e187
Binary files /dev/null and b/common/data/edc_image/00_contacts_circle_bg.png differ
diff --git a/common/data/edc_image/M01_Play_btn__play.png b/common/data/edc_image/M01_Play_btn__play.png
new file mode 100755 (executable)
index 0000000..d5302f5
Binary files /dev/null and b/common/data/edc_image/M01_Play_btn__play.png differ
diff --git a/common/data/edc_image/M01_Play_btn__play_press.png b/common/data/edc_image/M01_Play_btn__play_press.png
new file mode 100755 (executable)
index 0000000..9640f73
Binary files /dev/null and b/common/data/edc_image/M01_Play_btn__play_press.png differ
diff --git a/common/data/edc_image/M01_Play_btn_next_dim.png b/common/data/edc_image/M01_Play_btn_next_dim.png
new file mode 100755 (executable)
index 0000000..5bab5b3
Binary files /dev/null and b/common/data/edc_image/M01_Play_btn_next_dim.png differ
diff --git a/common/data/edc_image/M01_Play_btn_previous_dim.png b/common/data/edc_image/M01_Play_btn_previous_dim.png
new file mode 100755 (executable)
index 0000000..608a9ce
Binary files /dev/null and b/common/data/edc_image/M01_Play_btn_previous_dim.png differ
diff --git a/common/data/edc_image/M01_btn_add_plus.png b/common/data/edc_image/M01_btn_add_plus.png
new file mode 100755 (executable)
index 0000000..7080f43
Binary files /dev/null and b/common/data/edc_image/M01_btn_add_plus.png differ
diff --git a/common/data/edc_image/M01_button_contact.png b/common/data/edc_image/M01_button_contact.png
new file mode 100755 (executable)
index 0000000..9d44b6f
Binary files /dev/null and b/common/data/edc_image/M01_button_contact.png differ
diff --git a/common/data/edc_image/M01_controller_icon_volume.png b/common/data/edc_image/M01_controller_icon_volume.png
new file mode 100755 (executable)
index 0000000..0b9e9f5
Binary files /dev/null and b/common/data/edc_image/M01_controller_icon_volume.png differ
diff --git a/common/data/edc_image/M01_controller_icon_volume_press.png b/common/data/edc_image/M01_controller_icon_volume_press.png
new file mode 100755 (executable)
index 0000000..0a41d8b
Binary files /dev/null and b/common/data/edc_image/M01_controller_icon_volume_press.png differ
diff --git a/common/data/edc_image/M01_icon_locked.png b/common/data/edc_image/M01_icon_locked.png
new file mode 100755 (executable)
index 0000000..477c619
Binary files /dev/null and b/common/data/edc_image/M01_icon_locked.png differ
diff --git a/common/data/edc_image/M01_input_bg.png b/common/data/edc_image/M01_input_bg.png
new file mode 100755 (executable)
index 0000000..1c78dbb
Binary files /dev/null and b/common/data/edc_image/M01_input_bg.png differ
diff --git a/common/data/edc_image/M01_play_btn_next.png b/common/data/edc_image/M01_play_btn_next.png
new file mode 100755 (executable)
index 0000000..2461feb
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_next.png differ
diff --git a/common/data/edc_image/M01_play_btn_next_press.png b/common/data/edc_image/M01_play_btn_next_press.png
new file mode 100755 (executable)
index 0000000..b68dfef
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_next_press.png differ
diff --git a/common/data/edc_image/M01_play_btn_pause.png b/common/data/edc_image/M01_play_btn_pause.png
new file mode 100755 (executable)
index 0000000..39417d2
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_pause.png differ
diff --git a/common/data/edc_image/M01_play_btn_pause_press.png b/common/data/edc_image/M01_play_btn_pause_press.png
new file mode 100755 (executable)
index 0000000..3fa2079
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_pause_press.png differ
diff --git a/common/data/edc_image/M01_play_btn_previous.png b/common/data/edc_image/M01_play_btn_previous.png
new file mode 100755 (executable)
index 0000000..36423a1
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_previous.png differ
diff --git a/common/data/edc_image/M01_play_btn_previous_press.png b/common/data/edc_image/M01_play_btn_previous_press.png
new file mode 100755 (executable)
index 0000000..304ed00
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_previous_press.png differ
diff --git a/common/data/edc_image/M01_player_bg.png b/common/data/edc_image/M01_player_bg.png
new file mode 100755 (executable)
index 0000000..b313430
Binary files /dev/null and b/common/data/edc_image/M01_player_bg.png differ
diff --git a/common/data/edc_image/M01_player_progress_bar.png b/common/data/edc_image/M01_player_progress_bar.png
new file mode 100755 (executable)
index 0000000..a7bf3ca
Binary files /dev/null and b/common/data/edc_image/M01_player_progress_bar.png differ
diff --git a/common/data/edc_image/M01_player_progress_bg.png b/common/data/edc_image/M01_player_progress_bg.png
new file mode 100755 (executable)
index 0000000..b56bbc4
Binary files /dev/null and b/common/data/edc_image/M01_player_progress_bg.png differ
diff --git a/common/data/edc_image/M01_popup_bubble_bg.png b/common/data/edc_image/M01_popup_bubble_bg.png
new file mode 100755 (executable)
index 0000000..4367a2c
Binary files /dev/null and b/common/data/edc_image/M01_popup_bubble_bg.png differ
diff --git a/common/data/edc_image/M01_popup_bubble_tail_top.png b/common/data/edc_image/M01_popup_bubble_tail_top.png
new file mode 100755 (executable)
index 0000000..ed771ad
Binary files /dev/null and b/common/data/edc_image/M01_popup_bubble_tail_top.png differ
diff --git a/common/data/edc_image/M01_search_input_field_attach_bg.png b/common/data/edc_image/M01_search_input_field_attach_bg.png
new file mode 100755 (executable)
index 0000000..0f7cbe3
Binary files /dev/null and b/common/data/edc_image/M01_search_input_field_attach_bg.png differ
diff --git a/common/data/edc_image/M01_search_input_field_bg.png b/common/data/edc_image/M01_search_input_field_bg.png
new file mode 100755 (executable)
index 0000000..79aac96
Binary files /dev/null and b/common/data/edc_image/M01_search_input_field_bg.png differ
diff --git a/common/data/edc_image/M01_subject_bg.png b/common/data/edc_image/M01_subject_bg.png
new file mode 100755 (executable)
index 0000000..5b7a32d
Binary files /dev/null and b/common/data/edc_image/M01_subject_bg.png differ
diff --git a/common/data/edc_image/myfile_icon_music.png b/common/data/edc_image/myfile_icon_music.png
new file mode 100755 (executable)
index 0000000..9909d9c
Binary files /dev/null and b/common/data/edc_image/myfile_icon_music.png differ
diff --git a/common/data/edc_image/nf_title_separator.png b/common/data/edc_image/nf_title_separator.png
new file mode 100755 (executable)
index 0000000..e287978
Binary files /dev/null and b/common/data/edc_image/nf_title_separator.png differ
diff --git a/common/data/edc_image/optionheader_arrow.png b/common/data/edc_image/optionheader_arrow.png
new file mode 100755 (executable)
index 0000000..508c2c8
Binary files /dev/null and b/common/data/edc_image/optionheader_arrow.png differ
diff --git a/common/data/edj_image_list/00_icon_plus.png b/common/data/edj_image_list/00_icon_plus.png
new file mode 100755 (executable)
index 0000000..bb2de6c
Binary files /dev/null and b/common/data/edj_image_list/00_icon_plus.png differ
diff --git a/common/data/edj_image_list/00_slider_btn_volume01.png b/common/data/edj_image_list/00_slider_btn_volume01.png
new file mode 100644 (file)
index 0000000..2d9f384
Binary files /dev/null and b/common/data/edj_image_list/00_slider_btn_volume01.png differ
diff --git a/common/data/edj_image_list/00_slider_btn_volume02.png b/common/data/edj_image_list/00_slider_btn_volume02.png
new file mode 100644 (file)
index 0000000..a28bfc4
Binary files /dev/null and b/common/data/edj_image_list/00_slider_btn_volume02.png differ
diff --git a/common/data/edj_image_list/01_controlbar_icon_compose.png b/common/data/edj_image_list/01_controlbar_icon_compose.png
new file mode 100755 (executable)
index 0000000..20b71f7
Binary files /dev/null and b/common/data/edj_image_list/01_controlbar_icon_compose.png differ
diff --git a/common/data/edj_image_list/01_controllbar_icon_add_to_contact.png b/common/data/edj_image_list/01_controllbar_icon_add_to_contact.png
new file mode 100755 (executable)
index 0000000..5e92417
Binary files /dev/null and b/common/data/edj_image_list/01_controllbar_icon_add_to_contact.png differ
diff --git a/common/data/edj_image_list/01_header_icon_cancel.png b/common/data/edj_image_list/01_header_icon_cancel.png
new file mode 100755 (executable)
index 0000000..4fb54c3
Binary files /dev/null and b/common/data/edj_image_list/01_header_icon_cancel.png differ
diff --git a/common/data/edj_image_list/01_header_icon_done.png b/common/data/edj_image_list/01_header_icon_done.png
new file mode 100755 (executable)
index 0000000..d771640
Binary files /dev/null and b/common/data/edj_image_list/01_header_icon_done.png differ
diff --git a/common/data/edj_image_list/60_myfiles_file_etc.png b/common/data/edj_image_list/60_myfiles_file_etc.png
new file mode 100755 (executable)
index 0000000..26748d8
Binary files /dev/null and b/common/data/edj_image_list/60_myfiles_file_etc.png differ
diff --git a/common/data/edj_image_list/M01_btn_delete.png b/common/data/edj_image_list/M01_btn_delete.png
new file mode 100755 (executable)
index 0000000..0ac1428
Binary files /dev/null and b/common/data/edj_image_list/M01_btn_delete.png differ
diff --git a/common/data/edj_image_list/M01_btn_delete_press.png b/common/data/edj_image_list/M01_btn_delete_press.png
new file mode 100755 (executable)
index 0000000..9cc0949
Binary files /dev/null and b/common/data/edj_image_list/M01_btn_delete_press.png differ
diff --git a/common/data/edj_image_list/M01_btn_message_send.png b/common/data/edj_image_list/M01_btn_message_send.png
new file mode 100755 (executable)
index 0000000..4b34e1f
Binary files /dev/null and b/common/data/edj_image_list/M01_btn_message_send.png differ
diff --git a/common/data/edj_image_list/M01_btn_message_send_dim.png b/common/data/edj_image_list/M01_btn_message_send_dim.png
new file mode 100755 (executable)
index 0000000..993c4c7
Binary files /dev/null and b/common/data/edj_image_list/M01_btn_message_send_dim.png differ
diff --git a/common/data/edj_image_list/M01_btn_mms_message_send.png b/common/data/edj_image_list/M01_btn_mms_message_send.png
new file mode 100755 (executable)
index 0000000..c523c00
Binary files /dev/null and b/common/data/edj_image_list/M01_btn_mms_message_send.png differ
diff --git a/common/data/edj_image_list/M01_btn_mms_message_send_dim.png b/common/data/edj_image_list/M01_btn_mms_message_send_dim.png
new file mode 100755 (executable)
index 0000000..d5328eb
Binary files /dev/null and b/common/data/edj_image_list/M01_btn_mms_message_send_dim.png differ
diff --git a/common/data/edj_image_list/M01_btn_scheduled_message_send.png b/common/data/edj_image_list/M01_btn_scheduled_message_send.png
new file mode 100755 (executable)
index 0000000..c461fd1
Binary files /dev/null and b/common/data/edj_image_list/M01_btn_scheduled_message_send.png differ
diff --git a/common/data/edj_image_list/M01_btn_scheduled_message_send_dim.png b/common/data/edj_image_list/M01_btn_scheduled_message_send_dim.png
new file mode 100755 (executable)
index 0000000..0f537d9
Binary files /dev/null and b/common/data/edj_image_list/M01_btn_scheduled_message_send_dim.png differ
diff --git a/common/data/edj_image_list/M01_contact_default_image.png b/common/data/edj_image_list/M01_contact_default_image.png
new file mode 100755 (executable)
index 0000000..01ab2b1
Binary files /dev/null and b/common/data/edj_image_list/M01_contact_default_image.png differ
diff --git a/common/data/edj_image_list/M01_icon_DRM.png b/common/data/edj_image_list/M01_icon_DRM.png
new file mode 100755 (executable)
index 0000000..a239ccb
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_DRM.png differ
diff --git a/common/data/edj_image_list/M01_icon_DRM_64x64.png b/common/data/edj_image_list/M01_icon_DRM_64x64.png
new file mode 100755 (executable)
index 0000000..c010fc6
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_DRM_64x64.png differ
diff --git a/common/data/edj_image_list/M01_icon_OTA.png b/common/data/edj_image_list/M01_icon_OTA.png
new file mode 100755 (executable)
index 0000000..6143020
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_OTA.png differ
diff --git a/common/data/edj_image_list/M01_icon_Push.png b/common/data/edj_image_list/M01_icon_Push.png
new file mode 100755 (executable)
index 0000000..f130891
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_Push.png differ
diff --git a/common/data/edj_image_list/M01_icon_Unsupported.png b/common/data/edj_image_list/M01_icon_Unsupported.png
new file mode 100755 (executable)
index 0000000..91c5600
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_Unsupported.png differ
diff --git a/common/data/edj_image_list/M01_icon_attach_voice.png b/common/data/edj_image_list/M01_icon_attach_voice.png
new file mode 100755 (executable)
index 0000000..92323d5
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_attach_voice.png differ
diff --git a/common/data/edj_image_list/M01_icon_block.png b/common/data/edj_image_list/M01_icon_block.png
new file mode 100755 (executable)
index 0000000..e730a46
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_block.png differ
diff --git a/common/data/edj_image_list/M01_icon_broadcasting.png b/common/data/edj_image_list/M01_icon_broadcasting.png
new file mode 100755 (executable)
index 0000000..5ffd70a
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_broadcasting.png differ
diff --git a/common/data/edj_image_list/M01_icon_message_status_mms_read_n.png b/common/data/edj_image_list/M01_icon_message_status_mms_read_n.png
new file mode 100644 (file)
index 0000000..ecc0f25
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_message_status_mms_read_n.png differ
diff --git a/common/data/edj_image_list/M01_icon_message_status_mms_sent_n.png b/common/data/edj_image_list/M01_icon_message_status_mms_sent_n.png
new file mode 100644 (file)
index 0000000..672c78b
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_message_status_mms_sent_n.png differ
diff --git a/common/data/edj_image_list/M01_icon_message_status_mms_unread_n.png b/common/data/edj_image_list/M01_icon_message_status_mms_unread_n.png
new file mode 100644 (file)
index 0000000..fc52b49
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_message_status_mms_unread_n.png differ
diff --git a/common/data/edj_image_list/M01_icon_message_status_sms_read_n.png b/common/data/edj_image_list/M01_icon_message_status_sms_read_n.png
new file mode 100644 (file)
index 0000000..91222e5
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_message_status_sms_read_n.png differ
diff --git a/common/data/edj_image_list/M01_icon_message_status_sms_sent_n.png b/common/data/edj_image_list/M01_icon_message_status_sms_sent_n.png
new file mode 100644 (file)
index 0000000..4e83758
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_message_status_sms_sent_n.png differ
diff --git a/common/data/edj_image_list/M01_icon_message_status_sms_unread_n.png b/common/data/edj_image_list/M01_icon_message_status_sms_unread_n.png
new file mode 100644 (file)
index 0000000..d622de8
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_message_status_sms_unread_n.png differ
diff --git a/common/data/edj_image_list/M01_icon_save.png b/common/data/edj_image_list/M01_icon_save.png
new file mode 100755 (executable)
index 0000000..4bcf587
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_save.png differ
diff --git a/common/data/edj_image_list/M01_icon_unblock.png b/common/data/edj_image_list/M01_icon_unblock.png
new file mode 100755 (executable)
index 0000000..bfe30f2
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_unblock.png differ
diff --git a/common/data/edj_image_list/M01_icon_video_call.png b/common/data/edj_image_list/M01_icon_video_call.png
new file mode 100755 (executable)
index 0000000..6eaecd8
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_video_call.png differ
diff --git a/common/data/edj_image_list/M01_icon_view_contact.png b/common/data/edj_image_list/M01_icon_view_contact.png
new file mode 100755 (executable)
index 0000000..bb35882
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_view_contact.png differ
diff --git a/common/data/edj_image_list/M01_icon_voice_call.png b/common/data/edj_image_list/M01_icon_voice_call.png
new file mode 100755 (executable)
index 0000000..13f496d
Binary files /dev/null and b/common/data/edj_image_list/M01_icon_voice_call.png differ
diff --git a/common/data/edj_image_list/M01_photo_btn_delete.png b/common/data/edj_image_list/M01_photo_btn_delete.png
new file mode 100755 (executable)
index 0000000..fdb4f0a
Binary files /dev/null and b/common/data/edj_image_list/M01_photo_btn_delete.png differ
diff --git a/common/data/edj_image_list/M01_photo_btn_delete_press.png b/common/data/edj_image_list/M01_photo_btn_delete_press.png
new file mode 100755 (executable)
index 0000000..02dddce
Binary files /dev/null and b/common/data/edj_image_list/M01_photo_btn_delete_press.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_attach.png b/common/data/edj_image_list/M01_title_icon_attach.png
new file mode 100644 (file)
index 0000000..1a1e7c3
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_attach.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_attach_dim.png b/common/data/edj_image_list/M01_title_icon_attach_dim.png
new file mode 100755 (executable)
index 0000000..9b31bec
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_attach_dim.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_compose.png b/common/data/edj_image_list/M01_title_icon_compose.png
new file mode 100644 (file)
index 0000000..6c90e8c
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_compose.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_search.png b/common/data/edj_image_list/M01_title_icon_search.png
new file mode 100644 (file)
index 0000000..cf8f197
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_search.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_search_dim.png b/common/data/edj_image_list/M01_title_icon_search_dim.png
new file mode 100644 (file)
index 0000000..0ae026b
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_search_dim.png differ
diff --git a/common/data/edj_image_list/M02_button_save.png b/common/data/edj_image_list/M02_button_save.png
new file mode 100755 (executable)
index 0000000..852f2d0
Binary files /dev/null and b/common/data/edj_image_list/M02_button_save.png differ
diff --git a/common/data/edj_image_list/attach_icon.png b/common/data/edj_image_list/attach_icon.png
new file mode 100755 (executable)
index 0000000..062ce45
Binary files /dev/null and b/common/data/edj_image_list/attach_icon.png differ
diff --git a/common/data/edj_image_list/myfile_icon_etc.png b/common/data/edj_image_list/myfile_icon_etc.png
new file mode 100755 (executable)
index 0000000..0cc767d
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_etc.png differ
diff --git a/common/data/edj_image_list/myfile_icon_excel.png b/common/data/edj_image_list/myfile_icon_excel.png
new file mode 100755 (executable)
index 0000000..109b7de
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_excel.png differ
diff --git a/common/data/edj_image_list/myfile_icon_html.png b/common/data/edj_image_list/myfile_icon_html.png
new file mode 100755 (executable)
index 0000000..78646b4
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_html.png differ
diff --git a/common/data/edj_image_list/myfile_icon_images.png b/common/data/edj_image_list/myfile_icon_images.png
new file mode 100755 (executable)
index 0000000..4dd3be3
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_images.png differ
diff --git a/common/data/edj_image_list/myfile_icon_java.png b/common/data/edj_image_list/myfile_icon_java.png
new file mode 100755 (executable)
index 0000000..a083ee6
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_java.png differ
diff --git a/common/data/edj_image_list/myfile_icon_music.png b/common/data/edj_image_list/myfile_icon_music.png
new file mode 100755 (executable)
index 0000000..9909d9c
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_music.png differ
diff --git a/common/data/edj_image_list/myfile_icon_pdf.png b/common/data/edj_image_list/myfile_icon_pdf.png
new file mode 100755 (executable)
index 0000000..2480d81
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_pdf.png differ
diff --git a/common/data/edj_image_list/myfile_icon_ppt.png b/common/data/edj_image_list/myfile_icon_ppt.png
new file mode 100755 (executable)
index 0000000..42c1100
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_ppt.png differ
diff --git a/common/data/edj_image_list/myfile_icon_rss.png b/common/data/edj_image_list/myfile_icon_rss.png
new file mode 100755 (executable)
index 0000000..1b566e2
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_rss.png differ
diff --git a/common/data/edj_image_list/myfile_icon_svg.png b/common/data/edj_image_list/myfile_icon_svg.png
new file mode 100755 (executable)
index 0000000..64a841c
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_svg.png differ
diff --git a/common/data/edj_image_list/myfile_icon_swf.png b/common/data/edj_image_list/myfile_icon_swf.png
new file mode 100755 (executable)
index 0000000..ee50e85
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_swf.png differ
diff --git a/common/data/edj_image_list/myfile_icon_text.png b/common/data/edj_image_list/myfile_icon_text.png
new file mode 100755 (executable)
index 0000000..c937ef8
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_text.png differ
diff --git a/common/data/edj_image_list/myfile_icon_video.png b/common/data/edj_image_list/myfile_icon_video.png
new file mode 100755 (executable)
index 0000000..a8e832a
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_video.png differ
diff --git a/common/data/edj_image_list/myfile_icon_word.png b/common/data/edj_image_list/myfile_icon_word.png
new file mode 100755 (executable)
index 0000000..b399bad
Binary files /dev/null and b/common/data/edj_image_list/myfile_icon_word.png differ
diff --git a/common/data/image/07_message_sim.png b/common/data/image/07_message_sim.png
new file mode 100755 (executable)
index 0000000..84aff16
Binary files /dev/null and b/common/data/image/07_message_sim.png differ
diff --git a/common/data/image/M01_icon_locked.png b/common/data/image/M01_icon_locked.png
new file mode 100755 (executable)
index 0000000..00c46cd
Binary files /dev/null and b/common/data/image/M01_icon_locked.png differ
diff --git a/common/data/image/M01_icon_voice.png b/common/data/image/M01_icon_voice.png
new file mode 100755 (executable)
index 0000000..36dd2c7
Binary files /dev/null and b/common/data/image/M01_icon_voice.png differ
diff --git a/common/data/image/attach_icon.png b/common/data/image/attach_icon.png
new file mode 100755 (executable)
index 0000000..062ce45
Binary files /dev/null and b/common/data/image/attach_icon.png differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_Play.png b/common/data/image/controlbar/01_controlbar_icon_Play.png
new file mode 100755 (executable)
index 0000000..9de9162
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_Play.png differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_compose.png b/common/data/image/controlbar/01_controlbar_icon_compose.png
new file mode 100755 (executable)
index 0000000..20b71f7
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_compose.png differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_create.png b/common/data/image/controlbar/01_controlbar_icon_create.png
new file mode 100755 (executable)
index 0000000..0dc1144
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_create.png differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_delete.png b/common/data/image/controlbar/01_controlbar_icon_delete.png
new file mode 100755 (executable)
index 0000000..faaa0d3
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_delete.png differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_edit.png b/common/data/image/controlbar/01_controlbar_icon_edit.png
new file mode 100755 (executable)
index 0000000..4ddc598
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_edit.png differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_forward.png b/common/data/image/controlbar/01_controlbar_icon_forward.png
new file mode 100755 (executable)
index 0000000..a1fca43
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_forward.png differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_settings.png b/common/data/image/controlbar/01_controlbar_icon_settings.png
new file mode 100755 (executable)
index 0000000..bbea504
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_settings.png differ
diff --git a/common/data/image/controlbar/01_controllbar_icon_close.png b/common/data/image/controlbar/01_controllbar_icon_close.png
new file mode 100755 (executable)
index 0000000..91b04e5
Binary files /dev/null and b/common/data/image/controlbar/01_controllbar_icon_close.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_attach.png b/common/data/image/controlbar/M01_controlbar_icon_attach.png
new file mode 100755 (executable)
index 0000000..67959f0
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_attach.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_cancel_message.png b/common/data/image/controlbar/M01_controlbar_icon_cancel_message.png
new file mode 100644 (file)
index 0000000..2f9aa30
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_cancel_message.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_copy_to_phone.png b/common/data/image/controlbar/M01_controlbar_icon_copy_to_phone.png
new file mode 100644 (file)
index 0000000..60a4309
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_copy_to_phone.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_message_boxes.png b/common/data/image/controlbar/M01_controlbar_icon_message_boxes.png
new file mode 100644 (file)
index 0000000..e3ba4b5
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_message_boxes.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_more.png b/common/data/image/controlbar/M01_controlbar_icon_more.png
new file mode 100755 (executable)
index 0000000..e5589d3
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_more.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_protection_off.png b/common/data/image/controlbar/M01_controlbar_icon_protection_off.png
new file mode 100644 (file)
index 0000000..9822568
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_protection_off.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_reply.png b/common/data/image/controlbar/M01_controlbar_icon_reply.png
new file mode 100755 (executable)
index 0000000..cb86286
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_reply.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_resend.png b/common/data/image/controlbar/M01_controlbar_icon_resend.png
new file mode 100755 (executable)
index 0000000..1d97a6c
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_resend.png differ
diff --git a/common/data/image/controlbar/M01_controlbar_icon_restore.png b/common/data/image/controlbar/M01_controlbar_icon_restore.png
new file mode 100644 (file)
index 0000000..837bc0d
Binary files /dev/null and b/common/data/image/controlbar/M01_controlbar_icon_restore.png differ
diff --git a/common/data/image/indicator_live panel_handle.png b/common/data/image/indicator_live panel_handle.png
new file mode 100755 (executable)
index 0000000..2c05453
Binary files /dev/null and b/common/data/image/indicator_live panel_handle.png differ
diff --git a/common/data/image/org.tizen.message.cb.png b/common/data/image/org.tizen.message.cb.png
new file mode 100644 (file)
index 0000000..3a26d57
Binary files /dev/null and b/common/data/image/org.tizen.message.cb.png differ
diff --git a/common/data/image/org.tizen.message.noti.png b/common/data/image/org.tizen.message.noti.png
new file mode 100644 (file)
index 0000000..dcc17dc
Binary files /dev/null and b/common/data/image/org.tizen.message.noti.png differ
diff --git a/common/data/image/org.tizen.message.png b/common/data/image/org.tizen.message.png
new file mode 100755 (executable)
index 0000000..1c12128
Binary files /dev/null and b/common/data/image/org.tizen.message.png differ
diff --git a/common/data/image/org.tizen.message.voice.png b/common/data/image/org.tizen.message.voice.png
new file mode 100644 (file)
index 0000000..85b6d51
Binary files /dev/null and b/common/data/image/org.tizen.message.voice.png differ
diff --git a/common/data/msg_bubble_entry.edc b/common/data/msg_bubble_entry.edc
new file mode 100755 (executable)
index 0000000..b156ba9
--- /dev/null
@@ -0,0 +1,834 @@
+#define ENTRY_SELECTION_BG_COLOR 90 123 138 127
+#define ENTRY_BUBBLE_EX_PAD 46
+#define ENTRY_BUBBLE_EX_CALLERID_PAD 140
+#define ENTRY_BUBBLE_IX_PAD 20
+#define ENTRY_BUBBLE_Y_PAD 15
+#define ENTRY_BUBBLE_BOTTOM_PAD 22
+#define ENTRY_BUBBLE_CALLERID_PAD 10
+#define ENTRY_BUBBLE_CALLERID_WIDTH 84
+#define ENTRY_BUBBLE_CALLERID_HEIGHT 84
+#define ENTRY_SELECTION_BG_COLOR 90 123 138 127
+#define ENTRY_BUBBLE_SENT_TEXT_COLOR "#000000"
+#define ENTRY_BUBBLE_SENT_TEXT_SHADOW_STYLE "far_shadow,bottom"
+#define ENTRY_BUBBLE_SENT_TEXT_SHADOW_COLOR "#ffffff7f"
+#define ENTRY_BUBBLE_RECEV_TEXT_COLOR "#FFFFFF"
+#define ENTRY_BUBBLE_RECEV_TEXT_SHADOW_STYLE "far_shadow,top"
+#define ENTRY_BUBBLE_RECEV_TEXT_SHADOW_COLOR "#0000009f"
+#define ENTRY_BUBBLE_TEXT_SIZE 38
+
+images {
+       image: "00_MessageBubble_BG_receive.png" COMP;
+       image: "00_MessageBubble_BG_send.png" COMP;
+}
+
+group {
+       name: "elm/entry/selection/default";
+       parts {
+               part { name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               color: ENTRY_SELECTION_BG_COLOR;
+                       }
+               }
+       }
+}
+
+group {
+       name: "elm/entry/anchor/default";
+       parts {
+               part { name: "bg";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                       }
+               }
+       }
+}
+
+styles {
+       style {
+               name: "entry_bubble_sent_textblock_style";
+               base: "font=SLP:style=Roman style="ENTRY_BUBBLE_SENT_TEXT_SHADOW_STYLE" shadow_color="ENTRY_BUBBLE_SENT_TEXT_SHADOW_COLOR" font_size="ENTRY_BUBBLE_TEXT_SIZE" color="ENTRY_BUBBLE_SENT_TEXT_COLOR" left_margin=1 right_margin=2 wrap=mixed text_class=bubble";
+               tag:  "br" "\n";
+               tag:  "ps" "ps";
+               tag:  "tab" "\t";
+               tag:  "em" "+ font=SLP:style=Oblique";
+               tag:  "b" "+ font=SLP:style=Bold";
+               tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+               tag:  "hilight" "+ font=SLP:style=Bold";
+       }
+       style {
+               name: "entry_bubble_receive_textblock_style";
+               base: "font=SLP:style=Roman style="ENTRY_BUBBLE_RECEV_TEXT_SHADOW_STYLE" shadow_color="ENTRY_BUBBLE_RECEV_TEXT_SHADOW_COLOR" font_size="ENTRY_BUBBLE_TEXT_SIZE" color="ENTRY_BUBBLE_RECEV_TEXT_COLOR" left_margin=1 right_margin=2 wrap=mixed text_class=bubble";
+               tag:  "br" "\n";
+               tag:  "ps" "ps";
+               tag:  "tab" "\t";
+               tag:  "em" "+ font=SLP:style=Oblique";
+               tag:  "b" "+ font=SLP:style=Bold";
+               tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+               tag:  "hilight" "+ font=SLP:style=Bold";
+       }
+       style {
+               name: "entry_textblock_disabled_style";
+               base: "font=SLP:style=Roman font_size="ENTRY_BUBBLE_TEXT_SIZE" color=#00000080 left_margin=1 right_margin=2 wrap=mixed text_class=bubble";
+               tag:  "br" "\n";
+               tag:  "ps" "ps";
+               tag:  "tab" "\t";
+               tag:  "em" "+ font=SLP:style=Oblique";
+               tag:  "b" "+ font=SLP:style=Bold";
+               tag:  "link" "+ color=#00000080 underline=on underline_color=#00000080";
+               tag:  "hilight" "+ font=SLP:style=Bold";
+       }
+}
+
+/* Entry's bubble style */
+
+group {
+       name: "elm/entry/base-noedit/readmessage/custom";
+       data.item: "default_font_size" "24";
+       data.item: "min_font_size" "8";
+       data.item: "max_font_size" "60";
+       data {
+               item: context_menu_orientation "horizontal";
+       }
+       parts {
+               part {
+                       name: "elm.rect.left.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ENTRY_BUBBLE_EX_PAD 0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               color: 0 0 0 0;
+                               rel2.relative: 0.0 1.0;
+                       }
+                       description {
+                               state: "callerid_on" 0.0;
+                               inherit: "default" 0.0;
+                               min: ENTRY_BUBBLE_EX_CALLERID_PAD 0;
+                       }
+               }
+               part {
+                       name: "elm.rect.right.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ENTRY_BUBBLE_IX_PAD 0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               color: 0 0 0 0;
+                               rel1 { relative: 1.0 0.0; to: "elm.text"; }
+                               rel2.to: "elm.text";
+                       }
+               }
+               part {
+                       name: "elm.rect.top.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 ENTRY_BUBBLE_Y_PAD;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               color: 0 0 0 0;
+                               rel2.relative: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.rect.topleft.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ENTRY_BUBBLE_CALLERID_PAD ENTRY_BUBBLE_CALLERID_PAD;
+                               max: ENTRY_BUBBLE_CALLERID_PAD ENTRY_BUBBLE_CALLERID_PAD;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.rect.bottom.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 ENTRY_BUBBLE_BOTTOM_PAD;
+                               fixed: 0 1;
+                               align: 0.0 1.0;
+                               color: 0 0 0 0;
+                               rel1.relative: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "elm.rect.bottomleft.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 94 2;
+                               max: 94 2;
+                               align: 0.0 1.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.image.bg";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel2.to_x: "elm.rect.right.pad";
+                               image {
+                                       normal: "00_MessageBubble_BG_receive.png";
+                                       border: 46 28 50 16;
+                                       border_scale: 1;
+                               }
+                       }
+               }
+               // it's temporary blocked for prepare entry's signal feature
+               /*
+               part {
+                       name: "elm.text.subject";
+                       type: TEXTBLOCK;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               text {
+                                       style: "entry_bubble_receive_textblock_style";
+                                       min: 0 1;
+                               }
+                               rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.top.pad"; }
+                               rel2 { relative: 0.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.top.pad"; }
+                       }
+               }
+         */
+               part {
+                       name: "elm.rect.subject.line";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                               min: 0 1;
+                               align: 0.0 0.0;
+                               color: 0 0 0 255;
+                               rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.top.pad"; }
+                               rel2 { relative: 0.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.top.pad"; }
+                       }
+               }
+               part {
+                       name: "elm.swallow.callerid";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ENTRY_BUBBLE_CALLERID_WIDTH ENTRY_BUBBLE_CALLERID_HEIGHT;
+                               max: ENTRY_BUBBLE_CALLERID_WIDTH ENTRY_BUBBLE_CALLERID_HEIGHT;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0; to: "elm.rect.topleft.pad"; to_y: "elm.rect.topleft.pad"; }
+                               rel2 { relative: 0.0 0.0; to_y: "elm.rect.bottom.pad"; }
+                       }
+                       description {
+                               state: "callerid_on" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "elm.rect.callerid.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ENTRY_BUBBLE_CALLERID_PAD ENTRY_BUBBLE_CALLERID_PAD;
+                               max: ENTRY_BUBBLE_CALLERID_PAD ENTRY_BUBBLE_CALLERID_PAD;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                               visible: 0;
+                               rel1 { relative: 1.0 1.0; to: "elm.swallow.callerid"; to_y: "elm.rect.top.pad"; }
+                               rel2 { relative: 1.0 0.0; to_y: "elm.rect.bottom.pad"; }
+                       }
+               }
+               part {
+                       name: "elm.text";
+                       type: TEXTBLOCK;
+                       mouse_events: 1;
+                       scale: 1;
+                       entry_mode: PLAIN;
+                       select_mode: BLOCK_HANDLE;
+                       //cursor_mode: BEFORE;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 0;
+                               align: 0.0 0.0;
+                               rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.subject.line"; }
+                               rel2 { relative: 1.0 1.0; to_y: "elm.rect.subject.line"; }
+                               min: 200 0;
+                               text {
+                                       style: "entry_bubble_receive_textblock_style";
+                                       min: 0 1;
+                                       max: 1 0;
+                               }
+                       }
+                       description {
+                               state: "callerid_on" 0.0;
+                               inherit: "default" 0.0;
+                               rel1 { relative: 1.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.subject.line"; }
+                               rel2 { relative: 1.0 1.0; to_y: "elm.rect.subject.line"; }
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "entry_textblock_disabled_style";
+                               }
+                       }
+               }
+               part {
+                       name: "elm.rect.status.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 6 64;
+                               fixed: 1 1;
+                               align: 0.0 1.0;
+                               visible: 0;
+                               rel1 { relative: 1.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.bottom.pad"; }
+                               rel2 { relative: 1.0 1.0; to_y: "elm.rect.bottom.pad"; }
+                       }
+               }
+               part {
+                       name: "elm.rect.time.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 6 34;
+                               max: 6 34;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                               visible: 0;
+                               rel1.to: "elm.rect.status.pad";
+                               rel2 { relative: 1.0 1.0; to_y: "elm.rect.bottom.pad"; }
+                       }
+               }
+               part {
+                       name: "elm.text.status";
+                       type: TEXT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 1.0;
+                               fixed: 1 1;
+                               text {
+                                       font: "SLP:style=Roman";
+                                       size: 28;
+                                       min: 1 0;
+                                       text_class: "slp_roman";
+                               }
+                               visible: 1;
+                               color: 139 139 139 255;
+                               rel1 { relative: 1.0 0.0; to_x: "elm.rect.status.pad"; to_y: "elm.rect.status.pad"; }
+                               rel2 { relative: 1.0 0.0; to_x: "elm.rect.status.pad"; to_y: "elm.rect.status.pad"; }
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.text.time";
+                       type: TEXT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               text {
+                                       font: "SLP:style=Roman";
+                                       size: 28;
+                                       min: 1 0;
+                                       text_class: "slp_roman";
+                               }
+                               visible: 1;
+                               color: 100 100 100 255;
+                               rel1 { relative: 1.0 1.0; to_x: "elm.rect.time.pad"; to_y: "elm.rect.time.pad"; }
+                               rel2 { relative: 1.0 1.0; to_x: "elm.rect.time.pad"; to_y: "elm.rect.time.pad"; }
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.swallow.icon1";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 64 64;
+                               max: 64 64;
+                               fixed: 1 1;
+                               align: 0.0 1.0;
+                               visible: 0;
+                               rel1 { relative: 1.5 0.3; to_x: "elm.rect.right.pad"; to_y: "elm.rect.bottom.pad"; }
+                               rel2 { relative: 1.0 0.3; to_y: "elm.rect.bottom.pad"; }
+                       }
+                       description {
+                               state: "enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "elm.swallow.end";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.text"; }
+                               rel2 { relative: 0.0 0.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.bottom.pad"; }
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "focus";
+                       signal: "load";
+                       source: "";
+                       action: FOCUS_SET;
+                       target: "elm.text";
+               }
+               program {
+                       name: "disable";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       action: STATE_SET "disabled" 0.0;
+                       target: "elm.text";
+               }
+               program {
+                       name: "enable";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "elm.text";
+               }
+               program {
+                       name: "go_callerid_on";
+                       signal: "elm,state,callerid,enabled";
+                       source: "elm";
+                       action: STATE_SET "callerid_on" 0.0;
+                       target: "elm.swallow.callerid";
+                       target: "elm.text";
+               }
+               program {
+                       name: "go_callerid_off";
+                       signal: "elm,state,callerid,disabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "elm.swallow.callerid";
+                       target: "elm.text";
+               }
+               program {
+                       name: "go_textstatus_on";
+                       signal: "elm,state,text,status,enabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "elm.text.time";
+                       target: "elm.text.status";
+                       after: "go_contentstatus_off";
+               }
+               program {
+                       name: "go_textstatus_off";
+                       signal: "elm,state,text,status,disbled";
+                       source: "elm";
+                       action: STATE_SET "disabled" 0.0;
+                       target: "elm.text.time";
+                       target: "elm.text.status";
+               }
+               program {
+                       name: "go_contentstatus_on";
+                       signal: "elm,state,content,status,enabled";
+                       source: "elm";
+                       action: STATE_SET "enabled" 0.0;
+                       target: "elm.swallow.icon1";
+                       after: "go_textstatus_off";
+               }
+               program {
+                       name: "go_contentstatus_off";
+                       signal: "elm,state,content,status,disabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "elm.swallow.icon1";
+               }
+       }
+}
+group {
+       name: "elm/entry/base-noedit/sentmessage/custom";
+       data.item: "default_font_size" "24";
+       data.item: "min_font_size" "8";
+       data.item: "max_font_size" "60";
+       data {
+               item: context_menu_orientation "horizontal";
+       }
+       parts {
+               part {
+                       name: "elm.rect.right.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ENTRY_BUBBLE_EX_PAD 0;
+                               fixed: 1 0;
+                               align: 1.0 0.0;
+                               color: 0 0 0 0;
+                               rel1.relative: 1.0 0.0;
+                       }
+                       description {
+                               state: "callerid_on" 0.0;
+                               inherit: "default" 0.0;
+                               min: ENTRY_BUBBLE_EX_CALLERID_PAD 0;
+                       }
+               }
+               part {
+                       name: "elm.rect.left.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ENTRY_BUBBLE_IX_PAD 0;
+                               fixed: 1 0;
+                               align: 1.0 0.0;
+                               color: 0 0 0 0;
+                               rel1 { relative: 0.0 0.0; to: "elm.text"; }
+                               rel2 { relative: 0.0 1.0; to: "elm.text"; }
+                       }
+               }
+               part {
+                       name: "elm.rect.topright.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ENTRY_BUBBLE_CALLERID_PAD ENTRY_BUBBLE_CALLERID_PAD;
+                               max: ENTRY_BUBBLE_CALLERID_PAD ENTRY_BUBBLE_CALLERID_PAD;
+                               align: 1.0 0.0;
+                               visible: 0;
+                               rel1.relative: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.rect.top.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 ENTRY_BUBBLE_Y_PAD;
+                               fixed: 0 1;
+                               align: 0.0 0.0;
+                               color: 0 0 0 0;
+                               rel2.relative: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.rect.bottom.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 ENTRY_BUBBLE_BOTTOM_PAD;
+                               fixed: 0 1;
+                               align: 0.0 1.0;
+                               color: 0 0 0 0;
+                               rel1.relative: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "elm.rect.bottomright.pad";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 94 2;
+                               max: 94 2;
+                               align: 1.0 1.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.image.bg";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to_x: "elm.rect.left.pad";
+                               image {
+                                       normal: "00_MessageBubble_BG_send.png";
+                                       border: 20 46 50 16;
+                                       border_scale: 1;
+                               }
+                       }
+               }
+               // it's temporary blocked for prepare entry's signal feature
+               /*
+               part {
+                       name: "elm.text.subject";
+                       type: TEXTBLOCK;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               text {
+                                       style: "entry_bubble_sent_textblock_style";
+                                       min: 0 1;
+                               }
+                               rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.top.pad"; }
+                               rel2 { relative: 0.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.top.pad"; }
+                       }
+               }
+               */
+         part {
+           name: "elm.rect.subject.line";
+           type: RECT;
+           scale: 1;
+           description {
+              state: "default" 0.0;
+              visible: 0;
+              min: 0 1;
+              align: 0.0 0.0;
+              color: 0 0 0 255;
+              rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.top.pad"; }
+              rel2 { relative: 0.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.top.pad"; }
+           }
+         }
+         part {
+            name: "elm.swallow.callerid";
+            type: SWALLOW;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: ENTRY_BUBBLE_CALLERID_WIDTH ENTRY_BUBBLE_CALLERID_HEIGHT;
+               max: ENTRY_BUBBLE_CALLERID_WIDTH ENTRY_BUBBLE_CALLERID_HEIGHT;
+               align: 1.0 0.0;
+               visible: 0;
+               rel1 { relative: 0.0 0.0; to_x: "elm.rect.topright.pad"; to_y: "elm.rect.topright.pad"; }
+               rel2 { relative: 0.0 0.0; to_x: "elm.rect.topright.pad"; to_y: "elm.rect.bottom.pad"; }
+            }
+            description { state: "callerid_on" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "elm.rect.callerid.pad";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: ENTRY_BUBBLE_CALLERID_PAD ENTRY_BUBBLE_CALLERID_PAD;
+               max: ENTRY_BUBBLE_CALLERID_PAD ENTRY_BUBBLE_CALLERID_PAD;
+               align: 1.0 0.0;
+               visible: 0;
+               rel1 { relative: 0.0 1.0; to_x: "elm.swallow.callerid"; to_y: "elm.rect.topright.pad"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.swallow.callerid"; to_y: "elm.rect.bottom.pad"; }
+           }
+         }
+        part { name: "elm.text";
+           type: TEXTBLOCK;
+           mouse_events: 1;
+           scale: 1;
+           entry_mode: PLAIN;
+           select_mode: BLOCK_HANDLE;
+           //cursor_mode: BEFORE;
+           multiline: 1;
+           description {
+               state: "default" 0.0;
+               fixed: 1 0;
+               min: 200 0;
+               align: 1.0 0.0;
+               rel1 { relative: 0.0 1.0; to_y: "elm.rect.subject.line";}
+               rel2 { relative: 0.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.subject.line"; }
+              text {
+                 style: "entry_bubble_sent_textblock_style";
+                 min: 0 1;
+                  max: 1 0;
+              }
+           }
+           description { state: "callerid_on" 0.0;
+               inherit: "default" 0.0;
+               rel1 { relative: 0.0 1.0; to_y: "elm.rect.subject.line";}
+               rel2 { relative: 0.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.subject.line"; }
+           }
+           description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+              text {
+                 style: "entry_textblock_disabled_style";
+              }
+           }
+        }
+         part {
+            name: "elm.rect.status.pad";
+           type: RECT;
+           scale: 1;
+           description {
+              state: "default" 0.0;
+               min: 16 64;
+              fixed: 1 1;
+              align: 1.0 1.0;
+               visible: 0;
+              rel1 { relative: 0.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.bottom.pad"; }
+              rel2 { relative: 0.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.bottom.pad"; }
+           }
+        }
+         part {
+            name: "elm.rect.time.pad";
+           type: RECT;
+           scale: 1;
+           description {
+              state: "default" 0.0;
+               min: 16 34;
+               max: 16 34;
+              fixed: 1 1;
+              align: 0.0 0.0;
+               visible: 0;
+              rel1.to: "elm.rect.status.pad";
+              rel2 { relative: 0.0 1.0; to_x: "elm.rect.status.pad"; to_y: "elm.rect.bottom.pad"; }
+           }
+        }
+         part { name: "elm.text.status";
+            type: TEXT;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               fixed: 1 1;
+               text {
+                  font: "SLP:style=Roman";
+                  size: 26;
+                  min: 1 0;
+                  text_class: "slp_roman";
+               }
+               visible: 1;
+               color: 92 151 187 255;
+               rel1 { relative: 0.0 0.0; to_x: "elm.rect.status.pad"; to_y: "elm.rect.status.pad"; }
+               rel2 { relative: 0.0 0.0; to_x: "elm.rect.status.pad"; to_y: "elm.rect.status.pad"; }
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "elm.text.time";
+            type: TEXT;
+            scale: 1;
+            description { state: "default" 0.0;
+               align: 1.0 0.0;
+               fixed: 1 1;
+               text {
+                  font: "SLP:style=Roman";
+                  size: 26;
+                  min: 1 0;
+                  text_class: "slp_roman";
+               }
+               visible: 1;
+               color: 92 151 187 255;
+               rel1 { relative: 0.0 1.0; to_x: "elm.rect.status.pad"; to_y: "elm.rect.time.pad"; }
+               rel2 { relative: 0.0 1.0; to_x: "elm.rect.status.pad"; to_y: "elm.rect.time.pad"; }
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "elm.swallow.icon1";
+           type: SWALLOW;
+           scale: 1;
+           description {
+              state: "default" 0.0;
+               min: 64 64;
+               max: 64 64;
+              fixed: 1 1;
+              align: 1.0 1.0;
+               visible: 0;
+              rel1 { relative: -0.8 0.3; to_x: "elm.rect.left.pad"; to_y: "elm.rect.bottom.pad"; }
+              rel2 { relative: -0.8 0.3; to_x: "elm.rect.left.pad"; to_y: "elm.rect.bottom.pad"; }
+           }
+            description { state: "enabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+        }
+        part {
+           name: "elm.swallow.end";
+           type: SWALLOW;
+           scale: 1;
+           description {
+              state: "default" 0.0;
+              align: 0.0 0.0;
+              rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.text"; }
+              rel2 { relative: 0.0 0.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.bottom.pad"; }
+           }
+         }
+      }
+      programs {
+        program { name: "go_callerid_on";
+           signal: "elm,state,callerid,enabled";
+           source: "elm";
+           action: STATE_SET "callerid_on" 0.0;
+           target: "elm.swallow.callerid";
+           target: "elm.text";
+        }
+        program { name: "go_callerid_off";
+           signal: "elm,state,callerid,disabled";
+           source: "elm";
+           action: STATE_SET "default" 0.0;
+           target: "elm.swallow.callerid";
+           target: "elm.text";
+        }
+        program { name: "go_textstatus_on";
+           signal: "elm,state,text,status,enabled";
+           source: "elm";
+           action: STATE_SET "default" 0.0;
+           target: "elm.text.time";
+           target: "elm.text.status";
+            after: "go_contentstatus_off";
+        }
+        program { name: "go_textstatus_off";
+           signal: "elm,state,text,status,disbled";
+           source: "elm";
+           action: STATE_SET "disabled" 0.0;
+           target: "elm.text.time";
+           target: "elm.text.status";
+        }
+        program { name: "go_contentstatus_on";
+           signal: "elm,state,content,status,enabled";
+           source: "elm";
+           action: STATE_SET "enabled" 0.0;
+           target: "elm.swallow.icon1";
+            after: "go_textstatus_off";
+        }
+        program { name: "go_contentstatus_off";
+           signal: "elm,state,content,status,disabled";
+           source: "elm";
+           action: STATE_SET "default" 0.0;
+               target: "elm.swallow.icon1";
+               }
+       }
+}
diff --git a/common/data/msg_button.edc b/common/data/msg_button.edc
new file mode 100755 (executable)
index 0000000..b3714a6
--- /dev/null
@@ -0,0 +1,1370 @@
+#define BUTTON_STATE_ENABLED 0
+#define BUTTON_STATE_DISABLED 1
+
+#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 5 5 5 5
+#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 23 10
+#define BUTTON_TEXT_STYLE1_RIGHT_BOTTOM_PADDING_MIN_INC 23 10
+#define BUTTON_TEXT_STYLE1_BG_MIN_INC 108 74
+
+#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 108 74
+#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 62 54
+#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 0 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 62 54
+#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 62 54
+
+//text
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 32
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 48 49 50 255
+
+///////////////////////////////////////////////////////////////////////////////////////
+#define BUTTON_SEND_BG_NORMAL  "00_button_04_normal.png"
+#define BUTTON_SEND_BG_PRESS  "00_button_04_press.png"
+#define BUTTON_SEND_BG_DIM  "00_button_04_dim.png"
+#define BUTTON_SEND_BG_FOCUS  "00_button_04_normal_focus.png"
+
+   group { name: "elm/button/base/sendbutton";
+      images {
+         image: BUTTON_SEND_BG_NORMAL COMP;
+         image: BUTTON_SEND_BG_PRESS COMP;
+         image: BUTTON_SEND_BG_DIM COMP;
+         image: BUTTON_SEND_BG_FOCUS COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               image {
+                  normal: BUTTON_SEND_BG_NORMAL;
+                  border: BUTTON_TEXT_STYLE1_BG_BORDER_INC;
+                  border_scale: 1;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: BUTTON_SEND_BG_PRESS;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image.normal: BUTTON_SEND_BG_DIM;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               image.normal: BUTTON_SEND_BG_FOCUS;
+            }
+         }
+         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: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_BG_MIN_INC;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC;
+            }
+         }
+         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: BUTTON_TEXT_STYLE1_RIGHT_BOTTOM_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            description { state: "visible" 0.0;
+               visible: 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            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: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2.to: "icon_rect";
+               fixed: 1 0;
+               min: 0 0;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2.to: "icon_rect";
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+            }
+            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: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               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";
+               }
+            }
+            description { state: "icononly" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_after_icon";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+               text {
+                  font: "SLP:style=Medium";
+                  size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  text_class: "slp_medium";
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 128;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+               visible: 1;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "touch_snd";
+            signal: "mouse,clicked,1";
+            source: "over2";
+           // action: PLAY_SAMPLE "touch_sound" 1.0;
+            after: button_unclick3;
+         }
+         program { name: "button_unclick3";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+            }
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_after_icon";
+            target: "icon_rect";
+            target: "bg";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled", 0.0);
+               set_int(button_state, BUTTON_STATE_DISABLED);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "default", 0.0);
+               set_int(button_state, BUTTON_STATE_ENABLED);
+            }
+         }
+         program { name: "focused";
+            //signal: "elm,action,focus";
+            //source: "elm";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            //signal: "elm,action,unfocus";
+            //source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////
+#define BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC 64 64
+#define BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC 64 64
+
+#define BUTTON_CIRCLE_BG_NORMAL  "00_btn_circle_bg_normal.png"
+#define BUTTON_CIRCLE_BG_PRESS  "00_btn_circle_bg_press.png"
+
+#define BUTTON_CIRCLE_STYLES(style_name, image_normal, image_press, min_width, min_height) \
+   group { name: "elm/button/base/circle/"style_name; \
+      images { \
+         image: BUTTON_CIRCLE_BG_NORMAL COMP; \
+         image: BUTTON_CIRCLE_BG_PRESS COMP; \
+         image: image_normal COMP; \
+         image: image_press COMP; \
+      } \
+      parts { \
+         part { name: "button_image"; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC; \
+               max: BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC; \
+               image.normal: BUTTON_CIRCLE_BG_NORMAL; \
+               color: 255 255 255 255; \
+            } \
+            description { \
+               state: "clicked" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: BUTTON_CIRCLE_BG_PRESS; \
+            } \
+            description { \
+               state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: 255 255 255 128; \
+            } \
+         } \
+         part { name: "button_center_part"; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC; \
+               max: BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC; \
+               image.normal: image_normal; \
+               color: 255 255 255 255; \
+            } \
+            description { \
+               state: "clicked" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: image_press; \
+            } \
+            description { \
+               state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: 255 255 255 128; \
+            } \
+         } \
+         part { name: "over1"; \
+            type: RECT; \
+            ignore_flags: ON_HOLD; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+               min: min_width min_height; \
+            } \
+         } \
+         part { name: "over2"; \
+            type: RECT; \
+            repeat_events: 1; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "disabler"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+      } \
+      programs { \
+         program { name: "button_click"; \
+            signal: "mouse,down,1"; \
+            source: "over1"; \
+            action: SIGNAL_EMIT "elm,action,press" ""; \
+            after: "button_click_anim"; \
+         } \
+         program { name: "button_click_anim"; \
+            action: STATE_SET "clicked" 0.0; \
+            target: "button_image"; \
+            target: "button_center_part"; \
+         } \
+         program { name: "button_unclick"; \
+            signal: "mouse,up,1"; \
+            source: "over2"; \
+            action: SIGNAL_EMIT "elm,action,unpress" ""; \
+            after: "button_unclick_anim"; \
+         } \
+         program { name: "button_unclick_anim"; \
+            action: STATE_SET "default" 0.0; \
+            target: "button_image"; \
+            target: "button_center_part"; \
+         } \
+         program { name: "touch_snd"; \
+            signal: "mouse,clicked,1"; \
+            source: "over1"; \
+            after: button_unclick3; \
+         } \
+         program { name: "button_unclick3"; \
+            action: SIGNAL_EMIT "elm,action,click" ""; \
+         } \
+         program { name: "disable"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "disabler"; \
+            target: "button_image"; \
+            target: "button_center_part"; \
+         } \
+         program { name: "enable"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "disabler"; \
+            target: "button_image"; \
+            target: "button_center_part"; \
+         } \
+      } \
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////
+BUTTON_CIRCLE_STYLES("add_plus", "M01_btn_add_plus.png", "M01_btn_add_plus.png", 64, 64);
+///////////////////////////////////////////////////////////////////////////////////////
+
+#define CONTACT_BUTTON_CIRCLE_BG_PRESS  "00_btn_circle_bg_press.png"
+#define CONTACT_BUTTON_CIRCLE_BG_NORMAL  "00_contacts_circle_bg.png"
+
+#define CONTACT_BUTTON_CIRCLE_STYLES(style_name, image_normal, image_press, min_width, min_height) \
+   group { name: "elm/button/base/circle/"style_name; \
+      images { \
+         image: CONTACT_BUTTON_CIRCLE_BG_NORMAL COMP; \
+         image: CONTACT_BUTTON_CIRCLE_BG_PRESS COMP; \
+         image: image_normal COMP; \
+         image: image_press COMP; \
+      } \
+      parts { \
+         part { name: "button_image"; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC; \
+               max: BUTTON_CIRCLE_STYLE_BG_MIN_MAX_INC; \
+               image.normal: CONTACT_BUTTON_CIRCLE_BG_NORMAL; \
+               color: 255 255 255 255; \
+            } \
+            description { \
+               state: "clicked" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: CONTACT_BUTTON_CIRCLE_BG_PRESS; \
+            } \
+            description { \
+               state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: 255 255 255 128; \
+            } \
+         } \
+         part { name: "button_center_part"; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC; \
+               max: BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC; \
+               image.normal: image_normal; \
+               color: 255 255 255 255; \
+            } \
+            description { \
+               state: "clicked" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: image_press; \
+            } \
+            description { \
+               state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: 255 255 255 128; \
+            } \
+         } \
+         part { name: "over1"; \
+            type: RECT; \
+            ignore_flags: ON_HOLD; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+               min: min_width min_height; \
+            } \
+         } \
+         part { name: "over2"; \
+            type: RECT; \
+            repeat_events: 1; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "disabler"; \
+            type: RECT; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+               visible: 0; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+            } \
+         } \
+      } \
+      programs { \
+         program { name: "button_click"; \
+            signal: "mouse,down,1"; \
+            source: "over1"; \
+            action: SIGNAL_EMIT "elm,action,press" ""; \
+            after: "button_click_anim"; \
+         } \
+         program { name: "button_click_anim"; \
+            action: STATE_SET "clicked" 0.0; \
+            target: "button_image"; \
+            target: "button_center_part"; \
+         } \
+         program { name: "button_unclick"; \
+            signal: "mouse,up,1"; \
+            source: "over2"; \
+            action: SIGNAL_EMIT "elm,action,unpress" ""; \
+            after: "button_unclick_anim"; \
+         } \
+         program { name: "button_unclick_anim"; \
+            action: STATE_SET "default" 0.0; \
+            target: "button_image"; \
+            target: "button_center_part"; \
+         } \
+         program { name: "touch_snd"; \
+            signal: "mouse,clicked,1"; \
+            source: "over1"; \
+            after: button_unclick3; \
+         } \
+         program { name: "button_unclick3"; \
+            action: SIGNAL_EMIT "elm,action,click" ""; \
+         } \
+         program { name: "disable"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "disabler"; \
+            target: "button_image"; \
+            target: "button_center_part"; \
+         } \
+         program { name: "enable"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "disabler"; \
+            target: "button_image"; \
+            target: "button_center_part"; \
+         } \
+      } \
+   }
+
+///////////////////////////////////////////////////////////////////////////////////////
+CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_button_contact.png", 64, 64);
+///////////////////////////////////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+//contac button
+///////////////////////////////////////////////////////////////////////////////////////
+#define BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC 68 68
+#define BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC 68 68
+
+  group { name: "elm/button/base/msg/contact_btn";
+      parts {
+         part { name: "button_image";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC;
+               max: BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "elm.icon.clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1.to: "button_image";
+               rel2.to: "button_image";
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC;
+               max: BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "elm.icon.clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               //color: 101 101 101 255;
+               color: 201 201 201 255;
+            }
+            description { state: "clicked" 0.0;
+               color: 64 147 247 255;
+            }
+            description { state: "disabled" 0.0;
+               color: 101 101 101 102;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            target: "elm.icon.clipper";
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            action: STATE_SET "default" 0.0;
+            target: "elm.icon.clipper";
+            after: button_unpress;
+         }
+         program { name: "touch_snd";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            //action: PLAY_SAMPLE "touch_sound" 1.0;
+            after: button_unclick3;
+         }
+         program { name: "button_unclick3";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            target: "elm.icon.clipper";
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "elm.icon.clipper";
+            target: "disabler";
+         }
+      }
+   }
+
+
+///////////////////////////////////////////////////////////////////
+// button for navi title
+///////////////////////////////////////////////////
+   group { name: "elm/button/base/title_button";
+      images {
+         image: "00_button.png" COMP;
+         image: "00_button_press.png" COMP;
+        image: "00_button_dim.png" COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               image {
+                 normal: "00_button.png";
+                  border: 12 12 12 12;
+                  border_scale: 1;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal:  "00_button_press.png";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "00_button_dim.png";
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               image.normal:  "00_button.png";
+            }
+         }
+         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: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_BG_MIN_INC;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC;
+            }
+         }
+         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: BUTTON_TEXT_STYLE1_RIGHT_BOTTOM_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            description { state: "visible" 0.0;
+               visible: 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+            }
+            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: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2.to: "icon_rect";
+               fixed: 1 0;
+               min: 0 0;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               visible: 0;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "icon_rect";
+               }
+               rel2.to: "icon_rect";
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+            }
+            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: 1.0 0.5;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to_x: "elm.text";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to_x: "elm.text";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to: "padding_left_top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  to_x: "padding_left_top";
+                  to_y: "padding_right_bottom";
+               }
+               fixed: 1 0;
+            }
+            description { state: "visible" 0.0;
+               fixed: 1 0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               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";
+               }
+            }
+            description { state: "icononly" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  to_x: "padding_after_icon";
+                  to_y: "padding_left_top";
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  to: "padding_right_bottom";
+               }
+               align: 0.0 0.5;
+               color: 59 115 182 255;
+               text {
+                  font: "SLP:style=Medium";
+                  size: 52;
+                  min: 0 0;
+                  max: 1 0;
+                  text_class: "slp_medium";
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 248 246 239 255;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 0 0 0 128;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+               visible: 1;
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            after: "text_clicked";
+         }
+         program { name: "text_clicked";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "clicked", 0.0);
+            }
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (strcmp(st, "icononly"))
+                 {
+                    emit("elm,action,default,text,set", "");
+                    set_state(PART:"elm.text", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"button_image", "default", 0.0);
+            }
+            after: button_unpress;
+         }
+         program { name: "touch_snd";
+            signal: "mouse,clicked,1";
+            source: "over2";
+           // action: PLAY_SAMPLE "touch_sound" 1.0;
+            after: button_unclick3;
+         }
+         program { name: "button_unclick3";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "icononly"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               if (get_int(button_state) != BUTTON_STATE_DISABLED)
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+            }
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.swallow.content", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+               set_state(PART:"elm.text", "default", 0.0);
+            }
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 {
+                    set_state(PART:"elm.swallow.content", "visible", 0.0);
+                    set_state(PART:"icon_rect", "visible", 0.0);
+                    set_state(PART:"padding_after_icon", "visible", 0.0);
+                    set_state(PART:"bg", "visible", 0.0);
+                 }
+               else
+                 {
+                    set_state(PART:"elm.swallow.content", "icononly", 0.0);
+                    set_state(PART:"icon_rect", "icononly", 0.0);
+                    set_state(PART:"padding_after_icon", "icononly", 0.0);
+                    set_state(PART:"bg", "icononly", 0.0);
+                 }
+            }
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+            target: "padding_after_icon";
+            target: "icon_rect";
+            target: "bg";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "disable_text";
+         }
+         program { name: "disable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "visible"))
+                 set_state(PART:"elm.text", "disabled_visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "disabled", 0.0);
+               set_int(button_state, BUTTON_STATE_DISABLED);
+            }
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "disabler";
+            after: "enable_text";
+         }
+         program { name: "enable_text";
+            script {
+               new st[31];
+               new Float:vl;
+               get_state(PART:"elm.text", st, 30, vl);
+               if (!strcmp(st, "disabled_visible"))
+                 set_state(PART:"elm.text", "visible", 0.0);
+               else
+                 set_state(PART:"elm.text", "default", 0.0);
+               set_int(button_state, BUTTON_STATE_ENABLED);
+            }
+         }
+         program { name: "focused";
+            //signal: "elm,action,focus";
+            //source: "elm";
+            action: STATE_SET "focused" 0.0;
+            target: "button_image";
+            target: "elm.text";
+         }
+         program { name: "unfocused";
+            //signal: "elm,action,unfocus";
+            //source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            after: "unfocus_text";
+         }
+         program { name: "unfocus_text";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+      }
+   }
+
diff --git a/common/data/msg_common.edc b/common/data/msg_common.edc
new file mode 100755 (executable)
index 0000000..1b5967d
--- /dev/null
@@ -0,0 +1,489 @@
+collections {
+       group {
+               name: "title";
+               images {
+                       image: "nf_title_separator.png" COMP;
+                       image: "optionheader_arrow.png" COMP;
+                       image: "M01_popup_bubble_tail_top.png" COMP;
+               }
+               script {
+                       public more_show = 0;
+                       public title_show = 0;
+               }
+               parts {
+                       part {
+                               name: "padding_top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 32;
+                                       align: 0.5 0;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "padding_bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 0;
+                                       align: 0.5 1;
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "more_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 1 1;
+                                       align: 0 0.5;
+                                       rel1 { relative: 0.0 1.0; to: "padding_top";}
+                                       rel2 { relative: 0.0 0.0; to_x: "padding_bottom"; to_y: "padding_bottom";}
+                               }
+                       }
+                       part {
+                               name: "more_separator";
+                               type: IMAGE;
+                               scale: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 0 68;
+                                       max: 0 68;
+                                       align: 0 0.5;
+                                       rel1.to: "more_btn";
+                                       rel2.to: "more_btn";
+                                       rel1.relative: 1 0;
+                                       rel2.relative: 1 1;
+                                       image.normal: "nf_title_separator.png";
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default";
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "padding1";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 16 0;
+                                       align: 0 0.5;
+                                       rel1.to: "more_separator";
+                                       rel2.to: "more_separator";
+                                       rel1.relative: 1 0;
+                                       rel2.relative: 1 1;
+                                       color: 255 255 255 0;
+                                       visible: 1;
+                               }
+                       }
+
+                       part {
+                               name: "title_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 68;
+                                       align: 0 0.5;
+                                       rel1 { relative: 0.0 1.0; to_x: "padding1"; to_y: "padding_top";}
+                                       rel2 { relative: 0.0 0.0; to_x: "padding2"; to_y: "padding_bottom";}
+                               }
+                       }
+                       part {
+                               name: "title_text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       text {
+                                               font: "Tizen:style=Medium";
+                                               text_class: "tizen";
+                                               size: 56;
+                                               min: 0 0;
+                                               max: 1 0;
+                                               align: 0.5 0.5;
+                                       }
+                                       color: 59 115 182 255;
+                                       align: 0.0 0.5;
+                                       min: 0 68;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 1.0; to_x: "padding1"; to_y: "padding_top";}
+                                       rel2 { relative: 0.0 0.0; to_x: "padding2"; to_y: "padding_bottom";}
+                               }
+                       }
+                       part {
+                               name: "padding2";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 5 0;
+                                       align: 1.0 0.5;
+                                       rel1.to: "compose_separator";
+                                       rel2.to: "compose_separator";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "compose_separator";
+                               type: SWALLOW;
+                               scale: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 18 68;
+                                       max: 18 68;
+                                       align: 1 0.5;
+                                       rel1.to: "compose_btn";
+                                       rel2.to: "compose_btn";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default";
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "compose_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 1 1;
+                                       align: 1 0.0;
+                                       rel1.to_x: "prev_separator";
+                                       rel2.to_x: "prev_separator";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 0;
+                               }
+                       }
+                       part {
+                               name: "prev_separator";
+                               type: SWALLOW;
+                               scale: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 0 68;
+                                       max: 0 68;
+                                       align: 1.0 0.5;
+                                       rel1.to: "prev_btn";
+                                       rel2.to: "prev_btn";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default";
+                                       visible: 1;
+                               }
+                       }
+                       part {
+                               name: "prev_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 68 68;
+                                       align: 1 0.5;
+                                       rel1 { relative: 0.0 1.0; to_x: "title_right_padding"; to_y: "padding_top";}
+                                       rel2 { relative: 0.0 0.0; to_x: "title_right_padding"; to_y: "padding_bottom";}
+                               }
+                       }
+                       part {
+                               name: "title_right_padding";
+                               type: SWALLOW;
+                               scale: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 18 68;
+                                       max: 18 68;
+                                       align: 1 0.5;
+                                       rel1.relative: 1 0;
+                                       rel2.relative: 1 1;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "titlebtn_arrow";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 28 24;
+                                       max: 28 24;
+                                       fixed: 1 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.89; to_x: "title_btn"; }
+                                       rel2 { relative: 1.0 0.89; to_x: "title_btn"; }
+                                       image.normal: "optionheader_arrow.png";
+                                       color: 255 255 255 0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "show_multi" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 26 21;
+                                       max: 26 21;
+                                       image.normal: "M01_popup_bubble_tail_top.png";
+                                       color: 255 255 255 255;
+                               }
+                       }
+                       part {
+                               name: "morebtn_arrow";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 28 24;
+                                       max: 28 24;
+                                       fixed: 1 1;
+                                       align: 0.5 0.0;
+                                       rel1 { relative: 0.0 0.89; to_x: "more_btn"; }
+                                       rel2 { relative: 1.0 0.89; to_x: "more_btn"; }
+                                       image.normal: "optionheader_arrow.png";
+                                       color: 255 255 255 0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 255 255 255 255;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "title_show";
+                               signal: "elm,state,title,show";
+                               source: "";
+                               script {
+                                       set_int(title_show, 1);
+                                       set_state(PART:"titlebtn_arrow", "show", 0.0);
+                               }
+                       }
+                       program {
+                               name: "title_show_multi";
+                               signal: "elm,state,title,show,multi";
+                               source: "";
+                               script {
+                                       set_int(title_show, 1);
+                                       set_state(PART:"titlebtn_arrow", "show_multi", 0.0);
+                               }
+                       }
+                       program {
+                               name: "title_hide";
+                               signal: "elm,state,title,hide";
+                               source: "";
+                               script {
+                                       set_int(title_show, 0);
+                                       set_state(PART:"titlebtn_arrow", "default", 0.0);
+                               }
+                       }
+                       program {
+                               name: "more_btn_show";
+                               signal: "elm,state,more_btn,show";
+                               source: "";
+                               action: STATE_SET "visible" 0.0;
+                               target: "more_separator";
+                       }
+                       program {
+                               name: "more_btn_hide";
+                               signal: "elm,state,more_btn,hide";
+                               source: "";
+                               action: STATE_SET "default" 0.0;
+                               target: "more_separator";
+                       }
+                       program {
+                               name: "compose_btn_show";
+                               signal: "elm,state,compose_btn,show";
+                               source: "";
+                               action: STATE_SET "visible" 0.0;
+                               target: "compose_separator";
+                       }
+                       program {
+                               name: "compose_btn_hide";
+                               signal: "elm,state,compose_btn,hide";
+                               source: "";
+                               action: STATE_SET "default" 0.0;
+                               target: "compose_separator";
+                       }
+
+                       program {
+                               name: "prev_btn_show";
+                               signal: "elm,state,prev_btn,show";
+                               source: "";
+                               action: STATE_SET "visible" 0.0;
+                               target: "prev_separator";
+                       }
+                       program {
+                               name: "prev_btn_hide";
+                               signal: "elm,state,prev_btn,hide";
+                               source: "";
+                               action: STATE_SET "default" 0.0;
+                               target: "prev_separator";
+                       }
+                       program {
+                               name: "more_show";
+                               signal: "elm,state,more,show";
+                               source: "";
+                               script {
+                                       set_int(more_show, 1);
+                                       set_state(PART:"morebtn_arrow", "show", 0.0);
+                               }
+                       }
+                       program {
+                               name: "more_hide";
+                               signal: "elm,state,more,hide";
+                               source: "";
+                               script {
+                                       set_int(more_show, 0);
+                                       set_state(PART:"morebtn_arrow", "default", 0.0);
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "popup_with_checkbox";
+               parts{
+                       part {
+                               name: "pad_left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min : 36 0;
+                                       fixed: 1 0;
+                                       align: 0.0 0.0;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "pad_right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min : 16 0;
+                                       fixed: 1 0;
+                                       align: 1.0 0.0;
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "pad_top";
+                               type: RECT;
+                               scale : 1;
+                               mouse_events: 0;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.0;
+                                       min: 0 20;
+                                       fixed: 0 1;
+                                       rel1 { relative: 1.0 0.0; to_x: "pad_left"; }
+                                       rel2 { relative: 0.0 0.0; to_x: "pad_right"; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "pad_bottom";
+                               type: RECT;
+                               scale : 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 1.0;
+                                       min: 0 66;
+                                       fixed: 0 1;
+                                       rel1 { relative: 1.0 1.0; to_x: "pad_left"; }
+                                       rel2 { relative: 0.0 1.0; to_x: "pad_right"; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name:"elm.swallow.content";
+                               type: SWALLOW;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 574 0;
+                                       align: 0.5 0.5;
+                                       fixed: 1 0;
+                                       rel1 { relative: 0.5 1.0;       to: "pad_top"; }
+                                       rel2 { relative: 0.5 0.0;       to: "pad_bottom"; }
+                               }
+                       }
+                       part {
+                               name: "elm.text";
+                               type: TEXT;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       text {
+                                               font: "SLP:style=Medium";
+                                               size: 24;
+                                               min: 0 0;
+                                               align: 0 0.5;
+                                       }
+                                       color: 0 0 0 255;
+                                       align: 0 0.5;
+                                       rel1 { relative: 0.11 0.5; to: "pad_bottom"; }
+                                       rel2 { relative: 1.0 1.0; to: "pad_bottom"; }
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.check";
+                               type: SWALLOW;
+                               scale : 1;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 0.5;
+                                       rel1 { relative: 0.0 0.0; to: "elm.text"; }
+                                       rel2 { relative: 0.0 1.0; to: "elm.text"; }
+                               }
+                       }
+               }
+       }
+}
+
+
diff --git a/common/data/msg_custom_winset.edc b/common/data/msg_custom_winset.edc
new file mode 100755 (executable)
index 0000000..ddb4018
--- /dev/null
@@ -0,0 +1,6 @@
+collections
+{
+#include "msg_button.edc"
+#include "msg_genlist.edc"
+#include "msg_bubble_entry.edc"
+}
diff --git a/common/data/msg_genlist.edc b/common/data/msg_genlist.edc
new file mode 100755 (executable)
index 0000000..f41e481
--- /dev/null
@@ -0,0 +1,574 @@
+#define GENLIST_PART_DISCLIP \
+part { name: "disclip"; \
+       type: RECT; \
+       description { state: "default" 0.0; \
+       } \
+       description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: 255 255 255 110; \
+       } \
+}
+
+#define GENLIST_PART_FLIP \
+part { name: "elm.flip.icon"; \
+       clip_to: "disclip"; \
+       type: SWALLOW; \
+       scale: 1; \
+       description { state: "default" 0.0; \
+               visible: 0; \
+               fixed: 1 1; \
+               align: 1 0; \
+               min: 80 0; \
+               rel1 { \
+                       relative: 0.0  0.0; \
+                       to_x: "elm.padding.right"; \
+               } \
+               rel2 { \
+                       relative: 0.0  1.0; \
+                       to_x: "elm.padding.right"; \
+               } \
+       } \
+       description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+       } \
+} \
+part { name: "elm.flip.content"; \
+       clip_to: "disclip"; \
+       type: SWALLOW; \
+       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.flip.icon"; \
+               } \
+       } \
+       description { state: "flip_enabled" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+       } \
+}
+
+
+#define GENLIST_PROGRAM_FLIP_2TEXT_1ICON \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text.1"; \
+            target: "elm.text.2"; \
+            target: "elm.icon"; \
+            target: "elm.flip.content"; \
+         }
+
+#define GENLIST_PROGRAM_FLIP_1TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         }
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+group {
+       name: "elm/genlist/item/1text.custom/default";
+       alias: "elm/genlist/item_odd/1text.custom/default";
+       alias: "elm/genlist/item_compress/1text.custom/default";
+       alias: "elm/genlist/item_compress_odd/itext.custom/default";
+       data.item: "stacking" "above";
+       data.item: "selectraise" "on";
+       data.item: "flips" "elm.flip.icon elm.flip.content";
+       data.item: "treesize" 26;
+       data.item: "texts" "elm.text";
+       data.item: "contents" "elm.icon.edit";
+
+       parts {
+               part {
+                       name: "base";
+                       type: RECT;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 112;
+                               color: 0 0 0 0; // 2nd depth color
+                               //color: 153 176 195 255; // 2nd depth color
+                       }
+               }
+
+               part {
+                       name: "bg_image";
+                       type: RECT;
+                       clip_to: "disclip";
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                               //color: 153 176 195 255;
+                       }
+                       description {
+                               state: "selected" 0.0;
+                               color: 42 137 194 255;
+                       }
+               }
+
+               part {
+                       name: "bottom_line";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               visible: 1;
+                               color: 169 169 169 255;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       offset: 0 -1;
+                               }
+                       }
+               }
+               part {
+                       name: "elm.padding.top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 16;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel2.relative: 1.0 0.0;
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1.relative: 0.0 1.0;
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 16 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel2.relative: 0.0 1.0;
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0; //16 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel1.relative: 1.0 0.0;
+                               align: 1.0 0.0;
+                       }
+               }
+
+               part {
+                       name: "elm.text";
+                       clip_to: "disclip";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 61;
+                               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: 0 0 0 255;
+                               text {
+                                       font: "SLP:style=Roman";
+                                       size: 44;
+                                       min: 0 1;
+                                       align: 0.0 0.5;
+                                       text_class: "list_item";
+                               }
+                       }
+                       description {
+                               state: "selected" 0.0;
+                               inherit: "default" 0.0;
+                               color: 249 249 249 255;
+                       }
+                       description {
+                               state: "flip_enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               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";
+                       action: STATE_SET "selected" 0.0;
+                       target: "bg_image";
+                       target: "elm.text";
+               }
+               program {
+                       name: "go_passive";
+                       signal: "elm,state,unselected";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "bg_image";
+                       target: "elm.text";
+                       transition: LINEAR 0.1;
+               }
+               program {
+                       name: "go_disabled";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       action: STATE_SET "disabled" 0.0;
+                       target: "disclip";
+               }
+               program { name: "go_enabled";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "disclip";
+               }
+               GENLIST_PROGRAM_FLIP_1TEXT
+       }
+}
+group {
+       name: "elm/genlist/item/2text.1icon.2.custom/default";
+       alias: "elm/genlist/item_odd/2text.1icon.2.custom/default";
+       alias: "elm/genlist/item_compress/2text.1icon.2.custom/default";
+       alias: "elm/genlist/item_compress_odd/2text.1icon.2.custom/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 {
+               part {
+                       name: "base";
+                       type: RECT;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 129;
+                               color: 0 0 0 0; // 2nd depth color
+                               //color: 153 176 195 255; // 2nd depth color
+                       }
+               }
+
+               part {
+                       name: "bg_image";
+                       type: RECT;
+                       clip_to: "disclip";
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                               //color: 153 176 195 255;
+                       }
+                       description {
+                               state: "selected" 0.0;
+                               color: 42 137 194 255;
+                       }
+               }
+
+               part {
+                       name: "bottom_line";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               visible: 1;
+                               color: 169 169 169 255;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       offset: 0 -1;
+                               }
+                       }
+               }
+               part {
+                       name: "elm.padding.top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel2.relative: 1.0 0.0;
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1.relative: 0.0 1.0;
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 16 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel2.relative: 0.0 1.0;
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0; //16 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel1.relative: 1.0 0.0;
+                               align: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.icon";
+                       clip_to: "disclip";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.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.5;
+                       }
+                       description {
+                               state: "flip_enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.padding.icon.left";
+                       clip_to: "disclip";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 16 0;
+                               fixed: 1 0;
+                               rel1.to_x: "elm.icon";
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to_x: "elm.icon";
+                               }
+                               align: 1.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.text.1";
+                       clip_to: "disclip";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 61;
+                               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.icon.left";
+                                       to_y: "elm.padding.top";
+                               }
+                               align: 0.0 0.0;
+                               color: 0 0 0 255;
+                               text {
+                                       font: "SLP:style=Roman";
+                                       size: 44;
+                                       min: 0 1;
+                                       align: 0.0 0.5;
+                                       text_class: "list_item";
+                               }
+                       }
+                       description {
+                               state: "selected" 0.0;
+                               inherit: "default" 0.0;
+                               color: 249 249 249 255;
+                       }
+                       description {
+                               state: "flip_enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               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.icon.left";
+                                       to_y: "elm.padding.bottom";
+                               }
+                               align: 0.0 0.0;
+                               color: 124 124 124 255;
+                               text {
+                                       font: "SLP:style=Medium";
+                                       size: 32;
+                                       min: 0 1;
+                                       align: 0.0 0.5;
+                                       text_class: "slp_medium";
+                               }
+                       }
+                       description {
+                               state: "selected" 0.0;
+                               inherit: "default" 0.0;
+                               color: 249 249 249 255;
+                       }
+                       description {
+                               state: "flip_enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "flip_enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               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";
+                       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";
+               }
+               GENLIST_PROGRAM_FLIP_2TEXT_1ICON
+       }
+}
+
+
diff --git a/common/data/msg_image_macro.edc b/common/data/msg_image_macro.edc
new file mode 100644 (file)
index 0000000..daf298e
--- /dev/null
@@ -0,0 +1,31 @@
+#define RESOURCE_IMAGE( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME COMP; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+#define RESOURCE_IMAGE_LOSSY( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME LOSSY 85; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
diff --git a/common/data/msg_images.edc b/common/data/msg_images.edc
new file mode 100755 (executable)
index 0000000..7a550e8
--- /dev/null
@@ -0,0 +1,61 @@
+#include "msg_image_macro.edc"
+
+collections {
+       RESOURCE_IMAGE("01_controllbar_icon_add_to_contact.png");
+       RESOURCE_IMAGE("01_header_icon_cancel.png");
+       RESOURCE_IMAGE("01_header_icon_done.png");
+       RESOURCE_IMAGE("60_myfiles_file_etc.png");
+       RESOURCE_IMAGE("attach_icon.png");
+       RESOURCE_IMAGE("M01_btn_delete.png");
+       RESOURCE_IMAGE("M01_btn_delete_press.png");
+       RESOURCE_IMAGE("M01_btn_message_send.png");
+       RESOURCE_IMAGE("M01_btn_message_send_dim.png");
+       RESOURCE_IMAGE("M01_btn_mms_message_send.png");
+       RESOURCE_IMAGE("M01_btn_mms_message_send_dim.png");
+       RESOURCE_IMAGE("M01_btn_scheduled_message_send.png");
+       RESOURCE_IMAGE("M01_btn_scheduled_message_send_dim.png");
+       RESOURCE_IMAGE("M01_icon_attach_voice.png");
+       RESOURCE_IMAGE("M01_icon_block.png");
+       RESOURCE_IMAGE("M01_icon_broadcasting.png");
+       RESOURCE_IMAGE("M01_icon_DRM_64x64.png");
+       RESOURCE_IMAGE("M01_icon_message_status_mms_read_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_mms_sent_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_mms_unread_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_sms_read_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_sms_sent_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_sms_unread_n.png");
+       RESOURCE_IMAGE("M01_icon_OTA.png");
+       RESOURCE_IMAGE("M01_icon_Push.png");
+       RESOURCE_IMAGE("M01_icon_save.png");
+       RESOURCE_IMAGE("M01_icon_unblock.png");
+       RESOURCE_IMAGE("M01_icon_video_call.png");
+       RESOURCE_IMAGE("M01_icon_view_contact.png");
+       RESOURCE_IMAGE("M01_icon_voice_call.png");
+       RESOURCE_IMAGE("M01_photo_btn_delete.png");
+       RESOURCE_IMAGE("M01_photo_btn_delete_press.png");
+       RESOURCE_IMAGE("myfile_icon_etc.png");
+       RESOURCE_IMAGE("myfile_icon_excel.png");
+       RESOURCE_IMAGE("myfile_icon_html.png");
+       RESOURCE_IMAGE("myfile_icon_images.png");
+       RESOURCE_IMAGE("myfile_icon_java.png");
+       RESOURCE_IMAGE("myfile_icon_music.png");
+       RESOURCE_IMAGE("myfile_icon_pdf.png");
+       RESOURCE_IMAGE("myfile_icon_ppt.png");
+       RESOURCE_IMAGE("myfile_icon_rss.png");
+       RESOURCE_IMAGE("myfile_icon_svg.png");
+       RESOURCE_IMAGE("myfile_icon_swf.png");
+       RESOURCE_IMAGE("myfile_icon_text.png");
+       RESOURCE_IMAGE("myfile_icon_video.png");
+       RESOURCE_IMAGE("myfile_icon_word.png");
+       RESOURCE_IMAGE("M01_icon_Unsupported.png");
+       RESOURCE_IMAGE("M01_icon_DRM.png");
+       RESOURCE_IMAGE("M01_title_icon_compose.png");
+       RESOURCE_IMAGE("M01_title_icon_search.png");
+       RESOURCE_IMAGE("M01_title_icon_search_dim.png");
+       RESOURCE_IMAGE("M01_title_icon_attach.png");
+       RESOURCE_IMAGE("M01_title_icon_attach_dim.png");
+       RESOURCE_IMAGE("M01_contact_default_image.png");
+       RESOURCE_IMAGE("00_icon_plus.png");
+       RESOURCE_IMAGE("00_slider_btn_volume01.png");
+       RESOURCE_IMAGE("00_slider_btn_volume02.png");
+}
diff --git a/common/msg-ui-bundle.h b/common/msg-ui-bundle.h
new file mode 100755 (executable)
index 0000000..20f5e86
--- /dev/null
@@ -0,0 +1,176 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_BUNDLE_H__
+#define __MSG_BUNDLE_H__
+
+
+ /* Bundle key name */
+#define MSG_BUNDLE_KEY_TYPE                            "type"
+#define MSG_BUNDLE_KEY_RUN_TYPE                        "RUN_TYPE"              /* type for email */
+#define MSG_BUNDLE_KEY_LAUNCH_TYPE             "launch-type"   /* type for call */
+
+#define MSG_BUNDLE_KEY_MSG_ID                  "msgId"
+#define MSG_BUNDLE_KEY_THREAD_ID               "threadId"
+#define MSG_BUNDLE_KEY_THREAD_NAME             "threadName"
+#define MSG_BUNDLE_KEY_THREAD_ADDRESS  "threadAddr"
+#define MSG_BUNDLE_KEY_CONTACT_ID              "contactId"
+
+#define MSG_BUNDLE_KEY_COMPOSER                        "composer"
+#define MSG_BUNDLE_KEY_TO                              "TO"
+#define MSG_BUNDLE_KEY_CC                              "CC"
+#define MSG_BUNDLE_KEY_BCC                             "BCC"
+#define MSG_BUNDLE_KEY_ATTACHFILE              "ATTACHFILE"
+#define MSG_BUNDLE_KEY_SUBJECT                 "SUBJECT"
+#define MSG_BUNDLE_KEY_BODY                    "BODY"
+#define MSG_BUNDLE_KEY_RECIPIENT               "recipient"
+#define MSG_BUNDLE_KEY_NUMBER_INDEX            "number/index"
+#define MSG_BUNDLE_KEY_INDEX           "index"
+#define MSG_BUNDLE_KEY_MESSAGE_BOX             "messagebox"
+#define MSG_BUNDLE_KEY_INDICATOR_MODE          "indicator_mode"
+
+#define MSG_BUNDLE_KEY_REQUEST_TYPE            "request_type"
+#define MSG_BUNDLE_KEY_FILE_TYPE               "file_type"
+#define MSG_BUNDLE_KEY_SELECT_TYPE             "select_type"
+#define MSG_BUNDLE_KEY_PREVIEW_DATA            "preview_data"
+
+#define MSG_BUNDLE_KEY_GET_SEL_LIST            "get_select_list"
+#define MSG_BUNDLE_KEY_NAMECARD_INDEX          "id"
+#define MSG_BUNDLE_KEY_COUNT           "count"
+#define MSG_BUNDLE_KEY_IMAGE           "image"
+#define MSG_BUNDLE_KEY_TEXT            "text"
+#define MSG_BUNDLE_KEY_PATH            "path"
+#define MSG_BUNDLE_KEY_MM_PATH         "PATH"
+
+#define MSG_BUNDLE_KEY_CALLER          "CALLER"
+#define MSG_BUNDLE_KEY_RESOLUTION      "RESOLUTION"
+#define MSG_BUNDLE_KEY_LIMIT           "LIMIT"
+#define MSG_BUNDLE_KEY_SIZE            "SIZE"
+#define MSG_BUNDLE_KEY_QUALITY         "QUALITY"
+
+#define MSG_BUNDLE_KEY_LAUNCH_APPLICATION      "launching_application"
+#define MSG_BUNDLE_KEY_VIEWER_MESSAGE  "msg_viewer_message"
+
+#define MSG_BUNDLE_KEY_RESULT                  "result"
+#define MSG_BUNDLE_KEY_MODE                            "mode"
+#define MSG_BUNDLE_KEY_DESTROY                 "destroy"
+#define MSG_BUNDLE_KEY_NUMBER                  "number"
+#define MSG_BUNDLE_KEY_MAX                             "max"
+#define MSG_BUNDLE_KEY_PWD_RESULT              "Result"
+#define MSG_BUNDLE_KEY_FROM                            "from"
+#define MSG_BUNDLE_KEY_LAYOUT                  "layout"
+
+#define MSG_BUNDLE_KEY_VCALL_TYPE              "KEY_CALL_TYPE"
+#define MSG_BUNDLE_KEY_VCALL_HANDLE            "KEY_CALL_HANDLE"
+#define MSG_BUNDLE_KEY_VCALL_PARTY_NUM "KEY_CALLING_PARTY_NUMBER"
+#define MSG_BUNDLE_KEY_VCALL_CLI_CAUSE "KEY_CLI_CAUSE"
+#define MSG_BUNDLE_KEY_VCALL_FORWARDED "KEY_FORWARDED"
+#define MSG_BUNDLE_KEY_DRMTYPE                 "drm_type"
+#define MSG_BUNDLE_KEY_SYSPOPUP_CONTENT "_SYSPOPUP_CONTENT_"
+
+/* contact bundle key */
+#define MSG_CT_UG_BUNDLE_TYPE "type"
+#define MSG_CT_UG_BUNDLE_MAX "ct_max"
+#define MSG_CT_UG_BUNDLE_EMAIL "ct_email"
+#define MSG_CT_UG_BUNDLE_NUM "ct_num"
+#define MSG_CT_UG_BUNDLE_ID "person_id"
+
+/* Bundle value name */
+#define MSG_BUNDLE_VALUE_COMPOSE               "compose"
+#define MSG_BUNDLE_VALUE_SMS_URI               "sms"
+#define MSG_BUNDLE_VALUE_MMSTO_URI             "mmsto"
+#define MSG_BUNDLE_VALUE_FILE_URI              "file"
+#define MSG_BUNDLE_VALUE_NEW_MSG               "new_msg"
+#define MSG_BUNDLE_VALUE_MSG_ID                        "msg_id"
+#define MSG_BUNDLE_VALUE_INTERNAL              "internal"
+#define MSG_BUNDLE_VALUE_EDIT                  "edit"
+#define MSG_BUNDLE_VALUE_FORWARD               "forward"
+#define MSG_BUNDLE_VALUE_RESEND                        "resend"
+#define MSG_BUNDLE_VALUE_REPLY                 "reply"
+#define MSG_BUNDLE_VALUE_DELETE_MSG            "delete_msg"
+#define MSG_BUNDLE_VALUE_REFRESH_CONV          "refresh_conv"
+#define MSG_BUNDLE_VALUE_NORMAL                        "normal"
+
+#define MSG_BUNDLE_VALUE_IMAGE                 "IMAGE"
+#define MSG_BUNDLE_VALUE_VIDEO                 "VIDEO"
+#define MSG_BUNDLE_VALUE_SOUND                 "SOUND"
+#define MSG_BUNDLE_VALUE_ALL                   "ALL"
+#define MSG_BUNDLE_VALUE_GALLERY_ALL   "all"
+#define MSG_BUNDLE_VALUE_MULTI_FILE            "MULTI_FILE"
+#define MSG_BUNDLE_VALUE_OTHERS                "OTHERS"
+#define MSG_BUNDLE_VALUE_FILE                  "file"
+#define MSG_BUNDLE_VALUE_SELECT                "select"
+#define MSG_BUNDLE_VALUE_SELECT_MULTIPLE       "select-multiple"
+
+#define MSG_BUNDLE_VALUE_GET                   "get"
+
+#define MSG_BUNDLE_VALUE_SEARCH_MODE                   "search_mode"
+#define MSG_BUNDLE_VALUE_NO_CONTENT                    "no_content"
+
+#define MSG_BUNDLE_VALUE_DEL_ALL               "del_all"
+#define MSG_BUNDLE_VALUE_FORWARDED             "forwarded"
+
+#define MSG_BUNDLE_VALUE_DESTROY               "destroy"
+#define MSG_BUNDLE_VALUE_ERROR                         "error"
+#define MSG_BUNDLE_VALUE_SENT                  "sent"
+#define MSG_BUNDLE_VALUE_RESET         "reset"
+#define MSG_BUNDLE_VALUE_FOCUS_IN      "focus_in"
+
+#define MSG_BUNDLE_VALUE_VGA           "VGA"
+#define MSG_BUNDLE_VALUE_QCIF          "QCIF"
+#define MSG_BUNDLE_VALUE_LOW           "LOW"
+#define MSG_BUNDLE_VALUE_CAM_LIMIT_SIZE                "295"   /* Limit size of camcoder in message composer */
+#define MSG_BUNDLE_VALUE_VR_LIMIT_SIZE         "300"   /* Limit size of voice recorder in message composer */
+
+#define MSG_BUNDLE_VALUE_PREVIEW_MODE  "preview_mode"
+#define MSG_BUNDLE_VALUE_CALENDAR_MAX  "3"
+
+#define MSG_BUNDLE_VALUE_EMAIL_COMPOSE "5"
+
+#define MSG_BUNDLE_VALUE_CALL_MO               "MO"    /* "MO" : normal call, "EMERGENCY" : emergency call */
+#define MSG_BUNDLE_VALUE_VCALL_MO              "mo"
+#define MSG_BUNDLE_VALUE_VCALL_HANDLE  "1"
+#define MSG_BUNDLE_VALUE_VCALL_FALSE           "-1"
+#define MSG_BUNDLE_VALUE_AUTO_REJECT_LIST      "1"
+#define MSG_BUNDLE_VALUE_CONTACT_CHECK_LIST    "46"
+
+#define MSG_BUNDLE_VALUE_DRM_WITHOUT_FL        "DRM_WITHOUT_FL"
+
+#define MSG_BUNDLE_VALUE_SPAM_SETTING  "spam_setting"
+
+#define MSG_BUNDLE_VALUE_MSGBOX_PROTECTED      "protected_msgbox"
+#define MSG_BUNDLE_VALUE_MSGBOX_SPAM   "spam_msgbox"
+
+#define MSG_BUNDLE_VALUE_INDICATOR             "indicator"
+#define MSG_BUNDLE_VALUE_NO_INDICATOR          "no_indicator"
+
+/* contact bundle value */
+#define MSG_CT_UG_REQUEST_DETAIL 0
+#define MSG_CT_UG_REQUEST_SELECT_CONTACT 11
+#define MSG_CT_UG_REQUEST_SELECT_NUMBER 12
+#define MSG_CT_UG_REQUEST_UPDATE_WITH_NUM 21
+#define MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL 22
+#define MSG_CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL 34
+
+
+/* contact result */
+#define MSG_CT_UG_BUNDLE_RESULT_NUMBER_ID "num_id"
+#define MSG_CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST "num_id_list"
+#define MSG_CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST "email_id_list"
+
+#endif /* __MSG_BUNDLE_H__ */
+
diff --git a/common/msg-ui-common-utility.c b/common/msg-ui-common-utility.c
new file mode 100755 (executable)
index 0000000..ce2e954
--- /dev/null
@@ -0,0 +1,1704 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/*=================
+ * INCLUDE HEADERS
+ * ================= */
+#include <msg-ui-util.h>
+#include <msg-ui-common-utility.h>
+#include <msg-ui-image-resource.h>
+#include <msg_storage.h>
+#include <elm_widget.h>
+
+/* for i18n */
+#include <unicode/uloc.h>
+#include <unicode/ucal.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ustring.h>
+
+#include <stdlib.h>
+#include <vconf-keys.h>
+#include <bundle.h>
+#include <syspopup_caller.h>
+#include <drm_client.h>
+
+static char *icon_array[MSG_APP_FILE_TYPE_MAX] = {
+       [MSG_APP_FILE_TYPE_IMAGE] = MSG_COMMON_FILE_IMAGE_ICON,
+       [MSG_APP_FILE_TYPE_VIDEO] = MSG_COMMON_FILE_VIDEO_ICON,
+       [MSG_APP_FILE_TYPE_MUSIC] = MSG_COMMON_FILE_MUSIC_ICON,
+       [MSG_APP_FILE_TYPE_SOUND] = MSG_COMMON_FILE_SOUND_ICON,
+       [MSG_APP_FILE_TYPE_PDF] = MSG_COMMON_FILE_PDF_ICON,
+       [MSG_APP_FILE_TYPE_DOC] = MSG_COMMON_FILE_DOC_ICON,
+       [MSG_APP_FILE_TYPE_PPT] = MSG_COMMON_FILE_PPT_ICON,
+       [MSG_APP_FILE_TYPE_EXCEL] = MSG_COMMON_FILE_EXCEL_ICON,
+       [MSG_APP_FILE_TYPE_VOICE] = MSG_COMMON_FILE_VOICE_ICON,
+       [MSG_APP_FILE_TYPE_HTML] = MSG_COMMON_FILE_HTML_ICON,
+       [MSG_APP_FILE_TYPE_FLASH] = MSG_COMMON_FILE_FLASH_ICON,
+       [MSG_APP_FILE_TYPE_TXT] = MSG_COMMON_FILE_TXT_ICON,
+       [MSG_APP_FILE_TYPE_VCONTACT] = MSG_COMMON_FILE_VCONTACT_ICON,
+       [MSG_APP_FILE_TYPE_VCALENDAR] = MSG_COMMON_FILE_VCALENDAR_ICON,
+       [MSG_APP_FILE_TYPE_VNOTE] = MSG_COMMON_FILE_VNOTE_ICON,
+       [MSG_APP_FILE_TYPE_RSS] = MSG_COMMON_FILE_RSS_ICON,
+       [MSG_APP_FILE_TYPE_JAVA] = MSG_COMMON_FILE_JAVA_ICON,
+       [MSG_APP_FILE_TYPE_ETC] = MSG_COMMON_FILE_ETC_ICON,
+};
+
+typedef struct {
+       int     status;
+       time_t time;
+} MSG_DETAIL_REPORT_STRUCT;
+
+typedef struct {
+       char address[MAX_ADDRESS_VAL_LEN+1];
+       MSG_DETAIL_REPORT_STRUCT delivery;
+       MSG_DETAIL_REPORT_STRUCT read;
+} MSG_DETAIL_REPORT_LIST_S;
+
+
+/*==========================
+ * FUNCTION IMPLEMENTATIONS
+ *========================== */
+const char *msg_common_get_default_locale()
+{
+       const char *locale;
+       UErrorCode status = U_ZERO_ERROR;
+       /* ICU API to set default locale */
+       uloc_setDefault(getenv("LC_TIME"), &status);
+       locale = uloc_getDefault();
+
+       return locale;
+}
+
+int msg_common_get_timeformat()
+{
+       int timeformat = 0;
+
+       if (vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224, &timeformat) < 0)
+               return MSG_TIME_FORMAT_UNKNOWN;
+
+       if (timeformat == VCONFKEY_TIME_FORMAT_12)
+               return MSG_TIME_FORMAT_12H;
+       else if (timeformat == VCONFKEY_TIME_FORMAT_24)
+               return MSG_TIME_FORMAT_24H;
+       else
+               return MSG_TIME_FORMAT_UNKNOWN;
+}
+
+char *msg_common_get_date_best_pattern(const char* locale, char* skeleton)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL");
+       D_MSG_RETVM_IF(skeleton == NULL, NULL, "skeleton is NULL");
+
+       UErrorCode status = U_ZERO_ERROR;
+       UDateTimePatternGenerator *generator = NULL;
+       UChar bestPattern[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,};
+       char bestPatternString[MSG_COMMON_MAX_CHAR_PATTERN_LEN + 1] = {0,};
+       int32_t bestPatternCapacity = 0;
+       int32_t bestPatternLength = 0;
+
+       UChar customSkeleton[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,};
+       int skeletonLength = 0;
+
+       skeletonLength = strlen(skeleton);
+       /* convert char to uchar */
+       if (skeletonLength <= MSG_COMMON_MAX_UCHAR_PATTERN_LEN)
+               u_uastrncpy(customSkeleton, skeleton, skeletonLength);
+       else
+               u_uastrncpy(customSkeleton, skeleton, MSG_COMMON_MAX_UCHAR_PATTERN_LEN);
+
+       generator = udatpg_open(locale, &status);
+       bestPatternCapacity = MSG_COMMON_MAX_UCHAR_PATTERN_LEN;
+
+       /* get bestpattern from customskeletom of uchar */
+       bestPatternLength = udatpg_getBestPattern(generator, customSkeleton, u_strlen(customSkeleton), bestPattern, bestPatternCapacity, &status);
+
+       /* convert uchar to char to know bestpatternstring */
+       u_austrcpy(bestPatternString, bestPattern);
+
+       udatpg_close(generator);
+
+       D_LEAVE;
+
+       return strdup(bestPatternString);
+}
+
+char *msg_common_get_formatted_date(const char* locale, char* bestPattern, void *time)
+{
+       D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL");
+       D_MSG_RETVM_IF(bestPattern == NULL, NULL, "bestPattern is NULL");
+
+       UErrorCode status = U_ZERO_ERROR;
+       UDate date;
+       UDateFormat *date_format = NULL;
+       UChar uBestPattern[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,};
+       UChar formatted[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,};
+       char formattedString[MSG_COMMON_MAX_CHAR_PATTERN_LEN + 1] = {0,};
+       int32_t formattedCapacity = 0;
+       int patternLength = 0, formattedLength = 0;
+
+       patternLength = strlen(bestPattern);
+       /* convert char to uchar */
+       if (patternLength <= MSG_COMMON_MAX_UCHAR_PATTERN_LEN)
+               u_uastrncpy(uBestPattern, bestPattern, patternLength);
+       else
+               u_uastrncpy(uBestPattern, bestPattern, MSG_COMMON_MAX_UCHAR_PATTERN_LEN);
+
+       /* convert time_t to UDate, if it is */
+       if (time) {
+               time_t msg_time = *(time_t *) time;
+               date = (UDate) msg_time * 1000; /* Equivalent to Date = ucal_getNow() in Milliseconds */
+       } else {
+               date = ucal_getNow();
+       }
+
+       date_format = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, uBestPattern, -1, &status);
+       formattedCapacity = MSG_COMMON_MAX_UCHAR_PATTERN_LEN;
+       /* get formatted string */
+       formattedLength = udat_format(date_format, date, formatted, formattedCapacity, NULL, &status);
+       /* convert uchar to char */
+       u_austrcpy(formattedString, formatted);
+
+       udat_close(date_format);
+
+       return strdup(formattedString);
+}
+
+char *msg_common_get_date_text(const char* locale, char* skeleton, void* time)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL");
+       D_MSG_RETVM_IF(skeleton == NULL, NULL, "skeleton is NULL");
+
+       UChar customSkeleton[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,};
+       int skeletonLength = 0;
+
+       skeletonLength = strlen(skeleton);
+       /* convert char to uchar */
+       if (skeletonLength <= MSG_COMMON_MAX_UCHAR_PATTERN_LEN)
+               u_uastrncpy(customSkeleton, skeleton, skeletonLength);
+       else
+               u_uastrncpy(customSkeleton, skeleton, MSG_COMMON_MAX_UCHAR_PATTERN_LEN);
+
+       UErrorCode status = U_ZERO_ERROR;
+       UDateTimePatternGenerator *generator = NULL;
+       UDateFormat *date_format = NULL;
+       UDate date;
+       UChar bestPattern[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,};
+       UChar formatted[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,};
+       char bestPatternString[MSG_COMMON_MAX_CHAR_PATTERN_LEN + 1] = {0,};
+       char formattedString[MSG_COMMON_MAX_CHAR_PATTERN_LEN + 1] = {0,};
+       int32_t bestPatternCapacity = 0;
+       int32_t bestPatternLength = 0;
+       int32_t formattedCapacity = 0;
+       int32_t formattedLength = 0;
+
+       generator = udatpg_open(locale, &status);
+       bestPatternCapacity = MSG_COMMON_MAX_UCHAR_PATTERN_LEN;
+
+       /* get bestpattern from customskeletom of uchar */
+       bestPatternLength = udatpg_getBestPattern(generator, customSkeleton, u_strlen(customSkeleton), bestPattern, bestPatternCapacity, &status);
+
+       /* convert uchar to char to know bestpatternstring */
+       u_austrcpy(bestPatternString, bestPattern);
+
+       /* convert time_t to UDate, if it is */
+       if (time) {
+               time_t msg_time = *(time_t *) time;
+               date = (UDate) msg_time * 1000; /* Equivalent to Date = ucal_getNow() in Milliseconds */
+       } else
+               date = ucal_getNow();
+
+       date_format = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, bestPattern, -1, &status);
+       formattedCapacity = MSG_COMMON_MAX_UCHAR_PATTERN_LEN;
+       /* get formatted string */
+       formattedLength = udat_format(date_format, date, formatted, formattedCapacity, NULL, &status);
+       /* convert uchar to char */
+       u_austrcpy(formattedString, formatted);
+
+       udatpg_close(generator);
+       udat_close(date_format);
+
+       return strdup(formattedString);
+}
+
+char *msg_common_get_display_date(const char* locale, char* bestPattern, char* yearPattern, time_t *msg_t)
+{
+       struct tm msg_time, cur_time;
+       time_t cur_t;
+       char msg_date_buf[DEF_BUF_LEN] = { '0', };
+       char *date_str = NULL;
+       int diffday = 0, msg_day = 0, cur_day = 0;
+
+       cur_t = (time_t) time(NULL);
+
+       localtime_r(msg_t, &msg_time);
+       localtime_r(&cur_t, &cur_time);
+
+       msg_day = (msg_time.tm_year - 1900) * 365 + msg_time.tm_yday + (msg_time.tm_year - 1900 - 1) / 4;
+       cur_day = (cur_time.tm_year - 1900) * 365 + cur_time.tm_yday + (cur_time.tm_year - 1900 - 1) / 4;
+
+       if (msg_time.tm_year - cur_time.tm_year != 0)
+               date_str = msg_common_get_formatted_date(locale, yearPattern, msg_t);
+       else
+               date_str = msg_common_get_formatted_date(locale, bestPattern, msg_t);
+
+       diffday = cur_day - msg_day;
+       if (diffday == 0)
+               snprintf(msg_date_buf, sizeof(msg_date_buf), "%s (%s)", dgettext("sys_string", "IDS_COM_BODY_TODAY"), date_str);
+       else if (diffday == 1)
+               snprintf(msg_date_buf, sizeof(msg_date_buf), "%s (%s)", dgettext("sys_string", "IDS_COM_BODY_YESTERDAY"), date_str);
+       else
+               strncpy(msg_date_buf, date_str, sizeof(msg_date_buf) - 1);
+
+       free(date_str);
+       return strdup(msg_date_buf);
+}
+
+static MSG_BOOL __msg_common_make_normal_markup_text(Eina_Strbuf *markup_text, Eina_Strbuf *font_style, const char *src, int strlen)
+{
+       D_MSG_RETVM_IF(markup_text == NULL, FALSE, "markup_text is NULL");
+       D_MSG_RETVM_IF(font_style == NULL, FALSE, "font_style is NULL");
+       D_MSG_RETVM_IF(src == NULL, FALSE, "src is NULL");
+
+       char *tmp_body_buf = NULL;
+       tmp_body_buf = (char *) calloc(strlen + 1, sizeof(char));
+       if (tmp_body_buf) {
+               strncpy(tmp_body_buf, src, strlen);
+       } else {
+               D_EMSG("calloc is failed");
+               return FALSE;
+       }
+
+       eina_strbuf_append_printf(markup_text, "%s%s%s", MSG_COMMON_TAG_TEXT, eina_strbuf_string_get(font_style), tmp_body_buf);
+       if (tmp_body_buf) {
+               free(tmp_body_buf);
+               tmp_body_buf = NULL;
+       }
+
+       return TRUE;
+}
+
+Eina_Strbuf *msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(src == NULL, NULL, "src is NULL");
+
+       const char *src_text = src;
+
+       if (src_text && strlen(src_text) > 0) {
+               Eina_Strbuf *markup_text = NULL;
+               Eina_Strbuf *font_buf = NULL;
+               char *token = NULL;
+               char *tmp_buf = NULL;
+               char *remained_string = NULL;
+               int src_text_len = 0;
+
+               src_text_len = strlen(src_text);
+               D_MSG("src_text_len : %d", src_text_len);
+               tmp_buf = (char *) calloc(src_text_len + 1, sizeof(char));
+               if (tmp_buf == NULL) {
+                       D_EMSG("tmp mem alloc is failed!");
+                       return NULL;
+               }
+
+               font_buf = eina_strbuf_new();
+               if (font_buf == NULL) {
+                       D_EMSG("font_buf eina_strbuf_new is failed!");
+                       if (tmp_buf) {
+                               free(tmp_buf);
+                               tmp_buf = NULL;
+                       }
+                       return NULL;
+               }
+
+               markup_text = eina_strbuf_new();
+               if (markup_text == NULL) {
+                       D_EMSG("markup_text eina_strbuf_new is failed!");
+                       if (tmp_buf) {
+                               free(tmp_buf);
+                               tmp_buf = NULL;
+                       }
+
+                       if (font_buf) {
+                               eina_strbuf_free(font_buf);
+                               font_buf = NULL;
+                       }
+                       return NULL;
+               }
+
+               /* make font style */
+               if (fontstyle)
+                       eina_strbuf_append_printf(font_buf, "<%s>", fontstyle);
+
+               if (fontcolor)
+                       eina_strbuf_append_printf(font_buf, "<color=%s>", fontcolor);
+               D_MSG("font_buf : (%s)", eina_strbuf_string_get(font_buf));
+
+               snprintf(tmp_buf, src_text_len + 1, "%s\n", (char *) src_text);
+
+               token = strtok_r(tmp_buf, "\n", &remained_string);
+
+               int token_len = 0;
+
+               while (token) {
+                       char *tmp_str = elm_entry_utf8_to_markup(token);
+
+                       if (!tmp_str) {
+                               D_EMSG("elm_entry_utf8_to_markup() is failed, [%s]. Stop parsing entry text", token);
+                               break;
+                       }
+
+                       token_len = strlen(tmp_str);
+
+                       if (tmp_str[token_len - 1] == 0x0D) { /* if Enter is added via Window system, CR+LF is added. */
+                               D_MSG("CR length is decreased");
+                               token_len = token_len - 1;
+                       }
+
+                       if (!__msg_common_make_normal_markup_text(markup_text, font_buf, tmp_str, token_len))
+                               D_MSG("__msg_common_make_normal_markup_text is failed");
+
+                       if (tmp_str)
+                               free(tmp_str);
+
+                       token = strtok_r(NULL, "\n", &remained_string);
+                       if (token)
+                               eina_strbuf_append(markup_text, "<br>");
+               }
+
+               if (tmp_buf) {
+                       free(tmp_buf);
+                       tmp_buf = NULL;
+               }
+
+               if (font_buf) {
+                       eina_strbuf_free(font_buf);
+                       font_buf = NULL;
+               }
+
+               return markup_text;
+       } else {
+               return NULL;
+       }
+}
+
+MSG_BOOL msg_common_is_valid_phone_number(const char *address)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(address == NULL, FALSE, "address is NULL");
+
+       int addr_len = 0;
+       addr_len = strlen(address);
+
+       if (addr_len == 0)
+               return FALSE;
+
+       /*  length check phone address should be longer than 2 and shorter than 40 */
+       if (addr_len > 2 && addr_len <= MSG_COMMON_NUMBER_MAX_LEN) {
+               const char *pszOneChar = address;
+
+               if (*pszOneChar == '+')
+                       ++pszOneChar;
+
+               while (*pszOneChar) {
+                       if (!isdigit(*pszOneChar) && (*pszOneChar != '*') && (*pszOneChar != '#'))
+                               return FALSE;
+
+                       ++pszOneChar;
+               }
+
+               return TRUE;
+       } else {
+               D_MSG("invalid address length [%d]", addr_len);
+               return FALSE;
+       }
+}
+
+MSG_BOOL msg_common_is_valid_email_addr(const char *address)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(address == NULL, FALSE, "address is NULL");
+
+       char *token1 = NULL;
+       char *token2 = NULL;
+
+       D_MSG("address = %s", address);
+
+       token1 = strchr(address, '@');
+       if (!token1) {
+               D_EMSG("address has no @");
+               return FALSE;
+       }
+
+       if (strchr(&token1[1], '@')) {
+               D_EMSG("address cannot have two more @");
+               return FALSE;
+       }
+
+       token2 = strchr(token1, '.');
+       if (!token2) {
+               D_EMSG("there's no . character");
+               return FALSE;
+       }
+
+       if ((token2 == token1 + 1) || (*(token2 + 1) == '\0')) {
+               D_EMSG("address type should be \'xxx.xxx\'");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_common_is_connected_call(void)
+{
+       int call_status = 0;
+
+       if (vconf_get_int(VCONFKEY_CALL_STATE, &call_status) < 0)
+               return FALSE;
+
+       D_MSG("call_status = %d", call_status);
+
+       if (call_status != VCONFKEY_CALL_OFF)
+               return TRUE;
+       else
+               return FALSE;
+}
+
+MSG_BOOL msg_common_is_sim_inserted(void)
+{
+       int sim_slot_status = 0;
+
+       if (vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &sim_slot_status) < 0)
+               return FALSE;
+
+       D_MSG("sim_slot_status = %d", sim_slot_status);
+
+       if (sim_slot_status == VCONFKEY_TELEPHONY_SIM_INSERTED)
+               return TRUE;
+       else
+               return FALSE;
+}
+
+MSG_BOOL msg_common_get_font_size(int *index)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(index == NULL, FALSE, "font_size is NULL");
+
+       if (vconf_get_int(VCONFKEY_MSG_APP_FONT_SIZE, index) < 0) {
+               D_EMSG("vconf_get_int(font_size) is failed !!");
+               return FALSE;
+       }
+
+       if (*index < MSG_APP_FONT_SIZE_INDEX_SMALL || *index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", *index);
+               return FALSE;
+       } else {
+               D_MSG("index = %d", *index);
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_common_set_font_size(int index)
+{
+       D_ENTER;
+
+       if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", index);
+               return FALSE;
+       } else {
+               D_MSG("index = %d", index);
+       }
+
+       if (vconf_set_int(VCONFKEY_MSG_APP_FONT_SIZE, index) < 0) {
+               D_EMSG("vconf_set_int(font_size) is failed !!");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_common_increase_font_size()
+{
+       D_ENTER;
+
+       int index = -1;
+       int increase = -1;
+       if (vconf_get_int(VCONFKEY_MSG_APP_FONT_SIZE, &index) < 0) {
+               D_EMSG("vconf_get_int(font_size) is failed !!");
+               return FALSE;
+       } else {
+               D_MSG("index = %d", index);
+       }
+
+       switch (index) {
+       case MSG_APP_FONT_SIZE_INDEX_GIANT :
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_HUGE :
+               increase = MSG_APP_FONT_SIZE_INDEX_GIANT;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_LARGE :
+               increase = MSG_APP_FONT_SIZE_INDEX_HUGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_NORMAL :
+               increase = MSG_APP_FONT_SIZE_INDEX_LARGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_SMALL :
+               increase = MSG_APP_FONT_SIZE_INDEX_NORMAL;
+               break;
+       default :
+               increase = MSG_APP_FONT_SIZE_INDEX_NORMAL;
+               break;
+       }
+
+       if (increase != -1) {
+               if (msg_common_set_font_size(increase) == FALSE) {
+                       D_EMSG("msg_common_set_font_size is failed");
+                       return FALSE;
+               }
+       }
+       return TRUE;
+}
+
+MSG_BOOL msg_common_decrease_font_size()
+{
+       D_ENTER;
+
+       int index = -1;
+       int decrease = -1;
+       if (vconf_get_int(VCONFKEY_MSG_APP_FONT_SIZE, &index) < 0) {
+               D_EMSG("vconf_get_int(font_size) is failed !!");
+               return FALSE;
+       } else {
+               D_MSG("index = %d", index);
+       }
+
+       switch (index) {
+       case MSG_APP_FONT_SIZE_INDEX_GIANT :
+               decrease = MSG_APP_FONT_SIZE_INDEX_HUGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_HUGE :
+               decrease = MSG_APP_FONT_SIZE_INDEX_LARGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_LARGE :
+               decrease = MSG_APP_FONT_SIZE_INDEX_NORMAL;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_NORMAL :
+               decrease = MSG_APP_FONT_SIZE_INDEX_SMALL;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_SMALL :
+               break;
+       default :
+               decrease = MSG_APP_FONT_SIZE_INDEX_NORMAL;
+               break;
+       }
+
+       if (decrease != -1) {
+               if (msg_common_set_font_size(decrease) == FALSE) {
+                       D_EMSG("msg_common_set_font_size is failed");
+                       return FALSE;
+               }
+       }
+       return TRUE;
+
+}
+
+int msg_common_get_font_size_from_index(int index)
+{
+       D_ENTER;
+
+       if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", index);
+               return -1;
+       } else {
+               D_MSG("index = %d", index);
+       }
+       int font_size = 0;
+
+       switch (index) {
+       case MSG_APP_FONT_SIZE_INDEX_SMALL :
+               font_size = MSG_APP_FONT_SIZE_SMALL;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_NORMAL :
+               font_size = MSG_APP_FONT_SIZE_NORMAL;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_LARGE :
+               font_size = MSG_APP_FONT_SIZE_LARGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_HUGE :
+               font_size = MSG_APP_FONT_SIZE_HUGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_GIANT :
+               font_size = MSG_APP_FONT_SIZE_GIANT;
+               break;
+       default :
+               font_size = MSG_APP_FONT_SIZE_NORMAL;
+               break;
+       }
+
+       return font_size;
+}
+
+
+int msg_common_get_index_from_font_size(int font_size)
+{
+       D_ENTER;
+
+       if (font_size < MSG_APP_FONT_SIZE_SMALL || font_size >= MSG_APP_FONT_SIZE_MAX) {
+               D_EMSG("invalid font_size = %d", font_size);
+               return -1;
+       } else {
+               D_MSG("font_size = %d", font_size);
+       }
+       int index = 0;
+
+       switch (font_size) {
+       case MSG_APP_FONT_SIZE_SMALL :
+               index = MSG_APP_FONT_SIZE_INDEX_SMALL;
+               break;
+       case MSG_APP_FONT_SIZE_NORMAL :
+               index = MSG_APP_FONT_SIZE_INDEX_NORMAL;
+               break;
+       case MSG_APP_FONT_SIZE_LARGE :
+               index = MSG_APP_FONT_SIZE_INDEX_LARGE;
+               break;
+       case MSG_APP_FONT_SIZE_HUGE :
+               index = MSG_APP_FONT_SIZE_INDEX_HUGE;
+               break;
+       case MSG_APP_FONT_SIZE_GIANT :
+               index = MSG_APP_FONT_SIZE_INDEX_GIANT;
+               break;
+       default :
+               index = MSG_APP_FONT_SIZE_INDEX_NORMAL;
+               break;
+       }
+
+       return index;
+}
+
+MSG_BOOL msg_common_get_access_font_size(int *index)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(index == NULL, FALSE, "index is NULL");
+
+       if (vconf_get_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE, index) < 0) {
+               D_EMSG("vconf_get_int(font_size) is failed !!");
+               return FALSE;
+       }
+
+       if (*index < MSG_APP_FONT_SIZE_INDEX_SMALL || *index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", *index);
+               return FALSE;
+       } else {
+               D_MSG("index = %d", *index);
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_common_set_access_font_size(int index)
+{
+       D_ENTER;
+
+       if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", index);
+               return FALSE;
+       } else {
+               D_MSG("index = %d", index);
+       }
+
+       if (vconf_set_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE, index) < 0) {
+               D_EMSG("vconf_set_int(font_size) is failed !!");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_common_apply_font_size(const char *widget_name, Evas_Object *obj)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(widget_name == NULL, FALSE, "widget_name is NULL");
+       D_MSG_RETVM_IF(obj == NULL, FALSE, "obj is NULL");
+
+       int index = 0;
+       int font_size = 0;
+       Evas_Font_Size font_size_scale = 0;
+
+       if (msg_common_get_font_size(&index) != TRUE) {
+               D_EMSG("msg_common_get_font_size() is failed !!");
+               return FALSE;
+       } else {
+               D_MSG("selected index = %d", index);
+       }
+
+       font_size = msg_common_get_font_size_from_index(index);
+       if (font_size == -1) {
+               D_EMSG("msg_common_get_font_size_from_index() is failed !!");
+               return FALSE;
+       }
+
+       /* Calculate the scale factor */
+       font_size_scale -= (font_size * 100) / MSG_APP_FONT_SIZE_NORMAL;
+
+       D_MSG("font_size = %d, font_size_scale = %d", font_size, font_size_scale);
+
+       edje_text_class_del(widget_name);
+       edje_text_class_set(widget_name, NULL, font_size_scale);
+       elm_widget_theme_specific(obj, NULL, EINA_TRUE);
+
+       return TRUE;
+}
+
+void msg_common_reset_font_size(const char *widget_name)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(widget_name == NULL, "widget_name is NULL");
+
+       edje_text_class_del(widget_name);
+
+       return;
+}
+
+static char *__msg_common_get_file_ext(const char *a_pszfile_name)
+{
+       if (a_pszfile_name != NULL) {
+               int nlen = strlen(a_pszfile_name);
+               char *psztemp = (char *)a_pszfile_name + nlen;
+
+               while (nlen--) {
+                       psztemp--;
+                       if (*psztemp == '.') {
+                               psztemp++;
+                               break;
+                       }
+               }
+               return psztemp;
+       }
+
+       return NULL;
+}
+
+static MSG_BOOL __msg_common_is_drm_file(const char *filepath)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(filepath == NULL, FALSE, "filepath is NULL");
+       drm_bool_type_e is_drm_file = DRM_UNKNOWN;
+       int ret = DRM_RETURN_SUCCESS;
+
+       ret = drm_is_drm_file(filepath, &is_drm_file);
+
+       if (ret == DRM_RETURN_SUCCESS && is_drm_file == DRM_TRUE) {
+               return TRUE;
+       } else {
+               D_MSG("ret = %d", ret);
+               return FALSE;
+       }
+}
+
+static MSG_APP_FILE_TYPE_E __msg_common_get_file_type_by_file_ext(const char *file_ext, const char *fullpath)
+{
+       D_ENTER;
+       int i = 0;
+
+       if (file_ext == NULL) {
+               D_EMSG("file_ext is NULL");
+               return MSG_APP_FILE_TYPE_ETC;
+       }
+
+       switch (file_ext[i]) {
+       case 'a':
+       case 'A':
+               if (strcasecmp("ASF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("AMR", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VOICE;
+               }
+               if (strcasecmp("AWB", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VOICE;
+               }
+               if (strcasecmp("AAC", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_MUSIC;
+               }
+               if (strcasecmp("AVI", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("AAC", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_MUSIC;
+               }
+               break;
+
+       case 'b':
+       case 'B':
+               if (strcasecmp("BMP", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_IMAGE;
+               }
+               break;
+
+       case 'd':
+       case 'D':
+               if (strcasecmp("DOC", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_DOC;
+               }
+               if (strcasecmp("DOCX", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_DOC;
+               }
+               if (strcasecmp("DIVX", &file_ext[i]) == 0) {
+                       if (__msg_common_is_drm_file(fullpath) == 0) {
+                               return MSG_APP_FILE_TYPE_DRM;
+                       } else {
+                               return MSG_APP_FILE_TYPE_VIDEO;
+                       }
+               }
+               if (strcasecmp("DCF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_DRM;
+               }
+               break;
+
+       case 'g':
+       case 'G':
+               if (strcasecmp("GIF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_IMAGE;
+               }
+               if (strcasecmp("G72", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_MUSIC;
+               }
+               break;
+
+       case 'h':
+       case 'H':
+               if (strcasecmp("H263", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_MUSIC;
+               }
+               if (strcasecmp("HTML", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_HTML;
+               }
+               if (strcasecmp("HTM", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_HTML;
+               }
+               break;
+
+       case 'i':
+       case 'I':
+               if (strcasecmp("IMY", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               break;
+
+       case 'j':
+       case 'J':
+               if (strcasecmp("JAD", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_JAVA;
+               }
+               if (strcasecmp("JAR", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_JAVA;
+               }
+
+               if (strcasecmp("JPG", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_IMAGE;
+               }
+               if (strcasecmp("JPEG", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_IMAGE;
+               }
+               if (strcasecmp("JPE", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_IMAGE;
+               }
+               break;
+
+       case 'm':
+       case 'M':
+               if (strcasecmp("MMF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("MP3", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_MUSIC;
+               }
+               if (strcasecmp("MID", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("MIDI", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("MP4", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("MPG", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("MPEG", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("M4A", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_MUSIC;
+               }
+               if (strcasecmp("M3G", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_FLASH;
+               }
+               if (strcasecmp("MXMF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("MKV", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("MKA", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_MUSIC;
+               }
+               break;
+
+       case 'o':
+       case 'O':
+               if (strcasecmp("opml", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_RSS;
+               }
+               break;
+
+       case 'p':
+       case 'P':
+               if (strcasecmp("PNG", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_IMAGE;
+               }
+               if (strcasecmp("PJPEG", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_IMAGE;
+               }
+               if (strcasecmp("PDF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_PDF;
+               }
+               if (strcasecmp("PPT", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_PPT;
+               }
+               if (strcasecmp("PPTX", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_PPT;
+               }
+               break;
+
+       case 'r':
+       case 'R':
+               break;
+
+       case 's':
+       case 'S':
+               if (strcasecmp("SDP", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("SPM", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("SMP", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("SPF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("SWF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_FLASH;
+               }
+               if (strcasecmp("SVG", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SVG;
+               }
+               if (strcasecmp("SVGZ", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SVG;
+               }
+               break;
+
+       case 't':
+       case 'T':
+               if (strcasecmp("TXT", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_TXT;
+               }
+               break;
+
+       case 'v':
+       case 'V':
+               if (strcasecmp("VCF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VCONTACT;
+               }
+               if (strcasecmp("VCS", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VCALENDAR;
+               }
+               if (strcasecmp("VNT", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VNOTE;
+               }
+               if (strcasecmp("VBM", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VBOOKMARK;
+               }
+               break;
+
+       case 'w':
+       case 'W':
+               if (strcasecmp("WAV", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("WBMP", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_IMAGE;
+               }
+               if (strcasecmp("WGT", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_WGT;
+               }
+               if (strcasecmp("WMA", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_MUSIC;
+               }
+               if (strcasecmp("WMV", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               break;
+
+       case 'x':
+       case 'X':
+               if (strcasecmp("XLS", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_EXCEL;
+               }
+               if (strcasecmp("XLSX", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_EXCEL;
+               }
+               if (strcasecmp("XMF", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_SOUND;
+               }
+               if (strcasecmp("XHTML", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_HTML;
+               }
+               break;
+
+       case '3':
+               if (strcasecmp("3GP", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("3GPP", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               if (strcasecmp("3G2", &file_ext[i]) == 0) {
+                       return MSG_APP_FILE_TYPE_VIDEO;
+               }
+               break;
+       }
+
+       return MSG_APP_FILE_TYPE_ETC;
+}
+
+const char *__msg_common_get_file_icon_by_file_type(MSG_APP_FILE_TYPE_E file_type)
+{
+       const char *icon_path = MSG_COMMON_FILE_ETC_ICON;
+       if (file_type <= MSG_APP_FILE_TYPE_NONE || file_type >= MSG_APP_FILE_TYPE_MAX) {
+               D_EMSG("Invalid file_type!! file_type = %d", file_type);
+               return NULL;
+       }
+
+       if (icon_array[file_type]) {
+               icon_path = icon_array[file_type];
+       }
+
+       return icon_path;
+}
+
+const char *msg_common_get_file_icon(const char *filepath)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(filepath == NULL, NULL, "filepath is NULL");
+       const char *icon_path = MSG_COMMON_FILE_ETC_ICON;
+       char *file_ext = __msg_common_get_file_ext(filepath);
+
+       if (file_ext) {
+               MSG_APP_FILE_TYPE_E file_type = MSG_APP_FILE_TYPE_NONE;
+
+               file_type = __msg_common_get_file_type_by_file_ext(file_ext, filepath);
+               icon_path = __msg_common_get_file_icon_by_file_type(file_type);
+       } else {
+               D_EMSG("file_ext is NULL");
+       }
+
+       return icon_path;
+}
+
+int msg_common_add_block_number(msg_handle_t msgHandle, const char *address)
+{
+       D_ENTER;
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+
+       msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_ADDRESS_SAME);
+       msg_set_str_value(filter, MSG_FILTER_VALUE_STR, (char *)address, DEF_MAX_FILTER_LEN);
+
+       err = msg_add_filter(msgHandle, filter);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("failed to add filter");
+               msg_release_struct(&filter);
+               return err;
+       }
+
+       if (filter)
+               msg_release_struct(&filter);
+
+       D_LEAVE;
+       return err;
+}
+
+int msg_common_delete_block_number(msg_handle_t msgHandle, const char *address)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(!msgHandle, FALSE, "msgHandle is NULL");
+       D_MSG_RETVM_IF(!address, FALSE, "address is NULL");
+
+       msg_struct_list_s filter_list = {0,};
+       msg_error_t err = MSG_SUCCESS;
+
+       err = msg_get_filter_list(msgHandle, &filter_list);
+
+       if (err != MSG_SUCCESS) {
+               D_EMSG("Getting filter list fail");
+               return err;
+       }
+
+       if (filter_list.nCount == 0) {
+               D_EMSG("filter count is 0");
+               msg_release_list_struct(&filter_list);
+               return MSG_ERR_UNKNOWN;
+       }
+
+       int i = 0;
+       int filter_type = -1;
+       int filter_id = -1;
+       char filter_address[DEF_BUF_LEN] = {0,};
+
+       for (i=0; i<filter_list.nCount; i++) {
+               msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               if (filter_type == MSG_FILTER_BY_ADDRESS_SAME) {
+                       msg_get_str_value(filter_list.msg_struct_info[i], MSG_FILTER_VALUE_STR, filter_address, sizeof(filter_address));
+                       if (strncmp(filter_address, address, sizeof(filter_address)) == 0) {
+                               msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_ID_INT, &filter_id);
+                               break;
+                       }
+               }
+       }
+
+       if (filter_id != -1)
+               msg_delete_filter(msgHandle, filter_id);
+
+       msg_release_list_struct(&filter_list);
+       return err;
+}
+
+int msg_common_check_block_number(msg_handle_t msgHandle, const char *address, bool *result)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(!msgHandle, FALSE, "msgHandle is NULL");
+       D_MSG_RETVM_IF(!address, FALSE, "address is NULL");
+
+       msg_struct_list_s filter_list = {0,};
+       msg_error_t err = MSG_SUCCESS;
+
+       err = msg_get_filter_list(msgHandle, &filter_list);
+
+       if (err != MSG_SUCCESS) {
+               D_EMSG("Getting filter list fail");
+               return err;
+       }
+
+       if (filter_list.nCount == 0) {
+               *result = false;
+       } else {
+               bool isFound = false;
+               int i = 0;
+               int filter_type = -1;
+               char filter_address[DEF_BUF_LEN] = {0,};
+               for (i=0; i<filter_list.nCount; i++) {
+                       msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+                       if (filter_type == MSG_FILTER_BY_ADDRESS_SAME) {
+                               msg_get_str_value(filter_list.msg_struct_info[i], MSG_FILTER_VALUE_STR, filter_address, sizeof(filter_address));
+
+                               if (strncmp(filter_address, address, sizeof(filter_address)) == 0) {
+                                       isFound = true;
+                                       break;
+                               }
+                       }
+               }
+               *result = isFound;
+       }
+
+       msg_release_list_struct(&filter_list);
+       return err;
+}
+
+/*********************
+* [SMS]
+*      [sent / outbox]
+*      1. Type:
+*      2. To:
+*      3. sent time:
+*      4. delivery report
+*      5. Status:
+*
+*      [inbox]
+*      1. Type:
+*      2. From
+*      3. Received time:
+*
+* [MMS notification]
+*      1. Type:
+*      2. From:
+*      3: Expire:
+*      4. Subject:
+*      5. Message size: KB
+*
+* [MMS]
+*      [ For sent/outbox msg]
+*      1. Type:
+*      2. To:
+*      3. Sent time:
+*      4. Subject:
+*      5. Message size:
+*      6. Delivery report:
+*      7. Read report:
+*
+*      [For inbox msg]
+*      1. Type:
+*      2. From:
+*      3. Received time:
+*      4. Subject:
+*      5. Message size: KB
+**********************/
+
+char *msg_common_make_message_detail_text(msg_handle_t msgHandle, int msgId)
+{
+       msg_error_t err = MSG_SUCCESS;
+       int msg_type = MSG_TYPE_INVALID;
+       int folder_id = MSG_MAX_FOLDER_ID;
+       int thread_id = 0;
+       int contact_id = 0;
+       int timeformat = 0;
+       bool delivery_flag = false;
+       bool read_flag = false;
+       char addr_value[MAX_ADDRESS_VAL_LEN+1] = {0,};
+       char name[MAX_DISPLAY_NAME_LEN]= {0,};
+
+       msg_struct_list_s addrList = {0,};
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+       /** Get message **/
+       err = msg_get_message(msgHandle, msgId, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return NULL;
+       }
+
+       msg_get_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, &msg_type);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+
+       /** Get address list **/
+       err = msg_get_address_list(msgHandle, thread_id, &addrList);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return NULL;
+       }
+
+       /* create str buf */
+       Eina_Strbuf *text_data = eina_strbuf_new();
+
+       /* set font size */
+       eina_strbuf_append(text_data, "<font_size=32>");
+
+
+       /*** Type ***/
+       eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_DETAILS_TYPE"));
+       eina_strbuf_append(text_data, ": ");
+
+       if (msg_type == MSG_TYPE_MMS) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"));
+       } else if (msg_type == MSG_TYPE_MMS_NOTI) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"));
+       } else if (msg_type == MSG_TYPE_SMS) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_TEXT_MESSAGE"));
+       } else {
+               D_EMSG("invalid msg type!");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+
+               eina_strbuf_free(text_data);
+               return NULL;
+       }
+       eina_strbuf_append(text_data, "<br>");
+
+       /*** From / To ***/
+       if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"));
+               eina_strbuf_append(text_data, ": ");
+       } else if (folder_id == MSG_INBOX_ID) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_FROM"));
+               eina_strbuf_append(text_data, ": ");
+       } else {
+               D_EMSG("invalid msg type!");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+
+               eina_strbuf_free(text_data);
+               return NULL;
+       }
+
+       int index = 0;
+       for (index  = 0; index < addrList.nCount; index ++) {
+               bzero(name, sizeof(name));
+               bzero(addr_value, sizeof(addr_value));
+
+               msg_get_int_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+               msg_get_str_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_DISPLAYNAME_STR, name, MAX_DISPLAY_NAME_LEN);
+               msg_get_str_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+
+               if (name[0] != '\0') {
+                       eina_strbuf_append(text_data, name);
+                       eina_strbuf_append(text_data, "(");
+                       eina_strbuf_append(text_data, addr_value);
+                       eina_strbuf_append(text_data, ")");
+               } else {
+                       eina_strbuf_append(text_data, addr_value);
+               }
+               if (index != addrList.nCount-1)
+                       eina_strbuf_append(text_data, ", ");
+       }
+       eina_strbuf_append(text_data, "<br>");
+
+       /*** Sent / Received / Expire Time ***/
+       timeformat = msg_common_get_timeformat();
+
+       if (msg_type == MSG_TYPE_MMS_NOTI) {
+               msg_struct_t mmsSendOpt = NULL;
+               int expiry_time;
+               char *str_time = NULL;
+
+               char msg[DEF_BUF_LEN] = {0,};
+               const char *expire_str = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_EXPIRES_C_PS");
+
+               msg_get_struct_handle(sendOpt, MSG_SEND_OPT_MMS_OPT_HND, &mmsSendOpt);
+               msg_get_int_value(mmsSendOpt, MSG_MMS_SENDOPTION_EXPIRY_TIME_INT, &expiry_time);
+
+               if (timeformat == MSG_TIME_FORMAT_24H)
+                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM y", &expiry_time);
+               else
+                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM y", &expiry_time);
+
+               snprintf(msg, sizeof(msg), expire_str, str_time);
+               eina_strbuf_append(text_data, msg);
+       } else {
+               if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) {
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"));
+               } else if (folder_id == MSG_INBOX_ID) {
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVED"));
+               }
+               eina_strbuf_append(text_data, ": ");
+
+               int dptime = 0;
+               msg_get_int_value(msgInfo, MSG_MESSAGE_DISPLAY_TIME_INT, &dptime);
+
+               char *str_time = NULL;
+               if (timeformat == MSG_TIME_FORMAT_24H)
+                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM y", &dptime);
+               else
+                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM y", &dptime);
+               eina_strbuf_append(text_data, str_time);
+       }
+
+       /*line change*/
+       eina_strbuf_append(text_data, "<br>");
+
+       if (msg_type == MSG_TYPE_SMS) { /*** SMS ***/
+               int status;
+
+               switch (folder_id) {
+               case MSG_SENTBOX_ID:
+               case MSG_OUTBOX_ID:
+                       /** delivery report */
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELIVERY_REPORT"));
+                       eina_strbuf_append(text_data, ": ");
+                       // get delivery report setting value
+                       msg_get_bool_value(sendOpt, MSG_SEND_OPT_DELIVER_REQ_BOOL, &delivery_flag);
+
+                       if (delivery_flag) {
+                               eina_strbuf_append(text_data, "<br>");
+                               // report status
+                               msg_struct_list_s report_list = {0,};
+                               err = msg_get_report_status(msgHandle, msgId, &report_list);
+
+                               int i = 0;
+                               int j = 0;
+
+                               if (report_list.nCount != 0) {
+                                       msg_struct_t report = NULL;
+                                       int type;
+                                       int status;
+                                       time_t time;
+                                       char address[MAX_ADDRESS_VAL_LEN+1] = {0,};
+
+
+                                       for (i=0; i < addrList.nCount; i++) {
+                                               bool report_found = false;
+
+                                               bzero(addr_value, sizeof(addr_value));
+                                               bzero(address, sizeof(address));
+                                               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+
+                                               eina_strbuf_append(text_data, addr_value);
+                                               eina_strbuf_append(text_data, " - ");
+
+                                               for (j=0; j<report_list.nCount; j++) {
+                                                       report = report_list.msg_struct_info[j];
+                                                       msg_get_str_value(report, MSG_REPORT_ADDRESS_STR, address, sizeof(address));
+
+                                                       if (!strcmp(addr_value, address)) {
+                                                               report_found = true;
+                                                               msg_get_int_value(report, MSG_REPORT_TYPE_INT, &type);
+                                                               msg_get_int_value(report, MSG_REPORT_STATUS_INT, &status);
+                                                               msg_get_int_value(report, MSG_REPORT_TIME_INT, (int *)&time);
+
+                                                               if (type == MSG_REPORT_TYPE_DELIVERY) {
+                                                                       if (status == MSG_DELIVERY_REPORT_NONE) {
+                                                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+                                                                       } else if (status == MSG_DELIVERY_REPORT_EXPIRED) {
+                                                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_EXPIRED"));
+                                                                       } else if (status == MSG_DELIVERY_REPORT_SUCCESS) {
+                                                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVED"));
+                                                                               eina_strbuf_append(text_data, " (");
+                                                                               char *str_time = NULL;
+                                                                               if (timeformat == MSG_TIME_FORMAT_24H)
+                                                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM", &time);
+                                                                               else
+                                                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &time);
+                                                                               eina_strbuf_append(text_data, str_time);
+                                                                               eina_strbuf_append(text_data, ")");
+                                                                       } else if (status == MSG_DELIVERY_REPORT_REJECTED) {
+                                                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_REJECTED"));
+                                                                       } else {
+                                                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                               if (!report_found)
+                                                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+
+                                               eina_strbuf_append(text_data, "<br>");
+                                       }
+                               } else {
+                                       for (i=0; i < addrList.nCount; i++) {
+                                               bzero(addr_value, sizeof(addr_value));
+                                               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+                                               eina_strbuf_append(text_data, addr_value);
+                                               eina_strbuf_append(text_data, " - ");
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+                                               eina_strbuf_append(text_data, "<br>");
+                                       }
+                               }
+
+                               msg_release_list_struct(&report_list);
+                       } else {
+                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_NOT_REQUESTED"));
+                       }
+
+                       eina_strbuf_append(text_data, "<br>");
+
+                       /** status **/
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_STATUS"));
+                       eina_strbuf_append(text_data, ": ");
+                       msg_get_int_value(msgInfo, MSG_MESSAGE_NETWORK_STATUS_INT, &status);
+                       if (status == MSG_NETWORK_SENDING)
+                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENDING"));
+                       else if (status == MSG_NETWORK_SEND_SUCCESS)
+                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENT"));
+                       else if (status == MSG_NETWORK_SEND_FAIL)
+                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENDING_FAILED"));
+
+                       eina_strbuf_append(text_data, "<br>");
+                       break;
+               default:
+                       break;
+               }
+       } else if (msg_type == MSG_TYPE_MMS || msg_type == MSG_TYPE_MMS_NOTI) { /*** MMS ***/
+               /** subject **/
+               char subject[DEF_BUF_LEN_S] = {0,};
+               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_SUBJECT"));
+               eina_strbuf_append(text_data, ": ");
+               msg_get_str_value(msgInfo, MSG_MESSAGE_SUBJECT_STR, subject, sizeof(subject));
+               if (subject[0] != '\0')
+                       eina_strbuf_append(text_data, subject);
+               else
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_UNTITLED_M_MMS"));
+               eina_strbuf_append(text_data, "<br>");
+
+               /** messae size **/
+               int msgSize = 0;
+               int sizeKB = 0;
+               char strSize[DEF_BUF_LEN_D] = {0,};
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MESSAGE_SIZE"));
+               eina_strbuf_append(text_data, ": ");
+               msg_get_int_value(msgInfo, MSG_MESSAGE_DATA_SIZE_INT, &msgSize);
+
+               sizeKB = msgSize/1024;
+               if (msgSize%1024 > 512)
+                       sizeKB++;
+               snprintf(strSize, sizeof(strSize), "%d%s", sizeKB, dgettext(MESSAGE_PKGNAME, "KB"));
+               eina_strbuf_append(text_data, strSize);
+               eina_strbuf_append(text_data, "<br>");
+
+               if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) {
+                       msg_struct_list_s report_list = {0,};
+                       MSG_DETAIL_REPORT_LIST_S *report_data_list = NULL;
+                       msg_struct_t mms_send_opt = NULL;
+                       msg_get_struct_handle(sendOpt, MSG_SEND_OPT_MMS_OPT_HND, &mms_send_opt);
+
+                       msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, &delivery_flag);
+                       msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &read_flag);
+
+                       // getting delivery & read report information
+                       if (delivery_flag || read_flag) {
+                               int i;
+                               report_data_list = (MSG_DETAIL_REPORT_LIST_S *)calloc(addrList.nCount, sizeof(MSG_DETAIL_REPORT_LIST_S));
+                               if (report_data_list == NULL)
+                                       D_EMSG("report_list is null");
+
+                               // get report status from FW
+                               msg_get_report_status(msgHandle, msgId, &report_list);
+
+                               for (i=0; i<addrList.nCount; i++) {
+                                       bzero(addr_value, sizeof(addr_value));
+                                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+
+                                       strncpy(report_data_list[i].address, addr_value, MAX_ADDRESS_VAL_LEN);
+                                       report_data_list[i].delivery.status = MSG_DELIVERY_REPORT_NONE;
+                                       report_data_list[i].read.status = MSG_READ_REPORT_NONE;
+                               }
+
+                               for (i = 0; i < report_list.nCount; i++) {
+                                       int type;
+                                       int status;
+                                       time_t time;
+
+                                       bzero(addr_value, sizeof(addr_value));
+
+                                       msg_get_int_value(report_list.msg_struct_info[i], MSG_REPORT_TYPE_INT, (int *)&type);
+                                       msg_get_int_value(report_list.msg_struct_info[i], MSG_REPORT_STATUS_INT, (int *)&status);
+                                       msg_get_str_value(report_list.msg_struct_info[i], MSG_REPORT_ADDRESS_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+                                       msg_get_int_value(report_list.msg_struct_info[i], MSG_REPORT_TIME_INT, (int *)&time);
+
+                                       int j = 0;
+                                       /* fill values for viewer report list */
+                                       for (j=0; j < addrList.nCount; j++) {
+                                               if (!strncmp(report_data_list[j].address, addr_value, MAX_ADDRESS_VAL_LEN)) {
+                                                       if (type == MSG_REPORT_TYPE_DELIVERY) {
+                                                               report_data_list[j].delivery.status = status;
+                                                               report_data_list[j].delivery.time = time;
+                                                       } else {
+                                                               report_data_list[j].read.status = status;
+                                                               report_data_list[j].read.time = time;
+                                                       }
+                                               }
+                                       }
+                               }
+                               msg_release_list_struct(&report_list);
+                       }
+
+                       /** delivery report **/
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELIVERY_REPORT"));
+                       eina_strbuf_append(text_data, " : ");
+                       //
+                       if (!delivery_flag || report_data_list == NULL) {
+                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_NOT_REQUESTED"));
+                       } else {
+                               int i;
+                               for (i = 0; i < addrList.nCount; i++) {
+                                       eina_strbuf_append(text_data, report_data_list[i].address);
+                                       eina_strbuf_append(text_data, " - ");
+
+                                       if (report_data_list[i].delivery.status == MSG_DELIVERY_REPORT_NONE) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+                                       } else if (report_data_list[i].delivery.status == MSG_DELIVERY_REPORT_EXPIRED) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_EXPIRED"));
+                                       } else if (report_data_list[i].delivery.status == MSG_DELIVERY_REPORT_SUCCESS) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVED"));
+                                               eina_strbuf_append(text_data, " (");
+
+                                               char *str_time = NULL;
+                                               if (timeformat == MSG_TIME_FORMAT_24H)
+                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM", &(report_data_list[i].delivery.time));
+                                               else
+                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &(report_data_list[i].delivery.time));
+                                               eina_strbuf_append(text_data, str_time);
+                                               eina_strbuf_append(text_data, ")");
+                                       } else if (report_data_list[i].delivery.status == MSG_DELIVERY_REPORT_REJECTED) {
+                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_REJECTED"));
+                                       } else {
+                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+                                       }
+
+                                       if (i != addrList.nCount-1)
+                                               eina_strbuf_append(text_data, "<br>");
+                               }
+
+                       }
+                       eina_strbuf_append(text_data, "<br>");
+
+                       /** read report **/
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_READ_REPORT"));
+                       eina_strbuf_append(text_data, ": ");
+                       //
+                       if (!read_flag) {
+                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_NOT_REQUESTED"));
+                       } else {
+                               int i = 0;
+                               for (i = 0; i < addrList.nCount; i++) {
+                                       eina_strbuf_append(text_data, report_data_list[i].address);
+                                       eina_strbuf_append(text_data, " - ");
+                                       if (report_data_list[i].read.status == MSG_READ_REPORT_NONE) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+                                       } else if (report_data_list[i].read.status == MSG_READ_REPORT_IS_READ) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"));
+                                               eina_strbuf_append(text_data, " (");
+
+                                               char *str_time = NULL;
+                                               if (timeformat == MSG_TIME_FORMAT_24H)
+                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM", &(report_data_list[i].read.time));
+                                               else
+                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &(report_data_list[i].read.time));
+                                               eina_strbuf_append(text_data, str_time);
+                                               eina_strbuf_append(text_data, ")");
+                                       } else if (report_data_list[i].read.status == MSG_READ_REPORT_IS_DELETED) {
+                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_DELETED"));
+                                       }
+
+                                       if (i != addrList.nCount-1)
+                                               eina_strbuf_append(text_data, "<br>");
+                               }
+                       }
+                       eina_strbuf_append(text_data, "<br>");
+               }
+       }
+
+       char *str = strdup(eina_strbuf_string_get(text_data));
+
+       msg_release_list_struct(&addrList);
+       eina_strbuf_free(text_data);
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       return str;
+}
+
diff --git a/common/msg-ui-common-utility.h b/common/msg-ui-common-utility.h
new file mode 100755 (executable)
index 0000000..8ee499c
--- /dev/null
@@ -0,0 +1,330 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMMON_UTILITY_H__
+#define __MSG_UI_COMMON_UTILITY_H__
+
+/*==================================================================================================
+ INCLUDE HEADERS
+ * ==================================================================================================*/
+#include <glib.h>
+#include <Elementary.h>
+#include <system_settings.h>
+#include <msg.h>
+
+/*==================================================================================================
+ DEFINITIONS
+ *==================================================================================================*/
+/* for i18n */
+#define MSG_COMMON_MAX_UCHAR_PATTERN_LEN       64
+#define MSG_COMMON_MAX_CHAR_PATTERN_LEN        128
+
+#define MSG_COMMON_TAG_TEXT "<wrap=char>"
+
+#define MSG_COMMON_NUMBER_MAX_LEN      40
+
+/* Define vconf key */
+#define VCONFKEY_MSG_APP_FONT_SIZE             "db/private/org.tizen.message/font_size"
+#define VCONFKEY_MSG_APP_ACCESS_FONT_SIZE "db/private/org.tizen.message/accessibility_font_size"
+#define VCONFKEY_MSG_APP_USE_VOLUME_KEY "db/private/org.tizen.message/use_volume_key"
+#define MSG_COMMON_EDJ         EDJDIR"/msg_common.edj"
+#define MSG_CUSTOM_WINSET_EDJ  EDJDIR"/msg_custom_winset.edj"
+#define MSG_IMAGES_EDJ         EDJDIR"/msg_images.edj"
+
+
+/*==================================================================================================
+ ENUMERATIONS
+ *==================================================================================================*/
+
+typedef enum {
+       MSG_APP_FONT_SIZE_SMALL = 36,
+       MSG_APP_FONT_SIZE_NORMAL = 44,
+       MSG_APP_FONT_SIZE_LARGE = 64,
+       MSG_APP_FONT_SIZE_HUGE = 81,
+       MSG_APP_FONT_SIZE_GIANT = 106,
+       MSG_APP_FONT_SIZE_MAX
+
+} MSG_APP_FONT_SIZE_E;
+
+typedef enum {
+       MSG_APP_FONT_SIZE_INDEX_SMALL,
+       MSG_APP_FONT_SIZE_INDEX_NORMAL,
+       MSG_APP_FONT_SIZE_INDEX_LARGE,
+       MSG_APP_FONT_SIZE_INDEX_HUGE,
+       MSG_APP_FONT_SIZE_INDEX_GIANT,
+       MSG_APP_FONT_SIZE_INDEX_MAX
+
+} MSG_APP_FONT_SIZE_INDEX_E;
+
+typedef enum {
+       MSG_SYS_FONT_SIZE_INDEX_SMALL = SYSTEM_SETTINGS_FONT_SIZE_SMALL,
+       MSG_SYS_FONT_SIZE_INDEX_NORMAL =  SYSTEM_SETTINGS_FONT_SIZE_NORMAL,
+       MSG_SYS_FONT_SIZE_INDEX_LARGE = SYSTEM_SETTINGS_FONT_SIZE_LARGE,
+       MSG_SYS_FONT_SIZE_INDEX_HUGE = SYSTEM_SETTINGS_FONT_SIZE_HUGE,
+       MSG_SYS_FONT_SIZE_INDEX_GIANT =  SYSTEM_SETTINGS_FONT_SIZE_GIANT,
+       MSG_SYS_FONT_SIZE_INDEX_MAX
+} MSG_SYS_FONT_SIZE_INDEX_E;
+
+typedef enum {
+       MSG_APP_FILE_TYPE_NONE = 0,
+       MSG_APP_FILE_TYPE_IMAGE,           /**< Image category */
+       MSG_APP_FILE_TYPE_VIDEO,           /**< Video category */
+       MSG_APP_FILE_TYPE_MUSIC,           /**< Music category */
+       MSG_APP_FILE_TYPE_SOUND,           /**< Sound category */
+       MSG_APP_FILE_TYPE_PDF,             /**< Pdf category */
+       MSG_APP_FILE_TYPE_DOC,             /**< Word category */
+       MSG_APP_FILE_TYPE_PPT,             /**< Powerpoint category */
+       MSG_APP_FILE_TYPE_EXCEL,           /**< Excel category */
+       MSG_APP_FILE_TYPE_VOICE,           /**< Voice category */
+       MSG_APP_FILE_TYPE_HTML,            /**< Html category */
+       MSG_APP_FILE_TYPE_FLASH,           /**< Flash category */
+       MSG_APP_FILE_TYPE_TXT,             /**< Txt category */
+       MSG_APP_FILE_TYPE_VCONTACT,        /**< Vcontact category */
+       MSG_APP_FILE_TYPE_VCALENDAR,       /**< Vcalendar category */
+       MSG_APP_FILE_TYPE_VNOTE,           /**< Vnote category */
+       MSG_APP_FILE_TYPE_VBOOKMARK,       /**< Vbookmark category */
+       MSG_APP_FILE_TYPE_SVG,             /**< Svg category */
+       MSG_APP_FILE_TYPE_RSS,             /**< Rss reader file, *.opml */
+       MSG_APP_FILE_TYPE_JAVA,            /**< java file, *.jad, *.jar */
+       MSG_APP_FILE_TYPE_WGT,             /**< wrt , *.wgt, *.wgt */
+       MSG_APP_FILE_TYPE_DRM,                  /**< drm file , *.dcf */
+       MSG_APP_FILE_TYPE_ETC,             /**< Other files category */
+       MSG_APP_FILE_TYPE_MAX
+} MSG_APP_FILE_TYPE_E;
+/*==================================================================================================
+ STRUCTURES
+ *==================================================================================================*/
+
+
+/*==================================================================================================
+ FUNCTION DECLARATIONS
+ *==================================================================================================*/
+
+/*
+ *@fn  msg_common_get_default_locale();
+ *@brief       This function is used to get default locale
+ *@return      default locale string on success, else NULL pointer on failure
+ *@param[in]   None
+ */
+const char *msg_common_get_default_locale();
+
+/*
+ *@fn  msg_common_get_date_text(const char *locale, char *skeleton, void *time);
+ *@brief       This function is used to get data & time string based on both locale and skeleton.
+ *             Caller must free returned string after using it, else memory will be leaked
+ *@return      data and time formated string on success, else NULL pointer on failure
+ *@param[in]   locale  locale info. of current setting
+ *@param[in]   skeleton        skeleton string caller want to see
+ *@param[in]   time_t  time_t pointer to be diaplayed. If NULL is passed, current time will be displayed
+ */
+char *msg_common_get_date_text(const char *locale, char *skeleton, void *time);
+
+/*
+ *@fn  msg_common_get_display_date(const char *locale, char *bestPattern, char* bestPattern_year, time_t *msg_t);
+ *@brief       This function is used to get date string based on both locale and bestPattern.
+ *             Caller must free returned string after using it, else memory will be leaked
+ *@return      date  string on success, else NULL pointer on failure
+ *@param[in]   locale  locale info. of current setting
+ *@param[in]   bestPattern     best pattern for date and time based on locale
+  *@param[in]  yearPattern     best pattern with year data for date and time based on locale
+ *@param[in]   time_t  time_t pointer to be diaplayed. If NULL is passed, current time will be displayed
+ */
+char *msg_common_get_display_date(const char *locale, char *bestPattern, char* yearPattern, time_t *msg_t);
+
+/*
+ *@fn  msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle);
+ *@brief       This function is used to get marked up string from src text.
+ *             Caller must free returned string by using eina_strbuf_free(), else memory will be leaked
+ *@return      Eina_Strbuf* marked up string on success, else NULL pointer on failure
+ *@param[in]   src     original text to be displayed
+ *@param[in]   fontcolor       fontcolor to be displayed. It must be "#ffffff" style. If NULL is passed, it is not set
+ *@param[in]   fontstyle       fontstyle to be displayed. It must be passed font style like "hilight". If NULL is passed, it is not set
+ */
+Eina_Strbuf *msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle);
+/*
+ *@fn  msg_common_is_valid_phone_number(const char *address);
+ *@brief       This function is used to check address is valid number or not
+ *@return      return TRUE if address is valide number type, else FALSE
+ *@param[in]   address string pointer of address
+ */
+MSG_BOOL msg_common_is_valid_phone_number(const char *address);
+
+/*
+ *@fn  msg_common_is_valid_email_addr(const char *address);
+ *@brief       This function is used to check address is valid email address or not
+ *@return      return TRUE if address is valide email address type, else FALSE
+ *@param[in]   address string pointer of address
+ */
+MSG_BOOL msg_common_is_valid_email_addr(const char *address);
+
+/*
+ *@fn  msg_common_is_connected_call(void);
+ *@brief       This function is used to know (voice or video)call is connected or not
+ *@return      return TRUE if call is connected status, else FALSE
+ */
+MSG_BOOL msg_common_is_connected_call(void);
+
+/*
+ *@fn  msg_common_get_date_best_pattern(const char *locale, char *skeleton);
+ *@brief       This function is used to get best pattern string based on both locale and skeleton.
+ *@return      best pattern based on locale for data and time on success, else NULL pointer on failure
+ *@param[in]   locale  locale info. of current setting
+ *@param[in]   skeleton        skeleton string caller want to see
+ */
+char *msg_common_get_date_best_pattern(const char *locale, char *skeleton);
+
+/*
+ *@fn  msg_common_get_formatted_date(const char *locale, char *bestPattern, void *time);
+ *@brief       This function is used to get data & time string from best pattern based on locale.
+ *@return      data and time formated string on success, else NULL pointer on failure
+ *@param[in]   locale  locale info. of current setting
+ *@param[in]   bestPattern     best pattern for date and time based on locale
+ *@param[in]   time_t  time_t pointer to be diaplayed. If NULL is passed, current time will be displayed
+ */
+char *msg_common_get_formatted_date(const char *locale, char *bestPattern, void *time);
+
+/*
+ *@fn  msg_common_check_sim_existence(void);
+ *@brief       This function is used to know whether SIM is inserted or not.
+ *@return      return TRUE if SIM is inserted, else FALSE
+ */
+MSG_BOOL msg_common_is_sim_inserted(void);
+
+/*
+ *@fn  msg_common_get_font_size(int *index);
+ *@brief       This function is used to get the index of font size.
+ *@param[in]   index   index of font size. It is used in message setting.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_get_font_size(int *index);
+
+/*
+ *@fn  msg_common_set_font_size(int index);
+ *@brief       This function is used to set the index of font size.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_set_font_size(int index);
+
+/*
+ *@fn  msg_common_increase_font_size(void);
+ *@brief       This function is used to set the increased index of font size.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_increase_font_size();
+
+/*
+ *@fn  msg_common_decrease_font_size(void);
+ *@brief       This function is used to set the decreased index of font size.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_decrease_font_size();
+
+/*
+ *@fn  msg_common_get_index_from_font_size(int font_size);
+ *@brief       This function is used to get index from font size.
+ *@return      return font size, else -1
+ */
+int msg_common_get_index_from_font_size(int font_size);
+
+/*
+ *@fn  msg_common_get_font_size_from_index(int index);
+ *@brief       This function is used to get font size from index.
+ *@return      return index of font size, else -1
+ */
+int msg_common_get_font_size_from_index(int index);
+
+/*
+ *@fn  msg_common_get_access_font_size(int *index);
+ *@brief       This function is used to get the index of accessibility font size.
+ *@param[in]   index   index of font size. It is used in message setting.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_get_access_font_size(int *index);
+
+/*
+ *@fn  msg_common_set_access_font_size(int index);
+ *@brief       This function is used to set the index of accessibility font size.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_set_access_font_size(int index);
+
+
+/*
+ *@fn  msg_common_apply_font_size(void);
+ *@brief       This function is used to change the font size.
+ *@param[in]   widget_name     The widget name which font size is changed.
+ *@param[in]   obj     The widget which font size is changed.
+ *@return      return TRUE if it is success to apply font size, else FALSE
+ */
+MSG_BOOL msg_common_apply_font_size(const char *widget_name, Evas_Object *obj);
+
+/*
+ *@fnmsg_common_reset_font_size(const char *widget_name);
+ *@brief       This function is used to reset the font size.
+ *@param[in]   widget_name     The widget name which font size is changed.
+ */
+void msg_common_reset_font_size(const char *widget_name);
+
+/*
+ *@fn  msg_common_get_file_icon(const char *filepath);
+ *@brief       This function is used to get file icon
+ *@param[in]   filepath        filepath
+ *@return      return file icon path, else NULL
+ */
+const char *msg_common_get_file_icon(const char *filepath);
+
+/*
+ *@fn  msg_common_get_timeformat();
+ *@brief       This function is used to get time format (format 12H, format 24H)
+ *@param[in]   filepath        filepath
+ *@return      return enum msg_time_format
+ */
+int msg_common_get_timeformat();
+
+/*
+ *@fn  msg_common_add_block_number();
+ *@brief       This function is used to block address
+ *@param[in]   msgHandle
+ *@param[in]   address block address
+ *@return      return error code
+ */
+int msg_common_add_block_number(msg_handle_t msgHandle, const char *address);
+
+/*
+ *@fn  msg_common_delete_block_number();
+ *@brief       This function is used to unblock address
+ *@param[in]   msgHandle
+ *@param[in]   address unblock address
+ *@return      return error code
+ */
+int msg_common_delete_block_number(msg_handle_t msgHandle, const char *address);
+
+/*
+ *@fn  msg_common_check_block_number();
+ *@brief       This function is used to get address is blocked
+ *@param[in]   msgHandle
+ *@param[in]   address checking address
+ *@param[in]   result  TRUE if address is blocked, else FALSE
+ *@return      return error code
+ */
+int msg_common_check_block_number(msg_handle_t msgHandle, const char *address, bool *result);
+
+char *msg_common_make_message_detail_text(msg_handle_t msgHandle, int msgId);
+
+
+#endif
+
diff --git a/common/msg-ui-image-resource.h b/common/msg-ui-image-resource.h
new file mode 100755 (executable)
index 0000000..0217e56
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_IMAGE_RESOURCE__
+#define __MSG_UI_IMAGE_RESOURCE__
+
+/* viewer image resources */
+#define MSG_VIEWER_IMAGE_ATTACH_ICON                           "attach_icon.png"
+#define MSG_VIEWER_IMAGE_DRM_SMALL_ICON                        "M01_icon_DRM_64x64.png"
+#define MSG_VIEWER_IMAGE_SAVE_ICON                                     "M01_icon_save.png"
+#define MSG_VIEWER_IMAGE_UNSUPPORT_ICON                        "M01_icon_Unsupported.png"
+#define MSG_VIEWER_IMAGE_DRM_ICON                                      "M01_icon_DRM.png"
+#define MSG_VIEWER_IMAGE_ATTACH_LIST_ICON                                      "M01_title_icon_attach.png"
+#define MSG_VIEWER_IMAGE_ATTACH_LIST_DIM_ICON                  "M01_title_icon_attach_dim.png"
+#define MSG_VIEWER_VOLUME_MIN                          "00_slider_btn_volume01.png"
+#define MSG_VIEWER_VOLUME_MAX                          "00_slider_btn_volume02.png"
+
+/* composer image resources */
+#define MSGC_IMG_ATTACHMENT_ICON                       "60_myfiles_file_etc.png"
+#define MSGC_IMG_ATTACHMENT_DEL_ICON           "M01_btn_delete.png"
+
+#define MSGC_SMS_SEND_ICON                                     "M01_btn_message_send.png"
+#define MSGC_SMS_SEND_DIM_ICON                         "M01_btn_message_send_dim.png"
+#define MSGC_MMS_SEND_ICON                                     "M01_btn_mms_message_send.png"
+#define MSGC_MMS_SEND_DIM_ICON                 "M01_btn_mms_message_send_dim.png"
+#define MSGC_IMG_INSERT_VOICE_ICON                     "M01_icon_attach_voice.png"
+#define MSGC_IMG_INSERT_ETC_ICON                       "60_myfiles_file_etc.png"
+#define MSGC_IMG_INSERT_DEL_ICON                       "M01_photo_btn_delete.png"
+#define MSGC_IMG_INSERT_DEL_PRESS_ICON         "M01_photo_btn_delete_press.png"
+#define MSGC_SOUND_INSERT_DEL_ICON                     "M01_btn_delete.png"
+#define MSGC_IMG_PAGE_DEL_ICON                         "M01_btn_delete.png"
+#define MSGC_IMG_SUBJECT_DEL_ICON                      "M01_btn_delete.png"
+
+#define MSGC_IMG_DEL_BTN_PRESS_ICON            "M01_btn_delete_press.png"
+#define MSGC_IMG_CONTACT_BUTTON_ICON           "M01_contact_default_image.png"
+
+/* thread list image resources */
+#define MSG_UI_THREAD_LIST_PUSH_ICON                   "M01_icon_Push.png"
+#define MSG_UI_THREAD_LIST_OTA_ICON                    "M01_icon_OTA.png"
+#define MSG_UI_THREAD_LIST_CB_ICON                             "M01_icon_broadcasting.png"
+
+/* thread list message status icon*/
+#define MSG_UI_THREAD_LIST_STATUS_MMS_READ             "M01_icon_message_status_mms_read_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD           "M01_icon_message_status_mms_unread_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_MMS_SENT             "M01_icon_message_status_mms_sent_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_SMS_READ             "M01_icon_message_status_sms_read_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD           "M01_icon_message_status_sms_unread_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_SMS_SENT             "M01_icon_message_status_sms_sent_n.png"
+
+#define MSG_UI_THREAD_LIST_TITLE_ICON_COMPOSE                  "M01_title_icon_compose.png"
+#define MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH                   "M01_title_icon_search.png"
+#define MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM               "M01_title_icon_search_dim.png"
+
+/* common image resources */
+#define MSG_COMMON_FILE_ETC_ICON                       "myfile_icon_etc.png"
+
+#define MSG_COMMON_FILE_IMAGE_ICON             "myfile_icon_images.png"
+#define MSG_COMMON_FILE_VIDEO_ICON             "myfile_icon_video.png"
+#define MSG_COMMON_FILE_MUSIC_ICON             "myfile_icon_music.png"
+#define MSG_COMMON_FILE_SOUND_ICON             "myfile_icon_music.png"
+#define MSG_COMMON_FILE_PDF_ICON                       "myfile_icon_pdf.png"
+#define MSG_COMMON_FILE_DOC_ICON                       "myfile_icon_word.png"
+#define MSG_COMMON_FILE_PPT_ICON                       "myfile_icon_ppt.png"
+#define MSG_COMMON_FILE_EXCEL_ICON             "myfile_icon_excel.png"
+#define MSG_COMMON_FILE_VOICE_ICON             "myfile_icon_music.png"
+#define MSG_COMMON_FILE_HTML_ICON                      "myfile_icon_html.png"
+#define MSG_COMMON_FILE_FLASH_ICON             "myfile_icon_swf.png"
+#define MSG_COMMON_FILE_TXT_ICON                       "myfile_icon_text.png"
+#define MSG_COMMON_FILE_VCONTACT_ICON  "myfile_icon_svg.png"
+#define MSG_COMMON_FILE_VCALENDAR_ICON "myfile_icon_svg.png"
+#define MSG_COMMON_FILE_VNOTE_ICON             "myfile_icon_text.png"
+#define MSG_COMMON_FILE_RSS_ICON                       "myfile_icon_rss.png"
+#define MSG_COMMON_FILE_JAVA_ICON                      "myfile_icon_java.png"
+#define MSG_COMMON_FILE_PLUS_ICON                      "00_icon_plus.png"
+
+
+#endif /*__MSG_UI_IMAGE_RESOURCE__*/
+
diff --git a/common/msg-ui-util.h b/common/msg-ui-util.h
new file mode 100755 (executable)
index 0000000..8662772
--- /dev/null
@@ -0,0 +1,222 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UTIL_H__
+#define __MSG_UTIL_H__
+
+#include <stdio.h>
+#include <string.h>
+#include "dlog.h"
+#include <vconf.h>
+#include "msg-ui-bundle.h"
+
+#include <unicode/udat.h>
+#include <unicode/utypes.h>
+#include <unicode/ustring.h>
+
+#ifndef MSG_BOOL
+#define MSG_BOOL char
+#endif
+#ifndef TRUE
+#define TRUE   1
+#endif
+#ifndef FALSE
+#define FALSE  0
+#endif
+
+
+#define MESSAGE_PKGNAME        "message"
+
+#define _EDJ(o)                elm_layout_edje_get(o)
+
+#define TAG_MSG_UI                     "MESSAGE_APP"
+
+#define MSG_UI_LEVEL_DEBUG             0
+#define MSG_UI_LEVEL_ERR               1
+#define MSG_UI_LEVEL_ASSERT            2
+
+#define DEF_BUF_LEN_D  (10)
+#define DEF_BUF_LEN_S  (128)
+#define DEF_BUF_LEN    (512)
+#define DEF_BUF_LEN_L  (4096)
+
+#define DEF_PATH_MAX   (4096)
+#define DEF_IMG_PATH_LEN       (1024)
+#define DEF_MAX_MSG_TEXT_LEN   (153*15)
+#define MSG_UI_URL_MAX_LEN      (1024)
+#define DEF_MAX_EMAIL_LEN      (255)
+#define DEF_MAX_FILTER_LEN     (40)
+
+#define DEF_THREAD_ADDR_LEN    (200)
+#define DEF_THREAD_NAME_LEN    (200)
+
+#define DEF_VALID_ADDRESS_LEN  (9)
+
+#define MSG_UI_TIME_PATTERN_12H                "hma"
+#define MSG_UI_TIME_PATTERN_24H                "Hm"
+#define MSG_UI_DATE_PATTERN_DEFAULT    "EEEMMMdd"
+#define MSG_UI_DATE_PATTERN_YEAR               "EEEMMMddyyyy"
+
+enum {
+       MSG_UI_RET_ERR = -1,
+       MSG_UI_RET_SUCCESS = 0,
+};
+
+#define D_PRINT(fmt, args...)       \
+       LOG(LOG_DEBUG, TAG_MSG_UI, fmt, ##args);
+
+#define D_MSG(fmt, args...)       \
+       LOG(LOG_DEBUG, TAG_MSG_UI, "\n[%s %s() #%d ]" fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__,  __LINE__, ##args);
+
+#define D_EMSG(fmt, args...)       \
+       LOG(LOG_ERROR, TAG_MSG_UI, "\n[ERROR][%s %s() #%d ]" fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, ##args);
+
+#define D_ENTER\
+       LOG(LOG_DEBUG, TAG_MSG_UI, "\n[ENTER][%s %s(%p) #%d ]>>>>>\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __FUNCTION__,  __LINE__);
+
+#define D_LEAVE\
+       LOG(LOG_DEBUG, TAG_MSG_UI, "\n[LEAVE][%s %s() #%d]<<<<<\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__);
+
+#define D_MSG_RETM_IF(expr, fmt, args...) do { \
+               if (expr) { \
+                       LOG(LOG_ERROR, TAG_MSG_UI, "\n[File: %s : %s() #%d][(%s)] Return message : " fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, #expr, ##args); \
+                       return; \
+               } \
+       } while (0)
+
+#define D_MSG_RETVM_IF(expr, val, fmt, args...) do { \
+                       if (expr) { \
+                               LOG(LOG_ERROR, TAG_MSG_UI, "\n[File: %s : %s() #%d][(%s)] Return value : %d, message : " fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, #expr, val, ##args); \
+                               return (val); \
+                       } \
+               } while (0)
+
+
+#define MSG_UI_DEBUG(level, fmt, args...)       \
+       LOG(LOG_DEBUG, TAG_MSG_UI, "\n[File: %s : %s() #%d] " fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, ##args);
+#define MSG_UI_ENTER(level)    \
+       LOG(LOG_DEBUG, TAG_MSG_UI, "\n[File: %s : %s() #%d] enter \n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__),  __FUNCTION__, __LINE__);
+#define MSG_UI_LEAVE(level)    \
+       LOG(LOG_DEBUG, TAG_MSG_UI, "\n[File: %s : %s() #%d] leave \n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__);
+
+#define MSG_UI_RET_IF(level, expr) do { \
+               if (expr) { \
+                       LOG(LOG_ERROR, TAG_MSG_UI, "\n[File: %s : %s() #%d][(%s)] Return\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, #expr); \
+                       return; \
+               } \
+       } while (0)
+#define MSG_UI_RETV_IF(level, expr, val) do { \
+               if (expr) { \
+                       LOG(LOG_ERROR, TAG_MSG_UI, "\n[File: %s : %s() #%d][(%s)] Return value : %d\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, #expr, val); \
+                       return (val); \
+               } \
+       } while (0)
+#define MSG_UI_RETM_IF(level, expr, fmt, args...) do { \
+               if (expr) { \
+                       LOG(LOG_ERROR, TAG_MSG_UI, "\n[File: %s : %s() #%d][(%s)] Return message : " fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, #expr, ##args); \
+                       return; \
+               } \
+       } while (0)
+#define MSG_UI_RETVM_IF(level, expr, val, fmt, args...) do { \
+               if (expr) { \
+                       LOG(LOG_ERROR, TAG_MSG_UI, "\n[File: %s : %s() #%d][(%s)] Return value : %d, message : " fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, #expr, val, ##args); \
+                       return (val); \
+               } \
+       } while (0)
+
+
+#define MSG_THREAD_UG_NAME             "msg-thread-efl"
+#define MSG_COMPOSER_UG_NAME           "msg-composer-efl"
+#define MSG_SETTING_UG_NAME            "msg-setting-efl"
+#define MSG_BUBBLE_UG_NAME             "msg-conversation-efl"
+#define MSG_VIEWER_UG_NAME             "msg-viewer-efl"
+
+#define PRIVACY_SETTING_UG_NAME                "setting-passwd-efl"
+#define EMAIL_COMPOSER_UG_NAME         "email-composer-efl"
+#define CALL_SETTING_UG_NAME           "setting-call-efl"
+
+/* Other application's pkg name */
+#define VIDEO_CALL_PKG_NAME            "org.tizen.vtmain"
+#define VOICE_CALL_PKG_NAME            "org.tizen.call"
+#define VIDEO_PLAYER_PKG_NAME          "org.tizen.video-player"
+
+/* NOTIFY MESSAGE */
+#define MSG_UI_NOTI_UNDER_CONTRUCT     "Under construction"
+#define MSG_UI_NOTI_BLOCKED            "Blocked"
+#define MSG_UI_NOTI_ALREADY_BLOCKED    "Already blocked for this address"
+
+/* Navigation icon*/
+#define MSG_HEADER_ICON_CANCEL                 "01_header_icon_cancel.png"
+#define MSG_HEADER_ICON_DONE                   "01_header_icon_done.png"
+
+#define MSG_TITLE_ICON_VOICECALL                       "M01_icon_voice_call.png"
+#define MSG_TITLE_ICON_VIDEOCALL                       "M01_icon_video_call.png"
+#define MSG_TITLE_ICON_ADD_TO_CONTACT  "01_controllbar_icon_add_to_contact.png"
+#define MSG_TITLE_ICON_BLOCK                           "M01_icon_block.png"
+#define MSG_TITLE_ICON_UNBLOCK                         "M01_icon_unblock.png"
+#define MSG_CONTROLBAR_ICON_VIEW_CONTACT       "M01_icon_view_contact.png"
+
+/* Controlbar Icon */
+#define MSG_CONTROLBAR_IMG_PATH                IMGDIR"/controlbar/"
+
+#define MSG_CONTROLBAR_ICON_COMPOSE            MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_compose.png"
+#define MSG_CONTROLBAR_ICON_CANCEL             MSG_CONTROLBAR_IMG_PATH"01_controllbar_icon_close.png"
+#define MSG_CONTROLBAR_ICON_DELETE             MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_delete.png"
+#define MSG_CONTROLBAR_ICON_FORWARD            MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_forward.png"
+#define MSG_CONTROLBAR_ICON_MORE                       MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_more.png"
+#define MSG_CONTROLBAR_ICON_SETTINGS           MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_settings.png"
+#define MSG_CONTROLBAR_ICON_EDIT                       MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_edit.png"
+#define MSG_CONTROLBAR_ICON_MESSAGEBOX         MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_message_boxes.png"
+#define MSG_CONTROLBAR_ICON_PROTECTION_OFF     MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_protection_off.png"
+#define MSG_CONTROLBAR_ICON_CANCEL_MSG         MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_cancel_message.png"
+#define MSG_CONTROLBAR_ICON_COPY_PHONE         MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_copy_to_phone.png"
+#define MSG_CONTROLBAR_ICON_RESTORE                    MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_restore.png"
+
+/* viewer */
+#define MSG_CONTROLBAR_ICON_PLAY                       MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_Play.png"
+#define MSG_CONTROLBAR_ICON_ATTACH             MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_attach.png"
+#define MSG_CONTROLBAR_ICON_REPLY                      MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_reply.png"
+#define MSG_CONTROLBAR_ICON_RESEND             MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_resend.png"
+
+/* setting */
+#define MSG_CONTROLBAR_ICON_CREATE             MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_create.png"
+
+
+typedef enum {
+       MSG_TIME_FORMAT_12H = 0,
+       MSG_TIME_FORMAT_24H,
+       MSG_TIME_FORMAT_UNKNOWN
+
+} msg_time_format;
+
+enum {
+       CONTROLBAR_ITEM_1 = 0,
+       CONTROLBAR_ITEM_2,
+       CONTROLBAR_ITEM_3,
+       CONTROLBAR_ITEM_4,
+       CONTROLBAR_ITEM_MAX
+};
+
+enum {
+       MSG_UI_STATE_NONE = 0,
+       MSG_UI_STATE_RUNNING,
+       MSG_UI_STATE_PAUSE,
+       MSG_UI_STATE_DESTROY,
+       MSG_UI_STATE_MAX,
+};
+
+#endif /* __MSG_UTIL_H__ */
diff --git a/composer/CMakeLists.txt b/composer/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..cde262b
--- /dev/null
@@ -0,0 +1,69 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-msg-composer-efl C)
+
+#SET (COMPOSER composer)
+SET (UGCOMPOSER ug-msg-composer-efl)
+#################################
+#      Message composer        #
+#################################
+SET(COMPOSER_SRCS
+       ./src/gadget/msg-ui-composer-gadget.c
+       ./src/external/msg-ui-composer-external.c
+       ./src/message/msg-ui-composer-message.c
+       ./src/util/msg-ui-composer-util.c
+       ./src/ui-composer/msg-ui-composer-attachment.c
+       ./src/ui-composer/msg-ui-composer-body.c
+       ./src/ui-composer/msg-ui-composer-body-page.c
+       ./src/ui-composer/msg-ui-composer-body-callback.c
+       ./src/ui-composer/msg-ui-composer-recipient.c
+       ./src/ui-composer/msg-ui-composer-recipient-callback.c
+       ./src/ui-composer/msg-ui-composer-popup.c
+       ./src/ui-composer/msg-ui-composer-predictsearch.c
+       ./src/ui-composer/msg-ui-composer-subject.c
+       ./src/ui-composer/msg-ui-composer-common.c
+       ./src/ui-composer/msg-ui-composer-pageduration.c
+       ./src/ui-composer/msg-ui-composer-main.c
+       ./src/bubble/msg-ui-composer-bubble-main.c
+       ./src/bubble/msg-ui-composer-bubble-list.c
+       ./src/bubble/msg-ui-composer-bubble-callback.c
+       ./src/bubble/msg-ui-composer-bubble-util.c
+)
+
+INCLUDE_DIRECTORIES(
+               ${CMAKE_CURRENT_SOURCE_DIR}/include
+               ${CMAKE_CURRENT_SOURCE_DIR}/src/ui-composer
+               ${CMAKE_CURRENT_SOURCE_DIR}/src/util
+               ${CMAKE_SOURCE_MAIN_DIR}
+               ${CMAKE_SOURCE_COMMON_DIR}
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall")
+SET(CMAKE_LDFLAGS "-Wl,-zdefs" )
+
+ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{PREFIX}\"")
+ADD_DEFINITIONS("-DDATAFS=\"$ENV{DATADIR}\"")
+ADD_DEFINITIONS("-DTARGET")
+ADD_DEFINITIONS("-DSLP_PROF")
+
+ADD_LIBRARY(${UGCOMPOSER} SHARED ${COMPOSER_SRCS})
+TARGET_LINK_LIBRARIES(${UGCOMPOSER} ${CMAKE_LDFLAGS} ${pkgs_LDFLAGS} -L${CMAKE_SOURCE_COMMON_DIR} -lmsg-common)
+
+ADD_CUSTOM_TARGET(composer.edj
+                COMMAND edje_cc -id
+                               ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+                               ${CMAKE_CURRENT_SOURCE_DIR}/data/composer_edc/composer_main.edc
+                               ${CMAKE_CURRENT_SOURCE_DIR}/data/composer_edc/composer.edj
+                               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/data/composer_edc/composer_main.edc
+
+)
+
+ADD_DEPENDENCIES(${UGCOMPOSER} composer.edj)
+
+INSTALL(TARGETS ${UGCOMPOSER} DESTINATION ${UGDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/composer/data/composer_edc/composer.edj DESTINATION ${EDJDIR})
+
diff --git a/composer/data/composer_edc/composer_main.edc b/composer/data/composer_edc/composer_main.edc
new file mode 100755 (executable)
index 0000000..26dae7c
--- /dev/null
@@ -0,0 +1,25 @@
+/* Black Theme of Composer */
+
+#include "msg-ui-composer-data.edc"
+
+#define IMG_BODY_INPUT_FIELD "M01_search_input_field_bg.png"
+#define IMG_BODY_ATTACH_INPUT_FIELD "M01_search_input_field_attach_bg.png"
+#define IMG_BODY_BG_FIELD "M01_input_bg.png"
+
+#define BORDER_BODY_INPUT_FIELD 8 8 8 8
+#define BORDER_ATTACH_INPUT_FIELD 7 7 7 7
+#define BORDER_BODY_BG_FIELD 2 2 2 2
+
+collections
+{
+
+#include "msg-ui-composer-main.edc"
+#include "msg-ui-composer-body.edc"
+#include "msg-ui-composer-recipient.edc"
+
+#include "msg-ui-composer-subject.edc"
+#include "msg-ui-composer-attachment.edc"
+#include "msg-ui-composer-custom.edc"
+
+#include "msg-ui-composer-bubble.edc"
+}
diff --git a/composer/data/composer_edc/msg-ui-composer-attachment.edc b/composer/data/composer_edc/msg-ui-composer-attachment.edc
new file mode 100755 (executable)
index 0000000..d2aa3b5
--- /dev/null
@@ -0,0 +1,280 @@
+/***********************************************************************
+ * Attachment
+ **************************************************************************/
+
+#define MSG_COMPOSER_ATTACHMENT_H 90
+#define MSG_COMPOSER_ATTACHMENT_FIELD_H 74
+#define ATTACHMENT_DELBUTTON_SIZE 48 48
+#define ATTACHMENT_IMAGE_SIZE 48 48
+#define COLOR_BODY_ATTACH_TEXT 251 85 40 255
+
+group
+{
+       name: "composer/attachment/main";
+       images {
+               image: IMG_BODY_ATTACH_INPUT_FIELD COMP;
+       }
+
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSG_COMPOSER_ATTACHMENT_H;
+                               fixed: 0 1;
+                               color: 0 0 0 0;
+                       }
+               }
+               PADDING_TOP("padding_top_16", 16);
+               PADDING_TOP("padding_top", 29);
+               PADDING_LEFT("padding_left", 16);
+               PADDING_RIGHT("padding_right", 16);
+               PADDING_RIGHT("padding_right_32", 32);
+               PADDING_BOTTOM("padding_bottom", 13);
+               part {
+                       name: "img.body";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSG_COMPOSER_ATTACHMENT_FIELD_H;
+                               fixed: 1 0;
+                               rel1 {
+                                       to_y: "padding_top_16";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       relative: 0.0 1.0;
+                               }
+                               image {
+                                       normal: IMG_BODY_ATTACH_INPUT_FIELD;
+                                       border: BORDER_ATTACH_INPUT_FIELD;
+                               }
+                       }
+               }
+               part {
+                       name: "swl.image";
+                       type: SWALLOW;
+                       scale: 1;
+
+                       description {
+                               state: "default" 0.0;
+                               min: ATTACHMENT_IMAGE_SIZE;
+                               max: ATTACHMENT_IMAGE_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.5;
+                       }
+               }
+               part {
+                       name: "text.filename";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x: "swl.image";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
+                                       offset: 16 0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right_32";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                                       offset: 0 0;
+                               }
+                               align: 0.0 0.5;
+                               color: COLOR_BODY_ATTACH_TEXT;
+                               text {
+                                       font: SLP_FONT_REGULAR;
+                                       text_class: FONT_TEXT_CLASS_REGULAR;
+                                       size: 34;
+                                       align: 0.0 0.5;
+                                       text: "";
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "img_body_clicked";
+                               source: "img.body";
+                               signal: "mouse,clicked,1";
+                               script {
+                                       new st[31];
+                                       new Float:vl;
+                                       get_state(PART:"img.body", st, 30, vl)
+
+                                       if (!strcmp(st, "default"))
+                                               emit ("attach_clicked", "");
+                               }
+                       }
+               }
+       }
+}
+
+group
+{
+       name: "composer/attachment/item";
+       images {
+               image: IMG_BODY_ATTACH_INPUT_FIELD COMP;
+       }
+
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSG_COMPOSER_ATTACHMENT_H;
+                               fixed: 0 1;
+                               color: 0 0 0 0;
+                       }
+               }
+               PADDING_TOP("padding_top_16", 16);
+               PADDING_TOP("padding_top", 29);
+               PADDING_LEFT("padding_left", 16);
+               PADDING_RIGHT("padding_right", 16);
+               PADDING_RIGHT("padding_right_32", 32);
+               PADDING_BOTTOM("padding_bottom", 13);
+               part {
+                       name: "img.body";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSG_COMPOSER_ATTACHMENT_FIELD_H;
+                               fixed: 1 0;
+                               rel1 {
+                                       to_y: "padding_top_16";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       relative: 0.0 1.0;
+                               }
+                               image {
+                                       normal: IMG_BODY_ATTACH_INPUT_FIELD;
+                                       border: BORDER_ATTACH_INPUT_FIELD;
+                               }
+                       }
+               }
+               part {
+                       name: "swl.image";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ATTACHMENT_IMAGE_SIZE;
+                               max: ATTACHMENT_IMAGE_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.5;
+                       }
+               }
+               part {
+                       name: "text.filename";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x: "swl.image";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
+                                       offset: 16 0;
+                               }
+                               rel2 {
+                                       to_x: "swl.delete_btn";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                                       offset: -16 0;
+                               }
+                               align: 0.0 0.5;
+                               color: COLOR_BODY_ATTACH_TEXT;
+                               text {
+                                       font: SLP_FONT_REGULAR;
+                                       text_class: FONT_TEXT_CLASS_REGULAR;
+                                       size: 32;
+                                       align: 0.0 0.5;
+                                       text: "";
+                               }
+                       }
+               }
+               part {
+                       name: "rect.delete_btn";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ATTACHMENT_DELBUTTON_SIZE;
+                               max: ATTACHMENT_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding_right_32";
+                                       to_y: "padding_top";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right_32";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 1.0 0.0;
+                               color: 155 55 155 255;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "swl.delete_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: ATTACHMENT_DELBUTTON_SIZE;
+                               max: ATTACHMENT_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding_right_32";
+                                       to_y: "padding_top";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right_32";
+                                       to_y: "padding_top";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+       }
+}
+
diff --git a/composer/data/composer_edc/msg-ui-composer-body.edc b/composer/data/composer_edc/msg-ui-composer-body.edc
new file mode 100755 (executable)
index 0000000..bb4e8c7
--- /dev/null
@@ -0,0 +1,648 @@
+#define MSGC_BODY_PAGE_IMAGE_H 74
+#define MSGC_BODY_PAGE_MIN_H 74
+#define MSGC_BODY_MAIN_MIN_H (MSGC_BODY_PAGE_MIN_H + 20 + 20)
+
+#define BODY_ADDBUTTON_SIZE 64 64
+#define BODY_SENDBUTTON_SIZE 108 74
+#define BODYPAGE_DELBUTTON_SIZE 48 48
+
+#define BODY_CHAR_COUNT_TEXT_SIZE 24
+
+#define COLOR_BODY_MEDIA_TEXT 251 85 40 255
+#define BODY_MEDIA_TEXT_SIZE 34
+
+group
+{
+       name: "composer/body/media_sound";
+       images {
+               image: IMG_BODY_INPUT_FIELD COMP;
+       }
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 76;
+                               fixed: 0 1;
+                               color: 0 0 0 0;
+                               align: 0.5 0.5;
+                       }
+               }
+               PADDING_TOP(padding_top_1, 1);
+               PADDING_TOP(padding_top, 6);
+               PADDING_LEFT(padding_left, 16);
+               PADDING_RIGHT(padding_right, 16);
+               PADDING_BOTTOM(padding_bottom, 21);
+               PADDING_BOTTOM(padding_bottom_15, 15);
+               part {
+                       name: "rect.thumbnail";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1{to: "swl.thumbnail"; relative: 0.0 0.0;}
+                               rel2{to: "swl.thumbnail"; relative: 1.0 1.0;}
+                               align: 0.5 0.5;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "bg_image";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1{ to_x: "padding_left"; to_y: "padding_top_1"; relative: 1.0 1.0;}
+                               rel2{ to_x: "padding_right"; to_y: "padding_bottom_15"; relative: 0.0 0.0;}
+                               align: 0.5 0.5;
+                               image {
+                                       normal: IMG_BODY_ATTACH_INPUT_FIELD;
+                                       border: BORDER_ATTACH_INPUT_FIELD;
+                               }
+                       }
+               }
+               part {
+                       name: "swl.thumbnail";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 48 48;
+                               fixed: 1 0;
+                               rel1 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "text.filename";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x: "swl.thumbnail";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
+                                       offset: 16 0;
+                               }
+                               rel2 {
+                                       to_x: "swl.del_button";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                                       offset: -16 0;
+                               }
+                               align: 0.0 0.5;
+                               color: COLOR_BODY_MEDIA_TEXT;
+                               text {
+                                       font: SLP_FONT_REGULAR;
+                                       text_class: FONT_TEXT_CLASS_REGULAR;
+                                       size: BODY_MEDIA_TEXT_SIZE;
+                                       align: 0.0 0.5;
+                                       text: "";
+                               }
+                       }
+               }
+               part {
+                       name: "swl.del_button";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BODYPAGE_DELBUTTON_SIZE;
+                               max: BODYPAGE_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               programs {
+                       program {
+                               name: "sound_clicked";
+                               source: "bg_image";
+                               signal: "mouse,clicked,1";
+                               script {
+                                       new st[31];
+                                       new Float:vl;
+                                       get_state(PART:"bg_image", st, 30, vl)
+
+                                       if (!strcmp(st, "default"))
+                                               emit ("sound_clicked", "");
+                               }
+                       }
+               }
+       }
+}
+
+group
+{
+       name: "composer/body/media_default";
+       images  {
+               image: IMG_BODY_INPUT_FIELD COMP;
+       }
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 100;
+                               fixed: 1 1;
+                               color: 0 0 0 0;
+                               align: 0.5 0.5;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 132 132;
+                               max: 132 132;
+                               rel1{ relative: 0.0 0.0; }
+                               rel2{ relative: 0.0 1.0; }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "bg_image";
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1{ to:"rect.thumbnail";relative: 0.0 0.0; }
+                               rel2{ to:"rect.thumbnail";relative: 1.0 1.0; }
+                               align: 0.5 0.5;
+                               image {
+                                       normal: IMG_BODY_INPUT_FIELD;
+                                       border: BORDER_BODY_INPUT_FIELD;
+                               }
+                       }
+               }
+               part {
+                       name: "swl.thumbnail";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {
+                                       to: "rect.thumbnail";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.thumbnail";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "swl.del_button";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BODYPAGE_DELBUTTON_SIZE;
+                               max: BODYPAGE_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.thumbnail";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.thumbnail";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+       }
+}
+
+group {
+       name: "composer/body/page";
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events:  0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSGC_BODY_PAGE_MIN_H;
+                               color: 0 0 0 0;
+                       }
+               }
+               PADDING_TOP("padding_top", 7);
+               PADDING_TOP("padding_top_13", 13);
+               PADDING_LEFT("padding_left", 16);
+               PADDING_RIGHT("padding_right", 16);
+               PADDING_BOTTOM("padding_bottom", 7);
+               part {
+                       name: "swl.page";
+                       type: SWALLOW;
+                       scale:1;
+                       description { //hide delete button
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 { to_x: "padding_left"; to_y: "padding_top"; relative: 1.0 1.0; }
+                               rel2 { to_x: "padding_right"; to_y: "padding_bottom"; relative: 0.0 0.0; }
+                               align: 0.5 0.5;
+                       }
+                       description { //show delete button
+                               state: "default" 0.1;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 { to_x: "padding_left"; to_y: "padding_top"; relative: 1.0 1.0; }
+                               rel2 { to_x: "rect.del_button"; to_y: "padding_bottom"; relative: 0.0 0.0; offset: -16 0; }
+                               align: 0.5 0.5;
+                       }
+               }
+               part {
+                       name: "rect.del_button";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BODYPAGE_DELBUTTON_SIZE;
+                               max: BODYPAGE_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               visible: 0;
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top_13";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top_13";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "swl.del_button";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0; //hide
+                               min: BODYPAGE_DELBUTTON_SIZE;
+                               max: BODYPAGE_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               visible: 0;
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top_13";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top_13";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+                       description {
+                               state: "default" 0.1; //show
+                               min: BODYPAGE_DELBUTTON_SIZE;
+                               max: BODYPAGE_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               visible: 1;
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top_13";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top_13";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+       }
+       programs
+       {
+               program {
+                       name: "hide.delete";
+                       signal: "hide.delete";
+                       source: "*";
+                       action: STATE_SET "default" 0.0;
+                       target: "swl.page";
+                       target: "swl.del_button";
+               }
+               program {
+                       name: "show.delete";
+                       signal: "show.delete";
+                       source: "*";
+                       action: STATE_SET "default" 0.1;
+                       target: "swl.page";
+                       target: "swl.del_button";
+               }
+       }
+}
+
+/************************************************************************************************/
+
+group {
+       name: "composer/body/page_main";
+       images {
+               image: IMG_BODY_INPUT_FIELD COMP;
+       }
+
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSGC_BODY_PAGE_MIN_H;
+                               color: 0 0 0 0;
+                       }
+               }
+               PADDING_TOP("padding_top_16", 16);
+               PADDING_RIGHT("padding_right", 16);
+               part {
+                       name: "img.body";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSGC_BODY_PAGE_IMAGE_H;
+                               fixed: 0 1;
+                               visible: 1;
+                               rel1 { to_y: "padding_top_16"; relative: 0.0 1.0; }
+                               rel2 { to_x: "padding_right"; relative: 0.0 1.0; }
+                               image {
+                                       normal: IMG_BODY_INPUT_FIELD;
+                                       border: BORDER_BODY_INPUT_FIELD;
+                               }
+                       }
+               }
+               part {
+                       name: "swl.page.main";
+                       type: SWALLOW;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSGC_BODY_PAGE_MIN_H;
+                               fixed: 1 0;
+                               rel1 { to_y: "padding_top_16"; relative: 0.0 1.0; }
+                               rel2 { to_x: "padding_right"; relative: 0.0 1.0; }
+                               align: 0.5 0.5;
+                       }
+               }
+       }
+}
+
+group {
+       name: "composer/body/main";
+       images {
+               image: IMG_BODY_BG_FIELD COMP;
+       }
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSGC_BODY_MAIN_MIN_H;
+                               rel1{ relative: 0.0 0.0; }
+                               rel2{ relative: 1.0 1.0; }
+                       }
+               }
+               part {
+                       name: "img.body.bg";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSGC_BODY_MAIN_MIN_H;
+                               fixed: 0 1;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               image {
+                                       normal: IMG_BODY_BG_FIELD;
+                                       border: BORDER_BODY_BG_FIELD;
+                               }
+                       }
+               }
+               PADDING_TOP("padding_top", 4);
+               PADDING_LEFT("padding_left", 16);
+               PADDING_RIGHT("padding_right", 16);
+               PADDING_BOTTOM("padding_bottom", 20);
+               PADDING_BOTTOM("padding_bottom_25", 25);
+               part {
+                       name: "rect_top_bg";
+                       type: RECT;
+                       scale: 0;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               visible: 1;
+                               rel1{ relative: 0.0 0.0; }
+                               rel2{ relative: 1.0 0.0; }
+                               align: 0.0 0.0;
+                               color: 57 60 65 255;
+                       }
+               }
+               part {
+                       name: "rb_rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events:  0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               max: 9999 110;
+                               fixed: 0 1;
+                               visible: 1;
+                               rel1 {
+                                       to_x: "body.swl.send_button";
+                                       to_y: "padding_top";
+                                       relative: 0.0 1.0;
+                                       offset: 0 2;
+                               }
+                               rel2 {
+                                       to_x: "body.swl.send_button";
+                                       to_y: "padding_bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 1.0 1.0;
+                       }
+               }
+               part {
+                       name: "rect.add_bt_area";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BODY_ADDBUTTON_SIZE;
+                               max: BODY_ADDBUTTON_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_bottom_25";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_bottom_25";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "rect.tap_area_add_main";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 16 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel1 {
+                                       to_x: "rect.add_bt_area";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x: "rect.add_bt_area";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "body.swl.add_button";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.add_bt_area";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.add_bt_area";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.5 0.5;
+                       }
+               }
+               part {
+                       name: "body.swl.main";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 0 0;
+                               rel1 {
+                                       to_x: "rect.tap_area_add_main";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
+                                       offset: 0 0;
+                               }
+                               rel2 {
+                                       to_x: "body.swl.send_button";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "text.char_count";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       clip_to: "rb_rect";
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x: "body.swl.send_button";
+                                       to_y: "rb_rect";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to: "body.swl.send_button";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.5 0.5;
+                               color: 249 249 249 255;
+                               text {
+                                       font: SLP_FONT_REGULAR;
+                                       text_class: FONT_TEXT_CLASS_REGULAR;
+                                       size: BODY_CHAR_COUNT_TEXT_SIZE;
+                                       align: 0.5 0.5;
+                                       text: "";
+                               }
+                       }
+               }
+               part {
+                       name: "body.swl.send_button";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BODY_SENDBUTTON_SIZE;
+                               max: BODY_SENDBUTTON_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                                       offset: 0 0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                                       offset: 0 0;
+                               }
+                               align: 1.0 1.0;
+                       }
+               }
+       }
+}
diff --git a/composer/data/composer_edc/msg-ui-composer-bubble.edc b/composer/data/composer_edc/msg-ui-composer-bubble.edc
new file mode 100755 (executable)
index 0000000..0aca530
--- /dev/null
@@ -0,0 +1,379 @@
+\r
+group\r
+{\r
+       name: "composer/content/bubble";\r
+       parts{\r
+               part{\r
+                       name: "rect";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       mouse_events : 0;\r
+                       description\r
+                       {\r
+                               state: "default" 0.0;\r
+                               color: 0 0 0 0;\r
+                       }\r
+               }\r
+               part{\r
+                       name : "swl.sel_all";\r
+                       type : SWALLOW;\r
+                       scale : 1;\r
+                       description{\r
+                               state: "default" 0.0;\r
+                               fixed : 1 1;\r
+                               min : 0 0;\r
+                               align : 0.0 0.0;\r
+                               rel1 {to: "rect"; relative:0.0 0.0;}\r
+                               rel2 {to: "rect"; relative:1.0 0.0;}\r
+                       }\r
+               }\r
+               part{\r
+                       name: "swl.composer.body";\r
+                       type: SWALLOW;\r
+                       scale: 1;\r
+                       description\r
+                       {\r
+                               state: "default" 0.0;\r
+                               fixed :1 1;\r
+                               min : 0 1;\r
+                               align: 0.0 1.0;\r
+                               rel1{to: "rect"; relative: 0.0 1.0;}\r
+                               rel2{to: "rect"; relative: 1.0 1.0;}\r
+                       }\r
+               }\r
+               part{\r
+                       name: "swl.bubble.content";\r
+                       type: SWALLOW;\r
+                       scale: 1;\r
+                       description\r
+                       {\r
+                               state: "default" 0.0;\r
+                               fixed: 1 1;\r
+                               min: 0 1;\r
+                               rel1{to: "swl.sel_all"; relative: 0.0 1.0;}\r
+                               rel2{to: "swl.composer.body"; relative: 1.0 0.0;}\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+\r
+group {\r
+       name: "composer/content/bubble/media";\r
+\r
+       parts {\r
+               part{\r
+                       name: "rect";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       mouse_events : 0;\r
+                       description\r
+                       {\r
+                               state: "default" 0.0;\r
+                               color: 0 0 0 0;\r
+                               rel1{relative: 0.0 0.0;}\r
+                               rel2{relative: 1.0 1.0;}\r
+                       }\r
+               }\r
+               part {\r
+                       name: "bubble.media.padding_bottom";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               color: 0 0 0 0;\r
+                               fixed: 1 1;\r
+                               min: 0 1;\r
+                               max: 0 1;\r
+                               rel1{relative: 0.0 1.0;}\r
+                               rel2{relative: 1.0 1.0;}\r
+                       }\r
+               }\r
+               part {\r
+                       name: "bubble.media.padding_right";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               color: 0 0 0 0;\r
+                               fixed: 1 1;\r
+                               min: 1 0;\r
+                               max: 1 0;\r
+                               rel1{relative: 1.0 0.0;}\r
+                               rel2{relative: 1.0 1.0;}\r
+                       }\r
+               }\r
+               part {\r
+                       name: "bubble.swallow.media";\r
+                       type: SWALLOW;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               fixed: 0 0;\r
+                               align: 0.0 0.0;\r
+                               rel1{to: "rect"; relative: 0.0 0.0;}\r
+                               rel2{to: "rect"; relative: 1.0 0.0;}\r
+                       }\r
+               }\r
+               part {\r
+                       name: "msgtype_text";\r
+                       type: TEXT;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               text {\r
+                                       font: "SLP:style=Medium";\r
+                                       size: 28;\r
+                                       min: 0 0;\r
+                                       max: 1 0;\r
+                                       align: 0.5 0.5;\r
+                               }\r
+                               color: 0 0 0 255;\r
+                               align: 1.0 0.5;\r
+                               fixed: 1 0;\r
+                               rel1 { relative: 0.0 0.0;}\r
+                               rel2 { relative: 0.0 1.0; to_x: "bubble.swallow.more"; offset: -5 0;}\r
+                       }\r
+               }\r
+\r
+               part {\r
+                       name: "bubble.swallow.more";\r
+                       type: SWALLOW;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               fixed: 0 0;\r
+                               align: 1.0 0.0;\r
+                               rel1{\r
+                                       to_x: "bubble.media.padding_right";\r
+                                       to_y: "bubble.swallow.media";\r
+                                       relative: 0.0 1.0;\r
+                               }\r
+                               rel2{\r
+                                       to_x: "bubble.media.padding_right";\r
+                                       to_y: "bubble.media.padding_bottom";\r
+                                       relative: 0.0 0.0;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+group {\r
+       name: "composer/content/bubble/date_line";\r
+\r
+       images {\r
+               image: "00_MessageBubble_date_bg.png" COMP;\r
+       }\r
+\r
+       parts {\r
+               part {\r
+                       name: "top_padding";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               fixed: 1 1;\r
+                               min: 0 5;\r
+                               color: 0 0 0 0;\r
+                               rel1 {relative: 0.0 0.0;}\r
+                               rel2 {relative: 1.0 0.0;}\r
+                               align: 0.0 0.0;\r
+                       }\r
+               }\r
+               part {\r
+                       name: "base";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       repeat_events: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               min: 0 38;\r
+                               color: 0 0 0 0;\r
+                               rel1 {to_y: "top_padding"; relative: 0.0 1.0;}\r
+                               rel2 {to_y: "bottom_padding"; relative: 1.0 0.0;}\r
+                               align: 0.0 0.5;\r
+                       }\r
+               }\r
+               part {\r
+                       name: "bottom_padding";\r
+                       type: RECT;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               fixed: 1 1;\r
+                               min: 0 20;\r
+                               color: 0 0 0 0;\r
+                               rel1 { relative: 0.0 1.0;}\r
+                               rel2 { relative: 1.0 1.0;}\r
+                               align: 0.0 1.0;\r
+                       }\r
+               }\r
+               part {\r
+                       name: "date_line_left";\r
+                       type: IMAGE;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               fixed: 0 1;\r
+                               align: 0.0 0.5;\r
+                               rel1 {relative: 0.0 0.45;}\r
+                               rel2 {relative: 0.25 0.55;}\r
+                               image {\r
+                                       normal: "00_MessageBubble_date_bg.png";\r
+                               }\r
+                       }\r
+               }\r
+               part {\r
+                       name: "elm.text.date";\r
+                       type: TEXT;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               align: 0.0 0.5;\r
+                               min: 0 38;\r
+                               fixed: 0 1;\r
+                               text {\r
+                                       font: "SLP:style=Roman";\r
+                                       size: 32;\r
+                                       align: 0.5 0.5;\r
+                               }\r
+                               color: 128 128 128 255;\r
+                               rel1 { to_x : "date_line_left"; relative: 1.0 0.0;}\r
+                               rel2 { to_x : "date_line_right"; relative: 0.0 1.0;}\r
+                       }\r
+               }\r
+\r
+               part {\r
+                       name: "date_line_right";\r
+                       type: IMAGE;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               fixed: 0 1;\r
+                               align: 1.0 0.5;\r
+                               rel1 {relative: 0.75 0.45;}\r
+                               rel2 {relative: 1.0 0.55;}\r
+                               image {\r
+                                       normal: "00_MessageBubble_date_bg.png";\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+group {\r
+       name: "msg_2button_popup";\r
+       #define BUTTON_WIDTH 304.0\r
+       #define BUTTON_HEIGHT 46.0\r
+       #define BUTTON_GAP 12.0\r
+       parts{\r
+               part { name: "top_padding";\r
+                       type: RECT;\r
+                       scale: 1; //allow scaling\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               min : 0 1; //minimum size for gap filler\r
+                               color: 0 0 0 0;\r
+                               fixed: 0 1;\r
+                               rel1 { relative: 0.0 0.0; }\r
+                               rel2 { relative: 1.0 0.0; }\r
+                               align: 0 0;\r
+                       }\r
+               }\r
+               part{\r
+                       name: "left_padding";\r
+                       type:RECT;\r
+                       scale:1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               min: 1 0;\r
+                               fixed: 1 0;\r
+                               rel1 { relative: 0.0 0.0; }\r
+                               rel2 { relative: 0.0 1.0; }\r
+                               color: 0 0 0 0;\r
+                               align: 0 0;\r
+                       }\r
+               }\r
+               part{\r
+                       name: "right_padding";\r
+                       type:RECT;\r
+                       scale:1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               min: 1 0;\r
+                               fixed: 1 0;\r
+                               rel1 { relative: 1.0 0.0; }\r
+                               rel2 { relative: 1.0 1.0; }\r
+                               color: 0 0 0 0;\r
+                               align: 1.0 0;\r
+                       }\r
+               }\r
+               part { name: "btn_top_padding";\r
+                       type: RECT;\r
+                       scale: 1; //allow scaling\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               min : 0 14; //minimum size for gap filler\r
+                               fixed: 0 1;\r
+                               rel1 { relative: 0.0 1.0;  to: "top_padding";}\r
+                               rel2 { relative: 1.0 1.0;  to: "top_padding";}\r
+                               color:  0 0 0 0;\r
+                               align: 0 0;\r
+                       }\r
+               }\r
+               part { name: "button.1";\r
+                       type: SWALLOW;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               fixed: 1 1;\r
+                               align: 0.5 0;\r
+                               min: BUTTON_WIDTH BUTTON_HEIGHT;\r
+                               max: BUTTON_WIDTH BUTTON_HEIGHT;\r
+                               rel1 { relative: 0 1.0; to_y: "btn_top_padding"; }\r
+                       }\r
+               }\r
+               part { name: "button_1_bottom_padding";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               min : BUTTON_WIDTH BUTTON_GAP;\r
+                               max : BUTTON_WIDTH BUTTON_GAP;\r
+                               fixed: 1 1;\r
+                               align: 0.5 0;\r
+                               rel1 { relative: 0 1.0; to_y: "button.1"; }\r
+                               rel2 { relative: 1 1.0; to_y: "button.1"; }\r
+                               color: 0 0 0 0;\r
+                       }\r
+               }\r
+               part { name: "button.2";\r
+                       type: SWALLOW;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               fixed: 1 1;\r
+                               align: 0.5 0;\r
+                               min: BUTTON_WIDTH BUTTON_HEIGHT;\r
+                               max: BUTTON_WIDTH BUTTON_HEIGHT;\r
+                               rel1 { relative: 0 1.0; to_y: "button_1_bottom_padding"; }\r
+                       }\r
+               }\r
+               part { name: "bottom_padding";\r
+                       type: RECT;\r
+                       scale: 1;\r
+                       description {\r
+                               state: "default" 0.0;\r
+                               min : 0 12;\r
+                               max : 0 12;\r
+                               rel1 { relative: 0 1.0; to_y: "button.2"; }\r
+                               rel2 { relative: 1 1.0;}\r
+                               color: 0 0 0 0;\r
+                               align: 0.5 1.0;\r
+                       }\r
+               }\r
+       }//end parts\r
+       #undef BUTTON_WIDTH\r
+       #undef BUTTON_HEIGHT\r
+       #undef BUTTON_GAP\r
+} //end group\r
diff --git a/composer/data/composer_edc/msg-ui-composer-custom.edc b/composer/data/composer_edc/msg-ui-composer-custom.edc
new file mode 100755 (executable)
index 0000000..a935c0c
--- /dev/null
@@ -0,0 +1,487 @@
+#define MSGC_DIALOGUE_H 70
+#define MSGC_DIALOGUE_ICON_W 64
+#define MSGC_DIALOGUE_PADDING_W 16
+#define MSGC_DIALOGUE_ENTRY_W 20
+#define MSGC_DIALOGUE_TEXT_W 180
+#define MSGC_DIALOGUE_TEXT_COLOR 249 249 249 255
+#define MSGC_DIALOGUE_TEXT_SIZE        44
+
+group
+{
+       name: "composer/dialogue/custom";
+
+       parts
+       {
+               part
+               {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description
+                       {
+                               state: "default" 0.0;
+                               min: 0 MSGC_DIALOGUE_H;
+                               fixed: 1 1;
+                               color: 0 0 0 0;
+                       }
+               }
+
+               PADDING_RIGHT("padding_right",MSGC_DIALOGUE_PADDING_W);
+
+               part
+               {
+                       name: "padding.text.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: MSGC_DIALOGUE_PADDING_W 0;
+                               fixed: 1 0;
+                               rel1{
+                                       relative: 0.0 0.0;
+                                       to_x: "elm.text";
+                               }
+                               rel2{
+                                       relative: 0.0 1.0;
+                                       to_x: "elm.text";
+                               }
+
+                               align: 1.0 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part
+               {
+                       name: "padding.entry.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: MSGC_DIALOGUE_PADDING_W 0;
+                               fixed: 1 0;
+                               rel1{
+                                       relative: 0.0 0.0;
+                                       to_x: "dialogue.swl.entry";
+                               }
+                               rel2{
+                                       relative: 0.0 1.0;
+                                       to_x: "dialogue.swl.entry";
+                               }
+                               align: 1.0 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part
+               {
+                       name: "elm.text";
+                       type: TEXT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: MSGC_DIALOGUE_TEXT_W 0;
+                               fixed: 1 0;
+                               rel1{
+                                       to_x: "padding_right";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2{
+                                       to_x: "padding_right";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                               color: MSGC_DIALOGUE_TEXT_COLOR;
+                               text {
+                                       font: SLP_FONT_ROMAN;
+                                       text_class: FONT_TEXT_CLASS_ROMAN;
+                                       size: MSGC_DIALOGUE_TEXT_SIZE;
+                                       min: 0 1;
+                                       align: 0.0 0.5;
+                                       text: "";
+                               }
+                       }
+               }
+
+               part
+               {
+                       name: "dialogue.swl.entry";
+                       type: SWALLOW;
+                       scale: 1;
+                       description
+                       {
+                               state: "default" 0.0;
+                               min: MSGC_DIALOGUE_ENTRY_W 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to_x: "padding.text.left";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2
+                               {
+                                       to_x: "padding.text.left";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.5;
+                       }
+               }
+       }
+}
+
+#define MSGC_DATEFIELD_TXT_COLOR 173 170 165 255
+#define MSGC_DATEFIELD_TXT_SIZE 24
+#define MSGC_DATEFIELD_TEXT_H 60
+
+group {
+       name: "composer/datefield";
+       parts {
+               PADDING_TOP("padding_top", 16);
+               PADDING_LEFT("padding_left", 16);
+               part {
+                       name: "text";
+                       type: TEXT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSGC_DATEFIELD_TEXT_H;
+                               fixed: 0 1;
+                               align: 0.5 0.0;
+                               rel1 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_top";
+                                       relative: 1 1;
+                               }
+                               rel2 {
+                                       relative: 1 0;
+                               }
+                               color: MSGC_DATEFIELD_TXT_COLOR;
+                               text {
+                                       font: SLP_FONT_ROMAN;
+                                       text_class: FONT_TEXT_CLASS_LABEL;
+                                       size: MSGC_DATEFIELD_TXT_SIZE;
+                                       min:  1 0;
+                                       align: 0.0 0.0;
+                                       text: "";
+                               }
+                       }
+               }
+
+               part {
+                       name: "picker";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.5 0.0;
+                               fixed: 1 1;
+                               rel1 { relative: 0 1; to: "text"; }
+                               rel2 { relative: 1 1; to: "text"; }
+                       }
+               }
+       }
+}
+
+#define MSGC_POPUP_INFO_TXT_COLOR_INC "#000000"
+#define MSGC_POPUP_INFO_TXT_SIZE 40
+#define MSGC_POPUP_ENTRY_FIELD_H 74
+styles {
+       style {
+               name: "popup_desc_style";
+               base: "font=SLP:style=Roman font_size="MSGC_POPUP_INFO_TXT_SIZE" align=center color="MSGC_POPUP_INFO_TXT_COLOR_INC" wrap=mixed text_class=slp_roman";
+               tag:  "br" "\n";
+               tag:  "ps" "ps";
+               tag:  "whitecolor" "+ color=#ffffff";
+               tag:  "tab" "\t";
+       }
+}
+
+group {
+       name: "composer/popup/entryview";
+
+       parts {
+               PADDING_TOP("padding_top", 15);
+               PADDING_LEFT("padding_left", 16);
+               PADDING_RIGHT("padding_right", 16);
+               PADDING_BOTTOM("padding_bottom", 22);
+               part {
+                       name: "rect.text";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 120;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "elm.text";
+                       type: TEXTBLOCK;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 { to: "rect.text"; relative: 0.0 0.0; offset: 50 0;}
+                               rel2 { to: "rect.text"; relative: 1.0 1.0; offset: -50 0;}
+                               text {
+                                       style: "popup_desc_style";
+                                       min: 0 0;
+                                       max: 0 1;
+                                       align: 0.5 0.0;
+                               }
+                       }
+               }
+               part
+               {
+                       name: "padding.text.middle";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 15;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "rect.text";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to: "rect.text";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.5 0.0;
+                               visible: 0;
+                       }
+               }
+               part
+               {
+                       name: "img.body";
+                       type: IMAGE;
+                       scale: 1;
+                       description
+                       {
+                               state: "default" 0.0;
+                               min: 0 MSGC_POPUP_ENTRY_FIELD_H;
+                               fixed: 1 0;
+                               rel1 {
+                                       to_x: "padding_left";
+                                       to_y: "padding.text.middle";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               image
+                               {
+                                       normal: IMG_BODY_INPUT_FIELD;
+                                       border: BORDER_BODY_INPUT_FIELD;
+                               }
+                       }
+               }
+               part{
+                       name:"swl.entry";
+                       type: SWALLOW;
+                       scale : 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0;
+                               align: 0.5 1.0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to: "img.body";
+                                       relative: 0.0 0.0;
+                                       offset: 10 7;
+                               }
+                               rel2 {
+                                       to: "img.body";
+                                       relative: 1.0 1.0;
+                                       offset: -10 -7;
+                               }
+                       }
+               }
+       }
+}
+
+#define MSGC_CHECK_POPUP_H 283
+#define MSGC_CHECK_POPUP_W 624
+group {
+       name: "composer/popup/popup_checkview";
+       parts {
+               part {
+                       name: "base";
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                       }
+               }
+
+               PADDING_TOP("padding_top", 25);
+               PADDING_LEFT("padding_left", 16);
+               PADDING_RIGHT("padding_right", 16);
+               PADDING_BOTTOM("padding_bottom", 25);
+
+               part {
+                       name: "body_bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: MSGC_CHECK_POPUP_W MSGC_CHECK_POPUP_H;
+                               max: MSGC_CHECK_POPUP_W MSGC_CHECK_POPUP_H;
+                               rel1 { relative: 0.0 0.0; to: "base"; }
+                               rel2 { relative: 1.0 1.0; to: "base"; }
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part {
+                       name: "text_msg";
+                       type: TEXTBLOCK;
+
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               rel1 { relative: 1.0 1.0; to_x: "padding_left"; to_y: "padding_top"; }
+                               rel2 { relative: 0.0 (181/MSGC_CHECK_POPUP_H); to_x: "padding_right"; to_y: "body_bg"; }
+                               text { style: "popup_desc_style"; }
+                       }
+               }
+
+               part {
+                       name: "check";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.5;
+                               rel1 { relative: 1.0 (206/MSGC_CHECK_POPUP_H); offset: 50 0; to_x: "padding_left"; to_y: "body_bg"; }
+                               rel2 { relative: 1.0 0.0; offset: 50 0; to_x: "padding_left"; to_y: "padding_bottom";}
+                               color: 0 0 0 0;
+                       }
+               }
+
+               part {
+                       name: "check_text";
+                       type: TEXT;
+                       //effect: SHADOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: (130/MSGC_CHECK_POPUP_W) (206/MSGC_CHECK_POPUP_H); to: "body_bg"; }
+                               rel2 { relative: 0.0 0.0; to_x: "padding_right"; to_y: "padding_bottom"; }
+                               text {
+                                       font: "SLP:style=Regular";
+                                       size: 40;
+                                       align: 0.0 0.5;
+                               }
+                               color: 0 0 0 255;
+                       }
+               }
+       }
+}
+
+group {
+       name: "composer/popup/popup_processingview";
+       parts {
+               part {
+                       name: "base";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 166;
+                               fixed: 1 0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name:"pad_t";
+                       type: RECT;
+                       scale : 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 10;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1.to: "base";
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to: "base";
+                               }
+                       }
+               }
+               part {
+                       name:"elm.swallow.content";
+                       type: SWALLOW;
+                       scale : 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       to: "pad_t";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to: "pad_t";
+                               }
+                       }
+               }
+               part {
+                       name:"pad_after_content";
+                       type: RECT;
+                       scale : 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 10;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       to: "elm.swallow.content";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to: "elm.swallow.content";
+                               }
+                       }
+               }
+               part {
+                       name:"elm.swallow.text";
+                       type: SWALLOW;
+                       scale : 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       to: "pad_after_content";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to: "pad_after_content";
+                               }
+                       }
+               }
+       }
+}
diff --git a/composer/data/composer_edc/msg-ui-composer-data.edc b/composer/data/composer_edc/msg-ui-composer-data.edc
new file mode 100755 (executable)
index 0000000..6efa248
--- /dev/null
@@ -0,0 +1,107 @@
+#define IMAGE_PATH                                     ""\r
+#define PREDICT_LIST_H 80\r
+#define SLP_FONT_BOLD   "SLP:style=Bold"\r
+#define SLP_FONT_MEDIUM  "SLP:style=Medium"\r
+#define SLP_FONT_ROMAN   "SLP:style=Roman"\r
+\r
+#define FONT_TEXT_CLASS_BOLD   "slp_bold"\r
+#define FONT_TEXT_CLASS_MEDIUM "slp_medium"\r
+#define FONT_TEXT_CLASS_ROMAN  "slp_roman"\r
+#define FONT_TEXT_CLASS_LABEL  "label"\r
+\r
+#define VISIBLE 0\r
+\r
+#define PADDING_LEFT(param_padding_name, param_padding_size) \\r
+       part \\r
+       { \\r
+               name: param_padding_name; \\r
+               type: RECT; \\r
+               scale: 1; \\r
+               mouse_events:  0;\\r
+               description \\r
+               { \\r
+                       state: "default" 0.0; \\r
+                       min: param_padding_size 0; \\r
+                       fixed: 1 0; \\r
+                       visible: VISIBLE; \\r
+                       rel1{relative: 0.0 0.0;} \\r
+                       rel2{relative: 0.0 1.0;} \\r
+                       align: 0.0 0.0; \\r
+                       color: 100 255 0 0; \\r
+               } \\r
+       }\r
+#define PADDING_TOP(param_padding_name, param_padding_size) \\r
+       part \\r
+       { \\r
+               name: param_padding_name; \\r
+               type: RECT; \\r
+               scale: 1; \\r
+               mouse_events:  0;\\r
+               description \\r
+               { \\r
+                       state: "default" 0.0; \\r
+                       min: 0 param_padding_size ; \\r
+                       fixed: 0 1; \\r
+                       visible: VISIBLE; \\r
+                       rel1{relative: 0.0 0.0;} \\r
+                       rel2{relative: 1.0 0.0;} \\r
+                       align: 0.0 0.0; \\r
+                       color: 0 0 0 0; \\r
+               } \\r
+       }\r
+#define PADDING_BOTTOM(param_padding_name, param_padding_size) \\r
+       part \\r
+       { \\r
+               name: param_padding_name; \\r
+               type: RECT; \\r
+               scale: 1; \\r
+               mouse_events:  0;\\r
+               description \\r
+               { \\r
+                       state: "default" 0.0; \\r
+                       min: 0 param_padding_size; \\r
+                       fixed: 0 1; \\r
+                       visible: VISIBLE; \\r
+                       rel1{relative: 0.0 1.0;} \\r
+                       rel2{relative: 1.0 1.0;} \\r
+                       align: 0.0 1.0; \\r
+                       color: 0 0 0 0; \\r
+               } \\r
+       }\r
+\r
+#define PADDING_RIGHT(param_padding_name, param_padding_size) \\r
+       part \\r
+       { \\r
+               name: param_padding_name; \\r
+               type: RECT; \\r
+               scale: 1; \\r
+               mouse_events:  0;\\r
+               description \\r
+               { \\r
+                       state: "default" 0.0; \\r
+                       min: param_padding_size 0; \\r
+                       fixed: 1 0; \\r
+                       visible: VISIBLE; \\r
+                       rel1{relative: 1.0 0.0;} \\r
+                       rel2{relative: 1.0 1.0;} \\r
+                       align: 1.0 0.0; \\r
+                       color: 0 0 0 0; \\r
+               } \\r
+       }\r
+#define PART_DISCLIP \\r
+       part \\r
+       { \\r
+               name: "disclip"; \\r
+               type: RECT; \\r
+               description \\r
+               { \\r
+                       state: "default" 0.0; \\r
+               } \\r
+               description \\r
+               { \\r
+                       state: "disabled" 0.0; \\r
+                       inherit: "default" 0.0; \\r
+                       color: 255 255 255 64; \\r
+               } \\r
+       }\r
+\r
diff --git a/composer/data/composer_edc/msg-ui-composer-main.edc b/composer/data/composer_edc/msg-ui-composer-main.edc
new file mode 100755 (executable)
index 0000000..0dbbe1b
--- /dev/null
@@ -0,0 +1,325 @@
+group
+{
+       name: "composer/content/full";
+       images {
+               image: "M01_popup_bubble_bg.png" COMP;
+       }
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "swl.sel_all";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: 0 0;
+                               align: 0.0 0.0;
+                               rel1 {to: "rect"; relative:0.0 0.0;}
+                               rel2 {to: "rect"; relative:1.0 0.0;}
+                       }
+               }
+               part {
+                       name: "swl.recipient";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: 0 0;
+                               align: 0.0 0.0;
+                               rel1 {to: "rect"; relative:0.0 0.0;}
+                               rel2 {to: "rect"; relative:1.0 0.0;}
+                       }
+               }
+               part {
+                       name: "swl.composer.body";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: 0 1;
+                               align: 0.0 1.0;
+                               rel1 {to: "rect"; relative: 0.0 1.0;}
+                               rel2 {to: "rect"; relative: 1.0 1.0;}
+                       }
+                       description {
+                               state: "default" 0.1;
+                               fixed: 1 1;
+                               min: 0 1;
+                               align: 0.0 1.0;
+                               rel1 {to: "rect"; relative: 0.0 1.0;}
+                               rel2 {to: "rect"; relative: 1.0 1.0;}
+                       }
+               }
+               part {
+                       name: "swl.bubble.content";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: 0 1;
+                               rel1 {
+                                       to: "swl.sel_all";
+                                       relative: 0.0 1.0;
+                                       offset: 0 20;
+                               }
+                               rel2 {
+                                       to: "swl.composer.body";
+                                       relative: 1.0 0.0;
+                               }
+                       }
+               }
+               part {
+                       name: "rect.titlemenu";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "swl.sel_all"; relative: 0.0 1.0;}
+                               rel2 {relative: 1.0 1.0;}
+                               align: 0.0 0.0;
+                               color: 0 0 0 0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "titlemenu_bg";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               align: 0.0 0.0;
+                               rel1 {
+                                       to_x: "titlemenu.padding.left";
+                                       to_y: "swl.bubble.titlemenu";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x: "titlemenu.padding.right";
+                                       to_y: "swl.bubble.titlemenu";
+                                       relative: 0.0 1.0;
+                                       offset: 0 6;
+                               }
+                               image {
+                                       normal: "M01_popup_bubble_bg.png";
+                                       border: 11 11 11 11;
+                                       border_scale: 1;
+                               }
+                               color: 255 255 255 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               color: 255 255 255 255;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+               part {
+                       name: "titlemenu.padding.left";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 0;
+                               min: 16 0;
+                               rel1 { relative: 0.0 0.0;}
+                               rel2 { relative: 0.0 1.0;}
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "titlemenu.padding.right";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 0;
+                               min: 9 0;
+                               rel1 { relative: 1.0 0.0;}
+                               rel2 { relative: 1.0 1.0;}
+                               align: 1.0 0.0;
+                               visible: 0;
+                       }
+               }
+
+               part {
+                       name: "titlemenu.padding.bottom";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 1;
+                               min: 0 7;
+                               max: 0 7;
+                               rel1 { to: "swl.bubble.titlemenu"; relative: 0.0 1.0;}
+                               rel2 { to: "swl.bubble.titlemenu"; relative: 1.0 1.0;}
+                               align: 0.0 0.0;
+                               visible: 1;
+                               color: 255 0 0 100;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                       }
+
+               }
+
+               part {
+                       name: "swl.bubble.titlemenu";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 1;
+                               min: 0 0;
+                               rel1 {to: "swl.sel_all"; relative: 0.0 1.0; offset: 16 5;}
+                               rel2 {to: "swl.sel_all"; relative: 1.0 1.0; offset: -16 0;}
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               fixed: 0 0;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               min: 0 0;
+                               max: 0 0;
+                       }
+               }
+               part {
+                       name: "swl.bg_predictsearch";
+                       type: SWALLOW;
+                       scale: 1;
+                       repeat_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               rel1.to: "swl.predictsearch";
+                               rel2.to: "swl.predictsearch";
+                               color: 0 0 0 50;
+                               visible: 1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "swl.predictsearch";
+                       type: SWALLOW;
+                       scale: 1;
+                       repeat_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {to: "swl.recipient"; relative: 0.0 1.0;}
+                               rel2 {to: "swl.composer.body"; relative: 1.0 0.0;}
+                               align: 0.5 0.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               programs {
+                       program {
+                               name: "hide.predictsearch";
+                               signal: "hide.predictsearch";
+                               source: "*";
+                               action: STATE_SET "hide" 0.0;
+                               target: "swl.predictsearch";
+                               target: "swl.bg_predictsearch";
+                       }
+                       program {
+                               name: "show.predictsearch";
+                               signal: "show.predictsearch";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+                               target: "swl.predictsearch";
+                               target: "swl.bg_predictsearch";
+                       }
+                       program {
+                               name: "change.bubble";
+                               signal: "change.bubble";
+                               source: "*";
+                               action: STATE_SET "default" 0.1;
+                               target: "swl.composer.body";
+                       }
+                       program {
+                               name: "change.composer";
+                               signal: "change.composer";
+                               source: "*";
+                               action: STATE_SET "default" 0.0;
+                               target: "swl.composer.body";
+                       }
+                       program {
+                               name: "title_menu_open";
+                               signal: "elm,state,title_menu,open";
+                               source: "";
+                               action: STATE_SET "show" 0.0;
+                               target: "swl.bubble.titlemenu";
+                               target: "titlemenu_bg";
+                               target: "rect.titlemenu";
+                               transition: LINEAR 0.2;
+                       }
+                       program {
+                               name: "title_menu_close";
+                               signal: "elm,state,title_menu,close";
+                               source: "";
+                               action: STATE_SET "hide" 0.0;
+                               target: "swl.bubble.titlemenu";
+                               target: "titlemenu_bg";
+                               target: "rect.titlemenu";
+                               transition: LINEAR 0.2;
+                       }
+                       program {
+                               name: "block_click";
+                               signal: "mouse,clicked,1";
+                               source: "rect.titlemenu";
+                               action: SIGNAL_EMIT "action,clicked" "";
+                       }
+               }
+       }
+}
diff --git a/composer/data/composer_edc/msg-ui-composer-recipient.edc b/composer/data/composer_edc/msg-ui-composer-recipient.edc
new file mode 100755 (executable)
index 0000000..5516742
--- /dev/null
@@ -0,0 +1,211 @@
+#include "msg-ui-composer-data.edc"
+
+/**************
+ * RECIPIENT
+ *************/
+#define MSG_COMPOSER_RECIPIENT_TO_FIELD_MIN_H 90
+#define CONTACT_BUTTON_PADDING_TOP 11
+#define CONTACT_BUTTON_PADDING_BOTTOM 11
+#define CONTACT_BUTTON_SIZE 68 68
+
+/*
+ *     composer/recipient/to_field
+ */
+group {
+       name: "composer/recipient/to_field";
+
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSG_COMPOSER_RECIPIENT_TO_FIELD_MIN_H;
+                               fixed: 0 1;
+                               color: 0 255 255 0;
+                       }
+               }
+               part {
+                       name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1{ to: "rect"; relative: 0.0 0.0; }
+                               rel2{ to: "rect"; relative: 1.0 1.0; }
+                               color: 255 255 255 0;
+                       }
+               }
+
+               PADDING_TOP("padding_top", 0);
+               PADDING_LEFT("padding_left", 0);
+               PADDING_RIGHT("padding_right", 32);
+               PADDING_BOTTOM("padding_bottom", 0);
+
+               part {
+                       name: "rect.btn.padding_top";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+
+                       description {
+                               state: "default" 0.0;
+                               min: 0 CONTACT_BUTTON_PADDING_TOP;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "rect.btn.padding_bottom";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+
+                       description {
+                               state: "default" 0.0;
+                               min: 0 CONTACT_BUTTON_PADDING_BOTTOM;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "rect.btn";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+
+                       description {
+                               state: "default" 0.0;
+                               min: CONTACT_BUTTON_SIZE;
+                               max: CONTACT_BUTTON_SIZE;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "rect.btn.padding_bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "rect.btn.padding_bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 1.0 1.0;
+                               color: 255 255 255 0;
+                       }
+               }
+               part {
+                       name: "swl.closed_btn";
+                       type: SWALLOW;
+                       scale: 1;
+                       mouse_events: 1;
+                       description {
+                               state: "default" 0.0;   //show contact button
+                   min: 1 1;
+                   fixed: 1 1;
+                   visible: 1;
+                   rel1 { to: rect.btn; relative: 0.0 0.0; }
+                   rel2 { to: rect.btn; relative: 1.0 1.0; }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "default" 0.1;   //hide contact button
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "swl.mbe_scroll";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;   //show contact button
+                               min: 0 MSG_COMPOSER_RECIPIENT_TO_FIELD_MIN_H;
+                               rel1 { to_x: "padding_left"; to_y: "padding_top"; relative: 1.0 1.0; }
+                               rel2 { to_x: "swl.closed_btn"; to_y: "padding_bottom"; relative: 0.0 0.0; }
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "default" 0.1;   //hide contact button
+                               min: 0 MSG_COMPOSER_RECIPIENT_TO_FIELD_MIN_H;
+                               rel1 { to_x: "padding_left"; to_y: "padding_top"; relative: 1.0 1.0; }
+                               rel2 { to_x: "padding_right"; to_y: "padding_bottom"; relative: 0.0 0.0; }
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "underline";
+                       type: RECT;
+                       scale: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 1 1;
+                               rel1 { to: "rect"; relative: 0.0 1.0; offset: 0 -1;}
+                               rel2 { to: "rect"; relative: 1.0 1.0; offset: 0 -1;}
+                               align: 0.0 1.0;
+                               color: 211 209 203 255;
+                       }
+               }
+               part {
+                       name: "underline2";
+                       type: RECT;
+                       scale: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 1 1;
+                               rel1 { to: "rect"; relative: 0.0 1.0; }
+                               rel2 { to: "rect"; relative: 1.0 1.0; }
+                               align: 0.0 1.0;
+                               color: 255 255 255 255;
+                       }
+               }
+       }
+       programs {
+               program {
+                       name: "hide.ct_button";
+                       signal: "hide.ct_button";
+                       source: "*";
+                       action: STATE_SET "default" 0.1;
+                       target: "swl.mbe_scroll";
+                       target: "swl.closed_btn";
+               }
+               program {
+                       name: "show.ct_button";
+                       signal: "show.ct_button";
+                       source: "*";
+                       action: STATE_SET "default" 0.0;
+                       target: "swl.mbe_scroll";
+                       target: "swl.closed_btn";
+               }
+       }
+}
+
diff --git a/composer/data/composer_edc/msg-ui-composer-subject.edc b/composer/data/composer_edc/msg-ui-composer-subject.edc
new file mode 100755 (executable)
index 0000000..277d157
--- /dev/null
@@ -0,0 +1,160 @@
+/************************
+ * subject
+ **********************/
+
+#define MSG_COMPOSER_SUBJECT_H 74
+#define MSG_COMPOSER_SUBJECT_FIELD_H 74
+#define SUBJECT_DELBUTTON_SIZE 44 36
+#define COLOR_SUBJECT_GUIDE_TEXT 158 158 158 255
+
+group {
+       name: "composer/subject/main";
+
+       images {
+               image: IMG_BODY_INPUT_FIELD COMP;
+       }
+
+       parts {
+               part {
+                       name: "rect";
+                       type: RECT;
+                       scale: 1;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSG_COMPOSER_SUBJECT_H;
+                               fixed: 1 1;
+                               color: 0 0 0 0;
+                       }
+               }
+               PADDING_TOP("padding_top", 16);
+               PADDING_TOP("padding_top_29", 29);
+               PADDING_LEFT("padding_left", 16);
+               PADDING_RIGHT("padding_right", 16);
+               PADDING_RIGHT("padding_right_32", 32);
+               PADDING_BOTTOM("padding_bottom", 7);
+               part {
+                       name: "img.body";
+                       type: IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 MSG_COMPOSER_SUBJECT_FIELD_H;
+                               fixed: 1 0;
+                               rel1 { to_y: "padding_top"; relative: 0.0 1.0; }
+                               rel2 { to_x: "padding_right"; relative: 0.0 1.0; }
+                               image {
+                                       normal: IMG_BODY_INPUT_FIELD;
+                                       border: BORDER_BODY_INPUT_FIELD;
+                               }
+                       }
+               }
+               part {
+                       name: "subject.guidetxt";
+                       type: TEXT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               color: COLOR_SUBJECT_GUIDE_TEXT;
+                               rel1 { to_x: "padding_left"; to_y: "padding_top"; relative: 1.0 1.0; }
+                               rel2 { to_x: "rect.del_button"; to_y: "padding_bottom"; relative: 0.0 0.0; offset: -16 0; }
+                               text {
+                                       font: SLP_FONT_REGULAR;
+                                       text_class: FONT_TEXT_CLASS_REGULAR;
+                                       size: 32;
+                                       align: 0.0 0.5;
+                               }
+                       }
+               }
+               part {
+                       name: "subject.swl.entry";
+                       type: SWALLOW;
+                       scale: 1;
+                       description { //hide delete button
+                               state: "default" 0.0;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 { to_x: "padding_left"; to_y: "padding_top"; relative: 1.0 1.0; }
+                               rel2 { to_x: "padding_right_32"; to_y: "padding_bottom"; relative: 0.0 0.0; }
+                               align: 0.5 0.5;
+                       }
+                       description { //show delete button
+                               state: "default" 0.1;
+                               min: 0 0;
+                               fixed: 1 0;
+                               rel1 { to_x: "padding_left"; to_y: "padding_top"; relative: 1.0 1.0; }
+                               rel2 { to_x: "rect.del_button"; to_y: "padding_bottom"; relative: 0.0 0.0; offset: -16 0; }
+                               align: 0.5 0.5;
+                       }
+               }
+               part {
+                       name: "rect.del_button";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BODYPAGE_DELBUTTON_SIZE;
+                               max: BODYPAGE_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               visible: 0;
+                               rel1 {
+                                       to_x: "padding_right_32";
+                                       to_y: "padding_top_29";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "padding_right_32";
+                                       to_y: "padding_top_29";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               part {
+                       name: "subject.swl.del_button";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0; //hide
+                               min: BODYPAGE_DELBUTTON_SIZE;
+                               max: BODYPAGE_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               visible: 0;
+                               rel1 { to_x: "padding_right_32"; to_y: "padding_top_29"; relative: 0.0 1.0; }
+                               rel2 { to_x: "padding_right_32"; to_y: "padding_top_29"; relative: 0.0 1.0; }
+                               align: 1.0 0.0;
+                       }
+                       description {
+                               state: "default" 0.1; //show
+                               min: BODYPAGE_DELBUTTON_SIZE;
+                               max: BODYPAGE_DELBUTTON_SIZE;
+                               fixed: 1 1;
+                               visible: 1;
+                               rel1 { to_x: "padding_right_32"; to_y: "padding_top_29"; relative: 0.0 1.0; }
+                               rel2 { to_x: "padding_right_32"; to_y: "padding_top_29"; relative: 0.0 1.0; }
+                               align: 1.0 0.0;
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "hide.delete";
+                       signal: "hide.delete";
+                       source: "*";
+                       action: STATE_SET "default" 0.0;
+                       target: "subject.swl.entry";
+                       target: "subject.swl.del_button";
+               }
+               program {
+                       name: "show.delete";
+                       signal: "show.delete";
+                       source: "*";
+                       action: STATE_SET "default" 0.1;
+                       target: "subject.swl.entry";
+                       target: "subject.swl.del_button";
+               }
+       }
+}
+
diff --git a/composer/include/msg-ui-composer-attachment.h b/composer/include/msg-ui-composer-attachment.h
new file mode 100755 (executable)
index 0000000..17890a1
--- /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://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_ATTACHMENT_H_
+#define __MSG_UI_COMPOSER_ATTACHMENT_H_
+
+#include "msg-ui-composer-data.h"
+
+int64 msg_ui_composer_get_attached_item_size(void *data);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_add_attach_media(MSG_COMPOSER_VIEW_DATA_S *cd,
+                                                                                                                                       const char *filepath,
+                                                                                                                                       COMPOSER_MEDIA_TYPE_E media_type);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_read_attachments(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_attachment_set_loaded_data(void *data, const char *filepath, int filetype);
+
+void msg_ui_composer_attachment_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+void msg_ui_composer_expand_attach_list(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_contract_attach_list(MSG_COMPOSER_VIEW_DATA_S *cd);
+int msg_ui_composer_get_attach_count(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+#endif /*__MSG_UI_COMPOSER_ATTACHMENT_H_*/
diff --git a/composer/include/msg-ui-composer-body-callback.h b/composer/include/msg-ui-composer-body-callback.h
new file mode 100755 (executable)
index 0000000..3a81fa7
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *    http://floralicense.org/license\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+\r
+#ifndef MSG_UI_COMPOSER_BODY_CALLBACK_H_\r
+#define MSG_UI_COMPOSER_BODY_CALLBACK_H_\r
+\r
+#include <Elementary.h>\r
+\r
+void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_entry_focused_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_entry_press_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_entry_clicked_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_entry_maxlength_reached_cb(void *data, Evas_Object *obj, void *event_info);\r
+\r
+void msg_ui_composer_body_page_del_btn_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_page_del_btn_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_page_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_media_layout_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);\r
+void msg_ui_composer_body_media_thumb_icon_clicked_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_media_del_btn_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_media_del_btn_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_media_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_body_layout_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
+void msg_ui_composer_body_body_layout_clicked_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);\r
+\r
+#endif /* MSG_UI_COMPOSER_BODY_CALLBACK_H_ */\r
diff --git a/composer/include/msg-ui-composer-body-page.h b/composer/include/msg-ui-composer-body-page.h
new file mode 100755 (executable)
index 0000000..605095f
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_BODY_PAGE_H_
+#define __MSG_UI_COMPOSER_BODY_PAGE_H_
+
+/* includes*/
+#include "msg-ui-composer-data.h"
+#include <Elementary.h>
+
+/* defines*/
+
+/* enum types*/
+
+/* structures*/
+
+/* function prototypes*/
+Evas_Object *msg_ui_composer_body_page_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent);
+Evas_Object *msg_ui_composer_body_sms_page_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_read_sms_body(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_read_mms_body(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_add_page(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_insert_media(MSG_COMPOSER_VIEW_DATA_S *cd, const char *file_path, COMPOSER_MEDIA_TYPE_E media_type);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_mms_insert_item_remove(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *remove_item, COMPOSER_MEDIA_TYPE_E media_type);
+
+int msg_ui_composer_get_inserted_item_size(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_sms_body_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_mms_body_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_mms_body_remove_page(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *remove_page);
+
+void msg_ui_composer_body_info_area_update(MSG_COMPOSER_VIEW_DATA_S *cd);
+int msg_ui_composer_body_entry_char_count(void *data, const char *text, int *char_count, int *page_size);
+
+void msg_ui_composer_body_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, const char *font_sytle);
+
+#endif                         /* __MSG_UI_COMPOSER_BODY_PAGE_H_ */
diff --git a/composer/include/msg-ui-composer-body.h b/composer/include/msg-ui-composer-body.h
new file mode 100755 (executable)
index 0000000..d6ddabf
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_BODY_H_
+#define __MSG_UI_COMPOSER_BODY_H_
+
+/* includes*/
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-body-page.h"
+#include <Elementary.h>
+
+/* defines*/
+#define COMPOSER_FRAME_BODY_LANDSCAPE_HEIGHT_MIN       (88)
+#define COMPOSER_ENOUGH_TEXT_RENDERING_BODY_HEIGHT     (130)
+
+#define COMPOSER_RESIZE_LOOP_MAX       (3)
+
+#define SEND_CHECK_EXCEPTION_TYPE_NONE 0x00
+#define SEND_CHECK_EXCEPTION_TYPE_ENCODING_MODE        0x10
+
+/* enum types*/
+typedef enum {
+       COMPOSER_THREAD_STATUS_UNKNOWN = 0,
+       COMPOSER_THREAD_STATUS_RESIZE,
+       COMPOSER_THREAD_STATUS_RESIZE_SUCCESS,
+       COMPOSER_THREAD_STATUS_RESIZE_FAIL,
+       COMPOSER_THREAD_STATUS_SUCCESS,
+       COMPOSER_THREAD_STATUS_FAIL
+} COMPOSER_THREAD_STATUS_E;
+
+/* structures*/
+typedef struct _msg_ui_thread_data_s {
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       int fail_count;
+       COMPOSER_THREAD_STATUS_E status;
+       int64 wishsize;
+       bool need_ChangeResolution;
+       char filepath[DEF_BUF_LEN_L];
+       int rotation;
+} COMPOSER_THREAD_DATA_S;
+
+/* function prototypes*/
+Evas_Object *msg_ui_composer_body_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent);
+void msg_ui_composer_body_delete(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_body_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_items_add(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_item_add(MSG_COMPOSER_VIEW_DATA_S *cd, const char *item_path);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_set_loaded_media(MSG_COMPOSER_VIEW_DATA_S *pcomp_data, char *filepath, int filetype, int nPage);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_set_loaded_text(MSG_COMPOSER_VIEW_DATA_S *pcomp_data, const char *body_text, int nPage);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_set_loaded_page_duration(MSG_COMPOSER_VIEW_DATA_S *pcomp_data, int duration, int nPage);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_read_preview_message(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+Eina_Bool msg_ui_composer_body_is_mms(MSG_COMPOSER_VIEW_DATA_S *cd);
+bool msg_ui_composer_body_has_media(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_body_focus_set(MSG_COMPOSER_VIEW_DATA_S *cd, int nPage);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_size(MSG_COMPOSER_VIEW_DATA_S *cd, int64 *size);
+COMPOSER_RETURN_TYPE_E __msg_ui_composer_body_read_data(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_body_update_send_btn_icon(MSG_COMPOSER_VIEW_DATA_S *cd, bool disable);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_check_is_text_top(msg_struct_t region_0, msg_struct_t region_1, bool *is_text_top);
+void msg_ui_composer_body_make_and_send_message(void *data, int check_exception_type);
+#endif/*__MSG_UI_COMPOSER_BODY_H_*/
diff --git a/composer/include/msg-ui-composer-bubble.h b/composer/include/msg-ui-composer-bubble.h
new file mode 100755 (executable)
index 0000000..c2ed392
--- /dev/null
@@ -0,0 +1,340 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_UI_COMPOSER_BUBBLE_H__
+#define __MSG_UI_COMPOSER_BUBBLE_H__
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <glib.h>
+
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+
+#include <libintl.h>
+#include <bundle.h>
+#include <Ecore.h>
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+#include <time.h>
+
+#include "msg-ui-util.h"
+#include "msg-ui-common-utility.h"
+
+#include <contacts.h>
+
+#define MSG_BUBBLE_EXPORT_DIR  "/opt/usr/media/message"
+#define MSG_BUBBLE_EXPORT_TEMPDIR "/tmp/message"
+#define MSG_BUBBLE_DOWNLOAD_DIR        "/opt/usr/media/Downloads"
+
+#define MSG_BUBBLE_SIM_MSG_ICON                IMGDIR"/07_message_sim.png"
+#define MSG_BUBBLE_ATTACH_ICON         IMGDIR"/attach_icon.png"
+#define MSG_BUBBLE_AUDIOFILE_ICON      IMGDIR"/M01_icon_voice.png"
+#define MSG_BUBBLE_PROTECTED_ICON      IMGDIR"/M01_icon_locked.png"
+
+/* STYLE for genlist and entry */
+#define MSG_BUBBLE_STYLE_SENT  "sentmessage/custom"
+#define MSG_BUBBLE_STYLE_RECV  "readmessage/custom"
+
+#define MSG_BUBBLE_CONTENT_H (653)
+#define MSG_BUBBLE_IMG_MAX_W (320)
+#define MSG_BUBBLE_IMG_MAX_H (320)
+
+#define MSG_BUBBLE_CONTROLBAR_ITEM_NUM (4)
+#define MSG_BUBBLE_DELETE_NOTI_TIME (1.5)
+
+#define MSG_BUBBLE_POPUP_LIST_MAX_MENU 4
+#define MSG_BUBBLE_POPUP_LIST_1LINE_HEIGHT 114
+
+
+typedef enum {
+       BUBBLE_NORMAL_VIEW = 0,
+       BUBBLE_EDIT_VIEW,
+       BUBBLE_UNLOAD_VIEW,
+} BubbleViewMode;
+
+typedef enum {
+       BUBBLE_UG_START = 0,
+       BUBBLE_UG_PAUSE,
+       BUBBLE_UG_RESUME,
+       BUBBLE_UG_DESTROY,
+} BubbleUGState;
+
+typedef enum {
+       SCROLL_DEFAULT = 0,
+       SCROLL_FOCUS_IN,
+       SCROLL_FOCUS_OUT,
+       SCROLL_FOCUS_OTHER,
+} BubbleScrollFocus;
+
+typedef enum {
+       WORD_TYPE_NONE = 0x00,
+       WORD_TYPE_URL,
+       WORD_TYPE_URL_WITH_PROTC,
+       WORD_TYPE_NUM,
+       WORD_TYPE_EMAIL
+} BubbleTextType;
+
+typedef enum {
+       MSG_BOX_PACK_START = 0,
+       MSG_BOX_PACK_END,
+       MSG_BOX_PACK_BEFORE,
+       MSG_BOX_PACK_AFTER,
+} MsgBoxPackType;
+
+typedef enum {
+       BUBBLE_BACKUP_TYPE_NONE = 0,
+       BUBBLE_BACKUP_TYPE_SD,
+       BUBBLE_BACKUP_TYPE_EMAIL,
+} BubbleBackupType;
+
+typedef enum {
+       BUBBLE_THUMBNAIL_NONE = 0,
+       BUBBLE_THUMBNAIL_IMAGE,
+       BUBBLE_THUMBNAIL_VIDEO,
+       BUBBLE_THUMBNAIL_AUDIO,
+} BubbleThumbnailType;
+
+typedef struct {
+       msg_message_id_t msgId;
+       int msgType;
+       msg_storage_id_t storageId;
+       time_t *msgTime;
+       char displayDate[DEF_BUF_LEN_S];
+       char subject[DEF_BUF_LEN_S];
+       msg_network_status_t networkStatus;
+       bool bRead;
+       bool bProtected;
+       int direction;
+       int attachment_cnt;
+       int thumbType;
+       char thumbNailPath[DEF_IMG_PATH_LEN + 1];
+       char attachment_filename[DEF_IMG_PATH_LEN + 1];
+       char audio_filename[DEF_IMG_PATH_LEN + 1];
+       char msgText[DEF_MAX_MSG_TEXT_LEN+1];
+
+       Evas_Object *ly;
+       Evas_Object *entry;
+       Evas_Object *progressbar;
+       Evas_Object *failed_button;
+       Evas_Object *chk;
+       Eina_Bool isCheck;
+
+} MSG_APP_CONV_DATA_S, *PMSG_APP_CONV_DATA_S;
+
+typedef struct {
+       PMSG_APP_CONV_DATA_S add_item;
+       Evas_Object *rel_obj;
+       MsgBoxPackType pack_type;
+}BUBBLE_PACK_INFO;
+
+typedef struct {
+       int contact_id;
+       char address[DEF_THREAD_ADDR_LEN+1];
+       char name[DEF_THREAD_NAME_LEN+1];
+}BUBBLE_ADDRESS_INFO;
+
+typedef struct {
+       int drm_type;
+       int media_type;
+       int file_size;
+       char filepath[DEF_IMG_PATH_LEN+1];
+       char filename[DEF_IMG_PATH_LEN+1];
+
+       Eina_Bool isChecked;
+       Evas_Object *check;
+}BUBBLE_MEDIA_INFO, *PBUBBLE_MEDIA_INFO;
+
+typedef struct {
+       int addr_cnt;
+       BUBBLE_ADDRESS_INFO addr_info[MAX_TO_ADDRESS_CNT];
+}BUBBLE_ADDRESS_LIST;
+
+typedef struct _MSG_BUBBLE_DATA {
+       Evas_Object *layout_main;
+       Evas_Object *scrl;
+       Evas_Object *box;
+
+       BubbleViewMode viewmode;
+       BubbleUGState ug_state;
+       bool isRotate;
+
+       Evas_Object *parent_layout;
+       Evas_Object *bubble_layout;
+       Evas_Object *title_button;
+       Evas_Object *title_genlist;
+       Evas_Object *sel_all_ly;
+       Evas_Object *sel_all_box;
+       Evas_Object *noc_ly;
+
+       Evas_Object *popup;
+       Evas_Object *progressbar;
+       Evas_Object *progresslabel;
+       Evas_Object *popup_genlist;
+       Evas_Object *save_button;
+
+       Evas_Object *select_info;
+       Evas_Object *selectioninfo_layout;
+
+       Eina_List *bubble_list;
+       Eina_List *realized_list;
+       Eina_List *chk_list;
+       Eina_List *added_list;
+       Eina_List *media_list;
+
+       Eina_Bool sel_all_checked;
+
+#ifdef _BUBBLE_FLICK_EVENT
+       Evas_Coord m_x;
+       Evas_Coord m_y;
+#endif
+       Elm_Genlist_Item_Class itc_title;
+       Elm_Genlist_Item_Class itc_title_single;
+       Elm_Genlist_Item_Class itc_popup;
+       Elm_Genlist_Item_Class itc_popup_selall;
+
+       char *time_12h_ptn;
+       char *time_24h_ptn;
+       char *date_ptn_default;
+       char *date_ptn_year;
+       msg_time_format time_fmt;
+       char locale[DEF_BUF_LEN];
+
+       Ecore_Animator *load_animator;
+       Ecore_Animator *add_animator;
+       Ecore_Idler *resend_idler;
+       Ecore_Idler *retrieve_idler;
+       Ecore_Thread *del_thread;
+       Ecore_Thread *backup_thread;
+
+       msg_handle_t msgHandle;
+       msg_thread_id_t threadId;
+       BUBBLE_ADDRESS_LIST addr_list;
+       char threadName[DEF_THREAD_NAME_LEN+1];
+       char backupPath[DEF_BUF_LEN+1];
+
+       int bubble_count;
+       int bubble_index;
+       int added_count;
+       int msg_type;                   /* type of the latest message in the selected converstaion list*/
+       bool isDraft;
+       bool title_menu_opened;
+       bool del_cancel;
+       bool backup_cancel;
+
+       int copy_id;
+       int resend_id;
+       int retrieve_id;
+       int draft_msg_id;
+       int check_cnt;
+       int media_chk_cnt;
+       int del_index;
+       int backup_type;
+       void *callback_data;
+} MSG_BUBBLE_DATA, *PMSG_BUBBLE_DATA;
+
+
+/* FUNCTIONS */
+PMSG_BUBBLE_DATA msg_ui_bubble_init_bubble_data(msg_handle_t msgHandle, void *callback_data);
+void msg_ui_bubble_deinit_bubble_data(void *data);
+
+void msg_ui_bubble_parse_bubble_data(PMSG_BUBBLE_DATA bubble_data, service_h svc_handle);
+void msg_ui_bubble_start_bubble_list(PMSG_BUBBLE_DATA bubble_data);
+void msg_ui_bubble_init_bubble_list(PMSG_BUBBLE_DATA bubble_data);
+
+Evas_Object *msg_ui_bubble_create_view(Evas_Object *parent, void *user_data);
+void msg_ui_bubble_start_view(PMSG_BUBBLE_DATA bubble_data);
+
+void msg_ui_bubble_reg_bubble_cb_func(PMSG_BUBBLE_DATA pData);
+
+void msg_ui_bubble_fill_bubble_contents(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S item_data);
+Eina_Bool msg_ui_bubble_item_load_cb(void *data);
+void msg_ui_bubble_resend_msg(PMSG_BUBBLE_DATA bubble_data, int msg_id);
+void msg_ui_bubble_delete_msg(PMSG_BUBBLE_DATA bubble_data, int msg_id);
+void msg_ui_bubble_refresh_msg_lock_status(PMSG_BUBBLE_DATA bubble_data, int msg_id);
+void msg_ui_bubble_list_load(PMSG_BUBBLE_DATA bubble_data, bool bload_draft);
+void msg_ui_bubble_list_data_update(PMSG_BUBBLE_DATA bubble_data);
+void msg_ui_bubble_list_update_read_status(PMSG_BUBBLE_DATA bubble_data);
+void msg_ui_bubble_item_data_update(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
+Eina_Bool msg_ui_bubble_item_add_cb(void *data);
+void msg_ui_bubble_list_append(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
+void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
+
+void msg_ui_bubble_change_normal_navi_control(PMSG_BUBBLE_DATA pData);
+void msg_ui_bubble_title_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_open_title_menu_genlist(PMSG_BUBBLE_DATA bubble_data);
+void msg_ui_bubble_close_title_menu_genlist(PMSG_BUBBLE_DATA bubble_data);
+Evas_Object *msg_ui_bubble_create_toolbar(void *user_data);
+
+void msg_ui_bubble_msg_storage_change_cb(msg_handle_t handle, msg_storage_change_type_t type, msg_id_list_s *pMsgIdList, void *user_param);
+Evas_Object *msg_ui_bubble_toolbar_btn_create(Evas_Object *parent, char *icon_path, char *button_text);
+void msg_ui_bubble_more_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_backup_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+void msg_ui_bubble_ctlbar_call_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_vcall_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_email_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_view_ct_detail_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_block_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_unblock_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_delete_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_forward_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_move_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_item_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_item_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+#ifdef _BUBBLE_FLICK_EVENT
+void msg_ui_bubble_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+#endif
+void msg_ui_bubble_list_checked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_timezone_change_cb(keynode_t *key, void *data);
+void msg_ui_bubble_scroll_edge_top_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_scroll_drag_start_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_anchor_menu_click_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_bubble_main_layout_clicked_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+void msg_ui_bubble_launch_voice_call(const char *call_num);
+void msg_ui_bubble_launch_video_call(const char *call_num);
+char *msg_ui_bubble_get_trimmed_number(const char *org_num);
+void msg_ui_bubble_launch_add_to_contact_ug(PMSG_BUBBLE_DATA pData);
+void msg_ui_bubble_launch_contact_list_ug(PMSG_BUBBLE_DATA pData, int type, const char *str);
+void msg_ui_bubble_launch_contact_detail_ug(PMSG_BUBBLE_DATA pData, int ct_id);
+void msg_ui_bubble_show_notify(PMSG_BUBBLE_DATA bubbleData, char *msg);
+void msg_ui_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+Evas_Object* msg_ui_bubble_show_notify_with_progressbar(PMSG_BUBBLE_DATA pData, int count);
+
+void msg_ui_bubble_show_select_info(PMSG_BUBBLE_DATA pData);
+void msg_ui_bubble_show_deleted_info(PMSG_BUBBLE_DATA pData);
+void msg_ui_bubble_status_message_post(PMSG_BUBBLE_DATA pData, char *msg);
+void msg_ui_bubble_contact_info_update(PMSG_BUBBLE_DATA pData);
+unsigned char msg_ui_bubble_check_word_type(char *txt);
+void msg_ui_bubble_get_time_format(PMSG_BUBBLE_DATA pData);
+void msg_ui_bubble_get_locale(PMSG_BUBBLE_DATA pData);
+
+char *msg_ui_bubble_create_export_folder_name(void);
+char *msg_ui_bubble_create_export_file_name(void);
+char *msg_ui_bubble_create_export_folder(PMSG_BUBBLE_DATA pData, const char* folder_name);
+char *msg_ui_bubble_create_export_string(PMSG_BUBBLE_DATA pData, msg_struct_t msg);
+
+bool msg_is_sms(int msg_type);
+bool msg_is_mms(int msg_type);
+
+
+#endif
diff --git a/composer/include/msg-ui-composer-common.h b/composer/include/msg-ui-composer-common.h
new file mode 100755 (executable)
index 0000000..d48e3ae
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_COMPOSER_COMMON_H__
+#define __MSG_COMPOSER_COMMON_H__
+
+#include "msg-ui-composer-data.h"
+
+typedef enum {
+       COMPOSER_TICKERNOTI_UNKNOWN             = 0,
+       COMPOSER_TICKERNOTI_COUNT_MAX,
+       COMPOSER_TICKERNOTI_DUP_RECP,
+       COMPOSER_TICKERNOTI_INVALID_RECP,
+       COMPOSER_TICKERNOTI_CHANGED_SMS,
+       COMPOSER_TICKERNOTI_CHANGED_MMS,
+       COMPOSER_TICKERNOTI_AUTO_SAVED,
+       COMPOSER_TICKERNOTI_NO_RECIPIENT,
+       COMPOSER_TICKERNOTI_MAXLENGHT_CHAR
+} COMPOSER_TICKERNOTI_TYPE_E;
+
+/*layout*/
+char *msg_ui_composer_edj_get(MSG_COMPOSER_VIEW_DATA_S *cd);
+Evas_Object *msg_ui_composer_load_edj(Evas_Object *parent, const char *edj_file, const char *group);
+Evas_Object *msg_ui_composer_layout_create(Evas_Object *parent, bool indicator);
+Evas_Object *msg_ui_composer_bg_create(Evas_Object *parent);
+
+/*file*/
+int64 msg_composer_get_file_size(const char *path);
+char *msg_composer_get_file_ext(const char *a_pszfile_name);
+
+COMPOSER_RETURN_TYPE_E msg_composer_common_get_media_duration(const char *file_path, int *duration);
+COMPOSER_MEDIA_TYPE_E msg_composer_get_media_type(const char *a_pszfile_path);
+COMPOSER_MEDIA_TRACK_TYPE_E msg_composer_get_media_track_type(const char *a_pszfile_name);
+void msg_ui_composer_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+/*focus*/
+Eina_Bool msg_ui_composer_last_focus_load(void *data);
+Eina_Bool msg_ui_composer_last_body_page_focus_load(void *data);
+void msg_ui_composer_last_focused_entry_set(void *data, Evas_Object *entry);
+Evas_Object *msg_ui_composer_last_focused_entry_get(void *data);
+Evas_Object *msg_ui_composer_last_body_entry_get(void *data);
+void msg_ui_composer_set_body_keypad_layout(void *data, int mode);
+bool msg_ui_composer_last_focus_is_recipient(void *data);
+
+
+void bundle_send_to_result(void *data, char *key, char *val);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_change_message_type(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_MSG_TYPE_E msg_type);
+bool msg_ui_composer_common_is_send_possible(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+COMPOSER_MSG_TYPE_E msg_ui_composer_check_message_type(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_message_type_check_and_change(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+COMPOSER_RETURN_TYPE_E msg_composer_common_get_thumbnail(MSG_COMPOSER_VIEW_DATA_S *cd, const char *src_file_path, char *thumb_file_path, int size_thumb_file_path);
+COMPOSER_RETURN_TYPE_E msg_composer_common_get_image_in_video(const char *video_file_path, char *image_file_path);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_common_get_file(MSG_COMPOSER_VIEW_DATA_S *cd, const char *src_file_path, char *dst_file_path, int size_dst_file_path);
+
+void msg_composer_entry_filter_remove_markup(void *data, Evas_Object *entry, char **text);
+void msg_ui_composer_common_tickernoti(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_TICKERNOTI_TYPE_E tickertype);
+void msg_composer_entry_filter_addimage(void *data, Evas_Object *entry, char **text);
+void msg_ui_composer_entry_imf_state_cb(void * data, Ecore_IMF_Context *ctx, int value);
+void msg_ui_composer_entry_imf_resize_cb(void * data, Ecore_IMF_Context *ctx, int value);
+int msg_ui_composer_get_keypad_height(Evas_Object *entry);
+void msg_ui_composer_change_body_scroll_size(MSG_COMPOSER_VIEW_DATA_S *cd, int keypad_height);
+void msg_ui_composer_make_default_body_size(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+int msg_ui_composer_get_font_size(int type);
+void msg_ui_composer_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, bool update_subject);
+
+#endif/*__MSG_COMPOSER_COMMON_H__*/
diff --git a/composer/include/msg-ui-composer-data.h b/composer/include/msg-ui-composer-data.h
new file mode 100755 (executable)
index 0000000..d58bd1f
--- /dev/null
@@ -0,0 +1,555 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_DATA_H_
+#define __MSG_UI_COMPOSER_DATA_H_
+
+/***********************
+ *  includes
+ ************************/
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+
+#include <Elementary.h>
+#include <X11/Xlib.h>
+#include <glib-object.h>
+#include <glib.h>
+
+#include <ui-gadget-module.h>
+
+#include <contacts.h>
+#include <assert.h>
+#include <time.h>
+#include <Ecore_X.h>
+
+#include "msg-ui-util.h"
+#include "msg-ui-composer-string.h"
+#include "msg-ui-composer-res.h"
+#include "msg-ui-common-utility.h"
+#include "msg-ui-composer-bubble.h"
+
+/*********************
+ * defines
+ ************************/
+
+#if !defined(__TYPEDEF_INT64__)
+#define __TYPEDEF_INT64__
+typedef long long int64;
+#endif
+
+#define TO_FIELD_LABEL_SIZE_MAX        512
+#define COMPOSER_RECIPIENT_PORTRAIT_HEIGHT_MAX 188
+#define COMPOSER_RECIPIENT_LANDSCAPE_HEIGHT_MAX        112
+#define COMPARE_STRING_NUM 8
+
+#ifndef MAX_TO_ADDRESS_CNT
+#define MAX_TO_ADDRESS_CNT (10)
+#endif
+
+#define COMPOSER_RECIPIENT_COUNT_MAX   MAX_TO_ADDRESS_CNT
+
+#ifndef MAX_PHONE_NUMBER_LEN
+#define MAX_PHONE_NUMBER_LEN (20)
+#endif
+
+#define COMPOSER_RECIPIENT_PHONE_NUMBER_LEN_MAX MAX_PHONE_NUMBER_LEN
+#define COMPOSER_RECIPIENT_PHONE_NUMBER_LEN_MIN (3)
+
+#ifndef MAX_ADDRESS_VAL_LEN
+#define MAX_ADDRESS_VAL_LEN (254)
+#endif
+
+#define COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX MAX_ADDRESS_VAL_LEN
+#define COMPOSER_SUBJECT_MAX_CHAR      (40)
+#define COMPOSER_SUBJECT_MAX_BYTE      (COMPOSER_SUBJECT_MAX_CHAR * 3)
+
+#define COMPOSER_MMS_TEXT_MAX_CHAR     (3000)
+#define COMPOSER_MMS_TEXT_MAX_BYTE     (COMPOSER_MMS_TEXT_MAX_CHAR * 3)
+
+#define COMPOSER_MMS_MAX_PAGE                  (20)
+#define COMPOSER_MMS_MAX_ATTACH_COUNT  (10)
+#define COMPOSER_FILEPATH_LEN_MAX      (1024)
+#define COMPOSER_FILENAME_LEN_MAX      (255)
+#define COMPOSER_PAGE_DEFAULT_DURATION (5) //sec
+
+#define COMPOSER_MMS_MAX_MEDIA_COUNT   (COMPOSER_MMS_MAX_PAGE)
+
+#define COMPOSER_COMMON_EXT_MAX_LENGTH         (7)
+#define COMPOSER_COMMON_MIME_MAX_LEN           (64)
+
+#define COMPOSER_SMS_UNICODE_MAX_LEN   (70)
+#define COMPOSER_SMS_GSM7_MAX_LEN              (160)
+
+#define COMPOSER_CMS_UNICODE_MAX_LEN   (67)
+#define COMPOSER_CMS_GSM7_MAX_LEN              (153)
+
+/* default 15 pages, it can be changed by operator spec. */
+#define COMPOSER_CMS_MAX_PAGE                  (15)
+
+#define COMPOSER_TMP_PATH "/tmp"
+
+#define MSGC_1KB       1024
+
+#define MSGC_RESTRICT_MAX_IMG_W 640
+#define MSGC_RESTRICT_MAX_IMG_H 480
+
+#define MSGC_INDICATOR_H 60
+#define MSGC_NAVIBAR_TITLE_H 111
+#define MSGC_BODY_TOP_PADDING 4
+#define MSGC_BODY_BOTTOM_PADDING 20
+#define MSGC_BODY_PADDING (MSGC_BODY_TOP_PADDING + MSGC_BODY_BOTTOM_PADDING)
+
+#define MSGC_IMAGE_THUMB_WIDTH 132
+#define MSGC_IMAGE_THUMB_HEIGHT        132
+#define MSGC_SOUND_THUMB_WIDTH 48
+#define MSGC_SOUND_THUMB_HEIGHT        48
+
+#define MSGC_POPUP_GENLIST_H 128
+#define MSGC_POPUP_LIST_H 112
+
+#define MSGC_BODY_FONT_SIZE 36
+#define MSGC_SUBJECT_FONT_SIZE 32
+
+/*********************
+ * enum types
+ ************************/
+typedef enum {
+       MSG_UG_MODE_FULL_COMPOSER,
+       MSG_UG_MODE_BUBBLE_COMPOSER,
+       MSG_UG_MODE_ONLY_COMPOSER,      /*In this mode Composer should destroy after send message*/
+       MSG_UG_MODE_MAX,
+} MSG_UG_MODE_E;
+
+typedef enum {
+       MSG_COMPOSER_MODE_NORMAL,
+       MSG_COMPOSER_MODE_EDIT,
+       MSG_COMPOSER_MODE_FORWARD,
+} MSG_COMPOSER_MODE_E;
+
+typedef enum {
+       COMPOSER_RETURN_SUCCESS = 0,
+       COMPOSER_RETURN_FAIL                                            = -1,
+       COMPOSER_RETURN_NULL_POINTER                            = -2,
+       COMPOSER_RETURN_NO_SIM                                          = -3,
+       COMPOSER_RETURN_HANDLE_NOT_EXIST                        = -4,
+       COMPOSER_RETURN_MAX_PAGE                                        = -5,
+       COMPOSER_RETURN_INVALID_MSG_TYPE                        = -6,
+       COMPOSER_RETURN_INVALID_PAGE                            = -7,
+       COMPOSER_RETURN_INVALID_MEDIA_TYPE                      = -8,
+       COMPOSER_RETURN_ATTACHMENT_ALREADY_EXIST        = -9,
+       COMPOSER_RETURN_LOW_RESOLUTION                          = -10,
+       COMPOSER_RETURN_HIGH_RESOLUTION                         = -11,
+       COMPOSER_RETURN_NONSTANDARD_FILE                        = -12,
+       COMPOSER_RETURN_RECIPIENT_INVALID                       = -13,
+       COMPOSER_RETURN_RECIPIENT_COUNTMAX                      = -14,
+       COMPOSER_RETURN_RECIPIENT_DUPLICATE                     = -15,
+       COMPOSER_RETURN_MSG_SIZE_OVER                           = -16,
+       COMPOSER_RETURN_RESIZE_IMAGE                            = -17,
+       COMPOSER_RETURN_DRM_FORWARDLOCK                         = -18,
+       COMPOSER_RETURN_OVERSIZE_FILE                           = -19,
+       COMPOSER_RETURN_CREATION_RESTRICTED_MODE_FAIL   = -20,
+       COMPOSER_RETURN_CREATION_RESTRICTED_MODE_PASS   = -21,
+       COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL     = -22,
+       COMPOSER_RETURN_CREATION_WARINING_MODE_PASS     = -23,
+} COMPOSER_RETURN_TYPE_E;
+
+typedef enum {
+       COMPOSER_MSG_TYPE_INVALID,
+       COMPOSER_MSG_TYPE_SMS,
+       COMPOSER_MSG_TYPE_MMS,
+} COMPOSER_MSG_TYPE_E;
+
+typedef enum {
+       COMPOSER_RECP_TYPE_UNKOWN,
+       COMPOSER_RECP_TYPE_TO,
+       COMPOSER_RECP_TYPE_CC,
+       COMPOSER_RECP_TYPE_BCC,
+       COMPOSER_RECP_TYPE_FROM,
+       COMPOSER_RECP_TYPE_MAX,
+} COMPOSER_RECP_TYPE_E;
+
+typedef enum {
+       COMPOSER_MEDIA_TYPE_UNKNOWN,
+       COMPOSER_MEDIA_TYPE_IMAGE,
+       COMPOSER_MEDIA_TYPE_VIDEO,
+       COMPOSER_MEDIA_TYPE_AUDIO,
+       COMPOSER_MEDIA_TYPE_TEXT,
+       COMPOSER_MEDIA_TYPE_ANIMATE,
+       COMPOSER_MEDIA_TYPE_DRM,
+       COMPOSER_MEDIA_TYPE_MAX = 0xff
+} COMPOSER_MEDIA_TYPE_E;
+
+typedef enum {
+       COMPOSER_MEDIA_TRACK_TYPE_NONE,
+       COMPOSER_MEDIA_TRACK_TYPE_VIDEO,
+       COMPOSER_MEDIA_TRACK_TYPE_AUDIO,
+} COMPOSER_MEDIA_TRACK_TYPE_E;
+
+typedef enum {
+       COMPOSER_REGION_ORDER_UNDETERMINDED = 0x00,
+       COMPOSER_REGION_ORDER_IMAGE_TOP,
+       COMPOSER_REGION_ORDER_TEXT_TOP,
+} COMPOSER_MMS_REGION_ORDER_E;
+
+typedef enum {
+       COMPOSER_STATE_TYPE_INVALID = 0,
+       COMPOSER_STATE_TYPE_CREATE,
+       COMPOSER_STATE_TYPE_RUNNING,
+       COMPOSER_STATE_TYPE_PAUSE,
+       COMPOSER_STATE_TYPE_DESTROY,
+       COMPOSER_STATE_TYPE_MAX,
+} COMPOSER_STATE_TYPE_E;
+
+typedef enum {
+       COMPOSER_STATUS_POPUP_BUTTON_NONE = 0,
+       COMPOSER_STATUS_POPUP_BUTTON_OK,
+       COMPOSER_STATUS_POPUP_BUTTON_CLOSE,
+       COMPOSER_STATUS_POPUP_BUTTON_OK_CANCEL,
+       COMPOSER_STATUS_POPUP_BUTTON_MAX,
+} COMPOSER_POPUP_BUTTON_TYPE_E;
+
+enum {
+       COMPOSER_CREATION_MODE_RESTRICTED = 0,
+       COMPOSER_CREATION_MODE_WARNING,
+       COMPOSER_CREATION_MODE_FREE,
+       COMPOSER_CREATION_MODE_MAX,
+};
+
+typedef enum {
+       COMPOSER_FOCUS_RECIPIENT = 0,
+       COMPOSER_FOCUS_BODY,
+       COMPOSER_FOCUS_SUBJECT,
+       COMPOSER_FOCUS_DEFAULT,
+} COMPOSER_FOCUS_E;
+
+typedef enum {
+       COMPOSER_RECP_ADDR_NONE,
+       COMPOSER_RECP_ADDR_INVALID,
+       COMPOSER_RECP_ADDR_VALID_NUMBER,
+       COMPOSER_RECP_ADDR_VALID_EMAIL,
+} COMPOSER_RECP_ADDR_E;
+
+typedef enum {
+       COMPOSER_CHAR_ENCODE_GSM7 = 0,
+       COMPOSER_CHAR_ENCODE_GSM7_ABNORMAL,
+       COMPOSER_CHAR_ENCODE_UNICODE,
+       COMPOSER_CHAR_ENCODE_MAX,
+} COMPOSER_CHAR_ENCODE_E;
+
+typedef enum {
+       COMPOSER_PREDICTSEARCH_NONE = 0,
+       COMPOSER_PREDICTSEARCH_NAME_OR_NUMBER,
+       COMPOSER_PREDICTSEARCH_NAME_OR_EMAIL,
+       COMPOSER_PREDICTSEARCH_LOG,
+       COMPOSER_PREDICTSEARCH_END,
+} COMPOSER_PREDICTSEARCH_STATE_E;
+
+typedef enum {
+       COMPOSER_ROTATE_UNKNOWN = 0,
+       COMPOSER_ROTATE_PORTRAIT = APP_DEVICE_ORIENTATION_0,
+       COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN = APP_DEVICE_ORIENTATION_180,
+       COMPOSER_ROTATE_LANDSCAPE = APP_DEVICE_ORIENTATION_270,
+       COMPOSER_ROTATE_LANDSCAPE_UPSIDEDOWN = APP_DEVICE_ORIENTATION_90,
+} COMPOSER_ROTATE_TYPE_E;
+
+typedef enum {
+       COMPOSER_EDIT_NONE,
+       COMPOSER_EDIT_RECIPIENT,
+       COMPOSER_EDIT_BODY,
+       COMPOSER_EDIT_RECIPIENT_AND_BODY,
+} COMPOSER_EDIT_STATE_E;
+
+enum {
+       COMPOSER_ADDR_TYPE_NUMBER,
+       COMPOSER_ADDR_TYPE_EMAIL
+};
+
+enum {
+       COMPOSER_TYPE_SUBJECT = 0,
+       COMPOSER_TYPE_BODY
+};
+
+enum {
+       RECIPIENT_PARSING_TYPE_ADD_CHAR,
+       RECIPIENT_PARSING_TYPE_DELETE_CHAR,
+       RECIPIENT_PARSING_TYPE_ENTER_KEY,
+       RECIPIENT_PARSING_TYPE_MAX,
+};
+
+typedef enum {
+       COMPOSER_CONTENT_CREATION_NONE,
+       COMPOSER_CONTENT_CREATION_ALLOWED,
+       COMPOSER_CONTENT_CREATION_ALLOWED_WITH_RESIZE,
+       COMPOSER_CONTENT_CREATION_NOT_ALLOWED,
+} COMPOSER_CONTENT_CREATION_MODE_E;
+
+/******************************
+ * structures
+ *******************************/
+typedef struct {
+       char m_szextend[COMPOSER_COMMON_EXT_MAX_LENGTH + 1];
+       char m_szmime_type[COMPOSER_COMMON_MIME_MAX_LEN + 1];
+       COMPOSER_MEDIA_TYPE_E m_ncontent_type;
+} composer_mime_type_t;
+
+/*
+Used change number for contact info
+*/
+typedef struct _CONTACT_ITEM_S {
+       int index;
+       int type;       /*COMPOSER_ADDR_TYPE_NUMBER:number, COMPOSER_ADDR_TYPE_EMAIL:email*/
+       int contact_type;       /*number or email type of contact like Mobile, Home*/
+       char recipient[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1];
+} CONTACT_ITEM_S;
+
+/*
+Used MBE's data && PredictSearch
+*/
+typedef struct _RECIPIENT_ITEM_S {
+       COMPOSER_RECP_ADDR_E type;
+       int index;
+       char recipient[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1];
+       char display_name[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1];
+       char image_path[COMPOSER_FILEPATH_LEN_MAX+1];
+} RECIPIENT_ITEM_S;
+
+typedef struct _RECIPIENT_S {
+       const char *name;
+       void *cd;
+       int mode;
+       int recipient_h;
+       bool is_required_address_popup;
+
+       Evas_Object *parent;
+       Evas_Object *bx_main;
+       Evas_Object *sc;
+       Evas_Object *ly_to;
+       Evas_Object *mbe;
+
+       Evas_Object *popup_selected;
+       Elm_Object_Item *sel_mbe_item;
+       RECIPIENT_ITEM_S *sel_r_item;
+
+       Evas_Object *popup_change_number;
+       Elm_Genlist_Item_Class change_number_itc;
+
+       Ecore_Idler *scroll_down_idler;
+
+       COMPOSER_RECP_ADDR_E type;
+       Ecore_Idler *notify_popup_idler;
+} RECIPIENT_S;
+
+typedef struct _PREDICTSEARCH_S {
+       const char *name;
+       void *cd;
+       Evas_Object *parent;
+       Evas_Object *glist_ps;
+       Elm_Genlist_Item_Class itc_1line;
+       Elm_Genlist_Item_Class itc_2line;
+
+       COMPOSER_PREDICTSEARCH_STATE_E state;
+
+       char txt_ps_keyword[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1];
+       char txt_ps_reqkeyword[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1];
+       Eina_Bool IsShow;
+       contacts_list_h ct_list;
+       int count;
+
+       Ecore_Idler *idler_ps;
+       Ecore_Timer *timer_ps;
+} PREDICTSEARCH_S;
+
+typedef struct _SUBJECT_S {
+       Evas_Object *layout;
+       Evas_Object *entry;
+       Evas_Object *del_icon;
+} SUBJECT_S;
+
+typedef struct _MSG_COMPOSER_ATTACHITEM_S {
+       Evas_Object *layout;
+       char file_path[COMPOSER_FILEPATH_LEN_MAX + 1];
+       char file_name[COMPOSER_FILEPATH_LEN_MAX + 1];
+       int type;
+} MSG_COMPOSER_ATTACH_ITEM_S;
+
+typedef struct _MSG_COMPOSER_ATTACH_S {
+       int attachment_Cnt;
+       long long attachfileSize;
+       Eina_List *attachitem_list;
+} MSG_COMPOSER_ATTACH_S;
+
+typedef struct _text_info {
+       COMPOSER_CHAR_ENCODE_E encode;
+       int char_count;
+       int page_size;
+} text_info_s;
+
+typedef struct _MSG_COMPOSER_BODY_PAGE_S {
+       Evas_Object *layout;
+       Evas_Object *page_main_box;
+
+       Evas_Object *upper_layout;
+       Evas_Object *page_box;
+       Evas_Object *del_icon;
+
+       bool is_image_item;
+       bool isVideo;
+       Evas_Object *image_item;
+       char image_file_path[COMPOSER_FILEPATH_LEN_MAX + 1];
+
+       Evas_Object *entry;
+       text_info_s text_info;
+
+       bool is_sound_item;
+       Evas_Object *sound_item;
+       char sound_file_path[COMPOSER_FILEPATH_LEN_MAX + 1];
+
+       int page_duration;
+} MSG_COMPOSER_BODY_PAGE_S;
+
+typedef struct _MSG_COMPOSER_BODY_S {
+       int page_count;
+       Eina_List *page_list;
+
+       int region_order;
+       COMPOSER_CONTENT_CREATION_MODE_E creation_allowed;
+} MSG_COMPOSER_BODY_S;
+
+typedef struct _MSG_COMPOSER_DATA_S {
+       /*ug data & callback*/
+       ui_gadget_h ug;
+       ui_gadget_h loaded_ug;
+       struct ug_cbs cbs;
+
+       /*composer mode & state*/
+       MSG_UG_MODE_E msg_ug_mode;
+       MSG_COMPOSER_MODE_E composer_mode;
+       COMPOSER_STATE_TYPE_E state;
+       COMPOSER_ROTATE_TYPE_E rotate;
+       COMPOSER_MSG_TYPE_E msg_type;
+
+       bool isLoad;
+       bool isFullview;
+       bool isMsgInternal;
+       bool isAppControl;
+       bool isEmulator;
+       bool sending_success;
+
+       bool send_button_clicked;
+       bool add_button_clicked;
+       bool add_menu_clicked;
+
+       bool loaded_aul;
+       bool isSubject;
+       bool send_button_is_show;
+       bool isclosed;  /* composer is closed */
+       bool loading_draft;     /* draft msg loading status */
+       bool make_default_body_size;
+       bool is_default_body_size;
+       bool is_keypad_show;
+       bool disable_auto_save_mode;
+       Elm_Win_Indicator_Mode indicator_mode;
+
+       int current_edit_entry;
+       int first_focus;
+
+       int window_w;
+       int window_h;
+
+       int ly_body_h;
+       int send_check_exception_type;
+       int msg_id;
+       char *working_path;
+
+       /* setting data */
+       int font_size;
+       int mms_max_size;
+       int page_duration;
+       int cms_max_page;
+       int encode_mode;
+
+       /*message handler*/
+       msg_handle_t msg_handle;
+       void *tapi_handle;
+
+       /*module data*/
+       SUBJECT_S sub_data;
+       MSG_COMPOSER_BODY_S body_data;
+       MSG_COMPOSER_ATTACH_S attach_data;
+
+       Eina_List *recipient_list; /* recipient list for bubble composer */
+       RECIPIENT_S *recipient;
+       PREDICTSEARCH_S *predictsearch;
+       Eina_List *attachlist;
+       Eina_List *iter_list;
+       int attach_index;       /*current added attach index*/
+
+       /*Evas Object*/
+       Evas_Object *main_window;
+       Evas_Object *base;
+       Evas_Object *navi_bar;
+       Evas_Object *navi_title_layout;
+       Evas_Object *title_menu_layout;
+       Evas_Object *more_btn;
+       Evas_Object *compose_btn;
+       Evas_Object *back_btn;
+       Evas_Object *toolbar_top;
+       Elm_Object_Item *navi_it;
+
+       Evas_Object *content_layout;
+       Evas_Object *bg;
+       Evas_Object *ly_body;
+       Evas_Object *ly_recipient;
+
+       Evas_Object *add_button;
+       Evas_Object *send_button;
+
+       Evas_Object *body_scroll;
+       Evas_Object *body_box;
+
+       Evas_Object *ly_attach_main;
+
+       Evas_Object *add_popup;
+       Evas_Object *progress_popup;
+       Evas_Object *popup_end;
+       Evas_Object *ctx_popup;
+       Evas_Object *custom_popup;
+       Eina_List *popup_list;
+
+       Evas_Object *page_duration_entry;
+
+       Evas_Object *last_focus_entry;
+       Ecore_Idler *last_focus_idler;
+
+       Ecore_Thread *attach_thread;
+       Ecore_Job *job_thread_end;
+       Ecore_Timer *flight_mode_timer;
+
+       Elm_Theme *th;
+
+       /* for use volume key setting */
+       Ecore_Event_Handler *volkey_release_handler;
+       Ecore_Event_Handler *volkey_press_handler;
+       Ecore_Timer *vol_up_key_longpress;
+       Ecore_Timer *vol_down_key_longpress;
+       Ecore_X_Display *xdisplay;
+
+       MSG_BUBBLE_DATA *bubble_data; /* For bubble data structure */
+} MSG_COMPOSER_VIEW_DATA_S;
+
+#endif                         /* __MSG_UI_COMPOSER_DATA_H_ */
diff --git a/composer/include/msg-ui-composer-external.h b/composer/include/msg-ui-composer-external.h
new file mode 100755 (executable)
index 0000000..4a5a592
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_COMPOSER_EXTERNAL_H__
+#define __MSG_COMPOSER_EXTERNAL_H__
+
+#include "msg-ui-composer-data.h"
+
+#define GALLERY_TOKEN ";"
+#define MYFILE_TOKEN "?"
+
+#define TXT_UG_NAME_MYFILE                     "myfile-efl"
+#define TXT_UG_NAME_MEMO                       "memo-efl"
+#define TXT_UG_NAME_GALLERY                    "gallery-efl"
+#define TXT_UG_NAME_CALENDAR           "calendar-efl"
+#define TXT_UG_NAME_CONTACT_PHONEUI            "contacts-tabui-efl"
+#define TXT_UG_NAME_CONTACTS_DETAILS   "contacts-details-efl"
+#define TXT_UG_NAME_CONTACTS_LIST      "contacts-list-efl"
+#define TXT_UG_NAME_MSG_VIEWER         "msg-viewer-efl"
+
+typedef enum {
+       COMPOSER_EXT_TYPE_GALLERY,
+       COMPOSER_EXT_TYPE_MYFILE,
+       COMPOSER_EXT_TYPE_NAMECARD,
+       COMPOSER_EXT_TYPE_CALENDAR,
+       COMPOSER_EXT_TYPE_MEMO,
+       COMPOSER_EXT_TYPE_CAMERA,
+       COMPOSER_EXT_TYPE_CAMCORDER,
+       COMPOSER_EXT_TYPE_MSGVIEWER,
+       COMPOSER_EXT_TYPE_CONTACT_PHONEUI,
+       COMPOSER_EXT_TYPE_SOUND,
+       COMPOSER_EXT_TYPE_IMAGE,
+       COMPOSER_EXT_TYPE_COMMON,
+       COMPOSER_EXT_TYPE_MAX = 0xff,
+} COMPOSER_EXT_TYPE_E;
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_external_call(MSG_COMPOSER_VIEW_DATA_S *cd,
+                                                                                                               COMPOSER_EXT_TYPE_E ext_type,
+                                                                                                               void *reserved);
+
+ui_gadget_h msg_ui_composer_launch_contact_detail_ug(MSG_COMPOSER_VIEW_DATA_S *cd, int ct_id);
+ui_gadget_h msg_ui_composer_launch_contact_list_ug(MSG_COMPOSER_VIEW_DATA_S *cd, int type, const char *str);
+ui_gadget_h msg_ui_composer_launch_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle);
+ui_gadget_h msg_ui_composer_launch_email_create(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle);
+ui_gadget_h msg_ui_composer_launch_viewer_create(void *data, service_h svc_handle);
+
+#endif/*__MSG_COMPOSER_EXTERNAL_H__*/
diff --git a/composer/include/msg-ui-composer-main.h b/composer/include/msg-ui-composer-main.h
new file mode 100755 (executable)
index 0000000..73f712b
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_MAIN_H_
+#define __MSG_UI_COMPOSER_MAIN_H_
+
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-util.h"
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_init(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_start(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_rotate(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_ROTATE_TYPE_E rotate);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_reset(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_destroy(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_change_language(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_reset_request(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_change_bubble_view(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_change_composer_view(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_bubble_data_set(MSG_COMPOSER_VIEW_DATA_S *cd, int thread_id);
+void msg_ui_composer_editable_set(MSG_COMPOSER_VIEW_DATA_S *cd, Eina_Bool editable);
+void msg_ui_composer_bubble_del_all(void *data, service_h svc_handle);
+Evas_Object *msg_ui_composer_create_navi_title_bar(void *data);
+void msg_ui_composer_navi_title_set(void *data);
+
+void msg_ui_composer_connect_handler(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_disconnect_handler(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+#endif/*__MSG_UI_COMPOSER_MAIN_H_*/
diff --git a/composer/include/msg-ui-composer-message-data.h b/composer/include/msg-ui-composer-message-data.h
new file mode 100755 (executable)
index 0000000..4e7d169
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef _MSG_UI_COMPOSER_MESSAGE_DATA_H_
+#define _MSG_UI_COMPOSER_MESSAGE_DATA_H_
+
+#include "msg-ui-composer-data.h"
+#include <time.h>
+#include <glib.h>
+
+
+/*********************
+ *
+ *     structures
+ *
+ *************** *******/
+
+typedef struct _MSG_COMPOSER_MMS_PAGE_S {
+       bool isText;
+       char body_text[COMPOSER_MMS_TEXT_MAX_BYTE + 1];
+
+       bool isImage;
+       bool isVideo;
+       char image_file_path[DEF_BUF_LEN_L];
+
+       bool isSound;
+       char sound_file_path[DEF_BUF_LEN_L];
+
+       int page_duration;
+
+} MSG_COMP_MMS_PAGE_S;
+
+typedef struct _MSG_COMPOSER_ATTACHMENT_DATA_S {
+       char filepath[COMPOSER_FILEPATH_LEN_MAX + 1];
+       char filename[COMPOSER_FILENAME_LEN_MAX + 1];
+       int filetype;
+} MSG_COMP_ATTACH_DATA_S;
+
+typedef struct _MSG_COMPOSER_MMS_DATA_S {
+       bool isTextTop;
+       bool isSubject;
+       char subject[COMPOSER_SUBJECT_MAX_BYTE + 1];
+       int page_count;
+       MSG_COMP_MMS_PAGE_S pagelist[COMPOSER_MMS_MAX_PAGE];
+       int attach_count;
+       MSG_COMP_ATTACH_DATA_S attachlist[COMPOSER_MMS_MAX_ATTACH_COUNT];
+} MSG_COMP_MMS_DATA_S;
+
+typedef struct _MSG_COMPOSER_SMS_DATA_S {
+       char *body_text;
+       int body_length;
+
+} MSG_COMP_SMS_DATA_S;
+
+typedef struct _MSG_COMPOSER_MESSAGE_DATA_S {
+       msg_struct_t msgInfo;
+
+       GSList *recp_list;
+       COMPOSER_MSG_TYPE_E msg_type;
+       MSG_COMP_SMS_DATA_S sms_data;
+       MSG_COMP_MMS_DATA_S mms_data;
+} MSG_COMP_MSG_DATA_S;
+
+#endif                         /* _MSG_UI_COMPOSER_MESSAGE_DATA_H_ */
diff --git a/composer/include/msg-ui-composer-message.h b/composer/include/msg-ui-composer-message.h
new file mode 100755 (executable)
index 0000000..39124b0
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_MSG_H_
+#define        __MSG_UI_COMPOSER_MSG_H_
+
+#include "msg-ui-composer-data.h"
+
+
+/******************************
+ * structures
+ *******************************/
+
+typedef struct _COMPOSER_SMIL_REGION_S_ {
+       char szID[MAX_SMIL_REGION_ID + 1];
+       int left;
+       int top;
+       int width;
+       int height;
+       int bgcolor;
+} MSG_COMP_REGION_S;
+
+enum __COMPOSER_CONFIG_TYPE_E {
+       COMPOSER_CONFIG_TYPE_GENERAL = MSG_GENERAL_OPT,
+       COMPOSER_CONFIG_TYPE_SMS_SEND = MSG_SMS_SENDOPT,
+       COMPOSER_CONFIG_TYPE_SMSC_LIST = MSG_SMSC_LIST,
+       COMPOSER_CONFIG_TYPE_MMS_SEND = MSG_MMS_SENDOPT,
+       COMPOSER_CONFIG_TYPE_MMS_RECIEVE = MSG_MMS_RECVOPT,
+       COMPOSER_CONFIG_TYPE_MMS_CLASS = MSG_MMS_CLASSOPT,
+       COMPOSER_CONFIG_TYPE_MMS_STYLE = MSG_MMS_STYLEOPT,
+       COMPOSER_CONFIG_TYPE_PUSHMSG = MSG_PUSHMSG_OPT,
+       COMPOSER_CONFIG_TYPE_CBMSG = MSG_CBMSG_OPT,
+       COMPOSER_CONFIG_TYPE_VOICEMAIL = MSG_VOICEMAIL_OPT,
+       COMPOSER_CONFIG_TYPE_MMS_SIZE = MSG_MSGSIZE_OPT,
+};
+
+enum __COMPOSER_CREATION_MODE_E {
+       COMPOSER_CREATIONMODE_RESTRICTED = MSG_CREATION_MODE_RESTRICTED,
+       COMPOSER_CREATIONMODE_WARNING = MSG_CREATION_MODE_WARNING,
+       COMPOSER_CREATIONMODE_FREE = MSG_CREATION_MODE_FREE,
+};
+
+/*****************************
+ *     structures
+ ***************************/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_init();
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_destroy();
+COMPOSER_RETURN_TYPE_E msg_ui_composer_create_new_message();
+COMPOSER_RETURN_TYPE_E msg_ui_composer_release_message();
+
+/* Msg type*/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_msg_type(COMPOSER_MSG_TYPE_E msg_type);
+
+/* Recipient*/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_add_address(char *number);
+GSList *msg_ui_composer_message_get_address();
+
+/* SMS*/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_sms_body(char *body_text);
+
+/* MMS - attachment*/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_add_attachments(const char *filepath, int filetype);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_attach_count(int attach_count);
+
+/* MMS - subject*/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_subject(char *subject, int length);
+
+/* MMS - body*/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_page_count(int page_count);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_is_text_top(bool isTextTop);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_mms_set_text(const char *text, int nPage);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_mms_set_media(const char *file_path, COMPOSER_MEDIA_TYPE_E media_type, int nPage);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_mms_set_page_duration(int nPage, int duration);
+
+/* save send*/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_thread_id_by_address(msg_handle_t msg_handle, GSList *addr_list, msg_thread_id_t *tid);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_delete_draft_message(msg_handle_t msg_handle, msg_thread_id_t tid);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_save_message(msg_handle_t msg_handle, int msg_id);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_data(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_make_and_send(msg_handle_t msg_handle, int msg_id, msg_thread_id_t *tid);
+
+msg_struct_t msg_ui_composer_message_make_preview(msg_handle_t msg_handle);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_loaded_data(void *composer_data, bool set_recipient);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_page_data(void *composer_data, int page);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_load_message(msg_handle_t msg_handle, int msgID);
+
+#endif /*__MSG_UI_COMPOSER_MSG_H_*/
diff --git a/composer/include/msg-ui-composer-pageduration.h b/composer/include/msg-ui-composer-pageduration.h
new file mode 100755 (executable)
index 0000000..8f65f68
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_PAGEDURATION_H_
+#define __MSG_UI_COMPOSER_PAGEDURATION_H_
+
+#include "msg-ui-composer-data.h"
+
+typedef enum {
+       MSGC_PAGE_DURATION_CUSTOM = 0,
+       MSGC_PAGE_DURATION_2 = 2,
+       MSGC_PAGE_DURATION_5 = 5,
+       MSGC_PAGE_DURATION_10 = 10,
+} MSGC_PAGE_DURATION_E;
+
+void msg_ui_composer_pageduration_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd);
+/* get pageduration value from setting */
+int msg_ui_composer_pageduration_value_get(MSG_COMPOSER_VIEW_DATA_S *cd);
+#endif/*__MSG_UI_COMPOSER_PAGEDURATION_H_*/
diff --git a/composer/include/msg-ui-composer-popup.h b/composer/include/msg-ui-composer-popup.h
new file mode 100755 (executable)
index 0000000..f599a2d
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_POPUP_H_
+#define __MSG_UI_COMPOSER_POPUP_H_
+
+/* includes*/
+#include "msg-ui-composer-data.h"
+#include <Elementary.h>
+
+/* defines*/
+#define COMPOSER_STATUS_POPUP_DEFAULT_TIME     2
+
+
+/* function prototypes*/
+void msg_ui_composer_status_noti_show(const char *msg);
+Evas_Object *msg_ui_composer_status_popup_show(Evas_Object *parent, MSG_COMPOSER_VIEW_DATA_S *cd, const char *msg, int time);
+Evas_Object *msg_ui_composer_status_btn_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, const char *msg, int time, const char *btn_text);
+
+Evas_Object *msg_ui_composer_list_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char *title, Evas_Object *list, const char *style);
+Evas_Object *msg_ui_composer_checkbox_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char *title, const char *msg, const char *check_msg);
+Evas_Object *msg_ui_composer_custom_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char *title, Evas_Object *parent, Evas_Object *layout);
+
+Evas_Object *msg_ui_composer_progress_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, const char *msg);
+
+Evas_Object *msg_ui_composer_popup_button_create(Evas_Object *parent, const char *str);
+
+void msg_ui_composer_status_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
+
+Eina_Bool msg_ui_composer_popup_exist(void *data);
+void msg_ui_composer_popup_focus(void *data);
+void msg_ui_composer_popup_delete_all(void *data);
+
+#endif /* __MSG_UI_COMPOSER_POPUP_H_ */
diff --git a/composer/include/msg-ui-composer-predictsearch.h b/composer/include/msg-ui-composer-predictsearch.h
new file mode 100755 (executable)
index 0000000..c62a740
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_PREDICTSEARCH_H_
+#define __MSG_UI_COMPOSER_PREDICTSEARCH_H_
+
+/* includes*/
+#include "msg-ui-composer-data.h"
+#include <Elementary.h>
+
+/* defines*/
+#define COMPOSER_PS_TIMER 0.4
+#define COMPOSER_PSLIST_COUNT_AT_TIME 20
+
+/* enum types*/
+
+/* structures*/
+
+/* function prototypes*/
+Evas_Object *msg_ui_composer_predictsearch_list_create(Evas_Object *parent, MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_predictsearch_list_delete(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_predictsearch_request(MSG_COMPOSER_VIEW_DATA_S *cd, const char *str);
+void msg_ui_composer_predictsearch_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+#endif                         /* __MSG_UI_COMPOSER_PREDICTSEARCH_H_ */
diff --git a/composer/include/msg-ui-composer-recipient-callback.h b/composer/include/msg-ui-composer-recipient-callback.h
new file mode 100755 (executable)
index 0000000..b4f15d8
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_RECIPIENT_CALLBACK_H_
+#define __MSG_UI_COMPOSER_RECIPIENT_CALLBACK_H_
+
+/* includes*/
+#include "msg-ui-composer-data.h"
+#include <Elementary.h>
+
+/*function prototypes*/
+/*change number popup cb*/
+void msg_ui_recipient_change_number_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_change_number_popup_list_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+char *msg_ui_recipient_change_number_gl_text_get(void *data, Evas_Object *obj, const char *part);
+void msg_ui_recipient_change_number_gl_del(void *data, Evas_Object *obj);
+/*select popup cb*/
+void msg_ui_recipient_select_popup_list_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_select_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+void msg_ui_recipient_contact_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+/*multibutton cb*/
+void msg_ui_recipient_mbe_focused_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_mbe_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_mbe_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_mbe_item_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+Eina_Bool msg_ui_recipient_mbe_item_verify_cb(Evas_Object *obj, const char *item_label, const void *item_data, const void *data);
+void msg_ui_recipient_mbe_item_added_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_mbe_item_deleted_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_mbe_expanded_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_mbe_contracted_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_mbe_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+/*entry in mbe cb*/
+void msg_ui_recipient_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_entry_activated_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_entry_filter_cb(void *data, Evas_Object *entry, char **text);
+
+void msg_ui_recipient_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+#endif/*__MSG_UI_COMPOSER_RECIPIENT_CALLBACK_H_*/
diff --git a/composer/include/msg-ui-composer-recipient.h b/composer/include/msg-ui-composer-recipient.h
new file mode 100755 (executable)
index 0000000..1443e84
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_RECIPIENT_H_
+#define __MSG_UI_COMPOSER_RECIPIENT_H_
+
+/* includes*/
+#include <Elementary.h>
+#include "msg-ui-composer-data.h"
+
+
+RECIPIENT_S *msg_ui_composer_recipient_create(Evas_Object *p, int mode, void *data);
+void msg_ui_composer_recipient_delete(RECIPIENT_S *rd);
+void msg_ui_composer_recipient_update(RECIPIENT_S *rd);
+void msg_ui_composer_recipient_clear(RECIPIENT_S *rd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_append(RECIPIENT_S *rd, const char *recipient, int index);
+
+const char *msg_ui_composer_recipient_entry_text_get(RECIPIENT_S *rd);
+void msg_ui_composer_recipient_entry_text_set(RECIPIENT_S *rd, const char *str);
+
+void msg_ui_composer_recipient_focus_set(RECIPIENT_S *rd);
+void msg_ui_composer_recipient_expanded_set(RECIPIENT_S *rd, Eina_Bool expanded);
+
+
+Eina_Bool msg_ui_composer_recipient_is_mms(MSG_COMPOSER_VIEW_DATA_S *cd);
+Eina_Bool msg_ui_composer_recipient_vaild_check(const char *recipient);
+
+void msg_ui_composer_recipient_select_popup_create(void *data);
+void msg_ui_composer_recipient_selected_delete(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_recipient_selected_edit(MSG_COMPOSER_VIEW_DATA_S *cd);
+RECIPIENT_ITEM_S *msg_ui_composer_recipient_selected_item_data_get(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+Eina_Bool msg_ui_composer_recipient_show_invalid_address_popup(void *data);
+void msg_ui_composer_recipient_create_change_number_popup(void *data);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_read_data(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_duplicate_check(RECIPIENT_S *rd, const char *recipient);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_set_recipient_list(MSG_COMPOSER_VIEW_DATA_S *cd, msg_thread_id_t thread_id);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_add_recipient_list(MSG_COMPOSER_VIEW_DATA_S *cd, const char *recipient);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_clear_recipient_list(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+RECIPIENT_ITEM_S *msg_ui_composer_recipient_item_make_by_string(const char *str);
+COMPOSER_RECP_ADDR_E msg_ui_composer_recipient_type_get(const char *recipient);
+COMPOSER_RECP_ADDR_E msg_ui_composer_recipient_addr_type_get(RECIPIENT_S *rd);
+void msg_ui_composer_recipient_addr_type_set(RECIPIENT_S *rd, COMPOSER_RECP_ADDR_E type);
+int msg_ui_composer_recipient_count_get(RECIPIENT_S *rd);
+Eina_List *msg_ui_composer_recipient_invalid_recipient_list_get(RECIPIENT_S *rd);
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_set_loaded_data(void *data, const char *recipient, int index);
+
+void msg_ui_composer_recipient_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, const char *font_sytle);
+
+
+#endif/* __MSG_UI_COMPOSER_RECIPIENT_H_ */
diff --git a/composer/include/msg-ui-composer-res.h b/composer/include/msg-ui-composer-res.h
new file mode 100755 (executable)
index 0000000..296a697
--- /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://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_RES_H_
+#define __MSG_UI_COMPOSER_RES_H_
+
+/***********************
+ *  includes
+ ************************/
+#include <msg-ui-image-resource.h>
+
+/************************
+ * defines
+ ************************/
+#ifndef PKGNAME
+#define PKGNAME "org.tizen.message"
+#endif
+
+#ifndef PREFIX
+#define PREFIX "/usr/apps/" PKGNAME
+#endif
+
+#ifndef RESDIR
+#define RESDIR PREFIX "/res"
+#endif
+
+#ifndef EDJDIR
+#define EDJDIR  RESDIR "/edje"
+#endif
+
+#ifndef IMGDIR
+#define IMGDIR  RESDIR "/images"
+#endif
+
+#ifndef DATADIR
+#define DATADIR PREFIX "/data"
+#endif
+
+#define MSGC_UI_EDJ_PATH                                       EDJDIR
+#define MSGC_UI_DAT_PATH                                       DATADIR
+#define MSGC_UI_TMP_PATH                                       "/tmp"
+
+/*edj*/
+#define MSGC_UI_DEFAULT_EDJ                            MSGC_UI_EDJ_PATH "/composer.edj"
+
+/*edj group*/
+#define MSGC_EDJ_GRP_SUBJECT_FIELD                     "composer/subject/main"
+#define MSGC_EDJ_GRP_RECIPIENT_TO_FIELD        "composer/recipient/to_field"
+#define MSGC_EDJ_GRP_RECIPIENT_BT_FIELD        "composer/recipient/bt_field"
+#define MSGC_EDJ_GRP_BODY_FIELD                        "composer/body/main"
+#define MSGC_EDJ_GRP_BODY_PAGE_MAIN            "composer/body/page_main"
+#define MSGC_EDJ_GRP_BODY_PAGE                                 "composer/body/page"
+#define MSGC_EDJ_GRP_BODY_SOUND                        "composer/body/media_sound"
+#define MSGC_EDJ_GRP_BODY_MEDIA                        "composer/body/media_default"
+#define MSGC_EDJ_GRP_ATTACHMENT_MAIN                   "composer/attachment/main"
+#define MSGC_EDJ_GRP_ATTACHMENT_ITEM                   "composer/attachment/item"
+#define MSGC_EDJ_GRP_CONTENT_LAYOUT            "composer/content/full"
+#define MSGC_EDJ_GRP_BUBBLE_LAYOUT                     "composer/content/bubble"
+#define MSGC_EDJ_GRP_BUBBLE_MEDIA_LAYOUT                       "composer/content/bubble/media"
+#define MSGC_EDJ_GRP_DATEFIELD                         "composer/datefield"
+
+
+#endif/* __MSG_UI_COMPOSER_RES_H_ */
diff --git a/composer/include/msg-ui-composer-string.h b/composer/include/msg-ui-composer-string.h
new file mode 100755 (executable)
index 0000000..82e9ef1
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_STRING_H_
+#define __MSG_UI_COMPOSER_STRING_H_
+
+#define _SYSSTR(_id)                   dgettext("sys_string", _id)
+#define _MSGSTR(_id)                   dgettext("message", _id)
+
+/*Button*/
+#define MSGC_STR_BUTTON_OK                                             _SYSSTR("IDS_COM_SK_OK")
+#define MSGC_STR_BUTTON_CLOSE                                  _SYSSTR("IDS_COM_BODY_CLOSE")
+#define MSGC_STR_BUTTON_CANCEL                                 _SYSSTR("IDS_COM_SK_CANCEL")
+#define MSGC_STR_BUTTON_SEND                                   _SYSSTR("IDS_COM_SK_SEND_ABB")
+
+/*Other module*/
+#define MSGC_STR_SUBJECT                                               _SYSSTR("IDS_COM_BODY_SUBJECT")
+#define MSGC_STR_PREVIEW                                               _MSGSTR("IDS_MSGC_HEADER_PREVIEW")
+#define MSGC_STR_GALLERY                                               _SYSSTR("IDS_COM_BODY_GALLERY")
+#define MSGC_STR_MYFILE                                                _SYSSTR("IDS_COM_BODY_MY_FILES")
+#define MSGC_STR_CONTACT                                               _SYSSTR("IDS_COM_BODY_CONTACTS")
+#define MSGC_STR_RECENT                                                _SYSSTR("IDS_COM_BUTTON_RECENT")
+
+/*Title*/
+#define MSGC_STR_NEW_MESSAGE                                   _SYSSTR("IDS_COM_POP_NEW_MESSAGE")
+#define MSGC_STR_TO                                                            _MSGSTR("IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO")
+#define MSGC_STR_ADD_RECIPIENT                                 _SYSSTR("IDS_COM_BODY_TAP_TO_ADD_RECIPIENT")
+
+/*Popup*/
+#define MSGC_STR_POP_ATTACHMENT_COUNT_MAX              _MSGSTR("IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS")
+#define MSGC_STR_POP_ATTACHMENT_SIZE_MAX_Q             _MSGSTR("IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q")
+#define MSGC_STR_POP_ATTACHMENT_SIZE_MAX               _MSGSTR("IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB")
+#define MSGC_STR_POP_NOADDRESS                                         _MSGSTR("IDS_MSGC_POP_NO_ADDRESS")
+#define MSGC_STR_POP_NOSIM                                             _MSGSTR("IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX")
+#define MSGC_STR_POP_UNABLE_SEND                               _MSGSTR("IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE")
+#define MSGC_STR_POP_DISCARD_Q                                         _MSGSTR("IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q")
+#define MSGC_STR_POP_PAGE_MAX                                  _MSGSTR("IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED")
+#define MSGC_STR_POP_UNABLE_PLAY_DURING_CALL   _MSGSTR("IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL")
+#define MSGC_STR_POP_RESTRICT                                  _MSGSTR("IDS_MSGF_BODY_CREATIONMODERESTRICTED")
+#define MSGC_STR_POP_FILE_EXIST                                        _MSGSTR("IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS")
+#define MSGC_STR_POP_FILE_IS_FORWARD_LOCK              _MSGSTR("IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED")
+#define MSGC_STR_POP_ADDING            _MSGSTR("IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING")
+
+/*Notify*/
+#define MSGC_STR_NOTI_RECIPIENT_MAX                    _MSGSTR("IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED")
+#define MSGC_STR_NOTI_RECIPIENT_DUP                    _MSGSTR("IDS_MSGC_BODY_DUPLICATED_RECIPIENT")
+#define MSGC_STR_NOTI_RECIPIENT_INVALID                        _MSGSTR("IDS_MSGF_BODY_INVALID_RECIPIENT")
+#define MSGC_STR_NOTI_RECIPIENTS_INVALID               _MSGSTR("IDS_MSGF_BODY_INVALID_RECIPIENTS")
+#define MSGC_STR_NOTI_CHANGE_SMS                               _MSGSTR("IDS_MSGC_POP_CHANGED_TO_SMS")
+#define MSGC_STR_NOTI_CHANGE_MMS                               _MSGSTR("IDS_MSGC_POP_CHANGED_TO_MMS")
+
+#define MSGC_STR_PAGE_DURATION                                         _MSGSTR("IDS_MSGF_BODY_SETUP_PAGE_DURATION")
+#define MSGC_STR_SECONDS                                               _SYSSTR("IDS_COM_BODY_SECONDS_LC")
+#define MSGC_STR_2_SECONDS                                             _MSGSTR("IDS_MSGF_OPT_2SEC")
+#define MSGC_STR_5_SECONDS                                             _MSGSTR("IDS_MSGF_OPT_5SEC")
+#define MSGC_STR_10_SECONDS                                            _MSGSTR("IDS_MSGF_OPT_10SEC")
+#define MSGC_STR_CUSTOM_TIME                                   _MSGSTR("IDS_MSGF_BODY_CUSTOM_TIME")
+
+#endif/* __MSG_UI_COMPOSER_STRING_H_ */
diff --git a/composer/include/msg-ui-composer-subject.h b/composer/include/msg-ui-composer-subject.h
new file mode 100755 (executable)
index 0000000..1706f88
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_COMPOSER_SUBJECT_H_
+#define __MSG_UI_COMPOSER_SUBJECT_H_
+
+/* includes*/
+#include "msg-ui-composer-data.h"
+
+/* function prototypes*/
+Evas_Object *msg_ui_composer_create_subject_layout(Evas_Object *parent, MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_add_subject(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_subject_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_read_subject(MSG_COMPOSER_VIEW_DATA_S *cd);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_subject_set_loaded_data(void *data, const char *subject);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_remove_subject_layout(MSG_COMPOSER_VIEW_DATA_S *cd);
+void msg_ui_composer_subject_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, const char *font_sytle);
+
+#endif /*__MSG_UI_COMPOSER_SUBJECT_H_*/
diff --git a/composer/src/bubble/msg-ui-composer-bubble-callback.c b/composer/src/bubble/msg-ui-composer-bubble-callback.c
new file mode 100755 (executable)
index 0000000..87cb0cf
--- /dev/null
@@ -0,0 +1,1790 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "msg-ui-composer-bubble.h"
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-main.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-external.h"
+#include "msg-ui-composer-common.h"
+#include <fcntl.h>
+
+#define BUBBLE_TITLE_MENU_GENLIST_MAX_LINE 4
+#define BUBBLE_TITLE_MENU_GENLIST_1LINE_HEIGHT 112
+#define BUBBLE_TITLE_MENU_GENLIST_2LINE_HEIGHT 129
+#define BUBBLE_RETURN_DELETE_CANCEL 1000
+
+Elm_Genlist_Item_Class itc_popup = {0,};       /** itc for list style popup */
+
+Evas_Coord g_mouse_down_x = 0, g_mouse_down_y = 0;
+
+static void _bubble_show_normal_mode(void *data)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA pData = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       elm_object_part_content_unset(pData->parent_layout, "swl.sel_all");
+       evas_object_hide(pData->sel_all_ly);
+
+       Eina_List *l = NULL;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       if (pData->select_info) {
+               evas_object_del(pData->select_info);
+               pData->select_info = NULL;
+       }
+
+       elm_check_state_set(pData->sel_all_box, EINA_FALSE);
+
+       l = NULL;
+       item_data = NULL;
+       EINA_LIST_FOREACH(pData->realized_list, l, item_data) {
+               if (item_data) {
+                       evas_object_hide(item_data->chk);
+                       if (item_data->isCheck)
+                               elm_check_state_set(item_data->chk, EINA_FALSE);
+                       elm_object_signal_emit(item_data->ly, "elm,state,select,disable", "elm");
+                       evas_object_event_callback_del(item_data->ly, EVAS_CALLBACK_MOUSE_DOWN, msg_ui_bubble_item_mouse_down_cb);
+               }
+       }
+
+       l = NULL;
+       item_data = NULL;
+       EINA_LIST_FOREACH(pData->bubble_list, l, item_data) {
+               if (item_data) {
+                       item_data->isCheck = false;
+               }
+       }
+
+       pData->chk_list = eina_list_free(pData->chk_list);
+
+       msg_ui_bubble_change_normal_navi_control(pData);
+
+       pData->viewmode = BUBBLE_NORMAL_VIEW;
+
+       D_LEAVE;
+}
+
+static void _bubble_add_edit_controlbar(PMSG_BUBBLE_DATA pData)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+
+       elm_object_item_part_content_unset(cd->navi_it, "toolbar_button1");
+       elm_object_item_part_content_unset(cd->navi_it, "toolbar_button2");
+       elm_object_item_part_content_unset(cd->navi_it, "toolbar_more_btn");
+
+       Evas_Object *del_btn = elm_button_add(cd->navi_bar);
+       elm_object_style_set(del_btn, "naviframe/toolbar/left");
+       elm_object_text_set(del_btn, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+       evas_object_smart_callback_add(del_btn, "clicked", msg_ui_bubble_ctlbar_delete_cb, pData->callback_data);
+       elm_object_item_part_content_set(cd->navi_it, "toolbar_button1", del_btn);
+       elm_object_disabled_set(del_btn, EINA_TRUE);
+
+       Evas_Object *cancel_btn = elm_button_add(cd->navi_bar);
+       elm_object_style_set(cancel_btn, "naviframe/toolbar/right");
+       elm_object_text_set(cancel_btn, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       evas_object_smart_callback_add(cancel_btn, "clicked", msg_ui_bubble_ctlbar_cancel_cb, pData->callback_data);
+       elm_object_item_part_content_set(cd->navi_it, "toolbar_button2", cancel_btn);
+
+       D_LEAVE;
+}
+
+static void _bubble_change_edit_mode_title(PMSG_BUBBLE_DATA pData)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+
+       Evas_Object *content = elm_object_part_content_get(cd->navi_title_layout, "title_btn");
+
+       if (content)
+               evas_object_hide(content);
+
+       elm_object_part_content_unset(cd->navi_title_layout, "title_btn");
+       elm_object_part_text_set(cd->navi_title_layout, "title_text", dgettext("sys_string", "IDS_COM_SK_DELETE"));
+       D_LEAVE;
+}
+
+static void _sel_all_ly_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA) data;
+
+       pData->sel_all_checked = !pData->sel_all_checked;
+       elm_check_state_pointer_set(pData->sel_all_box, &pData->sel_all_checked);
+
+       msg_ui_bubble_sel_all_clicked_cb(data, NULL, NULL);
+
+       MSG_UI_LEAVE();
+}
+
+static void _bubble_add_navi_select_all_ly(PMSG_BUBBLE_DATA pData)
+{
+       if (!pData->sel_all_ly) {
+               pData->sel_all_ly = elm_layout_add(pData->bubble_layout);
+               elm_layout_theme_set(pData->sel_all_ly, "genlist", "item", "select_all/default");
+               evas_object_size_hint_weight_set(pData->sel_all_ly, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+               evas_object_size_hint_align_set(pData->sel_all_ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_event_callback_add(pData->sel_all_ly, EVAS_CALLBACK_MOUSE_DOWN, _sel_all_ly_mouse_down_cb, pData);
+
+               pData->sel_all_box = elm_check_add(pData->sel_all_ly);
+               elm_check_state_pointer_set(pData->sel_all_box, &pData->sel_all_checked);
+               evas_object_propagate_events_set(pData->sel_all_box, EINA_FALSE);
+               evas_object_smart_callback_add(pData->sel_all_box, "changed", msg_ui_bubble_sel_all_clicked_cb, pData);
+               evas_object_show(pData->sel_all_box);
+
+               elm_object_part_content_set(pData->sel_all_ly, "elm.icon", pData->sel_all_box);
+               elm_object_part_text_set(pData->sel_all_ly, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+       }
+
+       evas_object_show(pData->sel_all_ly);
+       elm_object_part_content_set(pData->parent_layout, "swl.sel_all", pData->sel_all_ly);
+}
+
+static void _progress_popup_delete(PMSG_BUBBLE_DATA pData)
+{
+       if (pData->popup) {
+               evas_object_del(pData->popup);
+               pData->popup = NULL;
+       }
+
+       if (pData->select_info) {
+               evas_object_del(pData->select_info);
+               pData->select_info = NULL;
+       }
+}
+
+static void _delete_finish(PMSG_BUBBLE_DATA pData)
+{
+       if (pData->popup)
+               _progress_popup_delete(pData);
+
+       if (pData->del_index + 1 == pData->bubble_count) {
+               pData->bubble_count = 0;
+       }
+
+       _bubble_show_normal_mode(pData->callback_data);
+       msg_ui_bubble_list_load(pData, false);
+
+       pData->del_thread = NULL;
+}
+
+static void _del_thread_feedback_fn(void *data, Ecore_Thread *thread, void *msg_data)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !thread || !data || !msg_data);
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)data;
+       int *ret = msg_data;
+
+       D_MSG("Delete message return value =[%d]", *ret);
+       if (*ret == MSG_SUCCESS) {
+               if (pData->progressbar)
+                       elm_progressbar_value_set(pData->progressbar, (double) (pData->del_index + 1) / pData->check_cnt);
+       } else if (*ret == BUBBLE_RETURN_DELETE_CANCEL) {
+               if (pData->del_cancel == true) {
+                       _delete_finish(pData);
+
+                       if (ret)
+                               free(ret);
+                       pData->del_cancel = false;
+                       return;
+               }
+       } else {
+               if (pData->popup)
+                       _progress_popup_delete(pData);
+
+               msg_ui_bubble_show_notify(pData, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+
+               _bubble_show_normal_mode(pData->callback_data);
+               msg_ui_bubble_list_load(pData, false);
+
+               pData->del_thread = NULL;
+
+               if (ret)
+                       free(ret);
+               return;
+       }
+
+       if (pData->del_index + 1 == pData->check_cnt) {
+               msg_ui_bubble_show_deleted_info(pData);
+               _delete_finish(pData);
+       } else {
+               pData->del_index++;
+       }
+
+       if (ret)
+               free(ret);
+}
+
+static void _del_thread_fn(void *data, Ecore_Thread *thread)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)data;
+
+       Eina_List *l;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+       EINA_LIST_FOREACH(pData->chk_list, l, item_data) {
+               int *ret = calloc(1, sizeof(int));
+
+               if (pData->del_cancel == true) {
+                       *ret = BUBBLE_RETURN_DELETE_CANCEL;
+                       ecore_thread_feedback(thread, (void *)ret);
+                       return;
+               }
+
+               if (item_data) {
+                       D_MSG("del_msg_id = [%d]", item_data->msgId);
+                       *ret = msg_delete_message(pData->msgHandle, item_data->msgId);
+
+                       ecore_thread_feedback(thread, (void *)ret);
+
+                       if (*ret != MSG_SUCCESS)
+                               return;
+               } else {
+                       *ret = MSG_ERR_NULL_POINTER;
+                       ecore_thread_feedback(thread, (void *)ret);
+                       return;
+               }
+       }
+
+}
+
+static void _del_all_item(PMSG_BUBBLE_DATA pData)
+{
+       D_ENTER;
+
+       msg_error_t err = MSG_SUCCESS;
+
+       err = msg_delete_thread_message_list(pData->msgHandle, pData->threadId, true);
+
+       if (err == MSG_SUCCESS) {
+               pData->bubble_count = 0;
+               msg_ui_bubble_show_deleted_info(pData);
+       } else {
+               msg_ui_bubble_show_notify(pData, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+
+               _bubble_show_normal_mode(pData->callback_data);
+               msg_ui_bubble_list_load(pData, false);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_change_normal_navi_control(PMSG_BUBBLE_DATA pData)
+{
+       if (!pData)
+                       return;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = pData->callback_data;
+
+       Evas_Object *btn1 = elm_object_item_part_content_unset(cd->navi_it, "toolbar_button1");
+       Evas_Object *btn2 = elm_object_item_part_content_unset(cd->navi_it, "toolbar_button2");
+
+       if (btn1)
+               evas_object_del(btn1);
+
+       if (btn2)
+               evas_object_del(btn2);
+
+       if (cd->back_btn) {
+               evas_object_show(cd->back_btn);
+               elm_object_part_content_set(cd->navi_title_layout, "prev_btn", cd->back_btn);
+       }
+
+       if (cd->more_btn) {
+               evas_object_show(cd->more_btn);
+               elm_object_part_content_set(cd->navi_title_layout, "more_btn", cd->more_btn);
+       }
+
+       if (cd->compose_btn && pData->isRotate == true) {
+               evas_object_show(cd->compose_btn);
+               elm_object_part_content_set(cd->navi_title_layout, "compose_btn", cd->compose_btn);
+       }
+
+       /* change title */
+       msg_ui_composer_navi_title_set(cd);
+
+       if (pData->msg_type == MSG_TYPE_SMS_WAPPUSH || pData->msg_type == MSG_TYPE_SMS_CB || pData->msg_type == MSG_TYPE_SMS_SYNCML)
+               msg_ui_composer_editable_set(cd, EINA_FALSE);
+       else
+               msg_ui_composer_editable_set(cd, EINA_TRUE);
+}
+
+void msg_ui_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)data;
+
+       if (pData->popup) {
+               evas_object_del(pData->popup);
+               pData->popup = NULL;
+       }
+}
+
+static void __msg_ui_bubble_unblock(PMSG_BUBBLE_DATA pData, char *addr)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData || !addr);
+
+       msg_error_t err = msg_common_delete_block_number(pData->msgHandle, addr);
+
+       if (err == MSG_SUCCESS) {
+               char msg[DEF_BUF_LEN] = {0,};
+               const char *str = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_UNBLOCKED");
+               snprintf(msg, sizeof(msg), str, addr);
+               msg_ui_bubble_show_notify(pData, msg);
+       } else {
+               D_EMSG("Unblock failed %d", err);
+       }
+}
+
+static void __msg_ui_bubble_block(PMSG_BUBBLE_DATA pData, char *addr)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData || !addr);
+
+       msg_error_t err = msg_common_add_block_number(pData->msgHandle, addr);
+
+       if (err == MSG_SUCCESS) {
+               char msg[DEF_BUF_LEN] = {0,};
+               const char *str = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_BLOCKED");
+               snprintf(msg, sizeof(msg), str, addr);
+               msg_ui_bubble_show_notify(pData, msg);
+       } else if (err == MSG_ERR_FILTER_DUPLICATED){
+               msg_ui_bubble_show_notify(pData, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"));
+       } else {
+               D_EMSG("block failed %d", err);
+       }
+}
+
+
+void __msg_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)data;
+
+       if (pData->popup) {
+               evas_object_del(pData->popup);
+               pData->popup = NULL;
+       }
+
+       char* addr = (char *)evas_object_data_get(obj, "address");
+       __msg_ui_bubble_block(pData, addr);
+}
+
+static void __msg_ui_bubble_create_block_popup(PMSG_BUBBLE_DATA pData, char *addr)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData || !addr);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+       char title[DEF_BUF_LEN] = {0,};
+
+       if (pData->popup) {
+               evas_object_del(pData->popup);
+               pData->popup = NULL;
+       }
+
+       Evas_Object *popup = elm_popup_add(cd->main_window);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       const char *str =  dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
+       snprintf(title, sizeof(title), str, addr);
+       elm_object_text_set(popup, title);
+
+       Evas_Object *btn_ok = elm_button_add(popup);
+       elm_object_style_set(btn_ok, "popup_button/default");
+       evas_object_data_set(btn_ok, "address", addr);
+       elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+       elm_object_part_content_set(popup, "button1", btn_ok);
+       evas_object_smart_callback_add(btn_ok, "clicked", __msg_block_ok_clicked_cb, pData);
+
+       Evas_Object *btn_cancel = elm_button_add(popup);
+       elm_object_style_set(btn_cancel, "popup_button/default");
+       elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", btn_cancel);
+       evas_object_smart_callback_add(btn_cancel, "clicked", msg_ui_popup_close_clicked_cb, pData);
+
+       evas_object_show(popup);
+       pData->popup = popup;
+}
+
+static void __msg_ui_bubble_list_popup_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       BUBBLE_ADDRESS_INFO *addr_info = (BUBBLE_ADDRESS_INFO *)data;
+       PMSG_BUBBLE_DATA bubble_data = evas_object_data_get(obj, "bubble_data");
+
+       if (!bubble_data) {
+               D_EMSG("[ERROR] bubble_data is NULL");
+               return;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S  *)bubble_data->callback_data;
+
+       if (!cd) {
+               D_EMSG("[ERROR] composer data is NULL");
+               return;
+       }
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       const char *label = elm_object_item_text_get((Elm_Object_Item *) event_info);
+
+       if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_CALL")) == 0) {
+               msg_ui_bubble_launch_voice_call(addr_info->address);
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL")) == 0) {
+               msg_ui_bubble_launch_video_call(addr_info->address);
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS")) == 0) { /* Add to contact with phone number string... */
+               msg_ui_composer_launch_contact_list_ug(cd, MSG_CT_UG_REQUEST_UPDATE_WITH_NUM, addr_info->address);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT")) == 0) {
+               msg_ui_composer_launch_contact_detail_ug(cd, addr_info->contact_id);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL")) == 0) {
+               service_h svc_handle;
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       D_EMSG("service_create() is failed !!");
+               } else {
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, addr_info->address);
+
+                       msg_ui_composer_launch_email_create(cd, svc_handle);
+                       if (!cd->loaded_ug)
+                               msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_OPEN"));
+
+                       service_destroy(svc_handle);
+               }
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_SK3_BLOCK")) == 0) {
+               __msg_ui_bubble_create_block_popup(bubble_data, addr_info->address);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK")) == 0) {
+               __msg_ui_bubble_unblock(bubble_data, addr_info->address);
+       }
+
+       D_LEAVE;
+}
+
+static char *__msg_ui_bubble_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       PMSG_BUBBLE_DATA bubble_data = evas_object_data_get(obj, "bubble_data");
+       BUBBLE_ADDRESS_INFO *addr_info = (BUBBLE_ADDRESS_INFO *)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !bubble_data || !addr_info, NULL);
+
+       if (g_strcmp0(part, "elm.text") == 0) {
+               return strdup((char *)data);
+       } else if (g_strcmp0(part, "elm.text.1") == 0) {
+               if (addr_info->contact_id > 0 && addr_info->name[0] != '\0')
+                       return strdup(addr_info->name);
+               else if (addr_info->address[0] != '\0')
+                       return strdup (addr_info->address);
+               else
+                       return strdup(dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+       } else if (g_strcmp0(part, "elm.text.2") == 0) {
+               if (addr_info->address[0] != '\0')
+                       return strdup(addr_info->address);
+               else
+                       return strdup(dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+       }
+
+       return NULL;
+}
+
+static Evas_Object * __msg_ui_bubble_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       // Currently, this function do nothing, caller_id concept is not determined
+       // TODO: add callerId
+       return NULL;
+}
+
+static void __msg_ui_bubble_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+       Elm_Object_Item *item = NULL;
+       BUBBLE_ADDRESS_INFO *addr_info = NULL;
+
+       Evas_Object *popup = NULL;
+       Evas_Object *list = NULL;
+       Evas_Object *btn_close = NULL;
+       unsigned char num_type;
+
+       item = (Elm_Object_Item *) event_info;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !item, "Item is  NULL or Item is not Message item\n");
+
+       addr_info = (BUBBLE_ADDRESS_INFO *) elm_object_item_data_get(item);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, addr_info == NULL, "item_data is NULL");
+
+       elm_genlist_item_selected_set(item, 0);
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       num_type = msg_ui_bubble_check_word_type(addr_info->address);
+
+       /** create popup */
+       popup = elm_popup_add(cd->main_window);
+       elm_object_style_set(popup, "min_menustyle");
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       btn_close = elm_button_add(popup);
+       elm_object_style_set(btn_close, "popup_button/default");
+       elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       elm_object_part_content_set(popup, "button1", btn_close);
+       evas_object_smart_callback_add(btn_close, "clicked", msg_ui_popup_close_clicked_cb, bubble_data);
+
+       list = elm_list_add(popup);
+       elm_list_mode_set(list, ELM_LIST_EXPAND);
+
+       evas_object_data_set(list, "bubble_data", bubble_data);
+
+       if (num_type == WORD_TYPE_NUM) {
+               elm_list_item_append(list, dgettext("sys_string", "IDS_COM_BODY_CALL"), NULL, NULL, __msg_ui_bubble_list_popup_selected_cb, (void *)addr_info);
+               elm_list_item_append(list, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"), NULL, NULL, __msg_ui_bubble_list_popup_selected_cb, (void *)addr_info);
+       } else if (num_type == WORD_TYPE_EMAIL) {
+               elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL"), NULL, NULL, __msg_ui_bubble_list_popup_selected_cb, (void *)addr_info);
+       } else {
+               D_MSG("invalid_numtype");
+       }
+
+       if (addr_info->contact_id > 0) {
+               elm_object_part_text_set(popup, "title,text", addr_info->name);
+               elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT"), NULL, NULL, __msg_ui_bubble_list_popup_selected_cb, (void *)addr_info);
+       } else {
+               elm_object_part_text_set(popup, "title,text", addr_info->address);
+               elm_list_item_append(list, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, NULL, __msg_ui_bubble_list_popup_selected_cb, (void *)addr_info);
+       }
+
+       if (num_type == WORD_TYPE_NUM) {
+               msg_error_t err;
+               bool isBlock;
+               err = msg_common_check_block_number(bubble_data->msgHandle, addr_info->address, &isBlock);
+
+               if (err == MSG_SUCCESS) {
+                       if (isBlock == false)
+                               elm_list_item_append(list, dgettext("sys_string", "IDS_COM_SK3_BLOCK"), NULL, NULL, __msg_ui_bubble_list_popup_selected_cb, (void *)addr_info);
+                       else
+                               elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), NULL, NULL, __msg_ui_bubble_list_popup_selected_cb, (void *)addr_info);
+               }
+       }
+
+       elm_list_go(list);
+       elm_object_content_set(popup, list);
+       evas_object_show(popup);
+
+       bubble_data->popup = popup;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void _dim_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       msg_ui_bubble_close_title_menu_genlist(data);
+}
+
+void msg_ui_bubble_open_title_menu_genlist(PMSG_BUBBLE_DATA bubble_data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ASSERT, !bubble_data, "[ERROR] bubble_data is NULL !!");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ASSERT, !cd, "[ERROR] cd is NULL !!");
+       int i = 0;
+
+       /** 2. create box -- for setting min. size of genlist.*/
+       Evas_Object *box = elm_box_add(cd->content_layout);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(box);
+
+       elm_object_part_content_set(cd->content_layout, "swl.bubble.titlemenu", box);
+
+       /** 3. create genlist */
+       Evas_Object *genlist = elm_genlist_add(box);
+       elm_object_theme_set(genlist, cd->th);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+       evas_object_data_set(genlist, "bubble_data", bubble_data);
+       evas_object_show(genlist);
+
+       elm_box_pack_end(box, genlist);
+
+       bubble_data->title_genlist = genlist;
+       cd->title_menu_layout = box;
+
+       elm_object_signal_callback_add(cd->content_layout, "action,clicked", "", _dim_clicked_cb, bubble_data);
+
+       if (bubble_data->addr_list.addr_cnt == 1) {
+               unsigned char num_type;
+               /** 3.1 set genlist styles */
+               bubble_data->itc_title_single.item_style = "1text.custom";
+               bubble_data->itc_title_single.func.text_get = __msg_ui_bubble_gl_text_get;
+               bubble_data->itc_title_single.func.content_get = NULL;
+               bubble_data->itc_title_single.func.state_get = NULL;
+               bubble_data->itc_title_single.func.del = NULL;
+
+               /** 3.2 genlist list load */
+
+               num_type = msg_ui_bubble_check_word_type(bubble_data->addr_list.addr_info[0].address);
+
+               if (num_type == WORD_TYPE_NUM) {
+                       elm_genlist_item_append(genlist, &(bubble_data->itc_title_single), dgettext("sys_string", "IDS_COM_BODY_CALL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_bubble_ctlbar_call_cb, cd);
+                       elm_genlist_item_append(genlist, &(bubble_data->itc_title_single), dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_bubble_ctlbar_vcall_cb, cd);
+               } else if (num_type == WORD_TYPE_EMAIL) {
+                       elm_genlist_item_append(genlist, &(bubble_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_bubble_ctlbar_email_cb, cd);
+               } else {
+                       D_MSG("invalid_numtype");
+               }
+
+               if (bubble_data->addr_list.addr_info[0].contact_id > 0)
+                       elm_genlist_item_append(genlist, &(bubble_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_bubble_ctlbar_view_ct_detail_cb, cd);
+               else
+                       elm_genlist_item_append(genlist, &(bubble_data->itc_title_single), dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_bubble_ctlbar_add_to_contact_cb, cd);
+
+               if (num_type == WORD_TYPE_NUM) {
+                       msg_error_t err;
+                       bool isBlock;
+                       err = msg_common_check_block_number(bubble_data->msgHandle, bubble_data->addr_list.addr_info[0].address, &isBlock);
+
+                       if (err == MSG_SUCCESS) {
+                               if (isBlock == false)
+                                       elm_genlist_item_append(genlist, &(bubble_data->itc_title_single), dgettext("sys_string", "IDS_COM_SK3_BLOCK"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_bubble_ctlbar_block_cb, bubble_data);
+                               else
+                                       elm_genlist_item_append(genlist, &(bubble_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_bubble_ctlbar_unblock_cb, bubble_data);
+                       }
+               }
+
+               evas_object_size_hint_min_set(box, 0, BUBBLE_TITLE_MENU_GENLIST_1LINE_HEIGHT * elm_genlist_items_count(genlist));
+       } else if (bubble_data->addr_list.addr_cnt > 1) {
+               /** 3.1 set genlist styles */
+               bubble_data->itc_title.item_style = "2text.1icon.2.custom";
+               bubble_data->itc_title.func.text_get = __msg_ui_bubble_gl_text_get;
+               bubble_data->itc_title.func.content_get = __msg_ui_bubble_gl_content_get;
+               bubble_data->itc_title.func.state_get = NULL;
+               bubble_data->itc_title.func.del = NULL;
+
+               /** 3.2 genlist list load */
+               for (i = 0; i < bubble_data->addr_list.addr_cnt; i++)
+                       elm_genlist_item_append(genlist, &(bubble_data->itc_title), &bubble_data->addr_list.addr_info[i], NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_bubble_gl_sel, bubble_data);
+
+                       /** Determine genlist size to show - it shows maxmum 3 rows */
+                       if (bubble_data->addr_list.addr_cnt >= BUBBLE_TITLE_MENU_GENLIST_MAX_LINE)
+                               evas_object_size_hint_min_set(box, 0, BUBBLE_TITLE_MENU_GENLIST_2LINE_HEIGHT * BUBBLE_TITLE_MENU_GENLIST_MAX_LINE);
+                       else
+                               evas_object_size_hint_min_set(box, 0, BUBBLE_TITLE_MENU_GENLIST_2LINE_HEIGHT * bubble_data->addr_list.addr_cnt);
+
+       }
+
+       /** emit signal for changing state of swl.bubble.titlemenu to open */
+       elm_object_signal_emit(cd->content_layout, "elm,state,title_menu,open", "");
+
+       bubble_data->title_menu_opened = true;
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_close_title_menu_genlist(PMSG_BUBBLE_DATA bubble_data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ASSERT, !bubble_data, "[ERROR] bubble_data is NULL !!");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ASSERT, !cd, "[ERROR] cd is NULL !!");
+
+       bubble_data->title_menu_opened = false;
+
+       elm_object_signal_emit(cd->content_layout, "elm,state,title_menu,close", "");
+
+       Evas_Object *layout = elm_object_part_content_unset(cd->content_layout, "swl.bubble.titlemenu");
+       if (layout)
+               evas_object_del(layout);
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_title_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       if (!data) {
+               D_EMSG("data is NULL");
+               return;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+
+       if (cd->ctx_popup) {
+               evas_object_del(cd->ctx_popup);
+               cd->ctx_popup = NULL;
+       }
+
+       if (bubble_data->title_menu_opened) {
+               msg_ui_bubble_close_title_menu_genlist(bubble_data);
+       } else {
+               msg_ui_bubble_open_title_menu_genlist(bubble_data);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_msg_storage_change_cb(msg_handle_t handle, msg_storage_change_type_t type, msg_id_list_s *pMsgIdList, void *user_param)
+{
+       D_ENTER;
+
+       if (!user_param || !pMsgIdList)
+               return;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = user_param;
+       PMSG_BUBBLE_DATA BubbleData = cd->bubble_data;
+
+       if (BubbleData == NULL)
+               return;
+
+       if (BubbleData->ug_state == BUBBLE_UG_DESTROY)
+               return;
+
+       if (type == MSG_STORAGE_CHANGE_CONTACT) {
+               msg_ui_bubble_contact_info_update(BubbleData);
+               return;
+       } else if (type == MSG_STORAGE_CHANGE_DELETE) {
+               return;
+       }
+
+       int i;
+       for (i = 0; i < pMsgIdList->nCount; i++) {
+               msg_struct_t conv = msg_create_struct(MSG_STRUCT_CONV_INFO);
+               msg_error_t err = MSG_SUCCESS;
+
+               err = msg_get_conversation(BubbleData->msgHandle, pMsgIdList->msgIdList[i], conv);
+               if (err != MSG_SUCCESS) {
+                       msg_release_struct(&conv);
+                       return;
+               }
+
+               int folder_id = 0;
+               int thread_id = 0;
+               int msg_id = 0;
+               msg_get_int_value(conv, MSG_CONV_MSG_FOLDER_ID_INT, &folder_id);
+               msg_get_int_value(conv, MSG_CONV_MSG_THREAD_ID_INT, &thread_id);
+               msg_get_int_value(conv, MSG_CONV_MSG_ID_INT, &msg_id);
+
+               if (BubbleData->threadId == thread_id && folder_id != MSG_SPAMBOX_ID) {
+                       switch (type) {
+                               case MSG_STORAGE_CHANGE_INSERT :
+                                       if (msg_id != BubbleData->copy_id)
+                                               msg_ui_bubble_list_append(BubbleData, conv);
+                                       else
+                                               BubbleData->copy_id = 0;
+                                       break;
+
+                               case MSG_STORAGE_CHANGE_UPDATE :
+                                       if (msg_id == BubbleData->draft_msg_id) {
+                                               BubbleData->draft_msg_id = 0;
+                                               msg_ui_bubble_list_append(BubbleData, conv);
+                                       } else {
+                                               msg_ui_bubble_item_data_update(BubbleData, conv);
+                                       }
+
+                                       break;
+
+                               default :
+                                       break;
+                       }
+               }
+
+               msg_release_struct(&conv);
+       }
+
+       D_LEAVE;
+}
+
+static void __backup_thread_fn(void *data, Ecore_Thread *thread)
+{
+       D_ENTER;
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+
+       int fd;
+       char *folderpath = NULL;
+       char *foldername = NULL;
+       char *filename = NULL;
+       msg_struct_list_s msg_list;
+       msg_error_t err = MSG_SUCCESS;
+       int bubble_count = 0;
+       int i = 0;
+
+       // initialize backup file path
+       memset(bubble_data->backupPath, 0x00, sizeof(bubble_data->backupPath));
+
+       err = msg_get_conversation_view_list(bubble_data->msgHandle, bubble_data->threadId, &msg_list);
+       if (err != MSG_SUCCESS)
+               return;
+
+       bubble_count = msg_list.nCount;
+       if (bubble_count <= 0) {
+               msg_release_list_struct(&msg_list);
+               return;
+       }
+
+       foldername = msg_ui_bubble_create_export_folder_name();
+       if (!foldername) {
+               D_EMSG("create folder error!!!");
+               goto FREE_MEM;
+       }
+
+       folderpath = msg_ui_bubble_create_export_folder(bubble_data, foldername);
+       if (!folderpath) {
+               D_EMSG("file path is NULL!!!");
+               goto FREE_MEM;
+       }
+
+       filename = msg_ui_bubble_create_export_file_name();
+       if (!filename) {
+               D_EMSG("filename create error!!!");
+               goto FREE_MEM;
+       }
+
+       snprintf(bubble_data->backupPath, sizeof(bubble_data->backupPath), "%s/%s", folderpath, filename);
+
+       // open file
+       fd = open(bubble_data->backupPath, O_RDWR | O_CREAT | O_DSYNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
+       if (fd < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "open error");
+               goto FREE_MEM;
+       }
+
+       // write file
+       for (i = 0; i < bubble_count; i++) {
+
+               if (bubble_data->backup_cancel)
+                       break;
+
+               char *msg_str = msg_ui_bubble_create_export_string(bubble_data, msg_list.msg_struct_info[i]);
+               if (msg_str) {
+                       if (write(fd, msg_str, strlen(msg_str)) > 0)
+                       fdatasync(fd);
+               } else {
+                       continue;
+               }
+       }
+       close(fd);
+FREE_MEM:
+       msg_release_list_struct(&msg_list);
+
+       if (foldername)
+               free(foldername);
+
+       if (folderpath)
+               free(folderpath);
+
+       if (filename)
+               free(filename);
+}
+
+static void __backup_thread_end_fn(void *data, Ecore_Thread *thread)
+{
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (bubble_data->backupPath[0] == '\0') {
+               /** if backup file path is NULL, it can be considered as a fail to backup */
+               msg_ui_bubble_status_message_post(bubble_data, dgettext("sys_string", "IDS_COM_POP_FAILED"));
+               goto INIT_VARS;
+       }
+
+       if (bubble_data->backup_type == BUBBLE_BACKUP_TYPE_SD) {
+               if (bubble_data->backup_cancel) {
+                       msg_ui_bubble_status_message_post(bubble_data, dgettext("sys_string", "IDS_COM_POP_CANCELLED"));
+               } else {
+                       msg_ui_bubble_status_message_post(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
+               }
+       } else if (bubble_data->backup_type == BUBBLE_BACKUP_TYPE_EMAIL) {
+               MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+               // send via email
+               service_h svc_handle;
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       D_EMSG("service_create() is failed !!");
+               } else {
+                       service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
+                       service_set_app_id(svc_handle, "email-composer-efl");
+                       service_set_uri(svc_handle, bubble_data->backupPath);
+                       service_add_extra_data(svc_handle, "RUN_TYPE","5");
+
+                       Ecore_X_Window win_id = elm_win_xwindow_get(cd->main_window);
+                       service_set_window(svc_handle, win_id);
+
+                       service_send_launch_request(svc_handle, NULL, NULL);
+
+                       service_destroy(svc_handle);
+               }
+       }
+
+INIT_VARS:
+       memset(bubble_data->backupPath, 0x00, sizeof(bubble_data->backupPath));
+       bubble_data->backup_type = BUBBLE_BACKUP_TYPE_NONE;
+       bubble_data->backup_cancel = false;
+}
+
+
+static void __backup_thread_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       bubble_data->backup_cancel = true;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+}
+
+static void __msg_ui_bubble_backup_menu_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+
+       const char *label = elm_object_item_text_get((Elm_Object_Item *) event_info);
+
+       // create popup
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       Evas_Object *popup = elm_popup_add(cd->main_window);
+
+       elm_object_text_set(popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_IN_PROGRESS_ING"));
+
+       Evas_Object *cancel_btn = elm_button_add(popup);
+       elm_object_style_set(cancel_btn, "popup_button/default");
+       elm_object_text_set(cancel_btn, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button1", cancel_btn);
+       evas_object_smart_callback_add(cancel_btn, "clicked", __backup_thread_cancel_clicked_cb, bubble_data);
+
+       bubble_data->popup = popup;
+       evas_object_show(popup);
+
+       if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSG_OPT_EXPORT_TO_SD_CARD")) == 0) {
+               bubble_data->backup_type = BUBBLE_BACKUP_TYPE_SD;
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_OPT_SEND_VIA_EMAIL")) == 0) {
+               bubble_data->backup_type = BUBBLE_BACKUP_TYPE_EMAIL;
+       } else {
+               D_EMSG("invalid label text");
+               return;
+       }
+
+       bubble_data->backup_thread = ecore_thread_run(__backup_thread_fn, __backup_thread_end_fn, NULL, (void *)bubble_data);
+}
+
+
+void msg_ui_bubble_backup_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !bubble_data);
+
+       if (cd->ctx_popup) {
+               evas_object_del(cd->ctx_popup);
+               cd->ctx_popup = NULL;
+       }
+
+       Evas_Object *popup = elm_popup_add(cd->main_window);
+       elm_object_style_set(popup, "min_menustyle");
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       Evas_Object *btn_close = elm_button_add(popup);
+       elm_object_style_set(btn_close, "popup_button/default");
+       elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       elm_object_part_content_set(popup, "button1", btn_close);
+       evas_object_smart_callback_add(btn_close, "clicked", msg_ui_popup_close_clicked_cb, bubble_data);
+
+       Evas_Object *list = elm_list_add(popup);
+       elm_list_mode_set(list, ELM_LIST_EXPAND);
+
+       evas_object_data_set(list, "bubble_data", bubble_data);
+
+       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSG_OPT_EXPORT_TO_SD_CARD"), NULL, NULL, __msg_ui_bubble_backup_menu_selected_cb, (void *)bubble_data);
+       elm_list_item_append(list, dgettext("sys_string", "IDS_COM_OPT_SEND_VIA_EMAIL"), NULL, NULL, __msg_ui_bubble_backup_menu_selected_cb, (void *)bubble_data);
+
+       elm_list_go(list);
+       elm_object_content_set(popup, list);
+       evas_object_show(popup);
+
+       bubble_data->popup = popup;
+
+}
+
+void msg_ui_bubble_more_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !bubble_data);
+
+       bubble_data->viewmode = BUBBLE_EDIT_VIEW;
+       bubble_data->check_cnt = 0;
+       bubble_data->del_index = 0;
+
+       msg_ui_composer_editable_set(cd, EINA_FALSE);
+
+       elm_object_part_content_unset(cd->navi_title_layout, "prev_btn");
+       elm_object_part_content_unset(cd->navi_title_layout, "more_btn");
+       elm_object_part_content_unset(cd->navi_title_layout, "compose_btn");
+
+       if (cd->back_btn)
+               evas_object_hide(cd->back_btn);
+
+       if (cd->more_btn)
+               evas_object_hide(cd->more_btn);
+
+       if (cd->compose_btn)
+               evas_object_hide(cd->compose_btn);
+
+       if (cd->ctx_popup) {
+               evas_object_del(cd->ctx_popup);
+               cd->ctx_popup = NULL;
+       }
+
+       Eina_List *l;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+       EINA_LIST_FOREACH(bubble_data->realized_list, l, item_data) {
+               if (item_data) {
+                       Evas_Object *check = NULL;
+                       if (!item_data->chk) {
+                               check = elm_check_add(item_data->ly);
+                               elm_check_state_pointer_set(check, &item_data->isCheck);
+                               evas_object_data_set(check, "item_data", (const void *)item_data);
+                               evas_object_smart_callback_add(check, "changed", msg_ui_bubble_list_checked_cb, (const void *)bubble_data);
+                               evas_object_propagate_events_set(check, EINA_FALSE);
+                               item_data->chk = check;
+                       }
+                       evas_object_data_set(item_data->ly, "bubble_data", bubble_data);
+                       evas_object_event_callback_add(item_data->ly, EVAS_CALLBACK_MOUSE_DOWN, msg_ui_bubble_item_mouse_down_cb, (const void*)item_data);
+                       elm_object_style_set(check, "default/genlist_edit");
+                       elm_object_part_content_set(item_data->ly, "elm.swallow.select_icon", item_data->chk);
+                       elm_object_signal_emit(item_data->ly, "elm,state,select,enable", "elm");
+               }
+       }
+
+       _bubble_change_edit_mode_title(bubble_data);
+       _bubble_add_edit_controlbar(bubble_data);
+       _bubble_add_navi_select_all_ly(bubble_data);
+}
+
+void msg_ui_bubble_ctlbar_email_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA pData = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       msg_ui_bubble_close_title_menu_genlist(pData);
+
+       if (pData->addr_list.addr_cnt == 1) {
+               service_h svc_handle;
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       D_EMSG("service_create() is failed !!");
+               } else {
+                       service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
+                       service_set_app_id(svc_handle, "email-composer-efl");
+                       service_add_extra_data(svc_handle, "RUN_TYPE","5");
+
+                       Ecore_X_Window win_id = elm_win_xwindow_get(cd->main_window);
+
+                       service_set_window(svc_handle, win_id);
+                       service_add_extra_data(svc_handle, SERVICE_DATA_TO, pData->addr_list.addr_info[0].address);
+
+                       service_send_launch_request(svc_handle, NULL, NULL);
+
+                       service_destroy(svc_handle);
+               }
+       }
+}
+
+void msg_ui_bubble_ctlbar_call_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       if (pData->addr_list.addr_cnt == 1)
+               msg_ui_bubble_launch_voice_call(pData->addr_list.addr_info[0].address);
+
+       msg_ui_bubble_close_title_menu_genlist(pData);
+}
+
+void msg_ui_bubble_ctlbar_vcall_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA pData = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       if (pData->addr_list.addr_cnt == 1)
+               msg_ui_bubble_launch_video_call(pData->addr_list.addr_info[0].address);
+
+       msg_ui_bubble_close_title_menu_genlist(pData);
+}
+
+void msg_ui_bubble_ctlbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+
+       PMSG_BUBBLE_DATA pData = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       if (pData->addr_list.addr_cnt == 1)
+               msg_ui_composer_launch_contact_list_ug(cd, MSG_CT_UG_REQUEST_UPDATE_WITH_NUM, pData->addr_list.addr_info[0].address);
+
+       msg_ui_bubble_close_title_menu_genlist(pData);
+}
+
+void msg_ui_bubble_ctlbar_view_ct_detail_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+
+       PMSG_BUBBLE_DATA pData = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       if (pData->addr_list.addr_cnt == 1)
+               msg_ui_composer_launch_contact_detail_ug(cd, pData->addr_list.addr_info[0].contact_id);
+
+       msg_ui_bubble_close_title_menu_genlist(pData);
+}
+
+void msg_ui_bubble_ctlbar_block_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)data;
+
+       __msg_ui_bubble_create_block_popup(pData, pData->addr_list.addr_info[0].address);
+
+       msg_ui_bubble_close_title_menu_genlist(pData);
+}
+
+void msg_ui_bubble_ctlbar_unblock_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA pData = data;
+
+       __msg_ui_bubble_unblock(pData, pData->addr_list.addr_info[0].address);
+
+       msg_ui_bubble_close_title_menu_genlist(pData);
+}
+
+static void __msg_ui_bubble_popup_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+       Evas_Object *check = NULL;
+       Eina_Bool include_protected = EINA_FALSE;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       if (pData->popup) {
+               if (obj == elm_object_part_content_get(pData->popup, "button1")) {
+                       // delete
+                       check = (Evas_Object *)evas_object_data_get(pData->popup, "check");
+                       if (check)
+                               include_protected = elm_check_state_get(check);
+
+                       bool isDraft = msg_ui_composer_common_is_send_possible(cd);
+
+                       if (pData->sel_all_checked && isDraft == false && (!check || include_protected == EINA_TRUE)) {
+                               pData->bubble_count = 0;
+                               _del_all_item(pData);
+                       } else {
+                               if (!include_protected) {
+                                       int i = pData->check_cnt;
+                                       for (; i > 0; i--) {
+                                               item_data = eina_list_nth(pData->chk_list, i-1);
+                                               if (item_data && item_data->bProtected) {
+                                                       pData->chk_list = eina_list_remove(pData->chk_list, item_data);
+                                                       pData->check_cnt--;
+                                               }
+                                       }
+                               }
+                               evas_object_del(pData->popup);
+                               pData->popup = NULL;
+
+                               pData->popup = msg_ui_bubble_show_notify_with_progressbar(pData, pData->check_cnt);
+                               pData->del_thread = ecore_thread_feedback_run(_del_thread_fn, _del_thread_feedback_fn, NULL, NULL, (void *)pData, EINA_TRUE);
+                       }
+               } else {
+                       evas_object_del(pData->popup);
+                       pData->popup = NULL;
+               }
+       }
+}
+
+
+static Evas_Object *__msg_ui_bubble_delete_confirm_popup(PMSG_BUBBLE_DATA pData)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+
+       Evas_Object *popup = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *check = NULL;
+       Evas_Object *ok_btn = NULL;
+       Evas_Object *cancel_btn = NULL;
+       Eina_List *l = NULL;
+       bool is_protected_msg = false;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       popup = elm_popup_add(cd->main_window);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
+
+       layout = elm_layout_add(popup);
+       elm_layout_file_set(layout, MSG_COMMON_EDJ, "popup_with_checkbox");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
+
+       EINA_LIST_FOREACH(pData->chk_list, l, item_data) {
+               if (item_data && item_data->bProtected) {
+                       is_protected_msg = true;
+                       break;
+               }
+       }
+       if (is_protected_msg) {
+               check = elm_check_add(popup);
+               evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_object_part_content_set(layout, "elm.swallow.check", check);
+               evas_object_show(check);
+
+               elm_object_part_text_set(layout, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"));
+               evas_object_data_set(popup, "check", check);
+       }
+
+       evas_object_show(layout);
+       elm_object_content_set(popup, layout);
+
+       ok_btn = elm_button_add(popup);
+       elm_object_style_set(ok_btn, "popup_button/default");
+       elm_object_text_set(ok_btn, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+       elm_object_part_content_set(popup, "button1", ok_btn);
+       evas_object_smart_callback_add(ok_btn, "clicked", __msg_ui_bubble_popup_button_clicked_cb, pData);
+
+       cancel_btn = elm_button_add(popup);
+       elm_object_style_set(cancel_btn, "popup_button/default");
+       elm_object_text_set(cancel_btn, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", cancel_btn);
+       evas_object_smart_callback_add(cancel_btn, "clicked", __msg_ui_bubble_popup_button_clicked_cb, pData);
+
+       evas_object_show(popup);
+
+       return popup;
+}
+
+void msg_ui_bubble_ctlbar_delete_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA pData = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, pData->del_thread);
+
+       if (pData->popup) {
+               evas_object_del(pData->popup);
+               pData->popup = NULL;
+       }
+
+       pData->popup = __msg_ui_bubble_delete_confirm_popup(pData);
+}
+
+void msg_ui_bubble_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA pData = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       _bubble_show_normal_mode(data);
+
+       if (pData->added_list)
+               pData->add_animator = ecore_animator_add(msg_ui_bubble_item_add_cb, (const void *) pData);
+
+       msg_ui_composer_last_focus_load(cd);
+}
+
+void msg_ui_bubble_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA) data;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       D_MSG("pData->sel_all_checked = %d", pData->sel_all_checked);
+
+       if (pData->sel_all_checked) {
+               pData->check_cnt = pData->bubble_count;
+               pData->chk_list = eina_list_clone(pData->bubble_list);
+       } else {
+               pData->check_cnt = 0;
+               pData->chk_list = eina_list_free(pData->chk_list);
+       }
+
+       Eina_List *l;
+       EINA_LIST_FOREACH(pData->bubble_list, l, item_data) {
+               if (item_data) {
+                       item_data->isCheck = pData->sel_all_checked;
+               }
+       }
+
+       EINA_LIST_FOREACH(pData->realized_list, l, item_data) {
+               if (item_data) {
+                       elm_check_state_set(item_data->chk, item_data->isCheck);
+               }
+       }
+
+       msg_ui_bubble_show_select_info(pData);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_bubble_item_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !event_info);
+
+       Evas_Coord x, y;
+       Evas_Event_Mouse_Down *ev = event_info;
+
+       PMSG_APP_CONV_DATA_S item_data = (PMSG_APP_CONV_DATA_S)data;
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)evas_object_data_get(item_data->ly, "bubble_data");
+
+       x = ev->canvas.x;
+       y = ev->canvas.y;
+
+       if (abs(x - g_mouse_down_x) > 20 || abs(y - g_mouse_down_y) > 20) {
+               goto RESET_EVAS_COORD;
+       }
+
+       if (elm_check_state_get(item_data->chk) == EINA_TRUE)
+               elm_check_state_set(item_data->chk, EINA_FALSE);
+       else
+               elm_check_state_set(item_data->chk, EINA_TRUE);
+
+       msg_ui_bubble_list_checked_cb((void *)bubble_data, item_data->chk, NULL);
+
+RESET_EVAS_COORD:
+       evas_object_event_callback_del(item_data->ly, EVAS_CALLBACK_MOUSE_UP, msg_ui_bubble_item_mouse_up_cb);
+       g_mouse_down_x = 0;
+       g_mouse_down_y = 0;
+}
+
+void msg_ui_bubble_item_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !event_info);
+
+       PMSG_APP_CONV_DATA_S item_data = (PMSG_APP_CONV_DATA_S)data;
+
+       Evas_Event_Mouse_Down *ev = event_info;
+
+       if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+               return;
+
+       g_mouse_down_x = ev->canvas.x;
+       g_mouse_down_y = ev->canvas.y;
+
+       evas_object_event_callback_add(item_data->ly, EVAS_CALLBACK_MOUSE_UP, msg_ui_bubble_item_mouse_up_cb, (const void*)item_data);
+}
+
+#ifdef _BUBBLE_FLICK_EVENT
+void msg_ui_bubble_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !event_info);
+
+       Evas_Coord x, y, w, h;
+       Evas_Event_Mouse_Down *ev = event_info;
+       int width = 0;
+       int rotate = 0;
+       Evas_Coord start_x;
+       Evas_Coord start_y;
+       Evas_Coord end_x;
+       Evas_Coord end_y;
+       int move_x = 0;
+       int move_y = 0;
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+
+       evas_object_geometry_get(bubble_data->bubble_layout, &x, &y, &w, &h);
+
+       rotate = elm_win_rotation_get(cd->main_window);
+       if (rotate == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PORTRAIT mode");
+               start_x = bubble_data->m_x;
+               end_x = ev->canvas.x;
+               start_y = bubble_data->m_y;
+               end_y = ev->canvas.y;
+               width = w-x;
+       } else if (rotate == 180) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PORTRAIT reverse mode");
+               start_x = ev->canvas.x;
+               end_x = bubble_data->m_x;
+               start_y = bubble_data->m_y;
+               end_y = ev->canvas.y;
+               width = w-x;
+       } else if (rotate == 90) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LANDSCAPE mode");
+               start_x = ev->canvas.y;
+               end_x = bubble_data->m_y;
+               start_y = bubble_data->m_x;
+               end_y = ev->canvas.x;
+               width = h-y;
+       } else if (rotate== 270) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LANDSCAPE reverse mode");
+               start_x = bubble_data->m_y;
+               end_x = ev->canvas.y;
+               start_y = bubble_data->m_x;
+               end_y = ev->canvas.x;
+               width = h-y;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Invalid rotation value");
+               evas_object_event_callback_del(bubble_data->bubble_layout, EVAS_CALLBACK_MOUSE_UP, msg_ui_bubble_layout_mouse_up_cb);
+               return;
+       }
+
+       move_x = abs(start_x - end_x);
+       move_y = abs(start_y - end_y);
+
+       if (move_x > move_y) {
+               if (move_x > (width / 3)) { // It should be moved over 1/3 of the screen width to show next/previous converstaions.
+                       int row = 0;
+                       int selected = 0;
+                       msg_struct_list_s peerList = {0,};
+                       msg_struct_t sortRule = NULL;
+                       msg_struct_list_s addrList = {0,};
+
+                       sortRule = msg_create_struct(MSG_STRUCT_SORT_RULE);
+                       msg_set_int_value(sortRule, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+                       msg_set_bool_value(sortRule, MSG_SORT_RULE_ACSCEND_BOOL, false);
+
+                       msg_get_thread_view_list(cd->msg_handle, sortRule, &peerList);
+                       msg_release_struct(&sortRule);
+
+                       for (row=0; row < peerList.nCount; row++) {
+                               int thread_id = 0;
+                               msg_get_int_value(peerList.msg_struct_info[row], MSG_THREAD_ID_INT, &thread_id);
+
+                               if (bubble_data->threadId == thread_id) {
+                                       msg_ui_bubble_init_bubble_list(bubble_data);
+                                       if (start_x > end_x) // show next
+                                               selected = row+1 < peerList.nCount ? row+1 : 0;
+                                       else // show previous
+                                               selected = row-1 < 0 ? peerList.nCount-1 : row-1;
+
+                                       int selecte_thread_id = 0;
+                                       msg_get_int_value(peerList.msg_struct_info[selected], MSG_THREAD_ID_INT, &selecte_thread_id);
+                                       bubble_data->threadId = selecte_thread_id;
+
+                                       msg_get_address_list(bubble_data->msgHandle, bubble_data->threadId, &addrList);
+
+                                       bubble_data->addr_list.addr_cnt = addrList.nCount;
+                                       int i = 0;
+
+                                       /* clear recipient_list of bubble composer */
+                                       msg_ui_composer_recipient_clear_recipient_list(cd);
+
+                                       for (i=0; i < addrList.nCount; i++) {
+                                               int contact_id = 0;
+
+                                               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, bubble_data->addr_list.addr_info[i].address, DEF_THREAD_ADDR_LEN);
+                                               msg_get_int_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+
+                                               if (contact_id > 0) {
+                                                       bubble_data->addr_list.addr_info[i].contact_id = contact_id;
+                                                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, bubble_data->addr_list.addr_info[i].name, DEF_THREAD_NAME_LEN);
+                                               } else {
+                                                       bubble_data->addr_list.addr_info[i].contact_id = 0;
+                                               }
+
+                                               /* set recipient_list for bubble composer */
+                                               msg_ui_composer_recipient_add_recipient_list(cd, addrList.addrInfo[i].addressVal);
+                                       }
+
+                                       // bubble list update
+                                       msg_ui_bubble_list_load(bubble_data, true);
+                                       msg_ui_composer_navi_title_set((void *)cd);
+                                       service_h svc_handle;
+                                       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                                               D_EMSG("service_create() is failed !!");
+                                       } else {
+                                               char buf[DEF_BUF_LEN_S] = {0,};
+                                               snprintf(buf, DEF_BUF_LEN_L, "%d", bubble_data->threadId);
+                                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, buf);
+
+                                               ug_send_result(cd->ug, svc_handle);
+
+                                               service_destroy(svc_handle);
+                                       }
+
+                                       msg_release_list_struct(&addrList);
+
+                                       break;
+                               }
+                       }
+                       msg_release_list_struct(&peerList);
+               }
+       }
+       evas_object_event_callback_del(bubble_data->bubble_layout, EVAS_CALLBACK_MOUSE_UP, msg_ui_bubble_layout_mouse_up_cb);
+}
+
+void msg_ui_bubble_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+
+       Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
+
+       if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+               return;
+
+       bubble_data->m_x = ev->canvas.x;
+       bubble_data->m_y = ev->canvas.y;
+
+       evas_object_event_callback_add(bubble_data->bubble_layout, EVAS_CALLBACK_MOUSE_UP, msg_ui_bubble_layout_mouse_up_cb, (const void*)bubble_data);
+}
+#endif
+
+void msg_ui_bubble_list_checked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA) data;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       item_data = evas_object_data_get(obj, "item_data");
+
+       if (item_data->isCheck) {
+               pData->check_cnt++;
+               if (!eina_list_data_find(pData->chk_list, item_data))
+                       pData->chk_list = eina_list_append(pData->chk_list, item_data);
+       } else {
+               pData->check_cnt--;
+               pData->chk_list = eina_list_remove(pData->chk_list, item_data);
+       }
+
+       if (pData->bubble_count == pData->check_cnt)
+               elm_check_state_set(pData->sel_all_box, EINA_TRUE);
+       else
+               elm_check_state_set(pData->sel_all_box, EINA_FALSE);
+
+       msg_ui_bubble_show_select_info(pData);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_bubble_timezone_change_cb(keynode_t *key, void *data)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA BubbleData = (PMSG_BUBBLE_DATA)data;
+
+       char *timezone_id = NULL;
+       UChar utimezone_id[DEF_BUF_LEN] = {0,};
+       UErrorCode status = U_ZERO_ERROR;
+
+       timezone_id = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+
+       if (!timezone_id)
+               return;
+
+       u_uastrcpy(utimezone_id, timezone_id);
+
+       ucal_setDefaultTimeZone(utimezone_id, &status);
+
+       if (U_FAILURE(status))
+               return;
+
+       msg_ui_bubble_get_locale(BubbleData);
+       msg_ui_bubble_get_time_format(BubbleData);
+
+       if (BubbleData->date_ptn_default) {
+               free(BubbleData->date_ptn_default);
+               BubbleData->date_ptn_default = NULL;
+       }
+
+       if (BubbleData->date_ptn_year) {
+               free(BubbleData->date_ptn_year);
+               BubbleData->date_ptn_year = NULL;
+       }
+
+       if (BubbleData->time_12h_ptn) {
+               free(BubbleData->time_12h_ptn);
+               BubbleData->time_12h_ptn = NULL;
+       }
+
+       if (BubbleData->time_24h_ptn) {
+               free(BubbleData->time_24h_ptn);
+               BubbleData->time_24h_ptn = NULL;
+       }
+
+       BubbleData->time_12h_ptn = msg_common_get_date_best_pattern(BubbleData->locale, MSG_UI_TIME_PATTERN_12H);
+       BubbleData->time_24h_ptn = msg_common_get_date_best_pattern(BubbleData->locale, MSG_UI_TIME_PATTERN_24H);
+       BubbleData->date_ptn_default = msg_common_get_date_best_pattern(BubbleData->locale, MSG_UI_DATE_PATTERN_DEFAULT);
+       BubbleData->date_ptn_year = msg_common_get_date_best_pattern(BubbleData->locale, MSG_UI_DATE_PATTERN_YEAR);
+
+       msg_ui_bubble_list_data_update(BubbleData);
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_scroll_edge_top_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)data;
+
+       evas_object_smart_callback_del(obj, "scroll,drag,start", msg_ui_bubble_scroll_drag_start_cb);
+
+       if (!pData->load_animator)
+               pData->load_animator = ecore_animator_add(msg_ui_bubble_item_load_cb, data);
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_scroll_drag_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA pData = (PMSG_BUBBLE_DATA)data;
+
+       evas_object_smart_callback_add(obj, "edge,top", msg_ui_bubble_scroll_edge_top_cb, (void *)pData);
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_anchor_menu_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !bubble_data);
+
+       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+       elm_list_item_selected_set(item, 0);
+
+       const char *label = elm_object_item_text_get(item);
+       const char *title =  elm_object_part_text_get(bubble_data->popup, "title,text");
+
+       if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_CALL")) == 0) {
+               msg_ui_bubble_launch_voice_call(title);
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_SEND_MESSAGE")) == 0) {
+               service_h svc_handle;
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       D_EMSG("service_create() is failed !!");
+               } else {
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, title);
+                       msg_ui_composer_launch_composer_create(cd, svc_handle);
+                       if (!cd->loaded_ug)
+                               msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_OPEN"));
+
+                       service_destroy(svc_handle);
+               }
+
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL")) == 0) {
+               msg_ui_bubble_launch_video_call(title);
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS")) == 0) { /* Add to contact with phone number string... */
+               msg_ui_composer_launch_contact_list_ug(cd, MSG_CT_UG_REQUEST_UPDATE_WITH_NUM, title);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT")) == 0) {
+               msg_ui_composer_launch_contact_detail_ug(cd, bubble_data->addr_list.addr_info[0].contact_id);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL")) == 0) {
+               service_h svc_handle;
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       D_EMSG("service_create() is failed !!");
+               } else {
+                       service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
+                       service_set_app_id(svc_handle, "email-composer-efl");
+                       service_add_extra_data(svc_handle, "RUN_TYPE","5");
+
+                       Ecore_X_Window win_id = elm_win_xwindow_get(cd->main_window);
+
+                       service_set_window(svc_handle, win_id);
+                       service_add_extra_data(svc_handle, SERVICE_DATA_TO, title);
+
+                       service_send_launch_request(svc_handle, NULL, NULL);
+
+                       service_destroy(svc_handle);
+               }
+       }
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_main_layout_clicked_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (!cd->is_keypad_show)
+               msg_ui_composer_make_default_body_size(cd);
+
+       cd->make_default_body_size = true;
+
+       D_LEAVE;
+}
+
diff --git a/composer/src/bubble/msg-ui-composer-bubble-list.c b/composer/src/bubble/msg-ui-composer-bubble-list.c
new file mode 100755 (executable)
index 0000000..d526878
--- /dev/null
@@ -0,0 +1,2235 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "msg-ui-composer-bubble.h"
+#include "appsvc.h"
+#include "msg-ui-composer-external.h"
+#include "msg-ui-composer-main.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-common.h"
+#include "syspopup_caller.h"
+
+bool g_isFirstLoading = true;
+
+#define MSG_BUBBLE_IMAGE_DRM_ICON IMGDIR"/M01_icon_DRM_64x64.png"
+
+#define MSG_BUBBLE_BLOCK_COUNT         (20)
+
+static void __anchor_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __longpressed_cb(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_get_display_time(time_t *msg_t, PMSG_BUBBLE_DATA bubble_data)
+{
+       if (!msg_t || !bubble_data)
+               return NULL;
+
+       char buf[DEF_BUF_LEN] = { 0 };
+       char *str_time = NULL;
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !bubble_data, NULL);
+
+       if (bubble_data->time_fmt == MSG_TIME_FORMAT_24H)
+               str_time = msg_common_get_formatted_date(bubble_data->locale, bubble_data->time_24h_ptn, msg_t);
+       else
+               str_time = msg_common_get_formatted_date(bubble_data->locale, bubble_data->time_12h_ptn, msg_t); /* MSG_TIME_FORMAT_12H */
+
+       snprintf(buf, sizeof(buf), "%s", str_time);
+
+       if (str_time)
+               free(str_time);
+
+       return strdup(buf);
+
+}
+
+static void __msg_bubble_add_content(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S conv_data)
+{
+       bool isMsgText = false;
+       Eina_Strbuf *msg_data = eina_strbuf_new();
+
+       if (conv_data->msgText[0] != '\0')
+               isMsgText = true;
+
+       /* Subject & image */
+       if ((conv_data->msgType == MSG_TYPE_MMS || conv_data->msgType == MSG_TYPE_MMS_NOTI)) {
+               if (conv_data->subject[0] != '\0') {
+                       char *subject = NULL;
+                       eina_strbuf_append(msg_data, "<color=#050288FF>");
+
+                       subject = elm_entry_utf8_to_markup(conv_data->subject);
+                       eina_strbuf_append(msg_data, subject);
+
+                       if (subject)
+                               free(subject);
+                       eina_strbuf_append(msg_data, "</color><br>");
+               }
+
+               if (conv_data->thumbNailPath[0] != '\0') {
+                       Evas_Object *tmp_obj = NULL;
+
+                       int w = 0;
+                       int h = 0;
+                       double rate = 0.0;
+
+                       tmp_obj = evas_object_image_filled_add(evas_object_evas_get(conv_data->entry));
+                       evas_object_image_file_set(tmp_obj, conv_data->thumbNailPath, NULL);
+                       evas_object_image_size_get(tmp_obj, &w, &h);
+                       if (tmp_obj)
+                               evas_object_del(tmp_obj);
+
+                       if (w >= h) {
+                               rate = MSG_BUBBLE_IMG_MAX_W / (double) w;
+                               w = MSG_BUBBLE_IMG_MAX_W;
+                               h = h * rate;
+                       } else {
+                               rate = MSG_BUBBLE_IMG_MAX_H / (double)h;
+                               w = w * rate;
+                               h = MSG_BUBBLE_IMG_MAX_H;
+                       }
+
+                       /* Don't remove <br> between <item> and </item>. if it is removed, anchor wouldn't work */
+                       /* In case of body text is not exist, <br> should not be shown. for this, change font size to 1*/
+                       if (!isMsgText && conv_data->attachment_cnt == 0 && conv_data->audio_filename[0] == '\0')
+                               eina_strbuf_append(msg_data, "<font_size=1>");
+                       eina_strbuf_append_printf(msg_data, "<a href=image.%d>",  conv_data->msgId);
+                       eina_strbuf_append_printf(msg_data, "<item size=%dx%d vsize=full href=file://%s><br></item></a>", w, h, conv_data->thumbNailPath);
+               }
+       }
+
+       if (conv_data->bProtected)
+               eina_strbuf_append_printf(msg_data, "<item size=44x44 vsize=full href=file://%s></item>", MSG_BUBBLE_PROTECTED_ICON);
+
+       /* Message Text */
+       char *tmp_str = elm_entry_utf8_to_markup(conv_data->msgText);
+       eina_strbuf_append(msg_data, tmp_str);
+       if (tmp_str)
+               free(tmp_str);
+
+       if (conv_data->msgType == MSG_TYPE_MMS) {
+               /** audio file */
+               if (conv_data->audio_filename[0] != '\0') {
+
+                       if (isMsgText)
+                               eina_strbuf_append(msg_data, "<br>");
+
+                       eina_strbuf_append_printf(msg_data, "<a href=audio.%d>",  conv_data->msgId);
+                       eina_strbuf_append_printf(msg_data, "<item size=42x42 vsize=full href=file://%s> %s</item></a>", MSG_BUBBLE_AUDIOFILE_ICON, conv_data->audio_filename);
+               }
+               /** attachment files*/
+               if (conv_data->attachment_cnt > 0) {
+                       char attach_str[DEF_BUF_LEN] = {0,};
+                       if (conv_data->attachment_cnt == 1 && conv_data->attachment_filename[0] != '\0') {
+                               snprintf(attach_str, sizeof(attach_str), "%s", conv_data->attachment_filename);
+                        } else {
+                               const char *text = dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_PD_ATTACHMENTS");
+                               snprintf(attach_str, sizeof(attach_str), text, conv_data->attachment_cnt);
+                       }
+
+                       if (isMsgText || conv_data->audio_filename[0] != '\0')
+                               eina_strbuf_append(msg_data, "<br>");
+
+                       eina_strbuf_append_printf(msg_data, "<item size=42x42 vsize=full href=file://%s> %s</item>", MSG_BUBBLE_ATTACH_ICON, attach_str);
+               }
+       } else if (conv_data->msgType == MSG_TYPE_SMS && conv_data->storageId == MSG_STORAGE_SIM) {
+               if (isMsgText) {
+                       eina_strbuf_append(msg_data, "<font_size=24>");
+                       eina_strbuf_append(msg_data, "<br>");
+               }
+
+               eina_strbuf_append_printf(msg_data, "<item size=34x34 vsize=full href=file://%s></item>", MSG_BUBBLE_SIM_MSG_ICON);
+       }
+
+       elm_entry_entry_set(conv_data->entry, eina_strbuf_string_get(msg_data));
+       eina_strbuf_free(msg_data);
+}
+
+static void __add_bubble_item(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S conv_data, MsgBoxPackType type, Evas_Object *obj)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !bubble_data || !conv_data);
+       if (type == MSG_BOX_PACK_BEFORE || type == MSG_BOX_PACK_AFTER) {
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !obj);
+       }
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+
+       Evas_Object *layout = elm_layout_add(bubble_data->box);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       Evas_Object *entry = elm_entry_add(bubble_data->box);
+
+       if (conv_data->direction == MSG_DIRECTION_TYPE_MO) {
+               elm_layout_theme_set(layout, "layout", "bubble", "sentmessage/default");
+               elm_object_theme_set(entry, cd->th);
+               elm_object_style_set(entry, MSG_BUBBLE_STYLE_SENT);
+       } else {
+               elm_layout_theme_set(layout, "layout", "bubble", "readmessage/default");
+               elm_object_theme_set(entry, cd->th);
+               elm_object_style_set(entry, MSG_BUBBLE_STYLE_RECV);
+       }
+
+       elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+       elm_entry_editable_set(entry, EINA_FALSE);
+       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_NO_IMAGE);
+       elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+       elm_entry_magnifier_disabled_set(entry, EINA_TRUE);
+
+       conv_data->entry = entry;
+       conv_data->ly = layout;
+
+       msg_ui_bubble_fill_bubble_contents(bubble_data, conv_data);
+
+       evas_object_data_set(entry, "conv_data", conv_data);
+
+       evas_object_smart_callback_add(entry, "anchor,clicked", __anchor_click_cb, (const void*)bubble_data);
+       evas_object_smart_callback_add(entry, "longpressed", __longpressed_cb, (const void*)bubble_data);
+
+       elm_object_part_content_set(layout, "elm.icon", entry);
+       evas_object_show(layout);
+
+       switch (type) {
+               case MSG_BOX_PACK_START :
+                       elm_box_pack_start(bubble_data->box, layout);
+                       break;
+               case MSG_BOX_PACK_END :
+                       elm_box_pack_end(bubble_data->box, layout);
+                       break;
+               case MSG_BOX_PACK_BEFORE :
+                       elm_box_pack_before(bubble_data->box, layout, obj);
+                       break;
+               case MSG_BOX_PACK_AFTER :
+                       elm_box_pack_after(bubble_data->box, layout, obj);
+                       break;
+               default :
+                       break;
+       }
+
+       if (bubble_data->viewmode == BUBBLE_EDIT_VIEW) {
+               Evas_Object *check = NULL;
+               if (!conv_data->chk) {
+                       check = elm_check_add(conv_data->ly);
+                       elm_check_state_pointer_set(check, &conv_data->isCheck);
+                       evas_object_data_set(check, "item_data", (const void *)conv_data);
+                       evas_object_smart_callback_add(check, "changed", msg_ui_bubble_list_checked_cb, (const void *)bubble_data);
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       conv_data->chk = check;
+               }
+               evas_object_data_set(conv_data->ly, "bubble_data", bubble_data);
+               evas_object_event_callback_add(conv_data->ly, EVAS_CALLBACK_MOUSE_DOWN, msg_ui_bubble_item_mouse_down_cb, (const void*)conv_data);
+               elm_object_style_set(check, "default/genlist_edit");
+               elm_object_part_content_set(conv_data->ly, "elm.swallow.select_icon", conv_data->chk);
+               elm_object_signal_emit(conv_data->ly, "elm,state,select,enable", "elm");
+
+               if (conv_data->isCheck) {
+                       elm_check_state_set(conv_data->chk, conv_data->isCheck);
+               }
+       }
+}
+
+static void __msg_media_clicked_cb(PMSG_BUBBLE_DATA bubble_data, char *msgID, int file_type)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !msgID);
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !bubble_data);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, bubble_data->viewmode != BUBBLE_NORMAL_VIEW, "Not Normal Mode!");
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_t msg_t = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       msg_struct_t mms_data = NULL;
+       msg_list_handle_t page_list = NULL;
+       msg_struct_t mms_page = NULL;
+       msg_struct_t mms_media = NULL;
+       char filepath[DEF_BUF_LEN_L+1] = {0,};
+
+       int msg_id = atoi(msgID);
+       int i = 0;
+       int j = 0;
+       int pageCnt = 0;
+
+       err = msg_get_message(bubble_data->msgHandle, msg_id, msg_t, sendOpt);
+       if (err != MSG_SUCCESS) {
+               D_MSG("err = [%d]", err);
+               msg_release_struct(&msg_t);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+
+       mms_data = msg_create_struct(MSG_STRUCT_MMS);
+       err = msg_get_mms_struct(msg_t, mms_data);
+       if (err != MSG_SUCCESS) {
+               D_MSG("err = [%d]", err);
+               goto OUTSIDE_OF_LOOP;
+       }
+
+       msg_get_list_handle(mms_data, MSG_MMS_PAGE_LIST_HND, (void **)&page_list);
+       pageCnt = msg_list_length(page_list);
+       for (i = 0 ; i < pageCnt; i++) {
+               mms_page = (msg_struct_t)msg_list_nth_data(page_list, i);
+               msg_list_handle_t medialist = NULL;
+               int mediaCnt = 0;
+
+               msg_get_list_handle(mms_page, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist);
+               mediaCnt = msg_list_length(medialist);
+
+               for (j = 0; j < mediaCnt; j++) {
+                       int media_type;
+                       mms_media = (msg_struct_t)msg_list_nth_data(medialist, j);
+
+                       msg_get_int_value(mms_media, MSG_MMS_MEDIA_TYPE_INT, &media_type);
+
+                       if (media_type == file_type) {
+                               goto OUTSIDE_OF_LOOP;
+                       }
+               }
+       }
+
+OUTSIDE_OF_LOOP:
+       if (mms_media)
+               msg_get_str_value(mms_media, MSG_MMS_MEDIA_FILEPATH_STR, filepath, sizeof(filepath)-1);
+
+       if (mms_media && filepath[0] != '\0') {
+               service_h svc_handle;
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       D_EMSG("service_create() is failed !!");
+               } else {
+                       service_set_operation(svc_handle, SERVICE_OPERATION_VIEW);
+                       service_set_uri(svc_handle, filepath);
+
+                       if (service_send_launch_request(svc_handle, NULL, NULL) < 0)
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "service_send_launch_request is failed");
+
+                       service_destroy(svc_handle);
+               }
+       }
+
+       msg_release_struct(&mms_data);
+       msg_release_struct(&msg_t);
+       msg_release_struct(&sendOpt);
+
+       D_LEAVE;
+}
+
+static void __msg_install_clicked_cb(PMSG_BUBBLE_DATA bubble_data, int msg_id)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, bubble_data == NULL);
+
+       D_MSG("syncml message operation, msg id = [%d]", msg_id);
+
+       msg_error_t err = MSG_SUCCESS;
+
+       err = msg_syncml_message_operation(bubble_data->msgHandle, (msg_message_id_t) msg_id);
+       if (err != MSG_SUCCESS)
+               D_MSG("msg_syncml_message_operation failed.");
+
+       D_LEAVE;
+}
+
+Eina_Bool __resend_idler_cb(void *data)
+{
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S conv_data = NULL;
+
+       msg_struct_t failed_msg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       msg_error_t err = MSG_SUCCESS;
+       int msg_type = MSG_TYPE_INVALID;
+
+       D_MSG("Re-send message, msg id = [%d]", bubble_data->resend_id);
+
+       err = msg_get_message(bubble_data->msgHandle, bubble_data->resend_id, failed_msg, sendOpt);
+
+       if (err != MSG_SUCCESS) {
+               D_MSG("msg_get_message is failed.");
+               msg_release_struct(&sendOpt);
+               msg_release_struct(&failed_msg);
+               bubble_data->resend_id = 0;
+               return EINA_FALSE;
+       }
+
+       msg_struct_t req = msg_create_struct(MSG_STRUCT_REQUEST_INFO);
+       msg_set_struct_handle(req, MSG_REQUEST_MESSAGE_HND, failed_msg);
+       msg_set_struct_handle(req, MSG_REQUEST_SENDOPT_HND, sendOpt);
+
+       msg_get_int_value(failed_msg, MSG_MESSAGE_TYPE_INT, &msg_type);
+
+       if (msg_is_sms(msg_type))
+               err = msg_sms_send_message(bubble_data->msgHandle, req);
+       else
+               err = msg_mms_send_message(bubble_data->msgHandle, req);
+
+       if (err != MSG_SUCCESS) {
+               D_MSG("Send_message is failed.");
+
+               Eina_List *l;
+               EINA_LIST_FOREACH(bubble_data->bubble_list, l, conv_data) {
+                       if (conv_data) {
+                               if (bubble_data->resend_id == conv_data->msgId) {
+                                       conv_data->networkStatus = MSG_NETWORK_SEND_FAIL;
+                                       msg_ui_bubble_fill_bubble_contents(bubble_data, conv_data);
+                                       break;
+                               }
+                       }
+               }
+
+               msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DETAILSSENDINGFAILED"));
+       }
+
+       msg_release_struct(&failed_msg);
+       msg_release_struct(&sendOpt);
+       msg_release_struct(&req);
+
+       bubble_data->resend_idler = NULL;
+       bubble_data->resend_id = 0;
+
+       return EINA_FALSE;
+}
+
+void msg_ui_bubble_resend_msg(PMSG_BUBBLE_DATA bubble_data, int msg_id)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, bubble_data == NULL);
+       PMSG_APP_CONV_DATA_S conv_data = NULL;
+
+       Eina_List *l;
+       EINA_LIST_FOREACH(bubble_data->bubble_list, l, conv_data) {
+               if (conv_data) {
+                       if (msg_id == conv_data->msgId) {
+                               conv_data->networkStatus = MSG_NETWORK_SENDING;
+                               msg_ui_bubble_fill_bubble_contents(bubble_data, conv_data);
+                               elm_object_signal_emit(conv_data->ly, "elm,state,contents,disabled", "elm");
+                               break;
+                       }
+               }
+       }
+
+       if (!bubble_data->resend_idler) {
+               bubble_data->resend_id = msg_id;
+               bubble_data->resend_idler = ecore_idler_add(__resend_idler_cb, (void *)bubble_data);
+       }
+
+       D_LEAVE;
+}
+
+static Eina_Bool __retrieve_idler_cb(void *data)
+{
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+
+       msg_error_t err = MSG_SUCCESS;
+       PMSG_APP_CONV_DATA_S conv_data = NULL;
+       msg_struct_t retrieve_msg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+       D_MSG("Retrieve mms message, msg id = [%d]", bubble_data->retrieve_id);
+
+       err = msg_get_message(bubble_data->msgHandle, bubble_data->retrieve_id, retrieve_msg, sendOpt);
+       if (err != MSG_SUCCESS) {
+               D_MSG("msg_get_message is failed.");
+               bubble_data->retrieve_id = 0;
+               msg_release_struct(&retrieve_msg);
+               msg_release_struct(&sendOpt);
+               return EINA_FALSE;
+       }
+
+       msg_struct_t req = msg_create_struct(MSG_STRUCT_REQUEST_INFO);
+       msg_set_struct_handle(req, MSG_REQUEST_MESSAGE_HND, retrieve_msg);
+       msg_set_struct_handle(req, MSG_REQUEST_SENDOPT_HND, sendOpt);
+
+       err = msg_mms_retrieve_message(bubble_data->msgHandle, req);
+
+       if (err != MSG_SUCCESS) {
+               D_MSG("msg_mms_retrieve_message is failed.");
+               msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_RETRIEVING_FAILED"));
+
+               Eina_List *l;
+               EINA_LIST_FOREACH(bubble_data->bubble_list, l, conv_data) {
+                       if (conv_data && bubble_data->retrieve_id == conv_data->msgId) {
+                               Evas_Object *retrieve_btn = elm_object_part_content_get(conv_data->entry, "elm.swallow.end");
+
+                               if (retrieve_btn)
+                                       elm_object_disabled_set(retrieve_btn, EINA_FALSE);
+
+                               conv_data->networkStatus = MSG_NETWORK_RETRIEVE_FAIL;
+                               msg_ui_bubble_fill_bubble_contents(bubble_data, conv_data);
+                               break;
+                       }
+               }
+       }
+
+       msg_release_struct(&retrieve_msg);
+       msg_release_struct(&sendOpt);
+       msg_release_struct(&req);
+
+       bubble_data->retrieve_idler = NULL;
+       bubble_data->retrieve_id = 0;
+
+       return EINA_FALSE;
+}
+
+static void __msg_retrieve_clicked_cb(PMSG_BUBBLE_DATA bubble_data, int msg_id)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, bubble_data == NULL);
+       PMSG_APP_CONV_DATA_S conv_data = NULL;
+
+       Eina_List *l;
+       EINA_LIST_FOREACH(bubble_data->bubble_list, l, conv_data) {
+               if (conv_data && msg_id == conv_data->msgId) {
+                       Evas_Object *retrieve_btn = elm_object_part_content_get(conv_data->entry, "elm.swallow.end");
+
+                       if (retrieve_btn)
+                               elm_object_disabled_set(retrieve_btn, EINA_TRUE);
+
+                       conv_data->networkStatus = MSG_NETWORK_RETRIEVING;
+                       msg_ui_bubble_fill_bubble_contents(bubble_data, conv_data);
+                       break;
+               }
+       }
+
+       if (!bubble_data->retrieve_idler) {
+               bubble_data->retrieve_id = msg_id;
+               bubble_data->retrieve_idler = ecore_idler_add(__retrieve_idler_cb, (void *)bubble_data);
+       }
+
+       D_LEAVE;
+}
+
+static void __popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+}
+
+static void __anchor_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj || !event_info);
+
+       PMSG_BUBBLE_DATA bubble_data = data;
+       Elm_Entry_Anchor_Info *ac_info = NULL;
+
+       if(bubble_data->viewmode != BUBBLE_NORMAL_VIEW)
+               return;
+
+       /* Avoiding conflict long_press_menu popup */
+       if (bubble_data->popup)
+               return;
+
+       char *token = NULL, *tok_r = NULL;
+       char type[DEF_BUF_LEN] = { 0, };
+
+       ac_info = (Elm_Entry_Anchor_Info *) event_info;
+       strncpy(type, ac_info->name, DEF_BUF_LEN - 1);
+
+       token = strtok_r(type, ".", &tok_r);
+
+       elm_entry_anchor_hover_end(obj);
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, tok_r == NULL);
+
+       if (g_strcmp0(token, "image") == 0)
+               __msg_media_clicked_cb(bubble_data, tok_r, MMS_SMIL_MEDIA_IMG);
+       else if (g_strcmp0(token, "audio") == 0)
+               __msg_media_clicked_cb(bubble_data, tok_r, MMS_SMIL_MEDIA_AUDIO);
+
+       D_LEAVE;
+}
+
+static void __msg_copy_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (!conv_data) {
+               D_EMSG("conv_data is NULL");
+               return;
+       }
+
+       char copy_str[DEF_BUF_LEN_L + DEF_BUF_LEN_S + 1] = {0,};
+       if (conv_data->subject[0] != '\0') {
+               strncat(copy_str, conv_data->subject, strlen(conv_data->subject));
+               strncat(copy_str, "\n", strlen("\n"));
+       }
+
+       if (conv_data->msgText[0] != '\0')
+               strncat(copy_str, conv_data->msgText, sizeof(copy_str) - strlen(conv_data->subject) - 1);
+
+       if (copy_str[0] != '\0')
+               elm_cnp_selection_set(conv_data->entry, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_TEXT, copy_str, strlen(copy_str));
+
+       D_LEAVE;
+}
+
+static void __msg_protect_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (msg_update_protected_status(bubble_data->msgHandle, conv_data->msgId, !conv_data->bProtected) == MSG_SUCCESS) {
+               conv_data->bProtected = !conv_data->bProtected;
+               msg_ui_bubble_fill_bubble_contents(bubble_data, conv_data);
+       }
+}
+
+static void __msg_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(bubble_data->popup, "conv_data");
+       msg_message_id_t msg_id;
+       int err;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (!conv_data) {
+               msg_ui_bubble_show_notify(bubble_data, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+               return;
+       }
+
+       bool isDraft = msg_ui_composer_common_is_send_possible((MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data);
+
+       if (bubble_data->bubble_count == 1 && isDraft == false) {
+               bubble_data->bubble_count = 0;
+               err = msg_delete_thread_message_list(bubble_data->msgHandle, bubble_data->threadId, true);
+       } else {
+               msg_id = conv_data->msgId;
+               err = msg_delete_message(bubble_data->msgHandle, msg_id);
+               msg_ui_bubble_list_load(bubble_data, false);
+       }
+
+       if (err != MSG_SUCCESS) {
+               msg_ui_bubble_show_notify(bubble_data, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+       } else {
+               msg_ui_bubble_show_deleted_info(bubble_data);
+       }
+
+       return;
+}
+
+static void __msg_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (!conv_data) {
+               D_EMSG("conv_data is NULL");
+               return;
+       }
+
+       Evas_Object *popup = elm_popup_add(cd->main_window);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       if (conv_data->bProtected)
+               elm_object_text_set(popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"));
+       else
+               elm_object_text_set(popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
+
+       Evas_Object *btn_ok = elm_button_add(popup);
+       elm_object_style_set(btn_ok, "popup_button/default");
+       elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+       elm_object_part_content_set(popup, "button1", btn_ok);
+       evas_object_smart_callback_add(btn_ok, "clicked", __msg_delete_ok_clicked_cb, bubble_data);
+
+       Evas_Object *btn_cancel = elm_button_add(popup);
+       elm_object_style_set(btn_cancel, "popup_button/default");
+       elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", btn_cancel);
+       evas_object_smart_callback_add(btn_cancel, "clicked", __popup_close_clicked_cb, bubble_data);
+
+       evas_object_data_set(popup, "conv_data", conv_data);
+       evas_object_show(popup);
+
+       bubble_data->popup = popup;
+
+       D_LEAVE;
+}
+
+static int __msg_bubble_get_media_list(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S item_data)
+{
+       D_ENTER;
+
+       PBUBBLE_MEDIA_INFO media_item = NULL;
+       msg_struct_t msgInfo = NULL;
+       msg_struct_t sendOpt = NULL;
+       msg_struct_t mmsInfo = NULL;
+       msg_list_handle_t pagelist = NULL;
+       msg_list_handle_t medialist = NULL;
+       msg_list_handle_t attachlist = NULL;
+
+       int attach_count = 0;
+       int page_count = 0;
+       int i = 0;
+       int j = 0;
+       int media_count = 0;
+
+       /**** getting msgInfo ***/
+       msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       if (msg_get_message(bubble_data->msgHandle, item_data->msgId, msgInfo, sendOpt) != MSG_SUCCESS) {
+               D_EMSG("msg_get_message FAILED !!!");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return 0;
+       }
+
+       /*** getting MMS info ****/
+       mmsInfo = msg_create_struct(MSG_STRUCT_MMS);
+       if (msg_get_mms_struct(msgInfo, mmsInfo) != MSG_SUCCESS) {
+               D_EMSG("msg_get_mms_struct FAILED !!!");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               msg_release_struct(&mmsInfo);
+               return 0;
+       }
+
+       msg_get_list_handle(mmsInfo, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist);
+       page_count = msg_list_length(pagelist);
+
+       for (i=0; i<page_count; i++) {
+               msg_struct_t page_info = (msg_struct_t)msg_list_nth_data(pagelist, i);
+               int page_media_count = 0;
+
+               msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist);
+               page_media_count = msg_list_length(medialist);
+
+               for (j = 0; j < page_media_count; j++) {
+                       int mediaType;
+                       msg_struct_t media_info = NULL;
+                       media_info = (msg_struct_t)msg_list_nth_data(medialist, j);
+
+                       msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+                       if (mediaType == MMS_SMIL_MEDIA_TEXT)
+                               continue;
+
+                       media_item = (PBUBBLE_MEDIA_INFO)calloc(1, sizeof(BUBBLE_MEDIA_INFO));
+
+                       media_item->media_type = mediaType;
+                       msg_get_str_value(media_info, MSG_MMS_MEDIA_FILEPATH_STR, media_item->filepath, sizeof(media_item->filepath));
+                       msg_get_str_value(media_info, MSG_MMS_MEDIA_FILENAME_STR, media_item->filename, sizeof(media_item->filename));
+                       media_item->file_size = (int)ecore_file_size(media_item->filepath) / 1024; // KB
+
+                       bubble_data->media_list = eina_list_append(bubble_data->media_list, media_item);
+                       media_count++;
+                       media_item = NULL;
+               }
+       }
+
+
+       /*** getting attachment info ***/
+       msg_get_list_handle(mmsInfo, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist);
+       attach_count = msg_list_length(attachlist);
+
+       for (i=0; i<attach_count; i++) {
+               msg_struct_t attach_info = (msg_struct_t)msg_list_nth_data(attachlist, i);
+
+               media_item = (PBUBBLE_MEDIA_INFO)calloc(1, sizeof(BUBBLE_MEDIA_INFO));
+
+               msg_get_int_value(attach_info, MSG_MMS_ATTACH_DRM_TYPE_INT, &media_item->drm_type);
+               msg_get_str_value(attach_info, MSG_MMS_ATTACH_FILEPATH_STR, media_item->filepath, sizeof(media_item->filepath));
+               msg_get_str_value(attach_info, MSG_MMS_ATTACH_FILENAME_STR, media_item->filename, sizeof(media_item->filename));
+               media_item->file_size = (int)ecore_file_size(media_item->filepath) / 1024; // KB
+
+               bubble_data->media_list = eina_list_append(bubble_data->media_list, media_item);
+               media_count++;
+               media_item = NULL;
+       }
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+       msg_release_struct(&mmsInfo);
+
+       D_LEAVE;
+       return media_count;
+}
+
+void __msg_ui_bubble_save_attachments_checked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PBUBBLE_MEDIA_INFO mediaData = (PBUBBLE_MEDIA_INFO)evas_object_data_get(obj, "item_data");
+       Elm_Object_Item *it = NULL;
+
+       int genlist_count = elm_genlist_items_count(bubble_data->popup_genlist);
+       int media_count = 0;
+
+       if (genlist_count == 1)
+               media_count = 1;
+       else
+               media_count = genlist_count - 1;
+
+       if (media_count == 1) {
+               if (mediaData->isChecked)
+                       bubble_data->media_chk_cnt = 1;
+               else
+                       bubble_data->media_chk_cnt = 0;
+       } else if (media_count > 1) {
+               it = elm_genlist_first_item_get(bubble_data->popup_genlist);
+
+               if (!strcmp(mediaData->filename, dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"))) {
+                       while (it) {
+                               PBUBBLE_MEDIA_INFO item_data = (PBUBBLE_MEDIA_INFO)elm_object_item_data_get(it);
+                               if (item_data) {
+                                               item_data->isChecked = mediaData->isChecked;
+                                               elm_check_state_set(item_data->check, item_data->isChecked);
+                                       }
+
+                               it = elm_genlist_item_next_get(it);
+                       }
+
+                       if (mediaData->isChecked)
+                               bubble_data->media_chk_cnt = media_count;
+                       else
+                               bubble_data->media_chk_cnt = 0;
+               } else {
+                       if (mediaData->isChecked) {
+                               bubble_data->media_chk_cnt++;
+                               // handle select  all
+                               if (bubble_data->media_chk_cnt == media_count) {
+                                       it = elm_genlist_first_item_get(bubble_data->popup_genlist);
+                                       PBUBBLE_MEDIA_INFO item_data = (PBUBBLE_MEDIA_INFO)elm_object_item_data_get(it);
+                                       if (item_data) {
+                                               item_data->isChecked = true;
+                                               elm_check_state_set(item_data->check, item_data->isChecked);
+                                       }
+                               }
+                       } else {
+                               // handle select all
+                               if (bubble_data->media_chk_cnt == media_count) {
+                                       it = elm_genlist_first_item_get(bubble_data->popup_genlist);
+                                       PBUBBLE_MEDIA_INFO item_data = (PBUBBLE_MEDIA_INFO)elm_object_item_data_get(it);
+                                       if (item_data) {
+                                               item_data->isChecked = false;
+                                               elm_check_state_set(item_data->check, item_data->isChecked);
+                                       }
+                               }
+                               bubble_data->media_chk_cnt--;
+                       }
+               }
+       }
+
+       if (bubble_data->save_button) {
+               if (bubble_data->media_chk_cnt > 0)
+                       elm_object_disabled_set(bubble_data->save_button, EINA_FALSE);
+               else
+                       elm_object_disabled_set(bubble_data->save_button, EINA_TRUE);
+       }
+
+       D_LEAVE;
+}
+
+
+static char *__msg_ui_bubble_save_attachments_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL || obj == NULL, NULL);
+
+       PBUBBLE_MEDIA_INFO media_info = (PBUBBLE_MEDIA_INFO)data;
+
+       if (!strcmp(part, "elm.text")) {
+               return strdup(media_info->filename);
+       }
+       D_LEAVE;
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_bubble_save_attachments_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL || obj == NULL, NULL);
+
+       PBUBBLE_MEDIA_INFO media_info = (PBUBBLE_MEDIA_INFO)data;
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)evas_object_data_get(obj, "bubble_data");
+
+       if (!strcmp(part, "elm.icon.1") || !strcmp(part, "elm.icon")) {
+               Evas_Object *check = elm_check_add(obj);
+               //set the State pointer to keep the current UI state of Checkbox.
+               elm_check_state_pointer_set(check, &media_info->isChecked);
+               evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               media_info->check = check;
+               evas_object_data_set(check, "item_data", media_info);
+
+               evas_object_smart_callback_add(check, "changed", __msg_ui_bubble_save_attachments_checked_cb, bubble_data);
+
+               return check;
+       } else  if (strcmp(part, "elm.icon.2") == 0) {
+               Evas_Object *image = elm_icon_add(obj);
+
+               if (media_info->drm_type != MSG_DRM_TYPE_NONE) {
+                       elm_image_file_set(image, MSG_BUBBLE_IMAGE_DRM_ICON, NULL);
+               } else {
+                       if (media_info->media_type == MMS_SMIL_MEDIA_IMG) {
+                               if (media_info->filepath[0] != '\0')
+                                       elm_image_file_set(image, media_info->filepath, NULL);
+                               else
+                                       elm_image_file_set(image, MSG_BUBBLE_ATTACH_ICON, NULL);
+                       } else {
+                               const char *icon_path = msg_common_get_file_icon(media_info->filepath);
+                               if (icon_path) {
+                                       elm_image_file_set(image, MSG_IMAGES_EDJ, icon_path);
+                               } else {
+                                       D_EMSG("icon_path is NULL");
+                                       elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_BUBBLE_ATTACH_ICON);
+                               }
+                       }
+
+               }
+
+               if (image)
+                       evas_object_size_hint_aspect_set(image, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+               return image;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part : %s", part);
+       }
+
+       D_LEAVE;
+       return NULL;
+}
+
+static void __msg_ui_bubble_save_attachments_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+
+       PBUBBLE_MEDIA_INFO item_data = (PBUBBLE_MEDIA_INFO)elm_object_item_data_get(item);
+
+       elm_genlist_item_selected_set(item, false);
+
+       item_data->isChecked = !item_data->isChecked;
+
+       const char *filename = elm_object_item_part_text_get(item, "elm.text");
+       if (!strcmp(filename, dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL")))
+               elm_genlist_item_fields_update(item, "elm.icon", ELM_GENLIST_ITEM_FIELD_CONTENT);
+       else
+               elm_genlist_item_fields_update(item, "elm.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+
+       evas_object_smart_callback_call(item_data->check, "changed", event_info);
+
+       D_LEAVE;
+}
+
+
+static void __popup_save_attachment_save_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       Eina_List *l = NULL;
+       Eina_Bool ret = EINA_FALSE;
+       PBUBBLE_MEDIA_INFO item_data = NULL;
+
+       l = NULL;
+       item_data = NULL;
+       EINA_LIST_FOREACH(bubble_data->media_list,l,item_data) {
+               if (item_data) {
+                       if (item_data->isChecked) {
+                               char dst[MSG_FILEPATH_LEN_MAX+1] = {0,};
+                               snprintf(dst, MSG_FILEPATH_LEN_MAX, "%s/%s", MSG_BUBBLE_DOWNLOAD_DIR, item_data->filename);
+
+                               if (ecore_file_exists(dst) == EINA_FALSE) {
+                                       ret = ecore_file_cp(item_data->filepath, dst);
+                               } else {
+                                       // make new file path
+                                       char *file_ext = NULL;
+                                       char file_name_no_ext[MSG_FILENAME_LEN_MAX+1] = {0,};
+                                       char new_file_path[MSG_FILENAME_LEN_MAX+1] = {0,};
+
+                                       file_ext = strrchr(item_data->filename, '.') + 1;
+                                       strncpy(file_name_no_ext, item_data->filename, strlen(item_data->filename) - strlen(file_ext) - 1);
+                                       int count = 1;
+
+                                       while(count < 100) {
+                                               snprintf(new_file_path, MSG_FILENAME_LEN_MAX, "%s/%s_%02d.%s", MSG_BUBBLE_DOWNLOAD_DIR, file_name_no_ext, count, file_ext);
+                                               if (ecore_file_exists(new_file_path) == EINA_TRUE) {
+                                                       count++;
+                                               } else {
+                                                       ret = ecore_file_cp(item_data->filepath, new_file_path);
+                                                       break;
+                                               }
+                                       }
+
+                               }
+                       }
+               }
+       }
+       if (ret == EINA_TRUE) {
+               msg_ui_bubble_status_message_post(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
+       } else {
+               msg_ui_bubble_show_notify(bubble_data, dgettext("sys_string", "IDS_COM_POP_SAVING_FAILED"));
+       }
+
+       if (bubble_data->media_list) {
+               EINA_LIST_FREE(bubble_data->media_list, item_data) {
+                       if (item_data)
+                               free(item_data);
+               }
+
+               bubble_data->media_list = eina_list_free(bubble_data->media_list);
+       }
+
+       bubble_data->popup_genlist = NULL;
+       bubble_data->media_chk_cnt = 0;
+       bubble_data->save_button = NULL;
+
+
+       D_LEAVE;
+}
+
+static void __popup_save_attachment_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       void *item_data = NULL;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (bubble_data->media_list) {
+               EINA_LIST_FREE(bubble_data->media_list, item_data) {
+                       if (item_data)
+                               free(item_data);
+               }
+
+               bubble_data->media_list = eina_list_free(bubble_data->media_list);
+       }
+
+       bubble_data->popup_genlist = NULL;
+       bubble_data->media_chk_cnt = 0;
+       bubble_data->save_button = NULL;
+
+       D_LEAVE;
+}
+
+
+static void __msg_save_attachment_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (!conv_data) {
+               D_EMSG("conv_data is NULL");
+               return;
+       }
+
+       int total_count = __msg_bubble_get_media_list(bubble_data, conv_data);
+
+       if (total_count > 0) {
+               /** create popup **/
+               Evas_Object *popup = NULL;
+               Evas_Object *genlist = NULL;
+               Evas_Object *btn_save = NULL;
+               Evas_Object *btn_close = NULL;
+               PBUBBLE_MEDIA_INFO media_info = NULL;
+               int i = 0;
+
+               popup = elm_popup_add(cd->main_window);
+
+               elm_object_style_set(popup, "min_menustyle");
+               evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+               elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SAVE_ATTACHMENT"));
+
+               /** create genlist **/
+               genlist = elm_genlist_add(popup);
+               evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_data_set(genlist, "bubble_data", bubble_data);
+               bubble_data->popup_genlist = genlist;
+
+               bubble_data->itc_popup_selall.item_style = "1text.1icon.2";
+               bubble_data->itc_popup_selall.func.text_get = __msg_ui_bubble_save_attachments_gl_text_get;
+               bubble_data->itc_popup_selall.func.content_get = __msg_ui_bubble_save_attachments_gl_content_get;
+               bubble_data->itc_popup_selall.func.state_get = NULL;
+               bubble_data->itc_popup_selall.func.del = NULL;
+
+               // Genlist style set
+               bubble_data->itc_popup.item_style = "1text.2icon.2";
+               bubble_data->itc_popup.func.text_get =  __msg_ui_bubble_save_attachments_gl_text_get;
+               bubble_data->itc_popup.func.content_get = __msg_ui_bubble_save_attachments_gl_content_get;
+               bubble_data->itc_popup.func.state_get = NULL;
+               bubble_data->itc_popup.func.del = NULL;
+
+               // Add first Item, (select  all)
+               if (total_count > 1) {
+                       PBUBBLE_MEDIA_INFO select_all_info = NULL;
+                       const char *str_sel_all = dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL");
+                       select_all_info = (PBUBBLE_MEDIA_INFO)calloc(1, sizeof(BUBBLE_MEDIA_INFO));
+                       strncpy(select_all_info->filename, str_sel_all, strlen(str_sel_all));
+                       elm_genlist_item_append(genlist, &bubble_data->itc_popup_selall, select_all_info, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_bubble_save_attachments_gl_sel, bubble_data);
+               }
+
+               for (i=0; i<total_count; i++) {
+                       media_info = eina_list_nth(bubble_data->media_list, i);
+                       if (media_info)
+                               elm_genlist_item_append(genlist, &bubble_data->itc_popup, media_info, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_bubble_save_attachments_gl_sel, bubble_data);
+               }
+
+               Evas_Object *box = elm_box_add(popup);
+               if (total_count == 1)
+                       evas_object_size_hint_min_set(box, 0, MSG_BUBBLE_POPUP_LIST_1LINE_HEIGHT * elm_config_scale_get() * total_count);
+               else if (total_count < MSG_BUBBLE_POPUP_LIST_MAX_MENU)
+                       evas_object_size_hint_min_set(box, 0, MSG_BUBBLE_POPUP_LIST_1LINE_HEIGHT * elm_config_scale_get() * (total_count+1)); // +1 for select all  menu
+               else
+                       evas_object_size_hint_min_set(box, 0, MSG_BUBBLE_POPUP_LIST_1LINE_HEIGHT * elm_config_scale_get() * MSG_BUBBLE_POPUP_LIST_MAX_MENU);
+
+               elm_box_pack_start(box, genlist);
+               elm_object_content_set(popup, box);
+
+               /*** creating Buttons ***/
+               // Save button
+               btn_save = elm_button_add(popup);
+               elm_object_style_set(btn_save, "popup_button/default");
+               elm_object_text_set(btn_save, dgettext("sys_string", "IDS_COM_SK_SAVE"));
+               elm_object_part_content_set(popup, "button1", btn_save);
+               evas_object_smart_callback_add(btn_save, "clicked", __popup_save_attachment_save_clicked_cb, bubble_data);
+               elm_object_disabled_set(btn_save, EINA_TRUE);
+               bubble_data->save_button = btn_save;
+
+               // Cancel button
+               btn_close = elm_button_add(popup);
+               elm_object_style_set(btn_close, "popup_button/default");
+               elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+               elm_object_part_content_set(popup, "button2", btn_close);
+               evas_object_smart_callback_add(btn_close, "clicked", __popup_save_attachment_close_clicked_cb, bubble_data);
+
+               evas_object_show(genlist);
+               evas_object_show(popup);
+               bubble_data->popup = popup;
+       } else {
+               /** No attachment */
+               D_MSG("No attachments");
+               msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NO_ATTACHMENTS"));
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_forward_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (!conv_data) {
+               D_EMSG("conv_data is NULL");
+               return;
+       }
+
+       char buf[DEF_BUF_LEN_S] = { 0, };
+       service_h svc_handle;
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               snprintf(buf, sizeof(buf), "%d", conv_data->msgId);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, buf);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_FORWARD);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
+               msg_ui_composer_launch_composer_create(cd, svc_handle);
+               service_destroy(svc_handle);
+       }
+       D_LEAVE;
+}
+
+static void __msg_bubble_copy_to_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       if (!conv_data) {
+               D_EMSG("conv_data is NULL");
+               msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_COPY"));
+               return;
+       }
+
+       msg_error_t err = MSG_SUCCESS;
+       int msg_id = 0;
+       msg_struct_t msg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+       if (msg_get_message(bubble_data->msgHandle, conv_data->msgId, msg, sendOpt) != MSG_SUCCESS)
+               goto COPY_FAIL;
+
+       if (conv_data->msgType == MSG_TYPE_SMS) {
+               if (conv_data->storageId == MSG_STORAGE_PHONE) {
+                       if ((msg_id = msg_add_message(bubble_data->msgHandle, msg, sendOpt)) < 0)
+                               goto COPY_FAIL;
+                       bubble_data->copy_id = msg_id;
+                       err = msg_move_msg_to_storage(bubble_data->msgHandle, msg_id, MSG_STORAGE_SIM);
+               } else if (conv_data->storageId == MSG_STORAGE_SIM) {
+                       msg_set_int_value(msg, MSG_MESSAGE_STORAGE_ID_INT, MSG_STORAGE_PHONE);
+                       if ((msg_id = msg_add_message(bubble_data->msgHandle, msg, sendOpt)) < 0)
+                               goto COPY_FAIL;
+               } else {
+                       D_EMSG("invalid storage id [%d]", conv_data->storageId);
+                       goto COPY_FAIL;
+               }
+                /** remove if it failed to move */
+               if (err != MSG_SUCCESS)
+                       msg_delete_message(bubble_data->msgHandle, msg_id);
+       }
+
+       if (err == MSG_SUCCESS) {
+               msg_ui_bubble_status_message_post(bubble_data, dgettext("sys_string", "IDS_COM_POP_COPIED_P"));
+               if (conv_data->storageId != MSG_STORAGE_PHONE)
+                       msg_ui_bubble_list_load(bubble_data, false);
+       } else {
+               goto COPY_FAIL;
+       }
+
+       if (msg)
+               msg_release_struct(&msg);
+
+       if (sendOpt)
+               msg_release_struct(&sendOpt);
+
+       D_LEAVE;
+       return;
+
+
+COPY_FAIL:
+       if (msg)
+               msg_release_struct(&msg);
+
+       if (sendOpt)
+               msg_release_struct(&sendOpt);
+
+       msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_COPY"));
+
+}
+
+static void __msg_bubble_view_detail_msg_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       // create popup
+       Evas_Object *popup = elm_popup_add(cd->main_window);
+       elm_object_style_set(popup, "min_menustyle");
+
+       if (!popup) {
+               D_EMSG("create popup error !!! ");
+               return;
+       }
+
+       // popup title
+       elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"));
+
+       // box
+       Evas_Object *box = elm_box_add(popup);
+       evas_object_size_hint_min_set(box, -1, 450);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       // popup entry
+       Evas_Object *entry = elm_entry_add(popup);
+       evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+       elm_entry_editable_set(entry, EINA_FALSE);
+       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_NO_IMAGE);
+       elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+       elm_entry_magnifier_disabled_set(entry, EINA_TRUE);
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+
+       char *str = msg_common_make_message_detail_text(bubble_data->msgHandle, conv_data->msgId);
+
+       if (str) {
+               elm_entry_entry_set(entry, str);
+               free(str);
+       }
+
+       evas_object_show(entry);
+       evas_object_show(box);
+
+       elm_box_pack_start(box, entry);
+       elm_object_content_set(popup, box);
+
+       // popup close button
+       Evas_Object * btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       elm_object_part_content_set(popup, "button1", btn1);
+
+       evas_object_smart_callback_add(btn1, "clicked", __popup_close_clicked_cb, bubble_data);
+
+       evas_object_show(popup);
+       bubble_data->popup = popup;
+}
+
+static void __longpressed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !cd);
+
+       Evas_Object *popup = NULL;
+       Evas_Object *list = NULL;
+       char title[DEF_THREAD_ADDR_LEN+1] = {0,};
+
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !conv_data);
+
+       if(bubble_data->viewmode != BUBBLE_NORMAL_VIEW)
+               return;
+
+       /** create popup */
+       popup = elm_popup_add(cd->main_window);
+       if (!popup) {
+               D_EMSG("elm_popup_add returns NULL");
+               return;
+       }
+
+       elm_object_style_set(popup, "min_menustyle");
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       /** set popup title */
+       /** Sender: contents ... ex> "01012341234: Hello......" */
+       if (bubble_data->threadName[0] != '\0')
+               snprintf(title, DEF_THREAD_ADDR_LEN, "%s: %s", bubble_data->threadName, conv_data->msgText);
+       else
+               snprintf(title, DEF_THREAD_ADDR_LEN, "%s: %s", dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"), conv_data->msgText);
+
+       /** create menu list */
+       list = elm_list_add(cd->main_window);
+       elm_list_mode_set(list, ELM_LIST_EXPAND);
+       evas_object_size_hint_max_set(list, -1, MSG_BUBBLE_POPUP_LIST_1LINE_HEIGHT * MSG_BUBBLE_POPUP_LIST_MAX_MENU * elm_config_scale_get());
+
+       if (!list)
+               return;
+
+       evas_object_data_set(list, "conv_data", conv_data);
+
+       elm_list_item_append(list, dgettext("sys_string", "IDS_COM_SK_DELETE"), NULL, NULL, __msg_delete_clicked_cb, bubble_data);
+       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"), NULL, NULL, __msg_copy_clicked_cb, bubble_data);
+       if (conv_data->bProtected == true)
+               elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_PROTECTION_OFF"), NULL, NULL, __msg_protect_clicked_cb, bubble_data);
+       else
+               elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_PROTECTION_ON"), NULL, NULL, __msg_protect_clicked_cb, bubble_data);
+       elm_list_item_append(list, dgettext("sys_string", "IDS_COM_BODY_FORWARD"), NULL, NULL, __msg_forward_clicked_cb, bubble_data);
+
+       if (conv_data->msgType == MSG_TYPE_SMS) {
+               if (conv_data->storageId == MSG_STORAGE_PHONE)
+                       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_SIM"), NULL, NULL, __msg_bubble_copy_to_clicked_cb, bubble_data);
+               else if (conv_data->storageId == MSG_STORAGE_SIM)
+                       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE"), NULL, NULL, __msg_bubble_copy_to_clicked_cb, bubble_data);
+       } else if (conv_data->msgType == MSG_TYPE_MMS) {
+               elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SAVE_ATTACHMENT"), NULL, NULL, __msg_save_attachment_clicked_cb, bubble_data);
+       }
+
+       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"), NULL, NULL, __msg_bubble_view_detail_msg_clicked_cb, bubble_data);
+       elm_list_go(list);
+
+       elm_object_part_text_set(popup,"title,text",title);
+       elm_object_content_set(popup, list);
+
+       Evas_Object * btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       elm_object_part_content_set(popup, "button1", btn1);
+       bubble_data->popup = popup;
+
+       evas_object_show(popup);
+
+       evas_object_smart_callback_add(btn1, "clicked", __popup_close_clicked_cb, bubble_data);
+
+       D_LEAVE;
+}
+
+
+static void __set_msg_data_by_conv_data(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S conv_data, msg_struct_t msgInfo)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !conv_data || !msgInfo || !bubble_data);
+
+       char *msg_date = NULL;
+
+       msg_get_int_value(msgInfo, MSG_CONV_MSG_ID_INT, (int *)(&conv_data->msgId));
+       msg_get_int_value(msgInfo, MSG_CONV_MSG_TYPE_INT, &conv_data->msgType);
+       msg_get_int_value(msgInfo, MSG_CONV_MSG_STORAGE_ID_INT, (int *)(&conv_data->storageId));
+
+       if (conv_data->msgTime == NULL)
+               conv_data->msgTime = (time_t *) calloc(1, sizeof(time_t));
+
+       if (conv_data->msgTime) {
+               bzero(conv_data->msgTime,sizeof(time_t));
+               msg_get_int_value(msgInfo, MSG_CONV_MSG_DISPLAY_TIME_INT, (int *)conv_data->msgTime);
+               msg_date = msg_common_get_display_date(bubble_data->locale, bubble_data->date_ptn_default, bubble_data->date_ptn_year, conv_data->msgTime);
+               snprintf(conv_data->displayDate, sizeof(conv_data->displayDate), "%s", msg_date);
+               if (msg_date)
+                       free(msg_date);
+       }
+
+       msg_get_int_value(msgInfo, MSG_CONV_MSG_NETWORK_STATUS_INT, (int *)(&conv_data->networkStatus));
+       msg_get_bool_value(msgInfo, MSG_CONV_MSG_READ_BOOL, &conv_data->bRead);
+       msg_get_bool_value(msgInfo, MSG_CONV_MSG_PROTECTED_BOOL, &conv_data->bProtected);
+       msg_get_int_value(msgInfo, MSG_CONV_MSG_DIRECTION_INT, &conv_data->direction);
+
+       bzero(conv_data->thumbNailPath, sizeof(conv_data->thumbNailPath));
+       msg_get_str_value(msgInfo, MSG_CONV_MSG_IMAGE_THUMB_PATH_STR, conv_data->thumbNailPath, DEF_IMG_PATH_LEN);
+
+       if (conv_data->thumbNailPath[0] == '\0') {
+               msg_get_str_value(msgInfo, MSG_CONV_MSG_VIDEO_THUMB_PATH_STR, conv_data->thumbNailPath, DEF_IMG_PATH_LEN);
+
+               if (conv_data->thumbNailPath[0] == '\0')
+                       conv_data->thumbType = BUBBLE_THUMBNAIL_VIDEO;
+               else
+                       conv_data->thumbType = BUBBLE_THUMBNAIL_NONE;
+
+       } else {
+               conv_data->thumbType = BUBBLE_THUMBNAIL_IMAGE;
+       }
+
+       bzero(conv_data->audio_filename, sizeof(conv_data->audio_filename));
+       msg_get_str_value(msgInfo, MSG_CONV_MSG_AUDIO_NAME_STR, conv_data->audio_filename, DEF_IMG_PATH_LEN);
+
+       bzero(conv_data->subject, sizeof(conv_data->subject));
+       msg_get_str_value(msgInfo, MSG_CONV_MSG_SUBJECT_STR, conv_data->subject, DEF_BUF_LEN_S);
+
+       if (conv_data->msgType == MSG_TYPE_MMS) {
+               msg_get_str_value(msgInfo, MSG_CONV_MSG_TEXT_STR, conv_data->msgText, DEF_MAX_MSG_TEXT_LEN);            /** get body text */
+               msg_get_int_value(msgInfo, MSG_CONV_MSG_ATTACH_COUNT_INT, &conv_data->attachment_cnt);                  /** get attachment count */
+               if (conv_data->attachment_cnt == 1)
+                       msg_get_str_value(msgInfo, MSG_CONV_MSG_ATTACH_NAME_STR, conv_data->attachment_filename, DEF_IMG_PATH_LEN);
+       } else if (conv_data->msgType == MSG_TYPE_MMS_NOTI) {
+               bzero(conv_data->msgText, sizeof(conv_data->msgText));
+       } else {
+               msg_get_str_value(msgInfo, MSG_CONV_MSG_TEXT_STR, conv_data->msgText, DEF_MAX_MSG_TEXT_LEN);
+       }
+}
+
+static int __calc_scroller_geometry(PMSG_BUBBLE_DATA bubble_data)
+{
+       Evas_Coord sw, sh;
+
+       elm_scroller_child_size_get(bubble_data->scrl, &sw, &sh);
+
+       return sh;
+}
+
+void __msg_resend_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       item_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       msg_ui_bubble_resend_msg(bubble_data, item_data->msgId);
+
+       D_LEAVE;
+}
+
+void __msg_install_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       item_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       __msg_install_clicked_cb(bubble_data, item_data->msgId);
+
+       D_LEAVE;
+}
+
+void __msg_retrieve_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       item_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       __msg_retrieve_clicked_cb(bubble_data, item_data->msgId);
+
+       D_LEAVE;
+}
+
+void __msg_more_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, bubble_data->viewmode != BUBBLE_NORMAL_VIEW);
+
+
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+       item_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !item_data);
+
+       int BatteryStatus;
+
+       vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &BatteryStatus);
+       D_MSG("Battery status = [%d]", BatteryStatus);
+
+       if (BatteryStatus == VCONFKEY_SYSMAN_BAT_POWER_OFF) {
+               int charger_status = -1;
+               vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &charger_status);
+
+               if (!charger_status) {
+                       msg_ui_bubble_show_notify(bubble_data, dgettext("sys_string", "IDS_COM_BODY_LOW_BATTERY"));
+                       return;
+               }
+       }
+
+       service_h svc_handle;
+       char msgId[DEF_BUF_LEN_S] = {0,};
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               snprintf(msgId, DEF_BUF_LEN_S, "%d", item_data->msgId);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, msgId);
+               msg_ui_composer_launch_viewer_create(bubble_data->callback_data, svc_handle);
+               service_destroy(svc_handle);
+       }
+}
+
+static void __msg_send_failed_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, bubble_data->viewmode != BUBBLE_NORMAL_VIEW);
+
+       PMSG_APP_CONV_DATA_S conv_data = (PMSG_APP_CONV_DATA_S)evas_object_data_get(obj, "conv_data");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       Evas_Object *popup = elm_popup_add(cd->main_window);
+       elm_object_style_set(popup, "min_menustyle");
+       elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"));
+
+       Evas_Object *btn_close = elm_button_add(popup);
+       elm_object_style_set(btn_close, "popup_button/default");
+       elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       elm_object_part_content_set(popup, "button1", btn_close);
+       evas_object_smart_callback_add(btn_close, "clicked", msg_ui_popup_close_clicked_cb, bubble_data);
+
+       Evas_Object *list = elm_list_add(popup);
+       elm_list_mode_set(list, ELM_LIST_EXPAND);
+       evas_object_data_set(list, "conv_data", conv_data);
+
+       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESEND"), NULL, NULL, __msg_resend_btn_clicked_cb, (void *)bubble_data);
+       elm_list_item_append(list, dgettext("sys_string", "IDS_COM_SK_DELETE"), NULL, NULL, __msg_delete_clicked_cb, (void *)bubble_data);
+
+       elm_list_go(list);
+       elm_object_content_set(popup, list);
+       evas_object_show(popup);
+
+       bubble_data->popup = popup;
+}
+
+void msg_ui_bubble_fill_bubble_contents(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S item_data)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, !bubble_data || !item_data);
+       char time_status_str[DEF_BUF_LEN + DEF_BUF_LEN_S + 1] = {0, };
+       char *time_str = NULL;
+
+       __msg_bubble_add_content(bubble_data, item_data);
+
+       if (item_data->msgType == MSG_TYPE_MMS) {
+               Evas_Object *prev_obj = NULL;
+               Evas_Object *media_layout = elm_layout_add(item_data->entry);
+
+               elm_layout_file_set(media_layout, MSGC_UI_DEFAULT_EDJ, MSGC_EDJ_GRP_BUBBLE_MEDIA_LAYOUT);
+
+               prev_obj = elm_object_part_content_get(item_data->entry, "elm.swallow.end");
+               if (prev_obj) {
+                       elm_object_part_content_unset(item_data->entry, "elm.swallow.end");
+                       evas_object_del(prev_obj);
+               }
+
+               if (item_data->networkStatus == MSG_NETWORK_SEND_SUCCESS || item_data->networkStatus == MSG_NETWORK_SEND_FAIL || item_data->networkStatus == MSG_NETWORK_RETRIEVE_SUCCESS) {
+                       /** add more button */
+                       Evas_Object *more_btn = elm_button_add(media_layout);
+                       elm_object_style_set(more_btn, "reveal");
+                       evas_object_data_set(more_btn, "conv_data", item_data);
+                       evas_object_smart_callback_add(more_btn, "clicked", __msg_more_btn_clicked_cb, bubble_data);
+
+                       elm_object_part_content_set(media_layout, "bubble.swallow.more", more_btn);
+                       evas_object_smart_calculate(media_layout);
+
+                       elm_object_part_text_set(media_layout, "msgtype_text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MMS"));
+                       evas_object_show(more_btn);
+               }
+
+               evas_object_show(media_layout);
+               elm_object_part_content_set(item_data->entry, "elm.swallow.end", media_layout);
+               elm_entry_calc_force(item_data->entry);
+       } else if (item_data->msgType == MSG_TYPE_MMS_NOTI && item_data->networkStatus != MSG_NETWORK_RETRIEVE_SUCCESS && item_data->networkStatus != MSG_NETWORK_RETRIEVING) {
+               Evas_Object *prev_obj = NULL;
+               Evas_Object *retrieve_btn = NULL;
+               prev_obj = elm_object_part_content_get(item_data->entry, "elm.swallow.end");
+               if (prev_obj) {
+                       elm_object_part_content_unset(item_data->entry, "elm.swallow.end");
+                       evas_object_del(prev_obj);
+               }
+
+               retrieve_btn = elm_button_add(item_data->entry);
+               elm_object_text_set(retrieve_btn, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_RETRIEVE"));
+               evas_object_data_set(retrieve_btn, "conv_data", item_data);
+
+               evas_object_smart_callback_add(retrieve_btn, "clicked", __msg_retrieve_btn_clicked_cb, bubble_data);
+
+               elm_object_part_content_set(item_data->entry, "elm.swallow.end", retrieve_btn);
+       } else if (item_data->msgType == MSG_TYPE_SMS_SYNCML) {
+               Evas_Object *prev_obj = NULL;
+               Evas_Object *install_btn = NULL;
+               prev_obj = elm_object_part_content_get(item_data->entry, "elm.swallow.end");
+               if (prev_obj) {
+                       elm_object_part_content_unset(item_data->entry, "elm.swallow.end");
+                       evas_object_del(prev_obj);
+               }
+
+               install_btn = elm_button_add(item_data->entry);
+               elm_object_text_set(install_btn, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_INSTALL"));
+               evas_object_data_set(install_btn, "conv_data", item_data);
+
+               evas_object_smart_callback_add(install_btn, "clicked", __msg_install_btn_clicked_cb, bubble_data);
+
+               elm_object_part_content_set(item_data->entry, "elm.swallow.end", install_btn);
+       }
+
+       /** Network status (Sending, Retrieving); */
+       switch (item_data->networkStatus) {
+       case MSG_NETWORK_SEND_FAIL:
+               if (item_data->direction == MSG_DIRECTION_TYPE_MO) {
+                       if (item_data->progressbar) {
+                               evas_object_del(item_data->progressbar);
+                               item_data->progressbar = NULL;
+                       }
+
+                       item_data->failed_button = elm_button_add(item_data->entry);
+                       elm_object_style_set(item_data->failed_button, "warning");
+                       evas_object_show(item_data->failed_button);
+                       elm_object_part_content_set(item_data->entry, "elm.swallow.icon1", item_data->failed_button);
+
+                       evas_object_data_set(item_data->failed_button, "conv_data", item_data);
+                       evas_object_smart_callback_add(item_data->failed_button, "clicked", __msg_send_failed_btn_clicked_cb, bubble_data);
+
+                       elm_object_signal_emit(item_data->entry, "elm,state,text,status,disabled", "elm");
+                       elm_object_signal_emit(item_data->entry, "elm,state,content,status,enabled", "elm");
+               } else {
+                       strncpy(time_status_str, dgettext("sys_string", "IDS_COM_POP_FAILED"), sizeof(time_status_str)-1);
+               }
+               break;
+       case MSG_NETWORK_RETRIEVE_FAIL:
+               /** elm.text.status */
+               strncpy(time_status_str, dgettext("sys_string", "IDS_COM_POP_FAILED"), sizeof(time_status_str)-1);
+               break;
+       case MSG_NETWORK_SENDING:
+       case MSG_NETWORK_RETRIEVING:
+               /** Add progress icon */
+               if (item_data->progressbar) {
+                       evas_object_del(item_data->progressbar);
+                       item_data->progressbar = NULL;
+               }
+
+               item_data->progressbar = elm_progressbar_add(item_data->entry);
+               elm_object_style_set(item_data->progressbar, "list_process_small");
+               evas_object_show(item_data->progressbar);
+               elm_progressbar_pulse(item_data->progressbar, EINA_TRUE);
+               elm_object_part_content_set(item_data->entry, "elm.swallow.icon1", item_data->progressbar);
+
+               elm_object_signal_emit(item_data->entry, "elm,state,text,status,disabled", "elm");
+               elm_object_signal_emit(item_data->entry, "elm,state,content,status,enabled", "elm");
+               break;
+       default:
+               /** display time */
+               time_str = __msg_ui_get_display_time(item_data->msgTime, bubble_data);
+               if (time_str) {
+                       strncpy(time_status_str, time_str, sizeof(time_status_str)-1);
+                       free(time_str);
+               } else {
+                       /** This "else" case is for avoiding NULL of the time_status_str */
+                       /** if time_status_str is NULL, it could be shown progress icon although it's not sending or retrieving */
+                       strncpy(time_status_str, item_data->displayDate, sizeof(time_status_str)-1);
+               }
+               break;
+       }
+
+       if (time_status_str[0] != '\0') {
+               if (item_data->progressbar) {
+                       evas_object_del(item_data->progressbar);
+                       item_data->progressbar = NULL;
+               }
+
+               elm_object_part_text_set(item_data->entry, "elm.text.time", time_status_str);
+               elm_object_signal_emit(item_data->entry, "elm,state,text,status,enabled", "elm");
+               elm_object_signal_emit(item_data->entry, "elm,state,content,status,disabled", "elm");
+       }
+
+}
+
+Eina_Bool msg_ui_bubble_item_load_cb(void *data)
+{
+       D_ENTER;
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !data, EINA_FALSE);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA) data;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+       double scr_g;
+
+       bool cb_cancel = false;
+
+       evas_object_smart_callback_del(bubble_data->scrl, "edge,top", msg_ui_bubble_scroll_edge_top_cb);
+
+       if (bubble_data->added_count%(MSG_BUBBLE_BLOCK_COUNT+1) == MSG_BUBBLE_BLOCK_COUNT || bubble_data->bubble_index < 0) {
+               cb_cancel = true;
+       } else {
+               if (bubble_data->bubble_list) {
+                       item_data = (PMSG_APP_CONV_DATA_S) eina_list_nth(bubble_data->bubble_list, bubble_data->bubble_index);
+                       if (item_data == NULL)
+                               cb_cancel = true;
+
+               } else {
+                       cb_cancel = true;
+               }
+       }
+
+       if (cb_cancel == false) {
+               elm_scroller_gravity_get(bubble_data->scrl, NULL, &scr_g);
+               if(!scr_g)
+                       elm_scroller_gravity_set(bubble_data->scrl, 0.0, 1.0);
+
+               __add_bubble_item(bubble_data, item_data, MSG_BOX_PACK_START, NULL);
+
+               /* add date seperator */
+               PMSG_APP_CONV_DATA_S prev_data = NULL;
+               Evas_Object * layout = NULL;
+               prev_data = (PMSG_APP_CONV_DATA_S) eina_list_nth(bubble_data->bubble_list, bubble_data->bubble_index - 1);
+
+               if((!prev_data || g_strcmp0(prev_data->displayDate, item_data->displayDate) != 0)) {
+                       layout = elm_layout_add(bubble_data->box);
+                       elm_layout_file_set(layout, MSGC_UI_DEFAULT_EDJ, "composer/content/bubble/date_line");
+                       elm_object_part_text_set(layout, "elm.text.date", item_data->displayDate);
+                       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_size_hint_align_set(layout,EVAS_HINT_FILL,EVAS_HINT_FILL);
+                       evas_object_show(layout);
+
+                       elm_box_pack_start(bubble_data->box, layout);
+               }
+
+               bubble_data->realized_list = eina_list_append(bubble_data->realized_list, item_data);
+
+               bubble_data->bubble_index--;
+               bubble_data->added_count++;
+       } else {
+               elm_scroller_gravity_set(bubble_data->scrl, 0.0, 0.0);
+               evas_object_show(bubble_data->scrl);
+               if (g_isFirstLoading) {
+                       Evas_Coord height = __calc_scroller_geometry(bubble_data);
+                       if (height <= MSG_BUBBLE_CONTENT_H)
+                               elm_scroller_region_show(bubble_data->scrl, 0, 0, 0, 0);
+                       else
+                               elm_scroller_region_show(bubble_data->scrl, 0, height, 0, 0);
+
+                       g_isFirstLoading = false;
+               }
+
+               bubble_data->load_animator = NULL;
+               bubble_data->added_count = 0;
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       D_LEAVE;
+
+       return ECORE_CALLBACK_RENEW;
+
+}
+
+void msg_ui_bubble_list_load(PMSG_BUBBLE_DATA bubble_data, bool bload_draft)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !bubble_data);
+
+       msg_error_t err = MSG_SUCCESS;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
+       msg_struct_list_s conv_list;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+       int i;
+
+       err = msg_get_conversation_view_list(bubble_data->msgHandle, bubble_data->threadId, &conv_list);
+       if (err != MSG_SUCCESS)
+               return;
+
+       msg_ui_bubble_start_bubble_list(bubble_data);
+       g_isFirstLoading = true;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Bubble count = %d", conv_list.nCount);
+
+       bubble_data->bubble_count = conv_list.nCount;
+
+       if (bubble_data->bubble_count <= 0) {
+               msg_release_list_struct(&conv_list);
+               return;
+       }
+
+       int folder_id = MSG_MAX_FOLDER_ID;
+       int msg_id = 0;
+
+       for (i = 0; i < conv_list.nCount; i++) {
+               msg_get_int_value(conv_list.msg_struct_info[i], MSG_CONV_MSG_FOLDER_ID_INT, &folder_id);
+
+               if (folder_id == MSG_DRAFT_ID) {
+                       msg_get_int_value(conv_list.msg_struct_info[i], MSG_CONV_MSG_ID_INT, &msg_id);
+                       D_MSG("msg_id = %d is a draft message", msg_id);
+
+                       bubble_data->bubble_count--;
+                       bubble_data->isDraft = true;
+
+                       continue;
+               }
+
+               item_data = (PMSG_APP_CONV_DATA_S) calloc(1, sizeof(MSG_APP_CONV_DATA_S));
+               __set_msg_data_by_conv_data(bubble_data, item_data, conv_list.msg_struct_info[i]);
+
+               bubble_data->bubble_list = eina_list_append(bubble_data->bubble_list, (const void *)item_data);
+       }
+
+       /* load last draft message */
+       if (bload_draft && bubble_data->isDraft) {
+               D_MSG("last draft msgid is %d", msg_id);
+
+               cd->loading_draft = true;
+               /* change composer mode */
+               cd->composer_mode = MSG_COMPOSER_MODE_EDIT;
+               cd->msg_id = msg_id;
+               bubble_data->draft_msg_id = msg_id;
+
+               msg_ui_composer_message_init();
+               msg_ui_composer_message_load_message(cd->msg_handle, msg_id);
+               if (msg_ui_composer_message_set_loaded_data(cd, false) != COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL)
+                       msg_ui_composer_message_destroy();
+
+               cd->loading_draft = false;
+       }
+
+       if (item_data) {
+               bubble_data->msg_type = item_data->msgType;
+               if (bubble_data->msg_type == MSG_TYPE_SMS_WAPPUSH || bubble_data->msg_type == MSG_TYPE_SMS_CB || bubble_data->msg_type == MSG_TYPE_SMS_SYNCML)
+                       msg_ui_composer_editable_set(cd, EINA_FALSE);
+               else
+                       msg_ui_composer_editable_set(cd, EINA_TRUE);
+       }
+
+       msg_release_list_struct(&conv_list);
+
+       bubble_data->bubble_index = bubble_data->bubble_count - 1; // bubble_index : Message index to append on box.
+       bubble_data->load_animator = ecore_animator_add(msg_ui_bubble_item_load_cb, (const void *)bubble_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+}
+
+void msg_ui_bubble_list_data_update(PMSG_BUBBLE_DATA bubble_data)
+{
+       MSG_UI_ENTER();
+
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       Eina_List *l = NULL;
+       EINA_LIST_FOREACH (bubble_data->bubble_list, l, item_data) {
+               if (item_data) {
+                       msg_ui_bubble_fill_bubble_contents(bubble_data, item_data);
+               }
+       }
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_bubble_item_data_update(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg)
+{
+       MSG_UI_ENTER();
+
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       int msg_id = 0 ;
+       time_t msgTime = 0;
+       msg_get_int_value(msg, MSG_CONV_MSG_ID_INT, &msg_id);
+       msg_get_int_value(msg, MSG_CONV_MSG_DISPLAY_TIME_INT, (int *)(&msgTime));
+
+       Eina_List *l = NULL;
+       EINA_LIST_FOREACH (bubble_data->bubble_list, l, item_data) {
+               if (item_data) {
+                       if (item_data->msgId == msg_id) {
+                               if (bubble_data->ug_state != BUBBLE_UG_PAUSE)
+                                       msg_update_read_status(bubble_data->msgHandle, msg_id, true);
+
+                               if ( *item_data->msgTime != msgTime ){
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "item_data->msgTime = %d and msgTime = %d", *item_data->msgTime, msgTime);
+                                       msg_ui_bubble_list_item_move(bubble_data, msg);
+                               } else {
+                                       __set_msg_data_by_conv_data(bubble_data, item_data, msg);
+                                       msg_ui_bubble_fill_bubble_contents(bubble_data, item_data);
+                               }
+                               break;
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE();
+}
+
+Eina_Bool msg_ui_bubble_item_add_cb(void *data)
+{
+       D_ENTER;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !data, EINA_FALSE);
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+       BUBBLE_PACK_INFO *pack_info = NULL;
+
+       bool cb_cancel = false;
+
+       if (bubble_data->added_list) {
+               pack_info = (BUBBLE_PACK_INFO *) eina_list_nth(bubble_data->added_list, 0);
+               if (pack_info == NULL) {
+                       cb_cancel = true;
+               } else {
+                       if (bubble_data->ug_state != BUBBLE_UG_PAUSE && bubble_data->ug_state != BUBBLE_UG_DESTROY)
+                               msg_update_read_status(bubble_data->msgHandle, pack_info->add_item->msgId, true);
+               }
+
+       } else {
+               cb_cancel = true;
+       }
+
+       if (cb_cancel == true) {
+               elm_scroller_gravity_set(bubble_data->scrl, 0.0, 0.0);
+               elm_scroller_region_show(bubble_data->scrl, 0, __calc_scroller_geometry(bubble_data), 0, 0);
+
+               bubble_data->add_animator = NULL;
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       elm_scroller_gravity_set(bubble_data->scrl, 0.0, 1.0);
+
+       if (pack_info) {
+               __add_bubble_item(bubble_data, pack_info->add_item, pack_info->pack_type, pack_info->rel_obj);
+
+               bubble_data->realized_list = eina_list_append(bubble_data->realized_list, pack_info->add_item);
+
+               bubble_data->added_list = eina_list_remove(bubble_data->added_list, pack_info);
+
+               bubble_data->bubble_count++;
+
+               free(pack_info);
+       }
+
+       return ECORE_CALLBACK_RENEW;
+
+}
+
+void msg_ui_bubble_list_update_read_status(PMSG_BUBBLE_DATA bubble_data)
+{
+       MSG_UI_ENTER();
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       Eina_List *l = NULL;
+       EINA_LIST_FOREACH (bubble_data->bubble_list, l, item_data) {
+               if (item_data) {
+                       if (!item_data->bRead)
+                               msg_update_read_status(bubble_data->msgHandle, item_data->msgId, true);
+               }
+       }
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_bubble_list_append(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !bubble_data);
+
+       int msg_id = 0;
+       int folder_id = 0;
+       Eina_List *l = NULL;
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       msg_get_int_value(msg, MSG_CONV_MSG_ID_INT, &msg_id);
+       msg_get_int_value(msg, MSG_CONV_MSG_FOLDER_ID_INT, &folder_id);
+
+       if (folder_id == MSG_DRAFT_ID)
+               return;
+
+       EINA_LIST_FOREACH(bubble_data->bubble_list, l, item_data) {
+               if (item_data && item_data->msgId == msg_id)
+                       return;
+       }
+
+       PMSG_APP_CONV_DATA_S conv_data = NULL;
+       conv_data = (PMSG_APP_CONV_DATA_S) calloc(1, sizeof(MSG_APP_CONV_DATA_S));
+       __set_msg_data_by_conv_data(bubble_data, conv_data, msg);
+
+       BUBBLE_PACK_INFO *pack_info = (BUBBLE_PACK_INFO *)calloc(1, sizeof(BUBBLE_PACK_INFO));
+       pack_info->add_item = conv_data;
+       pack_info->rel_obj = NULL;
+       pack_info->pack_type = MSG_BOX_PACK_END;
+
+       bubble_data->added_list = eina_list_append(bubble_data->added_list, (const void *)pack_info);
+       bubble_data->bubble_list = eina_list_append(bubble_data->bubble_list, (const void *)conv_data);
+
+       if (bubble_data->viewmode == BUBBLE_EDIT_VIEW)
+               return;
+
+       if (bubble_data->add_animator)
+               return;
+
+       bubble_data->add_animator = ecore_animator_add(msg_ui_bubble_item_add_cb, (const void *) bubble_data);
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg)
+{
+       MSG_UI_ENTER();
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !bubble_data);
+
+       int msg_id = 0;
+       PMSG_APP_CONV_DATA_S prev_data = NULL;
+       PMSG_APP_CONV_DATA_S insert_data = NULL;
+       BUBBLE_PACK_INFO *add_pack_info = NULL;
+
+       msg_get_int_value(msg, MSG_CONV_MSG_ID_INT, &msg_id);
+
+       Eina_List *l;
+       EINA_LIST_FOREACH(bubble_data->added_list, l, add_pack_info) {
+               if (add_pack_info) {
+                       if (add_pack_info->add_item->msgId == msg_id) {
+                               bubble_data->added_list = eina_list_remove(bubble_data->added_list, (const void *)add_pack_info);
+                               free(add_pack_info);
+                               break;
+                       }
+               }
+       }
+
+       EINA_LIST_FOREACH(bubble_data->bubble_list, l, prev_data) {
+               if (prev_data) {
+                       if (prev_data->msgId == msg_id) {
+                               if (eina_list_data_find(bubble_data->realized_list, (const void *)prev_data)) {
+                                       elm_box_unpack(bubble_data->box, prev_data->ly);
+                                       evas_object_hide(prev_data->ly);
+                                       evas_object_del(prev_data->ly);
+
+                                       bubble_data->realized_list = eina_list_remove(bubble_data->realized_list, (const void *)prev_data);
+                               }
+
+                               bubble_data->bubble_list = eina_list_remove(bubble_data->bubble_list, (const void *)prev_data);
+
+                               bubble_data->bubble_count--;
+
+                               if (prev_data) {
+                                       if (prev_data->msgTime)
+                                               free(prev_data->msgTime);
+
+                                       free(prev_data);
+                               }
+                               break;
+                       }
+               }
+       }
+
+       insert_data = (PMSG_APP_CONV_DATA_S) calloc(1, sizeof(MSG_APP_CONV_DATA_S));
+       __set_msg_data_by_conv_data(bubble_data, insert_data, msg);
+
+       BUBBLE_PACK_INFO *pack_info = (BUBBLE_PACK_INFO *)calloc(1, sizeof(BUBBLE_PACK_INFO));
+       pack_info->add_item = insert_data;
+       pack_info->rel_obj = NULL;
+       pack_info->pack_type = MSG_BOX_PACK_END;
+
+       bubble_data->bubble_list = eina_list_append(bubble_data->bubble_list, (const void *)insert_data);
+       bubble_data->added_list = eina_list_append(bubble_data->added_list, (const void *)pack_info);
+
+
+       if (bubble_data->viewmode == BUBBLE_EDIT_VIEW || bubble_data->ug_state == BUBBLE_UG_PAUSE)
+               return;
+
+       if (bubble_data->add_animator)
+               return;
+
+       bubble_data->add_animator = ecore_animator_add(msg_ui_bubble_item_add_cb, (const void *) bubble_data);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_bubble_delete_msg(PMSG_BUBBLE_DATA bubble_data, int msg_id)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !bubble_data);
+       int err;
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       bool isDraft = msg_ui_composer_common_is_send_possible((MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data);
+
+       if (bubble_data->bubble_count == 1 && isDraft == false) {
+               bubble_data->bubble_count = 0;
+               err = msg_delete_thread_message_list(bubble_data->msgHandle, bubble_data->threadId, false);
+       } else {
+               err = msg_delete_message(bubble_data->msgHandle, msg_id);
+               msg_ui_bubble_list_load(bubble_data, false);
+       }
+
+       if (err != MSG_SUCCESS) {
+               msg_ui_bubble_show_notify(bubble_data, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+       } else {
+               msg_ui_bubble_show_deleted_info(bubble_data);
+       }
+
+       return;
+}
+
+void msg_ui_bubble_refresh_msg_lock_status(PMSG_BUBBLE_DATA bubble_data, int msg_id)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !bubble_data);
+       PMSG_APP_CONV_DATA_S conv_data = NULL;
+       Eina_List *l;
+       bool is_found = false;
+
+       EINA_LIST_FOREACH(bubble_data->bubble_list, l, conv_data) {
+               if (conv_data) {
+                       if (msg_id == conv_data->msgId) {
+                               conv_data->bProtected = !conv_data->bProtected;
+                               msg_ui_bubble_fill_bubble_contents(bubble_data, conv_data);
+                               is_found = !is_found;
+                               break;
+                       }
+               }
+       }
+
+       if (!is_found)
+               D_MSG("given msg_id(%d) is not found within current bubble data", msg_id);
+
+       return;
+}
+
diff --git a/composer/src/bubble/msg-ui-composer-bubble-main.c b/composer/src/bubble/msg-ui-composer-bubble-main.c
new file mode 100755 (executable)
index 0000000..caa33f0
--- /dev/null
@@ -0,0 +1,437 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "msg-ui-composer-bubble.h"
+#include "msg-ui-composer-data.h"
+
+static int _parse_bundle_data(PMSG_BUBBLE_DATA bubble_data, service_h svc_handle)
+{
+       D_ENTER;
+
+       if (!svc_handle)
+               return -1;
+
+       char *thread_id = NULL;
+       msg_struct_t threadInfo = NULL;
+       int err;
+
+       service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, &thread_id);
+       bubble_data->threadId = thread_id?(msg_thread_id_t)atoi(thread_id):0;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread ID from bundle data=%d", bubble_data->threadId);
+
+       msg_struct_list_s addrList;
+       int i = 0;
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+
+       err = msg_get_address_list(bubble_data->msgHandle, bubble_data->threadId, &addrList);
+       if (err == MSG_SUCCESS) {
+               bubble_data->addr_list.addr_cnt = addrList.nCount;
+
+               for (i =0; i<addrList.nCount; i++) {
+                       msg_get_int_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &bubble_data->addr_list.addr_info[i].contact_id);
+                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, bubble_data->addr_list.addr_info[i].name, DEF_THREAD_NAME_LEN);
+                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, bubble_data->addr_list.addr_info[i].address, DEF_THREAD_ADDR_LEN);
+               }
+
+               msg_release_list_struct(&addrList);
+
+       } else {
+               D_MSG("[ERROR] msg_get_address_list return error [%d]", err);
+       }
+
+       threadInfo = msg_create_struct(MSG_STRUCT_THREAD_INFO);
+       err = msg_get_thread(bubble_data->msgHandle, bubble_data->threadId, threadInfo);
+       if (err == MSG_SUCCESS)
+               msg_get_str_value(threadInfo, MSG_THREAD_NAME_STR, bubble_data->threadName, DEF_THREAD_NAME_LEN);
+       else
+               D_MSG("[ERROR] msg_get_thread return error [%d]", err);
+
+       msg_release_struct(&threadInfo);
+
+       D_LEAVE;
+       return 0;
+}
+
+static int _parse_bundle_with_msg_id(PMSG_BUBBLE_DATA bubble_data, int msgId)
+{
+       D_ENTER;
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       msg_struct_list_s addrList;
+       int i = 0;
+
+       D_MSG("Message ID from bundle = %d", msgId);
+
+       err = msg_get_message(bubble_data->msgHandle, msgId, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_get_message is failed err = %d", err);
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return -1;
+       }
+
+       msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, (int *)(&bubble_data->threadId));
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread ID from bundle data=%d", bubble_data->threadId);
+
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+       msg_get_address_list(bubble_data->msgHandle, bubble_data->threadId, &addrList);
+
+       bubble_data->addr_list.addr_cnt = addrList.nCount;
+
+       for (i=0; i<addrList.nCount; i++) {
+               /** contact ID & display name */
+               int contact_id = 0;
+               msg_get_int_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+
+               if (contact_id > 0) {
+                       bubble_data->addr_list.addr_info[i].contact_id = contact_id;
+                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, bubble_data->addr_list.addr_info[i].name, DEF_THREAD_NAME_LEN);
+               } else {
+                       bubble_data->addr_list.addr_info[i].contact_id = 0;
+               }
+
+               /** addresss */
+               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, bubble_data->addr_list.addr_info[i].address, DEF_THREAD_ADDR_LEN);
+       }
+
+       msg_release_list_struct(&addrList);
+
+       if (bubble_data->addr_list.addr_info[0].contact_id > 0)
+               snprintf(bubble_data->threadName, DEF_THREAD_NAME_LEN, "%s", bubble_data->addr_list.addr_info[0].name);
+       else
+               snprintf(bubble_data->threadName, DEF_THREAD_NAME_LEN, "%s", bubble_data->addr_list.addr_info[0].address);
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       D_LEAVE;
+
+       return 0;
+}
+
+
+PMSG_BUBBLE_DATA msg_ui_bubble_init_bubble_data(msg_handle_t msgHandle, void *callback_data)
+{
+       D_ENTER;
+
+       PMSG_BUBBLE_DATA bubble_data = NULL;
+
+       bubble_data = (PMSG_BUBBLE_DATA)calloc(1, sizeof(MSG_BUBBLE_DATA));
+
+       bubble_data->msgHandle = msgHandle;
+
+       bubble_data->viewmode = BUBBLE_NORMAL_VIEW;
+       bubble_data->ug_state = BUBBLE_UG_START;
+
+       if (callback_data)
+               bubble_data->callback_data = callback_data;
+
+       D_LEAVE;
+       return bubble_data;
+}
+
+void msg_ui_bubble_deinit_bubble_data(void *data)
+{
+       D_ENTER;
+
+       if (!data)
+               return;
+
+       PMSG_BUBBLE_DATA bubble_data = data;
+
+       evas_object_smart_callback_del(bubble_data->scrl, "edge,top", msg_ui_bubble_scroll_edge_top_cb);
+
+       msg_ui_bubble_init_bubble_list(bubble_data);
+
+       if (bubble_data->title_menu_opened)
+               msg_ui_bubble_close_title_menu_genlist(bubble_data);
+
+       if (bubble_data->date_ptn_default) {
+               free(bubble_data->date_ptn_default);
+               bubble_data->date_ptn_default = NULL;
+       }
+
+       if (bubble_data->date_ptn_year) {
+               free(bubble_data->date_ptn_year);
+               bubble_data->date_ptn_year = NULL;
+       }
+
+       if (bubble_data->time_12h_ptn) {
+               free(bubble_data->time_12h_ptn);
+               bubble_data->time_12h_ptn = NULL;
+       }
+
+       if (bubble_data->time_24h_ptn) {
+               free(bubble_data->time_24h_ptn);
+               bubble_data->time_24h_ptn = NULL;
+       }
+
+       if (bubble_data->del_thread) {
+               if (ecore_thread_cancel(bubble_data->del_thread) == EINA_FALSE) {
+                       D_MSG("ecore_thread_cancel is done.");
+               } else {
+                       D_MSG("ecore_thread_cancel is failed.");
+               }
+
+               bubble_data->del_thread = NULL;
+       }
+
+       if (bubble_data->resend_idler) {
+               ecore_idler_del(bubble_data->resend_idler);
+               bubble_data->resend_idler = NULL;
+       }
+
+       if (bubble_data->retrieve_idler) {
+               ecore_idler_del(bubble_data->retrieve_idler);
+               bubble_data->retrieve_idler = NULL;
+       }
+       if (bubble_data->bubble_layout) {
+               evas_object_del(bubble_data->bubble_layout);
+               bubble_data->bubble_layout = NULL;
+       }
+       if (bubble_data->title_button) {
+               evas_object_del(bubble_data->title_button);
+               bubble_data->title_button = NULL;
+       }
+
+       if (vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, msg_ui_bubble_timezone_change_cb) < 0) {
+               D_EMSG("Fail to remove vconf CB with [%s]", VCONFKEY_SYSTEM_TIME_CHANGED);
+       }
+
+       free(bubble_data);
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_parse_bubble_data(PMSG_BUBBLE_DATA bubble_data, service_h svc_handle)
+{
+       char *key_type = NULL;
+
+       service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, &key_type);
+       if (key_type && g_strcmp0(key_type, MSG_BUNDLE_VALUE_MSG_ID) == 0) { /* From logs */
+               int msg_id = 0;
+               char *msg_id_str = NULL;
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, &msg_id_str);
+
+               if (!msg_id_str)
+                       return;
+
+               msg_id = atoi(msg_id_str);
+               _parse_bundle_with_msg_id(bubble_data, msg_id);
+
+       } else {
+               _parse_bundle_data(bubble_data, svc_handle);
+       }
+}
+
+void msg_ui_bubble_start_bubble_list(PMSG_BUBBLE_DATA bubble_data)
+{
+       D_ENTER;
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, bubble_data == NULL, "PMSG_BUBBLE_DATA is NULL");
+
+       msg_ui_bubble_init_bubble_list(bubble_data);
+
+       bubble_data->box = elm_box_add(bubble_data->bubble_layout);
+       evas_object_size_hint_weight_set(bubble_data->box, EVAS_HINT_EXPAND, 0.0);
+       elm_object_content_set(bubble_data->scrl, bubble_data->box);
+
+       if (bubble_data->viewmode == BUBBLE_EDIT_VIEW) {
+               msg_ui_bubble_change_normal_navi_control(bubble_data);
+       }
+
+       bubble_data->viewmode = BUBBLE_NORMAL_VIEW;
+
+       /* To avoid a fluctuation of bubble list on split view. */
+       //elm_scroller_region_show(bubble_data->scrl, 0, 0, 0, 0);
+
+       D_LEAVE;
+}
+
+void msg_ui_bubble_init_bubble_list(PMSG_BUBBLE_DATA bubble_data)
+{
+       D_ENTER;
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, bubble_data == NULL, "PMSG_BUBBLE_DATA is NULL");
+
+       PMSG_APP_CONV_DATA_S item_data = NULL;
+       BUBBLE_PACK_INFO *pack_info = NULL;
+
+       bubble_data->bubble_count = 0;
+       bubble_data->bubble_index = 0;
+       bubble_data->added_count = 0;
+       bubble_data->check_cnt = 0;
+       bubble_data->copy_id = 0;
+       bubble_data->resend_id = 0;
+       bubble_data->retrieve_id = 0;
+       bubble_data->draft_msg_id = 0;
+
+       if (bubble_data->load_animator) {
+               ecore_animator_del(bubble_data->load_animator);
+               bubble_data->load_animator = NULL;
+       }
+
+       if (bubble_data->add_animator) {
+               ecore_animator_del(bubble_data->add_animator);
+               bubble_data->add_animator = NULL;
+       }
+
+       if (bubble_data->box && bubble_data->scrl) {
+               elm_object_content_unset(bubble_data->scrl);
+               evas_object_del(bubble_data->box);
+               bubble_data->box = NULL;
+       }
+
+       EINA_LIST_FREE(bubble_data->bubble_list, item_data) {
+               if (item_data) {
+                       if (item_data->msgTime)
+                               free(item_data->msgTime);
+
+                       free(item_data);
+               }
+       }
+
+       EINA_LIST_FREE(bubble_data->added_list, pack_info) {
+               if (pack_info)
+                       free(pack_info);
+       }
+
+       bubble_data->realized_list = eina_list_free(bubble_data->realized_list);
+       bubble_data->chk_list = eina_list_free(bubble_data->chk_list);
+
+       D_LEAVE;
+}
+
+Evas_Object *msg_ui_bubble_create_toolbar(void *user_data)
+{
+       if (!user_data) {
+               D_EMSG("[ERROR] user_data is NULL");
+               return NULL;
+       }
+
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)user_data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S*)bubble_data->callback_data;
+
+       Evas_Object *toolbar = elm_toolbar_add(cd->navi_bar);
+
+       if (!toolbar) {
+               D_EMSG("toolbar is NULL");
+               return NULL;
+       }
+
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+       elm_object_style_set(toolbar, "naviframe");
+
+       return toolbar;
+}
+
+Evas_Object *msg_ui_bubble_create_view(Evas_Object *parent, void *user_data)
+{
+       if (!parent || !user_data)
+               return NULL;
+
+       PMSG_BUBBLE_DATA bubble_data = user_data;
+
+       Evas_Object *bubble_layout = NULL;
+       Evas_Object *scroller = NULL;
+
+       bubble_layout = elm_layout_add(parent);
+       elm_layout_theme_set(bubble_layout, "layout", "application", "noindicator");
+       evas_object_size_hint_weight_set(bubble_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(bubble_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(bubble_layout);
+
+       scroller = elm_scroller_add(parent);
+       evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+       elm_object_part_content_set(bubble_layout, "elm.swallow.content", scroller);
+       evas_object_smart_callback_add(scroller, "scroll,drag,start", msg_ui_bubble_scroll_drag_start_cb, user_data);
+       evas_object_event_callback_add(bubble_layout, EVAS_CALLBACK_MOUSE_UP, msg_ui_bubble_main_layout_clicked_cb, bubble_data->callback_data);
+
+       bubble_data->parent_layout = parent;
+       bubble_data->bubble_layout = bubble_layout;
+       bubble_data->scrl = scroller;
+
+       return bubble_layout;
+}
+
+void msg_ui_bubble_start_view(PMSG_BUBBLE_DATA bubble_data)
+{
+       if (!bubble_data)
+               return;
+
+       msg_ui_bubble_reg_bubble_cb_func(bubble_data);
+       msg_ui_bubble_get_locale(bubble_data);
+       msg_ui_bubble_get_time_format(bubble_data);
+       bubble_data->time_12h_ptn = msg_common_get_date_best_pattern(bubble_data->locale, MSG_UI_TIME_PATTERN_12H);
+       bubble_data->time_24h_ptn = msg_common_get_date_best_pattern(bubble_data->locale, MSG_UI_TIME_PATTERN_24H);
+       bubble_data->date_ptn_default = msg_common_get_date_best_pattern(bubble_data->locale, MSG_UI_DATE_PATTERN_DEFAULT);
+       bubble_data->date_ptn_year = msg_common_get_date_best_pattern(bubble_data->locale, MSG_UI_DATE_PATTERN_YEAR);
+
+       if (vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, msg_ui_bubble_timezone_change_cb, (void *)bubble_data) < 0) {
+               D_EMSG("Fail to register vconf CB with [%s]", VCONFKEY_SYSTEM_TIME_CHANGED);
+       }
+
+#ifdef _BUBBLE_FLICK_EVENT
+       evas_object_event_callback_add(bubble_data->bubble_layout, EVAS_CALLBACK_MOUSE_DOWN, msg_ui_bubble_layout_mouse_down_cb, (const void*)bubble_data);
+#endif
+       msg_ui_bubble_list_load(bubble_data, true);
+}
+
+Evas_Object *msg_ui_bubble_toolbar_btn_create(Evas_Object *parent, char *icon_path, char *button_text)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent == NULL");
+
+       Evas_Object *button = elm_button_add(parent);
+
+       evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       elm_object_style_set(button, "naviframe_control/default");
+
+       if (icon_path) {
+               Evas_Object *icon = elm_icon_add(button);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, icon_path);
+               elm_object_content_set(button,icon);
+               evas_object_size_hint_min_set(icon, 50, 50);
+               evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       } else if (button_text) {
+               elm_object_text_set(button, button_text);
+       }
+       evas_object_show(button);
+
+       D_LEAVE;
+       return button;
+}
+
+void msg_ui_bubble_reg_bubble_cb_func(PMSG_BUBBLE_DATA pData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, pData == NULL, "PMSG_BUBBLE_DATA is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+
+       msg_reg_storage_change_callback(pData->msgHandle, &msg_ui_bubble_msg_storage_change_cb, (void *)cd);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
diff --git a/composer/src/bubble/msg-ui-composer-bubble-util.c b/composer/src/bubble/msg-ui-composer-bubble-util.c
new file mode 100755 (executable)
index 0000000..8b82b2d
--- /dev/null
@@ -0,0 +1,601 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "msg-ui-composer-bubble.h"
+#include "msg-ui-composer-main.h"
+#include "msg-ui-composer-common.h"
+#include <regex.h>
+#include "appsvc.h"
+#include <status.h>
+#include <time.h>
+
+void msg_ui_bubble_launch_voice_call(const char *call_num)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !call_num);
+
+       char *num_str = msg_ui_bubble_get_trimmed_number(call_num);
+       service_h svc_handle;
+       char telnum[255] = {0,};
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               service_set_operation(svc_handle, SERVICE_OPERATION_CALL);
+
+               if (num_str) {
+                       snprintf(telnum, sizeof(telnum), "tel:%s", num_str);     /* Number to make a call */
+                       service_set_uri(svc_handle, telnum);
+               }
+               service_send_launch_request(svc_handle, NULL, NULL);
+               service_destroy(svc_handle);
+       }
+       if (num_str)
+               free(num_str);
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_bubble_launch_video_call(const char *call_num)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !call_num);
+
+       char *num_str = msg_ui_bubble_get_trimmed_number(call_num);
+
+       service_h svc_handle = NULL;
+       char tel_num[DEF_BUF_LEN] = {0,};
+       char contact_id[DEF_BUF_LEN_D] = {0,};
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/vt");
+
+               if (num_str) {
+                       snprintf(tel_num, sizeof(tel_num), "tel:%s", num_str);
+                       service_set_uri(svc_handle, tel_num);
+               }
+               snprintf(contact_id, sizeof(contact_id), "%d", -1);
+               service_add_extra_data(svc_handle, "ctindex", contact_id);
+
+               service_send_launch_request(svc_handle, NULL, NULL);
+               service_destroy(svc_handle);
+       }
+
+       if (num_str) {
+               free(num_str);
+               num_str = NULL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+char *msg_ui_bubble_get_trimmed_number(const char *org_num)
+{
+       char num_str[DEF_BUF_LEN_L] = { 0, };
+       int i = 0, idx = 0;
+
+       if (org_num[0] == '+') {
+               num_str[0] = '+';
+               i++;
+               idx++;
+       }
+
+       while (org_num[i] && i < strlen(org_num)) {
+               if (g_ascii_isdigit(org_num[i])) {
+                       num_str[idx] = org_num[i];
+                       idx++;
+               }
+               i++;
+       }
+
+       return strdup(num_str);
+}
+
+static void __popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_BUBBLE_DATA bubbleData = (PMSG_BUBBLE_DATA) data;
+
+       if (bubbleData->popup) {
+               evas_object_del(bubbleData->popup);
+               bubbleData->popup = NULL;
+       }
+
+       if (bubbleData->select_info) {
+               evas_object_del(bubbleData->select_info);
+               bubbleData->select_info = NULL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_bubble_show_notify(PMSG_BUBBLE_DATA bubbleData, char *msg)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !bubbleData, "PMSG_BUBBLE_DATA is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubbleData->callback_data;
+
+       Evas_Object *popup = NULL;
+
+       if (bubbleData->popup) {
+               evas_object_del(bubbleData->popup);
+               bubbleData->popup = NULL;
+       }
+
+       popup = elm_popup_add(cd->main_window);
+       bubbleData->popup = popup;
+
+       evas_object_size_hint_weight_set(bubbleData->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(bubbleData->popup, msg);
+
+       evas_object_smart_callback_add(bubbleData->popup, "timeout", __popup_response_cb, bubbleData);
+       evas_object_smart_callback_add(bubbleData->popup, "block,clicked", __popup_response_cb, bubbleData);
+
+       elm_popup_timeout_set(bubbleData->popup, 1.0);
+       evas_object_show(bubbleData->popup);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_delete_progress_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
+
+       bubble_data->del_cancel = true;
+}
+
+Evas_Object* msg_ui_bubble_show_notify_with_progressbar(PMSG_BUBBLE_DATA pData, int count)
+{
+       D_ENTER;
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !pData, NULL);
+
+       Evas_Object *popup;
+       Evas_Object *progressbar;
+       Evas_Object *box;
+       Evas_Object *label;
+       Evas_Object *cancel_btn;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+       char buf[DEF_BUF_LEN_S] = { 0, };
+
+       popup = elm_popup_add(cd->main_window);
+
+       label = elm_label_add(popup);
+       snprintf(buf, sizeof(buf), "%s", dgettext("sys_string", "IDS_COM_POP_DELETING"));
+       elm_object_text_set(label, buf);
+       evas_object_show(label);
+
+       progressbar = elm_progressbar_add(popup);
+       elm_object_style_set(progressbar, "list_progress");
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_value_set(progressbar, 0.0);
+       evas_object_show(progressbar);
+
+       box = elm_box_add(popup);
+       elm_box_pack_end(box, label);
+       elm_box_pack_end(box, progressbar);
+       evas_object_show(box);
+
+       cancel_btn = elm_button_add(popup);
+       elm_object_style_set(cancel_btn, "popup_button/default");
+       elm_object_text_set(cancel_btn, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button1", cancel_btn);
+       evas_object_smart_callback_add(cancel_btn, "clicked", __msg_delete_progress_cancel_clicked_cb, pData);
+
+       elm_object_content_set(popup, box);
+       evas_object_show(popup);
+
+       pData->progressbar = progressbar;
+       pData->progresslabel = label;
+
+       D_LEAVE;
+       return popup;
+}
+
+void msg_ui_bubble_show_select_info(PMSG_BUBBLE_DATA pData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pData);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+
+       if (!pData->select_info) {
+               pData->select_info = elm_notify_add(cd->content_layout);
+               elm_notify_align_set(pData->select_info, ELM_NOTIFY_ALIGN_FILL, 1.0);
+
+               pData->selectioninfo_layout = elm_layout_add(pData->select_info);
+               elm_layout_theme_set(pData->selectioninfo_layout, "standard", "selectioninfo", "center_text");
+               elm_object_content_set(pData->select_info, pData->selectioninfo_layout);
+       }
+
+       Evas_Object *del_btn = elm_object_item_part_content_get(cd->navi_it, "toolbar_button1");
+
+       if (pData->check_cnt <= 0) {
+               evas_object_hide(pData->select_info);
+               elm_object_disabled_set(del_btn, EINA_TRUE);
+       } else {
+               char text[128] = { '0', };
+               snprintf(text, sizeof(text), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), pData->check_cnt);
+
+               edje_object_part_text_set(_EDJ(pData->selectioninfo_layout), "elm.text", text);
+               evas_object_show(pData->select_info);
+
+               elm_object_disabled_set(del_btn, EINA_FALSE);
+       }
+}
+
+void msg_ui_bubble_show_deleted_info(PMSG_BUBBLE_DATA pData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pData);
+
+       if (pData->select_info) {
+               evas_object_del(pData->select_info);
+               pData->select_info = NULL;
+       }
+
+       msg_ui_bubble_status_message_post(pData, dgettext("sys_string", "IDS_COM_POP_DELETED"));
+
+       bool isDraft = msg_ui_composer_common_is_send_possible((MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data);
+
+       if (pData->bubble_count == 0 && isDraft == false) {
+               service_h svc_handle;
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       D_EMSG("service_create() is failed !!");
+               } else {
+                       char buf[DEF_BUF_LEN_S] = {0,};
+
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RESULT, MSG_BUNDLE_VALUE_DEL_ALL);
+                       snprintf(buf, sizeof(buf), "%d", pData->threadId);
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, buf);
+
+                       msg_ui_composer_bubble_del_all(pData->callback_data, svc_handle);
+
+                       service_destroy(svc_handle);
+               }
+       }
+}
+
+void msg_ui_bubble_status_message_post(PMSG_BUBBLE_DATA pData, char *msg)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pData);
+
+       if (pData->popup) {
+               evas_object_del(pData->popup);
+               pData->popup = NULL;
+       }
+
+       status_message_post(msg);
+}
+
+
+void msg_ui_bubble_contact_info_update(PMSG_BUBBLE_DATA pData)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pData);
+
+       msg_error_t err = MSG_SUCCESS;;
+       int thread_id = pData->threadId;;
+       msg_struct_list_s addrList;
+       char display_name[DEF_THREAD_NAME_LEN+1] = {0,};
+       msg_struct_list_s peerList = {0, };
+       int i = 0;
+
+       msg_struct_t sortRule = msg_create_struct(MSG_STRUCT_SORT_RULE);
+       msg_set_int_value(sortRule, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+       msg_set_bool_value(sortRule, MSG_SORT_RULE_ACSCEND_BOOL, false);
+
+       err = msg_get_thread_view_list(pData->msgHandle, sortRule, &peerList);
+       msg_release_struct(&sortRule);
+
+       for (i = 0; i < peerList.nCount; i++) {
+               int tid = 0;
+               msg_get_int_value(peerList.msg_struct_info[i], MSG_THREAD_ID_INT, &tid);
+               if (thread_id == tid) {
+                       msg_get_str_value(peerList.msg_struct_info[i], MSG_THREAD_NAME_STR, display_name, DEF_THREAD_NAME_LEN);
+                       break;
+               }
+       }
+
+       /* update thread Name */
+       bzero(pData->threadName, sizeof(pData->threadName));
+       if (display_name[0] != '\0')
+               snprintf(pData->threadName, DEF_THREAD_NAME_LEN, "%s", display_name);
+
+       /* update address list */
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+
+       err = msg_get_address_list(pData->msgHandle, thread_id, &addrList);
+       if (err == MSG_SUCCESS) {
+               pData->addr_list.addr_cnt = addrList.nCount;
+
+               for (i=0; i<addrList.nCount; i++) {
+                       msg_get_int_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &pData->addr_list.addr_info[i].contact_id);
+                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, pData->addr_list.addr_info[i].name, DEF_THREAD_NAME_LEN);
+                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, pData->addr_list.addr_info[i].address, DEF_THREAD_ADDR_LEN);
+               }
+
+               msg_release_list_struct(&addrList);
+       } else {
+               D_MSG("[ERROR] msg_get_address_list return error [%d]", err);
+               goto CONTACT_UPDATE_LEAVE;
+       }
+
+       /*change title button */
+       if (pData->addr_list.addr_cnt == 1) {
+               if (pData->addr_list.addr_info[0].name[0] != '\0')
+                       elm_object_text_set(pData->title_button, pData->addr_list.addr_info[0].name);
+               else
+                       elm_object_text_set(pData->title_button, pData->addr_list.addr_info[0].address);
+       } else if (pData->addr_list.addr_cnt > 1) {
+               char title_text[DEF_BUF_LEN+1] = {0,};
+
+               if (pData->addr_list.addr_info[0].name[0] != '\0')
+                       snprintf(title_text, sizeof(title_text), "%s +%d", pData->addr_list.addr_info[0].name, pData->addr_list.addr_cnt-1);
+               else
+                       snprintf(title_text, sizeof(title_text), "%s +%d", pData->addr_list.addr_info[0].address, pData->addr_list.addr_cnt-1);
+
+               elm_object_text_set(pData->title_button, title_text);
+       } else {
+               elm_object_text_set(pData->title_button, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+       }
+
+
+CONTACT_UPDATE_LEAVE :
+       msg_release_list_struct(&peerList);
+       D_LEAVE;
+       return;
+}
+
+unsigned char msg_ui_bubble_check_word_type(char *txt)
+{
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, !txt, WORD_TYPE_NONE, "Message text is NULL!");
+
+       int index = 0, numCnt = 0;
+
+       if (txt[0] == '+')
+               index++;
+
+       while (g_ascii_isdigit(txt[index]) || txt[index] == '-') {
+               index++;
+               numCnt++;
+
+               if (numCnt > 2) {
+                       if (strlen(txt) <= 20)
+                               return WORD_TYPE_NUM;
+                       else
+                               return WORD_TYPE_NONE;
+               }
+       }
+
+       regex_t reg_email;
+       int ret;
+
+       ret = regcomp(&reg_email, "^([0-9a-z_-][0-9a-z._-]*)@([0-9a-z_-]+)(.[0-9a-z_-]+){1,2}$", REG_EXTENDED | REG_ICASE);
+       if (!ret) {
+               ret = regexec(&reg_email, (const char *)txt, 0, NULL, 0);
+               regfree(&reg_email);
+
+               if(ret == 0)
+                       return WORD_TYPE_EMAIL;
+       }
+
+       return WORD_TYPE_NONE;
+}
+
+void msg_ui_bubble_get_time_format(PMSG_BUBBLE_DATA pData)
+{
+       int timeformat = msg_common_get_timeformat();
+
+       if (timeformat == MSG_TIME_FORMAT_UNKNOWN)
+               pData->time_fmt = MSG_TIME_FORMAT_12H;
+       else
+               pData->time_fmt = timeformat;
+
+       D_MSG("%s", pData->time_fmt == MSG_TIME_FORMAT_24H ? "TIME FORMAT = 24h" : "TIME FORMAT = 12h");
+}
+
+void msg_ui_bubble_get_locale(PMSG_BUBBLE_DATA pData)
+{
+       const char *locale;
+
+       locale = msg_common_get_default_locale();
+
+       if (locale) {
+               strncpy(pData->locale, locale, sizeof(pData->locale) - 1);
+       }
+
+       D_MSG("Locale = %s", pData->locale);
+}
+
+char *msg_ui_bubble_create_export_folder_name(void)
+{
+       struct tm t;
+       time_t cur_time;
+       cur_time = (time_t)time(NULL);
+
+       char folder_name[DEF_BUF_LEN+1] = {0,};
+
+       localtime_r(&cur_time, &t);
+
+       // folder name format (yyyymmddHHMMSS)
+       snprintf(folder_name, sizeof(folder_name), "Message_%04d%02d%02d%02d%02d%02d",\
+                               t.tm_year+1900, t.tm_mon+1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
+       D_MSG("export folder name [%s]", folder_name);
+
+       return strdup(folder_name);
+}
+
+char *msg_ui_bubble_create_export_file_name(void)
+{
+       struct tm t;
+       time_t cur_time;
+       cur_time = (time_t) time(NULL);
+       char file_name[DEF_BUF_LEN+1] = {0,};
+
+       localtime_r(&cur_time, &t);
+
+       // folder name format (yyyymmddHHMM.txt)
+       snprintf(file_name, sizeof(file_name), "Message_%04d%02d%02d%02d%02d.txt",\
+                               t.tm_year+1900, t.tm_mon+1, t.tm_mday, t.tm_hour, t.tm_min);
+       D_MSG("export folder name [%s]", file_name);
+
+       return strdup(file_name);
+}
+
+char *msg_ui_bubble_create_export_folder(PMSG_BUBBLE_DATA pData, const char* folder_name)
+{
+       char folder_path[DEF_BUF_LEN+1] = {0,};
+
+       if (ecore_file_exists(MSG_BUBBLE_EXPORT_DIR) == EINA_FALSE) {
+               if(ecore_file_mkdir(MSG_BUBBLE_EXPORT_DIR) == EINA_FALSE) {
+                       return NULL;
+               }
+       }
+
+       if (folder_name) {
+               if (pData->backup_type == BUBBLE_BACKUP_TYPE_SD)
+                       snprintf(folder_path, sizeof(folder_path), MSG_BUBBLE_EXPORT_DIR"/%s", folder_name);
+               else if (pData->backup_type == BUBBLE_BACKUP_TYPE_EMAIL)
+                       snprintf(folder_path, sizeof(folder_path), MSG_BUBBLE_EXPORT_TEMPDIR"/%s", folder_name);
+               else
+                       return NULL;
+               D_MSG("export folder name [%s]", folder_path);
+
+               if (ecore_file_exists(folder_path) == EINA_FALSE) {
+                       if(ecore_file_mkdir(folder_path) == EINA_FALSE)
+                               return NULL;
+               }
+       } else {
+               return NULL;
+       }
+
+       return strdup(folder_path);
+}
+
+char *msg_ui_bubble_create_export_string(PMSG_BUBBLE_DATA pData, msg_struct_t msg)
+{
+       D_ENTER;
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, !pData || !msg, NULL, "Message text is NULL!");
+
+       int folder_id;
+       time_t msgtime = 0;
+       int msg_type;
+       char *date_str = NULL;
+       char *time_str = NULL;
+       char sender[DEF_BUF_LEN+1] = {0,};
+       char subject[DEF_BUF_LEN_S+1] = {0,};
+       char thumbnail_path[DEF_BUF_LEN+1] = {0,};
+       char msg_text[DEF_BUF_LEN_L+1] = {0,};
+
+       char export_str[2*DEF_BUF_LEN_L+1] = {0,};
+
+       /* determine sender name & skip draft box message */
+       msg_get_int_value(msg, MSG_CONV_MSG_FOLDER_ID_INT, &folder_id);
+       if (folder_id == MSG_INBOX_ID) {
+               if (pData->addr_list.addr_cnt == 1) {
+                       if (pData->addr_list.addr_info[0].contact_id > 0 && pData->addr_list.addr_info[0].name[0] != '\0')
+                               snprintf(sender, sizeof(sender), "%s", pData->addr_list.addr_info[0].name);
+                       else if (pData->addr_list.addr_info[0].address[0] != '\0')
+                               snprintf(sender, sizeof(sender), "%s", pData->addr_list.addr_info[0].address);
+                       else
+                               snprintf(sender, sizeof(sender), dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+               }
+       } else if (folder_id == MSG_OUTBOX_ID || folder_id == MSG_SENTBOX_ID) {
+               snprintf(sender, sizeof(sender), "%s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_ME"));
+       } else {
+               D_EMSG("invalid_folder_id [%d]", folder_id);
+               snprintf(sender, sizeof(sender), "%s", dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+       }
+
+       /* Message sent / recieved time */
+       msg_get_int_value(msg, MSG_CONV_MSG_DISPLAY_TIME_INT, (int *)&msgtime);
+       date_str = msg_common_get_formatted_date(pData->locale, pData->date_ptn_year, &msgtime);
+       time_str = msg_common_get_formatted_date(pData->locale, pData->time_12h_ptn, &msgtime);
+
+       /* subject */
+       msg_get_int_value(msg, MSG_CONV_MSG_TYPE_INT, &msg_type);
+       if (msg_type == MSG_TYPE_MMS || msg_type == MSG_TYPE_MMS_NOTI) {
+               msg_get_str_value(msg, MSG_CONV_MSG_SUBJECT_STR, subject, DEF_BUF_LEN_S);
+               msg_get_str_value(msg, MSG_CONV_MSG_IMAGE_THUMB_PATH_STR, thumbnail_path, DEF_BUF_LEN);
+               // Todo : sound path
+       }
+
+       /* msg text */
+       msg_get_str_value(msg, MSG_CONV_MSG_TEXT_STR, msg_text, DEF_BUF_LEN_L);
+
+       // (DateTime,sender: [Subject] body text)
+       if (msg_type > MSG_TYPE_INVALID && msg_type < MSG_TYPE_MMS) {
+               snprintf(export_str, sizeof(export_str), "%s %s, %s: %s\n", date_str, time_str, sender, msg_text);
+       } else if (msg_type >= MSG_TYPE_MMS) {
+               if (subject[0] !='\0' && thumbnail_path[0] != '\0') {
+                       snprintf(export_str, sizeof(export_str), "%s %s, %s: [%s] %s, %s\n", date_str, time_str, sender, subject, dgettext("sys_string", "IDS_COM_OPT_IMAGE"), msg_text);
+               } else if (subject[0] !='\0') {
+                       snprintf(export_str, sizeof(export_str), "%s %s, %s: [%s] %s\n", date_str, time_str, sender, subject, msg_text);
+               } else if (thumbnail_path[0] != '\0') {
+                       snprintf(export_str, sizeof(export_str), "%s %s, %s: %s, %s\n", date_str, time_str, sender, dgettext("sys_string", "IDS_COM_OPT_IMAGE"), msg_text);
+               } else {
+                       snprintf(export_str, sizeof(export_str), "%s %s, %s: %s\n", date_str, time_str, sender, msg_text);
+               }
+       }
+
+       return strdup(export_str);
+}
+
+bool msg_is_sms(int msg_type)
+{
+       int result = false;
+       switch(msg_type)
+       {
+       case MSG_TYPE_SMS_CB:
+       case MSG_TYPE_SMS_JAVACB:
+       case MSG_TYPE_SMS_WAPPUSH:
+       case MSG_TYPE_SMS_MWI:
+       case MSG_TYPE_SMS_SYNCML:
+       case MSG_TYPE_SMS_REJECT:
+       case MSG_TYPE_SMS:
+               result = true;
+               break;
+       default:
+               break;
+       }
+       return result;
+}
+
+
+bool msg_is_mms(int msg_type)
+{
+       int result = false;
+       switch(msg_type)
+       {
+       case MSG_TYPE_MMS_NOTI:
+       case MSG_TYPE_MMS_JAVA:
+       case MSG_TYPE_MMS:
+               result = true;
+               break;
+       default:
+               break;
+       }
+       return result;
+}
+
diff --git a/composer/src/external/msg-ui-composer-external.c b/composer/src/external/msg-ui-composer-external.c
new file mode 100755 (executable)
index 0000000..19d2ade
--- /dev/null
@@ -0,0 +1,1326 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* include*/
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-external.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-bubble.h"
+#include "msg-ui-composer-main.h"
+
+#include <appsvc.h>
+#include <app_service.h>
+#include <ui-gadget.h>
+#include <Ecore_X.h>
+
+#include <contacts.h>
+
+static void __msg_ui_composer_external_closed(MSG_COMPOSER_VIEW_DATA_S *cd);
+
+static void __ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       Evas_Object *base;
+
+       if (!ug || !priv) {
+               D_MSG("");
+               return;
+       }
+
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       base = ug_get_layout(ug);
+
+       if (!base) {
+               ug_destroy(ug);
+               D_MSG("");
+               return;
+       }
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(base);
+               break;
+       case UG_MODE_FRAMEVIEW:
+               break;
+       default:
+               break;
+       }
+
+       msg_ui_composer_disconnect_handler(cd);
+
+       D_LEAVE;
+}
+
+static void __ug_contact_phonui_result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ug, "ug data is NULL");
+       D_MSG_RETM_IF(!result, "bundle result data is NULL");
+       D_MSG_RETM_IF(!priv, "priv data is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       D_MSG_RETM_IF(cd->recipient == NULL, "Recipient data is NULL");
+
+       int contact_index = 0;
+       int person_index = 0;
+       int *num_id_list = NULL;
+       int *email_id_list = NULL;
+       int num_len = 0;
+       int email_len = 0;
+       int i = 0;
+       int ct_ret = CONTACTS_ERROR_NONE;
+       const char *current_number = NULL;
+       char *address_str = NULL;
+       char *num_value = NULL;
+       char *email_value = NULL;
+       char *entry_text = NULL;
+       MSG_BOOL bMaxCount = FALSE;
+       MSG_BOOL bInvalidNum = FALSE;
+       MSG_BOOL bDup = FALSE;
+       MSG_BOOL isContactId = FALSE;
+
+       /* get numver list */
+       service_get_extra_data(result, MSG_CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST, &num_value);
+       if (num_value) {
+               /* contact id list */
+               num_id_list = (int *)g_base64_decode(num_value, (gsize *)&num_len);
+               isContactId = TRUE;
+               D_MSG("num_len = %d", num_len/sizeof(int));
+               if (!num_id_list) {
+                       D_EMSG("number_id list is NULL");
+                       return;
+               }
+       }
+
+       /*get email list */
+       service_get_extra_data(result, MSG_CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST, &email_value);
+       if (email_value) {
+               /* contact id list */
+               email_id_list = (int *)g_base64_decode(email_value, (gsize *)&email_len);
+               D_MSG("email_len = %d", email_len/sizeof(int));
+               if (!email_id_list) {
+                       D_EMSG("email_id list is NULL");
+                       if (num_id_list)
+                               free(num_id_list);
+                       return;
+               }
+       }
+
+       /* get phonelog list */
+       if (!num_value && !email_value) {
+               /* phonelog id list*/
+               service_get_extra_data(result, MSG_BUNDLE_KEY_GET_SEL_LIST, &num_value);
+               D_MSG_RETM_IF(!num_value, "num_value is NULL");
+
+               num_id_list = (int *)g_base64_decode(num_value, (gsize *)&num_len);
+               D_MSG("num_len = %d", num_len/sizeof(int));
+               D_MSG_RETM_IF(!num_id_list, "number_id list is NULL");
+       }
+
+       /* get entry text */
+       if (num_len > 0 || email_len > 0) {
+               current_number = msg_ui_composer_recipient_entry_text_get(cd->recipient);
+               if (current_number)
+                       entry_text = strdup(current_number);
+       }
+
+       /* add number list to recipient */
+       for (i = 0; i < num_len / sizeof(int); i++) {
+               if (msg_ui_composer_recipient_count_get(cd->recipient) >= COMPOSER_RECIPIENT_COUNT_MAX) {
+                       bMaxCount = TRUE;
+                       break;
+               }
+
+               address_str = NULL;
+
+               if (isContactId) {
+                       /* contact id list */
+                       contacts_record_h value = NULL;
+                       contacts_record_h record = NULL;
+
+                       /* get records - contacts number */
+                       ct_ret = contacts_db_get_record(_contacts_number._uri, num_id_list[i], &value);
+                       if (ct_ret != CONTACTS_ERROR_NONE) {
+                               D_EMSG("contacts_db_get_record is failed ct_ret = %d", ct_ret);
+                               continue;
+                       }
+                       /* get contact index */
+                       contacts_record_get_int(value, _contacts_number.contact_id, &contact_index);
+                       /* get number str */
+                       contacts_record_get_str_p(value, _contacts_number.number, &address_str);
+
+                       /* get records - contacts number */
+                       ct_ret = contacts_db_get_record(_contacts_simple_contact._uri, contact_index, &record);
+                       if (ct_ret != CONTACTS_ERROR_NONE) {
+                               D_EMSG("contacts_db_get_record is failed ct_ret = %d", ct_ret);
+                               contacts_record_destroy(value, true);
+                               continue;
+                       }
+
+                       /* get records - person */
+                       contacts_record_get_int(record, _contacts_simple_contact.person_id, &person_index);
+
+                       D_MSG("selected number_id = %d, contact_id = %d, person_id = %d, number = %s", num_id_list[i], contact_index, person_index, address_str);
+
+                       if (address_str && *address_str) {
+                               if (msg_ui_composer_recipient_duplicate_check(cd->recipient, address_str) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+                                       bDup = TRUE;
+                                       contacts_record_destroy(record, true);
+                                       contacts_record_destroy(value, true);
+                                       continue;
+                               }
+
+                               if (msg_ui_composer_recipient_vaild_check(address_str) == EINA_FALSE) {
+                                       bInvalidNum = TRUE;
+                               } else {
+                                       msg_ui_composer_recipient_append(cd->recipient, address_str, person_index);
+                               }
+                       } else {
+                               D_EMSG("contact id %d, person id %d is unuseable !!", contact_index, person_index);
+                       }
+
+                       /* destroy records */
+                       contacts_record_destroy(record, true);
+                       contacts_record_destroy(value, true);
+               } else {
+                       /* phonelog id list */
+                       contacts_record_h plog = NULL;
+
+                       /* get records - phone log */
+                       ct_ret = contacts_db_get_record(_contacts_phone_log._uri, num_id_list[i], &plog);
+                       if (ct_ret != CONTACTS_ERROR_NONE) {
+                               D_EMSG("contacts_db_get_record is failed ct_ret = %d", ct_ret);
+                               continue;
+                       }
+
+                       /* get address string */
+                       contacts_record_get_str_p(plog, _contacts_phone_log.address, &address_str);
+                       /* get contact index */
+                       contacts_record_get_int(plog, _contacts_phone_log.person_id, &person_index);
+
+                       D_MSG("selected number_id = %d, person_id = %d, number = %s", num_id_list[i], person_index, address_str);
+
+                       if (address_str && *address_str) {
+                               if (msg_ui_composer_recipient_duplicate_check(cd->recipient, address_str) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+                                       bDup = TRUE;
+                                       contacts_record_destroy(plog, true);
+                                       continue;
+                               }
+
+                               if (msg_ui_composer_recipient_vaild_check(address_str) == EINA_FALSE) {
+                                       bInvalidNum = TRUE;
+                               } else {
+                                       msg_ui_composer_recipient_append(cd->recipient, address_str, person_index);
+                               }
+                       }
+
+                       contacts_record_destroy(plog, true);
+               }
+       }
+
+       /* add email list to recipient */
+       for (i = 0; i < email_len / sizeof(int); i++) {
+               if (msg_ui_composer_recipient_count_get(cd->recipient) >= COMPOSER_RECIPIENT_COUNT_MAX) {
+                       bMaxCount = TRUE;
+                       break;
+               }
+
+               address_str = NULL;
+
+               /* contact id list */
+               contacts_record_h value = NULL;
+               contacts_record_h record = NULL;
+
+               /* get records - email */
+               ct_ret = contacts_db_get_record(_contacts_email._uri, email_id_list[i], &value);
+               if (ct_ret != CONTACTS_ERROR_NONE) {
+                       D_EMSG("contacts_db_get_record is failed ct_ret = %d", ct_ret);
+                       continue;
+               }
+
+               /* get email address str */
+               contacts_record_get_str(value, _contacts_email.email, &address_str);
+               /* get contact index */
+               contacts_record_get_int(value, _contacts_email.contact_id, &contact_index);
+
+               /* get records - contacts number */
+               ct_ret = contacts_db_get_record(_contacts_simple_contact._uri, contact_index, &record);
+               if (ct_ret != CONTACTS_ERROR_NONE) {
+                       D_EMSG("contacts_db_get_record is failed ct_ret = %d", ct_ret);
+                       contacts_record_destroy(value, true);
+                       continue;
+               }
+
+               /* get person index */
+               contacts_record_get_int(record, _contacts_contact_email.person_id, &person_index);
+
+               D_MSG("selected email_id = %d, contact_id = %d, person_id = %d, address = %s", email_id_list[i], contact_index, person_index, address_str);
+
+               if (address_str) {
+                       if (msg_ui_composer_recipient_duplicate_check(cd->recipient, address_str) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+                               bDup = TRUE;
+                               contacts_record_destroy(record, true);
+                               contacts_record_destroy(value, true);
+                               continue;
+                       }
+
+                       if (msg_ui_composer_recipient_vaild_check(address_str) == EINA_FALSE) {
+                               bInvalidNum = TRUE;
+                       } else {
+                               msg_ui_composer_recipient_append(cd->recipient, address_str, person_index);
+                       }
+               } else {
+                       D_EMSG("contact id %d, person id %d is unuseable !!", contact_index, person_index);
+               }
+
+               contacts_record_destroy(record, true);
+               contacts_record_destroy(value, true);
+       }
+
+       /* set entry text */
+       if (entry_text) {
+               msg_ui_composer_recipient_entry_text_set(cd->recipient, entry_text);
+               g_free(entry_text);
+       }
+
+       D_MSG("bMaxCount = %d, bInvalidNum = %d, bDup = %d", bMaxCount, bInvalidNum, bDup);
+       if (bMaxCount) {
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_COUNT_MAX);
+       } else if (bInvalidNum) {
+               msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK);
+       } else if (bDup) {
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_DUP_RECP);
+       }
+
+       if (num_id_list)
+               free(num_id_list);
+
+       if (email_id_list)
+               free(email_id_list);
+
+       D_LEAVE;
+}
+
+static void __ug_myfile_return_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+
+       char *file_path = NULL;
+
+       if (!ug || !priv || !result) {
+               D_EMSG("parameter error ug = %p, priv = %p, result = %p", ug, priv, result);
+               return;
+       }
+
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+
+       service_get_extra_data(result, MSG_BUNDLE_KEY_RESULT, &file_path);
+       cd->attachlist = make_tokenize_list(file_path, MYFILE_TOKEN);
+
+       D_LEAVE;
+}
+
+static void __ug_namecard_list_return_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       char *str_id = NULL;
+       int index = 0;
+
+       if (!ug || !priv || !result) {
+               D_EMSG("parameter error ug = %p, priv = %p, result = %p", ug, priv, result);
+               return;
+       }
+
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+
+       service_get_extra_data(result, MSG_BUNDLE_KEY_NAMECARD_INDEX, &str_id);
+
+       if (!str_id) {
+               D_EMSG("bundle_get_val Fail");
+               return;
+       }
+
+       D_MSG("Index of Selected namecard = %s", str_id);
+
+       index = atoi(str_id);
+
+       if (index > 0) {
+               char file_path[COMPOSER_FILEPATH_LEN_MAX] = { 0,};
+               if (msg_composer_get_vcf_file_by_index(index, file_path, COMPOSER_FILEPATH_LEN_MAX - 1 ) == true) {
+                       D_MSG("file_path= %s", file_path);
+                       cd->attachlist = eina_list_append(cd->attachlist, g_strdup(file_path));
+               }
+       }
+
+       D_LEAVE;
+       return;
+}
+
+static void __ug_calendar_result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = priv;
+
+       int count = 0;
+       int i = 0;
+       char *path = NULL;
+       char *count_str = NULL;
+       char tmp[DEF_BUF_LEN_S];
+
+       if (!ug || !priv || !result) {
+               D_EMSG("parameter error ug = %p, priv = %p, result = %p", ug, priv, result);
+               return;
+       }
+
+       service_get_extra_data(result, MSG_BUNDLE_KEY_COUNT, &count_str);
+       if (count_str)
+               count = atoi(count_str);
+
+       if (count > 0) {
+               for (i = 0; i < count; i++) {
+                       snprintf(tmp, sizeof(tmp)-1, "vfile%d", i + 1);
+                       D_MSG("tmp:%s", tmp);
+
+                       service_get_extra_data(result, tmp, &path);
+
+                       D_MSG("path:%s", path);
+
+                       if (path && ecore_file_exists(path)) {
+                               cd->attachlist = eina_list_append(cd->attachlist, g_strdup(path));
+                       }
+               }
+       }
+       D_LEAVE;
+}
+
+static void __ug_memo_result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = priv;
+       Evas_Object *entry;
+       char *str = NULL;
+       char *tmp_memo = NULL;
+       char buf[DEF_BUF_LEN_S] = { 0, };
+       int img_count = 0;
+       int txt_count = 0;
+       int i;
+
+       if (!ug || !priv || !result) {
+               D_EMSG("parameter error ug = %p, priv = %p, result = %p", ug, priv, result);
+               return;
+       }
+
+       if (service_get_extra_data(result, MSG_BUNDLE_KEY_PATH, &str) == SERVICE_ERROR_NONE) {
+               gchar **split_str = NULL;
+
+               split_str = g_strsplit_set(str, "\n", -1);
+
+               if (split_str) {
+                       int count = g_strv_length(split_str);
+
+                       for (i = 0; i < count; i++) {
+                               if (split_str[i] && strlen(split_str[i])) {
+                                       D_MSG("%dth split_str = (%s)", i, split_str[i]);
+                                       cd->attachlist = eina_list_append(cd->attachlist, g_strdup(split_str[i]));
+                               }
+                       }
+
+                       g_strfreev(split_str);
+               }
+
+       }
+
+       if (service_get_extra_data(result, MSG_BUNDLE_KEY_TEXT, &str) == SERVICE_ERROR_NONE) {
+               if (str)
+                       txt_count = atoi(str);
+       }
+
+       D_MSG("[MEMO]attach text count : %d", txt_count);
+
+       /*if only text memo then add to body area */
+       if (txt_count > 0) {
+               COMPOSER_RECP_ADDR_E recp_type = msg_ui_composer_recipient_addr_type_get(cd->recipient);
+
+               for (i = 1; i <= txt_count; i++) {
+                       char* memo_str = NULL;
+                       snprintf(buf, sizeof(buf)-1, "text%d", i);
+
+                       service_get_extra_data(result, buf, &tmp_memo);
+                       D_MSG("text content : %s", tmp_memo);
+
+                       entry = msg_ui_composer_last_body_entry_get(cd);
+                       if (entry && tmp_memo) {
+                               memo_str = elm_entry_utf8_to_markup(tmp_memo);
+                               D_PRINT("### memo text = %s", tmp_memo);
+                               if (memo_str) {
+                                       D_PRINT("### memo text markup= %s", memo_str);
+                                       elm_entry_entry_insert(entry, memo_str);
+                                       g_free(memo_str);
+                               }
+
+                               if (recp_type != COMPOSER_RECP_ADDR_INVALID) {
+                                       /* change focus to entry*/
+                                       msg_ui_composer_last_focused_entry_set(cd, entry);
+                                       msg_ui_composer_last_focus_load(cd);
+                               }
+                       }
+               }
+
+               if (recp_type == COMPOSER_RECP_ADDR_INVALID && img_count == 0) {
+                       msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK);
+               }
+       }
+}
+
+static void __ug_viewer_result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       char *mode = NULL;
+       char *msgid_str = NULL;
+       int msg_id = 0;
+
+       if (!ug || !priv || !result) {
+               D_EMSG("parameter error ug = %p, priv = %p, result = %p", ug, priv, result);
+               return;
+       }
+
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+
+       if (service_get_extra_data(result, MSG_BUNDLE_KEY_MODE, &mode) == SERVICE_ERROR_NONE) {
+               if (g_strcmp0(mode, MSG_BUNDLE_VALUE_DELETE_MSG) == 0) {
+                       if (service_get_extra_data(result, MSG_BUNDLE_KEY_MSG_ID, &msgid_str) == SERVICE_ERROR_NONE) {
+                               if (msgid_str)
+                                       msg_id = atoi(msgid_str);
+
+                               D_MSG("Delete request msg id(%d) from viewer", msg_id);
+                               msg_ui_bubble_delete_msg(cd->bubble_data, msg_id);
+                               return;
+                       } else {
+                               D_EMSG("Failed to get msg id from viewer");
+                       }
+               } else if (g_strcmp0(mode, MSG_BUNDLE_VALUE_RESEND) == 0) {
+                       if (service_get_extra_data(result, MSG_BUNDLE_KEY_MSG_ID, &msgid_str) == SERVICE_ERROR_NONE) {
+                               if (msgid_str)
+                                       msg_id = atoi(msgid_str);
+
+                               D_MSG("Resend request msg id(%d) from viewer", msg_id);
+                               msg_ui_bubble_resend_msg(cd->bubble_data, msg_id);
+                               return;
+                       } else {
+                               D_EMSG("Failed to get msg id from viewer");
+                       }
+               } else if (g_strcmp0(mode, MSG_BUNDLE_VALUE_REPLY) == 0) {
+                       D_MSG("Reply msg from viewer");
+                       msg_ui_composer_last_body_page_focus_load(cd);
+                       return;
+               } else if (g_strcmp0(mode, MSG_BUNDLE_VALUE_REFRESH_CONV) == 0) {
+                       if (service_get_extra_data(result, MSG_BUNDLE_KEY_MSG_ID, &msgid_str) == SERVICE_ERROR_NONE) {
+                               if (msgid_str)
+                                       msg_id = atoi(msgid_str);
+
+                               D_MSG("Refresh request msg id(%d) from viewer", msg_id);
+                               msg_ui_bubble_refresh_msg_lock_status(cd->bubble_data, msg_id);
+                               return;
+                       } else {
+                               D_EMSG("Failed to get msg id from viewer");
+                       }
+               } else {
+                       D_EMSG("MODE(%s) is not applicable type", mode);
+               }
+       } else {
+               D_EMSG("Failed to get MODE data from viewer");
+       }
+
+       D_LEAVE;
+}
+
+static void __ug_gallery_return_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       char *file_path = NULL;
+       char *count_str = NULL;
+       int count = 0;
+
+       if (!ug || !priv || !result) {
+               D_EMSG("parameter error ug = %p, priv = %p, result = %p", ug, priv, result);
+               return;
+       }
+
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+
+       service_get_extra_data(result, MSG_BUNDLE_KEY_COUNT, &count_str);
+       if (count_str)
+               count = atoi(count_str);
+       D_MSG("gallery selected item count  = %d", count);
+
+       service_get_extra_data(result, MSG_BUNDLE_KEY_PATH, &file_path);
+       D_MSG("gallery selected item file_path  = %s", file_path);
+
+       cd->attachlist = make_tokenize_list(file_path, GALLERY_TOKEN);
+
+       D_LEAVE;
+}
+
+static void __ug_closed_cb(ui_gadget_h ug, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+
+       if (cd->loaded_ug) {
+               ug_destroy(cd->loaded_ug);
+               cd->loaded_ug = NULL;
+       }
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               int rotate = elm_win_rotation_get(cd->main_window);
+               D_MSG("rotate= %d", rotate);
+               if (rotate == 90 || rotate == 270)      /* landscape mode */
+                       elm_win_indicator_mode_set(cd->main_window, ELM_WIN_INDICATOR_HIDE);
+       }
+
+       msg_common_apply_font_size("bubble", cd->content_layout);
+       msg_ui_composer_apply_font_size(cd, true);
+
+       msg_ui_composer_connect_handler(cd);
+
+       __msg_ui_composer_external_closed(cd);
+
+       D_LEAVE;
+}
+
+static void __contact_ug_closed_cb(ui_gadget_h ug, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+
+       if (cd->recipient)
+               msg_ui_composer_recipient_update(cd->recipient);
+
+       __ug_closed_cb(ug, priv);
+
+       D_LEAVE;
+}
+
+/*
+* Create External UG
+*/
+ui_gadget_h msg_ui_composer_launch_contact_detail_ug(MSG_COMPOSER_VIEW_DATA_S *cd, int ct_id)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs = { 0, };
+
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       char contactId[DEF_BUF_LEN_S] = { 0, };
+       char buf[DEF_BUF_LEN_D] = { 0, };
+
+       snprintf(contactId, sizeof(contactId), "%d", ct_id);
+       snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_DETAIL);
+
+       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_ID, contactId);
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = __contact_ug_closed_cb;
+       cbs.priv = cd;
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_CONTACTS_DETAILS, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       cd->loaded_ug = ug;
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h msg_ui_composer_launch_contact_list_ug(MSG_COMPOSER_VIEW_DATA_S *cd, int type, const char *str)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs = { 0, };
+
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       char buf[DEF_BUF_LEN_D] = { 0, };
+       D_MSG("type = %d", type);
+       if (type == MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL) {
+               snprintf(buf, sizeof(buf), "%d", type);
+               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_EMAIL, str);
+       } else if (type == MSG_CT_UG_REQUEST_UPDATE_WITH_NUM) {
+               snprintf(buf, sizeof(buf), "%d", type);
+               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_NUM, str);
+       } else {
+               service_destroy(svc_handle);
+               return NULL;
+       }
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = __contact_ug_closed_cb;
+       cbs.priv = cd;
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       service_destroy(svc_handle);
+       cd->loaded_ug = ug;
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h msg_ui_composer_launch_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = cd;
+
+       ug = ug_create(cd->ug, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       cd->loaded_ug = ug;
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h msg_ui_composer_launch_email_create(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = cd;
+
+       ug = ug_create(cd->ug, EMAIL_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       cd->loaded_ug = ug;
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h msg_ui_composer_launch_viewer_create(void *data, service_h svc_handle)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_viewer_result_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = cd;
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_MSG_VIEWER, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       cd->loaded_ug = ug;
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h ug_contact_phoneui_create(void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs = {0, };
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       char request_number[DEF_BUF_LEN_D + 1] = {0, };
+       char max_count[DEF_BUF_LEN_D + 1] = {0, };
+
+       snprintf(request_number, sizeof(request_number)-1, "%d", MSG_CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL);
+       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, request_number);
+
+       snprintf(max_count, sizeof(max_count)-1, "%d", COMPOSER_RECIPIENT_COUNT_MAX);
+       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_MAX, max_count);
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_contact_phonui_result_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = data;
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_CONTACT_PHONEUI, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+
+       return ug;
+}
+
+ui_gadget_h ug_myfile_create(void *data)
+{
+       D_ENTER;
+       ui_gadget_h ug;
+       struct ug_cbs cbs = {0, };
+
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FILE_TYPE, MSG_BUNDLE_VALUE_ALL);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_SELECT_TYPE, MSG_BUNDLE_VALUE_MULTI_FILE);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_DRMTYPE, MSG_BUNDLE_VALUE_DRM_WITHOUT_FL);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_myfile_return_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = data;
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_MYFILE, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h ug_namecard_create(void *data)
+{
+       D_ENTER;
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs = {0, };
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       char contact_ug[DEF_BUF_LEN] = {0, };
+       snprintf(contact_ug, sizeof(contact_ug)-1, "%d", MSG_CT_UG_REQUEST_SELECT_CONTACT);
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, contact_ug);
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_namecard_list_return_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = data;
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h ug_msgviewer_create(void *data, msg_struct_t msg_data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
+       service_h svc_handle = NULL;
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = (void *)cd;
+
+       char preview_data[DEF_BUF_LEN_S] = {0, };
+       D_MSG("[DEBUG] hex address [%x]", (unsigned int)msg_data);
+       snprintf(preview_data, sizeof(preview_data)-1, "%x", (unsigned int)msg_data);
+       D_MSG("[DEBUG] hex address [%s]", preview_data);
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_PREVIEW_MODE);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_PREVIEW_DATA, preview_data);
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_MSG_VIEWER, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h ug_calendar_create(void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
+       service_h svc_handle = NULL;
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_calendar_result_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = (void *)cd;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_FILE);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MAX, MSG_BUNDLE_VALUE_CALENDAR_MAX);
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_CALENDAR, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h ug_memo_create(void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs = {0, };
+       service_h svc_handle = NULL;
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_memo_result_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = (void *)cd;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_SELECT);
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_MEMO, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       return ug;
+}
+
+ui_gadget_h ug_gallery_create(void *data)
+{
+       D_ENTER;
+
+       ui_gadget_h ug;
+       struct ug_cbs cbs = {0, };
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_LAUNCH_TYPE, MSG_BUNDLE_VALUE_SELECT_MULTIPLE);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FILE_TYPE, MSG_BUNDLE_VALUE_GALLERY_ALL);
+
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_gallery_return_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = data;
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_GALLERY, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return ug;
+}
+
+static void __appsvc_camera_result_cb(service_h request, service_h reply, service_result_e result, void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       int ret = 0;
+       D_MSG("result : %d", result);
+
+       if (result == SERVICE_RESULT_SUCCEEDED) {
+               char *result_filename;
+               ret = service_get_extra_data(reply, SERVICE_DATA_SELECTED, &result_filename);
+               if (ret != SERVICE_ERROR_NONE) {
+                       D_EMSG("service_get_extra_data() is failed : %d", ret);
+                       return;
+               }
+
+               if (result_filename) {
+                       cd->attachlist = eina_list_append(cd->attachlist, g_strdup(result_filename));
+               } else {
+                       D_EMSG("No result");
+               }
+       }
+
+       __msg_ui_composer_external_closed(cd);
+
+       D_LEAVE;
+}
+
+int appsvc_take_picture(void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       int ret;
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       service_set_window(svc_handle, elm_win_xwindow_get(cd->main_window));
+       service_set_operation(svc_handle, SERVICE_OPERATION_CREATE_CONTENT);
+       service_set_mime(svc_handle, "image/jpg");
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_CALLER, MESSAGE_PKGNAME);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RESOLUTION, MSG_BUNDLE_VALUE_VGA);
+
+       ret = service_send_launch_request(svc_handle, __appsvc_camera_result_cb, cd);
+       if (ret != SERVICE_ERROR_NONE) {
+               D_EMSG("service_send_launch_request is failed ret = %d", ret);
+               service_destroy(svc_handle);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+int appsvc_take_camcorder(void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       int ret;
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       service_set_window(svc_handle, elm_win_xwindow_get(cd->main_window));
+       service_set_operation(svc_handle, SERVICE_OPERATION_CREATE_CONTENT);
+       service_set_mime(svc_handle, "video/3gp");
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_CALLER, MESSAGE_PKGNAME);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RESOLUTION, MSG_BUNDLE_VALUE_QCIF);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_LIMIT, MSG_BUNDLE_VALUE_CAM_LIMIT_SIZE);
+
+       ret = service_send_launch_request(svc_handle, __appsvc_camera_result_cb, cd);
+       if (ret != SERVICE_ERROR_NONE) {
+               D_EMSG("service_send_launch_request is failed ret = %d", ret);
+               service_destroy(svc_handle);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+int appsvc_play_music_player(void *data, const char *file_path)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       int ret;
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       service_set_window(svc_handle, elm_win_xwindow_get(cd->main_window));
+       service_set_operation(svc_handle, SERVICE_OPERATION_VIEW);
+       service_set_uri(svc_handle, file_path);
+       service_add_extra_data(svc_handle, "ExitOnBack", "true");
+
+       ret = service_send_launch_request(svc_handle, NULL, NULL);
+       if (ret != SERVICE_ERROR_NONE) {
+               D_EMSG("service_send_launch_request is failed ret = %d", ret);
+               service_destroy(svc_handle);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+int appsvc_image_viewer(void *data, const char *file_path)
+{
+       D_ENTER;
+
+       int ret;
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       service_set_operation(svc_handle, SERVICE_OPERATION_VIEW);
+       service_set_uri(svc_handle, file_path);
+       service_add_extra_data(svc_handle, "View Mode", "DISPLAY");
+
+       ret = service_send_launch_request(svc_handle, NULL, NULL);
+       if (ret != SERVICE_ERROR_NONE) {
+               D_EMSG("service_send_launch_request is failed ret = %d", ret);
+               service_destroy(svc_handle);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+int appsvc_launch_app(const char *uri)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(uri == NULL, COMPOSER_RETURN_FAIL, "uri is NULL");
+       int ret;
+
+       bundle *b = bundle_create();
+       appsvc_set_operation(b, APPSVC_OPERATION_VIEW);
+       appsvc_set_uri(b, uri);
+       ret = appsvc_run_service(b, 0, NULL, NULL);
+       bundle_free(b);
+
+       if (ret < APPSVC_RET_OK) {
+               D_EMSG("appsvc_run_service is failed ret = %d", ret);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static void __msg_ui_composer_external_closed(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (cd->attachlist) {
+               msg_ui_composer_body_items_add(cd);
+       }
+
+       if (cd->loaded_aul || cd->state == COMPOSER_STATE_TYPE_RUNNING) {
+               if (!msg_ui_composer_popup_exist(cd)) {
+                       D_MSG("set last focus via external");
+                       msg_ui_composer_last_focus_load(cd);
+               }
+       }
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_external_ug_call(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_EXT_TYPE_E ext_type, void *reserved)
+{
+       D_ENTER;
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+       ui_gadget_h external_ug = NULL;
+
+       switch (ext_type) {
+       case COMPOSER_EXT_TYPE_GALLERY:
+               external_ug = ug_gallery_create(cd);
+               break;
+
+       case COMPOSER_EXT_TYPE_MYFILE:
+               external_ug = ug_myfile_create(cd);
+               break;
+
+       case COMPOSER_EXT_TYPE_NAMECARD:
+               external_ug = ug_namecard_create(cd);
+               break;
+
+       case COMPOSER_EXT_TYPE_CALENDAR:
+               external_ug = ug_calendar_create(cd);
+               break;
+
+       case COMPOSER_EXT_TYPE_MEMO:
+               external_ug = ug_memo_create(cd);
+               break;
+
+       case COMPOSER_EXT_TYPE_MSGVIEWER:
+               external_ug = ug_msgviewer_create(cd, reserved);
+               break;
+
+       case COMPOSER_EXT_TYPE_CONTACT_PHONEUI:
+               external_ug = ug_contact_phoneui_create(cd);
+               break;
+
+       default:
+               D_MSG("ERROR ext type = %d!!!!!!!!!!!!", ext_type);
+               ret = COMPOSER_RETURN_FAIL;
+               break;
+       }
+
+       if (external_ug) {
+               cd->loaded_ug = external_ug;
+               elm_object_focus_set(msg_ui_composer_last_focused_entry_get(cd), EINA_FALSE);
+       }
+
+       D_LEAVE;
+       return ret;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_external_appsvc_call(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_EXT_TYPE_E ext_type, void *reserved)
+{
+       D_ENTER;
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+
+       switch (ext_type) {
+       case COMPOSER_EXT_TYPE_CAMERA:
+               ret = appsvc_take_picture(cd);
+               break;
+       case COMPOSER_EXT_TYPE_CAMCORDER:
+               ret = appsvc_take_camcorder(cd);
+               break;
+       case COMPOSER_EXT_TYPE_SOUND:
+               ret = appsvc_play_music_player(cd, reserved);
+               break;
+
+       case COMPOSER_EXT_TYPE_IMAGE:
+               ret = appsvc_image_viewer(cd, reserved);
+               break;
+
+       case COMPOSER_EXT_TYPE_COMMON:
+               ret = appsvc_launch_app(reserved);
+               break;
+
+       default:
+               D_MSG("ERROR ext type = %d!!!!!!!!!!!!", ext_type);
+               ret = COMPOSER_RETURN_FAIL;
+               break;
+       }
+
+       if (ret != COMPOSER_RETURN_FAIL) {
+               /* discoonect volume key handler */
+               msg_ui_composer_disconnect_handler(cd);
+               cd->loaded_aul = TRUE;
+       }
+
+       D_LEAVE;
+       return ret;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_external_call(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_EXT_TYPE_E ext_type, void *reserved)
+{
+       D_ENTER;
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+       D_MSG("Launch external call type[%d]", ext_type);
+
+       switch (ext_type) {
+       case COMPOSER_EXT_TYPE_GALLERY:
+       case COMPOSER_EXT_TYPE_MYFILE:
+       case COMPOSER_EXT_TYPE_NAMECARD:
+       case COMPOSER_EXT_TYPE_CALENDAR:
+       case COMPOSER_EXT_TYPE_MEMO:
+       case COMPOSER_EXT_TYPE_MSGVIEWER:
+       case COMPOSER_EXT_TYPE_CONTACT_PHONEUI:
+               ret = msg_ui_composer_external_ug_call(cd, ext_type, reserved);
+               break;
+       case COMPOSER_EXT_TYPE_CAMERA:
+       case COMPOSER_EXT_TYPE_CAMCORDER:
+       case COMPOSER_EXT_TYPE_SOUND:
+       case COMPOSER_EXT_TYPE_IMAGE:
+       case COMPOSER_EXT_TYPE_COMMON:
+               ret = msg_ui_composer_external_appsvc_call(cd, ext_type, reserved);
+               break;
+
+       default:
+               D_MSG("ERROR ext type = %d!!!!!!!!!!!!", ext_type);
+               ret = COMPOSER_RETURN_FAIL;
+               break;
+       }
+
+       D_LEAVE;
+       return ret;
+}
diff --git a/composer/src/gadget/msg-ui-composer-gadget.c b/composer/src/gadget/msg-ui-composer-gadget.c
new file mode 100755 (executable)
index 0000000..e86e592
--- /dev/null
@@ -0,0 +1,350 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-main.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-recipient.h"
+#include <Ecore_X.h>
+#include <system_info.h>
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API  __attribute__ ((visibility("default")))
+#endif
+
+static void __base_layout_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (!cd)
+               return;
+
+       msg_ui_composer_destroy(cd);
+
+       D_LEAVE;
+}
+
+static void *__msg_ui_composer_on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       int win_w = 0;
+       int win_h = 0;
+
+       if (ug == NULL || priv == NULL) {
+               D_EMSG("ug = %p, priv = %p", ug, priv);
+               return NULL;
+       }
+
+       bindtextdomain("message", LOCALEDIR);
+
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       cd->ug = ug;
+
+       cd->main_window = ug_get_window();
+
+       if (cd->main_window == NULL) {
+               D_EMSG("main window is NULL");
+               return NULL;
+       }
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &win_w, &win_h);
+       cd->window_w = win_w;
+       cd->window_h = win_h;
+       D_MSG("screen width = %d, screen_height = %d", win_w, win_h);
+
+       cd->xdisplay = ecore_x_display_get();
+       if (cd->xdisplay == NULL)
+               D_EMSG("ecore_x_display_get() is failed");
+
+       cd->indicator_mode = elm_win_indicator_mode_get(cd->main_window);
+       D_MSG("cd->indicator_mode = %d", cd->indicator_mode);
+
+       elm_win_indicator_mode_set(cd->main_window, ELM_WIN_INDICATOR_SHOW);
+
+       bool show_indicator = true;
+       char *indicator = NULL;
+
+       service_get_extra_data(data, MSG_BUNDLE_KEY_INDICATOR_MODE, &indicator);
+       if (indicator && g_strcmp0(indicator, MSG_BUNDLE_VALUE_NO_INDICATOR) == 0)
+               show_indicator = false;
+
+       cd->base = msg_ui_composer_layout_create(cd->main_window, show_indicator);
+       if (cd->base == NULL) {
+               D_EMSG("cd->base is NULL");
+               return NULL;
+       }
+
+       char *from = NULL;
+       char *thread_id = NULL;
+       char *msg_id = NULL;
+       char *composer_mode = NULL;
+       char *operation = NULL;
+
+       cd->bg = msg_ui_composer_bg_create(cd->base);
+       elm_object_part_content_set(cd->base, "elm.swallow.bg", cd->bg);
+       elm_object_style_set(cd->bg, "edit_mode");
+
+       char *cvalue = NULL;
+       int ret = SYSTEM_INFO_ERROR_NONE;
+
+       ret = system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &cvalue);
+       if (ret == SYSTEM_INFO_ERROR_NONE && cvalue != NULL) {
+               if (g_strcmp0(cvalue, "Emulator") == 0)
+                       cd->isEmulator = true;
+       }
+
+       if (cvalue) {
+               g_free(cvalue);
+               cvalue = NULL;
+       }
+
+       if (service_get_operation(data, &operation) == SERVICE_ERROR_NONE && operation)
+               cd->isAppControl = true;
+       else
+               cd->isAppControl = false;
+
+       service_get_extra_data(data, MSG_BUNDLE_KEY_FROM, &from);
+
+       if (from && g_strcmp0(from, MSG_BUNDLE_VALUE_INTERNAL) == 0)
+               cd->isMsgInternal = true;
+       else
+               cd->isMsgInternal = false;
+
+       service_get_extra_data(data, MSG_BUNDLE_KEY_THREAD_ID, &thread_id);
+       service_get_extra_data(data, MSG_BUNDLE_KEY_MSG_ID, &msg_id);
+       service_get_extra_data(data, MSG_BUNDLE_KEY_MODE, &composer_mode);
+
+       if (composer_mode) {
+               if (g_strcmp0(composer_mode, MSG_BUNDLE_VALUE_EDIT) == 0)
+                       cd->composer_mode = MSG_COMPOSER_MODE_EDIT;
+               else if (g_strcmp0(composer_mode, MSG_BUNDLE_VALUE_FORWARD) == 0)
+                       cd->composer_mode = MSG_COMPOSER_MODE_FORWARD;
+               else
+                       cd->composer_mode = MSG_COMPOSER_MODE_NORMAL;
+       } else {
+               cd->composer_mode = MSG_COMPOSER_MODE_NORMAL;
+       }
+
+       if ((thread_id || msg_id) && (cd->composer_mode == MSG_COMPOSER_MODE_NORMAL)) {
+               cd->msg_ug_mode = MSG_UG_MODE_BUBBLE_COMPOSER;
+       } else {
+               if (cd->isMsgInternal == true) {
+                       cd->msg_ug_mode = MSG_UG_MODE_FULL_COMPOSER;
+               } else {
+                       cd->msg_ug_mode = MSG_UG_MODE_ONLY_COMPOSER;
+               }
+       }
+
+       D_MSG("UG MODE %d[Internal = %d], composer mode = %d", cd->msg_ug_mode, cd->isMsgInternal, cd->composer_mode);
+
+       cd->isFullview = true;
+
+       evas_object_event_callback_add(cd->base, EVAS_CALLBACK_DEL, __base_layout_delete_cb, cd);
+
+       if (msg_ui_composer_init(cd) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("msg_ui_composer_init error");
+               evas_object_del(cd->base);
+
+               return NULL;
+       }
+
+       if (msg_ui_composer_create(cd) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("creating main layout failed");
+               evas_object_del(cd->base);
+
+               return NULL;
+       }
+
+       return cd->base;
+}
+
+static void __msg_ui_composer_on_start(ui_gadget_h ug, service_h data, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+
+       msg_ui_composer_start(cd, data);
+
+       msg_common_apply_font_size("bubble", cd->content_layout);
+       msg_ui_composer_apply_font_size(cd, true);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_on_pause(ui_gadget_h ug, service_h data, void *priv)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       D_MSG_RETM_IF(cd == NULL, "Composer data is NULL");
+       D_MSG_RETM_IF(cd->state == COMPOSER_STATE_TYPE_DESTROY, "Composer state is already Destroy");
+
+       cd->state = COMPOSER_STATE_TYPE_PAUSE;
+       /* discoonect volume key handler */
+       msg_ui_composer_disconnect_handler(cd);
+
+       if (cd->bubble_data) {
+               cd->bubble_data->ug_state = BUBBLE_UG_PAUSE;
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_on_resume(ui_gadget_h ug, service_h data, void *priv)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       D_MSG_RETM_IF(cd == NULL, "Composer data is NULL");
+       D_MSG_RETM_IF(cd->state == COMPOSER_STATE_TYPE_DESTROY, "Composer state is already Destroy");
+
+       if (!cd->loaded_ug)
+               msg_common_apply_font_size("bubble", cd->content_layout);
+
+       msg_ui_composer_apply_font_size(cd, true);
+
+       /* coonect volume key handler */
+       msg_ui_composer_connect_handler(cd);
+
+       cd->state = COMPOSER_STATE_TYPE_RUNNING;
+       cd->loaded_aul = FALSE;
+
+       if (cd->bubble_data) {
+               cd->bubble_data->ug_state = BUBBLE_UG_START;
+
+               msg_ui_bubble_list_update_read_status(cd->bubble_data);
+       }
+
+       if (cd->recipient)
+               msg_ui_composer_recipient_update(cd->recipient);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_on_destroy(ui_gadget_h ug, service_h data, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       D_MSG_RETM_IF(cd == NULL, "Composer data is NULL");
+       D_MSG_RETM_IF(cd->state == COMPOSER_STATE_TYPE_DESTROY, "Composer state is already Destroy");
+
+       cd->state = COMPOSER_STATE_TYPE_DESTROY;
+       cd->isclosed = true;
+
+       if (cd->bubble_data)
+               cd->bubble_data->ug_state = BUBBLE_UG_DESTROY;
+
+       msg_ui_bubble_deinit_bubble_data(cd->bubble_data);
+
+       if (cd->base) {
+               evas_object_del(cd->base);
+               cd->base = NULL;
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       if (msg)
+               msg_ui_composer_reset_request(cd, msg);
+
+       D_LEAVE;
+}
+
+
+static void __msg_ui_composer_on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv)
+{
+       D_ENTER;
+
+       switch (event) {
+       case UG_EVENT_LOW_MEMORY:
+               break;
+       case UG_EVENT_LOW_BATTERY:
+               break;
+       case UG_EVENT_LANG_CHANGE:
+               msg_ui_composer_change_language(priv);
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT:
+               msg_ui_composer_rotate(priv, COMPOSER_ROTATE_PORTRAIT);
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+               msg_ui_composer_rotate(priv, COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN);
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE:
+               msg_ui_composer_rotate(priv, COMPOSER_ROTATE_LANDSCAPE);
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+               msg_ui_composer_rotate(priv, COMPOSER_ROTATE_LANDSCAPE_UPSIDEDOWN);
+               break;
+       default:
+               break;
+       }
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+       if (ops == NULL) {
+               D_EMSG("[ERROR] OPS is null");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = NULL;
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)calloc(1, sizeof(MSG_COMPOSER_VIEW_DATA_S));
+
+       if (!cd) {
+               D_EMSG("[ERROR] cd calloc failed");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ops->create = __msg_ui_composer_on_create;
+       ops->start = __msg_ui_composer_on_start;
+       ops->pause = __msg_ui_composer_on_pause;
+       ops->resume = __msg_ui_composer_on_resume;
+       ops->destroy = __msg_ui_composer_on_destroy;
+       ops->message = __msg_ui_composer_on_message;
+       ops->event = __msg_ui_composer_on_event;
+       ops->key_event = NULL;
+       ops->priv = (void *)cd;
+       ops->opt = UG_OPT_INDICATOR_MANUAL;
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+       if (ops == NULL) {
+               D_EMSG( "[ERROR] OPS is null");
+               return;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)ops->priv;
+
+       if (cd) {
+               free(cd);
+               ops->priv = NULL;
+       }
+
+       D_LEAVE;
+}
diff --git a/composer/src/message/msg-ui-composer-message.c b/composer/src/message/msg-ui-composer-message.c
new file mode 100755 (executable)
index 0000000..8388def
--- /dev/null
@@ -0,0 +1,1436 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* includes*/
+#include "msg-ui-composer-subject.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-message-data.h"
+#include "msg-ui-composer-attachment.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-popup.h"
+
+#include <glib-object.h>
+#include <glib.h>
+
+/* defines */
+#define MSG_DATA_TEMPPATH      DATADIR "/"
+
+#define MSG_COMPOSER_SMIL_SCREEN_WIDTH 480
+#define MSG_COMPOSER_SMIL_SCREEN_HEIGHT        800
+
+#define MSG_COMPOSER_SMIL_POS_TOP              1
+#define MSG_COMPOSER_SMIL_POS_BOTTOM   50
+#define MSG_COMPOSER_SMIL_POS_LEFT             0
+
+#define MSG_COMPOSER_SMIL_REGION_WIDTH         100
+#define MSG_COMPOSER_SMIL_REGION_HEIGHT 50
+
+#define MSG_COMPOSER_SMIL_DEFAULT_BGCOLOR 0xFFFFFF
+#define MSG_COMPOSER_SMIL_DEFAULT_FONT_COLOR 0x000000
+#define MSG_COMPOSER_SMIL_DEFAULT_FONT_SIZE 30
+#define MSG_COMPOSER_SMIL_DEFAULT_BOLD false
+#define MSG_COMPOSER_SMIL_DEFAULT_UNDERLINE false
+
+
+
+/* globals */
+static MSG_COMP_MSG_DATA_S *msg_data = NULL;
+
+/* function defines*/
+
+/****************************************************
+ *
+ *     UI HANDLING
+ *
+ *****************************************************/
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_init()
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data != NULL) {
+               free(msg_data);
+               msg_data = NULL;
+       }
+
+       msg_data = (MSG_COMP_MSG_DATA_S *)calloc(1, sizeof(MSG_COMP_MSG_DATA_S));
+
+       if (msg_data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_data calloc error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       memset(msg_data, 0x00, sizeof(MSG_COMP_MSG_DATA_S));
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_destroy()
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] msg_data is already NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+       /* free recipient data */
+       if (msg_data->recp_list != NULL) {
+               g_slist_foreach(msg_data->recp_list, (GFunc) free, NULL);
+               g_slist_free(msg_data->recp_list);
+               msg_data->recp_list = NULL;
+       }
+       /* free sms data. */
+       if (msg_data->sms_data.body_text != NULL) {
+               free(msg_data->sms_data.body_text);
+               msg_data->sms_data.body_text = NULL;
+       }
+
+       free(msg_data);
+       msg_data = NULL;
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_add_address(char *number)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (number == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] argument [number] is NULL !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       char *address = strdup(number);
+       msg_data->recp_list = g_slist_append(msg_data->recp_list, (void *)address);
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+GSList *msg_ui_composer_message_get_address(void)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(msg_data == NULL, NULL, "msg_data is NULL. need to init");
+
+       return msg_data->recp_list;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_msg_type(COMPOSER_MSG_TYPE_E msg_type)
+{
+       if (!msg_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_data is NULL. need to init");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       msg_data->msg_type = msg_type;
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_sms_body(char *body_text)
+{
+       if (body_text == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] argument [body_text] is NULL !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       msg_data->sms_data.body_text = strdup(body_text);
+       msg_data->sms_data.body_length = strlen(body_text);
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_subject(char *subject, int length)
+{
+       D_ENTER;
+       if (msg_data == NULL || subject == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message data is NULL or no subject");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (subject && length > 0)
+               msg_data->mms_data.isSubject = true;
+
+       if (length <= sizeof(msg_data->mms_data.subject))
+               strncpy(msg_data->mms_data.subject, subject, length);
+       else
+               strncpy(msg_data->mms_data.subject, subject, sizeof(msg_data->mms_data.subject)-1);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_attach_count(int attach_count)
+{
+       D_ENTER;
+
+       if (!msg_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_data is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       MSG_COMP_MMS_DATA_S *mms_data = &msg_data->mms_data;
+
+       mms_data->attach_count = attach_count;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_add_attachments(const char *filepath, int filetype)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(ecore_file_exists(filepath) == EINA_FALSE, COMPOSER_RETURN_FAIL,"File is NOT exist");
+
+       if (!msg_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_data is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       MSG_COMP_MMS_DATA_S *mms_data = &msg_data->mms_data;
+       int attach_count = mms_data->attach_count;
+
+       int i = 0;
+       for (i = 0; i < attach_count; i++) {
+               if (strlen(mms_data->attachlist[i].filepath) <= 0) {
+                       mms_data->attachlist[i].filetype = filetype;
+
+                       strncpy(mms_data->attachlist[i].filepath, filepath, strlen(filepath));
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] attachment file path : [%s]", mms_data->attachlist[i].filepath);
+                       break;
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_page_count(int page_count)
+{
+       D_ENTER;
+
+       if (!msg_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message data is not exist");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       msg_data->mms_data.page_count = page_count;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_is_text_top(bool isTextTop)
+{
+       D_ENTER;
+
+       if (!msg_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message data is not exist");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       msg_data->mms_data.isTextTop = isTextTop;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_mms_set_text(const char *text, int nPage)
+{
+       D_ENTER;
+
+       if (!msg_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message data is not exist !!");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       MSG_COMP_MMS_DATA_S *mms_data = &msg_data->mms_data;
+       int text_len = 0;
+
+       if (text)
+               text_len = strlen(text);
+
+       if (text && text_len > 0) {
+               mms_data->pagelist[nPage].isText = true;
+
+               if (text_len <= COMPOSER_MMS_TEXT_MAX_BYTE)
+                       strncpy(mms_data->pagelist[nPage].body_text, text, text_len);
+               else
+                       strncpy(mms_data->pagelist[nPage].body_text, text, COMPOSER_MMS_TEXT_MAX_BYTE);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] no text");
+               mms_data->pagelist[nPage].isText = false;
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_mms_set_page_duration(int nPage, int duration)
+{
+       D_ENTER;
+
+       if (!msg_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message data is NOT exist");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       if (nPage >= COMPOSER_MMS_MAX_PAGE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] Invalid nPage index");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       MSG_COMP_MMS_DATA_S *mms_data = &msg_data->mms_data;
+
+       if (duration > COMPOSER_PAGE_DEFAULT_DURATION)
+               mms_data->pagelist[nPage].page_duration = duration;
+
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_mms_set_media(const char *file_path, COMPOSER_MEDIA_TYPE_E media_type, int nPage)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(ecore_file_exists(file_path) == EINA_FALSE, COMPOSER_RETURN_FAIL, "File is NOT exist");
+
+       if (!msg_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message data is NOT exist");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       MSG_COMP_MMS_DATA_S *mms_data = &msg_data->mms_data;
+
+       if (!file_path) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] No file path");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       switch (media_type) {
+       case COMPOSER_MEDIA_TYPE_IMAGE:
+               mms_data->pagelist[nPage].isImage = true;
+               strncpy(mms_data->pagelist[nPage].image_file_path, file_path, strlen(file_path));
+               break;
+
+       case COMPOSER_MEDIA_TYPE_VIDEO:
+               mms_data->pagelist[nPage].isVideo = true;
+               strncpy(mms_data->pagelist[nPage].image_file_path, file_path, strlen(file_path));
+               break;
+
+       case COMPOSER_MEDIA_TYPE_AUDIO:
+               mms_data->pagelist[nPage].isSound = true;
+               strncpy(mms_data->pagelist[nPage].sound_file_path, file_path, strlen(file_path));
+               break;
+
+       default:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] invalid media type");
+               return COMPOSER_RETURN_INVALID_MEDIA_TYPE;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+/*****************************************************
+ *
+ *      Framework message Handling
+ *
+ *******************************************************/
+
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_set_recipient()
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data == NULL || msg_data->msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msgInfo is NULL !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       int count = g_slist_length(msg_data->recp_list);
+       int i = 0;
+       msg_struct_list_s *addr_list = NULL;
+
+       msg_get_list_handle(msg_data->msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**)&addr_list);
+
+       addr_list->nCount = count;
+       for (i = 0; i < count; i++) {
+               char *address = (char *)g_slist_nth_data(msg_data->recp_list, i);
+               if (address == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] address is value NULL, skip");
+                       continue;
+               }
+
+               int addr_type = get_address_type((const char*)address);
+               if (addr_type == COMPOSER_UTIL_ADDRTYPE_NUMBER)
+                       msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_PLMN);
+               else if (addr_type == COMPOSER_UTIL_ADDRTYPE_EMAIL)
+                       msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_EMAIL);
+               msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);
+               msg_set_str_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, address, strlen(address));
+       }
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_create_new_message()
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data->msgInfo != NULL) {
+               msg_release_struct(&msg_data->msgInfo);
+               msg_data->msgInfo = NULL;
+       }
+
+       msg_data->msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+
+       if (msg_data->msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_create_struct failed");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_release_message()
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data->msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msgInfo is already destroyed !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (msg_release_struct(&msg_data->msgInfo) != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msgInfo is already destroyed !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_make_sms_message(msg_handle_t msg_handle, int msg_id)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data == NULL || msg_data->msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msgInfo is NULL !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       int err = MSG_SUCCESS;
+
+       /* set msgid */
+       if (msg_id) {
+               D_MSG("msg_id = %d", msg_id);
+               if (msg_set_int_value(msg_data->msgInfo, MSG_MESSAGE_ID_INT, msg_id) != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] set msgId error");
+               }
+       }
+
+       /* set message type to SMS */
+       if (msg_set_int_value(msg_data->msgInfo, MSG_MESSAGE_TYPE_INT, MSG_TYPE_SMS) != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT]msg_ui_comp_core_set_message_type error !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+       /* set message body text */
+       if (msg_data->sms_data.body_text)
+               err = msg_set_str_value(msg_data->msgInfo, MSG_MESSAGE_SMS_DATA_STR, msg_data->sms_data.body_text, strlen(msg_data->sms_data.body_text));
+       else
+               err = msg_set_str_value(msg_data->msgInfo, MSG_MESSAGE_SMS_DATA_STR, NULL, 0);
+
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT]msg_ui_comp_core_set_sms_body error !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+       /* set recipient */
+       if (__msg_ui_composer_set_recipient(msg_data) != COMPOSER_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT]__msg_ui_composer_set_recipient error !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_make_smil_header(msg_handle_t msg_handle, msg_struct_t mms_data, bool isTextTop)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (!mms_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       msg_struct_t text_region = NULL;
+       msg_struct_t image_region = NULL;
+
+       /************  make rootlayout ***************/
+       msg_set_int_value(mms_data, MSG_MMS_ROOTLAYOUT_WIDTH_INT, MSG_COMPOSER_SMIL_SCREEN_WIDTH);
+       msg_set_int_value(mms_data, MSG_MMS_ROOTLAYOUT_HEIGHT_INT, MSG_COMPOSER_SMIL_SCREEN_HEIGHT);
+       msg_set_int_value(mms_data, MSG_MMS_ROOTLAYOUT_BGCOLOR_INT, MSG_COMPOSER_SMIL_DEFAULT_BGCOLOR);
+
+       /************ make region ********************/
+       /* 1. add text region */
+       msg_mms_add_item(mms_data, MSG_STRUCT_MMS_REGION, &text_region);
+       msg_set_str_value(text_region, MSG_MMS_REGION_ID_STR, "Text", strlen("Text"));
+       msg_set_int_value(text_region, MSG_MMS_REGION_LENGTH_LEFT_INT, MSG_COMPOSER_SMIL_POS_LEFT);
+
+       if (isTextTop)
+               msg_set_int_value(text_region, MSG_MMS_REGION_LENGTH_TOP_INT, MSG_COMPOSER_SMIL_POS_TOP);
+       else
+               msg_set_int_value(text_region, MSG_MMS_REGION_LENGTH_TOP_INT, MSG_COMPOSER_SMIL_POS_BOTTOM);
+
+       msg_set_int_value(text_region, MSG_MMS_REGION_LENGTH_WIDTH_INT, MSG_COMPOSER_SMIL_REGION_WIDTH);
+       msg_set_int_value(text_region, MSG_MMS_REGION_LENGTH_HEIGHT_INT, MSG_COMPOSER_SMIL_REGION_HEIGHT);
+       msg_set_int_value(text_region, MSG_MMS_REGION_BGCOLOR_INT, MSG_COMPOSER_SMIL_DEFAULT_BGCOLOR);
+
+       /* 2. image(video) region */
+       msg_mms_add_item(mms_data, MSG_STRUCT_MMS_REGION, &image_region);
+       msg_set_str_value(image_region, MSG_MMS_REGION_ID_STR, "Image", strlen("Image"));
+       msg_set_int_value(image_region, MSG_MMS_REGION_LENGTH_LEFT_INT, MSG_COMPOSER_SMIL_POS_LEFT);
+
+       if (isTextTop)
+               msg_set_int_value(image_region, MSG_MMS_REGION_LENGTH_TOP_INT, MSG_COMPOSER_SMIL_POS_BOTTOM);
+       else
+               msg_set_int_value(image_region, MSG_MMS_REGION_LENGTH_TOP_INT, MSG_COMPOSER_SMIL_POS_TOP);
+
+       msg_set_int_value(image_region, MSG_MMS_REGION_LENGTH_WIDTH_INT, MSG_COMPOSER_SMIL_REGION_WIDTH);
+       msg_set_int_value(image_region, MSG_MMS_REGION_LENGTH_HEIGHT_INT, MSG_COMPOSER_SMIL_REGION_HEIGHT);
+       msg_set_int_value(image_region, MSG_MMS_REGION_BGCOLOR_INT, MSG_COMPOSER_SMIL_DEFAULT_BGCOLOR);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_make_mms_body(msg_handle_t msg_handle, msg_struct_t fw_mms_data)
+{
+       D_ENTER;
+
+       if (!msg_data || !fw_mms_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message data or FW mms data pointer is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       MSG_COMP_MMS_DATA_S *ui_mms_data = &msg_data->mms_data;
+       int page_count = ui_mms_data->page_count;
+       int i = 0;
+
+       for (i = 0; i < page_count; i++) {
+               msg_struct_t page_info = NULL;
+               int page_duration = 0;
+
+               /* verify page duration */
+               if (COMPOSER_PAGE_DEFAULT_DURATION < ui_mms_data->pagelist[i].page_duration)
+                       page_duration = ui_mms_data->pagelist[i].page_duration;
+               else
+                       page_duration = COMPOSER_PAGE_DEFAULT_DURATION;
+
+               D_MSG("%dth page's page duration = %d", i + 1, page_duration);
+               page_duration = page_duration * 1000;
+
+               /* 1. make page */
+               if (msg_mms_add_item(fw_mms_data, MSG_STRUCT_MMS_PAGE, &page_info) != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] create mms page error");
+                       return COMPOSER_RETURN_FAIL;
+               }
+
+               msg_set_int_value(page_info, MSG_MMS_PAGE_PAGE_DURATION_INT, page_duration);
+
+               /* 2. add media */
+               /* 1) text */
+               if (ui_mms_data->pagelist[i].isText) {
+                       FILE *fp;
+                       char szFilePath[DEF_BUF_LEN_L] = { 0x00, };
+                       char szFileName[DEF_BUF_LEN_L] = { 0x00, };
+                       char strMsg[COMPOSER_MMS_TEXT_MAX_BYTE + 1] = { 0x00, };
+
+                       msg_struct_t added_media = NULL;
+                       msg_struct_t text_style = NULL;
+
+                       /* create txt file */
+                       snprintf(szFilePath, sizeof(szFilePath), "%sMMS_Temp_%d.txt", MSG_DATA_TEMPPATH, i + 1);
+                       snprintf(szFileName, sizeof(szFileName), "MMS_Temp_%d.txt", i + 1);
+
+                       fp = fopen(szFilePath, "wb");
+                       if (!fp) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "fopen error");
+                               return COMPOSER_RETURN_FAIL;
+                       }
+
+                       strncpy(strMsg, ui_mms_data->pagelist[i].body_text, sizeof(strMsg) - 1);
+                       fwrite(strMsg, strlen(strMsg), 1, fp);
+                       fclose(fp);
+
+                       msg_mms_add_item(page_info, MSG_STRUCT_MMS_MEDIA, &added_media);
+                       msg_set_int_value(added_media, MSG_MMS_MEDIA_TYPE_INT, MMS_SMIL_MEDIA_TEXT);
+                       msg_set_str_value(added_media, MSG_MMS_MEDIA_REGION_ID_STR, "Text", strlen("Text"));
+                       msg_set_str_value(added_media, MSG_MMS_MEDIA_FILEPATH_STR, szFilePath, strlen(szFilePath));
+
+                       /** set font style */
+                       text_style = msg_create_struct(MSG_STRUCT_MMS_SMIL_TEXT);
+                       msg_set_int_value(text_style, MSG_MMS_SMIL_TEXT_COLOR_INT, MSG_COMPOSER_SMIL_DEFAULT_FONT_COLOR);
+                       msg_set_int_value(text_style, MSG_MMS_SMIL_TEXT_SIZE_INT, MSG_COMPOSER_SMIL_DEFAULT_FONT_SIZE);
+                       msg_set_int_value(text_style, MSG_MMS_SMIL_TEXT_BOLD_BOOL, MSG_COMPOSER_SMIL_DEFAULT_BOLD);
+                       msg_set_int_value(text_style, MSG_MMS_SMIL_TEXT_BOLD_BOOL, MSG_COMPOSER_SMIL_DEFAULT_UNDERLINE);
+
+                       msg_set_struct_handle(added_media, MSG_MMS_MEDIA_SMIL_TEXT_HND, text_style);
+                       msg_release_struct(&text_style);
+               }
+
+               /* 2) image / video */
+               if (ui_mms_data->pagelist[i].isImage) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] image file added");
+                       msg_struct_t added_media = NULL;
+                       char *filepath = ui_mms_data->pagelist[i].image_file_path;
+
+                       msg_mms_add_item(page_info, MSG_STRUCT_MMS_MEDIA, &added_media);
+                       msg_set_int_value(added_media, MSG_MMS_MEDIA_TYPE_INT, MMS_SMIL_MEDIA_IMG);
+                       msg_set_str_value(added_media, MSG_MMS_MEDIA_REGION_ID_STR, "Image", strlen("Image"));
+                       msg_set_str_value(added_media, MSG_MMS_MEDIA_FILEPATH_STR, filepath, strlen(filepath));
+               } else if (ui_mms_data->pagelist[i].isVideo) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] video file added");
+                       msg_struct_t added_media = NULL;
+                       char *filepath = ui_mms_data->pagelist[i].image_file_path;
+
+                       msg_mms_add_item(page_info, MSG_STRUCT_MMS_MEDIA, &added_media);
+                       msg_set_int_value(added_media, MSG_MMS_MEDIA_TYPE_INT, MMS_SMIL_MEDIA_VIDEO);
+                       msg_set_str_value(added_media, MSG_MMS_MEDIA_REGION_ID_STR, "Image", strlen("Image"));
+                       msg_set_str_value(added_media, MSG_MMS_MEDIA_FILEPATH_STR, filepath, strlen(filepath));
+               }
+               /* 3) sound */
+               if (ui_mms_data->pagelist[i].isSound) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] sound file added");
+                       msg_struct_t added_media = NULL;
+                       char *filepath = ui_mms_data->pagelist[i].sound_file_path;
+
+                       msg_mms_add_item(page_info, MSG_STRUCT_MMS_MEDIA, &added_media);
+                       msg_set_int_value(added_media, MSG_MMS_MEDIA_TYPE_INT, MMS_SMIL_MEDIA_AUDIO);
+                       msg_set_str_value(added_media, MSG_MMS_MEDIA_FILEPATH_STR, filepath, strlen(filepath));
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_make_mms_message(msg_handle_t msg_handle, int msg_id)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       msg_struct_t fw_mms_data = NULL;
+       MSG_COMP_MMS_DATA_S ui_mms_data = { 0, };
+
+       if (msg_data == NULL || msg_data->msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_data is NULL !! ");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ui_mms_data = msg_data->mms_data;
+
+       /* set msgid */
+       if (msg_id) {
+               D_MSG("msg_id = %d", msg_id);
+               if (msg_set_int_value(msg_data->msgInfo, MSG_MESSAGE_ID_INT, msg_id) != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] set msgId error");
+               }
+       }
+
+       /* set msg type to MMS */
+       if (msg_set_int_value(msg_data->msgInfo, MSG_MESSAGE_TYPE_INT, MSG_TYPE_MMS) != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] set message type[MMS] error");
+               return COMPOSER_RETURN_FAIL;
+       }
+       /* create mms data */
+       fw_mms_data = msg_create_struct(MSG_STRUCT_MMS);
+       if (fw_mms_data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] create mms message error!!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /* create smil header <rootlayout> <region> */
+       if (__msg_ui_composer_make_smil_header(msg_handle, fw_mms_data, ui_mms_data.isTextTop) != COMPOSER_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] smil header create error");
+               msg_release_struct(&fw_mms_data);
+               return COMPOSER_RETURN_FAIL;
+       }
+       /* set subject */
+       int subject_len = strlen(ui_mms_data.subject);
+       if (ui_mms_data.isSubject == true || subject_len > 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] Set subject ");
+               if (msg_set_str_value(msg_data->msgInfo, MSG_MESSAGE_SUBJECT_STR, ui_mms_data.subject, subject_len) != MSG_SUCCESS)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] mms set subject error ");
+       }
+       /* set attachment */
+       if (ui_mms_data.attach_count > 0) {
+               int i = 0;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ui_mms_data.attach_count = %d", ui_mms_data.attach_count);
+
+               if (ui_mms_data.attach_count > COMPOSER_MMS_MAX_ATTACH_COUNT) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] attachment count error, max count change");
+                       ui_mms_data.attach_count = COMPOSER_MMS_MAX_ATTACH_COUNT;
+               }
+
+               for (i = 0; i < ui_mms_data.attach_count; i++) {
+                       MSG_COMP_ATTACH_DATA_S *attach_data = &ui_mms_data.attachlist[i];
+                       if (attach_data == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] attachment data is NULL");
+                               break;
+                       }
+                       msg_struct_t attachment = NULL;
+                       msg_mms_add_item(fw_mms_data, MSG_STRUCT_MMS_ATTACH, &attachment);
+                       msg_set_str_value(attachment, MSG_MMS_ATTACH_FILEPATH_STR, attach_data->filepath, strlen(attach_data->filepath));
+               }
+       }
+       /* make body */
+       /* 1) make page */
+       __msg_ui_composer_make_mms_body(msg_handle, fw_mms_data);
+
+       /* 2) set MMS body */
+       msg_set_mms_struct(msg_data->msgInfo, fw_mms_data);
+       msg_release_struct(&fw_mms_data);
+
+       /* set recipient */
+       if (__msg_ui_composer_set_recipient() != COMPOSER_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT]__msg_ui_composer_set_recipient error !!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_send(msg_handle_t msg_handle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data == NULL || msg_data->msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message is not initialized");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       msg_struct_t req = msg_create_struct(MSG_STRUCT_REQUEST_INFO);
+       int msg_type = MSG_TYPE_INVALID;
+       int err;
+
+       msg_struct_t sendOpt = NULL;
+       msg_get_struct_handle(req, MSG_REQUEST_SENDOPT_HND, &sendOpt);
+       msg_set_bool_value(sendOpt, MSG_SEND_OPT_SETTING_BOOL, false);
+
+       msg_set_struct_handle(req, MSG_REQUEST_MESSAGE_HND, msg_data->msgInfo);
+       msg_get_int_value(msg_data->msgInfo, MSG_MESSAGE_TYPE_INT, &msg_type);
+
+       if (msg_is_sms(msg_type)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] try to send sms");
+               err = msg_sms_send_message(msg_handle, req);
+       } else if (msg_is_mms(msg_type)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] try to send mms");
+               err = msg_mms_send_message(msg_handle, req);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] error message type");
+               msg_release_struct(&req);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       msg_release_struct(&req);
+
+       if (err == MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] sending success");
+               return COMPOSER_RETURN_SUCCESS;
+       } else if (err == MSG_ERR_INVALID_PARAMETER) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] sending failed error code [%d] : INVALID_PARAM ", err);
+               return COMPOSER_RETURN_NULL_POINTER;
+       } else if (err == MSG_ERR_NO_SIM) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] sending failed error code [%d] : NO SIM", err);
+               return COMPOSER_RETURN_NO_SIM;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] sending failed error code [%d]", err);
+               return COMPOSER_RETURN_FAIL;
+       }
+}
+
+msg_struct_t msg_ui_composer_message_make_preview(msg_handle_t msg_handle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] can not send message,,, msg_data is NULL");
+               return NULL;
+       }
+
+       if (msg_ui_composer_create_new_message() != COMPOSER_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] create new message error !!!");
+               return NULL;
+       }
+
+       if (__msg_ui_composer_make_mms_message(msg_handle, 0)
+           != COMPOSER_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] make mms message error !!!");
+               return NULL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return msg_data->msgInfo;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_make_and_send(msg_handle_t msg_handle, int msg_id, msg_thread_id_t *tid)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] can not send message,,, msg_data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+
+       /* 1. create a new message (create msg_struct_t) */
+       if (msg_ui_composer_create_new_message() != COMPOSER_RETURN_SUCCESS) {
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /* 2. make message */
+       if (msg_data->msg_type == COMPOSER_MSG_TYPE_SMS) {
+               if (__msg_ui_composer_make_sms_message(msg_handle, msg_id) != COMPOSER_RETURN_SUCCESS)
+                       ret =  COMPOSER_RETURN_FAIL;
+       } else if (msg_data->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               if (__msg_ui_composer_make_mms_message(msg_handle, msg_id) != COMPOSER_RETURN_SUCCESS)
+                       ret = COMPOSER_RETURN_FAIL;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid message type");
+               ret = COMPOSER_RETURN_FAIL;
+       }
+
+       /*3. send message */
+       if (ret != COMPOSER_RETURN_FAIL) {
+               ret = __msg_ui_composer_send(msg_handle);
+
+               if (ret == COMPOSER_RETURN_SUCCESS || ret == COMPOSER_RETURN_NO_SIM) {
+                       msg_struct_list_s *addr_list = NULL;
+
+                       msg_get_list_handle(msg_data->msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+                       msg_get_thread_id_by_address(msg_handle, addr_list, tid);
+               }
+       }
+
+       /*4. release message */
+       msg_release_struct(&msg_data->msgInfo);
+       msg_data->msgInfo = NULL;
+
+       return ret;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_thread_id_by_address(msg_handle_t msg_handle, GSList *address_list, msg_thread_id_t *tid)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (address_list == NULL || tid == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "param is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+       int count = g_slist_length(address_list);
+       int i = 0;
+       msg_struct_list_s *addr_list = NULL;
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+
+       if (msgInfo) {
+               msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**)&addr_list);
+
+               addr_list->nCount = count;
+               for (i = 0; i < count; i++) {
+                       char *address = (char *)g_slist_nth_data(address_list, i);
+                       if (address == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL, skip");
+                               continue;
+                       }
+
+                       int addr_type = get_address_type((const char*)address);
+                       if (addr_type == COMPOSER_UTIL_ADDRTYPE_NUMBER)
+                               msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_PLMN);
+                       else if (addr_type == COMPOSER_UTIL_ADDRTYPE_EMAIL)
+                               msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_EMAIL);
+                       msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);
+                       msg_set_str_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, address, strlen(address));
+               }
+
+               msg_get_thread_id_by_address(msg_handle, addr_list, tid);
+
+               msg_release_struct(&msgInfo);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msgInfo is NULL");
+               ret = COMPOSER_RETURN_FAIL;
+       }
+
+       return ret;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_delete_draft_message(msg_handle_t msg_handle, msg_thread_id_t tid)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+       msg_struct_list_s msg_list = {0,};
+
+       if (msg_get_message_list(msg_handle, MSG_DRAFT_ID, tid, 0, 0, &msg_list) == MSG_SUCCESS) {
+               int i = 0;
+               int msgid = 0;
+
+               if (msg_list.nCount)
+                       D_MSG("delete draft message");
+
+               for (i = 0; i < msg_list.nCount; i++) {
+                       msg_get_int_value(msg_list.msg_struct_info[i], MSG_MESSAGE_ID_INT, &msgid);
+                       D_MSG("draft msg_id is %d", msgid);
+                       if (msg_delete_message(msg_handle, msgid) != COMPOSER_RETURN_SUCCESS)
+                               D_EMSG("msg_delete_message is failed, msgid = %d", msgid);
+               }
+       }
+       msg_release_list_struct(&msg_list);
+
+       return ret;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_save_message(msg_handle_t msg_handle, int msg_id)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] can not save message,,, msg_data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+
+       /* 1. create a new message (create msg_struct_t) */
+       if (msg_ui_composer_create_new_message() != COMPOSER_RETURN_SUCCESS) {
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /* 2. make message */
+       if (msg_data->msg_type == COMPOSER_MSG_TYPE_SMS) {
+               if (__msg_ui_composer_make_sms_message(msg_handle, msg_id) != COMPOSER_RETURN_SUCCESS)
+                       ret =  COMPOSER_RETURN_FAIL;
+       } else if (msg_data->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               if (__msg_ui_composer_make_mms_message(msg_handle, msg_id) != COMPOSER_RETURN_SUCCESS)
+                       ret = COMPOSER_RETURN_FAIL;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid message type");
+               ret = COMPOSER_RETURN_FAIL;
+       }
+
+       /*3. save message */
+       if (ret != COMPOSER_RETURN_FAIL) {
+               msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+               msg_set_bool_value(sendOpt, MSG_SEND_OPT_SETTING_BOOL, false);
+
+               if (!msg_id)
+                       ret = msg_add_message(msg_handle, msg_data->msgInfo, sendOpt);
+               else
+                       ret = msg_update_message(msg_handle, msg_data->msgInfo, sendOpt);
+
+               msg_release_struct(&sendOpt);
+       }
+
+       /*4. release message */
+       msg_release_struct(&msg_data->msgInfo);
+       msg_data->msgInfo = NULL;
+
+       return ret;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_data(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (msg_data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] can not save message,,, msg_data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, cd == NULL, COMPOSER_RETURN_FAIL);
+
+       if (msg_ui_composer_recipient_read_data(cd) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("Make recipient data Error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (__msg_ui_composer_body_read_data(cd) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("Make body data Error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_load_message(msg_handle_t msg_handle, int msgID)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (!msg_handle) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_handle is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       msg_struct_t load_msg = NULL;
+       msg_struct_t sendOpt = NULL;
+       msg_struct_t mmsBody = NULL;
+
+       /* create new message */
+       load_msg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       if (load_msg == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] message create message failed.");
+               return COMPOSER_RETURN_FAIL;
+       }
+       sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       if (sendOpt == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] message create sendopt failed.");
+               msg_release_struct(&load_msg);
+               return COMPOSER_RETURN_FAIL;
+       }
+       /* load message */
+       if (msg_get_message(msg_handle,(msg_message_id_t)msgID, load_msg, sendOpt) != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] msg_get_message failed");
+               msg_release_struct(&load_msg);
+               msg_release_struct(&sendOpt);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /* load "FROM" address */
+       msg_struct_list_s *addr_list = NULL;
+       msg_get_list_handle(load_msg, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+
+       if (addr_list) {
+               int addr_count = addr_list->nCount;
+               int i = 0;
+               char number_str[MAX_ADDRESS_VAL_LEN + 1] = {0,};
+
+               for (i = 0; i < addr_count; i++) {
+                       memset(number_str, 0, sizeof(number_str));
+
+                       msg_get_str_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, number_str, MAX_ADDRESS_VAL_LEN);
+
+                       if (strlen(number_str))
+                               msg_ui_composer_message_add_address(number_str);
+               }
+       }
+
+       /* load message type */
+       int msgType;
+       msg_get_int_value(load_msg, MSG_MESSAGE_TYPE_INT, &msgType);
+
+       if (msgType == MSG_TYPE_SMS) {
+               char *body_text = NULL;
+               int body_size = 0;
+
+               msg_data->msg_type = COMPOSER_MSG_TYPE_SMS;
+
+               msg_get_int_value(load_msg, MSG_MESSAGE_DATA_SIZE_INT, &body_size);
+
+               if (body_size > 0)
+                       body_text = (char *)calloc(1, body_size+1);
+
+               if (body_text)
+                       msg_get_str_value(load_msg, MSG_MESSAGE_SMS_DATA_STR, body_text, body_size);
+
+               if (body_text && strlen(body_text) > 0) {
+                       msg_data->sms_data.body_text = strdup(body_text);
+                       msg_data->sms_data.body_length = strlen(body_text);
+               }
+
+               if (body_text)
+                       free(body_text);
+
+       } else if (msgType == MSG_TYPE_MMS) {
+               char subject[MAX_SUBJECT_LEN+1] = {0,};
+               msg_data->msg_type = COMPOSER_MSG_TYPE_MMS;
+
+               /* load mms body */
+               mmsBody = msg_create_struct(MSG_STRUCT_MMS);
+               if (mmsBody == NULL) {
+                       msg_release_struct(&load_msg);
+                       msg_release_struct(&sendOpt);
+                       return COMPOSER_RETURN_FAIL;
+               }
+               msg_get_mms_struct(load_msg, mmsBody);
+               /* load subject */
+               if (msg_get_str_value(load_msg, MSG_MESSAGE_SUBJECT_STR, subject, MAX_SUBJECT_LEN) != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] No subject data");
+                       msg_data->mms_data.isSubject = false;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] loaded subject : [%s]", subject);
+                       msg_data->mms_data.isSubject = true;
+                       strncpy(msg_data->mms_data.subject, subject, COMPOSER_SUBJECT_MAX_BYTE);
+               }
+
+               /* load region */
+               msg_list_handle_t region_list = NULL;
+               msg_get_list_handle(mmsBody, MSG_MMS_REGION_LIST_HND, (void **)&region_list);
+
+               int region_count = msg_list_length(region_list);
+               if (region_count >= 2) {
+                       msg_struct_t region_info_0 = NULL;
+                       msg_struct_t region_info_1 = NULL;
+                       bool is_text_top = false;
+
+                       region_info_0 = (msg_struct_t)msg_list_nth_data(region_list, 0);
+                       region_info_1 = (msg_struct_t)msg_list_nth_data(region_list, 1);
+
+                       if (msg_ui_composer_check_is_text_top(region_info_0, region_info_1, &is_text_top) == COMPOSER_RETURN_SUCCESS)
+                               msg_data->mms_data.isTextTop = is_text_top;
+               } else {
+                       D_EMSG("there is no region info region_count = %d", region_count);
+               }
+
+               /* load attachment */
+               msg_list_handle_t attach_list = NULL;
+               msg_get_list_handle(mmsBody, MSG_MMS_ATTACH_LIST_HND, (void **)&attach_list);
+               msg_data->mms_data.attach_count = msg_list_length(attach_list);
+
+               if (msg_data->mms_data.attach_count > 0) {
+                       int i = 0;
+
+                       for (i = 0; i < msg_data->mms_data.attach_count ; i++) {
+                               msg_struct_t attach_info = (msg_struct_t)msg_list_nth_data(attach_list, i);
+
+                               if (attach_info == NULL) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] attachment [%d]th item loading error ", i);
+                                       continue;
+                               }
+
+                               msg_get_int_value(attach_info, MSG_MMS_ATTACH_MIME_TYPE_INT, &msg_data->mms_data.attachlist[i].filetype);
+                               msg_get_str_value(attach_info, MSG_MMS_ATTACH_FILEPATH_STR, msg_data->mms_data.attachlist[i].filepath, sizeof(msg_data->mms_data.attachlist[i].filepath));
+                               msg_get_str_value(attach_info, MSG_MMS_ATTACH_FILENAME_STR, msg_data->mms_data.attachlist[i].filename, sizeof(msg_data->mms_data.attachlist[i].filename));
+                       }
+               }
+
+               /* load body (page and text, media) */
+               msg_list_handle_t page_list = NULL;
+               msg_get_list_handle(mmsBody, MSG_MMS_PAGE_LIST_HND, (void **)&page_list);
+
+               msg_data->mms_data.page_count = msg_list_length(page_list);
+
+               if (msg_data->mms_data.page_count > 0) {
+                       int i = 0;
+
+                       for (i = 0; i < msg_data->mms_data.page_count; i++) {
+                               msg_struct_t pageInfo = msg_list_nth_data(page_list, i);
+                               msg_list_handle_t media_list = NULL;
+                               int media_count = 0;
+
+                               if (pageInfo == NULL) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] MMS PAGE [%d]th page loading error ", i);
+                                       continue;
+                               }
+
+                               /* get page duration */
+                               int page_duration = 0;
+                               msg_get_int_value(pageInfo, MSG_MMS_PAGE_PAGE_DURATION_INT, &page_duration);
+                               if (page_duration % 1000)
+                                       page_duration = page_duration / 1000 + 1;
+                               else
+                                       page_duration = page_duration / 1000;
+
+                               msg_data->mms_data.pagelist[i].page_duration = page_duration;
+
+                               msg_get_list_handle(pageInfo, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&media_list);
+                               media_count = msg_list_length(media_list);
+
+                               if (media_count > 0) {
+                                       int j = 0;
+
+                                       for (j = 0; j < media_count; j++) {
+                                               msg_struct_t mediaInfo = (msg_struct_t)msg_list_nth_data(media_list, j);
+                                               int mediatype;
+
+                                               if (mediaInfo == NULL) {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] MMS PAGE [%d]th page loading error ", j);
+                                                       continue;
+                                               }
+
+                                               msg_get_int_value(mediaInfo, MSG_MMS_MEDIA_TYPE_INT, &mediatype);
+                                               /* if media type image or video */
+                                               if (mediatype == MMS_SMIL_MEDIA_IMG) {
+                                                       msg_data->mms_data.pagelist[i].isImage = true;
+                                                       msg_get_str_value(mediaInfo, MSG_MMS_MEDIA_FILEPATH_STR, msg_data->mms_data.pagelist[i].image_file_path, sizeof(msg_data->mms_data.pagelist[i].image_file_path));
+                                               } else if (mediatype == MMS_SMIL_MEDIA_VIDEO || mediatype == MMS_SMIL_MEDIA_IMG_OR_VIDEO) {
+                                                       msg_data->mms_data.pagelist[i].isVideo = true;
+                                                       msg_get_str_value(mediaInfo, MSG_MMS_MEDIA_FILEPATH_STR, msg_data->mms_data.pagelist[i].image_file_path, sizeof(msg_data->mms_data.pagelist[i].image_file_path));
+                                               } else if (mediatype == MMS_SMIL_MEDIA_AUDIO) {
+                                                       msg_data->mms_data.pagelist[i].isSound = true;
+                                                       msg_get_str_value(mediaInfo, MSG_MMS_MEDIA_FILEPATH_STR, msg_data->mms_data.pagelist[i].sound_file_path, sizeof(msg_data->mms_data.pagelist[i].sound_file_path));
+                                               } else if (mediatype == MMS_SMIL_MEDIA_TEXT) {
+                                                       FILE *fp = NULL;
+                                                       char filepath[DEF_BUF_LEN_L] = {0,};
+                                                       msg_get_str_value(mediaInfo, MSG_MMS_MEDIA_FILEPATH_STR, filepath, sizeof(filepath));
+
+                                                       if (access(filepath, R_OK) == 0) {
+                                                               if (!(fp = fopen(filepath, "r"))) {
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR]File Open Error");
+                                                                       msg_data->mms_data.pagelist[i].isText = false;
+                                                                       continue;
+                                                               }
+
+                                                               struct stat stat_buf;
+                                                               if (stat(filepath, &stat_buf) != 0) {
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR]Getting file information Error");
+                                                                       msg_data->mms_data.pagelist[i].isText = false;
+                                                                       fclose(fp);
+                                                                       continue;
+                                                               }
+
+                                                               if (stat_buf.st_size <= 0) {
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR]Getting file size is ZERO");
+                                                                       msg_data->mms_data.pagelist[i].isText = false;
+                                                                       fclose(fp);
+                                                                       continue;
+                                                               }
+
+                                                               msg_data->mms_data.pagelist[i].isText = true;
+
+                                                               int result = fread(msg_data->mms_data.pagelist[i].body_text, sizeof(char), stat_buf.st_size, fp);
+                                                               if (result != stat_buf.st_size)
+                                                                       D_EMSG("fread result is different!! result = %d, stat_buf.st_size = %d", result, stat_buf.st_size);
+
+                                                               fclose(fp);
+                                                       } else {
+                                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] file access failed");
+                                                               msg_data->mms_data.pagelist[i].isText = false;
+                                                       }
+
+                                               } else {
+                                                       msg_release_struct(&mmsBody);
+                                                       msg_release_struct(&load_msg);
+                                                       msg_release_struct(&sendOpt);
+                                                       return COMPOSER_RETURN_INVALID_MEDIA_TYPE;
+                                               }
+                                       }
+                               }
+                       }
+               }
+       } else {
+               msg_data->msg_type = COMPOSER_MSG_TYPE_INVALID;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] invalid message type");
+               msg_release_struct(&load_msg);
+               msg_release_struct(&sendOpt);
+               return COMPOSER_RETURN_INVALID_MSG_TYPE;
+       }
+
+       if (msgType == MSG_TYPE_MMS)
+               msg_release_struct(&mmsBody);
+
+       msg_release_struct(&load_msg);
+       msg_release_struct(&sendOpt);
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static void __msgc_warning_popup_ok_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+       int page = (int)evas_object_data_get(cd->popup_end, "page_index");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_ALLOWED;
+
+       msg_ui_composer_message_set_page_data(cd, page);
+
+       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_NONE;
+
+       msg_ui_composer_message_destroy();
+
+       D_LEAVE;
+}
+
+static void __msgc_warning_popup_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       int page = (int)evas_object_data_get(cd->popup_end, "page_index");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_NOT_ALLOWED;
+
+       msg_ui_composer_message_set_page_data(cd, page);
+
+       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_NONE;
+
+       msg_ui_composer_message_destroy();
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_page_data(void *composer_data, int page)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(composer_data == NULL, COMPOSER_RETURN_FAIL, "composer data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)composer_data;
+       int ret = COMPOSER_RETURN_SUCCESS;
+       static bool is_drm = false;
+       static bool is_restricted_mode = false;
+
+       D_MSG("MMS PAGE COUNT [%d], page = %d", msg_data->mms_data.page_count, page);
+
+       if (page > msg_data->mms_data.page_count)
+               return COMPOSER_RETURN_FAIL;
+
+       for (; page < msg_data->mms_data.page_count; page++) {
+               if (msg_data->mms_data.pagelist[page].isImage) {
+                       ret = msg_ui_composer_body_set_loaded_media(cd, msg_data->mms_data.pagelist[page].image_file_path, COMPOSER_MEDIA_TYPE_IMAGE, page);
+               } else if (msg_data->mms_data.pagelist[page].isVideo) {
+                       ret = msg_ui_composer_body_set_loaded_media(cd, msg_data->mms_data.pagelist[page].image_file_path, COMPOSER_MEDIA_TYPE_VIDEO, page);
+               }
+
+               if (msg_data->mms_data.pagelist[page].isSound) {
+                       ret = msg_ui_composer_body_set_loaded_media(cd, msg_data->mms_data.pagelist[page].sound_file_path, COMPOSER_MEDIA_TYPE_AUDIO, page);
+               }
+
+               if (ret == COMPOSER_RETURN_DRM_FORWARDLOCK) {
+                       D_MSG("ret COMPOSER_RETURN_DRM_FORWARDLOCK");
+                       is_drm = true;
+               } else if (ret == COMPOSER_RETURN_CREATION_RESTRICTED_MODE_FAIL) {
+                       D_MSG("ret COMPOSER_RETURN_CREATION_RESTRICTED_MODE_FAIL");
+                       is_restricted_mode = true;
+               } else if (ret == COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL) {
+                       D_MSG("ret COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL");
+                       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+                       /* show warning mode popup */
+                       Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, _MSGSTR("IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"), 0);
+                       Evas_Object *btn1 = elm_button_add(popup);
+                       elm_object_style_set(btn1, "popup_button/default");
+                       elm_object_text_set(btn1, MSGC_STR_BUTTON_OK);
+                       elm_object_part_content_set(popup, "button1", btn1);
+                       evas_object_smart_callback_add(btn1, "clicked", __msgc_warning_popup_ok_btn_clicked_cb, cd);
+                       Evas_Object *btn2 = elm_button_add(popup);
+                       elm_object_style_set(btn2, "popup_button/default");
+                       elm_object_text_set(btn2, MSGC_STR_BUTTON_CANCEL);
+                       elm_object_part_content_set(popup, "button2", btn2);
+                       evas_object_smart_callback_add(btn2, "clicked", __msgc_warning_popup_cancel_btn_clicked_cb, cd);
+                       elm_object_focus_allow_set(popup, EINA_TRUE);
+                       elm_object_focus_set(popup, EINA_TRUE);
+                       cd->popup_end = popup;
+
+                       evas_object_data_set(popup, "page_index", (void *)page);
+
+                       return ret;
+               }
+
+               if (msg_data->mms_data.pagelist[page].isText) {
+                       msg_ui_composer_body_set_loaded_text(cd, msg_data->mms_data.pagelist[page].body_text, page);
+               }
+
+               /* set page duration */
+               msg_ui_composer_body_set_loaded_page_duration(cd, msg_data->mms_data.pagelist[page].page_duration, page);
+       }
+
+       if (is_drm) {
+               /* show drm forwardlock popup */
+               Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, MSGC_STR_POP_FILE_IS_FORWARD_LOCK, 0);
+               Evas_Object *btn1 = elm_button_add(popup);
+               elm_object_style_set(btn1, "popup_button/default");
+               elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+               elm_object_part_content_set(popup, "button1", btn1);
+               evas_object_smart_callback_add(btn1, "clicked", msg_ui_composer_status_popup_response_cb, popup);
+               elm_object_focus_allow_set(popup, EINA_TRUE);
+               elm_object_focus_set(popup, EINA_TRUE);
+       } else if (is_restricted_mode) {
+               /* show restricted mode popup */
+               Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, _MSGSTR("Unsupported media type"), 0);
+               Evas_Object *btn1 = elm_button_add(popup);
+               elm_object_style_set(btn1, "popup_button/default");
+               elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+               elm_object_part_content_set(popup, "button1", btn1);
+               evas_object_smart_callback_add(btn1, "clicked", msg_ui_composer_status_popup_response_cb, popup);
+               elm_object_focus_allow_set(popup, EINA_TRUE);
+               elm_object_focus_set(popup, EINA_TRUE);
+       }
+
+       if (!msg_ui_composer_popup_exist(cd))
+               msg_ui_composer_last_focus_load(cd);
+
+       is_drm = false;
+       is_restricted_mode = false;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_loaded_data(void *composer_data, bool set_recipient)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)composer_data;
+       int i = 0;
+       int ret = COMPOSER_RETURN_SUCCESS;
+
+       /* recipient */
+       if (set_recipient) {
+               if (msg_data->recp_list) {
+
+                       int count = g_slist_length(msg_data->recp_list);
+                       char *address = NULL;
+
+                       for (i = 0; i < count; i++) {
+                               address = (char *)g_slist_nth_data(msg_data->recp_list, i);
+
+                               if (address)
+                                       msg_ui_composer_recipient_set_loaded_data(cd, address, 0);
+                       }
+               }
+       }
+
+       if (msg_data->msg_type == COMPOSER_MSG_TYPE_SMS) {
+               msg_ui_composer_body_set_loaded_text(cd, msg_data->sms_data.body_text, 0);
+               return COMPOSER_RETURN_SUCCESS;
+       }
+
+       /* subject */
+       if (msg_data->mms_data.isSubject)
+               msg_ui_composer_subject_set_loaded_data(cd, msg_data->mms_data.subject);
+
+       /* region */
+       if (msg_data->mms_data.isTextTop)
+               cd->body_data.region_order = COMPOSER_REGION_ORDER_TEXT_TOP;
+       else
+               cd->body_data.region_order = COMPOSER_REGION_ORDER_IMAGE_TOP;
+
+       /* attachment */
+       for (i = 0; i < msg_data->mms_data.attach_count; i++) {
+               char *filepath = msg_data->mms_data.attachlist[i].filepath;
+               int filetype = msg_data->mms_data.attachlist[i].filetype;
+
+               msg_ui_composer_attachment_set_loaded_data(cd, filepath, filetype);
+       }
+
+       /* body page data*/
+       ret = msg_ui_composer_message_set_page_data(cd, 0);
+
+       if (ret == COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL)
+               return ret;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
diff --git a/composer/src/ui-composer/msg-ui-composer-attachment.c b/composer/src/ui-composer/msg-ui-composer-attachment.c
new file mode 100755 (executable)
index 0000000..056c056
--- /dev/null
@@ -0,0 +1,592 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-composer-attachment.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-external.h"
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-subject.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-util.h"
+#include <msg-ui-common-utility.h>
+
+int64 msg_ui_composer_get_attached_item_size(void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       MSG_COMPOSER_ATTACH_S *attach_data = &cd->attach_data;
+
+       int64 temp_file_size = 0;
+       Eina_List *list = NULL;
+
+       MSG_COMPOSER_ATTACH_ITEM_S *cai;
+       EINA_LIST_FOREACH(attach_data->attachitem_list, list, cai) {
+               temp_file_size += msg_composer_get_file_size(cai->file_path);
+       }
+
+       D_LEAVE;
+       return temp_file_size;
+}
+
+static void __msgc_update_attach_main_layout(MSG_COMPOSER_VIEW_DATA_S *cd, int attach_count)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "cd is NULL");
+       D_MSG_RETM_IF(cd->ly_attach_main == NULL, "ly_attach_main is NULL");
+
+       char buf[DEF_BUF_LEN_S + 1] = {0,};
+       const char *str = _MSGSTR("IDS_MSGC_BODY_PD_ATTACHMENTS");
+       snprintf(buf, sizeof(buf), str, attach_count);
+
+       edje_object_part_text_set(_EDJ(cd->ly_attach_main), "text.filename", buf);
+
+       D_LEAVE;
+}
+
+static void __msgc_remove_attachment_item(void *data, MSG_COMPOSER_ATTACH_ITEM_S *remove_item)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+       MSG_COMPOSER_ATTACH_S *attach_data = &cd->attach_data;
+
+       attach_data->attachitem_list = eina_list_remove(attach_data->attachitem_list, remove_item);
+       attach_data->attachment_Cnt--;
+
+       __msgc_update_attach_main_layout(cd, attach_data->attachment_Cnt);
+
+       /* remove temp file */
+       ecore_file_remove(remove_item->file_path);
+
+       evas_object_del(remove_item->layout);
+       g_free(remove_item);
+
+       msg_ui_composer_body_info_area_update(cd);
+
+       if (attach_data->attachment_Cnt == 0) {
+               msg_ui_composer_message_type_check_and_change(cd);
+
+               if (!msg_ui_composer_common_is_send_possible(cd)) {
+                       elm_object_disabled_set(cd->send_button, EINA_TRUE);
+                       msg_ui_composer_body_update_send_btn_icon(cd, true);
+                       edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", "");/* remove character count */
+               } else {
+                       elm_object_disabled_set(cd->send_button, EINA_FALSE);
+                       msg_ui_composer_body_update_send_btn_icon(cd, false);
+               }
+               /* remove attach main layout */
+               MSGC_EVAS_OBJECT_DEL(cd->ly_attach_main);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_attachment_clear(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+       MSG_COMPOSER_ATTACH_S *attach_data = &cd->attach_data;
+
+       if (attach_data->attachment_Cnt > 0) {
+               MSG_COMPOSER_ATTACH_ITEM_S *attach_item = NULL;
+               int attach_count = attach_data->attachment_Cnt;
+               int i = 0;
+
+               for (i = 0; i < attach_count; i++) {
+                       attach_item = (MSG_COMPOSER_ATTACH_ITEM_S *)
+                           eina_list_nth(attach_data->attachitem_list, 0);
+
+                       if (attach_item) {
+                               if (evas_object_visible_get(cd->ly_attach_main) == EINA_FALSE)
+                                       elm_box_unpack(cd->body_box, attach_item->layout);
+
+                               evas_object_del(attach_item->layout);
+
+                               attach_data->attachitem_list = eina_list_remove(attach_data->attachitem_list, attach_item);
+                               free(attach_item);
+                       }
+               }
+               /* remove attach main layout */
+               if (evas_object_visible_get(cd->ly_attach_main) == EINA_TRUE)
+                       elm_box_unpack(cd->body_box, cd->ly_attach_main);
+
+               evas_object_del(cd->ly_attach_main);
+               cd->ly_attach_main = NULL;
+       }
+
+       attach_data->attachment_Cnt = 0;
+       attach_data->attachitem_list = NULL;
+
+       D_LEAVE;
+}
+
+static void __msgc_attachment_del_btn_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_DEL_BTN_PRESS_ICON);
+}
+
+static void __msgc_attachment_del_btn_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_ATTACHMENT_DEL_ICON);
+}
+
+static void __msgc_attachment_del_icon_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "composer data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       Evas_Object *layout = evas_object_data_get(obj, "layout");
+       MSG_COMPOSER_ATTACH_ITEM_S *remove_item = NULL;
+
+       if (!cd->is_default_body_size) {
+               remove_item = evas_object_data_get(layout, "attach_item");
+               __msgc_remove_attachment_item(data, remove_item);
+
+               msg_ui_composer_message_type_check_and_change(cd);
+       }
+
+       /* in invalid recipient case, give focus to other widget to call verify_cb of recipient */
+       if (msg_ui_composer_last_focus_is_recipient(cd)) {
+               const char *recipient = msg_ui_composer_recipient_entry_text_get(cd->recipient);
+
+               if (recipient && recipient[0] != '\0') {
+                       if (!msg_ui_composer_recipient_vaild_check(recipient))
+                               elm_object_focus_set(cd->back_btn, EINA_TRUE);
+               }
+       }
+
+       D_LEAVE;
+}
+
+static void __msgc_attachment_thumb_icon_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (!cd->is_default_body_size) {
+               Evas_Object *layout = evas_object_data_get(obj, "layout");
+               MSG_COMPOSER_ATTACH_ITEM_S *attach_item = evas_object_data_get(layout, "attach_item");
+
+               D_MSG("File path %s", attach_item->file_path);
+
+               msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_COMMON, attach_item->file_path);
+       }
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msgc_attachment_create_attach_layout(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent, const char *filepath)
+{
+       D_ENTER;
+
+       if (!cd || !filepath || strlen(filepath) == 0) {
+               D_EMSG("compsoer data or file information is not exist !!!");
+               return NULL;
+       }
+
+       Evas_Object *layout = NULL;
+       Evas_Object *thumb_icon = NULL;
+       Evas_Object *del_icon = NULL;
+       const char *filename = NULL;
+       const char *icon_path = NULL;
+
+       layout = elm_layout_add(parent);
+
+       if (!layout) {
+               D_EMSG("layout create error");
+               return NULL;
+       }
+
+       elm_layout_file_set(layout, msg_ui_composer_edj_get(cd), MSGC_EDJ_GRP_ATTACHMENT_ITEM);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_show(layout);
+
+       thumb_icon = elm_icon_add(layout);
+
+       icon_path = msg_common_get_file_icon(filepath);
+
+       if (icon_path) {
+               elm_image_file_set(thumb_icon, MSG_IMAGES_EDJ, icon_path);
+       } else {
+               D_EMSG("icon_path is NULL");
+               elm_image_file_set(thumb_icon, MSG_IMAGES_EDJ, MSGC_IMG_ATTACHMENT_ICON);
+       }
+
+       evas_object_data_set(thumb_icon, "layout", layout);
+
+       evas_object_show(thumb_icon);
+
+       elm_object_part_content_set(layout, "swl.image", thumb_icon);
+
+       filename = ecore_file_file_get(filepath);
+       if (filename) {
+               edje_object_part_text_set(_EDJ(layout), "text.filename", filename);
+       } else {
+               D_EMSG("Error of filename");
+       }
+
+       del_icon = elm_icon_add(layout);
+       elm_image_file_set(del_icon, MSG_IMAGES_EDJ, MSGC_IMG_ATTACHMENT_DEL_ICON);
+       evas_object_size_hint_weight_set(del_icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(del_icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_show(del_icon);
+       evas_object_data_set(del_icon, "layout", layout);
+
+       elm_object_part_content_set(layout, "swl.delete_btn", del_icon);
+
+       evas_object_smart_callback_add(del_icon, "clicked", __msgc_attachment_del_icon_clicked_cb, cd);
+       evas_object_event_callback_add(del_icon, EVAS_CALLBACK_MOUSE_DOWN, __msgc_attachment_del_btn_down_cb, NULL);
+       evas_object_event_callback_add(del_icon, EVAS_CALLBACK_MOUSE_UP, __msgc_attachment_del_btn_up_cb, NULL);
+
+       if (!cd->isAppControl || !cd->isEmulator)
+               evas_object_smart_callback_add(thumb_icon, "clicked", __msgc_attachment_thumb_icon_clicked_cb, cd);
+
+       D_LEAVE;
+       return layout;
+}
+
+int msg_ui_composer_get_attach_count(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, 0, "cd is NULL");
+       Eina_List *attach_list = cd->attach_data.attachitem_list;
+       D_MSG_RETVM_IF(attach_list == NULL, 0, "attach_list is NULL");
+
+       int attach_count = eina_list_count(attach_list);
+
+       return attach_count;
+}
+
+void msg_ui_composer_expand_attach_list(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "cd is NULL");
+       D_MSG_RETM_IF(cd->ly_attach_main == NULL, "ly_attach_main is NULL");
+
+       if (evas_object_visible_get(cd->ly_attach_main) == EINA_TRUE) {
+               /*hide attach main layout */
+               elm_box_unpack(cd->body_box, cd->ly_attach_main);
+               evas_object_hide(cd->ly_attach_main);
+
+               /* show attach list */
+               MSG_COMPOSER_ATTACH_ITEM_S *attach_item = NULL;
+               Eina_List *attach_list = cd->attach_data.attachitem_list;
+               int attach_count = eina_list_count(attach_list);
+               int i = 0;
+
+               D_MSG("attach_count = %d", attach_count);
+
+               Eina_List *page_list = cd->body_data.page_list;
+               MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, 0);
+
+               for (i = 0; i < attach_count; i++) {
+                       attach_item = (MSG_COMPOSER_ATTACH_ITEM_S *)eina_list_nth(attach_list, i);
+                       if (attach_item) {
+                               elm_box_pack_before(cd->body_box, attach_item->layout, page_data->layout);
+                               evas_object_show(attach_item->layout);
+                       } else {
+                               D_EMSG("attach_item is NULL!! i = %d", i);
+                       }
+               }
+       } else {
+               D_MSG("attach main layout is Already hidden");
+       }
+}
+
+void msg_ui_composer_contract_attach_list(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "cd is NULL");
+       D_MSG_RETM_IF(cd->ly_attach_main == NULL, "ly_attach_main is NULL");
+
+       if (evas_object_visible_get(cd->ly_attach_main) == EINA_FALSE) {
+               /* hide attachment list */
+               MSG_COMPOSER_ATTACH_ITEM_S *attach_item = NULL;
+               Eina_List *attach_list = cd->attach_data.attachitem_list;
+               int attach_count = eina_list_count(attach_list);
+               int i = 0;
+
+               D_MSG("attach_count = %d", attach_count);
+
+               if (attach_count > 1) {
+                       for (i = 0; i < attach_count; i++) {
+                               attach_item = (MSG_COMPOSER_ATTACH_ITEM_S *)eina_list_nth(attach_list, i);
+                               if (attach_item) {
+                                       elm_box_unpack(cd->body_box, attach_item->layout);
+                                       evas_object_hide(attach_item->layout);
+                               } else {
+                                       D_EMSG("attach_item is NULL !! i = %d", i);
+                               }
+                       }
+
+                       Eina_List *page_list = cd->body_data.page_list;
+                       MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, 0);
+                       /* show attach main layout */
+                       elm_box_pack_before(cd->body_box, cd->ly_attach_main, page_data->layout);
+                       evas_object_show(cd->ly_attach_main);
+               }
+       } else {
+               D_MSG("attach main layout is Already shown");
+       }
+}
+
+static void __msgc_attachment_main_layout_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       msg_ui_composer_expand_attach_list(cd);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msgc_attachment_create_attach_main_layout(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent, int attach_count)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+       Evas_Object *layout = NULL;
+       Evas_Object *thumb_icon = NULL;
+
+       layout = elm_layout_add(parent);
+
+       if (!layout) {
+               D_EMSG("layout create error");
+               return NULL;
+       }
+
+       elm_layout_file_set(layout, msg_ui_composer_edj_get(cd), MSGC_EDJ_GRP_ATTACHMENT_MAIN);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+
+       thumb_icon = elm_icon_add(layout);
+       elm_image_file_set(thumb_icon, MSG_IMAGES_EDJ, MSGC_IMG_ATTACHMENT_ICON);
+       evas_object_show(thumb_icon);
+
+       elm_object_part_content_set(layout, "swl.image", thumb_icon);
+
+       char buf[DEF_BUF_LEN_S + 1] = {0,};
+       const char *str = _MSGSTR("IDS_MSGC_BODY_PD_ATTACHMENTS");
+
+       snprintf(buf, sizeof(buf), str, attach_count);
+       edje_object_part_text_set(_EDJ(layout), "text.filename", buf);
+       edje_object_signal_callback_add(_EDJ(layout), "attach_clicked", "", __msgc_attachment_main_layout_clicked_cb, (void *)cd);
+
+       D_LEAVE;
+       return layout;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_add_attach_media(MSG_COMPOSER_VIEW_DATA_S
+                                                       *cd, const char *filepath, COMPOSER_MEDIA_TYPE_E media_type)
+{
+       D_ENTER;
+
+       if (!cd || !filepath || strlen(filepath) == 0) {
+               D_EMSG("composer data or file path is not exist");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       Evas_Object *body_box = cd->body_box;
+       MSG_COMPOSER_ATTACH_S *attach_data = &cd->attach_data;
+       MSG_COMPOSER_ATTACH_ITEM_S *attach_item = NULL;
+
+       int attach_count = eina_list_count(attach_data->attachitem_list);
+
+       if (attach_count >= COMPOSER_MMS_MAX_ATTACH_COUNT) {
+               char popup_msg[DEF_BUF_LEN_L + 1] = { 0, };
+               const char *str = MSGC_STR_POP_ATTACHMENT_COUNT_MAX;
+               snprintf(popup_msg, sizeof(popup_msg), str, COMPOSER_MMS_MAX_ATTACH_COUNT, COMPOSER_MMS_MAX_ATTACH_COUNT);
+               Evas_Object *popup = msg_ui_composer_status_popup_show(cd->main_window, cd, popup_msg, COMPOSER_STATUS_POPUP_DEFAULT_TIME);
+               Evas_Object *btn1 = elm_button_add(popup);
+               elm_object_style_set(btn1, "popup_button/default");
+               elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+               elm_object_part_content_set(popup, "button1", btn1);
+               evas_object_smart_callback_add(btn1, "clicked", msg_ui_composer_status_popup_response_cb, popup);
+               elm_object_focus_allow_set(popup, EINA_TRUE);
+               elm_object_focus_set(popup, EINA_TRUE);
+
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (attach_count > 0) {
+               Eina_List *list = attach_data->attachitem_list;
+               MSG_COMPOSER_ATTACH_ITEM_S *attached_item = NULL;
+               int i = 0;
+
+               for (i = 0; i < attach_count; i++) {
+                       attached_item = (MSG_COMPOSER_ATTACH_ITEM_S *)eina_list_nth(list, i);
+
+                       if (strncmp(attached_item->file_path, filepath, strlen(attached_item->file_path)) == 0) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] already exist");
+                               Evas_Object *popup = msg_ui_composer_status_popup_show(cd->main_window, cd, MSGC_STR_POP_FILE_EXIST, COMPOSER_STATUS_POPUP_DEFAULT_TIME);
+                               Evas_Object *btn1 = elm_button_add(popup);
+                               elm_object_style_set(btn1, "popup_button/default");
+                               elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+                               elm_object_part_content_set(popup, "button1", btn1);
+                               evas_object_smart_callback_add(btn1, "clicked", msg_ui_composer_status_popup_response_cb, popup);
+                               elm_object_focus_allow_set(popup, EINA_TRUE);
+                               elm_object_focus_set(popup, EINA_TRUE);
+
+                               return COMPOSER_RETURN_ATTACHMENT_ALREADY_EXIST;
+                       }
+               }
+       }
+
+       attach_item = (MSG_COMPOSER_ATTACH_ITEM_S *)calloc(1, sizeof(MSG_COMPOSER_ATTACH_ITEM_S));
+       if (!attach_item) {
+               D_EMSG("calloc is failed");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       char *file_name = ecore_file_app_exe_get(ecore_file_file_get(filepath));
+       if (!file_name) {
+               D_EMSG("file_name is NULL");
+               free(attach_item);
+
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       strncpy(attach_item->file_path, filepath, strlen(filepath));
+       strncpy(attach_item->file_name, file_name, strlen(file_name));
+       g_free(file_name);
+
+       /* create attach main layout */
+       if (!cd->ly_attach_main) {
+               cd->ly_attach_main = __msgc_attachment_create_attach_main_layout(cd, cd->ly_body, attach_count);
+               evas_object_hide(cd->ly_attach_main);
+       }
+
+       msg_ui_composer_expand_attach_list(cd);
+
+       attach_item->type = media_type;
+
+       attach_item->layout = __msgc_attachment_create_attach_layout(cd, cd->ly_body, attach_item->file_path);
+       if (!attach_item->layout) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] attachment item create error");
+               free(attach_item);
+
+               if (!attach_count)
+                       MSGC_EVAS_OBJECT_DEL(cd->ly_attach_main);
+
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       evas_object_data_set(attach_item->layout, "attach_item", attach_item);
+
+       attach_data->attachitem_list = eina_list_append(attach_data->attachitem_list, attach_item);
+       attach_data->attachment_Cnt++;
+
+       Eina_List *page_list = cd->body_data.page_list;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, 0);
+
+       elm_box_pack_before(body_box, attach_item->layout, page_data->layout);
+
+       elm_object_disabled_set(cd->send_button, EINA_FALSE);
+
+       msg_ui_composer_message_type_check_and_change(cd);
+
+       msg_ui_composer_body_info_area_update(cd);
+
+       __msgc_update_attach_main_layout(cd, attach_data->attachment_Cnt);
+
+       D_MSG("cd->attach_index = %d", cd->attach_index);
+
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {
+               int media_count = eina_list_count(cd->attachlist);
+
+               /* show invalid popup when last content is added*/
+               if (media_count == cd->attach_index) {
+                       msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK);
+               }
+       } else {
+               /* change last focused entry to a page that is added media recently*/
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, cd->current_edit_entry);
+               if (page_data) {
+                       msg_ui_composer_last_focused_entry_set(cd, page_data->entry);
+               }
+       }
+       D_LEAVE;
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_read_attachments(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_NULL_POINTER, "composer data is NULL");
+       MSG_COMPOSER_ATTACH_S *attach_data = &cd->attach_data;
+       int attach_count = attach_data->attachment_Cnt;
+       Eina_List *attach_list = attach_data->attachitem_list;
+       MSG_COMPOSER_ATTACH_ITEM_S *attach_item = NULL;
+       int i = 0;
+
+       msg_ui_composer_message_set_attach_count(attach_count);
+
+       for (i = 0; i < attach_data->attachment_Cnt; i++) {
+               attach_item = (MSG_COMPOSER_ATTACH_ITEM_S *)eina_list_nth(attach_list, i);
+               if (attach_item) {
+                       if (msg_ui_composer_message_add_attachments(attach_item->file_path, attach_item->type) != COMPOSER_RETURN_SUCCESS) {
+                               attach_count--;
+                       }
+               } else {
+                       attach_count--;
+               }
+       }
+
+       if (attach_count < 0)
+               attach_count = 0;
+
+       msg_ui_composer_message_set_attach_count(attach_count);
+
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_attachment_set_loaded_data(void *data, const char
+                                                                 *filepath, int filetype)
+{
+       D_MSG_RETVM_IF(data == NULL, COMPOSER_RETURN_NULL_POINTER, "data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       /*Check drm file && forward lock*/
+       if (msg_composer_is_drm_file(filepath) == COMPOSER_UTIL_RET_SUCCESS) {
+               if (msg_composer_is_drm_forwardlock(filepath) == COMPOSER_UTIL_RET_SUCCESS)
+                       return COMPOSER_RETURN_DRM_FORWARDLOCK;
+       }
+
+       char local_item_path[COMPOSER_FILEPATH_LEN_MAX + 1] = {0,};
+       /* copy temp file */
+       if (msg_ui_composer_common_get_file(cd, filepath, local_item_path, COMPOSER_FILEPATH_LEN_MAX) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("get file error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       return msg_ui_composer_add_attach_media(cd, local_item_path, filetype);
+
+}
diff --git a/composer/src/ui-composer/msg-ui-composer-body-callback.c b/composer/src/ui-composer/msg-ui-composer-body-callback.c
new file mode 100755 (executable)
index 0000000..4e5bb32
--- /dev/null
@@ -0,0 +1,1105 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+ /* includes */
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-main.h"
+#include "msg-ui-composer-body-page.h"
+#include "msg-ui-composer-body-callback.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-attachment.h"
+#include "msg-ui-composer-subject.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-external.h"
+#include "syspopup_caller.h"
+#include <tapi_common.h>
+#include <ITapiModem.h>
+
+#define NO_MODEM 38
+/*==================================================================================================
+*                                                              FUNCTION IMPLEMENTATIONS
+*==================================================================================================*/
+static void __add_list_popup_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       if (!data || !event_info) {
+               D_EMSG("invalid argument, argument data is NULL");
+               return;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (cd->add_menu_clicked)
+               return;
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       elm_list_item_selected_set(item, EINA_FALSE);
+
+       const char *label = elm_object_item_text_get(item);
+       if (!label) {
+               D_EMSG("label is NULL !!");
+               return;
+       }
+
+       cd->add_menu_clicked = true;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "label = %s", label);
+       if (cd->isAppControl && cd->isEmulator) {
+               if (!g_strcmp0(label, MSGC_STR_SUBJECT)) {
+                       msg_ui_composer_add_subject(cd);
+               } else {
+                       D_EMSG("Unknown Menu List Item");
+               }
+       } else {
+               if (!g_strcmp0(label, MSGC_STR_SUBJECT)) {
+                       msg_ui_composer_add_subject(cd);
+               } else if (!g_strcmp0(label, MSGC_STR_GALLERY)) {
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_GALLERY, NULL);
+               } else if (!g_strcmp0(label, MSGC_STR_MYFILE)) {
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_MYFILE, NULL);
+               } else if (!g_strcmp0(label, _MSGSTR("IDS_MSGC_BODY_TAKE_PICTURE"))) {
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_CAMERA, NULL);
+               } else if (!g_strcmp0(label, _MSGSTR("IDS_MSGC_BODY_CAPTURE_VIDEO"))) {
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_CAMCORDER, NULL);
+               } else if (!g_strcmp0(label, MSGC_STR_CONTACT)) {
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_NAMECARD, NULL);
+               } else if (!g_strcmp0(label, _SYSSTR("IDS_COM_BODY_CALENDAR"))) {
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_CALENDAR, NULL);
+               } else if (!g_strcmp0(label, _SYSSTR("IDS_COM_BODY_MEMO"))) {
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_MEMO, NULL);
+               } else {
+                       D_EMSG("Unknown Menu List Item");
+               }
+       }
+
+       MSGC_EVAS_OBJECT_DEL(cd->add_popup);
+       cd->add_button_clicked = false;
+       cd->add_menu_clicked = false;
+       D_LEAVE;
+}
+
+static void __add_list_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+       MSGC_EVAS_OBJECT_DEL(cd->add_popup);
+       cd->add_button_clicked = false;
+       cd->add_menu_clicked = false;
+
+       D_LEAVE;
+}
+
+static void __add_list_popup_show(void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       Evas_Object *popup = NULL;
+       Evas_Object *list = NULL;
+       int count = 0;
+       int list_padding = 4;
+
+
+       list = elm_list_add(cd->main_window);
+       D_MSG_RETM_IF(list == NULL, "list is NULL");
+       elm_list_mode_set(list, ELM_LIST_EXPAND);
+
+       Elm_Object_Item *item = NULL;
+
+       if (cd->isAppControl && cd->isEmulator) {
+               item = elm_list_item_append(list, MSGC_STR_SUBJECT, NULL, NULL, __add_list_popup_clicked_cb, data);
+               ++count;
+
+               if (cd->isSubject)
+                       elm_object_item_disabled_set(item, EINA_TRUE);
+       } else {
+               if (!cd->isSubject) {
+                       elm_list_item_append(list, MSGC_STR_SUBJECT, NULL, NULL, __add_list_popup_clicked_cb, data);
+                       ++count;
+               }
+
+               elm_list_item_append(list, MSGC_STR_GALLERY, NULL, NULL, __add_list_popup_clicked_cb, data);
+               ++count;
+               elm_list_item_append(list, _MSGSTR("IDS_MSGC_BODY_TAKE_PICTURE"), NULL, NULL, __add_list_popup_clicked_cb, data);
+               ++count;
+               elm_list_item_append(list, _MSGSTR("IDS_MSGC_BODY_CAPTURE_VIDEO"), NULL, NULL, __add_list_popup_clicked_cb, data);
+               ++count;
+               elm_list_item_append(list, MSGC_STR_MYFILE, NULL, NULL, __add_list_popup_clicked_cb, data);
+               ++count;
+               elm_list_item_append(list, MSGC_STR_CONTACT, NULL, NULL, __add_list_popup_clicked_cb, data);
+               ++count;
+               elm_list_item_append(list, _SYSSTR("IDS_COM_BODY_CALENDAR"), NULL, NULL, __add_list_popup_clicked_cb, data);
+               ++count;
+               elm_list_item_append(list, _SYSSTR("IDS_COM_BODY_MEMO"), NULL, NULL, __add_list_popup_clicked_cb, data);
+               ++count;
+       }
+
+       elm_list_go(list);
+
+       if (count >= 4) {
+               count = 4;
+
+               int popup_height = MSGC_POPUP_LIST_H * count + list_padding;
+               evas_object_size_hint_max_set(list, -1, popup_height * elm_config_scale_get());
+       }
+
+       popup = msg_ui_composer_list_popup_create(cd, _SYSSTR("IDS_COM_POP_ATTACH"), list, "min_menustyle");
+
+       Evas_Object *btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+       elm_object_part_content_set(popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", __add_list_popup_btn_clicked_cb, cd);
+
+       cd->add_popup = popup;
+
+       D_LEAVE;
+}
+
+static void __msgc_show_bubble_view(void *data, msg_thread_id_t tid)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "cd is NULL");
+
+       /* show indicator area */
+       elm_layout_theme_set(cd->base, "layout", "application", "default");
+
+       elm_win_indicator_mode_set(cd->main_window, ELM_WIN_INDICATOR_SHOW);
+
+       msg_ui_composer_change_bubble_view(cd);
+
+       if (tid <= 0) {
+               D_EMSG("Can not find tid = %d !!", tid);
+               msg_ui_composer_message_destroy();
+               ug_destroy_me(cd->ug);
+
+               return;
+       }
+
+       msg_ui_composer_bubble_data_set(cd, tid);
+       msg_ui_bubble_start_view(cd->bubble_data);
+       msg_ui_composer_navi_title_set((void *)cd);
+
+       /* set recipient list for bubble composer */
+       msg_ui_composer_recipient_set_recipient_list(cd, tid);
+
+       D_LEAVE;
+}
+
+static void __nosim_popup_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer data is NULL");
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER || cd->composer_mode == MSG_COMPOSER_MODE_FORWARD) {
+               /* set saved msg flag */
+               cd->disable_auto_save_mode = true;
+               ug_destroy_me(cd->ug);
+       }
+
+       D_LEAVE;
+}
+
+static void __unsupported_character_popup_yes_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       cd->send_check_exception_type |= SEND_CHECK_EXCEPTION_TYPE_ENCODING_MODE;
+       msg_ui_composer_body_make_and_send_message(cd, cd->send_check_exception_type);
+
+       D_LEAVE;
+}
+
+static void __unsupported_character_popup_no_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       if (cd->send_button)
+               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+
+       msg_ui_composer_last_focus_load(cd);
+
+       D_LEAVE;
+}
+
+static void __msgc_flight_mode_tapi_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+       D_ENTER;
+       bool is_success = false;
+
+       switch (result) {
+       case TAPI_POWER_FLIGHT_MODE_RESP_ON:
+               D_MSG("TAPI_POWER_FLIGHT_MODE_RESP_ON");
+               break;
+
+       case TAPI_POWER_FLIGHT_MODE_RESP_OFF:
+               D_MSG("TAPI_POWER_FLIGHT_MODE_RESP_OFF");
+               is_success = true;
+               break;
+
+       case TAPI_POWER_FLIGHT_MODE_RESP_FAIL:
+               D_MSG("TAPI_POWER_FLIGHT_MODE_RESP_FAIL");
+               break;
+
+       case TAPI_POWER_FLIGHT_MODE_RESP_MAX:
+               D_MSG("TAPI_POWER_FLIGHT_MODE_RESP_MAX");
+               break;
+
+       default:
+               D_MSG("result = %d", result);
+               if (result == NO_MODEM) {
+                       D_MSG("there is no modem state");
+                       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)user_data;
+                       D_MSG_RETM_IF(cd == NULL, "cd is NULL");
+
+                       if (cd->flight_mode_timer) {
+                               ecore_timer_del(cd->flight_mode_timer);
+                               cd->flight_mode_timer = NULL;
+                       }
+                       MSGC_EVAS_OBJECT_DEL(cd->progress_popup);
+
+                       msg_composer_set_flight_mode(false);
+
+                       D_MSG("try to send message");
+                       msg_ui_composer_body_make_and_send_message(cd, SEND_CHECK_EXCEPTION_TYPE_NONE);
+               }
+               break;
+       }
+
+       if (!is_success)
+               D_EMSG("flight mode off is failed");
+
+       D_LEAVE;
+}
+
+static Eina_Bool __msgc_flight_mode_enabled_check_timer_cb(void *data)
+{
+       D_MSG_RETVM_IF(data == NULL, ECORE_CALLBACK_CANCEL, "data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       int network_status = -1;
+       static int count = 0;
+       bool ret = false;
+
+       if (count >= 100) {     /* 0.5 sec * 100 = 50 sec */
+               D_EMSG("self time expiration");
+               MSGC_EVAS_OBJECT_DEL(cd->progress_popup);
+               goto return_end;
+       }
+
+       ++count;
+
+       /* check if call network is enabled - to send message l*/
+       ret = msg_composer_get_network_status(&network_status);
+       if (ret == true) {
+               if (network_status == VCONFKEY_TELEPHONY_SVCTYPE_NONE ||
+                               network_status == VCONFKEY_TELEPHONY_SVCTYPE_NOSVC ||
+                               network_status == VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY ||
+                               network_status == VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
+                       D_MSG("Cannot send message - check again");
+                       return ECORE_CALLBACK_RENEW;
+               }
+       } else {
+               D_EMSG("msg_composer_get_network_status is failed");
+               return ECORE_CALLBACK_RENEW;
+       }
+
+       MSGC_EVAS_OBJECT_DEL(cd->progress_popup);
+
+       D_MSG("try to send message");
+       msg_ui_composer_body_make_and_send_message(cd, SEND_CHECK_EXCEPTION_TYPE_NONE);
+
+return_end:
+
+       count = 0;
+       cd->flight_mode_timer = NULL;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __flight_mode_popup_ok_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       Evas_Object *check = (Evas_Object *)evas_object_data_get(cd->custom_popup, "check_box");
+
+       if (elm_check_state_get(check)) {
+               /* set flight mode off*/
+               if (msg_composer_set_flight_mode_by_api(cd->tapi_handle, TAPI_POWER_FLIGHT_MODE_LEAVE, __msgc_flight_mode_tapi_cb, cd) == false) {
+                       D_EMSG("msg_composer_set_flight_mode_by_api is failed");
+               } else {
+                       /* show progress popup */
+                       MSGC_EVAS_OBJECT_DEL(cd->progress_popup);
+                       cd->progress_popup = msg_ui_composer_progress_popup_show(cd, _MSGSTR("Disabling Flight mode"));
+
+                       /* give focus to back btn to hide keypad */
+                       elm_object_focus_set(cd->back_btn, EINA_TRUE);
+
+                       if (cd->flight_mode_timer) {
+                               ecore_timer_del(cd->flight_mode_timer);
+                               cd->flight_mode_timer = NULL;
+                       }
+                       cd->flight_mode_timer = ecore_timer_add(0.5, __msgc_flight_mode_enabled_check_timer_cb, cd);
+               }
+       } else {
+               D_MSG("checkbox is not checked");
+       }
+
+       MSGC_EVAS_OBJECT_DEL(cd->custom_popup);
+
+       if (cd->send_button)
+               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+
+       D_LEAVE;
+}
+
+static void __flight_mode_popup_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->custom_popup);
+
+       if (cd->send_button)
+               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+
+       D_LEAVE;
+}
+
+static COMPOSER_RETURN_TYPE_E __msgc_check_condition_to_send_msg(void *data, int check_exption_type)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "composer data is NULL");
+
+       /* check flight mode */
+       int flight_mode = 0;
+       if (msg_composer_get_flight_mode(&flight_mode) && flight_mode) {
+               /*get tapi handle */
+               if (!cd->tapi_handle)
+                       cd->tapi_handle = (void *)tel_init(NULL);
+
+               if (!cd->tapi_handle) {
+                       D_EMSG("tel_init is failed");
+               } else {
+                       /* show popup */
+                       Evas_Object *popup = NULL;
+                       Evas_Object *btn1 = NULL;
+                       Evas_Object *btn2 = NULL;
+                       char *popup_msg = _MSGSTR("IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN");
+                       char *checkbox_msg = _MSGSTR("IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB");
+
+                       MSGC_EVAS_OBJECT_DEL(cd->custom_popup);
+
+                       popup = msg_ui_composer_checkbox_popup_create(cd, NULL, popup_msg, checkbox_msg);
+
+                       btn1 = msg_ui_composer_popup_button_create(popup, _SYSSTR("IDS_COM_SK_OK"));
+                       elm_object_part_content_set(popup, "button1", btn1);
+                       evas_object_smart_callback_add(btn1, "clicked", __flight_mode_popup_ok_btn_clicked_cb, cd);
+                       btn2 = msg_ui_composer_popup_button_create(popup, _SYSSTR("IDS_COM_SK_CANCEL"));
+                       elm_object_part_content_set(popup, "button2", btn2);
+                       evas_object_smart_callback_add(btn2, "clicked", __flight_mode_popup_cancel_btn_clicked_cb, cd);
+
+                       cd->custom_popup = popup;
+
+                       elm_object_focus_set(popup, EINA_TRUE);
+               }
+
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /*Check recipient available sending*/
+       RECIPIENT_S *rd = cd->recipient;
+       if (rd) {
+               /*add recipient, if entry text exist*/
+               Evas_Object *entry = elm_multibuttonentry_entry_get(rd->mbe);
+               char *entry_txt = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+               if (entry_txt) {
+                       if (strlen(entry_txt) > 0) {
+                               if (NULL == elm_multibuttonentry_item_append(rd->mbe, entry_txt, NULL, NULL)) {
+                                       g_free(entry_txt);
+
+                                       if (cd->send_button)
+                                               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+
+                                       return COMPOSER_RETURN_FAIL;
+                               }
+                       }
+                       g_free(entry_txt);
+               }
+
+               /*check recipient count is zero*/
+               if (msg_ui_composer_recipient_count_get(rd) == 0) {
+                       D_EMSG("there is no recipient");
+                       //msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_NO_RECIPIENT);
+
+                       /* change focus to recipient */
+                       if (cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER)
+                               msg_ui_composer_recipient_focus_set(cd->recipient);
+
+                       if (cd->send_button)
+                               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+
+                       return COMPOSER_RETURN_FAIL;
+               }
+       }
+
+       if (!(check_exption_type & SEND_CHECK_EXCEPTION_TYPE_ENCODING_MODE)) {
+               if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {
+                       if (cd->body_data.page_list) {
+                               MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+                               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(cd->body_data.page_list, 0);
+
+                               if (page_data && page_data->text_info.encode == COMPOSER_CHAR_ENCODE_GSM7_ABNORMAL) {
+                                       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+                                       Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, _MSGSTR("Some characters may be lost. Continue?"), 0);
+                                       Evas_Object *btn1 = msg_ui_composer_popup_button_create(popup, _SYSSTR("IDS_COM_SK_YES"));
+                                       elm_object_part_content_set(popup, "button1", btn1);
+                                       evas_object_smart_callback_add(btn1, "clicked", __unsupported_character_popup_yes_btn_clicked_cb, cd);
+                                       Evas_Object *btn2 = msg_ui_composer_popup_button_create(popup, _SYSSTR("IDS_COM_SK_NO"));
+                                       elm_object_part_content_set(popup, "button2", btn2);
+                                       evas_object_smart_callback_add(btn2, "clicked", __unsupported_character_popup_no_btn_clicked_cb, cd);
+                                       elm_object_focus_allow_set(popup, EINA_TRUE);
+                                       elm_object_focus_set(popup, EINA_TRUE);
+
+                                       cd->popup_end = popup;
+
+                                       return COMPOSER_RETURN_FAIL;
+                               }
+                       }
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+void msg_ui_composer_body_make_and_send_message(void *data, int check_exception_type)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       msg_thread_id_t tid = 0;
+
+       if (__msgc_check_condition_to_send_msg(cd, check_exception_type) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("__msgc_check_condition_to_send_msg is failed");
+               return;
+       }
+
+       /*Make message*/
+       msg_ui_composer_message_init();
+
+       if (msg_ui_composer_recipient_read_data(cd) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("Make recipient data Error");
+               goto error_return;
+       }
+
+       if (__msg_ui_composer_body_read_data(cd) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("Make body data Error");
+               goto error_return;
+       }
+
+       /*Send message*/
+       COMPOSER_RETURN_TYPE_E ret = msg_ui_composer_message_make_and_send(cd->msg_handle, cd->msg_id, &tid);
+
+       /* reset region info */
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       body_data->region_order = COMPOSER_REGION_ORDER_UNDETERMINDED;
+       cd->send_check_exception_type = SEND_CHECK_EXCEPTION_TYPE_NONE;
+
+       if (ret == COMPOSER_RETURN_SUCCESS) {
+               D_MSG("Send Success");
+
+               if (cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER || cd->composer_mode == MSG_COMPOSER_MODE_FORWARD) {
+                       /* set saved msg flag */
+                       cd->disable_auto_save_mode = true;
+                       ug_destroy_me(cd->ug);
+               } else if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER) {
+                       __msgc_show_bubble_view(cd, tid);
+                       msg_ui_composer_clear(cd);
+
+                       service_h svc_handle;
+                       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                               D_EMSG("service_create() is failed !!");
+                       } else {
+                               char buf[DEF_BUF_LEN_S] = {0,};
+                               snprintf(buf, sizeof(buf), "%d", tid);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, buf);
+
+                               ug_send_result(cd->ug, svc_handle);
+
+                               service_destroy(svc_handle);
+                       }
+               } else {
+                       msg_ui_composer_clear(cd);
+               }
+
+               cd->composer_mode = MSG_COMPOSER_MODE_NORMAL;
+               cd->msg_id = 0;
+
+       } else {
+               bool is_closed = false;
+
+               if (ret == COMPOSER_RETURN_NO_SIM) {
+                       D_EMSG("Send Fail : NO SIM");
+                       Evas_Object *popup = msg_ui_composer_status_popup_show(cd->main_window, cd, MSGC_STR_POP_NOSIM, 1);
+                       elm_object_focus_set(cd->add_button, EINA_TRUE);
+
+                       if (cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER || cd->composer_mode == MSG_COMPOSER_MODE_FORWARD) {
+                               is_closed = true;
+                               evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, __nosim_popup_delete_cb, cd);
+                       } else if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER) {
+                               __msgc_show_bubble_view(cd, tid);
+                       }
+
+                       msg_ui_composer_clear(cd);
+               } else {
+                       D_EMSG("Send Fail : Unable Send");
+                       if ((cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER || cd->composer_mode == MSG_COMPOSER_MODE_FORWARD)) {
+                               /* set saved msg flag */
+                               cd->disable_auto_save_mode = true;
+                               ug_destroy_me(cd->ug);
+                       } else {
+                               msg_ui_composer_status_popup_show(cd->main_window, cd, MSGC_STR_POP_UNABLE_SEND, COMPOSER_STATUS_POPUP_DEFAULT_TIME);
+                               elm_object_focus_set(cd->add_button, EINA_TRUE);
+                       }
+               }
+
+               if (!is_closed) {
+                       cd->composer_mode = MSG_COMPOSER_MODE_NORMAL;
+                       cd->msg_id = 0;
+               }
+
+               goto error_return;
+       }
+
+       msg_ui_composer_set_body_keypad_layout(cd, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+       msg_ui_composer_message_destroy();
+       D_LEAVE;
+       return;
+
+error_return:
+       msg_ui_composer_set_body_keypad_layout(cd, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+       msg_ui_composer_message_destroy();
+
+       if (cd->send_button)
+               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "Composer Data is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (cd->send_button)
+               elm_object_disabled_set(cd->send_button, EINA_TRUE);
+
+       cd->send_check_exception_type = SEND_CHECK_EXCEPTION_TYPE_NONE;
+       msg_ui_composer_body_make_and_send_message(cd, cd->send_check_exception_type);
+
+       D_LEAVE;
+       return;
+}
+
+void msg_ui_composer_body_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       if (!data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] error data is NULL");
+               return;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (cd->add_button_clicked)
+               return;
+
+       cd->add_button_clicked = true;
+       __add_list_popup_show(cd);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_entry_maxlength_reached_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_MAXLENGHT_CHAR);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(obj == NULL, "entry obj is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+
+       page_data = evas_object_data_get(obj, "page_data");
+       if (page_data == NULL)
+               return;
+
+       char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
+       if (body_text == NULL)
+               return;
+
+       int text_len = strlen(body_text);
+       if (text_len <= 0) {
+               page_data->text_info.encode = COMPOSER_CHAR_ENCODE_UNICODE;
+               page_data->text_info.char_count = 0;
+       } else {
+               page_data->text_info.encode = msg_ui_composer_body_entry_char_count(cd, (const char *)body_text, &page_data->text_info.char_count, &page_data->text_info.page_size);
+       }
+       g_free(body_text);
+
+       msg_ui_composer_message_type_check_and_change(cd);
+
+       msg_ui_composer_body_info_area_update(cd);
+
+       if (msg_ui_composer_common_is_send_possible(cd)) {
+               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+               msg_ui_composer_body_update_send_btn_icon(cd, false);
+       } else {
+               elm_object_disabled_set(cd->send_button, EINA_TRUE);
+               msg_ui_composer_body_update_send_btn_icon(cd, true);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_entry_press_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {
+               elm_entry_context_menu_disabled_set(obj, EINA_TRUE);
+               elm_entry_magnifier_disabled_set(obj, EINA_TRUE);
+       } else {
+               elm_entry_context_menu_disabled_set(obj, EINA_FALSE);
+               elm_entry_magnifier_disabled_set(obj, EINA_FALSE);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_entry_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       int attach_count = msg_ui_composer_get_attach_count(cd);
+
+       if (attach_count > 1)
+               msg_ui_composer_contract_attach_list(cd);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+
+               int page_count = body_data->page_count;
+
+               if (page_count == 1) {
+                       D_MSG("There is 1 page !!!");
+               } else {
+                       MSG_COMPOSER_BODY_PAGE_S *page_data = evas_object_data_get(obj, "page_data");
+                       if (page_data == NULL) {
+                               D_EMSG("page_data is NULL");
+                       } else {
+                               /* hide delete button */
+                               D_MSG("hide delete button");
+                               edje_object_signal_emit(_EDJ(page_data->upper_layout), "hide.delete", "*");
+                       }
+               }
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_entry_focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {
+               /* if focused_cb is called twice becuase of double click, move focus to popup */
+               if (msg_ui_composer_popup_exist(cd))
+                       msg_ui_composer_popup_focus(cd);
+
+               return;
+       }
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+
+               Eina_List *page_list = body_data->page_list;
+               int page_count = body_data->page_count;
+
+               if (page_count == 1) {
+                       D_MSG("page NO.1 focused !!!");
+                       cd->current_edit_entry = 0;
+               } else {
+                       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+                       int i = 0;
+
+                       for (i = 0; i < page_count; i++) {
+                               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
+                               if (page_data->entry == obj) {
+                                       D_MSG("page NO.[%d]/[%d] focused !!!", i + 1, page_count);
+                                       cd->current_edit_entry = i;
+                                       break;
+                               }
+                       }
+                       page_data = evas_object_data_get(obj, "page_data");
+                       if (page_data == NULL) {
+                               D_EMSG("page_data is NULL");
+                       } else {
+                               /* show delete button */
+                               D_MSG("show delete button");
+                               edje_object_signal_emit(_EDJ(page_data->upper_layout), "show.delete", "*");
+                       }
+               }
+       } else if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {
+               cd->current_edit_entry = 0;
+       } else {
+               D_MSG("message composer invalid message type");
+       }
+
+       msg_ui_composer_last_focused_entry_set(data, obj);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_page_del_btn_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_DEL_BTN_PRESS_ICON);
+}
+
+void msg_ui_composer_body_page_del_btn_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_PAGE_DEL_ICON);
+}
+
+void msg_ui_composer_body_page_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       if (!data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] Callback data is NULL");
+               return;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       Evas_Object *layout = evas_object_data_get(obj, "layout");
+
+       msg_ui_composer_mms_body_remove_page(cd, layout);
+
+       msg_ui_composer_message_type_check_and_change(cd);
+
+       msg_ui_composer_body_info_area_update(cd);
+
+       /* in invalid recipient case, give focus to other widget to call verify_cb of recipient */
+       if (msg_ui_composer_last_focus_is_recipient(cd)) {
+               const char *recipient = msg_ui_composer_recipient_entry_text_get(cd->recipient);
+
+               if (recipient && recipient[0] != '\0') {
+                       if (!msg_ui_composer_recipient_vaild_check(recipient))
+                               elm_object_focus_set(cd->back_btn, EINA_TRUE);
+               }
+       }
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_body_launch_media_item(void *data, Evas_Object *obj)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+
+       Evas_Object *layout = NULL;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       Eina_List *page_list = body_data->page_list;
+       int page_count = body_data->page_count;
+       int i = 0;
+       char file_path[COMPOSER_FILEPATH_LEN_MAX + 1] = {0, };
+
+       layout = evas_object_data_get(obj, "layout");
+
+       if (!layout || !page_list) {
+               D_EMSG("Invalid data layout = %x, page_list = %x", layout, page_list);
+               return;
+       }
+
+       for (i = 0; i < page_count; i++) {
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
+
+               if (!page_data) {
+                       D_EMSG("page data is NULL !!!");
+                       return;
+               }
+
+               if (page_data->sound_item == layout) {
+                       strncpy(file_path, page_data->sound_file_path, COMPOSER_FILEPATH_LEN_MAX);
+                       break;
+               } else if (page_data->image_item == layout) {
+                       strncpy(file_path, page_data->image_file_path, COMPOSER_FILEPATH_LEN_MAX);
+                       break;
+               }
+       }
+
+       if (file_path[0] != '\0') {
+               COMPOSER_EXT_TYPE_E type = COMPOSER_EXT_TYPE_COMMON;
+               COMPOSER_MEDIA_TYPE_E media_type = msg_composer_get_media_type(file_path);
+
+               if (media_type == COMPOSER_MEDIA_TYPE_IMAGE) {
+                       type = COMPOSER_EXT_TYPE_IMAGE;
+               } else if (media_type == COMPOSER_MEDIA_TYPE_VIDEO) {
+                       type = COMPOSER_EXT_TYPE_COMMON;
+               } else if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+                       type = COMPOSER_EXT_TYPE_SOUND;
+               } else {
+                       type = COMPOSER_EXT_TYPE_COMMON;
+               }
+
+               msg_ui_composer_external_call(cd, type, file_path);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_media_layout_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       __msg_ui_composer_body_launch_media_item(cd, obj);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_media_thumb_icon_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       if (!cd->is_default_body_size)
+               __msg_ui_composer_body_launch_media_item(cd, obj);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_media_del_btn_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       int media_type = 0;
+
+       media_type = (int)evas_object_data_get(obj, "media_type");
+       D_MSG("media_type = %d", media_type);
+
+       if (media_type == COMPOSER_MEDIA_TYPE_AUDIO)
+               elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_DEL_BTN_PRESS_ICON);
+       else
+               elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_INSERT_DEL_PRESS_ICON);
+}
+
+void msg_ui_composer_body_media_del_btn_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       int media_type = 0;
+
+       media_type = (int)evas_object_data_get(obj, "media_type");
+
+       if (media_type == COMPOSER_MEDIA_TYPE_AUDIO)
+               elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_SOUND_INSERT_DEL_ICON);
+       else
+               elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_INSERT_DEL_ICON);
+}
+
+void msg_ui_composer_body_media_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       if (!data || !obj) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] NULL pointer error");
+               return;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       Eina_List *page_list = body_data->page_list;
+       int page_count = body_data->page_count;
+       int body_length = 0;
+
+       if (!cd->is_default_body_size) {
+               Evas_Object *delete_layout = (Evas_Object *)evas_object_data_get(obj, "layout");
+
+               int i = 0;
+
+               for (i = 0; i < page_count; i++) {
+                       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
+
+                       if (!page_data) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] page data is NULL !!!");
+                               return;
+                       }
+
+                       if (page_data->sound_item == delete_layout) {
+                               msg_ui_composer_mms_insert_item_remove(cd, delete_layout, COMPOSER_MEDIA_TYPE_AUDIO);
+
+                               char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(page_data->entry));
+                               if (!body_text)
+                                       return;
+
+                               body_length = strlen(body_text);
+
+                               if (body_length == 0 && !page_data->is_image_item)
+                                       msg_ui_composer_mms_body_remove_page(cd, page_data->layout);
+
+                               g_free(body_text);
+
+                               break;
+                       } else if (page_data->image_item == delete_layout) {
+
+                               char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(page_data->entry));
+                               if (!body_text)
+                                       return;
+
+                               body_length = strlen(body_text);
+
+                               if (page_data->isVideo) {
+                                       msg_ui_composer_mms_insert_item_remove(cd, delete_layout, COMPOSER_MEDIA_TYPE_VIDEO);
+                               } else {
+                                       msg_ui_composer_mms_insert_item_remove(cd, delete_layout, COMPOSER_MEDIA_TYPE_IMAGE);
+                               }
+
+                               if (body_length == 0 && !page_data->is_sound_item)
+                                       msg_ui_composer_mms_body_remove_page(cd, page_data->layout);
+
+                               g_free(body_text);
+                               break;
+                       }
+               }
+
+               msg_ui_composer_message_type_check_and_change(cd);
+       }
+
+       /* in invalid recipient case, give focus to other widget to call verify_cb of recipient */
+       if (msg_ui_composer_last_focus_is_recipient(cd)) {
+               const char *recipient = msg_ui_composer_recipient_entry_text_get(cd->recipient);
+
+               if (recipient && recipient[0] != '\0') {
+                       if (!msg_ui_composer_recipient_vaild_check(recipient))
+                               elm_object_focus_set(cd->back_btn, EINA_TRUE);
+               }
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_body_layout_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       Evas_Coord x = 0;
+       Evas_Coord y = 0;
+       Evas_Coord w = 0;
+       Evas_Coord h = 0;
+
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       D_MSG("body layout height = %d", h);
+
+       cd->ly_body_h = h;
+
+       if (h >= COMPOSER_ENOUGH_TEXT_RENDERING_BODY_HEIGHT)
+               msg_ui_composer_body_info_area_update(cd);
+       else
+               edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", "");
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_body_layout_clicked_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       msg_ui_composer_body_focus_set(cd, 0);
+
+       evas_object_event_callback_del(cd->body_box, EVAS_CALLBACK_MOUSE_UP, msg_ui_composer_body_body_layout_clicked_cb);
+
+       cd->is_default_body_size = false;
+
+       D_LEAVE;
+}
+
diff --git a/composer/src/ui-composer/msg-ui-composer-body-page.c b/composer/src/ui-composer/msg-ui-composer-body-page.c
new file mode 100755 (executable)
index 0000000..e3f79f8
--- /dev/null
@@ -0,0 +1,1097 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-body-page.h"
+#include "msg-ui-composer-body-callback.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-recipient.h"
+
+/*==================================================================================================
+                                     STRUCTURES
+==================================================================================================*/
+/* ETSI GSM 03.38 GSM 7 bit Default Alphabet Table -> UCS2*/
+static const unsigned short g_GSM7BitToUCS2[] =
+{
+       /* @ */
+       0x0040, 0x00A3, 0x0024, 0x00A5, 0x00E8, 0x00E9, 0x00F9, 0x00EC, 0x00F2, 0x00C7, 0x000A, 0x00D8, 0x00F8, 0x000D, 0x00C5, 0x00E5,
+       /* ��*/
+       0x0394, 0x005F, 0x03A6, 0x0393, 0x039B, 0x03A9, 0x03A0, 0x03A8, 0x03A3, 0x0398, 0x039E, 0x001B, 0x00C6, 0x00E6, 0x00DF, 0x00C9,
+       /* SP */
+       0x0020, 0x0021, 0x0022, 0x0023, 0x00A4, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+       /* 0 */
+       0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+       /* ��*/
+       0x00A1, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
+       /* P */
+       0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x00C4, 0x00D6, 0x00D1, 0x00DC, 0x00A7,
+       /* ��*/
+       0x00BF, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+       /* p */
+       0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x00E4, 0x00F6, 0x00F1, 0x00FC, 0x00E0
+};
+
+/*GSM 7 bit Default Alphabet Extension Table -> UCS2*/
+static const unsigned short g_GSM7BitExtToUCS2[] =
+{
+       /* 0x0020 -> (SP) for invalid code*/                                                                                             /* Page Break */
+       0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x000C, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+                                                                       /* ^ */
+       0x0020, 0x0020, 0x0020, 0x0020, 0x005E, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x001B, 0x0020, 0x0020, 0x0020, 0x0020,
+                                                                                                                               /* { */ /* } */                                           /* \ */
+       0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x007B, 0x007D, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x005C,
+                                                                                                                                                       /* [ */ /* ~ */ /* ] */
+       0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x005B, 0x007E, 0x005D, 0x0020,
+       /* | */
+       0x007C, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+       0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+                                                                               /* ��*/
+       0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x20AC, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020,
+       0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020
+};
+
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_read_sms_body(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer view data is NULL ");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+
+       Evas_Object *entry = NULL;
+
+       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, 0);
+       if (!page_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] page data is not exist");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       entry = page_data->entry;
+       if (!entry) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] sms entry is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       char *entry_text = g_strdup(elm_entry_entry_get(entry));
+       char *sms_text = NULL;
+       int sms_length = 0;
+
+       if (entry_text) {
+               convert_ps_to_br(entry_text);
+               sms_text = elm_entry_markup_to_utf8(entry_text);
+               if (sms_text == NULL)
+                       return COMPOSER_RETURN_FAIL;
+
+               sms_length = strlen(sms_text);
+
+               if (sms_length > 0) {
+                       msg_ui_composer_message_set_sms_body(sms_text);
+               }
+
+               if (sms_text)
+                       g_free(sms_text);
+
+               g_free(entry_text);
+       } else {
+
+               sms_length = 0;
+       }
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_read_mms_body(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       Eina_List *page_list = body_data->page_list;
+       int page_count = body_data->page_count;
+
+       msg_ui_composer_message_set_page_count(page_count);
+
+       if (body_data->region_order == COMPOSER_REGION_ORDER_IMAGE_TOP)
+               msg_ui_composer_message_set_is_text_top(false);
+       else
+               msg_ui_composer_message_set_is_text_top(true);
+
+       int i = 0;
+       for (i = 0; i < page_count; i++) {
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
+               char *body_text;
+               D_MSG("page duration = %d", page_data->page_duration);
+
+               msg_ui_composer_message_mms_set_page_duration(i, page_data->page_duration);
+
+               if (page_data->entry) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] read TEXT region data");
+                       char *entry_text = g_strdup(elm_entry_entry_get(page_data->entry));
+                       convert_ps_to_br(entry_text);
+
+                       body_text = elm_entry_markup_to_utf8(entry_text);
+
+                       if (body_text && strlen(body_text) > 0) {
+                               msg_ui_composer_message_mms_set_text(body_text, i);
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] no text [%d]", i + 1);
+                       }
+
+                       if (body_text)
+                               g_free(body_text);
+
+                       g_free(entry_text);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] no page entry @ page [%d]", i + 1);
+               }
+
+               if (page_data->is_image_item) {
+                       if (page_data->isVideo) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] read video region data");
+                               msg_ui_composer_message_mms_set_media(page_data->image_file_path, COMPOSER_MEDIA_TYPE_VIDEO, i);
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] read image region data");
+                               msg_ui_composer_message_mms_set_media(page_data->image_file_path, COMPOSER_MEDIA_TYPE_IMAGE, i);
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] No [Image] region data");
+               }
+
+               if (page_data->is_sound_item) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] read SOUND region data");
+
+                       msg_ui_composer_message_mms_set_media(page_data->sound_file_path, COMPOSER_MEDIA_TYPE_AUDIO, i);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] No [Sound] region data");
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static int __msg_ui_composer_body_verify_region_order(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return COMPOSER_REGION_ORDER_UNDETERMINDED;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       Eina_List *page_list = body_data->page_list;
+       int page_count = body_data->page_count;
+       int region_order = COMPOSER_REGION_ORDER_UNDETERMINDED;
+
+       if (page_count < 1) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] no page");
+               return COMPOSER_REGION_ORDER_UNDETERMINDED;
+       } else {
+               int i = 0;
+
+               for (i = 0; i < page_count; i++) {
+                       MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
+                       const char *entry_text = elm_entry_entry_get(page_data->entry);
+
+                       if (entry_text && strlen(entry_text)) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG]  Region order TEXT TOP");
+                               region_order = COMPOSER_REGION_ORDER_TEXT_TOP;
+                               break;
+                       }
+               }
+               if (region_order == COMPOSER_REGION_ORDER_UNDETERMINDED)
+                       region_order = COMPOSER_REGION_ORDER_IMAGE_TOP;
+       }
+
+       D_LEAVE;
+       return region_order;
+}
+
+int msg_ui_composer_body_entry_char_count(void *data, const char *text, int *char_count, int *page_size)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(data == NULL, -1, "param is NULL");
+       D_MSG_RETVM_IF(text == NULL, -1, "param is NULL");
+       D_MSG_RETVM_IF(char_count == NULL, -1, "param is NULL");
+       D_MSG_RETVM_IF(page_size == NULL, -1, "param is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       unsigned int text_size = 0;
+       unsigned int segment_size = 0;
+       int encoded_mode = 0;
+       int ret = MSG_SUCCESS;
+       COMPOSER_CHAR_ENCODE_E encode = COMPOSER_CHAR_ENCODE_MAX;
+
+       ret = msg_util_calculate_text_length(text, cd->encode_mode, &text_size, &segment_size, (msg_encode_type_t *)&encoded_mode);
+       D_MSG("encode_mode = %d, text_size = %d, segment_size = %d encoded_mode = %d", cd->encode_mode, text_size, segment_size, encoded_mode);
+
+       if (ret != MSG_SUCCESS) {
+               D_EMSG("msg_calculate_text_length is failed ret = %d", ret);
+       } else {
+               switch (cd->encode_mode) {
+               case MSG_ENCODE_GSM7BIT:
+                       *char_count = (int)text_size;
+                       *page_size = (int)segment_size;
+
+                       if (encoded_mode == MSG_ENCODE_GSM7BIT_ABNORMAL)
+                               encode = COMPOSER_CHAR_ENCODE_GSM7_ABNORMAL;
+                       else
+                               encode = COMPOSER_CHAR_ENCODE_GSM7;
+
+                       break;
+
+               case MSG_ENCODE_UCS2:
+                       *char_count = (int)text_size;
+                       *page_size = (int)segment_size;
+                       encode = COMPOSER_CHAR_ENCODE_UNICODE;
+
+                       break;
+
+               case MSG_ENCODE_AUTO:
+                       *char_count = (int)text_size;
+                       *page_size = (int)segment_size;
+
+                       if (encoded_mode == MSG_ENCODE_GSM7BIT)
+                               encode = COMPOSER_CHAR_ENCODE_GSM7;
+                       else
+                               encode = COMPOSER_CHAR_ENCODE_UNICODE;
+
+                       break;
+
+               default:
+                       D_EMSG("unsupported encode mode %d", cd->encode_mode);
+               }
+
+       }
+
+       D_LEAVE;
+       return encode;
+}
+
+void msg_ui_composer_body_info_area_update(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       char count_str[DEF_BUF_LEN] = {0,};
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {
+               MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, 0);
+
+               int char_encode = page_data->text_info.encode;
+               int char_count = page_data->text_info.char_count;
+               int page_size = page_data->text_info.page_size;
+               int cms_page = 0;
+               int cms_max_count = 0;
+               int max_count = 0;
+               int remaining_count = 0;
+
+               if (char_count == 0) {
+                       edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", "");
+                       return;
+               }
+
+               if (char_encode == COMPOSER_CHAR_ENCODE_UNICODE ||
+                       char_encode == COMPOSER_CHAR_ENCODE_GSM7 ||
+                       char_encode == COMPOSER_CHAR_ENCODE_GSM7_ABNORMAL) {
+                       if (char_count > page_size) {
+                               cms_page = char_count / page_size;
+
+                               if (!(char_count % page_size))
+                                       --cms_page;
+
+                               if ((cms_page+1) >= cd->cms_max_page)
+                                       max_count = page_size * cd->cms_max_page;
+                               else
+                                       max_count = page_size * (cms_page+1);
+
+                       } else {
+                               max_count = page_size;
+                       }
+                       cms_max_count = page_size * cd->cms_max_page;
+               } else {
+                       D_EMSG("Unknown character encode");
+                       return;
+               }
+
+               remaining_count = max_count - char_count;
+
+               if (char_encode == COMPOSER_CHAR_ENCODE_UNICODE)
+                       remaining_count /= 2;
+
+               snprintf(count_str, sizeof(count_str), "%d/%d", remaining_count, cms_page+1);
+
+               if (cd->ly_body_h >= COMPOSER_ENOUGH_TEXT_RENDERING_BODY_HEIGHT)
+                       edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", count_str);
+
+       } else if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               int64 msg_size = 0;
+               int64 sizeKB = 0;
+               int64 sizeB = 0;
+
+               msg_ui_composer_get_message_size(cd, &msg_size);
+
+               if (msg_size < MSGC_1KB) {
+                       snprintf(count_str, sizeof(count_str), "1 %s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
+               } else {
+                       sizeKB = (int64)msg_size/MSGC_1KB;
+                       sizeB = (int64)msg_size%MSGC_1KB;
+
+                       if (sizeB >= (MSGC_1KB/2))
+                               sizeKB++;
+
+                       snprintf(count_str, sizeof(count_str), "%lld %s", sizeKB, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
+               }
+
+               if (cd->ly_body_h >= COMPOSER_ENOUGH_TEXT_RENDERING_BODY_HEIGHT)
+                       edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", count_str);
+       }
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_composer_body_page_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent, MSG_COMPOSER_BODY_PAGE_S *page_data)
+{
+       D_ENTER;
+
+       if (!cd || !parent || !page_data) {
+               D_EMSG("invalid paremeter");
+               return NULL;
+       }
+
+       Evas_Object *layout = NULL;
+       Evas_Object *page_box = NULL;
+       Evas_Object *entry = NULL;
+       Elm_Entry_Filter_Limit_Size limit_filter;
+
+       layout = elm_layout_add(parent);
+       if (!layout) {
+               D_EMSG("elm_layout_add error !!");
+               return NULL;
+       }
+
+       elm_layout_file_set(layout, msg_ui_composer_edj_get(cd), MSGC_EDJ_GRP_BODY_PAGE);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+
+       page_box = elm_box_add(layout);
+       if (!page_box) {
+               D_EMSG("elm_box_add error !!");
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(page_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(page_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_show(page_box);
+
+       entry = elm_entry_add(page_box);
+       if (!entry) {
+               D_EMSG("elm_box_add error !!");
+               return NULL;
+       }
+
+       /* fix font size */
+       char font_style[DEF_BUF_LEN_S + 1] = {0,};
+       int font_size = msg_ui_composer_get_font_size(COMPOSER_TYPE_BODY);
+
+       if (font_size > 0)
+               snprintf(font_style, sizeof(font_style), "DEFAULT='font_size=%d'", font_size);
+       else
+               snprintf(font_style, sizeof(font_style), "DEFAULT='font_size=%d'", MSGC_BODY_FONT_SIZE);
+
+       elm_entry_text_style_user_push(entry, font_style);
+
+       evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       elm_entry_markup_filter_append(entry, msg_composer_entry_filter_addimage, cd);
+       /* add filter for removing markups*/
+       elm_entry_markup_filter_append(entry, msg_composer_entry_filter_remove_markup, cd);
+
+       /* set entry max character count*/
+       limit_filter.max_char_count = COMPOSER_MMS_TEXT_MAX_CHAR;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter);
+
+       Ecore_IMF_Context *entry_ctx = elm_entry_imf_context_get(entry);
+       ecore_imf_context_input_panel_event_callback_add((Ecore_IMF_Context *)entry_ctx, ECORE_IMF_INPUT_PANEL_STATE_EVENT, msg_ui_composer_entry_imf_state_cb, cd);
+       ecore_imf_context_input_panel_event_callback_add((Ecore_IMF_Context *)entry_ctx, ECORE_IMF_INPUT_PANEL_GEOMETRY_EVENT, msg_ui_composer_entry_imf_resize_cb, cd);
+
+       evas_object_show(entry);
+       evas_object_data_set(entry, "page_data", page_data);
+
+       evas_object_smart_callback_add(entry, "focused", msg_ui_composer_body_entry_focused_cb, cd);
+       evas_object_smart_callback_add(entry, "unfocused", msg_ui_composer_body_entry_unfocused_cb, cd);
+       evas_object_smart_callback_add(entry, "changed", msg_ui_composer_body_entry_changed_cb, cd);
+       evas_object_smart_callback_add(entry, "preedit,changed", msg_ui_composer_body_entry_changed_cb, cd);
+       evas_object_smart_callback_add(entry, "press", msg_ui_composer_body_entry_press_cb, cd);
+       evas_object_smart_callback_add(entry, "clicked", msg_ui_composer_body_entry_clicked_cb, cd);
+       evas_object_smart_callback_add(entry, "maxlength,reached", msg_ui_composer_body_entry_maxlength_reached_cb, cd);
+
+       Evas_Object *del_icon = elm_icon_add(parent);
+       elm_image_file_set(del_icon, MSG_IMAGES_EDJ, MSGC_IMG_PAGE_DEL_ICON);
+       evas_object_size_hint_weight_set(del_icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(del_icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_data_set(del_icon, "layout", page_data->layout);
+       elm_object_part_content_set(layout, "swl.del_button", del_icon);
+
+       evas_object_smart_callback_add(del_icon, "clicked", msg_ui_composer_body_page_del_btn_clicked_cb, cd);
+       evas_object_event_callback_add(del_icon, EVAS_CALLBACK_MOUSE_DOWN, msg_ui_composer_body_page_del_btn_down_cb, NULL);
+       evas_object_event_callback_add(del_icon, EVAS_CALLBACK_MOUSE_UP, msg_ui_composer_body_page_del_btn_up_cb, NULL);
+
+       elm_box_pack_end(page_box, entry);
+
+       elm_object_part_content_set(layout, "swl.page", page_box);
+
+       page_data->upper_layout = layout;
+       page_data->entry = entry;
+       page_data->page_box = page_box;
+       page_data->del_icon = del_icon;
+
+       if (cd->page_duration > COMPOSER_PAGE_DEFAULT_DURATION)
+               page_data->page_duration = cd->page_duration;
+       else
+               page_data->page_duration = COMPOSER_PAGE_DEFAULT_DURATION;
+
+       D_LEAVE;
+       return layout;
+}
+
+static Evas_Object *__msg_ui_composer_body_page_main_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent)
+{
+       D_ENTER;
+
+       if (!cd || !parent) {
+               D_EMSG("invalid paremeter ");
+               return NULL;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;;
+
+       Evas_Object *layout = NULL;
+       Evas_Object *new_page = NULL;
+       Evas_Object *page_main_box = NULL;
+
+       page_data = (MSG_COMPOSER_BODY_PAGE_S *)calloc(1, sizeof(MSG_COMPOSER_BODY_PAGE_S));
+       if (!page_data) {
+               D_EMSG("page_data is NULL!! calloc error");
+               return NULL;
+       }
+
+       layout = elm_layout_add(parent);
+       if (!layout) {
+               D_EMSG(" elm_layout_add error !!");
+               g_free(page_data);
+               return NULL;
+       }
+
+       elm_layout_file_set(layout, msg_ui_composer_edj_get(cd), MSGC_EDJ_GRP_BODY_PAGE_MAIN);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+
+       page_main_box = elm_box_add(layout);
+       if (!page_main_box) {
+               D_EMSG("elm_box_add error !!");
+               g_free(page_data);
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(page_main_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(page_main_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_show(page_main_box);
+
+       page_data->page_main_box = page_main_box;
+       page_data->layout = layout;
+
+       new_page = __msg_ui_composer_body_page_create(cd, page_main_box, page_data);
+       if (!new_page) {
+               D_EMSG(" new_page error !!");
+               g_free(page_data);
+               return NULL;
+       }
+
+       elm_box_pack_end(page_main_box, new_page);
+
+       elm_object_part_content_set(layout, "swl.page.main", page_main_box);
+
+       body_data->page_list = eina_list_append(body_data->page_list, (void *)page_data);
+
+       D_LEAVE;
+       return layout;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_add_page(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       Evas_Object *main_box = cd->body_box;
+       Evas_Object *new_page = NULL;
+
+       if (body_data->page_count >= COMPOSER_MMS_MAX_PAGE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] COMPOSER_MAX_PAGE_REACHED");
+               msg_ui_composer_status_popup_show(cd->main_window, cd, MSGC_STR_POP_PAGE_MAX, COMPOSER_STATUS_POPUP_DEFAULT_TIME);
+               elm_object_focus_set(cd->back_btn, EINA_TRUE);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (!main_box) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer body box is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (body_data->page_count == 0) {
+               cd->page_duration = COMPOSER_PAGE_DEFAULT_DURATION;
+       }
+
+       new_page = __msg_ui_composer_body_page_main_create(cd, main_box);
+       if (!new_page) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] page create error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       elm_box_pack_end(main_box, new_page);
+       body_data->page_count++;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_mms_insert_item_remove(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *remove_item, COMPOSER_MEDIA_TYPE_E media_type)
+{
+       D_ENTER;
+
+       if (!cd || !remove_item) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data or remove item is NOT exist");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       Eina_List *page_list = body_data->page_list;
+       int page_count = body_data->page_count;
+       int i = 0;
+
+       for (i = 0; i < page_count; i++) {
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
+
+               if (media_type == COMPOSER_MEDIA_TYPE_IMAGE || media_type == COMPOSER_MEDIA_TYPE_VIDEO) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] remove image region media item !!");
+                       if (page_data->image_item == remove_item) {
+                               page_data->is_image_item = false;
+                               page_data->image_item = NULL;
+                               page_data->isVideo = false;
+                               /* remove temp file */
+                               ecore_file_remove(page_data->image_file_path);
+                               memset(page_data->image_file_path, 0x00, sizeof(page_data->image_file_path));
+                               evas_object_del(remove_item);
+                               break;
+                       }
+               } else if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] remove sound media item !!");
+                       if (page_data->sound_item == remove_item) {
+                               page_data->is_sound_item = false;
+                               page_data->sound_item = NULL;
+                               /* remove temp file */
+                               ecore_file_remove(page_data->sound_file_path);
+                               memset(page_data->sound_file_path, 0x00, sizeof(page_data->sound_file_path));
+                               evas_object_del(remove_item);
+                               break;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] invalid media type");
+                       continue;
+               }
+       }
+
+       msg_ui_composer_body_info_area_update(cd);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_mms_body_remove_page(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *remove_page)
+{
+       D_ENTER;
+
+       if (!cd || !remove_page) {
+               D_EMSG("comoser data or page data is NOT exist");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       Eina_List *page_list = body_data->page_list;
+       int page_count = body_data->page_count;
+       int i = 0;
+
+       if (page_count == 1) { // in case of only one page exist
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, 0);
+
+               if (page_data->is_image_item)
+                       msg_ui_composer_mms_insert_item_remove(cd, page_data->image_item, COMPOSER_MEDIA_TYPE_IMAGE);
+
+               if (page_data->is_sound_item)
+                       msg_ui_composer_mms_insert_item_remove(cd, page_data->sound_item, COMPOSER_MEDIA_TYPE_AUDIO);
+
+               elm_entry_entry_set(page_data->entry, "");
+
+               /* hide delete button */
+               edje_object_signal_emit(_EDJ(page_data->upper_layout), "hide.delete", "*");
+
+               D_MSG("focus change to the first page");
+               /* focus change to the first page */
+               cd->current_edit_entry = 0;
+
+               Evas_Object *body_entry = msg_ui_composer_last_body_entry_get(cd);
+               Evas_Object *last_focused_entry = msg_ui_composer_last_focused_entry_get(cd);
+               /* last focus is body entry*/
+               if (body_entry && (body_entry == last_focused_entry))
+                       msg_ui_composer_last_focused_entry_set(cd, page_data->entry);
+
+       } else {
+               for (i = 0; i < page_count; i++) {
+                       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, i);
+
+                       if (page_data->layout == remove_page) {
+                               D_MSG("Remove MMS (%d)th page", i + 1);
+
+                               elm_box_unpack(cd->body_box, remove_page);
+
+                               Evas_Object *body_entry = msg_ui_composer_last_body_entry_get(cd);
+                               Evas_Object *last_focused_entry = msg_ui_composer_last_focused_entry_get(cd);
+
+                               /* page count should be decresed before delete page layout */
+                               body_data->page_list = eina_list_remove(body_data->page_list, page_data);
+                               body_data->page_count--;
+
+                               if (page_data->page_main_box) {
+                                       if (page_data->page_box) {
+                                               if (page_data->image_item) {
+                                                       elm_box_unpack(page_data->page_box, page_data->image_item);
+                                                       evas_object_del(page_data->image_item);
+                                               }
+
+                                               if (page_data->entry) {
+                                                       elm_box_unpack(page_data->page_box, page_data->entry);
+                                                       evas_object_del(page_data->entry);
+                                               }
+
+                                               evas_object_del(page_data->page_box);
+                                       }
+
+                                       if (page_data->del_icon) {
+                                               evas_object_event_callback_del(page_data->del_icon, EVAS_CALLBACK_MOUSE_DOWN, msg_ui_composer_body_page_del_btn_down_cb);
+                                               evas_object_event_callback_del(page_data->del_icon, EVAS_CALLBACK_MOUSE_UP, msg_ui_composer_body_page_del_btn_up_cb);
+
+                                               evas_object_del(page_data->del_icon);
+                                       }
+
+                                       evas_object_del(page_data->upper_layout);
+
+                                       if (page_data->sound_item) {
+                                               elm_box_unpack(page_data->page_main_box, page_data->sound_item);
+                                               evas_object_del(page_data->sound_item);
+                                       }
+
+                                       evas_object_del(page_data->page_main_box);
+                               }
+
+                               evas_object_del(page_data->layout);
+
+                               free(page_data);
+
+                               D_MSG("before update current entry");
+                               /* deleted page is current edit page */
+                               if (cd->current_edit_entry == i) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "update focus index");
+                                       /* update body focus index*/
+                                       if (i == 0) { /* if it is first page, update focus index to next page */
+                                               cd->current_edit_entry = 0;
+                                       } else { /* if it is not first page, update focus index to previous page */
+                                               cd->current_edit_entry = i - 1;
+                                       }
+
+                                       /* change focus when last focused entry is a body entry */
+                                       if (body_entry && (body_entry == last_focused_entry)) {
+                                               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, cd->current_edit_entry);
+                                               if (page_data) {
+                                                       msg_ui_composer_last_focused_entry_set(cd, page_data->entry);
+                                                       if (!cd->isclosed)
+                                                               msg_ui_composer_last_focus_load(cd);
+                                               } else {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] page_data is NULL");
+                                               }
+                                       }
+                               } else if (cd->current_edit_entry > i) {
+                                       /* update body focus index*/
+                                       cd->current_edit_entry--;
+
+                                       if (cd->current_edit_entry <= 0)
+                                               cd->current_edit_entry = 0;
+                               }
+
+                               break;
+                       }
+               }
+
+               /* if 1 page is remained after delete, hide delete button */
+               if (body_data->page_count == 1) {
+                       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, 0);
+
+                       if (page_data)
+                               edje_object_signal_emit(_EDJ(page_data->upper_layout), "hide.delete", "*");
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static Evas_Object *__msg_ui_composer_body_media_layout_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char *file_path, Evas_Object *parent, int isSound)
+{
+       D_ENTER;
+
+       if (!cd) {
+               D_EMSG("composer data is NULL");
+               return NULL;
+       }
+
+       Evas_Object *layout = NULL;
+       Evas_Object *thumb_icon = NULL;
+       Evas_Object *del_icon = NULL;
+       const char *filename = NULL;
+       char thumbnail_path[COMPOSER_FILEPATH_LEN_MAX + 1] = { 0, };
+       double scale = elm_config_scale_get();
+       int image_icon_w = (int)(MSGC_IMAGE_THUMB_WIDTH * scale);
+       int image_icon_h = (int)(MSGC_IMAGE_THUMB_HEIGHT * scale);
+       int sound_icon_w = (int)(MSGC_SOUND_THUMB_WIDTH * scale);
+       int sound_icon_h = (int)(MSGC_SOUND_THUMB_HEIGHT * scale);
+
+       layout = elm_layout_add(parent);
+       if (!layout) {
+               D_EMSG("layout create error !!!!");
+               return NULL;
+       }
+
+       if (isSound == 1)
+               elm_layout_file_set(layout, msg_ui_composer_edj_get(cd), MSGC_EDJ_GRP_BODY_SOUND);
+       else
+               elm_layout_file_set(layout, msg_ui_composer_edj_get(cd), MSGC_EDJ_GRP_BODY_MEDIA);
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+
+       thumb_icon = elm_icon_add(layout);
+
+       COMPOSER_MEDIA_TYPE_E media_type = msg_composer_get_media_type(file_path);
+
+       if (media_type == COMPOSER_MEDIA_TYPE_IMAGE) {
+               elm_image_file_set(thumb_icon, file_path, NULL);
+               evas_object_size_hint_min_set(thumb_icon, image_icon_w, image_icon_h);
+       } else if (media_type == COMPOSER_MEDIA_TYPE_VIDEO) {
+               if (msg_composer_common_get_thumbnail(cd, file_path, thumbnail_path, COMPOSER_FILEPATH_LEN_MAX) == COMPOSER_RETURN_SUCCESS) {
+                       elm_image_file_set(thumb_icon, thumbnail_path, NULL);
+               } else {
+                       elm_image_file_set(thumb_icon, MSG_IMAGES_EDJ, MSGC_IMG_INSERT_ETC_ICON);
+               }
+               evas_object_size_hint_min_set(thumb_icon, image_icon_w, image_icon_h);
+       } else if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+               const char *icon_path = NULL;
+
+               icon_path = msg_common_get_file_icon(file_path);
+               if (icon_path) {
+                       elm_image_file_set(thumb_icon, MSG_IMAGES_EDJ, icon_path);
+               } else {
+                       D_EMSG("icon_path is NULL");
+                       elm_image_file_set(thumb_icon, MSG_IMAGES_EDJ, MSGC_IMG_INSERT_VOICE_ICON);
+               }
+               evas_object_size_hint_min_set(thumb_icon, sound_icon_w, sound_icon_h);
+       } else {
+               elm_image_file_set(thumb_icon, MSG_IMAGES_EDJ, MSGC_IMG_INSERT_ETC_ICON);
+               evas_object_size_hint_min_set(thumb_icon, sound_icon_w, sound_icon_h);
+       }
+
+       evas_object_show(thumb_icon);
+
+       elm_object_part_content_set(layout, "swl.thumbnail", thumb_icon);
+
+       if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+               filename = ecore_file_file_get(file_path);
+               if (filename) {
+                       edje_object_part_text_set(_EDJ(layout), "text.filename", filename);
+               }
+       }
+
+       del_icon = elm_icon_add(layout);
+
+       if (media_type == COMPOSER_MEDIA_TYPE_AUDIO)
+               elm_image_file_set(del_icon, MSG_IMAGES_EDJ, MSGC_SOUND_INSERT_DEL_ICON);
+       else
+               elm_image_file_set(del_icon, MSG_IMAGES_EDJ, MSGC_IMG_INSERT_DEL_ICON);
+
+       evas_object_size_hint_align_set(del_icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_data_set(del_icon, "layout", layout);
+       evas_object_data_set(del_icon, "media_type", (void *)media_type);
+
+       evas_object_smart_callback_add(del_icon, "clicked", msg_ui_composer_body_media_del_btn_clicked_cb, cd);
+       evas_object_event_callback_add(del_icon, EVAS_CALLBACK_MOUSE_DOWN, msg_ui_composer_body_media_del_btn_down_cb, NULL);
+       evas_object_event_callback_add(del_icon, EVAS_CALLBACK_MOUSE_UP, msg_ui_composer_body_media_del_btn_up_cb, NULL);
+
+       if (!cd->isAppControl || !cd->isEmulator) {
+               if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+                       evas_object_data_set(_EDJ(layout), "layout", layout);
+                       edje_object_signal_callback_add(_EDJ(layout), "sound_clicked", "", msg_ui_composer_body_media_layout_clicked_cb, (void *)cd);
+               } else {
+                       evas_object_data_set(thumb_icon, "layout", layout);
+                       evas_object_smart_callback_add(thumb_icon, "clicked", msg_ui_composer_body_media_thumb_icon_clicked_cb, cd);
+               }
+       }
+
+       elm_object_part_content_set(layout, "swl.del_button", del_icon);
+
+       D_LEAVE;
+       return layout;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_insert_media(MSG_COMPOSER_VIEW_DATA_S *cd, const char *file_path, COMPOSER_MEDIA_TYPE_E media_type)
+{
+       D_ENTER;
+
+       if (!cd) {
+               D_EMSG("composer data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (file_path == NULL || strlen(file_path) == 0) {
+               D_EMSG("empty file path");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       Eina_List *page_list = body_data->page_list;
+       int page_count = eina_list_count(page_list);
+       bool is_new_page_needed = false;
+       int length = 0;
+
+       /* error cases */
+       if (page_count < 1) {
+               D_EMSG("mms page count error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (page_count <= cd->current_edit_entry) {
+               D_EMSG("mms page count error case page_count <= cd->current_edit_entry");
+               return COMPOSER_RETURN_INVALID_PAGE;
+       }
+
+       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, cd->current_edit_entry);
+
+       if (media_type == COMPOSER_MEDIA_TYPE_IMAGE) {
+               if (page_data->is_image_item)
+                       is_new_page_needed = true;
+
+               if (body_data->region_order == COMPOSER_REGION_ORDER_UNDETERMINDED)
+                       body_data->region_order = __msg_ui_composer_body_verify_region_order(cd);
+       } else if (media_type == COMPOSER_MEDIA_TYPE_VIDEO) {
+               if (page_data->is_image_item || page_data->is_sound_item)
+                       is_new_page_needed = true;
+
+               if (body_data->region_order == COMPOSER_REGION_ORDER_UNDETERMINDED)
+                       body_data->region_order = __msg_ui_composer_body_verify_region_order(cd);
+       } else if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+               if (page_data->is_sound_item || (page_data->is_image_item && page_data->isVideo))
+                       is_new_page_needed = true;
+       } else {
+               D_EMSG("invalid media type [%d]", media_type);
+               return COMPOSER_RETURN_INVALID_MEDIA_TYPE;
+       }
+
+       if (is_new_page_needed) {
+               if (msg_ui_composer_body_add_page(cd) != COMPOSER_RETURN_SUCCESS) {
+                       D_EMSG("Fail of new page created");
+                       return COMPOSER_RETURN_FAIL;
+               }
+               D_MSG("new page created");
+               /* if new page added, current edit entry is changed to a new page's entry */
+               cd->current_edit_entry = page_count;
+       }
+
+       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, cd->current_edit_entry);
+
+       if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+               page_data->is_sound_item = true;
+               length = strlen(file_path);
+               strncpy(page_data->sound_file_path, file_path, length);
+               page_data->sound_file_path[length] = '\0';
+
+               int media_duration = 0;
+               msg_composer_common_get_media_duration(file_path, &media_duration);
+               D_MSG("audio file duration [%d]", media_duration);
+
+               if (media_duration % 1000)
+                       media_duration = media_duration / 1000 + 1;
+               else
+                       media_duration = media_duration / 1000;
+
+               if (media_duration > page_data->page_duration)
+                       page_data->page_duration = media_duration;
+
+               page_data->sound_item = __msg_ui_composer_body_media_layout_create(cd, page_data->sound_file_path, page_data->layout, 1);
+
+               if (page_data->sound_item) {
+                       elm_box_pack_end(page_data->page_main_box, page_data->sound_item);
+               } else {
+                       D_EMSG("creating insert item layout error");
+                       return COMPOSER_RETURN_FAIL;
+               }
+       } else {
+               page_data->is_image_item = true;
+               page_data->isVideo = media_type == COMPOSER_MEDIA_TYPE_VIDEO ? true : false;
+               length = strlen(file_path);
+               strncpy(page_data->image_file_path, file_path, length);
+               page_data->image_file_path[length] = '\0';
+
+               if (page_data->isVideo) {
+                       int media_duration = 0;
+                       msg_composer_common_get_media_duration(file_path, &media_duration);
+                       D_MSG("video file duration [%d]", media_duration);
+
+                       if (media_duration % 1000)
+                               media_duration = media_duration / 1000 + 1;
+                       else
+                               media_duration = media_duration / 1000;
+
+                       if (media_duration > page_data->page_duration)
+                               page_data->page_duration = media_duration;
+               }
+
+               page_data->image_item = __msg_ui_composer_body_media_layout_create(cd, page_data->image_file_path, page_data->layout, 0);
+
+               if (page_data->image_item) {
+                       elm_box_pack_start(page_data->page_box, page_data->image_item);
+               } else {
+                       D_EMSG("creating insert item layout error");
+                       return COMPOSER_RETURN_FAIL;
+               }
+       }
+
+       elm_object_disabled_set(cd->send_button, EINA_FALSE);
+       msg_ui_composer_message_type_check_and_change(cd);
+       msg_ui_composer_body_info_area_update(cd);
+
+       D_MSG("cd->attach_index = %d", cd->attach_index);
+
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {
+               int media_count = eina_list_count(cd->attachlist);
+
+               /* show invalid popup when last content is added */
+               if (media_count == cd->attach_index) {
+                       msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK);
+               }
+       } else {
+               /* change last focused entry to a page that is added media recently*/
+               msg_ui_composer_last_focused_entry_set(cd, page_data->entry);
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+int msg_ui_composer_get_inserted_item_size(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return MSG_UI_RET_ERR;
+       }
+
+       int page_count = cd->body_data.page_count;
+       Eina_List *page_list = cd->body_data.page_list;
+       int total_size = 0;
+       int i = 0;
+
+       for (i = 0; i < page_count; i++) {
+               MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
+               int image_file_size = 0;
+               int sound_file_size = 0;
+
+               if (page_data->is_image_item) {
+                       image_file_size = msg_composer_get_file_size(page_data->image_file_path);
+               }
+               if (page_data->is_sound_item) {
+                       sound_file_size = msg_composer_get_file_size(page_data->sound_file_path);
+               }
+
+               total_size = total_size + image_file_size + sound_file_size;
+       }
+
+       D_LEAVE;
+       return total_size;
+}
+
+void msg_ui_composer_body_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, const char *font_sytle)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(font_sytle == NULL, "font_sytle is NULL");
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       D_MSG_RETM_IF(body_data->page_list == NULL, "page_list is NULL");
+
+       int page_count = body_data->page_count;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       int i = 0;
+
+       for (i = 0; i < page_count; i++) {
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, i);
+               if (page_data && page_data->entry) {
+                       elm_entry_text_style_user_push(page_data->entry, font_sytle);
+               }
+       }
+
+       D_LEAVE;
+}
+
diff --git a/composer/src/ui-composer/msg-ui-composer-body.c b/composer/src/ui-composer/msg-ui-composer-body.c
new file mode 100755 (executable)
index 0000000..ea4dd72
--- /dev/null
@@ -0,0 +1,1503 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* includes */
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-main.h"
+#include "msg-ui-composer-body-page.h"
+#include "msg-ui-composer-subject.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-attachment.h"
+#include "msg-ui-composer-external.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-body-callback.h"
+
+/* functions*/
+static void __attach_max_popup_ok_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       D_LEAVE;
+}
+
+static void __attach_max_popup_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+       ug_destroy_me(cd->ug);
+
+       D_LEAVE;
+}
+
+static void __attach_max_popup_close_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       Evas_Object *popup = (Evas_Object *)data;
+
+       MSGC_EVAS_OBJECT_DEL(popup);
+       D_LEAVE;
+}
+
+static void __msgc_restricted_mode_popup_close_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       if (cd->iter_list)
+               msg_ui_composer_body_items_add(cd);
+
+       D_LEAVE;
+}
+
+static void __msgc_warning_mode_popup_ok_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_ALLOWED;
+
+       if (cd->iter_list)
+               msg_ui_composer_body_items_add(cd);
+       else
+               D_EMSG("cd->iter_list is NULL");
+
+       D_LEAVE;
+}
+
+static void __msgc_warning_mode_popup_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_NOT_ALLOWED;
+
+       if (cd->iter_list) {
+               /* check next iter_list(file list) */
+               cd->iter_list = eina_list_next(cd->iter_list);
+
+               if (cd->iter_list) {
+                       msg_ui_composer_body_items_add(cd);
+               } else {
+                       char *list_data = NULL;
+
+                       if (cd->isLoad == true)
+                               cd->isLoad = false;
+
+                       EINA_LIST_FREE(cd->attachlist, list_data) {
+                               if (list_data)
+                                       free(list_data);
+                       }
+
+                       cd->attach_index = 0;
+                       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_NONE;
+               }
+       }
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_size(MSG_COMPOSER_VIEW_DATA_S *cd, int64 *size)
+{
+       D_ENTER;
+
+       int64 inserted_size = 0;
+       int64 attached_size = 0;
+       int64 total_size = 0;
+
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_NULL_POINTER,"Composer Data is Invalid");
+       D_MSG_RETVM_IF(size == NULL, COMPOSER_RETURN_NULL_POINTER,"size parameter is Invalid");
+
+       /* This is a temporal approach to get a message size */
+       /* currently, Message size is sum of attached files and inserted files */
+       /* it will be implemented, message size validate API on MF side */
+       inserted_size = msg_ui_composer_get_inserted_item_size(cd);
+       attached_size = msg_ui_composer_get_attached_item_size(cd);
+
+       D_MSG("inserted_size(%lld) + attached_size(%lld)",inserted_size ,attached_size);
+       total_size = inserted_size + attached_size;
+       *size = total_size;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static COMPOSER_RETURN_TYPE_E __msgc_jpeg_image_get_resolution(const char *src_path, int *dst_w, int *dst_h)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(src_path == NULL, COMPOSER_RETURN_FAIL, "Parameter Source Path is Invaild");
+       D_MSG_RETVM_IF(dst_w == NULL, COMPOSER_RETURN_FAIL, "dst_w is Invaild");
+       D_MSG_RETVM_IF(dst_h == NULL, COMPOSER_RETURN_FAIL, "dst_h is Invaild");
+
+       int restrict_w = 0;
+       int restrict_h = 0;
+       int from_w = 0;
+       int from_h = 0;
+       int to_w = 0;
+       int to_h = 0;
+
+       /*Get original image resolution*/
+       int util_ret = jpeg_image_get_resolution(src_path, &from_w, &from_h);
+       D_MSG_RETVM_IF(util_ret != COMPOSER_UTIL_RET_SUCCESS, COMPOSER_RETURN_FAIL, "Fail to Get Resolution");
+
+       D_MSG("Input IMAGE resolution %d X %d", from_w, from_h);
+       if (from_w > from_h) {
+               restrict_w = MSGC_RESTRICT_MAX_IMG_W;
+               restrict_h = MSGC_RESTRICT_MAX_IMG_H;
+       } else {
+               restrict_w = MSGC_RESTRICT_MAX_IMG_H;
+               restrict_h = MSGC_RESTRICT_MAX_IMG_W;
+       }
+
+       D_MSG("Set RESTRICT resolution %d X %d", restrict_w, restrict_h);
+
+       if (from_w > restrict_w && from_h > restrict_h) {
+               double weight_w = (double)restrict_w/from_w;
+               double weight_h = (double)restrict_h/from_h;
+               if (weight_w < weight_h) {
+                       to_w = restrict_w;
+                       to_h = from_h*weight_w;
+               } else if (weight_w > weight_h) {
+                       to_w = from_w*weight_h;
+                       to_h = restrict_h;
+               } else {
+                       to_w = restrict_w;
+                       to_h = restrict_h;
+               }
+       } else if (from_w > restrict_w) {
+               double weight_w = (double)restrict_w/from_w;
+               to_w = restrict_w;
+               to_h = from_h*weight_w;
+       } else if (from_h > restrict_h) {
+               double weight_h = (double)restrict_h/from_h;
+               to_w = from_w*weight_h;
+               to_h = restrict_h;
+       } else {
+               D_EMSG("It does not need to resize image");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_MSG("dest image resolution to %d X %d", to_w, to_h);
+
+       *dst_w = to_w;
+       *dst_h = to_h;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static COMPOSER_RETURN_TYPE_E __msgc_jpeg_image_change_image(const char *src_path, int64 wishsize, MSGC_UTIL_CHANGE_IMAGE_S *req, const char *dst_path)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(src_path == NULL, COMPOSER_RETURN_FAIL, "Parameter Source Path is Invaild");
+       D_MSG_RETVM_IF(dst_path == NULL, COMPOSER_RETURN_FAIL, "Parameter Destination Path is Invaild");
+       D_MSG_RETVM_IF(req == NULL, COMPOSER_RETURN_FAIL, "Parameter req is Invaild");
+       D_MSG_RETVM_IF(wishsize <= 0, COMPOSER_RETURN_FAIL, "Parameter remain size (%d) is Invaild", wishsize);
+
+       const int max_resize_loop = COMPOSER_RESIZE_LOOP_MAX;
+       int quality = 0;
+       char *file_ext = NULL;
+       int i = 0;
+       int util_ret;
+
+       file_ext = msg_composer_get_file_ext(src_path);
+       D_MSG_RETVM_IF((strcasecmp(file_ext, "jpeg") != 0 && strcasecmp(file_ext, "jpg") != 0), COMPOSER_RETURN_FAIL, "File Ext Value is NOT Valid");
+
+       /* Set proper quality for image quality down */
+       int64 file_size = msg_composer_get_file_size(src_path);
+
+       if (file_size > wishsize) {
+               int percent;
+               percent = (int)(wishsize * 100) / file_size;
+               D_MSG("percent(%d) = wishsize(%lld) / filesize(%lld)", percent, wishsize, file_size);
+               /* remain size of msg / Original File Size x 100 = percentage to reduce original file
+                       If percent > 60 then proper quality is 90
+                       If 40 < percent < 60 then proper quality is 80
+                       If 20 < percent < 40 then proper quality is 60
+                       If 15 < percent < 20 then proper quality is 20
+                       If 15 < percent < 20 then proper quality is 20
+                       If 10 < percent < 15 then proper quality is 10
+               */
+               if (percent > 60) {
+                       quality = 90;
+               } else if (percent > 40) {
+                       quality = 80;
+               } else if (percent > 20) {
+                       quality = 60;
+               } else if (percent > 15) {
+                       quality = 20;
+               } else if (percent > 10) {
+                       quality = 10;
+               } else {
+                       D_EMSG("Available size is too small to resize");
+                       return COMPOSER_RETURN_FAIL;
+               }
+
+               D_MSG("quality = %d", quality);
+       } else {
+               D_MSG("It does NOT need Quality Set");
+
+               if ((req->type & MSGC_IMAGE_CHANGE_RESIZE) || (req->type & MSGC_IMAGE_CHANGE_ROTATION))
+                       quality = 90;
+               else
+                       return COMPOSER_RETURN_SUCCESS;
+       }
+
+       /* Try image qulity down */
+       for (i = 0; i < max_resize_loop; i++) {
+
+               if (quality < 10) {
+                       D_EMSG("Quality is Too Low to Resize");
+                       return COMPOSER_RETURN_FAIL;
+               }
+
+               /* set quality value to image request info. */
+               req->quality = quality;
+               req->type |= MSGC_IMAGE_CHANGE_QUAILTY;
+
+               util_ret = jpeg_image_change_image(src_path, req, dst_path);
+               if (util_ret == COMPOSER_UTIL_RET_SUCCESS) {
+
+                       file_size = msg_composer_get_file_size(dst_path);
+
+                       if (wishsize > file_size) {
+                               return COMPOSER_RETURN_SUCCESS;
+                       }
+
+                       quality /= 2;
+
+                       /* init req type */
+                       req->type = 0;
+               } else {
+                       D_EMSG("Fail to Resizing");
+                       return COMPOSER_RETURN_FAIL;
+               }
+       }
+
+       D_EMSG("Resized Result Size Is Not Satisfy to Add");
+       return COMPOSER_RETURN_FAIL;
+}
+
+static void __msg_ui_composer_body_resize_end_job(void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       COMPOSER_THREAD_DATA_S *th_data;
+       COMPOSER_RETURN_TYPE_E ret;
+       char *list_data;
+       char *str = NULL;
+
+       th_data = data;
+       D_MSG_RETM_IF(th_data == NULL, "Thread Data is NULL");
+
+       cd = th_data->cd;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       cd->job_thread_end = NULL;
+       cd->attach_thread = NULL;
+
+       if (th_data->status == COMPOSER_THREAD_STATUS_RESIZE_SUCCESS) {
+               /*attach item exist*/
+               if (cd->iter_list) {
+                       ret = msg_ui_composer_body_items_add(cd);
+                       if (ret == COMPOSER_RETURN_RESIZE_IMAGE) {
+                               D_MSG("resize attach item ...");
+                               if (th_data)
+                                       g_free(th_data);
+                               return;
+                       }
+               }
+       } else {
+               char popup_msg[DEF_BUF_LEN_L] = { 0, };
+               /* remove temp file */
+               ecore_file_remove(th_data->filepath);
+
+               if (cd->isLoad == true && cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+                       str = MSGC_STR_POP_ATTACHMENT_SIZE_MAX_Q;
+                       snprintf(popup_msg, sizeof(popup_msg), str, cd->mms_max_size/ 1024);
+                       Evas_Object *popup = msg_ui_composer_status_popup_show(cd->main_window, cd, popup_msg, 0);
+                       Evas_Object *btn1 = elm_button_add(popup);
+                       elm_object_style_set(btn1, "popup_button/default");
+                       elm_object_text_set(btn1, MSGC_STR_BUTTON_OK);
+                       elm_object_part_content_set(popup, "button1", btn1);
+                       evas_object_smart_callback_add(btn1, "clicked", __attach_max_popup_ok_btn_clicked_cb, cd);
+                       Evas_Object *btn2 = elm_button_add(popup);
+                       elm_object_style_set(btn2, "popup_button/default");
+                       elm_object_text_set(btn2, MSGC_STR_BUTTON_CANCEL);
+                       elm_object_part_content_set(popup, "button2", btn2);
+                       evas_object_smart_callback_add(btn2, "clicked", __attach_max_popup_cancel_btn_clicked_cb, cd);
+                       elm_object_focus_allow_set(popup, EINA_TRUE);
+                       elm_object_focus_set(popup, EINA_TRUE);
+                       cd->popup_end = popup;
+               } else {
+                       str = MSGC_STR_POP_ATTACHMENT_SIZE_MAX;
+                       snprintf(popup_msg, sizeof(popup_msg), str, cd->mms_max_size/ 1024);
+                       Evas_Object *popup = msg_ui_composer_status_popup_show(cd->main_window, cd, popup_msg, COMPOSER_STATUS_POPUP_DEFAULT_TIME);
+                       Evas_Object *btn1 = elm_button_add(popup);
+                       elm_object_style_set(btn1, "popup_button/default");
+                       elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+                       elm_object_part_content_set(popup, "button1", btn1);
+                       evas_object_smart_callback_add(btn1, "clicked", __attach_max_popup_close_btn_clicked_cb, popup);
+                       elm_object_focus_allow_set(popup, EINA_TRUE);
+                       elm_object_focus_set(popup, EINA_TRUE);
+               }
+       }
+
+       if (cd->isLoad == true)
+               cd->isLoad = false;
+
+       EINA_LIST_FREE(cd->attachlist, list_data) {
+               if (list_data)
+                       g_free(list_data);
+       }
+
+       if (!msg_ui_composer_popup_exist(cd))
+               msg_ui_composer_last_focus_load(cd);
+
+       cd->attachlist = NULL;
+       cd->attach_index = 0;
+       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_NONE;
+
+       /*resizing progress popup*/
+       if (cd->progress_popup) {
+               evas_object_del(cd->progress_popup);
+               cd->progress_popup = NULL;
+       }
+
+       cd->iter_list = NULL;
+
+       if (th_data)
+               g_free(th_data);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_resize_worker_end_cb(void *data, Ecore_Thread *thread)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       COMPOSER_THREAD_DATA_S *th_data;
+
+       th_data = data;
+       D_MSG_RETM_IF(th_data == NULL, "Thread Data is NULL");
+
+       cd = th_data->cd;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       if (cd->job_thread_end)
+               ecore_job_del(cd->job_thread_end);
+
+       cd->job_thread_end = ecore_job_add(__msg_ui_composer_body_resize_end_job, th_data);
+
+       D_LEAVE;
+}
+
+
+void msg_ui_composer_body_resize_worker_feedback_cb(void *data, Ecore_Thread *thread, void *msg_data)
+{
+       D_ENTER;
+       COMPOSER_THREAD_DATA_S *th_data = data;
+
+       D_MSG_RETM_IF(th_data == NULL, "Thread Data is Invalid");
+       D_MSG_RETM_IF(msg_data == NULL, "Thread Message Data is Invalid");
+
+       D_MSG("Received Resized Image path = %s", msg_data);
+       msg_ui_composer_body_insert_media(th_data->cd, msg_data, COMPOSER_MEDIA_TYPE_IMAGE);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_resize_worker_thread(void *data, Ecore_Thread *thread)
+{
+       D_ENTER;
+       COMPOSER_RETURN_TYPE_E resize_result;
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       COMPOSER_THREAD_DATA_S *th_data = data;
+
+       if (!th_data) {
+               D_EMSG("No th_data");
+               ecore_thread_feedback(thread, "No th_data");
+               return;
+       }
+
+       cd = th_data->cd;
+       if (!cd) {
+               D_EMSG("No cd");
+               ecore_thread_feedback(thread, "No cd");
+               return;
+       }
+
+       MSGC_UTIL_CHANGE_IMAGE_S image_req = {0,};
+
+       if (th_data->need_ChangeResolution == true) {
+               image_req.type |= MSGC_IMAGE_CHANGE_RESIZE;
+               __msgc_jpeg_image_get_resolution(th_data->filepath, &image_req.dest_width, &image_req.dest_height);
+       }
+
+       if (th_data->rotation) {
+               image_req.type |= MSGC_IMAGE_CHANGE_ROTATION;
+               image_req.rotation = th_data->rotation;
+
+               th_data->rotation = 0;
+       }
+
+       resize_result = __msgc_jpeg_image_change_image(th_data->filepath, th_data->wishsize, &image_req, th_data->filepath);
+       if (resize_result == COMPOSER_RETURN_SUCCESS) {
+               th_data->status = COMPOSER_THREAD_STATUS_RESIZE_SUCCESS;
+               ecore_thread_feedback(thread, th_data->filepath);
+       } else {
+               th_data->status = COMPOSER_THREAD_STATUS_RESIZE_FAIL;
+       }
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_items_add(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer Data is Invalid");
+       D_MSG_RETVM_IF(cd->attachlist == NULL, COMPOSER_RETURN_FAIL, "Composer attach List is Invalid");
+
+       char *list_data = NULL;
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+       Eina_List *l = NULL;
+       Eina_List *o = NULL;
+       char popup_msg[DEF_BUF_LEN_L] = {0, };
+       char *str = NULL;
+
+       if (cd->iter_list)
+               o = cd->iter_list;
+       else
+               o = cd->attachlist;
+
+       EINA_LIST_FOREACH(o, l, list_data) {
+               cd->attach_index++;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "cd->attach_index = %d", cd->attach_index);
+               if (list_data) {
+                       ret = msg_ui_composer_body_item_add(cd, list_data);
+                       if (ret == COMPOSER_RETURN_RESIZE_IMAGE) {
+                               break;
+                       } else if (ret == COMPOSER_RETURN_DRM_FORWARDLOCK) {
+                               Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, MSGC_STR_POP_FILE_IS_FORWARD_LOCK, 0);
+                               Evas_Object *btn1 = elm_button_add(popup);
+                               elm_object_style_set(btn1, "popup_button/default");
+                               elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+                               elm_object_part_content_set(popup, "button1", btn1);
+                               evas_object_smart_callback_add(btn1, "clicked", msg_ui_composer_status_popup_response_cb, popup);
+                               elm_object_focus_allow_set(popup, EINA_TRUE);
+                               elm_object_focus_set(popup, EINA_TRUE);
+                               break;
+                       } else if (ret == COMPOSER_RETURN_OVERSIZE_FILE) {
+                               if (cd->isLoad == true && cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+                                       str = MSGC_STR_POP_ATTACHMENT_SIZE_MAX_Q;
+                                       snprintf(popup_msg, sizeof(popup_msg), str, cd->mms_max_size/ 1024);
+                                       Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, popup_msg, 0);
+                                       Evas_Object *btn1 = elm_button_add(popup);
+                                       elm_object_style_set(btn1, "popup_button/default");
+                                       elm_object_text_set(btn1, MSGC_STR_BUTTON_OK);
+                                       elm_object_part_content_set(popup, "button1", btn1);
+                                       evas_object_smart_callback_add(btn1, "clicked", __attach_max_popup_ok_btn_clicked_cb, cd);
+                                       Evas_Object *btn2 = elm_button_add(popup);
+                                       elm_object_style_set(btn2, "popup_button/default");
+                                       elm_object_text_set(btn2, MSGC_STR_BUTTON_CANCEL);
+                                       elm_object_part_content_set(popup, "button2", btn2);
+                                       evas_object_smart_callback_add(btn2, "clicked", __attach_max_popup_cancel_btn_clicked_cb, cd);
+                                       elm_object_focus_allow_set(popup, EINA_TRUE);
+                                       elm_object_focus_set(popup, EINA_TRUE);
+                                       cd->popup_end = popup;
+                               } else {
+                                       str = MSGC_STR_POP_ATTACHMENT_SIZE_MAX;
+                                       snprintf(popup_msg, sizeof(popup_msg), str, cd->mms_max_size/ 1024);
+                                       Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, popup_msg, 0);
+                                       Evas_Object *btn1 = elm_button_add(popup);
+                                       elm_object_style_set(btn1, "popup_button/default");
+                                       elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+                                       elm_object_part_content_set(popup, "button1", btn1);
+                                       evas_object_smart_callback_add(btn1, "clicked", __attach_max_popup_close_btn_clicked_cb, popup);
+                                       elm_object_focus_allow_set(popup, EINA_TRUE);
+                                       elm_object_focus_set(popup, EINA_TRUE);
+                               }
+
+                               break;
+                       } else if (ret == COMPOSER_RETURN_CREATION_RESTRICTED_MODE_FAIL) {
+                               Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, _MSGSTR("Unsupported media type. Select different media"), 0);
+                               Evas_Object *btn1 = elm_button_add(popup);
+                               elm_object_style_set(btn1, "popup_button/default");
+                               elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);
+                               elm_object_part_content_set(popup, "button1", btn1);
+                               evas_object_smart_callback_add(btn1, "clicked", __msgc_restricted_mode_popup_close_btn_clicked_cb, cd);
+                               elm_object_focus_allow_set(popup, EINA_TRUE);
+                               elm_object_focus_set(popup, EINA_TRUE);
+                               cd->popup_end = popup;
+                               break;
+                       } else if (ret == COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL) {
+                               Evas_Object *popup = msg_ui_composer_status_popup_show(cd->navi_bar, cd, _MSGSTR("IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"), 0);
+                               Evas_Object *btn1 = elm_button_add(popup);
+                               elm_object_style_set(btn1, "popup_button/default");
+                               elm_object_text_set(btn1, MSGC_STR_BUTTON_OK);
+                               elm_object_part_content_set(popup, "button1", btn1);
+                               evas_object_smart_callback_add(btn1, "clicked", __msgc_warning_mode_popup_ok_btn_clicked_cb, cd);
+                               Evas_Object *btn2 = elm_button_add(popup);
+                               elm_object_style_set(btn2, "popup_button/default");
+                               elm_object_text_set(btn2, MSGC_STR_BUTTON_CANCEL);
+                               elm_object_part_content_set(popup, "button2", btn2);
+                               evas_object_smart_callback_add(btn2, "clicked", __msgc_warning_mode_popup_cancel_btn_clicked_cb, cd);
+                               elm_object_focus_allow_set(popup, EINA_TRUE);
+                               elm_object_focus_set(popup, EINA_TRUE);
+                               cd->popup_end = popup;
+                               break;
+                       } else if (ret == COMPOSER_RETURN_CREATION_RESTRICTED_MODE_PASS ||
+                                               ret == COMPOSER_RETURN_CREATION_WARINING_MODE_PASS) {
+                               D_MSG("skip this file = (%s)", list_data);
+                       } else if (ret != COMPOSER_RETURN_SUCCESS) {
+                               msg_ui_composer_status_popup_show(cd->navi_bar, cd, _MSGSTR("IDS_MSGC_POP_MMSCANTADD"), COMPOSER_STATUS_POPUP_DEFAULT_TIME);
+                               elm_object_focus_set(cd->back_btn, EINA_TRUE);
+                               D_MSG("Fail to add item");
+                               break;
+                       }
+               }
+       }
+
+       if (ret == COMPOSER_RETURN_RESIZE_IMAGE) {
+               cd->iter_list = eina_list_next(l);
+       } else if (ret == COMPOSER_RETURN_CREATION_RESTRICTED_MODE_FAIL) {
+               cd->iter_list = eina_list_next(l);
+
+               if (!cd->iter_list)
+                       goto clear_data;
+       } else if (ret == COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL) {
+               /* keep current file */
+               cd->iter_list = l;
+       } else {
+               goto clear_data;
+       }
+
+       D_LEAVE;
+       return ret;
+
+clear_data:
+       if (!msg_ui_composer_popup_exist(cd))
+               msg_ui_composer_last_focus_load(cd);
+
+       if (cd->isLoad == true)
+               cd->isLoad = false;
+
+       EINA_LIST_FREE(cd->attachlist,list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+       cd->iter_list = NULL;
+       cd->attach_index = 0;
+       cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_NONE;
+
+       return ret;
+}
+
+bool msg_ui_composer_body_weburi_append(MSG_COMPOSER_VIEW_DATA_S *cd, const char *uri)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, false, "Composer Data is Invalid");
+       D_MSG_RETVM_IF(uri == NULL, false, "uri is NULL");
+       D_MSG_RETVM_IF(is_web_uri(uri) == false, false, "url is NOT weburi");
+
+       Evas_Object *entry = msg_ui_composer_last_body_entry_get(cd);
+       D_MSG_RETVM_IF(entry == NULL, false, "entry is NULL");
+
+       char *str = elm_entry_utf8_to_markup(uri);
+       D_MSG_RETVM_IF(str == NULL, false, "markup string is NULL");
+
+       char *prev_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+       if (prev_str) {
+               if (strlen(prev_str) > 0) {
+                       char *enter = elm_entry_utf8_to_markup("\n");
+                       if (enter) {
+                               elm_entry_entry_append(entry, enter);
+                               g_free(enter);
+                       }
+                       elm_entry_entry_append(entry, str);
+               } else {
+                       elm_entry_entry_set(entry, str);
+               }
+
+               g_free(prev_str);
+       } else {
+               D_MSG("prev_str is NULL !!");
+               elm_entry_entry_set(entry, str);
+       }
+
+       g_free(str);
+       D_LEAVE;
+       return true;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_item_add(MSG_COMPOSER_VIEW_DATA_S *cd, const char *item_path)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_NULL_POINTER, "Composer Data is Invalid");
+       D_MSG_RETVM_IF(item_path == NULL, COMPOSER_RETURN_NULL_POINTER, "item_path is NULL");
+
+       COMPOSER_RETURN_TYPE_E ret;
+       COMPOSER_MEDIA_TYPE_E media_type;
+       bool is_drm = false;
+
+       /*if path is web uri then set path as body text*/
+       if (is_web_uri(item_path) == true) {
+               if (msg_ui_composer_body_weburi_append(cd, item_path) == false)
+                       return COMPOSER_RETURN_FAIL;
+
+               return COMPOSER_RETURN_SUCCESS;
+       }
+
+       /*check file path*/
+       D_MSG_RETVM_IF(ecore_file_exists(item_path) == EINA_FALSE, COMPOSER_RETURN_FAIL, "item_path(%s) is NOT Exist", item_path);
+       D_MSG_RETVM_IF(ecore_file_is_dir(item_path) == EINA_TRUE, COMPOSER_RETURN_FAIL, "item_path(%s) is dir", item_path);
+
+       /*Check drm file && forward lock*/
+       if (msg_composer_is_drm_file(item_path) == COMPOSER_UTIL_RET_SUCCESS) {
+               if (msg_composer_is_drm_forwardlock(item_path) == COMPOSER_UTIL_RET_SUCCESS)
+                       return COMPOSER_RETURN_DRM_FORWARDLOCK;
+
+               is_drm = true;
+       }
+
+       /*Check Media Type*/
+       media_type = msg_composer_get_media_type(item_path);
+       D_MSG("media_type = %d", media_type);
+
+       /*Check Creation Mode*/
+       COMPOSER_UTIL_RETURN_E allowed_type = COMPOSER_UTIL_RET_ERR;
+       int creationMode;
+       bool need_to_resize = false;    /* set for restricted resizing image */
+       msg_struct_t setting = NULL;
+
+       setting = msg_create_struct(MSG_STRUCT_SETTING_MMS_SEND_OPT);
+
+       if (setting) {
+               msg_get_mms_send_opt(cd->msg_handle, setting);
+               if (msg_get_int_value(setting, MSG_MMS_SENDOPT_CREATION_MODE_INT, &creationMode) == MSG_SUCCESS) {
+                       if (creationMode == MSG_CREATION_MODE_RESTRICTED || creationMode == MSG_CREATION_MODE_WARNING) {
+                               allowed_type = msg_composer_is_allowed_creation_mode(item_path, media_type, creationMode);
+                       }
+               }
+
+               msg_release_struct(&setting);
+       } else {
+               D_EMSG("msg_create_struct is failed");
+       }
+
+       /* creation restricted mode */
+       if (creationMode == MSG_CREATION_MODE_RESTRICTED) {
+               if (allowed_type == COMPOSER_UTIL_RET_NOT_ALLOWED) {
+                       if (cd->body_data.creation_allowed != COMPOSER_CONTENT_CREATION_NOT_ALLOWED) {
+                               cd->body_data.creation_allowed = COMPOSER_CONTENT_CREATION_NOT_ALLOWED;
+                               /* show restricted popup one time */
+                               return COMPOSER_RETURN_CREATION_RESTRICTED_MODE_FAIL;
+                       } else {
+                               return COMPOSER_RETURN_CREATION_RESTRICTED_MODE_PASS;
+                       }
+               } else if (allowed_type == COMPOSER_UTIL_RET_ALLOWED_WITH_RESIZE) {
+                       need_to_resize = true;
+               }
+       }
+
+       /* creation warning mode */
+       if (creationMode == MSG_CREATION_MODE_WARNING) {
+               if (allowed_type == COMPOSER_UTIL_RET_NOT_ALLOWED) {
+                       if (cd->body_data.creation_allowed != COMPOSER_CONTENT_CREATION_ALLOWED &&
+                               cd->body_data.creation_allowed != COMPOSER_CONTENT_CREATION_NOT_ALLOWED) {
+                               /* show warning popup one time */
+                               return COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL;
+                       } else if (cd->body_data.creation_allowed == COMPOSER_CONTENT_CREATION_NOT_ALLOWED) {
+                               return COMPOSER_RETURN_CREATION_WARINING_MODE_PASS;
+                       }
+               }
+       }
+
+       /*Check file size && resize able (if Image)*/
+       int64 msg_size, file_size, remain_size;
+       ret = msg_ui_composer_get_message_size(cd, &msg_size);
+       D_MSG_RETVM_IF(ret != COMPOSER_RETURN_SUCCESS, COMPOSER_RETURN_FAIL, "Fail to Get Message Size");
+       remain_size = cd->mms_max_size - msg_size;
+
+       file_size = msg_composer_get_file_size(item_path);
+       if (file_size > remain_size || need_to_resize) {
+
+               char *file_ext = msg_composer_get_file_ext(item_path);
+               /*If image type resize*/
+               if (media_type == COMPOSER_MEDIA_TYPE_IMAGE
+                                       && is_drm == false
+                                       && (strcasecmp(file_ext, "jpeg") == 0 || strcasecmp(file_ext, "jpg") == 0)) {
+
+                       COMPOSER_THREAD_DATA_S *th_data;
+                       th_data = calloc(1, sizeof(COMPOSER_THREAD_DATA_S));
+                       if (th_data == NULL)
+                               return COMPOSER_RETURN_FAIL;
+
+                       th_data->cd = cd;
+
+                       if (need_to_resize) {
+                               th_data->need_ChangeResolution = true;
+                               D_MSG("need to resize");
+                       } else {
+                               th_data->need_ChangeResolution = false;
+                       }
+
+                       th_data->wishsize = remain_size;
+
+                       ret = msg_ui_composer_common_get_file(cd, item_path, th_data->filepath, sizeof(th_data->filepath)-1);
+                       if (ret != COMPOSER_RETURN_SUCCESS) {
+                               D_EMSG("get file error");
+                               g_free(th_data);
+                               return COMPOSER_RETURN_FAIL;
+                       }
+
+                       /* get rotation info */
+                       int rotation = 0;
+                       th_data->rotation = 0;
+
+                       if (jpeg_image_get_rotation(th_data->filepath, &rotation) == COMPOSER_UTIL_RET_SUCCESS)
+                               th_data->rotation = rotation;
+
+                       if (!cd->progress_popup)
+                               cd->progress_popup = msg_ui_composer_progress_popup_show(th_data->cd, _MSGSTR("IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"));
+
+                       cd->attach_thread = ecore_thread_feedback_run(msg_ui_composer_body_resize_worker_thread,
+                                                                                                                       msg_ui_composer_body_resize_worker_feedback_cb,
+                                                                                                                       msg_ui_composer_body_resize_worker_end_cb,
+                                                                                                                       msg_ui_composer_body_resize_worker_end_cb,
+                                                                                                                       th_data, EINA_TRUE);
+
+                       if (!cd->attach_thread) {
+                               D_EMSG("thread run is failed");
+                               /*resizing progress popup*/
+                               if (cd->progress_popup) {
+                                       evas_object_del(cd->progress_popup);
+                                       cd->progress_popup = NULL;
+                               }
+                               return COMPOSER_RETURN_FAIL;
+                       }
+
+                       return COMPOSER_RETURN_RESIZE_IMAGE;
+               } else {
+                       D_MSG("Adding Item Size is too big to add or remain msg size is too small");
+                       return COMPOSER_RETURN_OVERSIZE_FILE;
+               }
+
+       } else {
+               char local_item_path[COMPOSER_FILEPATH_LEN_MAX + 1] = {0,};
+               /* copy temp file */
+               ret = msg_ui_composer_common_get_file(cd, item_path, local_item_path, COMPOSER_FILEPATH_LEN_MAX);
+               if (ret != COMPOSER_RETURN_SUCCESS) {
+                       D_EMSG("get file error");
+                       return COMPOSER_RETURN_FAIL;
+               }
+
+               /* rotate image if required*/
+               char *file_ext = msg_composer_get_file_ext(local_item_path);
+               if (media_type == COMPOSER_MEDIA_TYPE_IMAGE
+                                               && is_drm == false
+                                               && (strcasecmp(file_ext, "jpeg") == 0 || strcasecmp(file_ext, "jpg") == 0)) {
+                       int rotation = 0;
+
+                       if (jpeg_image_get_rotation(local_item_path, &rotation) == COMPOSER_UTIL_RET_SUCCESS) {
+                               if (jpeg_image_rotate_image(local_item_path, rotation, local_item_path) != COMPOSER_UTIL_RET_SUCCESS)
+                                       D_EMSG("jpeg_image_rotate_image is failed");
+                       }
+               }
+
+               if (media_type == COMPOSER_MEDIA_TYPE_IMAGE || media_type == COMPOSER_MEDIA_TYPE_VIDEO || media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+                       msg_ui_composer_body_insert_media(cd, local_item_path, media_type);
+               } else {
+                       msg_ui_composer_add_attach_media(cd, local_item_path, media_type);
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static Evas_Object *__msg_ui_composer_body_create_add_button(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent)
+{
+       D_ENTER;
+
+       if (!cd)
+               return NULL;
+
+       Evas_Object *button = NULL;
+
+       button = elm_button_add(parent);
+
+       elm_object_theme_set(button, cd->th);
+       elm_object_style_set(button, "circle/add_plus");
+
+       evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(button);
+
+       evas_object_smart_callback_add(button, "clicked", msg_ui_composer_body_add_btn_clicked_cb, cd);
+
+       cd->add_button = button;
+
+       D_LEAVE;
+       return button;
+}
+
+static Evas_Object *__msg_ui_composer_body_create_main_field(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent)
+{
+       D_ENTER;
+
+       if (!cd)
+               return NULL;
+
+       Evas_Object *scroller = NULL;
+       Evas_Object *box = NULL;
+
+       scroller = elm_scroller_add(parent);
+       if (!scroller) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] scroller create error");
+               return NULL;
+       }
+
+       elm_object_focus_allow_set(scroller, EINA_FALSE);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+       evas_object_show(scroller);
+
+       box = elm_box_add(parent);
+       elm_object_focus_allow_set(box, EINA_FALSE);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_show(box);
+       elm_object_content_set(scroller, box);
+
+       Evas_Object *bx_content = elm_box_add(parent);
+       evas_object_size_hint_weight_set(bx_content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(bx_content, EVAS_HINT_FILL, 1.0);
+       evas_object_show(bx_content);
+
+       elm_box_pack_end(box, bx_content);
+
+       cd->body_box = bx_content;
+       cd->body_scroll = scroller;
+
+       D_LEAVE;
+       return scroller;
+}
+
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_body_read_mms_data(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               msg_ui_composer_message_set_msg_type(COMPOSER_MSG_TYPE_MMS);
+
+               if (cd->isSubject)
+                       msg_ui_composer_read_subject(cd);
+
+               if (cd->attach_data.attachment_Cnt > 0)
+                       msg_ui_composer_read_attachments(cd);
+
+               msg_ui_composer_body_read_mms_body(cd);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] invalid message type");
+               return COMPOSER_RETURN_INVALID_MSG_TYPE;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E __msg_ui_composer_body_read_data(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] message type SMS!!");
+
+               msg_ui_composer_message_set_msg_type(COMPOSER_MSG_TYPE_SMS);
+
+               if (msg_ui_composer_body_read_sms_body(cd) != COMPOSER_RETURN_SUCCESS)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ERROR] error read sms body text!!");
+
+       } else if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] message type MMS!!");
+               __msg_ui_composer_body_read_mms_data(cd);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid message type!!");
+               msg_ui_composer_message_destroy();
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static Evas_Object *__msg_ui_composer_body_create_send_button(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent)
+{
+       D_ENTER;
+
+       if (!cd)
+               return NULL;
+
+       Evas_Object *button = NULL;
+       Evas_Object *icon = NULL;
+
+       button = elm_button_add(parent);
+       if (!button) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] send button create error !!");
+               return NULL;
+       }
+
+       elm_object_theme_set(button, cd->th);
+       elm_object_style_set(button, "sendbutton");
+
+       elm_object_focus_allow_set(button, EINA_FALSE);
+       evas_object_size_hint_weight_set(button, 0.0, 0.0);
+       evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       icon = elm_icon_add(parent);
+       elm_image_file_set(icon, MSG_IMAGES_EDJ, MSGC_SMS_SEND_ICON);
+
+       elm_object_part_content_set(button, "icon", icon);
+       evas_object_show(button);
+
+       evas_object_smart_callback_add(button, "clicked", msg_ui_composer_body_send_btn_clicked_cb, cd);
+
+       D_LEAVE;
+       return button;
+}
+
+static Evas_Object *__msg_ui_compsoer_body_layout_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent)
+{
+       Evas_Object *layout = NULL;
+
+       layout = msg_ui_composer_load_edj(parent, MSGC_UI_DEFAULT_EDJ, MSGC_EDJ_GRP_BODY_FIELD);
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_show(layout);
+
+       if (!layout) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] create layout error");
+               return NULL;
+       }
+
+       return layout;
+}
+
+Evas_Object *msg_ui_composer_body_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *parent)
+{
+       D_ENTER;
+
+       if (!cd || !parent) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data or parent data is NULL");
+               return NULL;
+       }
+
+       Evas_Object *layout = NULL;
+       Evas_Object *add_button = NULL;
+       Evas_Object *main_field = NULL;
+
+       layout = __msg_ui_compsoer_body_layout_create(cd, parent);
+       if (!layout) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] layout create error !!");
+               return NULL;
+       }
+
+       add_button = __msg_ui_composer_body_create_add_button(cd, parent);
+       if (!add_button) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] add_button_field create error !!");
+               return NULL;
+       }
+
+       main_field = __msg_ui_composer_body_create_main_field(cd, parent);
+       if (!main_field) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] main_field create error !!");
+               return NULL;
+       }
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {
+               elm_box_clear(cd->body_box);
+               msg_ui_composer_body_add_page(cd);
+       } else if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid message type");
+               return NULL;
+       }
+
+       cd->send_button = __msg_ui_composer_body_create_send_button(cd, parent);
+       if (!cd->send_button) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] button create error !!");
+               return NULL;
+       }
+
+       elm_object_disabled_set(cd->send_button, EINA_TRUE);
+
+       elm_object_part_content_set(layout, "body.swl.add_button", add_button);
+       elm_object_part_content_set(layout, "body.swl.main", main_field);
+       elm_object_part_content_set(layout, "body.swl.send_button", cd->send_button);
+
+       evas_object_event_callback_add(layout, EVAS_CALLBACK_RESIZE, msg_ui_composer_body_body_layout_resize_cb, cd);
+
+       D_LEAVE;
+       return layout;
+}
+
+void msg_ui_composer_body_delete(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       msg_ui_composer_body_clear(cd);
+
+       if (cd->ly_body) {
+               evas_object_del(cd->ly_body);
+               cd->ly_body = NULL;
+       }
+}
+
+void msg_ui_composer_body_clear(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       int page_count = body_data->page_count;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       int i = 0;
+       Eina_List *page_list = body_data->page_list;
+
+       for (i = page_count - 1; i >= 0; i--) {
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
+               msg_ui_composer_mms_body_remove_page(cd, page_data->layout);
+       }
+
+       cd->current_edit_entry = 0;
+
+       cd->msg_type = COMPOSER_MSG_TYPE_SMS;
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_read_preview_message(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               __msg_ui_composer_body_read_mms_data(cd);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] invlaid message type!!");
+               return COMPOSER_RETURN_INVALID_MSG_TYPE;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_set_loaded_media(MSG_COMPOSER_VIEW_DATA_S *pcomp_data, char *filepath, int filetype, int nPage)
+{
+       D_ENTER;
+
+       if (!pcomp_data) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+
+       D_MSG("page = %d", nPage);
+
+       if (pcomp_data->body_data.page_count < nPage + 1)
+               msg_ui_composer_body_add_page(pcomp_data);
+
+       pcomp_data->current_edit_entry = nPage;
+
+       ret = msg_ui_composer_body_item_add(pcomp_data, filepath);
+
+       if (ret != COMPOSER_RETURN_SUCCESS)
+               return ret;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_set_loaded_text(MSG_COMPOSER_VIEW_DATA_S *pcomp_data, const char *body_text, int nPage)
+{
+       D_ENTER;
+
+       if (!pcomp_data) {
+               D_EMSG("composer data is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       if (pcomp_data->body_data.page_count < nPage + 1)
+               msg_ui_composer_body_add_page(pcomp_data);
+
+       Eina_List *pagelist = pcomp_data->body_data.page_list;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(pagelist, nPage);
+       Evas_Object *entry = page_data->entry;
+
+       char *markup_text = elm_entry_utf8_to_markup(body_text);
+
+       elm_entry_entry_set(entry, markup_text);
+
+       if (markup_text)
+               g_free(markup_text);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_set_loaded_page_duration(MSG_COMPOSER_VIEW_DATA_S *pcomp_data, int duration, int nPage)
+{
+       D_ENTER;
+
+       if (!pcomp_data) {
+               D_EMSG("composer data is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       if (pcomp_data->body_data.page_count < nPage + 1) {
+               D_EMSG("Invalid page count nPage = %d", nPage);
+               return COMPOSER_RETURN_INVALID_PAGE;
+       }
+
+       Eina_List *pagelist = pcomp_data->body_data.page_list;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(pagelist, nPage);
+
+       if (duration > COMPOSER_PAGE_DEFAULT_DURATION)
+               page_data->page_duration = duration;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_body_data_init(MSG_COMPOSER_VIEW_DATA_S *pcomp_data)
+{
+       D_ENTER;
+       if (!pcomp_data) {
+               D_EMSG("composer data is NULL;");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &pcomp_data->body_data;
+       Eina_List *page_list = body_data->page_list;
+
+       body_data->page_count = 0;
+
+       if (page_list) {
+               Eina_List *iter;
+               MSG_COMPOSER_BODY_PAGE_S *pData;
+
+               EINA_LIST_FOREACH(page_list, iter, pData) {
+                       if (pData)
+                               free(pData);
+               }
+               free(page_list);
+               page_list = NULL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static bool __msg_ui_composer_is_mms_text(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object* entry)
+{
+       D_ENTER;
+
+       if (!cd || !entry) {
+               D_EMSG("NULL parameter passed.");
+               return false;
+       }
+
+       int char_count = 0;
+       int cms_page = 0;
+       int cms_max_count = 0;
+       int char_encode = COMPOSER_CHAR_ENCODE_MAX;
+       int page_size = 0;
+
+       char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+
+       if (body_text == NULL){
+               D_EMSG("no text on there")
+               return false;
+       }
+
+       char_encode = msg_ui_composer_body_entry_char_count(cd, (const char *)body_text, &char_count, &page_size);
+       D_MSG("cd->encode_mode = %d", cd->encode_mode);
+       D_MSG("encode = %d, text_size = %d, page_size = %d", char_encode, char_count, page_size);
+       free(body_text);
+
+       if (char_encode == COMPOSER_CHAR_ENCODE_UNICODE) {
+               cms_max_count = COMPOSER_CMS_UNICODE_MAX_LEN * cd->cms_max_page;
+       } else if (char_encode == COMPOSER_CHAR_ENCODE_GSM7 || char_encode == COMPOSER_CHAR_ENCODE_GSM7_ABNORMAL) {
+               cms_max_count = COMPOSER_CMS_GSM7_MAX_LEN * cd->cms_max_page;
+       } else {
+               return false;
+       }
+
+       D_LEAVE;
+       if (cms_page > cd->cms_max_page || cms_max_count < char_count) {
+               return true;
+       } else {
+               return false;
+       }
+}
+
+Eina_Bool msg_ui_composer_body_is_mms(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, EINA_FALSE, "param is NULL");
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       Eina_List *page_list = body_data->page_list;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+
+       if (body_data->page_count > 1) {
+               D_MSG("composer message type MMS (multi-page)");
+               return EINA_TRUE;
+       } else if (body_data->page_count == 1) {
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, 0);
+               if (!page_data) {
+                       D_EMSG("page data is NULL");
+                       return EINA_FALSE;
+               }
+
+               if (page_data->is_image_item && (strlen(page_data->image_file_path) > 0)) {
+                       D_MSG("composer message type MMS (image/video data exist)");
+                       return EINA_TRUE;
+               }
+
+               if (page_data->is_sound_item && (strlen(page_data->sound_file_path) > 0)) {
+                       D_MSG("composer message type MMS (sound data exist)");
+                       return EINA_TRUE;
+               }
+
+               if (__msg_ui_composer_is_mms_text(cd, page_data->entry) == true) {
+                       D_MSG("number of body character is over CMS max count)");
+                       return EINA_TRUE;
+               }
+       } else {
+               D_EMSG("page_count value is not valid");
+               return EINA_FALSE;
+       }
+
+       return EINA_FALSE;
+}
+
+bool msg_ui_composer_body_has_media(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, false, "param is NULL");
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       Eina_List *page_list = body_data->page_list;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+
+       if (body_data->page_count > 1) {
+               D_MSG("composer message type MMS (multi-page)");
+               return true;
+       } else if (body_data->page_count == 1) {
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, 0);
+               if (!page_data) {
+                       D_EMSG("page data is NULL");
+                       return false;
+               }
+
+               if (page_data->is_image_item && (strlen(page_data->image_file_path) > 0)) {
+                       D_MSG("composer message type MMS (image/video data exist)");
+                       return true;
+               }
+
+               if (page_data->is_sound_item && (strlen(page_data->sound_file_path) > 0)) {
+                       D_MSG("composer message type MMS (sound data exist)");
+                       return true;
+               }
+
+               if (page_data->entry) {
+                       bool has_text = false;
+                       char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(page_data->entry));
+
+                       if (body_text) {
+                               if (strlen(body_text))
+                                       has_text = true;
+
+                               free(body_text);
+                       }
+
+                       return has_text;
+               }
+
+       } else {
+               D_EMSG("page_count value is not valid");
+               return false;
+       }
+
+       return false;
+}
+
+void msg_ui_composer_body_focus_set(MSG_COMPOSER_VIEW_DATA_S *cd, int nPage)
+{
+       D_ENTER;
+       if (!cd)
+               return;
+
+       if (nPage < 0)
+               return;
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       if (!body_data)
+               return;
+
+       MSG_COMPOSER_BODY_PAGE_S *page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, nPage);
+
+       if (page_data) {
+               D_MSG("Focus to Page[%d]", nPage);
+               elm_object_focus_set(page_data->entry, EINA_TRUE);
+       } else {
+               D_MSG("There is not exist Page[%d]", nPage);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_body_update_send_btn_icon(MSG_COMPOSER_VIEW_DATA_S *cd, bool disable)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       const char *file_path = NULL;
+       Evas_Object *icon = NULL;
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) { /* mms type */
+               if (disable) {
+                       file_path = MSGC_MMS_SEND_DIM_ICON;
+               } else {
+                       file_path = MSGC_MMS_SEND_ICON;
+               }
+       } else { /* sms type */
+               if (disable) {
+                       file_path = MSGC_SMS_SEND_DIM_ICON;
+               } else {
+                       file_path = MSGC_SMS_SEND_ICON;
+               }
+       }
+
+       if (file_path) {
+               icon = elm_icon_add(cd->send_button);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, file_path);
+               elm_object_part_content_set(cd->send_button, "icon", icon);
+               evas_object_show(icon);
+       } else {
+               D_EMSG("Invalid icon_path");
+       }
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_check_is_text_top(msg_struct_t region_0, msg_struct_t region_1, bool *is_text_top)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(region_0 == NULL, COMPOSER_RETURN_FAIL, "param is NULL");
+       D_MSG_RETVM_IF(region_1 == NULL, COMPOSER_RETURN_FAIL, "param is NULL");
+       D_MSG_RETVM_IF(is_text_top == NULL, COMPOSER_RETURN_FAIL, "is_text_top is NULL");
+
+       int top_0 = 0;
+       int top_1 = 0;
+       int height_0 = 0;
+       int height_1 = 0;
+       char sz_id_0[MAX_SMIL_REGION_ID] = {0,};
+       char sz_id_1[MAX_SMIL_REGION_ID] = {0,};
+
+       /* get region_0 */
+       msg_get_str_value(region_0, MSG_MMS_REGION_ID_STR, sz_id_0, sizeof(sz_id_0));
+       msg_get_int_value(region_0, MSG_MMS_REGION_LENGTH_TOP_INT, &top_0);
+       msg_get_int_value(region_0, MSG_MMS_REGION_LENGTH_HEIGHT_INT, &height_0);
+
+       /* get region_1 */
+       msg_get_str_value(region_1, MSG_MMS_REGION_ID_STR, sz_id_1, sizeof(sz_id_1));
+       msg_get_int_value(region_1, MSG_MMS_REGION_LENGTH_TOP_INT, &top_1);
+       msg_get_int_value(region_1, MSG_MMS_REGION_LENGTH_HEIGHT_INT, &height_1);
+
+       /*check text top
+        *      if (text's top == 0 & image's top != 0)
+        *              text top
+        *      else if (text's top < image's top)
+        *              text top
+        *      else if (text's top == 0 & image's top == 0) {
+        *              if (text' height < image's height )
+        *                      text top
+        *      }
+        */
+
+       *is_text_top = false;
+
+       /* find and set image, text region */
+       if (!strcasecmp(sz_id_0, "Image")) {    /* region_0 is IMAGE REGION */
+               if (top_1 == 0 && top_0 != 0) {
+                       *is_text_top = true;
+               } else if (top_1 < top_0) {
+                       *is_text_top = true;
+               } else if (top_1 == 0 && top_0 == 0) {
+                       if (height_1 < height_0) {
+                               *is_text_top = true;
+                       }
+               }
+
+       } else if (!strcasecmp(sz_id_1, "Image")) { /* region_1 is IMAGE_REGION */
+               if (top_0 == 0 && top_1 != 0) {
+                       *is_text_top = true;
+               } else if (top_0 < top_1) {
+                       *is_text_top = true;
+               } else if (top_0 == 0 && top_1 == 0) {
+                       if (height_0 < height_1) {
+                               *is_text_top = true;
+                       }
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
diff --git a/composer/src/ui-composer/msg-ui-composer-common.c b/composer/src/ui-composer/msg-ui-composer-common.c
new file mode 100755 (executable)
index 0000000..30c2197
--- /dev/null
@@ -0,0 +1,1463 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <Elementary.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include <mmf/mm_error.h>
+#include <metadata_extractor.h>
+#include <image_util.h>
+
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-subject.h"
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-body-callback.h"
+#include "msg-ui-composer-attachment.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-bubble.h"
+#include "msg-ui-composer-main.h"
+
+/* MIME type table*/
+
+const composer_mime_type_t composer_mime_table[] = {
+/*audio*/
+       {"aac", "audio/aac", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"amr", "audio/amr", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"amr", "audio/x-amr", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"amr", "audio/amr-wb", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"imy", "audio/imelody", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"imy", "audio/imy", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"imy", "audio/iMelody", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"imy", "audio/melody", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"imy", "audio/x-iMelody", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"imy", "text/iMelody", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"imy", "text/x-iMelody", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"imy", "text/x-imelody", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mid", "audio/mid", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mid", "audio/midi", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mid", "audio/x-mid", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mid", "audio/x-midi", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"midi", "audio/mid", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mmf", "application/vnd.smaf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mmf", "application/x-smaf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mmf", "audio/mmf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mmf", "audio/smaf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mmf", "audio/x-mmf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mmf", "audio/x-smaf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/mpeg", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/mp3", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/mpg3", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/mpeg3", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/mpg", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/x-mp3", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/x-mpeg", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/x-mpeg3", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/x-mpegaudio", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp3", "audio/x-mpg", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mpg", "audio/x-mpeg", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"m4a", "audio/m4a", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"ra", "audio/x-pn-realaudio", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"rm", "audio/vnd.rn-realaudio", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"rm", "audio/x-pn-multirate-realaudio", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"rm", "audio/x-pn-multirate-realaudio-live", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"spm", "audio/sp-midi", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"wav", "audio/wav", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"wav", "audio/wave", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"wav", "audio/x-wav", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"wav", "audio/x-wave", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"wma", "audio/wma", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"wma", "audio/x-ms-wma", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"xmf", "audio/mobile-xmf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"xmf", "audio/xmf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"xmf", "audio/x-xmf", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"3gp", "audio/3gpp", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp4", "audio/mp4", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp4", "audio/MP4A-LATM", COMPOSER_MEDIA_TYPE_AUDIO},
+       {"mp4", "audio/mpeg4", COMPOSER_MEDIA_TYPE_AUDIO},
+/*image*/
+       {"bmp", "image/bmp", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"bmp", "image/x-bmp", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"gif", "image/gif", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"GIF", "image/gif", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"gif", "image/vnd.tmo.my5-gif", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"jpg", "image/jpg", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"jpg", "image/jpeg", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"jpg", "image/vnd.tmo.my5-jpg", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"jpeg", "image/jpeg", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"JPG", "image/jpeg", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"jpg", "image/pjpeg", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"jpe", "image/jpeg", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"png", "image/png", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"wbmp", "image/vnd.wap.wbmp", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"wbmp", "image/wbmp", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"swf", "application/x-shockwave-flash", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"tif", "image/tiff", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"tif", "image/tif", COMPOSER_MEDIA_TYPE_IMAGE},
+       {"pmd", "audio/pmd", COMPOSER_MEDIA_TYPE_IMAGE},
+/*video*/
+       {"3gp", "video/3gpp", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"3gp", "video/3gp", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"3gp", "video/h263", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"3gp", "video/mp4v-es", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"asf", "audio/x-ms-asf", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"asf", "video/x-ms-asf", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"asx", "video/x-ms-asf", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"avi", "video/avi", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mp2", "video/mpeg", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mp4", "video/mp4", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mp4", "video/mpeg4", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mp4", "video/x-mp4", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mp4", "video/x-pv-mp4", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mpg", "video/mpeg", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mpeg", "video/mpeg", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"rm", "video/x-pn-multirate-realvideo", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"rm", "video/vnd.rn-realmedia", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"rm", "video/vnd.rn-realvideo", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"rv", "video/x-pn-realvideo", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"sdp", "application/sdp", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"sdp", "video/sdp", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"wmv", "video/x-ms-wmv", COMPOSER_MEDIA_TYPE_VIDEO},
+/*text*/
+       {"txt", "text/plain", COMPOSER_MEDIA_TYPE_TEXT},
+       {"text", "text/plain", COMPOSER_MEDIA_TYPE_TEXT},
+       {"html", "text/html", COMPOSER_MEDIA_TYPE_TEXT},
+       {"htm", "text/html", COMPOSER_MEDIA_TYPE_TEXT},
+       {"wml", "text/vnd.wap.wml", COMPOSER_MEDIA_TYPE_TEXT},
+       {"xml", "text/xml", COMPOSER_MEDIA_TYPE_TEXT},
+/*vObject*/
+       {"vbm", "text/x-vbookmark", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"vcf", "text/x-vcard", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"vcs", "text/x-vCalendar", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"vnt", "text/x-vnote", COMPOSER_MEDIA_TYPE_UNKNOWN},
+/*drm*/
+       {"dcf", "application/vnd.oma.drm.content", COMPOSER_MEDIA_TYPE_DRM},
+       {"dm", "application/vnd.oma.drm.message", COMPOSER_MEDIA_TYPE_DRM},
+       {"odf", "application/vnd.oma.drm.dcf", COMPOSER_MEDIA_TYPE_DRM},
+       {"oro", "application/vnd.oma.drm.ro+xml", COMPOSER_MEDIA_TYPE_DRM},
+       {"ro", "application/vnd.oma.drm.rights+xml", COMPOSER_MEDIA_TYPE_DRM},
+       {"ro", "application/vnd.oma.drm.rights+wbxml", COMPOSER_MEDIA_TYPE_DRM},
+/*doc*/
+       {"doc", "application/msword", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"doc", "applcation/vnd.ms-word", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"xls", "application/vnd.ms-excel", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"xls", "application/x-msexcel", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"ppt", "application/vnd.ms-powerpoint", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"ppt", "application/x-mspowerpoint", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"pdf", "application/pdf", COMPOSER_MEDIA_TYPE_UNKNOWN},
+/*etc*/
+       {"rm ", "application/vnd.rn-realmedia", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"smi", "application/smil", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"smil", "application/smil", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"xml", "application/vnd.oma.drm.roap-pdu+xml", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"xml", "application/vnd.oma.drm.roap-trigger+xml", COMPOSER_MEDIA_TYPE_UNKNOWN},
+       {"xxx", "application/octet-stream", COMPOSER_MEDIA_TYPE_UNKNOWN},
+};
+
+char *msg_ui_composer_edj_get(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       return MSGC_UI_DEFAULT_EDJ;
+}
+
+Evas_Object *msg_ui_composer_load_edj(Evas_Object *parent, const char *edj_file, const char *group)
+{
+       Evas_Object *layout;
+       layout = elm_layout_add(parent);
+
+       elm_layout_file_set(layout, edj_file, group);
+       return layout;
+}
+
+Evas_Object *msg_ui_composer_layout_create(Evas_Object *parent, bool indicator)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent object  == NULL");
+
+       Evas_Object *layout;
+
+       layout = elm_layout_add(parent);
+       if (layout == NULL) {
+               D_EMSG("[ASSERT] elm_layout_add failed!!");
+               return NULL;
+       }
+
+       if (indicator == true)
+               elm_layout_theme_set(layout, "layout", "application", "default");
+       else
+               elm_layout_theme_set(layout, "layout", "application", "noindicator");
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+       D_LEAVE;
+       return layout;
+}
+
+Evas_Object *msg_ui_composer_bg_create(Evas_Object *parent)
+{
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent object  == NULL");
+    Evas_Object *bg = elm_bg_add(parent);
+    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_show(bg);
+    return bg;
+}
+
+int64 msg_composer_get_file_size(const char *path)
+{
+       return ecore_file_size(path);
+}
+
+char *msg_composer_get_file_ext(const char *a_pszfile_name)
+{
+       if (a_pszfile_name != NULL) {
+               int nlen = strlen(a_pszfile_name);
+               char *psztemp = (char *)a_pszfile_name + nlen;
+
+               while (nlen--) {
+                       psztemp--;
+                       if (*psztemp == '.') {
+                               psztemp++;
+                               break;
+                       }
+               }
+               return psztemp;
+       }
+
+       return NULL;
+}
+
+COMPOSER_MEDIA_TRACK_TYPE_E msg_composer_get_media_track_type(const char *a_pszfile_name)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(a_pszfile_name == NULL, COMPOSER_MEDIA_TRACK_TYPE_NONE, "file path is null");
+
+       int ret = METADATA_EXTRACTOR_ERROR_NONE;
+       metadata_extractor_h metadata = NULL;
+
+       ret = metadata_extractor_create(&metadata);
+       if(ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("Fail metadata_extractor_create [%d]", ret);
+               return COMPOSER_MEDIA_TRACK_TYPE_NONE;
+       }
+
+       ret = metadata_extractor_set_path(metadata, a_pszfile_name);
+       if(ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("Fail metadata_extractor_set_path [%d]", ret);
+               metadata_extractor_destroy(metadata);
+               return COMPOSER_MEDIA_TRACK_TYPE_NONE;
+       }
+
+       /* check video first */
+       char *video_track_cnt = NULL;
+       metadata_extractor_get_metadata(metadata, METADATA_HAS_VIDEO, &video_track_cnt);
+       if (video_track_cnt) {
+               D_MSG("video_track_cnt = [%s]", video_track_cnt);
+               if (atoi(video_track_cnt) > 0) {
+                       metadata_extractor_destroy(metadata);
+                       return COMPOSER_MEDIA_TRACK_TYPE_VIDEO;
+               }
+       }
+
+       /* if curren meta_info has no video track, check audio again */
+       char *audio_track_cnt = NULL;
+       metadata_extractor_get_metadata(metadata, METADATA_HAS_AUDIO, &audio_track_cnt);
+       if (audio_track_cnt) {
+               D_MSG("audio_track_cnt = [%s]", audio_track_cnt);
+               if (atoi(audio_track_cnt) > 0) {
+                       metadata_extractor_destroy(metadata);
+                       return COMPOSER_MEDIA_TRACK_TYPE_AUDIO;
+               }
+       }
+
+       metadata_extractor_destroy(metadata);
+
+       return COMPOSER_MEDIA_TRACK_TYPE_NONE;
+}
+
+COMPOSER_MEDIA_TYPE_E msg_composer_get_media_type(const char *a_pszfile_path)
+{
+       char *pext = NULL;
+       unsigned int nmimeidx = 0;
+       unsigned int nmime_max = 0;
+       COMPOSER_MEDIA_TRACK_TYPE_E track_type = COMPOSER_MEDIA_TRACK_TYPE_NONE;
+
+       if (a_pszfile_path == NULL)
+               return COMPOSER_MEDIA_TYPE_UNKNOWN;
+
+       pext = msg_composer_get_file_ext(a_pszfile_path);
+       nmime_max = (sizeof(composer_mime_table) / sizeof(composer_mime_type_t));
+       track_type = msg_composer_get_media_track_type(a_pszfile_path);
+
+       for (; nmimeidx < nmime_max; nmimeidx++) {
+               int nlen = strlen(composer_mime_table[nmimeidx].m_szextend);
+
+               if (strncasecmp(composer_mime_table[nmimeidx].m_szextend, pext, nlen) == 0) {
+                       if (track_type == COMPOSER_MEDIA_TRACK_TYPE_VIDEO) {
+                               if (strstr(composer_mime_table[nmimeidx].m_szmime_type, "video") != NULL)
+                                       return composer_mime_table[nmimeidx].m_ncontent_type;
+                       } else if (track_type == COMPOSER_MEDIA_TRACK_TYPE_AUDIO) {
+                               if (strstr(composer_mime_table[nmimeidx].m_szmime_type, "audio") != NULL)
+                                       return composer_mime_table[nmimeidx].m_ncontent_type;
+                       } else {
+                               return composer_mime_table[nmimeidx].m_ncontent_type;
+                       }
+               }
+       }
+
+       return COMPOSER_MEDIA_TYPE_UNKNOWN;
+}
+
+COMPOSER_RETURN_TYPE_E msg_composer_common_get_media_duration(const char *file_path, int *duration)
+{
+       D_ENTER;
+
+       metadata_extractor_h metadata_h = NULL;
+       int ret = METADATA_EXTRACTOR_ERROR_NONE;
+       char *value = NULL;
+
+       if (!file_path || !duration) {
+               D_EMSG("file_path or duration is not exist");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ret = metadata_extractor_create(&metadata_h);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("metadata_extractor_create is failed ret = %d", ret);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ret = metadata_extractor_set_path(metadata_h, file_path);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("metadata_extractor_set_path is failed ret = %d", ret);
+               metadata_extractor_destroy(metadata_h);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ret = metadata_extractor_get_metadata(metadata_h, METADATA_DURATION, &value);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("metadata_extractor_get_metadata is failed ret = %d", ret);
+               metadata_extractor_destroy(metadata_h);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (value) {
+               *duration = atoi(value);
+               free(value);
+       }
+
+       D_MSG("file : %s, duration : %d", file_path, *duration);
+
+       metadata_extractor_destroy(metadata_h);
+
+       D_LEAVE;
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_composer_common_get_thumbnail(MSG_COMPOSER_VIEW_DATA_S *cd, const char *src_file_path, char *thumb_file_path, int size_thumb_file_path)
+{
+       D_ENTER;
+       COMPOSER_MEDIA_TYPE_E media_type;
+       int ret;
+       char temp_img_file[COMPOSER_FILEPATH_LEN_MAX] = {0,};
+       char *filename_without_ext = NULL;
+       const char *filename = NULL;
+
+       if (!src_file_path || !thumb_file_path) {
+               D_EMSG("file path or thumbnail path is NULL");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       if (!ecore_file_exists(src_file_path)) {
+               D_EMSG("file path is not exist");
+               return COMPOSER_RETURN_NULL_POINTER;
+       }
+
+       media_type = msg_composer_get_media_type(src_file_path);
+       if (media_type == COMPOSER_MEDIA_TYPE_VIDEO) {
+
+               filename = ecore_file_file_get(src_file_path);
+               if (filename) {
+                       filename_without_ext = ecore_file_strip_ext(filename);
+
+                       if (filename_without_ext) {
+                               snprintf(temp_img_file, sizeof(temp_img_file)-1, "%s/temp_image_%s.jpg", cd->working_path, filename_without_ext);
+                               g_free(filename_without_ext);
+                       } else {
+                               return COMPOSER_RETURN_FAIL;
+                       }
+
+               } else {
+                       return COMPOSER_RETURN_FAIL;
+               }
+
+               /* get image of video*/
+               ret = msg_composer_common_get_image_in_video(src_file_path, temp_img_file);
+               if (ret == COMPOSER_RETURN_SUCCESS) {
+                       strncpy(thumb_file_path, temp_img_file, size_thumb_file_path);
+               }
+       } else {
+               D_EMSG("media type is not video type media_type = %d !!", media_type);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+void msg_ui_composer_clear(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       /*Clear recipient */
+       if (cd->recipient)
+               msg_ui_composer_recipient_clear(cd->recipient);
+
+       /*Clear Body*/
+       if (cd->isSubject) {
+               msg_ui_composer_subject_clear(cd);
+               cd->isSubject = false;
+       }
+
+       if (cd->attach_data.attachment_Cnt > 0) {
+               msg_ui_composer_attachment_clear(cd);
+       }
+
+       msg_ui_composer_body_clear(cd);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_change_to_sms(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return;
+       }
+
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+
+       /* reset region info */
+       body_data->region_order = COMPOSER_REGION_ORDER_UNDETERMINDED;
+
+       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(cd->body_data.page_list, 0);
+
+       char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(page_data->entry));
+       if (body_text) {
+               msg_ui_composer_body_info_area_update(cd);
+               free(body_text);
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_change_to_mms(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return;
+       }
+
+       msg_ui_composer_body_info_area_update(cd);
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_change_message_type(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_MSG_TYPE_E msg_type)
+{
+       D_ENTER;
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (cd->msg_type == msg_type) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] it doesn't need to change message type");
+               return COMPOSER_RETURN_SUCCESS;
+       }
+
+       switch (msg_type) {
+       case COMPOSER_MSG_TYPE_SMS:
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_CHANGED_SMS);
+
+               cd->msg_type = COMPOSER_MSG_TYPE_SMS;
+               __msg_ui_composer_change_to_sms(cd);
+               break;
+       case COMPOSER_MSG_TYPE_MMS:
+               if (cd->loading_draft == false)
+                       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_CHANGED_MMS);
+               else
+                       cd->loading_draft = false;
+
+               cd->msg_type = COMPOSER_MSG_TYPE_MMS;
+               __msg_ui_composer_change_to_mms(cd);
+               break;
+       default:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] invalid message type");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       bool ret = msg_ui_composer_common_is_send_possible(cd);
+       msg_ui_composer_body_update_send_btn_icon(cd, !ret);
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_SMS && cd->msg_ug_mode != MSG_UG_MODE_BUBBLE_COMPOSER)
+               elm_object_disabled_set(cd->more_btn, EINA_TRUE);
+       else if (cd->msg_type == COMPOSER_MSG_TYPE_MMS)
+               elm_object_disabled_set(cd->more_btn, EINA_FALSE);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_MSG_TYPE_E msg_ui_composer_check_message_type(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSSERT] composer data in NULL");
+               return COMPOSER_MSG_TYPE_INVALID;
+       }
+
+       if (cd->isSubject)
+               return COMPOSER_MSG_TYPE_MMS;
+
+       if (cd->attach_data.attachment_Cnt > 0)
+               return COMPOSER_MSG_TYPE_MMS;
+
+       if (msg_ui_composer_body_is_mms(cd) == EINA_TRUE)
+               return COMPOSER_MSG_TYPE_MMS;
+
+       if (msg_ui_composer_recipient_is_mms(cd) == EINA_TRUE)
+               return COMPOSER_MSG_TYPE_MMS;
+
+       return COMPOSER_MSG_TYPE_SMS;
+}
+
+void msg_ui_composer_message_type_check_and_change(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       COMPOSER_MSG_TYPE_E checked_type;
+
+       checked_type = msg_ui_composer_check_message_type(cd);
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_SMS && checked_type == COMPOSER_MSG_TYPE_MMS) {
+               D_MSG("### Message Type Change from [SMS] to [MMS] ###");
+               msg_ui_composer_change_message_type(cd, COMPOSER_MSG_TYPE_MMS);
+       } else if (cd->msg_type == COMPOSER_MSG_TYPE_MMS && checked_type == COMPOSER_MSG_TYPE_SMS) {
+               D_MSG("### Message Type Change from [MMS] to [SMS] ###");
+               msg_ui_composer_change_message_type(cd, COMPOSER_MSG_TYPE_SMS);
+       } else {
+               D_MSG("Now msg type is [%d] & checked msg type is [%d](0: INVAILD, 1: SMS, 2: MMS)", cd->msg_type, checked_type);
+       }
+
+       D_LEAVE;
+}
+
+Eina_Bool msg_ui_composer_last_focus_load(void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       if(!cd) return EINA_FALSE;
+
+       if (cd->last_focus_entry == NULL) {
+               D_MSG("NO ENTRY FOCUS");
+               return EINA_FALSE;
+       }
+
+       elm_object_focus_set(cd->last_focus_entry, EINA_TRUE);
+       D_MSG("### Focused Entry Load = %p",cd->last_focus_entry);
+       D_LEAVE;
+       return EINA_FALSE;
+}
+
+Eina_Bool msg_ui_composer_last_body_page_focus_load(void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       MSG_COMPOSER_BODY_PAGE_S *last_page_data = eina_list_nth(cd->body_data.page_list, cd->body_data.page_count-1);
+
+       if (last_page_data && last_page_data->entry) {
+               elm_object_focus_set(last_page_data->entry, EINA_TRUE);
+               D_MSG("### Last body page entry focused = %p",last_page_data->entry);
+               msg_ui_composer_last_focused_entry_set(cd, last_page_data->entry);
+       } else {
+               D_MSG("Failed to get last body page entry");
+               return EINA_FALSE;
+       }
+
+       D_LEAVE;
+       return EINA_TRUE;
+}
+
+void msg_ui_composer_last_focused_entry_set(void *data, Evas_Object *entry)
+{
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       cd->last_focus_entry = entry;
+}
+
+Evas_Object *msg_ui_composer_last_focused_entry_get(void *data)
+{
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       if (!cd) return NULL;
+
+       return cd->last_focus_entry;
+}
+
+Evas_Object *msg_ui_composer_last_body_entry_get(void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       MSG_COMPOSER_BODY_PAGE_S *page_data = eina_list_nth(cd->body_data.page_list, cd->current_edit_entry);
+       D_MSG("cd->current_edit_entry = %d", cd->current_edit_entry);
+
+       if (page_data && page_data->entry) {
+               return page_data->entry;
+       } else {
+               D_MSG("No Entry Saved");
+               return NULL;
+       }
+
+       D_LEAVE;
+       return NULL;
+}
+
+void msg_ui_composer_set_body_keypad_layout(void *data, int mode)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "data is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+
+       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(cd->body_data.page_list, 0);
+
+       if (page_data && page_data->entry)
+               elm_entry_input_panel_layout_set(page_data->entry, mode);
+       else
+               D_EMSG("entry is not found");
+
+       D_LEAVE;
+}
+
+bool msg_ui_composer_last_focus_is_recipient(void *data)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(data == NULL, false, "data is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       RECIPIENT_S *recipient = cd->recipient;
+       Evas_Object *last_focus = msg_ui_composer_last_focused_entry_get(cd);
+
+       if (last_focus && recipient) {
+               if (last_focus == recipient->mbe) {
+                       return true;
+               }
+       }
+
+       D_LEAVE;
+       return false;
+}
+
+void bundle_send_to_result(void *data, char *key, char *val)
+{
+       D_ENTER;
+       D_MSG("key = %s, val = %s", key, val);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       service_h svc_handle;
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               service_add_extra_data(svc_handle, key, val);
+               ug_send_result(cd->ug, svc_handle);
+               service_destroy(svc_handle);
+       }
+       D_LEAVE;
+}
+
+bool msg_ui_composer_common_is_send_possible(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return false;
+       }
+
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               if (cd->isSubject) {
+                       char *subject = elm_entry_markup_to_utf8(elm_entry_entry_get(cd->sub_data.entry));
+                       if (subject && strlen(subject) > 0) {
+                               g_free(subject);
+                               return true;
+                       } else {
+                               g_free(subject);
+                       }
+               }
+
+               if (cd->attach_data.attachment_Cnt > 0) {
+                       return true;
+               }
+
+               int i = 0;
+               for (i = 0; i < cd->body_data.page_count; i++) {
+                       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, i);
+
+                       if (page_data->is_image_item)
+                               return true;
+
+                       if (page_data->is_sound_item)
+                               return true;
+
+                       char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(page_data->entry));
+                       if (body_text) {
+                               if (strlen(body_text) > 0) {
+                                       g_free(body_text);
+                                       return true;
+                               }
+                               g_free(body_text);
+                       }
+               }
+       } else if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(body_data->page_list, 0);
+               if(page_data) {
+                       char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(page_data->entry));
+                       if (body_text) {
+                               if (strlen(body_text) > 0) {
+                                       g_free(body_text);
+                                       return true;
+                               }
+                               g_free(body_text);
+                       }
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid message type");
+               return false;
+       }
+
+       D_LEAVE;
+       return false;
+}
+
+COMPOSER_RETURN_TYPE_E msg_composer_common_get_image_in_video(const char *video_file_path, char *image_file_path)
+{
+       D_ENTER;
+
+       COMPOSER_MEDIA_TYPE_E media_type;
+       metadata_extractor_h metadata_h = NULL;
+       int ret = METADATA_EXTRACTOR_ERROR_NONE;
+       int video_w = 0;
+       int video_h = 0;
+       int thumbsize = 0;
+       void *thumbnail = NULL;
+       char *value = NULL;
+
+       media_type = msg_composer_get_media_type(video_file_path);
+       if (media_type != COMPOSER_MEDIA_TYPE_VIDEO) {
+               D_EMSG("It is not video file %s", video_file_path);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ret = metadata_extractor_create(&metadata_h);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("metadata_extractor_create is failed ret = %d", ret);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ret = metadata_extractor_set_path(metadata_h, video_file_path);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("metadata_extractor_set_path is failed ret = %d", ret);
+               metadata_extractor_destroy(metadata_h);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ret = metadata_extractor_get_metadata(metadata_h, METADATA_VIDEO_WIDTH, &value);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("metadata_extractor_get_metadata is failed ret = %d", ret);
+               metadata_extractor_destroy(metadata_h);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (value) {
+               video_w = atoi(value);
+               free(value);
+               value = NULL;
+       }
+
+       ret = metadata_extractor_get_metadata(metadata_h, METADATA_VIDEO_HEIGHT, &value);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("metadata_extractor_get_metadata is failed ret = %d", ret);
+               metadata_extractor_destroy(metadata_h);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (value) {
+               video_h = atoi(value);
+               free(value);
+               value = NULL;
+       }
+
+       ret = metadata_extractor_get_frame(metadata_h, &thumbnail, &thumbsize);
+       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+               D_EMSG("metadata_extractor_get_frame is failed ret = %d", ret);
+               metadata_extractor_destroy(metadata_h);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (thumbnail) {
+               ret = image_util_encode_jpeg((unsigned char *)thumbnail, video_w, video_h, IMAGE_UTIL_COLORSPACE_RGB888, 100, image_file_path);
+
+               free(thumbnail);
+
+               if (ret != IMAGE_UTIL_ERROR_NONE) {
+                       D_EMSG("image_util_encode_jpeg is failed ret = %d", ret);
+                       metadata_extractor_destroy(metadata_h);
+                       return COMPOSER_RETURN_FAIL;
+               }
+       }
+
+       metadata_extractor_destroy(metadata_h);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_common_get_file(MSG_COMPOSER_VIEW_DATA_S *cd, const char *src_file_path, char *dst_file_path, int size_dst_file_path)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "cd is NULL");
+       D_MSG_RETVM_IF(src_file_path == NULL, COMPOSER_RETURN_FAIL, "src_file_path is NULL");
+       D_MSG_RETVM_IF(dst_file_path == NULL, COMPOSER_RETURN_FAIL, "dst_file_path is NULL");
+
+       const char *filename = NULL;
+       char *ext = NULL;
+       int i = 0;
+       char temp_file_path[COMPOSER_FILEPATH_LEN_MAX + 1] = {0,};
+       char file_name_without_ext[COMPOSER_FILENAME_LEN_MAX + 1] = {0};
+
+       if (ecore_file_exists(src_file_path) == EINA_FALSE) {
+               D_EMSG("file is not existed");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       filename = ecore_file_file_get(src_file_path);
+
+       if (filename) {
+               strncpy(file_name_without_ext, filename, COMPOSER_FILENAME_LEN_MAX);
+               ext = msg_composer_get_file_ext(filename);
+
+               if (ext)
+                       file_name_without_ext[strlen(file_name_without_ext) - strlen(ext) - 1] = '\0';
+
+               /*make new filename*/
+               do {
+                       memset(temp_file_path, 0x00, sizeof(temp_file_path));
+                       if (i == 0) {
+                               snprintf(temp_file_path, sizeof(temp_file_path), "%s%s", cd->working_path, filename);
+                       } else {
+                               if (ext && strlen(ext) > 0)
+                                       snprintf(temp_file_path, sizeof(temp_file_path), "%s%s_%02d.%s", cd->working_path, file_name_without_ext, i, ext);
+                               else
+                                       snprintf(temp_file_path, sizeof(temp_file_path), "%s%s_%02d", cd->working_path, file_name_without_ext, i);
+                       }
+
+                       i++;
+
+                       if (i > COMPOSER_MMS_MAX_MEDIA_COUNT) {
+                               D_EMSG("maximum count is reached = %d", i);
+                               return COMPOSER_RETURN_FAIL;
+                       }
+               } while (ecore_file_exists(temp_file_path));
+
+
+               if (ecore_file_cp(src_file_path, temp_file_path) == EINA_FALSE) {
+                       D_MSG("temp_file_path = %s", temp_file_path);
+                       return COMPOSER_RETURN_FAIL;
+               }
+
+               strncpy(dst_file_path, temp_file_path, size_dst_file_path);
+               D_MSG("copy file from %s to %s", src_file_path, dst_file_path);
+       } else {
+               D_EMSG("filename is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static char *__get_item_tag(char *text)
+{
+       char *fulltext = NULL;
+       char *tagStart = NULL;
+       char *tagEnd = NULL;
+       int tagStrLength = 0;
+
+       if (text == NULL)
+               return NULL;
+
+       fulltext = text;
+       D_MSG("text(%p)[%d] = %s", text, strlen(text), text);
+
+       tagStart = strstr(fulltext, "<item");
+       if (tagStart) {
+               tagEnd = strchr(tagStart, '>');
+               if (tagEnd) {
+                       tagStrLength = tagEnd - tagStart + 1;
+                       return strndup(tagStart, tagStrLength);
+               }
+       }
+
+       return NULL;
+}
+
+static char *__remove_item_tag(char *text)
+{
+       char *fulltext = NULL;
+       char *tagStart = NULL;
+       char *tagEnd = NULL;
+       char *braceStart = NULL;
+       char *braceEnd = NULL;
+       char *postStr = NULL;
+
+       int strLength = 0;
+       int postStrLength = 0;
+       bool isitemTag = false;
+
+       if (text == NULL)
+               return NULL;
+
+       char *textBuf = strdup(text);
+
+       if (!textBuf) {
+               D_EMSG("strdup is failed");
+               return NULL;
+       }
+
+       fulltext = textBuf;
+       strLength = strlen(textBuf);
+       D_MSG("text length = %d, text = [%s]", strLength, textBuf);
+
+       while ((tagStart = strstr(fulltext, "<item"))) {
+               braceEnd = strchr(tagStart, '>');
+               if (braceEnd) {
+                       braceStart = strstr(braceEnd, "</item>");
+                       if (braceStart) {
+                               tagEnd = (braceStart + strlen("</item>") - 1);
+                       } else {
+                               D_EMSG("There is no close item tag");
+                               tagEnd = braceEnd;
+                       }
+               } else {
+                       D_EMSG("There is no close tag");
+                       g_free(textBuf);
+                       return NULL;
+               }
+
+               postStrLength = strLength - (tagEnd - fulltext + 1);
+               postStr = strndup(tagEnd + 1, postStrLength);
+               if (!postStr) {
+                       D_EMSG("strndup is failed");
+                       g_free(textBuf);
+                       return NULL;
+               }
+
+               strncpy(tagStart, postStr, postStrLength);
+               *(tagStart + postStrLength) = '\0';
+               D_MSG("after textBuf = [%s]", textBuf);
+
+               g_free(postStr);
+               postStr = NULL;
+
+               isitemTag = true;
+       }
+
+       if (isitemTag)
+               return textBuf;
+
+       g_free(textBuf);
+
+       return NULL;
+}
+
+static char *__get_tag_value(const char *tag_str, const char *tag_name)
+{
+       char *tag;
+
+       if (!tag_name || !tag_str)
+               return NULL;
+
+       if ((tag = strstr(tag_str, tag_name))) {
+               if (tag[strlen(tag_name)] == '_')
+                       return NULL;
+               char *value = strchr(tag, '=');
+               if (value) {
+
+                       do {
+                               value++;
+                       } while (!isalnum(*value) && *value != '#');
+
+                       int spCnt = 5;
+                       char *spArray[spCnt];
+                       spArray[0] = strchr(value, '>');
+                       spArray[1] = strchr(value, '\"');
+                       spArray[2] = strchr(value, '\'');
+                       spArray[3] = strchr(value, '\t');
+                       spArray[4] = strchr(value, '\n');
+                       char *valueEnd = strchr(value, '\0');
+
+                       int i;
+                       int start = 0;
+                       if (!strcmp(tag_str, "item") && !strcmp(tag_name, "href"))
+                               start = 1;
+
+                       for (i = start; i < spCnt; i++) {
+                               if (spArray[i] && spArray[i] < valueEnd) {
+                                       valueEnd = spArray[i];
+                               }
+                       }
+
+                       int valueLength = valueEnd - value;
+                       return strndup(value, valueLength);
+               }
+       }
+
+       return NULL;
+}
+
+void msg_composer_entry_filter_addimage(void *data, Evas_Object *entry, char **text)
+{
+       D_ENTER;
+
+       char *item_val = NULL;
+       char *item_tag = NULL;
+       char *filepath = NULL;
+       char *realpath = NULL;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+       D_MSG_RETM_IF(entry == NULL,"Parameter Entry is Invalid");
+       D_MSG_RETM_IF((!text || !(*text)),"Parameter Text is Invalid");
+
+       /*get <item xxx> tag at insert text*/
+       item_tag = __get_item_tag(*text);
+
+       if (item_tag) {
+
+               D_MSG("item_tag = %s", item_tag);
+
+               /*get value of href in the item tag*/
+               item_val = __get_tag_value(item_tag, "href");
+               if (item_val) {
+                       D_MSG("item_href_val = %s", item_val);
+                       filepath = strstr(item_val, "file:");
+                       if (filepath) {
+                               realpath = filepath + 5;
+                       } else {
+                               realpath = filepath;
+                       }
+
+                       if (realpath) {
+                               if (ecore_file_exists(realpath) == EINA_TRUE) {
+                                       char * list_item_data  = g_strdup(realpath);
+                                       if (list_item_data) {
+                                               cd->attachlist= eina_list_append(cd->attachlist, list_item_data);
+                                               msg_ui_composer_body_items_add(data);
+                                       } else {
+                                               D_EMSG("Fail to g_strdup");
+                                       }
+                               } else {
+                                       D_EMSG("File is NOT exist %s", realpath);
+                               }
+                       } else {
+                               D_EMSG("File Path is NULL");
+                       }
+
+                       g_free(item_val);
+               }
+
+               g_free(item_tag);
+
+               /* remove item tag */
+               char *removed_text = __remove_item_tag(*text);
+               g_free(*text);
+
+               if (removed_text)
+                       *text = removed_text;
+               else
+                       *text = NULL;
+
+       }
+       D_LEAVE;
+}
+
+
+void
+msg_composer_entry_filter_remove_markup(void *data, Evas_Object *entry, char **text)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(text == NULL || *text == NULL, "New Text is NULL");
+
+       char *preedit_tag_start = NULL;
+       char *preedit_tag_end = NULL;
+       char *utf8_text = NULL;
+       char *convert_text = NULL;
+       D_MSG("text [%s]", *text);
+
+       /* Check preeditting text and return if it exist*/
+       preedit_tag_start = strstr(*text, "<preedit");
+       preedit_tag_end = strstr(*text, "</preedit");
+
+       if (preedit_tag_start && preedit_tag_end)
+               return;
+
+       /* convert from markup text to utf8 text from entry */
+       utf8_text  = elm_entry_markup_to_utf8(*text);
+
+       if (utf8_text) {
+               /* If the string contains "Carrage return ('\n'), it should be changed "<br>" to show properly*/
+               convert_text = elm_entry_utf8_to_markup(utf8_text);
+               if(convert_text) {
+                       free(*text);
+                       *text = strdup(convert_text);
+                       free(convert_text);
+               }
+               free(utf8_text);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_common_tickernoti(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_TICKERNOTI_TYPE_E tickertype)
+{
+       char popup_msg[DEF_BUF_LEN_L] = {0,};
+
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       if (tickertype == COMPOSER_TICKERNOTI_COUNT_MAX) {
+               const char *str = MSGC_STR_NOTI_RECIPIENT_MAX;
+               snprintf(popup_msg, sizeof(popup_msg), str, COMPOSER_RECIPIENT_COUNT_MAX);
+       } else if (tickertype == COMPOSER_TICKERNOTI_DUP_RECP) {
+               snprintf(popup_msg, sizeof(popup_msg), MSGC_STR_NOTI_RECIPIENT_DUP);
+       } else if (tickertype == COMPOSER_TICKERNOTI_INVALID_RECP) {
+               snprintf(popup_msg, sizeof(popup_msg), MSGC_STR_NOTI_RECIPIENT_INVALID);
+       } else if (tickertype == COMPOSER_TICKERNOTI_CHANGED_SMS) {
+               snprintf(popup_msg, sizeof(popup_msg), MSGC_STR_NOTI_CHANGE_SMS);
+       } else if (tickertype == COMPOSER_TICKERNOTI_CHANGED_MMS) {
+               snprintf(popup_msg, sizeof(popup_msg), MSGC_STR_NOTI_CHANGE_MMS);
+       } else if (tickertype == COMPOSER_TICKERNOTI_AUTO_SAVED) {
+               snprintf(popup_msg, sizeof(popup_msg), _MSGSTR("IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"));
+       } else if (tickertype == COMPOSER_TICKERNOTI_NO_RECIPIENT) {
+               snprintf(popup_msg, sizeof(popup_msg), _MSGSTR("IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"));
+       } else if (tickertype == COMPOSER_TICKERNOTI_MAXLENGHT_CHAR) {
+               snprintf(popup_msg, sizeof(popup_msg), _MSGSTR("IDS_MSGF_POP_MAXIMUM_CHARACTERS"));
+       } else {
+               return;
+       }
+
+       msg_ui_composer_status_noti_show(popup_msg);
+}
+
+int msg_ui_composer_get_keypad_height(Evas_Object *entry)
+{
+       D_MSG_RETVM_IF(entry == NULL, 0, "param is NULL");
+       int keypad_x = 0;
+       int keypad_y = 0;
+       int keypad_w = 0;
+       int keypad_h = 0;
+
+       Ecore_IMF_Context *entry_ctx = elm_entry_imf_context_get(entry);
+       ecore_imf_context_input_panel_geometry_get(entry_ctx, &keypad_x, &keypad_y, &keypad_w, &keypad_h);
+
+       return keypad_h;
+}
+
+void msg_ui_composer_change_body_scroll_size(MSG_COMPOSER_VIEW_DATA_S *cd, int keypad_height)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       int total_height = 0;
+       int scroll_height = 0;
+       int scroll_x = 0;
+       int scroll_y = 0;
+       int scroll_w = 0;
+       int scroll_h = 0;
+
+       elm_scroller_region_get(cd->body_scroll, &scroll_x, &scroll_y, &scroll_w, &scroll_h);
+       D_MSG("scroll region x=%d, y=%d, w=%d, h=%d", scroll_x, scroll_y, scroll_w, scroll_h);
+
+       if (cd->rotate == COMPOSER_ROTATE_PORTRAIT || cd->rotate == COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN)
+               total_height = (cd->window_h > cd->window_w) ? cd->window_h : cd->window_w;
+       else
+               total_height = (cd->window_h > cd->window_w) ? cd->window_w : cd->window_h;
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               RECIPIENT_S *rd = cd->recipient;
+               D_MSG_RETM_IF(rd == NULL, "recipient Data is NULL");
+               int recipient_h = 0;
+
+               recipient_h = rd->recipient_h;
+
+               D_MSG("recipient_h = %d", recipient_h);
+               if (cd->rotate == COMPOSER_ROTATE_PORTRAIT || cd->rotate == COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN)
+                       scroll_height = (total_height - keypad_height - recipient_h - MSGC_NAVIBAR_TITLE_H - MSGC_BODY_PADDING - MSGC_INDICATOR_H);
+               else
+                       scroll_height = (total_height - keypad_height - recipient_h - MSGC_NAVIBAR_TITLE_H - MSGC_BODY_PADDING);
+
+               D_MSG("scroll_height = %d", scroll_height);
+
+               if (scroll_height <= COMPOSER_FRAME_BODY_LANDSCAPE_HEIGHT_MIN)
+                       scroll_height = COMPOSER_FRAME_BODY_LANDSCAPE_HEIGHT_MIN;
+
+               if (scroll_h != scroll_height) {
+                       evas_object_size_hint_max_set(cd->body_scroll, 9999, scroll_height);
+                       elm_scroller_content_min_limit(cd->body_scroll, EINA_FALSE, EINA_TRUE);
+                       D_MSG("scroll size updated w = %d, h = %d", scroll_w, scroll_height);
+               }
+       } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               scroll_height = (total_height - keypad_height - MSGC_NAVIBAR_TITLE_H - MSGC_INDICATOR_H - MSGC_BODY_PADDING);
+               D_MSG("scroll_height = %d", scroll_height);
+
+               if (scroll_height <= COMPOSER_FRAME_BODY_LANDSCAPE_HEIGHT_MIN)
+                       scroll_height = COMPOSER_FRAME_BODY_LANDSCAPE_HEIGHT_MIN;
+
+               if (scroll_h != scroll_height) {
+                       evas_object_size_hint_max_set(cd->body_scroll, 9999, scroll_height);
+                       elm_scroller_content_min_limit(cd->body_scroll, EINA_FALSE, EINA_TRUE);
+                       D_MSG("scroll size updated w = %d, h = %d", scroll_w, scroll_height);
+               }
+       } else {
+               D_EMSG("Unknown Composer Mode");
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_make_default_body_size(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       int scroll_height = COMPOSER_FRAME_BODY_LANDSCAPE_HEIGHT_MIN;
+
+       cd->is_default_body_size = true;
+
+       msg_ui_composer_contract_attach_list(cd);
+
+       evas_object_size_hint_max_set(cd->body_scroll, 9999, scroll_height);
+       elm_scroller_content_min_limit(cd->body_scroll, EINA_FALSE, EINA_TRUE);
+       /* move scroll to top */
+       elm_scroller_region_show(cd->body_scroll, 0, 0, 0, 0);
+
+       evas_object_event_callback_add(cd->body_box, EVAS_CALLBACK_MOUSE_UP, msg_ui_composer_body_body_layout_clicked_cb, cd);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_entry_imf_resize_cb(void * data, Ecore_IMF_Context *ctx, int value)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+       D_MSG_RETM_IF(ctx == NULL, "Ecore_IMF_Context is Invalid");
+       int keypad_x = 0;
+       int keypad_y = 0;
+       int keypad_w = 0;
+       int keypad_h = 0;
+
+       ecore_imf_context_input_panel_geometry_get(ctx, &keypad_x, &keypad_y, &keypad_w, &keypad_h);
+       D_MSG("keypad x = %d, y = %d, w = %d, h = %d", keypad_x, keypad_y, keypad_w, keypad_h);
+       D_MSG("cd->make_default_body_size = %d", cd->make_default_body_size);
+
+       if (cd->make_default_body_size) {
+                if (!cd->is_keypad_show)
+                        cd->make_default_body_size = false;
+       } else {
+               if (keypad_w != 0 && keypad_h != 0)
+                       msg_ui_composer_change_body_scroll_size(cd, keypad_h);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_entry_imf_state_cb(void * data, Ecore_IMF_Context *ctx, int value)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+       D_MSG_RETM_IF(ctx == NULL, "Ecore_IMF_Context is Invalid");
+
+       if (value == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
+               int keypad_x = 0;
+               int keypad_y = 0;
+               int keypad_w = 0;
+               int keypad_h = 0;
+
+               D_MSG("Imf status SHOW");
+
+               cd->is_keypad_show = true;
+
+               ecore_imf_context_input_panel_geometry_get(ctx, &keypad_x, &keypad_y, &keypad_w, &keypad_h);
+               D_MSG("keypad x = %d, y = %d, w = %d, h = %d", keypad_x, keypad_y, keypad_w, keypad_h);
+
+               msg_ui_composer_change_body_scroll_size(cd, keypad_h);
+       } else if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
+               D_MSG("Imf status HIDE");
+
+               cd->is_keypad_show = false;
+
+               D_MSG("cd->make_default_body_size = %d", cd->make_default_body_size);
+
+               if (cd->make_default_body_size) {
+                       cd->make_default_body_size = false;
+                       msg_ui_composer_make_default_body_size(cd);
+               } else {
+                       msg_ui_composer_change_body_scroll_size(cd, 0);
+               }
+       } else {
+               D_EMSG("imf status INVALID");
+       }
+
+       D_LEAVE;
+}
+
+int msg_ui_composer_get_font_size(int type)
+{
+       D_ENTER;
+
+       int font_size = 0;
+       int converted_size = -1;
+
+       if (type == COMPOSER_TYPE_BODY) {
+               int index = 0;
+
+               if (msg_common_get_font_size(&index) == FALSE) {
+                       D_EMSG("msg_common_get_font_size() is failed !!");
+                       return -1;
+               } else {
+                       D_MSG("selected font_size index = %d", index);
+               }
+
+               font_size = msg_common_get_font_size_from_index(index);
+
+               if (font_size == -1) {
+                       D_EMSG("msg_common_get_font_size_from_index() is failed !!");
+                       return -1;
+               }
+
+               converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+       } else if (type == COMPOSER_TYPE_SUBJECT) {
+               int access_font_index = 0;
+
+               /* get accessibility font index */
+               if (vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &access_font_index) < 0) {
+                       D_EMSG("vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE) is failed !!");
+                       access_font_index = MSG_SYS_FONT_SIZE_INDEX_NORMAL;     /* 1 */
+               }
+
+               font_size = msg_common_get_font_size_from_index(access_font_index);
+               if (font_size == -1) {
+                       D_EMSG("msg_common_get_font_size_from_index() is failed !!");
+                       return -1;
+               }
+
+               converted_size = (MSGC_SUBJECT_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+       } else {
+               D_EMSG("Invalid type");
+       }
+
+       D_LEAVE;
+       return converted_size;
+}
+
+void msg_ui_composer_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, bool update_subject)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       int index = 0;
+       int font_size = 0;
+       int converted_size = cd->font_size;
+
+       if (msg_common_get_font_size(&index) == FALSE) {
+               D_EMSG("msg_common_get_font_size() is failed !!");
+               return;
+       } else {
+               D_MSG("selected font_size index = %d", index);
+       }
+
+       font_size = msg_common_get_font_size_from_index(index);
+
+       if (font_size == -1) {
+               D_EMSG("msg_common_get_font_size_from_index() is failed !!");
+               return;
+       }
+
+       converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+
+       /* apply font size */
+       char font_style_str[DEF_BUF_LEN_S + 1] = {0,};
+       snprintf(font_style_str, sizeof(font_style_str), "DEFAULT='font_size=%d'", converted_size);
+       D_MSG("font_style_str = (%s)", font_style_str);
+
+       msg_ui_composer_recipient_apply_font_size(cd, font_style_str);
+       msg_ui_composer_body_apply_font_size(cd, font_style_str);
+
+       if (update_subject) {
+               int access_font_index = 0;
+               /* get accessibility font index */
+               if (vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &access_font_index) < 0) {
+                       D_EMSG("vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE) is failed !!");
+                       access_font_index = MSG_SYS_FONT_SIZE_INDEX_NORMAL;     /* 1 */
+               }
+
+               font_size = msg_common_get_font_size_from_index(access_font_index);
+               if (font_size == -1) {
+                       D_EMSG("msg_common_get_font_size_from_index() is failed !!");
+                       return;
+               }
+
+               converted_size = (MSGC_SUBJECT_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+
+               /* apply font size */
+               memset(font_style_str, 0, sizeof(font_style_str));
+               snprintf(font_style_str, sizeof(font_style_str), "DEFAULT='font_size=%d'", converted_size);
+               D_MSG("subject font_style_str = (%s)", font_style_str);
+
+               msg_ui_composer_subject_apply_font_size(cd, font_style_str);
+       }
+
+       D_LEAVE;
+}
+
diff --git a/composer/src/ui-composer/msg-ui-composer-main.c b/composer/src/ui-composer/msg-ui-composer-main.c
new file mode 100755 (executable)
index 0000000..3c98b6a
--- /dev/null
@@ -0,0 +1,2078 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* includes*/
+#include <Ecore_X.h>
+#include <tapi_common.h>
+#include <TapiUtility.h>
+#include <utilX.h>
+
+#include "msg-ui-composer-main.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-predictsearch.h"
+#include "msg-ui-composer-subject.h"
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-pageduration.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-external.h"
+#include "msg-ui-composer-bubble.h"
+#include "msg-ui-composer-main.h"      /*for page duration, it should be removed if more option concept is changed*/
+
+#include "msg-ui-common-utility.h"
+
+#define COMPOSER_BUNDLE_ATTACH_TOKEN "\n"
+#define COMPOSER_BUNDLE_RECP_TOKEN ","
+
+/*==================================================================================================
+*                                                              FUNCTION IMPLEMENTATIONS
+*==================================================================================================*/
+static COMPOSER_EDIT_STATE_E __msg_ui_composer_edit_check(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_EDIT_NONE, "Composer Data == NULL");
+
+       bool isvalid_address = false;
+       bool iscontent_edited = false;
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               int recipient_count = msg_ui_composer_recipient_count_get(cd->recipient);
+               if (recipient_count > 0) {
+                       isvalid_address = true;
+               }
+
+               const char *entry_str = msg_ui_composer_recipient_entry_text_get(cd->recipient);
+               if (entry_str && strlen(entry_str)) {
+                       if (msg_ui_composer_recipient_vaild_check(entry_str) == EINA_TRUE)
+                               isvalid_address = true;
+               }
+       } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               isvalid_address = true;
+       }
+
+       /* valid address & there is body content */
+       if (msg_ui_composer_common_is_send_possible(cd) == true)
+               iscontent_edited = true;
+
+       if (isvalid_address && iscontent_edited)
+               return COMPOSER_EDIT_RECIPIENT_AND_BODY;
+       else if (isvalid_address)
+               return COMPOSER_EDIT_RECIPIENT;
+       else if (iscontent_edited)
+               return COMPOSER_EDIT_BODY;
+       else
+               return COMPOSER_EDIT_NONE;
+}
+
+static void __msgc_vconf_changed_cb(keynode_t *key, void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(key == NULL, "key is NULL");
+
+       int index = 0;
+       int font_size = 0;
+       int converted_size = 0;
+       char *key_name = NULL;
+
+       key_name = vconf_keynode_get_name(key);
+       if (!key_name) {
+               D_EMSG("key_name is NULL");
+               return;
+       }
+
+       if (!strcmp(key_name, VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE)) {
+               index = vconf_keynode_get_int(key);
+               font_size = msg_common_get_font_size_from_index(index);
+               converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+
+               cd->font_size = converted_size;
+
+               /* sync current font size as accessibility font index */
+               if (msg_common_set_font_size(index) == FALSE)
+                       D_EMSG("msg_common_set_font_size(index = %d) is failed !!", index);
+
+               /* sync msg accessibility font size with accessibility font index */
+               if (msg_common_set_access_font_size(index) == FALSE)
+                       D_EMSG("vconf_set_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE) is failed !!, [%d]", index);
+       } else if (!strcmp(key_name, VCONFKEY_MSG_APP_FONT_SIZE)) {
+               index = vconf_keynode_get_int(key);
+               font_size = msg_common_get_font_size_from_index(index);
+               converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+
+               cd->font_size = converted_size;
+       } else {
+               D_EMSG("key did not match.");
+       }
+
+       D_MSG("font size = %d", font_size);
+       D_MSG("converted font size = %d", converted_size);
+
+       D_LEAVE;
+}
+
+static void __msgc_init_font_size(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       int index = 0;
+       int access_font_index = 0;
+       int msg_access_font_index = 0;
+       int font_size = 0;
+       int converted_size = 0;
+
+       /* get msg accessibility font index */
+       if (msg_common_get_access_font_size(&msg_access_font_index) == FALSE) {
+               D_EMSG("msg_common_get_access_font_size is failed !!");
+               msg_access_font_index = MSG_APP_FONT_SIZE_INDEX_NORMAL; /* 1 */
+       }
+
+       /* get accessibility font index */
+       if (vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &access_font_index) < 0) {
+               D_EMSG("vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE) is failed !!");
+               access_font_index = MSG_SYS_FONT_SIZE_INDEX_NORMAL;     /* 1 */
+       }
+
+       if (msg_common_get_font_size(&index) == FALSE) {
+               D_EMSG("msg_common_get_font_size() is failed");
+               cd->font_size = MSGC_BODY_FONT_SIZE;
+               return;
+       } else {
+               D_MSG("selected font_size index = %d", index);
+       }
+
+       D_MSG("VCONFKEY_MSG_APP_ACCESS_FONT_SIZE = %d", msg_access_font_index);
+       D_MSG("VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE = %d", access_font_index);
+
+       if (msg_access_font_index != access_font_index) {
+               font_size = msg_common_get_font_size_from_index(access_font_index);
+
+               /* sync current font size as accessibility font index */
+               if (msg_common_set_font_size(access_font_index) == FALSE)
+                       D_EMSG("msg_common_set_font_size(index = %d) is failed !!", access_font_index);
+
+               /* sync msg accessibility font size with accessibility font index */
+               if (msg_common_set_access_font_size(access_font_index) == FALSE)
+                       D_EMSG("vconf_set_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE) is failed !!, [%d]", access_font_index);
+       } else {
+               font_size = msg_common_get_font_size_from_index(index);
+       }
+
+       converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+
+       cd->font_size = converted_size;
+       D_MSG("font size = %d, converted_size = %d", font_size, converted_size);
+
+       D_LEAVE;
+}
+
+static void __msgc_parse_recipient_list(MSG_COMPOSER_VIEW_DATA_S *cd, const char *address)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(address == NULL, "address is NULL");
+
+       bool bMaxCount = false;
+       bool bInvalidNum = false;
+       bool bDup = false;
+
+       Eina_List *recipient_list = make_tokenize_list(address, ",");
+
+       if (recipient_list) {
+               Eina_List *l = NULL;
+               char *recipient;
+               EINA_LIST_FOREACH(recipient_list, l, recipient) {
+                       if (recipient) {
+                               D_MSG("TO = %s", recipient);
+                               if (msg_ui_composer_recipient_count_get(cd->recipient) >= COMPOSER_RECIPIENT_COUNT_MAX) {
+                                       bMaxCount = true;
+                                       g_free(recipient);
+                                       break;
+                               }
+
+                               if (msg_ui_composer_recipient_duplicate_check(cd->recipient, recipient) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+                                       bDup = true;
+                                       g_free(recipient);
+                                       continue;
+                               }
+
+                               if (msg_ui_composer_recipient_vaild_check(recipient) == EINA_FALSE) {
+                                       bInvalidNum = true;
+                               } else {
+                                       msg_ui_composer_recipient_append(cd->recipient, recipient, 0);
+                               }
+
+                               g_free(recipient);
+                       }
+               }
+
+               D_MSG("bMaxCount = %d, bInvalidNum = %d, bDup = %d", bMaxCount, bInvalidNum, bDup);
+               if (bMaxCount) {
+                       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_COUNT_MAX);
+               } else if (bInvalidNum) {
+                       msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK);
+               } else if (bDup) {
+                       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_DUP_RECP);
+               }
+       }
+
+       D_LEAVE;
+}
+
+static void __msgc_ui_parse_mmsto_uri(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle, const char *uri)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(svc_handle == NULL, "svc_handle is NULL");
+       D_MSG_RETM_IF(uri == NULL, "uri is NULL");
+
+       char *content = NULL;
+       char *recipient = NULL;
+       char *body_text = NULL;
+       char *subject = NULL;
+       char *attachment = NULL;
+       char *cc = NULL;
+       char *scheme = g_strdup(uri);
+
+       if (scheme) {
+               strtok_r(scheme, ":", &content);
+
+               if (content) {
+                       if (g_ascii_isdigit(content[0]) || (content[0] == '+' && g_ascii_isdigit(content[1]))) {
+                               recipient = strtok_r(NULL, "?", &content);
+                               cc = strtok_r(NULL, "&", &content);
+                               if (cc)
+                                       strtok_r(NULL, "=", &cc);
+
+                               D_MSG("RECIPIENT = [%s]", recipient);
+                               if (recipient)
+                                       __msgc_parse_recipient_list(cd, (const char *)recipient);
+                       }
+               }
+               g_free(scheme);
+       } else {
+               if ((service_get_extra_data(svc_handle, SERVICE_DATA_TO, &recipient) == SERVICE_ERROR_NONE) && recipient) {
+                       __msgc_parse_recipient_list(cd, (const char *)recipient);
+               }
+       }
+
+       if ((service_get_extra_data(svc_handle, SERVICE_DATA_TEXT, &body_text) == SERVICE_ERROR_NONE) && body_text)
+               msg_ui_composer_body_set_loaded_text(cd, (const char *)body_text, 0);
+
+       if ((service_get_extra_data(svc_handle, SERVICE_DATA_SUBJECT, &subject) == SERVICE_ERROR_NONE) && subject)
+               msg_ui_composer_subject_set_loaded_data(cd, (const char *)subject);
+
+       if ((service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_ATTACHFILE, &attachment) == SERVICE_ERROR_NONE) && attachment) {
+               cd->attachlist = make_tokenize_list((const char *)attachment, COMPOSER_BUNDLE_ATTACH_TOKEN);
+               if (cd->attachlist)
+                       msg_ui_composer_body_items_add(cd);
+       }
+
+       D_LEAVE;
+}
+
+static void __msgc_ui_parse_file_uri(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle, const char *uri)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(uri == NULL, "uri is NULL");
+
+       char *content = NULL;
+       char attachment[DEF_IMG_PATH_LEN + 1] = {0, };
+       int i = 0;
+       int len = 0;
+       char *scheme = g_strdup(uri);
+
+       if (scheme) {
+               strtok_r(scheme, ":", &content);
+               D_MSG("content = [%s]", content);
+
+               if (content) {
+                       len = strlen(content) - 2;
+                       if (len <= 0) {
+                               D_EMSG("len is less than 0 !!");
+                               g_free(scheme);
+                               return;
+                       }
+
+                       /* Remove '//' from content string */
+                       for (i = 0; i < len; i++) {
+                               attachment[i] = content[i+2];
+                       }
+
+                       if (attachment[0] != '\0') {
+                               D_MSG("APPSVC ATTACHMENT = [%s]", attachment);
+                               cd->attachlist = make_tokenize_list((const char *)attachment, COMPOSER_BUNDLE_ATTACH_TOKEN);
+                               if (cd->attachlist)
+                                       msg_ui_composer_body_items_add(cd);
+                       }
+               }
+               g_free(scheme);
+       } else {
+               D_EMSG("scheme is NULL!!");
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_parse_sms_uri(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle, const char *uri)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(svc_handle == NULL, "svc_handle is NULL");
+       D_MSG_RETM_IF(uri == NULL, "uri is NULL");
+
+       char *content = NULL;
+       char *recipient = NULL;
+       char *body_text = NULL;
+       char *scheme = g_strdup(uri);
+
+       if (scheme) {
+               strtok_r(scheme, ":", &content);
+
+               if (content) {
+                       if (g_ascii_isdigit(content[0]) || (content[0] == '+' && g_ascii_isdigit(content[1]))) {
+                               recipient = strtok_r(NULL, "?", &content);
+                               D_MSG("RECIPIENT = [%s]", recipient);
+
+                               if (recipient)
+                                       __msgc_parse_recipient_list(cd, (const char *)recipient);
+                       }
+               }
+               g_free(scheme);
+       } else {
+               if ((service_get_extra_data(svc_handle, SERVICE_DATA_TO, &recipient) == SERVICE_ERROR_NONE) && recipient)
+                       __msgc_parse_recipient_list(cd, (const char *)recipient);
+       }
+
+       if ((service_get_extra_data(svc_handle, SERVICE_DATA_TEXT, &body_text) == SERVICE_ERROR_NONE) && body_text)
+               msg_ui_composer_body_set_loaded_text(cd, (const char *)body_text, 0);
+
+       D_LEAVE;
+}
+
+static void __msgc_get_service_app_svc_op(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle, char *operation)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(svc_handle == NULL, "svc_handle is NULL");
+       D_MSG_RETM_IF(operation == NULL, "operation is NULL");
+
+       char *uri = NULL;
+       char *recipient = NULL;
+       char *body_text = NULL;
+       char *attachment = NULL;
+       char *subject = NULL;
+
+       if (g_strcmp0(operation, SERVICE_OPERATION_SEND) == 0) {
+               if (service_get_uri(svc_handle, &uri) == SERVICE_ERROR_NONE)
+                       D_MSG("URI = [%s]", uri);
+
+               if (uri) {
+                       if (g_str_has_prefix(uri, MSG_BUNDLE_VALUE_MMSTO_URI)) { /* MMS URI : mmsto */
+                                __msgc_ui_parse_mmsto_uri(cd, svc_handle, (const char *)uri);
+                       } else if (g_str_has_prefix(uri, MSG_BUNDLE_VALUE_FILE_URI)) { /* URI : file */
+                                __msgc_ui_parse_file_uri(cd, svc_handle, (const char *)uri);
+                       } else if (g_str_has_prefix(uri, "/")) {
+                               cd->attachlist = make_tokenize_list((const char *)uri, COMPOSER_BUNDLE_ATTACH_TOKEN);
+                               if (cd->attachlist)
+                                       msg_ui_composer_body_items_add(cd);
+                       } else {
+                               D_EMSG("Not supported URI type");
+                               return;
+                       }
+               } else {
+                       if ((service_get_extra_data(svc_handle, SERVICE_DATA_TO, &recipient) == SERVICE_ERROR_NONE) && recipient)
+                               __msgc_parse_recipient_list(cd, (const char *)recipient);
+
+                       if ((service_get_extra_data(svc_handle, SERVICE_DATA_TEXT, &body_text) == SERVICE_ERROR_NONE) && body_text)
+                               msg_ui_composer_body_set_loaded_text(cd, (const char *)body_text, 0);
+
+                       if ((service_get_extra_data(svc_handle, SERVICE_DATA_SUBJECT, &subject) == SERVICE_ERROR_NONE) && subject)
+                               msg_ui_composer_subject_set_loaded_data(cd, (const char *)subject);
+
+                       if ((service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_ATTACHFILE, &attachment) == SERVICE_ERROR_NONE) && attachment) {
+                               cd->attachlist = make_tokenize_list((const char *)attachment, COMPOSER_BUNDLE_ATTACH_TOKEN);
+                               if (cd->attachlist)
+                                       msg_ui_composer_body_items_add(cd);
+                       }
+               }
+       } else if (g_strcmp0(operation, SERVICE_OPERATION_SEND_TEXT) == 0) {
+               if (service_get_uri(svc_handle, &uri) == SERVICE_ERROR_NONE)
+                       D_MSG("URI = [%s]", uri);
+
+               if (uri) {
+                       if (g_str_has_prefix(uri, MSG_BUNDLE_VALUE_SMS_URI)) {  /* SMS URI : sms */
+                               __msg_ui_parse_sms_uri(cd, svc_handle, (const char *)uri);
+                       } else {
+                               D_EMSG("Not supported mime type");
+                               return;
+                       }
+               } else {
+                       if ((service_get_extra_data(svc_handle, SERVICE_DATA_TO, &recipient) == SERVICE_ERROR_NONE) && recipient)
+                               __msgc_parse_recipient_list(cd, (const char *)recipient);
+
+                       if ((service_get_extra_data(svc_handle, SERVICE_DATA_TEXT, &body_text) == SERVICE_ERROR_NONE) && body_text)
+                               msg_ui_composer_body_set_loaded_text(cd, (const char *)body_text, 0);
+               }
+       } else {
+               D_EMSG("Invalid operation type !!");
+       }
+
+       D_LEAVE;
+}
+
+/* function definitions*/
+static void __msg_ui_composer_bundle_data_process(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(svc_handle == NULL, "Bundle Data is NULL");
+
+       char *bundle_txt = NULL;
+
+       if (cd->isAppControl) { /* composer launching from appcontrol */
+               char *operation = NULL;
+
+               service_get_operation(svc_handle, &operation);
+               __msgc_get_service_app_svc_op(cd, svc_handle, operation);
+       } else {
+               if (cd->composer_mode == MSG_COMPOSER_MODE_EDIT || cd->composer_mode == MSG_COMPOSER_MODE_FORWARD) {
+                       if ((service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, &bundle_txt) == SERVICE_ERROR_NONE) && bundle_txt) {
+                               bool set_recipient = false;
+                               int msg_id = atoi(bundle_txt);
+
+                               if (cd->composer_mode == MSG_COMPOSER_MODE_EDIT) {
+                                       cd->msg_id = msg_id;
+                                       set_recipient = true;
+                               }
+
+                               msg_ui_composer_message_init();
+                               msg_ui_composer_message_load_message(cd->msg_handle, msg_id);
+                               if (msg_ui_composer_message_set_loaded_data(cd, set_recipient) != COMPOSER_RETURN_CREATION_WARINING_MODE_FAIL)
+                                       msg_ui_composer_message_destroy();
+
+                       } else {
+                               D_EMSG("there is no msgid");
+                       }
+               } else {
+                       if ((service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, &bundle_txt) == SERVICE_ERROR_NONE) && bundle_txt) {
+                               __msgc_parse_recipient_list(cd, bundle_txt);
+                       } else {
+                               if ((service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_NUMBER_INDEX, &bundle_txt)== SERVICE_ERROR_NONE) && bundle_txt) {
+                                       char *recipient = NULL;
+                                       char *index  = NULL;
+                                       char *save_p = NULL;
+                                       int idx = 0;
+
+                                       char *copy_string = MSG_STRDUP(bundle_txt);
+                                       if (copy_string) {
+
+                                               recipient = strtok_r(copy_string, "/", &save_p);
+                                               if (recipient) {
+                                                       index = strtok_r(NULL, "/", &save_p);
+                                                       if (index) {
+                                                               D_MSG("NUMBER_INDEX = %s[%s]", recipient, index);
+                                                               idx = atoi(index);
+                                                       } else {
+                                                               idx = 0;
+                                                       }
+
+                                                       if (msg_ui_composer_recipient_count_get(cd->recipient) >= COMPOSER_RECIPIENT_COUNT_MAX) {
+                                                               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_COUNT_MAX);
+                                                       } else {
+                                                               if (msg_ui_composer_recipient_duplicate_check(cd->recipient, recipient) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+                                                                       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_DUP_RECP);
+                                                               } else {
+                                                                       if (msg_ui_composer_recipient_vaild_check(recipient) == EINA_FALSE) {
+                                                                               msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK);
+                                                                       } else {
+                                                                               msg_ui_composer_recipient_append(cd->recipient, recipient, idx);
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+
+                                               g_free(copy_string);
+                                       }
+                               }
+                       }
+
+                       if (SERVICE_ERROR_NONE == service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_SUBJECT, &bundle_txt))
+                               msg_ui_composer_subject_set_loaded_data(cd, bundle_txt);
+
+                       if (SERVICE_ERROR_NONE == service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_BODY, &bundle_txt))
+                               msg_ui_composer_body_set_loaded_text(cd, bundle_txt, 0);
+
+                       if (SERVICE_ERROR_NONE == service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_ATTACHFILE, &bundle_txt)) {
+                               cd->attachlist = make_tokenize_list(bundle_txt, COMPOSER_BUNDLE_ATTACH_TOKEN);
+                               if (cd->attachlist)
+                                       msg_ui_composer_body_items_add(cd);
+                       }
+               }
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_sent_status_cb(msg_handle_t Handle, msg_struct_t pStatus, void *pUserParam)
+{
+       D_ENTER;
+       D_LEAVE;
+
+       return;
+}
+
+static void __end_popup_ok_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       ug_destroy_me(cd->ug);
+}
+
+static void __end_popup_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       cd->isclosed = false;
+
+       msg_ui_composer_last_focus_load(cd);
+       D_LEAVE;
+}
+
+static void  __msg_ui_composer_end_popup(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+
+       Evas_Object *popup = msg_ui_composer_status_popup_show(cd->main_window, cd, MSGC_STR_POP_DISCARD_Q, 0);
+       Evas_Object *btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, MSGC_STR_BUTTON_OK);
+       elm_object_part_content_set(popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", __end_popup_ok_btn_clicked_cb, cd);
+       Evas_Object *btn2 = elm_button_add(popup);
+       elm_object_style_set(btn2, "popup_button/default");
+       elm_object_text_set(btn2, MSGC_STR_BUTTON_CANCEL);
+       elm_object_part_content_set(popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", __end_popup_cancel_btn_clicked_cb, cd);
+       elm_object_focus_allow_set(popup, EINA_TRUE);
+       elm_object_focus_set(popup, EINA_TRUE);
+       evas_object_show(popup);
+
+       cd->popup_end = popup;
+
+       D_LEAVE;
+       return;
+}
+
+static void __naviframe_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "Data == NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       COMPOSER_EDIT_STATE_E edit_state = __msg_ui_composer_edit_check(cd);
+       D_MSG("edit_state = %d", edit_state);
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               if (cd->isclosed) {
+                       D_EMSG("back btn is already called");
+                       return;
+               }
+
+               /* isclosed is set to prevent showing invalid popup*/
+               cd->isclosed = true;
+
+               if (edit_state == COMPOSER_EDIT_RECIPIENT || edit_state == COMPOSER_EDIT_BODY) {
+                       __msg_ui_composer_end_popup(cd);
+                       return;
+               }
+       } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               if (edit_state == COMPOSER_EDIT_RECIPIENT) {
+
+                       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+
+                       if (bubble_data->title_menu_opened)
+                               msg_ui_bubble_close_title_menu_genlist(bubble_data);
+
+                       if (bubble_data->bubble_count == 0) {
+                               int err = MSG_SUCCESS;
+
+                               if (bubble_data->isDraft == true)
+                                       err = msg_delete_thread_message_list(bubble_data->msgHandle, bubble_data->threadId, false);
+
+                               if (err == MSG_SUCCESS) {
+                                       service_h svc_handle;
+                                       char buf[DEF_BUF_LEN_S] = {0,};
+
+                                       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                                               D_EMSG("service_create() is failed !!");
+                                       } else {
+                                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RESULT, MSG_BUNDLE_VALUE_DEL_ALL);
+                                               snprintf(buf, sizeof(buf), "%d", bubble_data->threadId);
+                                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, buf);
+                                               ug_send_result(cd->ug, svc_handle);
+
+                                               service_destroy(svc_handle);
+                                       }
+                               } else {
+                                       D_MSG("msg_delete_thread_message_list failed");
+                               }
+                       }
+               }
+       }
+
+       ug_destroy_me(cd->ug);
+
+       D_LEAVE;
+}
+
+static void __preview_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(cd->navi_it == NULL, "Naviitem is NULL");
+
+       msg_struct_t msgInfo = NULL;
+       msg_ui_composer_message_init();
+       msg_ui_composer_read_preview_message(cd);
+
+       /* make preview message data */
+       msgInfo = msg_ui_composer_message_make_preview(cd->msg_handle);
+
+       if (msgInfo)
+               msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_MSGVIEWER, msgInfo);
+
+       msg_ui_composer_message_destroy();
+
+       if (cd->ctx_popup) {
+               evas_object_del(cd->ctx_popup);
+               cd->ctx_popup = NULL;
+       }
+
+       D_LEAVE;
+}
+
+static void __pageduration_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(cd->navi_it == NULL, "Naviitem is NULL");
+
+       msg_ui_composer_pageduration_popup_create(cd);
+
+       if (cd->ctx_popup) {
+               evas_object_del(cd->ctx_popup);
+               cd->ctx_popup = NULL;
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+
+       if (cd->ctx_popup) {
+               evas_object_del(cd->ctx_popup);
+               cd->ctx_popup = NULL;
+       }
+
+       MSG_UI_LEAVE();
+}
+
+static void msg_composer_naviframe_more_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+       Evas_Object *ctx_popup = NULL;
+
+       if (cd->popup_end) {
+               evas_object_del(cd->popup_end);
+               cd->popup_end = NULL;
+       }
+
+       if (bubble_data) {
+               if (bubble_data->popup) {
+                       evas_object_del(bubble_data->popup);
+                       bubble_data->popup = NULL;
+               }
+
+               if (bubble_data->title_menu_opened)
+                       msg_ui_bubble_close_title_menu_genlist(bubble_data);
+       }
+
+       /* fix ctx_popup flashing issue because of focus */
+       ctx_popup = elm_ctxpopup_add(cd->main_window);
+       elm_ctxpopup_direction_priority_set(ctx_popup, ELM_CTXPOPUP_DIRECTION_DOWN,
+                                                 ELM_CTXPOPUP_DIRECTION_UNKNOWN,
+                                                 ELM_CTXPOPUP_DIRECTION_UNKNOWN,
+                                                 ELM_CTXPOPUP_DIRECTION_UNKNOWN);
+
+       evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_composer_ctxpopup_dismissed_cb, cd);
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER)
+               elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_SK_DELETE"), NULL, msg_ui_bubble_more_delete_clicked_cb, cd);
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
+               /* preview */
+               if (msg_ui_composer_body_has_media(cd))
+                       elm_ctxpopup_item_append(ctx_popup, MSGC_STR_PREVIEW, NULL, __preview_btn_clicked_cb, cd);
+
+               /* page duration */
+               char buf[DEF_BUF_LEN_S + 1] = {0,};
+               char duration[DEF_BUF_LEN_D + 1] = {0,};
+               const char *str = _MSGSTR("IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB");
+               int pageduration = msg_ui_composer_pageduration_value_get(cd);
+
+               snprintf(duration, sizeof(duration)-1, "%d", pageduration);
+               snprintf(buf, sizeof(buf)-1, str, duration);
+               elm_ctxpopup_item_append(ctx_popup, buf, NULL, __pageduration_btn_clicked_cb, cd);
+       }
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER)
+               elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSG_HEADER_BACKUP"), NULL, msg_ui_bubble_backup_clicked_cb, cd);
+
+       Evas_Coord x = 0;
+       Evas_Coord y = 0;
+       Evas_Coord w = 0;
+       Evas_Coord h = 0;
+       evas_object_geometry_get(cd->more_btn, &x, &y, &w, &h);
+       evas_object_move(ctx_popup, (x+(w/2)) , y+h);
+       evas_object_show(ctx_popup);
+
+       cd->ctx_popup = ctx_popup;
+
+       MSG_UI_LEAVE();
+}
+
+static void __naviframe_compose_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (cd->bubble_data->popup) {
+               evas_object_del(cd->bubble_data->popup);
+               cd->bubble_data->popup = NULL;
+       }
+
+       service_h svc_handle;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_EDIT);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
+               msg_ui_composer_launch_composer_create(cd, svc_handle);
+               service_destroy(svc_handle);
+       }
+       D_LEAVE;
+}
+
+static Evas_Object *__naviframe_back_btn_create(Evas_Object *parent, void *data, bool title)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent == NULL");
+       D_MSG_RETVM_IF(data == NULL, NULL, "data == NULL");
+       D_MSG("Title type = %d", title);
+
+       Evas_Object *btn = NULL;
+       btn = elm_button_add(parent);
+       if (btn == NULL)
+               return NULL;
+
+       if (title == true) {
+               elm_object_style_set(btn, "naviframe/back_btn/default");
+       } else {
+               elm_object_style_set(btn, "naviframe/back_btn/default");
+       }
+       evas_object_smart_callback_add(btn, "clicked", __naviframe_back_btn_clicked_cb, data);
+       evas_object_show(btn);
+       D_LEAVE;
+       return btn;
+}
+
+static Evas_Object *__naviframe_more_btn_create(Evas_Object *parent, void *data)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent == NULL");
+       D_MSG_RETVM_IF(data == NULL, NULL, "data == NULL");
+
+       Evas_Object *btn = elm_button_add(parent);
+       if (!btn)
+               return NULL;
+
+       elm_object_style_set(btn, "naviframe/more/default");
+
+       evas_object_smart_callback_add(btn, "clicked", msg_composer_naviframe_more_btn_clicked_cb, data);
+       evas_object_show(btn);
+       D_LEAVE;
+       return btn;
+}
+
+static Evas_Object *__naviframe_compose_btn_create(Evas_Object *parent, void *data)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent == NULL");
+       D_MSG_RETVM_IF(data == NULL, NULL, "data == NULL");
+
+       Evas_Object *btn = elm_button_add(parent);
+       if (!btn)
+               return NULL;
+       elm_object_style_set(btn, "naviframe/title_icon");
+
+       Evas_Object *icon = elm_icon_add(btn);
+       elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_COMPOSE);
+       elm_image_resizable_set(icon, 1, 1);
+       evas_object_image_smooth_scale_set(icon, 0);
+       elm_object_content_set(btn, icon);
+       evas_object_smart_callback_add(btn, "clicked", __naviframe_compose_btn_clicked_cb, data);
+       D_LEAVE;
+
+       return btn;
+}
+
+void msg_ui_composer_reset_request(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle)
+{
+       D_ENTER;
+
+       if (!cd)
+               return;
+
+       COMPOSER_EDIT_STATE_E edit_state = __msg_ui_composer_edit_check(cd);
+       D_MSG("edit_state = %d", edit_state);
+       D_MSG("composer mode = %d, msg_ug_mode = %d", cd->composer_mode, cd->msg_ug_mode);
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               if (edit_state == COMPOSER_EDIT_RECIPIENT_AND_BODY) {
+                       /* auto saving */
+                       msg_ui_composer_message_init();
+
+                       if (msg_ui_composer_get_message_data(cd) == COMPOSER_RETURN_SUCCESS) {
+                               /* delete draft message */
+                               msg_thread_id_t tid = 0;
+
+                               if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+                                       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+                                       tid = bubble_data->threadId;
+                               } else {
+                                       GSList *address_list = msg_ui_composer_message_get_address();
+                                       msg_ui_composer_get_thread_id_by_address(cd->msg_handle, address_list, &tid);
+                               }
+
+                               D_MSG("tid = %d", tid);
+                               if (tid > 0)
+                                       msg_ui_composer_delete_draft_message(cd->msg_handle, tid);
+
+                               D_MSG("save draft message");
+                               msg_ui_composer_save_message(cd->msg_handle, 0);
+                       }
+
+                       msg_ui_composer_message_destroy();
+               }
+       } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               if (edit_state == COMPOSER_EDIT_RECIPIENT) {
+                       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+
+                       if (bubble_data->title_menu_opened)
+                               msg_ui_bubble_close_title_menu_genlist(bubble_data);
+
+                       if (bubble_data->bubble_count == 0) {
+                               int err = MSG_SUCCESS;
+
+                               if (bubble_data->isDraft == true)
+                                       err = msg_delete_thread_message_list(bubble_data->msgHandle, bubble_data->threadId, false);
+
+                               if (err == MSG_SUCCESS) {
+                                       service_h svc_handle;
+                                       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                                               D_EMSG("service_create() is failed !!");
+                                       } else {
+                                               char buf[DEF_BUF_LEN_S] = {0,};
+                                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RESULT, MSG_BUNDLE_VALUE_DEL_ALL);
+                                               snprintf(buf, sizeof(buf), "%d", bubble_data->threadId);
+                                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, buf);
+
+                                               ug_send_result(cd->ug, svc_handle);
+
+                                               service_destroy(svc_handle);
+                                       }
+                               } else {
+                                       D_MSG("msg_delete_thread_message_list failed");
+                               }
+                       } else {
+                               /* delete draft message */
+                               msg_struct_list_s msg_list = {0,};
+
+                               if (msg_get_message_list(cd->msg_handle, MSG_DRAFT_ID, bubble_data->threadId, 0, 0, &msg_list) == COMPOSER_RETURN_SUCCESS) {
+                                       int i = 0;
+                                       int msgid = 0;
+
+                                       for (i = 0; i < msg_list.nCount; i++) {
+                                               msg_get_int_value(msg_list.msg_struct_info[i], MSG_MESSAGE_ID_INT, &msgid);
+                                               D_MSG("draft msg_id is %d", msgid);
+                                               if (msg_delete_message(cd->msg_handle, msgid) != COMPOSER_RETURN_SUCCESS)
+                                                       D_EMSG("msg_ui_comp_core_delete_message is failed = %d", msgid);
+                                       }
+                               }
+
+                               msg_release_list_struct(&msg_list);
+                       }
+               } else if (edit_state == COMPOSER_EDIT_RECIPIENT_AND_BODY) {
+                       /* auto saving */
+                       msg_ui_composer_message_init();
+
+                       if (msg_ui_composer_get_message_data(cd) == COMPOSER_RETURN_SUCCESS) {
+                               /* delete draft message */
+                               msg_thread_id_t tid = 0;
+
+                               if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+                                       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+                                       tid = bubble_data->threadId;
+                               } else {
+                                       GSList *address_list = msg_ui_composer_message_get_address();
+                                       msg_ui_composer_get_thread_id_by_address(cd->msg_handle, address_list, &tid);
+                               }
+
+                               D_MSG("tid = %d", tid);
+                               if (tid > 0)
+                                       msg_ui_composer_delete_draft_message(cd->msg_handle, tid);
+
+                               D_MSG("save draft message");
+                               msg_ui_composer_save_message(cd->msg_handle, 0);
+                       }
+
+                       msg_ui_composer_message_destroy();
+               }
+
+               /* clear recipient_list of bubble composer */
+               msg_ui_composer_recipient_clear_recipient_list(cd);
+       }
+
+       /*process reset*/
+       msg_ui_composer_reset(cd, svc_handle);
+
+       D_LEAVE;
+}
+
+/*
+ *     1. clear all composer editing obj
+ *     2. make composer using bundle val
+*/
+COMPOSER_RETURN_TYPE_E msg_ui_composer_reset(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle)
+{
+       D_ENTER;
+       if (!cd)
+               return COMPOSER_RETURN_FAIL;
+
+       if (cd->working_path) {
+               ecore_file_recursive_rm(cd->working_path);
+               g_free(cd->working_path);
+       }
+
+       cd->working_path = msg_composer_create_working_dir();
+
+       if (cd->working_path == NULL) {
+               D_EMSG("Fail of make working dir!!!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (svc_handle) {
+               msg_ui_composer_clear(cd);
+
+               char *thread_id = NULL;
+               char *msg_id = NULL;
+               char *composer_mode = NULL;
+               char *from = NULL;
+
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, &thread_id);
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, &msg_id);
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, &composer_mode);
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, &from);
+
+               if (composer_mode) {
+                       if (g_strcmp0(composer_mode, MSG_BUNDLE_VALUE_EDIT) == 0)
+                               cd->composer_mode = MSG_COMPOSER_MODE_EDIT;
+                       else if (g_strcmp0(composer_mode, MSG_BUNDLE_VALUE_FORWARD) == 0)
+                               cd->composer_mode = MSG_COMPOSER_MODE_FORWARD;
+                       else
+                               cd->composer_mode = MSG_COMPOSER_MODE_NORMAL;
+               } else {
+                       cd->composer_mode = MSG_COMPOSER_MODE_NORMAL;
+               }
+
+               if (from && g_strcmp0(from, MSG_BUNDLE_VALUE_INTERNAL) == 0)
+                       cd->isMsgInternal = true;
+               else
+                       cd->isMsgInternal = false;
+
+               /*Change to Bubble view*/
+               if ((thread_id || msg_id) && cd->composer_mode == MSG_COMPOSER_MODE_NORMAL) {
+                       D_MSG("bubble view composer mode = %d, msg_ug_mode = %d", cd->composer_mode, cd->msg_ug_mode);
+
+                       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER) {
+                               D_MSG("change bubble view");
+                               msg_ui_composer_change_bubble_view(cd);
+                               msg_ui_bubble_parse_bubble_data(cd->bubble_data, svc_handle);
+                               msg_ui_bubble_start_view(cd->bubble_data);
+                               msg_ui_composer_navi_title_set((void *)cd);
+
+                               /* set recipient list for bubble composer */
+                               msg_ui_composer_recipient_set_recipient_list(cd, cd->bubble_data->threadId);
+                       } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+                               D_MSG("reload bubble view");
+                               msg_ui_bubble_parse_bubble_data(cd->bubble_data, svc_handle);
+                               msg_ui_bubble_list_load(cd->bubble_data, true);
+                               msg_ui_composer_navi_title_set((void *)cd);
+
+                               /* set recipient list for bubble composer */
+                               msg_ui_composer_recipient_set_recipient_list(cd, cd->bubble_data->threadId);
+                       } else {
+                               D_EMSG("Invalid type");
+                       }
+
+                       cd->msg_ug_mode = MSG_UG_MODE_BUBBLE_COMPOSER;
+               } else {
+                       D_MSG("normal composer composer mode = %d, msg_ug_mode = %d", cd->composer_mode, cd->msg_ug_mode);
+
+                       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+                               D_MSG("change composer view");
+                               if (cd->bubble_data) {
+                                       cd->bubble_data->ug_state = BUBBLE_UG_DESTROY;
+                                       msg_ui_bubble_deinit_bubble_data(cd->bubble_data);
+                                       cd->bubble_data = NULL;
+                               }
+
+                               msg_ui_composer_change_composer_view(cd);
+                       }
+
+                       if (cd->isMsgInternal == true)
+                               cd->msg_ug_mode = MSG_UG_MODE_FULL_COMPOSER;
+                       else
+                               cd->msg_ug_mode = MSG_UG_MODE_ONLY_COMPOSER;
+
+                       __msg_ui_composer_bundle_data_process(cd, svc_handle);
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_start(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer Data is NULL");
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+       cd->state = COMPOSER_STATE_TYPE_RUNNING;
+
+       /* bundle data parsing */
+       if (svc_handle) {
+               if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+                       cd->isLoad = true;
+                       __msg_ui_composer_bundle_data_process(cd, svc_handle);
+
+                       if (cd->attachlist == NULL)
+                               cd->isLoad = false;
+
+               } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+                       D_MSG("START BUBBLE COMPOSER");
+                       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)cd->bubble_data;
+                       msg_ui_bubble_parse_bubble_data(bubble_data, svc_handle);
+                       msg_ui_bubble_start_view(bubble_data);
+                       msg_ui_composer_navi_title_set((void *)cd);
+
+                       /* set recipient list for bubble composer */
+                       msg_ui_composer_recipient_set_recipient_list(cd, cd->bubble_data->threadId);
+               }
+       }
+
+       /* set first focus*/
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               if (!msg_ui_composer_popup_exist(cd)) {
+
+                       int recipient_count = msg_ui_composer_recipient_count_get(cd->recipient);
+
+                       if (recipient_count > 0) {
+                               msg_ui_composer_body_focus_set(cd, 0);
+                               msg_ui_composer_recipient_expanded_set(cd->recipient, EINA_FALSE);
+                       } else {
+                               msg_ui_composer_recipient_focus_set(cd->recipient);
+                       }
+               }
+       }
+
+       D_LEAVE;
+       return ret;
+}
+
+static void __msg_composer_auto_save_and_delete_msg(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       /* save and delete msg */
+       if (!cd->disable_auto_save_mode) {
+               COMPOSER_EDIT_STATE_E edit_state = __msg_ui_composer_edit_check(cd);
+               if (edit_state == COMPOSER_EDIT_RECIPIENT_AND_BODY) {
+
+                       /* auto save composer data */
+                       msg_ui_composer_message_init();
+                       if (msg_ui_composer_get_message_data(cd) == COMPOSER_RETURN_SUCCESS) {
+                               /* delete draft message */
+                               msg_thread_id_t tid = 0;
+
+                               if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+                                       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+                                       tid = bubble_data->threadId;
+                               } else {
+                                       GSList *address_list = msg_ui_composer_message_get_address();
+                                       msg_ui_composer_get_thread_id_by_address(cd->msg_handle, address_list, &tid);
+                               }
+
+                               D_MSG("tid = %d", tid);
+                               if (tid > 0)
+                                       msg_ui_composer_delete_draft_message(cd->msg_handle, tid);
+
+                               D_MSG("save draft message");
+                               msg_ui_composer_save_message(cd->msg_handle, 0);
+                               /* show saved ticker popup */
+                               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_AUTO_SAVED);
+                       }
+
+                       msg_ui_composer_message_destroy();
+               } else if (edit_state == COMPOSER_EDIT_RECIPIENT) {
+                       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+                               /* delete draft message */
+                               MSG_BUBBLE_DATA *bubble_data = cd->bubble_data;
+
+                               if (bubble_data) {
+                                       msg_ui_composer_delete_draft_message(cd->msg_handle, bubble_data->threadId);
+                               }
+                       }
+               }
+       }
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_destroy(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+       if (!cd)
+               return COMPOSER_RETURN_FAIL;
+
+       D_PRINT("===== Composer UG Destroy Start =====");
+
+       __msg_composer_auto_save_and_delete_msg(cd);
+
+       /* discoonect volume key handler */
+       msg_ui_composer_disconnect_handler(cd);
+
+       contacts_disconnect2();
+
+       D_PRINT("----- Unregister vconf callback -----");
+       if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, __msgc_vconf_changed_cb) < 0) {
+               D_EMSG("Fail to unregister vconf CB with [%s]", VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE);
+       }
+       if (vconf_ignore_key_changed(VCONFKEY_MSG_APP_FONT_SIZE, __msgc_vconf_changed_cb) < 0) {
+               D_EMSG("Fail to unregister vconf CB with [%s]", VCONFKEY_MSG_APP_FONT_SIZE);
+       }
+
+       if (cd->tapi_handle) {
+               if (tel_deinit(cd->tapi_handle) != TAPI_API_SUCCESS)
+                       D_EMSG("tel_deinit is failed");
+               cd->tapi_handle = NULL;
+       }
+
+       if(cd->job_thread_end) {
+               D_PRINT("----- Job Delete -----");
+               ecore_job_del(cd->job_thread_end);
+               cd->job_thread_end = NULL;
+       }
+
+       if(cd->attach_thread) {
+               D_PRINT("----- Thread Delete -----");
+               ecore_thread_cancel(cd->attach_thread);
+               cd->attach_thread = NULL;
+       }
+
+       if (cd->last_focus_idler) {
+               D_PRINT("----- idler Delete -----");
+               ecore_idler_del(cd->last_focus_idler);
+               cd->last_focus_idler = NULL;
+       }
+
+       if (cd->flight_mode_timer) {
+               ecore_timer_del(cd->flight_mode_timer);
+               cd->flight_mode_timer = NULL;
+       }
+
+       if (cd->recipient) {
+               D_PRINT("----- Recipient Delete -----");
+               msg_ui_composer_recipient_delete(cd->recipient);
+               cd->recipient = NULL;
+       }
+
+       D_PRINT("----- Recipient list Clear -----");
+       msg_ui_composer_recipient_clear_recipient_list(cd);
+
+       D_PRINT("----- Predict Search Delete -----");
+       msg_ui_composer_predictsearch_list_delete(cd);
+
+       D_PRINT("----- Body Delete -----");
+       msg_ui_composer_body_delete(cd);
+
+       D_PRINT("----- Close Msg Handle -----");
+       msg_close_msg_handle(&cd->msg_handle);
+
+       D_PRINT("----- Delete Popup  -----");
+       msg_ui_composer_popup_delete_all(cd);
+
+       if (cd->working_path) {
+               ecore_file_recursive_rm(cd->working_path);
+               g_free(cd->working_path);
+               cd->working_path = NULL;
+       }
+
+       if (cd->th) {
+               elm_theme_extension_del(cd->th, MSG_CUSTOM_WINSET_EDJ);
+               elm_theme_free(cd->th);
+               cd->th = NULL;
+       }
+
+       /* rollback indicator mode to previous mode */
+       elm_win_indicator_mode_set(cd->main_window, cd->indicator_mode);
+
+       D_PRINT("===== Composer UG Destroy End =====");
+
+       D_LEAVE;
+       return ret;
+}
+
+void msg_ui_composer_change_language(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "cd is NULL");
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               /* destroy popup */
+               msg_ui_composer_popup_delete_all(cd);
+
+               if (cd->ctx_popup) {
+                       evas_object_del(cd->ctx_popup);
+                       cd->ctx_popup = NULL;
+               }
+
+               /* title */
+               msg_ui_composer_navi_title_set(cd);
+
+               /* recipient */
+               if (cd->recipient) {
+                       Evas_Object *mbe = cd->recipient->mbe;
+
+                       /* set mbe label */
+                       char label_txt[TO_FIELD_LABEL_SIZE_MAX] = { 0, };
+                       gsize len = 0;
+
+                       len = snprintf(label_txt, (gsize)sizeof(label_txt), "%s:", MSGC_STR_TO);
+                       if (len == -1) {
+                               D_EMSG("len = %d", len);
+                       } else if (len > 0) {
+                               label_txt[len] = '\0';
+                               elm_object_text_set(mbe, label_txt);
+                       } else {
+                               D_EMSG("len = %d", len);
+                       }
+
+                       /* set guide text */
+                       elm_object_part_text_set(mbe, "guide", MSGC_STR_ADD_RECIPIENT);
+               }
+
+               /* subject */
+               if (cd->sub_data.entry)
+                       edje_object_part_text_set(_EDJ(cd->sub_data.layout), "subject.guidetxt", MSGC_STR_SUBJECT);
+
+               /* attachment */
+               if (cd->ly_attach_main) {
+                       char buf[DEF_BUF_LEN_S + 1] = {0,};
+                       const char *str = _MSGSTR("IDS_MSGC_BODY_PD_ATTACHMENTS");
+
+                       snprintf(buf, sizeof(buf), str, cd->attach_data.attachment_Cnt);
+                       edje_object_part_text_set(_EDJ(cd->ly_attach_main), "text.filename", buf);
+               }
+
+               /* mms size */
+               if (cd->msg_type == COMPOSER_MSG_TYPE_MMS)
+                       msg_ui_composer_body_info_area_update(cd);
+       }
+
+       cd->isclosed = false;
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_rotate(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_ROTATE_TYPE_E rotate)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "cd is NULL");
+
+       cd->rotate = rotate;
+       D_MSG("rotate val [%d]", rotate);
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+
+               RECIPIENT_S *r = cd->recipient;
+               if (!r) return COMPOSER_RETURN_FAIL;
+
+               if (rotate == COMPOSER_ROTATE_PORTRAIT || rotate == COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN) {
+                       elm_layout_theme_set(cd->base, "layout", "application", "default");
+
+                       if (!cd->loaded_ug)
+                               elm_win_indicator_mode_set(cd->main_window, ELM_WIN_INDICATOR_SHOW);
+
+                       elm_box_horizontal_set(r->bx_main, EINA_FALSE);
+                       elm_scroller_content_min_limit(r->sc, EINA_FALSE, EINA_TRUE);
+                       evas_object_size_hint_max_set(r->sc, 9999, COMPOSER_RECIPIENT_PORTRAIT_HEIGHT_MAX);
+               } else if (rotate == COMPOSER_ROTATE_LANDSCAPE || rotate == COMPOSER_ROTATE_LANDSCAPE_UPSIDEDOWN) {
+                       elm_layout_theme_set(cd->base, "layout", "application", "noindicator");/*hide indicator in Landscape*/
+
+                       if (!cd->loaded_ug) {
+                               elm_win_indicator_mode_set(cd->main_window, ELM_WIN_INDICATOR_HIDE);
+                               D_MSG("hide indicator");
+                       }
+
+                       elm_box_horizontal_set(r->bx_main, EINA_TRUE);
+                       elm_scroller_content_min_limit(r->sc, EINA_FALSE, EINA_FALSE);
+                       evas_object_size_hint_max_set(r->sc, 9999, -1);
+               }
+
+               /* change body scroller size */
+               msg_ui_composer_change_body_scroll_size(cd, 0);
+
+       } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               if (rotate == COMPOSER_ROTATE_PORTRAIT || rotate == COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN) {
+                       if (cd->bubble_data)
+                               cd->bubble_data->isRotate = false;
+
+                       if (cd->compose_btn) {
+                               evas_object_hide(cd->compose_btn);
+                               elm_object_part_content_unset(cd->navi_title_layout, "compose_btn");
+                       }
+               } else if (rotate == COMPOSER_ROTATE_LANDSCAPE || rotate == COMPOSER_ROTATE_LANDSCAPE_UPSIDEDOWN) {
+                       if (cd->bubble_data) {
+                               cd->bubble_data->isRotate = true;
+
+                               if (cd->compose_btn && cd->bubble_data->viewmode == BUBBLE_NORMAL_VIEW) {
+                                       evas_object_show(cd->compose_btn);
+                                       elm_object_part_content_set(cd->navi_title_layout, "compose_btn", cd->compose_btn);
+                               }
+                       }
+               }
+
+               elm_win_indicator_mode_set(cd->main_window, ELM_WIN_INDICATOR_SHOW);
+
+               /* change body scroller size */
+               msg_ui_composer_change_body_scroll_size(cd, 0);
+
+       } else {
+               D_EMSG("Unknown Composer Mode");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_init(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       if (cd == NULL) {
+               D_EMSG("[ASSERT] pcmop_data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /* create message handle */
+       if (msg_open_msg_handle(&cd->msg_handle) != MSG_SUCCESS) {
+               D_EMSG("[ASSERT] msg-server doesn't response !!!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /* set message sent status callback */
+       if (msg_reg_sent_status_callback(cd->msg_handle, &__msg_ui_composer_sent_status_cb, cd) != MSG_SUCCESS) {
+               D_EMSG("[ASSERT] sent status callback register error!!!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /* connect contacts svc*/
+       if (contacts_connect2() != 0) {
+               D_EMSG("[ASSERT] Fail of contacts_connect2 !!!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       cd->working_path = msg_composer_create_working_dir();
+       if (cd->working_path == NULL) {
+               D_EMSG("[ASSERT] Fail of make working dir!!!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /* set default message type is SMS */
+       cd->msg_type = COMPOSER_MSG_TYPE_SMS;
+
+       /* get sms setting */
+       msg_struct_t sms_sent_opt = msg_create_struct(MSG_STRUCT_SETTING_SMS_SEND_OPT);
+
+       if (msg_get_sms_send_opt(cd->msg_handle, sms_sent_opt) != MSG_SUCCESS) {
+               D_EMSG("Getting SMS_SEND_OP ERROR");
+       } else {
+               msg_get_int_value(sms_sent_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, &cd->encode_mode);
+               D_MSG("SMS Encode mode is %d", cd->encode_mode);
+       }
+
+       msg_release_struct(&sms_sent_opt);
+
+       if (cd->cms_max_page == 0) {
+               // TODO: get cms max page from msgfw when it is supported by msgfw.
+               cd->cms_max_page = COMPOSER_CMS_MAX_PAGE;
+       }
+
+       /* get mms max size */
+       if (cd->mms_max_size == 0) {
+               msg_struct_t setting = msg_create_struct(MSG_STRUCT_SETTING_MSGSIZE_OPT);
+
+               if (msg_get_msgsize_opt(cd->msg_handle, setting) != MSG_SUCCESS) {
+                       D_EMSG("Getting MMS MAX SIZE ERROR");
+               } else {
+                       if (setting)
+                               msg_get_int_value(setting, MSG_MESSAGE_SIZE_INT, &cd->mms_max_size);
+
+                       D_MSG("msg max size = [%d KB] !!!", cd->mms_max_size);
+                       cd->mms_max_size = cd->mms_max_size * 1024;
+               }
+               msg_release_struct(&setting);
+       }
+
+       /* set default font size*/
+       __msgc_init_font_size(cd);
+
+       /* coonect volume key handler */
+       msg_ui_composer_connect_handler(cd);
+
+       /* register vconf callback function */
+       if (vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, __msgc_vconf_changed_cb, cd) < 0) {
+               D_EMSG("Fail to register vconf CB with [%s]", VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE);
+       }
+       if (vconf_notify_key_changed(VCONFKEY_MSG_APP_FONT_SIZE, __msgc_vconf_changed_cb, cd) < 0) {
+               D_EMSG("Fail to register vconf CB with [%s]", VCONFKEY_MSG_APP_FONT_SIZE);
+       }
+
+       cd->th = elm_theme_new();
+       elm_theme_ref_set(cd->th, NULL);
+       elm_theme_extension_add(cd->th, MSG_CUSTOM_WINSET_EDJ);
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+/*
+ * Create Composer First View
+ */
+COMPOSER_RETURN_TYPE_E msg_ui_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer data is NULL");
+       D_MSG_RETVM_IF(cd->main_window == NULL, COMPOSER_RETURN_FAIL, "main_window is NULL");
+       D_MSG_RETVM_IF(cd->base == NULL, COMPOSER_RETURN_FAIL, "base layout is NULL");
+
+       Evas_Object *navi_frame = NULL;
+       Evas_Object *more_button = NULL;
+       Evas_Object *compose_button = NULL;
+       Evas_Object *content_layout = NULL;
+       Elm_Object_Item *navi_it = NULL;
+       Evas_Object *back_btn = NULL;
+
+       /* State Set */
+       cd->state = COMPOSER_STATE_TYPE_CREATE;
+
+       /* Create naviframe */
+       navi_frame = elm_naviframe_add(cd->base);
+       if (!navi_frame) {
+               D_EMSG("naviframe add fail");
+               goto error_return;
+       }
+
+       evas_object_show(navi_frame);
+       cd->navi_bar = navi_frame;
+
+       /* Create content layout */
+       content_layout = elm_layout_add(navi_frame);
+       if (!content_layout) {
+               D_EMSG("layout add fail");
+               goto error_return;
+       }
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               elm_layout_file_set(content_layout, MSGC_UI_DEFAULT_EDJ, MSGC_EDJ_GRP_CONTENT_LAYOUT);
+       } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER){
+               elm_layout_file_set(content_layout, MSGC_UI_DEFAULT_EDJ, MSGC_EDJ_GRP_CONTENT_LAYOUT);
+               edje_object_signal_emit(_EDJ(content_layout), "change.bubble", "*");
+       } else {
+               D_EMSG("UG mode Unknown");
+               goto error_return;
+       }
+
+       evas_object_size_hint_weight_set(content_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(content_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       edje_object_signal_emit(_EDJ(content_layout), "hide.predictsearch", "*");
+       evas_object_show(content_layout);
+
+       cd->content_layout = content_layout;
+
+       /*Create content*/
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               cd->recipient = msg_ui_composer_recipient_create(content_layout, 1, cd);
+               if (cd->recipient == NULL)
+                       goto error_return;
+
+               elm_object_part_content_set(content_layout, "swl.recipient", cd->recipient->bx_main);
+
+               Evas_Object *predict_search_layout = msg_ui_composer_predictsearch_list_create(content_layout, cd);
+               elm_object_part_content_set(content_layout, "swl.predictsearch", predict_search_layout);
+
+       } else {
+               PMSG_BUBBLE_DATA bubble_data = msg_ui_bubble_init_bubble_data(cd->msg_handle, cd);
+               if (!bubble_data) {
+                       goto error_return;
+               }
+
+               cd->bubble_data = bubble_data;
+
+               Evas_Object *bubble_layout = msg_ui_bubble_create_view(content_layout, cd->bubble_data);
+               if (!bubble_layout) {
+                       goto error_return;
+               }
+               elm_object_part_content_set(content_layout, "swl.bubble.content", bubble_layout);
+       }
+
+       Evas_Object *body_layout = msg_ui_composer_body_create(cd, content_layout);
+       if (!body_layout) {
+               goto error_return;
+       }
+
+       elm_object_part_content_set(content_layout, "swl.composer.body", body_layout);
+
+       cd->ly_body = body_layout;
+
+       /*Push content to navi frame*/
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               if (cd->isMsgInternal)
+                       back_btn = __naviframe_back_btn_create(navi_frame, (void *)cd, false);
+               else
+                       back_btn = __naviframe_back_btn_create(navi_frame, (void *)cd, true);
+       } else {
+               back_btn = __naviframe_back_btn_create(navi_frame, (void *)cd, false);
+       }
+
+       navi_it = elm_naviframe_item_push(navi_frame, NULL, NULL, NULL, content_layout, "empty");
+
+       cd->navi_it = navi_it;
+       cd->back_btn = back_btn;
+
+       /* create navi title layout */
+       cd->navi_title_layout = msg_ui_composer_create_navi_title_bar(cd);
+       msg_ui_composer_navi_title_set(cd);
+       elm_object_item_part_content_set(cd->navi_it, "title", cd->navi_title_layout);
+
+       /*Create more button*/
+       more_button = __naviframe_more_btn_create(navi_frame, cd);
+
+       elm_object_part_content_set(cd->navi_title_layout, "more_btn", more_button);
+       elm_object_part_content_set(cd->navi_title_layout, "prev_btn", back_btn);
+
+       cd->more_btn = more_button;
+
+       if (cd->msg_type == COMPOSER_MSG_TYPE_SMS && cd->msg_ug_mode != MSG_UG_MODE_BUBBLE_COMPOSER)
+               elm_object_disabled_set(cd->more_btn, EINA_TRUE);
+
+       /*Create compose button*/
+       compose_button = __naviframe_compose_btn_create(navi_frame, cd);
+
+       if (cd->bubble_data != NULL && cd->bubble_data->isRotate == true) {
+               evas_object_show(compose_button);
+               elm_object_part_content_set(cd->navi_title_layout, "compose_btn", compose_button);
+       } else {
+               evas_object_hide(compose_button);
+               elm_object_part_content_unset(cd->navi_title_layout, "compose_btn");
+       }
+
+       cd->compose_btn = compose_button;
+
+       /* set navibar to main layout (base) */
+       elm_object_part_content_set(cd->base, "elm.swallow.content", navi_frame);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+
+error_return:
+       return COMPOSER_RETURN_FAIL;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_bubble_data_set(MSG_COMPOSER_VIEW_DATA_S *cd, int thread_id)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer data is NULL");
+       D_MSG_RETVM_IF(cd->msg_ug_mode != MSG_UG_MODE_BUBBLE_COMPOSER, COMPOSER_RETURN_FAIL, "msg_ug_mode is NOT BUBBLE TYPE");
+       D_MSG_RETVM_IF(thread_id <=  0, COMPOSER_RETURN_FAIL, "Composer mode is Not Full");
+       D_MSG_RETVM_IF(cd->bubble_data == NULL, COMPOSER_RETURN_FAIL, "bubble data is NULL");
+
+       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+       msg_struct_t threadInfo = NULL;
+       int err;
+
+       /*Create bubble list*/
+       bubble_data->threadId = thread_id;
+       D_MSG("Thread ID = %d", bubble_data->threadId);
+
+       msg_struct_list_s addrList;
+       int i = 0;
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+
+       err = msg_get_address_list(bubble_data->msgHandle, bubble_data->threadId, &addrList);
+
+       if (err == MSG_SUCCESS) {
+               bubble_data->addr_list.addr_cnt = addrList.nCount;
+
+               for (i = 0; i<addrList.nCount; i++) {
+                       int contact_id = 0;
+                       msg_get_int_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+                       /** addresss */
+                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, bubble_data->addr_list.addr_info[i].address, DEF_THREAD_ADDR_LEN);
+
+                       /** contact ID & display name */
+                       if (contact_id > 0) {
+                               bubble_data->addr_list.addr_info[i].contact_id = contact_id;
+                               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, bubble_data->addr_list.addr_info[i].name, DEF_THREAD_NAME_LEN);
+                       } else {
+                               bubble_data->addr_list.addr_info[i].contact_id = 0;
+                       }
+               }
+
+               msg_release_list_struct(&addrList);
+       } else {
+               D_MSG("[ERROR] msg_get_address_list returns error [%d]", err);
+       }
+
+       threadInfo = msg_create_struct(MSG_STRUCT_THREAD_INFO);
+       err = msg_get_thread(bubble_data->msgHandle, bubble_data->threadId, threadInfo);
+
+       if (err == MSG_SUCCESS)
+               msg_get_str_value(threadInfo, MSG_THREAD_NAME_STR, bubble_data->threadName, DEF_THREAD_NAME_LEN);
+       else
+               D_MSG("[ERROR] msg_get_trhead returns error [%d", err);
+
+       msg_release_struct(&threadInfo);
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_change_composer_view(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer data is NULL");
+       D_MSG_RETVM_IF(cd->msg_ug_mode != MSG_UG_MODE_BUBBLE_COMPOSER, COMPOSER_RETURN_FAIL, "Composer mode is Not Full");
+
+       /*Change Mode */
+       cd->msg_ug_mode = MSG_UG_MODE_ONLY_COMPOSER;
+
+       /*Change content layout to composer layout*/
+       edje_object_signal_emit(_EDJ(cd->content_layout), "change.composer", "*");
+
+       elm_scroller_content_min_limit(cd->body_scroll, 0, 0);
+
+       cd->recipient = msg_ui_composer_recipient_create(cd->content_layout, 1, cd);
+       elm_object_part_content_set(cd->content_layout, "swl.recipient", cd->recipient->bx_main);
+
+       Evas_Object *predict_search_layout = msg_ui_composer_predictsearch_list_create(cd->content_layout, cd);
+       elm_object_part_content_set(cd->content_layout, "swl.predictsearch", predict_search_layout);
+
+       MSGC_EVAS_OBJECT_DEL(cd->back_btn);
+       Evas_Object *back_btn = __naviframe_back_btn_create(cd->navi_bar, (void *)cd, true);
+       elm_object_part_content_set(cd->navi_title_layout, "prev_btn", back_btn);
+       cd->back_btn = back_btn;
+
+       msg_ui_composer_navi_title_set(cd);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_change_bubble_view(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer data is NULL");
+       D_MSG_RETVM_IF(cd->msg_ug_mode != MSG_UG_MODE_FULL_COMPOSER, COMPOSER_RETURN_FAIL, "Composer mode is Not Full");
+
+       /*Change Mode */
+       cd->msg_ug_mode = MSG_UG_MODE_BUBBLE_COMPOSER;
+
+       /*Change content layout to bubble layout*/
+       edje_object_signal_emit(_EDJ(cd->content_layout), "hide.predictsearch", "*");
+       edje_object_signal_emit(_EDJ(cd->content_layout), "change.bubble", "*");
+
+       elm_scroller_content_min_limit(cd->body_scroll, 0, 1);
+       evas_object_size_hint_max_set(cd->body_scroll, 9999, 250);
+
+       /*Init bubble data*/
+       PMSG_BUBBLE_DATA bubble_data = msg_ui_bubble_init_bubble_data(cd->msg_handle, cd);
+       if (!bubble_data)
+               return COMPOSER_RETURN_FAIL;
+
+       cd->bubble_data = (void *)bubble_data;
+
+       /*Change naviframe layout for bubble*/
+       Evas_Object *cancel_btn = __naviframe_back_btn_create(cd->navi_bar, (void *)cd, false);
+       elm_object_part_content_set(cd->navi_title_layout, "prev_btn", cancel_btn);
+       cd->back_btn = cancel_btn;
+
+       Evas_Object *layout = msg_ui_bubble_create_view(cd->content_layout, cd->bubble_data); // First parameter should be 'content_layout'.
+       elm_object_part_content_set(cd->content_layout, "swl.bubble.content", layout);
+
+       /*remove unused layout*/
+       MSGC_EVAS_OBJECT_DEL(cd->ly_recipient);
+       msg_ui_composer_recipient_delete(cd->recipient);
+       cd->recipient = NULL;
+
+       msg_ui_composer_predictsearch_list_delete(cd);
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+/*
+ * msg_ui_composer_editable_set
+ * editable == FALSE : hide body content & disable more button & close option header
+ * editable == TRUE : show body content layout
+ * */
+void msg_ui_composer_editable_set(MSG_COMPOSER_VIEW_DATA_S *cd, Eina_Bool editable)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       if (editable == EINA_FALSE){
+               Evas_Object *body_layout = elm_object_part_content_unset(cd->content_layout, "swl.composer.body");
+               evas_object_hide(body_layout);
+
+               if (cd->more_btn)
+                       elm_object_disabled_set(cd->more_btn, EINA_TRUE);
+       } else {
+               elm_object_part_content_set(cd->content_layout, "swl.composer.body", cd->ly_body);
+               evas_object_show(cd->ly_body);
+
+               if (cd->more_btn)
+                       elm_object_disabled_set(cd->more_btn, EINA_FALSE);
+
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_bubble_del_all(void *data, service_h svc_handle)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer data is NULL");
+
+       ug_send_result(cd->ug, svc_handle);
+}
+
+Evas_Object *msg_ui_composer_create_navi_title_bar(void *data)
+{
+       D_ENTER;
+
+       if (!data) {
+               D_EMSG("[ERROR] data is NULL");
+               return NULL;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       Evas_Object *title_layout = elm_layout_add(cd->navi_bar);
+       elm_layout_file_set(title_layout, MSG_COMMON_EDJ, "title");
+       evas_object_size_hint_weight_set(title_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(title_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(title_layout);
+
+       return title_layout;
+}
+
+void msg_ui_composer_navi_title_set(void *data)
+{
+       D_ENTER;
+
+       if (!data) {
+               D_EMSG("data is NULL");
+               return;
+       }
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               elm_object_part_text_set(cd->navi_title_layout, "title_text", MSGC_STR_NEW_MESSAGE);
+       } else if (cd->msg_ug_mode ==  MSG_UG_MODE_BUBBLE_COMPOSER) {
+               Evas_Object *title_button = NULL;
+
+               elm_object_part_text_set(cd->navi_title_layout, "title_text", ""); // text part clear first
+
+               title_button = elm_button_add(cd->navi_bar);
+
+               elm_object_theme_set(title_button, cd->th);
+               elm_object_style_set(title_button, "title_button");
+
+               evas_object_size_hint_weight_set(title_button, 0.0, 0.0);
+               evas_object_size_hint_align_set(title_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               if (bubble_data->addr_list.addr_cnt == 1) {
+                       if (bubble_data->addr_list.addr_info[0].contact_id > 0 && bubble_data->addr_list.addr_info[0].name[0] != '\0')
+                               elm_object_text_set(title_button, bubble_data->addr_list.addr_info[0].name);
+                       else if (bubble_data->addr_list.addr_info[0].address[0] != '\0')
+                               elm_object_text_set(title_button, bubble_data->addr_list.addr_info[0].address);
+                       else
+                               elm_object_text_set(title_button, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+               } else if (bubble_data->addr_list.addr_cnt > 1) {
+                       char title_text[DEF_BUF_LEN+1] = {0,};
+
+                       if (bubble_data->addr_list.addr_info[0].contact_id > 0 && bubble_data->addr_list.addr_info[0].name[0] != '\0')
+                               snprintf(title_text, sizeof(title_text), "%s +%d", bubble_data->addr_list.addr_info[0].name, bubble_data->addr_list.addr_cnt-1);
+                       else if (bubble_data->addr_list.addr_info[0].address[0] != '\0')
+                               snprintf(title_text, sizeof(title_text), "%s +%d", bubble_data->addr_list.addr_info[0].address, bubble_data->addr_list.addr_cnt-1);
+                       else
+                               snprintf(title_text, sizeof(title_text), "%s +%d", dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"), bubble_data->addr_list.addr_cnt-1);
+
+                       elm_object_text_set(title_button, title_text);
+               } else {
+                       elm_object_text_set(title_button, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+               }
+
+               evas_object_show(title_button);
+               elm_object_part_content_set(cd->navi_title_layout, "title_btn", title_button);
+               evas_object_smart_callback_add(title_button, "clicked", msg_ui_bubble_title_button_clicked_cb, cd);
+
+               bubble_data->title_button = title_button;
+       } else {
+               D_EMSG("Invalid msg_ui_mode [%d]", cd->msg_ug_mode);
+               return;
+       }
+}
+
+static Eina_Bool __msgc_up_key_long_press_cb(void *data)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(data == NULL, EINA_FALSE, "cd is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (!msg_common_increase_font_size()) {
+               cd->vol_up_key_longpress = NULL;
+               return EINA_FALSE;
+       }
+
+       /* apply font size */
+       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER)
+               msg_common_apply_font_size("bubble", cd->content_layout);
+
+       msg_ui_composer_apply_font_size(cd, false);
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool __msgc_down_key_long_press_cb(void *data)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(data == NULL, EINA_FALSE, "cd is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (!msg_common_decrease_font_size()) {
+               cd->vol_down_key_longpress = NULL;
+               return EINA_FALSE;
+       }
+
+       /* apply font size */
+       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER)
+               msg_common_apply_font_size("bubble", cd->content_layout);
+
+       msg_ui_composer_apply_font_size(cd, false);
+
+       return EINA_TRUE;
+}
+
+Eina_Bool msg_ui_composer_key_release_cb(void *data, int type, void *event)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(data == NULL, EINA_FALSE, "cd is NULL");
+       D_MSG_RETVM_IF(event == NULL, EINA_FALSE, "event is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       Ecore_Event_Key *ev = (Ecore_Event_Key *)event;
+       int use_volume_key = false;
+
+       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+       if (use_volume_key) {
+               if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) {    /* KEY_VOLUMEUP */
+                       D_MSG("KEY_VOLUMEUP is released");
+
+                       if (cd->vol_up_key_longpress) {
+                               ecore_timer_del(cd->vol_up_key_longpress);
+                               cd->vol_up_key_longpress = NULL;
+                       }
+               } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) {   /* KEY_VOLUMEDOWN */
+                       D_MSG("KEY_VOLUMEDOWN is released");
+
+                       if (cd->vol_down_key_longpress) {
+                               ecore_timer_del(cd->vol_down_key_longpress);
+                               cd->vol_down_key_longpress = NULL;
+                       }
+               } else {
+                       D_MSG("key_name is not applicable!");
+               }
+       } else {
+               D_MSG("Use volume key setting is not activated. Do volume key action");
+       }
+
+       return EINA_TRUE;
+}
+
+Eina_Bool msg_ui_composer_key_press_cb(void *data, int type, void *event)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(data == NULL, EINA_FALSE, "cd is NULL");
+       D_MSG_RETVM_IF(event == NULL, EINA_FALSE, "event is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       Ecore_Event_Key *ev = (Ecore_Event_Key *)event;
+       int use_volume_key = false;
+
+       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+       if (use_volume_key) {
+               if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) {    /* KEY_VOLUMEUP */
+                       D_MSG("KEY_VOLUMEUP is pressed");
+
+                       msg_common_increase_font_size();
+
+                       /* apply font size */
+                       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER)
+                               msg_common_apply_font_size("bubble", cd->content_layout);
+
+                       msg_ui_composer_apply_font_size(cd, false);
+
+                       cd->vol_up_key_longpress = ecore_timer_add(0.1, (Ecore_Task_Cb) __msgc_up_key_long_press_cb, (void *)cd);
+               } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) {   /* KEY_VOLUMEDOWN */
+                       D_MSG("KEY_VOLUMEDOWN is pressed");
+
+                       msg_common_decrease_font_size();
+
+                       /* apply font size */
+                       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER)
+                               msg_common_apply_font_size("bubble", cd->content_layout);
+
+                       msg_ui_composer_apply_font_size(cd, false);
+
+                       cd->vol_down_key_longpress = ecore_timer_add(0.1, (Ecore_Task_Cb) __msgc_down_key_long_press_cb, (void *)cd);
+               } else {
+                       D_MSG("key_name is not applicable!");
+               }
+       } else {
+               D_MSG("Use volume key setting is not activated. Do volume key action");
+       }
+
+       return EINA_TRUE;
+}
+
+void msg_ui_composer_connect_handler(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "cd is NULL");
+
+       int use_volume_key = 0;
+       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+       if (use_volume_key) {
+               msg_ui_composer_grab_key_setting(cd->xdisplay, cd->main_window);
+               /* connect key handler for volume up/down */
+               if (!cd->volkey_press_handler)
+                       cd->volkey_press_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, msg_ui_composer_key_press_cb, (void *)cd);
+
+               if (!cd->volkey_release_handler)
+                       cd->volkey_release_handler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, msg_ui_composer_key_release_cb, (void *)cd);
+       }
+       D_MSG("use_volume_key = %d", use_volume_key);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_disconnect_handler(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "cd is NULL");
+
+       if (cd->volkey_press_handler) {
+               ecore_event_handler_del(cd->volkey_press_handler);
+               cd->volkey_press_handler = NULL;
+       }
+
+       if (cd->vol_down_key_longpress) {
+               ecore_timer_del(cd->vol_down_key_longpress);
+               cd->vol_down_key_longpress = NULL;
+       }
+
+       if (cd->volkey_release_handler) {
+               ecore_event_handler_del(cd->volkey_release_handler);
+               cd->volkey_release_handler = NULL;
+       }
+
+       if (cd->vol_up_key_longpress) {
+               ecore_timer_del(cd->vol_up_key_longpress);
+               cd->vol_up_key_longpress = NULL;
+       }
+
+       msg_ui_composer_ungrab_key_setting(cd->xdisplay, cd->main_window);
+
+       D_LEAVE;
+}
diff --git a/composer/src/ui-composer/msg-ui-composer-pageduration.c b/composer/src/ui-composer/msg-ui-composer-pageduration.c
new file mode 100755 (executable)
index 0000000..b9d8383
--- /dev/null
@@ -0,0 +1,273 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* includes*/
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-pageduration.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-main.h"
+
+#define MSGC_PAGE_DURATION_MAX 99
+#define MSGC_PAGE_DURATION_MIN 5
+#define CUSTOM_TIME_CHAR_MAX 2
+
+static void __msg_ui_composer_pageduration_value_set(MSG_COMPOSER_VIEW_DATA_S *cd, int page_duration)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       Evas_Object *body_entry = msg_ui_composer_last_body_entry_get(cd);
+       Evas_Object *last_focused_entry = msg_ui_composer_last_focused_entry_get(cd);
+
+       /* focus is body entry*/
+       if (body_entry && (body_entry == last_focused_entry)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "body entry has a focus");
+               MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+
+               page_data = eina_list_nth(cd->body_data.page_list, cd->current_edit_entry);
+
+               if (page_data)
+                       page_data->page_duration = page_duration;
+               else
+                       D_EMSG("page_data is NULL!!");
+       } else {
+               cd->page_duration = page_duration;
+       }
+}
+
+static void __msgc_pageduration_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "data param is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       int page_duration = 0;
+       const char *duration = NULL;
+
+       duration = elm_entry_entry_get(cd->page_duration_entry);
+       if (!duration) {
+               D_EMSG("duration is NULL");
+               return;
+       }
+
+       page_duration = atoi(duration);
+       D_MSG("page_duration is %d", page_duration);
+
+       if (page_duration < MSGC_PAGE_DURATION_MIN || page_duration > MSGC_PAGE_DURATION_MAX) {
+               elm_entry_entry_set(cd->page_duration_entry, "5");
+               elm_entry_cursor_end_set(cd->page_duration_entry);
+               return;
+       }
+
+       /*save pageduration */
+       __msg_ui_composer_pageduration_value_set(cd, page_duration);
+
+       MSGC_EVAS_OBJECT_DEL(cd->page_duration_entry);
+       MSGC_EVAS_OBJECT_DEL(cd->custom_popup);
+}
+
+static void __msgc_pageduration_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "data param is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       MSGC_EVAS_OBJECT_DEL(cd->page_duration_entry);
+       MSGC_EVAS_OBJECT_DEL(cd->custom_popup);
+}
+
+int msg_ui_composer_pageduration_value_get(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, MSGC_PAGE_DURATION_MIN, "Composer Data is NULL");
+       Evas_Object *body_entry = msg_ui_composer_last_body_entry_get(cd);
+       Evas_Object *last_focused_entry = msg_ui_composer_last_focused_entry_get(cd);
+       int page_duration = MSGC_PAGE_DURATION_MIN;
+
+       /* focus is body entry*/
+       if (body_entry && (body_entry == last_focused_entry)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "body entry has a focus");
+               MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(cd->body_data.page_list, cd->current_edit_entry);
+
+               if (page_data)
+                       page_duration = page_data->page_duration;
+       } else {
+               if (cd->page_duration > COMPOSER_PAGE_DEFAULT_DURATION)
+                       page_duration = cd->page_duration;
+       }
+
+       return page_duration;
+}
+
+static bool __msg_ui_composer_get_page_number(MSG_COMPOSER_VIEW_DATA_S *cd, int *cur_page, int *total_page)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, false, "Composer Data is NULL");
+       D_MSG_RETVM_IF(cur_page == NULL, false, "param is NULL");
+       D_MSG_RETVM_IF(total_page == NULL, false, "param is NULL");
+
+       Evas_Object *body_entry = msg_ui_composer_last_body_entry_get(cd);
+       Evas_Object *last_focused_entry = msg_ui_composer_last_focused_entry_get(cd);
+
+       /* focus is body entry*/
+       if (body_entry && (body_entry == last_focused_entry)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "body entry has a focus");
+               MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
+               int page_count = cd->body_data.page_count;
+               int i = 0;
+
+               for (i = 0; i < page_count; i++) {
+                       page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(cd->body_data.page_list, i);
+                       if (page_data->entry == body_entry) {
+                               D_MSG("page NO.[%d]/[%d] focused !!!", i + 1, page_count);
+                               *cur_page = i + 1;
+                               *total_page = page_count;
+
+                               return true;
+                       }
+               }
+       }
+
+       return false;
+}
+
+static void __msg_ui_composer_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "entry obj is NULL");
+
+       char *enter_str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
+       if (enter_str == NULL) {
+               D_EMSG("enter_str is NULL");
+               return;
+       }
+
+       Evas_Object *btn = evas_object_data_get(obj, "ok_btn");
+       int text_len = strlen(enter_str);
+
+       if (text_len <= 0)
+               elm_object_disabled_set(btn, EINA_TRUE);
+       else
+               elm_object_disabled_set(btn, EINA_FALSE);
+
+       g_free(enter_str);
+       D_LEAVE;
+}
+
+void msg_ui_composer_pageduration_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       Evas_Object *btn1 = NULL;
+       Evas_Object *btn2 = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *entry = NULL;
+       Evas_Object *popup = NULL;
+       Elm_Entry_Filter_Limit_Size limit_filter;
+       Elm_Entry_Filter_Accept_Set accept_filter;
+       int page_duration = MSGC_PAGE_DURATION_MIN;
+       int cur_page = 0;
+       int total_page = 0;
+       bool has_page_number = false;
+       char duration_str[DEF_BUF_LEN_S + 1] = {0,};
+       char popup_msg[DEF_BUF_LEN + 1] = {0,};
+       char *str = NULL;
+
+       page_duration = msg_ui_composer_pageduration_value_get(cd);
+       D_MSG("Loaded duration is %d", page_duration);
+       snprintf(duration_str, sizeof(duration_str), "%d", page_duration);
+
+       /* create custom popup inner layout */
+       layout = elm_layout_add(cd->navi_bar);
+       elm_layout_file_set(layout, MSGC_UI_DEFAULT_EDJ, "composer/popup/entryview");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       str = _MSGSTR("IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS");
+       snprintf(popup_msg, sizeof(popup_msg), str, MSGC_PAGE_DURATION_MIN);
+
+       has_page_number = __msg_ui_composer_get_page_number(cd, &cur_page, &total_page);
+
+       if (has_page_number) {
+               char popup_msg_with_page[DEF_BUF_LEN + 1] = {0,};
+               snprintf(popup_msg_with_page, sizeof(popup_msg_with_page), "%s (%d/%d)", popup_msg, cur_page, total_page);
+               elm_object_part_text_set(layout, "elm.text", popup_msg_with_page);
+       } else {
+               elm_object_part_text_set(layout, "elm.text", popup_msg);
+       }
+
+       entry = elm_entry_add(layout);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+       limit_filter.max_char_count = CUSTOM_TIME_CHAR_MAX;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter);
+       elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
+       accept_filter.accepted = "0123456789";
+       accept_filter.rejected = NULL;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_accept_set, &accept_filter);
+       /* fix font size */
+       elm_entry_text_style_user_push(entry, "DEFAULT='font_size=32'");
+       elm_object_text_set(entry, duration_str);
+       elm_entry_cursor_end_set(entry);
+
+       evas_object_smart_callback_add(entry, "changed", __msg_ui_composer_entry_changed_cb, NULL);
+
+       elm_object_part_content_set(layout, "swl.entry", entry);
+       evas_object_show(entry);
+       evas_object_show(layout);
+
+       cd->page_duration_entry = entry;
+
+       /* create popup */
+       popup = msg_ui_composer_custom_popup_create(cd, NULL, cd->navi_bar, layout);
+       if (!popup) {
+               D_EMSG("popup is NULL");
+               goto error_return;
+       }
+
+       /* create button */
+       btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, _SYSSTR("IDS_COM_SK_OK"));
+       elm_object_focus_allow_set(btn1, EINA_FALSE);
+       elm_object_part_content_set(popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", __msgc_pageduration_ok_clicked_cb, cd);
+
+       btn2 = elm_button_add(popup);
+       elm_object_style_set(btn2, "popup_button/default");
+       elm_object_text_set(btn2, _SYSSTR("IDS_COM_SK_CANCEL"));
+       elm_object_focus_allow_set(btn2, EINA_FALSE);
+       elm_object_part_content_set(popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", __msgc_pageduration_cancel_clicked_cb, cd);
+       evas_object_show(popup);
+
+       cd->custom_popup = popup;
+
+       evas_object_data_set(entry, "ok_btn", btn1);
+
+       elm_object_focus_set(entry, EINA_TRUE);
+
+       D_LEAVE;
+       return;
+
+error_return:
+
+       MSGC_EVAS_OBJECT_DEL(cd->page_duration_entry);
+       MSGC_EVAS_OBJECT_DEL(layout);
+
+       D_LEAVE;
+}
diff --git a/composer/src/ui-composer/msg-ui-composer-popup.c b/composer/src/ui-composer/msg-ui-composer-popup.c
new file mode 100755 (executable)
index 0000000..644d45f
--- /dev/null
@@ -0,0 +1,378 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-recipient-callback.h"
+#include "msg-ui-composer-recipient.h"
+#include <status.h>
+
+/*
+       Destroy all window popup
+*/
+void msg_ui_composer_popup_delete_all(void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+
+       Evas_Object *popup;
+       EINA_LIST_FREE(cd->popup_list, popup) {
+               if (popup)
+                       evas_object_del(popup);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_status_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       Evas_Object *popup = data;
+
+       if (popup)
+               evas_object_del(popup);
+
+       D_LEAVE;
+}
+
+static void __popup_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       Evas_Object *popup;
+
+       if (!data)
+               return;
+
+       popup = obj;
+
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       D_PRINT("delete = [%p]", obj);
+
+       if (cd->popup_list) {
+               D_MSG("popup list count = %d", eina_list_count(cd->popup_list));
+               cd->popup_list = eina_list_remove(cd->popup_list, popup);
+               if (!msg_ui_composer_popup_exist(data) && !cd->loaded_ug && !cd->loaded_aul && !cd->popup_end) {
+                       if (!cd->isclosed)
+                               msg_ui_composer_last_focus_load(cd);
+               }
+       } else {
+               D_EMSG("popup_list is not exist");
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_status_noti_show(const char *msg)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(msg == NULL, "msg is NULL");
+
+       status_message_post(msg);
+
+       D_LEAVE;
+}
+
+/*
+       TEXT && BUTTON
+*/
+Evas_Object *msg_ui_composer_status_popup_show(Evas_Object *parent, MSG_COMPOSER_VIEW_DATA_S *cd, const char *msg, int time)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent is NULL");
+
+       Evas_Object *popup = NULL;
+       char *popup_msg = NULL;
+
+       popup = elm_popup_add(parent);
+
+       if (popup == NULL)
+               return NULL;
+
+       popup_msg = elm_entry_utf8_to_markup(msg);
+       if (popup_msg) {
+               elm_object_text_set(popup, popup_msg);
+               g_free(popup_msg);
+       }
+
+       if (time > 0) {
+               elm_popup_timeout_set(popup, time);
+               evas_object_smart_callback_add(popup, "timeout", msg_ui_composer_status_popup_response_cb, popup);
+       }
+
+       evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, __popup_delete_cb, cd);
+
+       cd->popup_list = eina_list_append(cd->popup_list, popup);
+
+       evas_object_show(popup);
+       elm_object_focus_set(popup, EINA_TRUE);
+
+       return popup;
+}
+
+/*
+       TEXT && BUTTON
+*/
+Evas_Object *msg_ui_composer_status_btn_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, const char *msg, int time, const char *btn_text)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+       D_MSG_RETVM_IF(cd->main_window == NULL, NULL, "main window is NULL");
+
+       Evas_Object *popup = NULL;
+
+       popup = msg_ui_composer_status_popup_show(cd->main_window, cd, msg, time);
+       D_MSG_RETVM_IF(popup == NULL, NULL, "popup is NULL");
+
+       if (btn_text) {
+               Evas_Object *btn1 = elm_button_add(popup);
+               elm_object_style_set(btn1, "popup_button/default");
+               elm_object_text_set(btn1, btn_text);
+               elm_object_part_content_set(popup, "button1", btn1);
+               evas_object_smart_callback_add(btn1, "clicked", msg_ui_composer_status_popup_response_cb, popup);
+       }
+
+       /* give a focus to popup.
+       * EFL Internally, focus will be set to button of popup.
+       * Because popup which is a container widget can't have focus according to elementary policy
+       */
+       evas_object_show(popup);
+       elm_object_focus_allow_set(popup, EINA_TRUE);
+       elm_object_focus_set(popup, EINA_TRUE);
+
+       return popup;
+}
+
+Evas_Object *msg_ui_composer_progress_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, const char *msg)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+       D_MSG_RETVM_IF(cd->main_window == NULL, NULL, "main window is NULL");
+       D_MSG_RETVM_IF(msg == NULL, NULL, "param is NULL");
+
+       Evas_Object *layout = NULL;
+       Evas_Object *label = NULL;
+       Evas_Object *progressbar = NULL;
+       Evas_Object *popup = NULL;
+
+       popup = elm_popup_add(cd->main_window);
+       if (popup == NULL)
+               return NULL;
+
+       /* create custom inner layout */
+       layout = elm_layout_add(popup);
+       elm_layout_file_set(layout, MSGC_UI_DEFAULT_EDJ, "composer/popup/popup_processingview");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       label = elm_label_add(layout);
+       elm_object_style_set(label, "popup/default");
+       elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
+       elm_object_text_set(label, msg);
+       evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(label);
+
+       progressbar = elm_progressbar_add(layout);
+       elm_object_style_set(progressbar, "list_process");
+       elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_show(progressbar);
+
+       elm_object_part_content_set(layout, "elm.swallow.content", progressbar);
+       elm_object_part_content_set(layout, "elm.swallow.text", label);
+
+       elm_object_content_set(popup, layout);
+
+       evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, __popup_delete_cb, cd);
+
+       cd->popup_list = eina_list_append(cd->popup_list, popup);
+
+       evas_object_show(popup);
+
+       D_LEAVE;
+       return popup;
+}
+
+/*
+       list type popup
+*/
+Evas_Object *msg_ui_composer_list_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char *title, Evas_Object *list, const char *style)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+       D_MSG_RETVM_IF(cd->main_window == NULL, NULL, "main window is NULL");
+
+       Evas_Object *popup;
+       popup = elm_popup_add(cd->main_window);
+       if (popup == NULL)
+               return NULL;
+
+       if (style)
+               elm_object_style_set(popup, style);
+       else
+               elm_object_style_set(popup, "menustyle");
+
+
+       if (title)
+                 elm_object_part_text_set(popup, "title,text", title);
+
+       if (list)
+               elm_object_content_set(popup, list);
+
+       evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, __popup_delete_cb, cd);
+
+       cd->popup_list = eina_list_append(cd->popup_list, popup);
+
+       evas_object_show(popup);
+
+       D_LEAVE;
+       return popup;
+}
+
+/*
+       checkbox popup
+*/
+Evas_Object *msg_ui_composer_checkbox_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char *title, const char *msg, const char *check_msg)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+       D_MSG_RETVM_IF(cd->main_window == NULL, NULL, "main window is NULL");
+       D_MSG_RETVM_IF(msg == NULL, NULL, "param is NULL");
+       D_MSG_RETVM_IF(check_msg == NULL, NULL, "param is NULL");
+
+       Evas_Object *popup = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *check = NULL;
+
+       popup = elm_popup_add(cd->main_window);
+       if (popup == NULL)
+               return NULL;
+
+       if (title)
+                 elm_object_part_text_set(popup, "title,text", title);
+
+       /* create custom inner layout */
+       layout = elm_layout_add(popup);
+       elm_layout_file_set(layout, MSGC_UI_DEFAULT_EDJ, "composer/popup/popup_checkview");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       check = elm_check_add(layout);
+       evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(check);
+
+       edje_object_part_text_set(_EDJ(layout), "text_msg", msg);
+       edje_object_part_text_set(_EDJ(layout), "check_text", check_msg);
+       elm_object_part_content_set(layout, "check", check);
+       evas_object_show(layout);
+
+       elm_object_content_set(popup, layout);
+
+       evas_object_data_set(popup, "check_box", check);
+
+       evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, __popup_delete_cb, cd);
+
+       cd->popup_list = eina_list_append(cd->popup_list, popup);
+
+       evas_object_show(popup);
+
+       D_LEAVE;
+       return popup;
+}
+
+/*
+       custom type popup
+*/
+Evas_Object *msg_ui_composer_custom_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char *title, Evas_Object *parent, Evas_Object *layout)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent param is NULL");
+
+       Evas_Object *popup;
+       popup = elm_popup_add(parent);
+       if (popup == NULL)
+               return NULL;
+
+       if (title)
+               elm_object_part_text_set(popup, "title,text", title);
+
+       if (layout)
+               elm_object_content_set(popup, layout);
+
+       evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, __popup_delete_cb, cd);
+
+       cd->popup_list = eina_list_append(cd->popup_list, popup);
+
+       evas_object_show(popup);
+
+       D_LEAVE;
+       return popup;
+}
+
+Eina_Bool msg_ui_composer_popup_exist(void *data)
+{
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       if (!cd)
+               return EINA_FALSE;
+
+       if (!cd->popup_list)
+               return EINA_FALSE;
+
+       D_MSG("popup count = %d", eina_list_count(cd->popup_list));
+
+       if (eina_list_count(cd->popup_list) > 0)
+               return EINA_TRUE;
+       else
+               return EINA_FALSE;
+}
+
+void msg_ui_composer_popup_focus(void *data)
+{
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       Evas_Object *p;
+
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (!cd || !cd->popup_list)
+               return;
+
+       p = eina_list_nth(cd->popup_list,0);
+
+       if (!p)
+               return;
+
+       elm_object_focus_set(p, EINA_TRUE);
+}
+
+Evas_Object *msg_ui_composer_popup_button_create(Evas_Object *parent, const char *str)
+{
+       D_MSG_RETVM_IF(parent == NULL, NULL, "param is NULL");
+       Evas_Object *btn = NULL;
+
+       btn = elm_button_add(parent);
+       elm_object_style_set(btn, "popup_button/default");
+       elm_object_text_set(btn, str);
+
+       return btn;
+}
diff --git a/composer/src/ui-composer/msg-ui-composer-predictsearch.c b/composer/src/ui-composer/msg-ui-composer-predictsearch.c
new file mode 100755 (executable)
index 0000000..feeeb0c
--- /dev/null
@@ -0,0 +1,547 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-predictsearch.h"
+
+static void __predictsearch_sel(void *data, Evas_Object *obj, void *event_info);
+static char *__predictsearch_text_get(void *data, Evas_Object *obj, const char *part);
+static void __predictsearch_del_cb(void *data, Evas_Object *obj);
+static int __predictsearch_genlist_item_append(PREDICTSEARCH_S *ps, int numlist);
+
+static char *__predictsearch_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_MSG_RETVM_IF(data == NULL, NULL, "RECIPIENT_ITEM_S data is NULL");
+       RECIPIENT_ITEM_S *ps_item_s = (RECIPIENT_ITEM_S *)data;
+       char *keyword = evas_object_data_get(obj, "keyword");
+       bool is_word_in_str;
+
+       if (g_strcmp0(part, "elm.text.1") == 0) {
+               if (strlen(ps_item_s->display_name) == 0)
+                       return g_strdup(search_markup_keyword(ps_item_s->recipient, keyword, &is_word_in_str));
+               else
+                       return g_strdup(search_markup_keyword(ps_item_s->display_name, keyword, &is_word_in_str));
+       } else if (g_strcmp0(part, "elm.text.2") == 0) {
+               return g_strdup(search_markup_keyword(ps_item_s->recipient, keyword, &is_word_in_str));
+       } else if (g_strcmp0(part, "elm.text") == 0) {
+               return g_strdup(search_markup_keyword(ps_item_s->recipient, keyword, &is_word_in_str));
+       } else {
+               D_EMSG("Unknown part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void  __predictsearch_del_cb(void *data, Evas_Object *obj)
+{
+       D_MSG_RETM_IF(data == NULL, "RECIPIENT_ITEM_S data is NULL");
+       RECIPIENT_ITEM_S *ps_item_s = (RECIPIENT_ITEM_S *)data;
+
+       if (ps_item_s)
+               free(ps_item_s);
+}
+
+static void __predictsearch_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(event_info == NULL, "event_info is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       RECIPIENT_ITEM_S *ps_item_s = (RECIPIENT_ITEM_S *)elm_object_item_data_get(item);
+       D_MSG_RETM_IF(ps_item_s == NULL, "genlist_item_data is NULL");
+
+       elm_genlist_item_selected_set(item, 0);
+
+       if (msg_ui_composer_recipient_count_get(cd->recipient) >= COMPOSER_RECIPIENT_COUNT_MAX) {
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_COUNT_MAX);
+               msg_ui_composer_predictsearch_clear(cd);
+               msg_ui_composer_recipient_entry_text_set(cd->recipient, "");
+               return;
+       }
+
+       if (msg_ui_composer_recipient_duplicate_check(cd->recipient, ps_item_s->recipient) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+               D_EMSG("Recipient is duplicate");
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_DUP_RECP);
+               msg_ui_composer_predictsearch_clear(cd);
+               msg_ui_composer_recipient_entry_text_set(cd->recipient, "");
+               return;
+       }
+
+       if (msg_ui_composer_recipient_vaild_check(ps_item_s->recipient) == EINA_FALSE) {
+               D_EMSG("Input recipient is Invaild");
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_INVALID_RECP);
+
+       }
+
+       msg_ui_composer_recipient_append(cd->recipient, ps_item_s->recipient, ps_item_s->index);
+
+       msg_ui_composer_predictsearch_clear(cd);
+       msg_ui_composer_recipient_entry_text_set(cd->recipient, "");
+       D_LEAVE;
+}
+
+static void __predictsearch_show(PREDICTSEARCH_S *ps)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(ps == NULL, "PredictSearchData is NULL");
+       D_MSG_RETM_IF(ps->cd == NULL, "Composer Data is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = ps->cd;
+
+       if (ps->IsShow == EINA_FALSE) {
+               ps->IsShow = EINA_TRUE;
+               edje_object_signal_emit(_EDJ(cd->content_layout), "show.predictsearch", "*");
+       }
+
+       D_LEAVE;
+}
+
+static void __predictsearch_hide(PREDICTSEARCH_S *ps)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(ps == NULL, "PredictSearchData is NULL");
+       D_MSG_RETM_IF(ps->cd == NULL, "Composer Data is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = ps->cd;
+
+       if (ps->IsShow == EINA_TRUE) {
+               ps->IsShow = EINA_FALSE;
+               edje_object_signal_emit(_EDJ(cd->content_layout), "hide.predictsearch", "*");
+       }
+
+       D_LEAVE;
+}
+
+Evas_Object *msg_ui_composer_predictsearch_list_create(Evas_Object *parent, MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer Data is NULL");
+
+       PREDICTSEARCH_S *ps = NULL;
+       Evas_Object *genlist = NULL;
+
+       if (!cd->predictsearch) {
+               ps = (PREDICTSEARCH_S *)calloc(1, sizeof(PREDICTSEARCH_S));
+               D_MSG_RETVM_IF(ps == NULL, NULL, "Fail to malloc of PredictSearchData");
+
+               cd->predictsearch = ps;
+       } else {
+               D_MSG("ps is already existed");
+               ps = cd->predictsearch;
+       }
+
+       ps->parent = parent;
+       ps->cd = cd;
+       ps->IsShow = EINA_FALSE;
+
+       ps->itc_2line.item_style = "2text.2.tb";
+       ps->itc_2line.func.content_get = NULL;
+       ps->itc_2line.func.text_get = __predictsearch_text_get;
+       ps->itc_2line.func.state_get = NULL;
+       ps->itc_2line.func.del = __predictsearch_del_cb;
+
+       ps->itc_1line.item_style = "1text.tb";
+       ps->itc_1line.func.content_get = NULL;
+       ps->itc_1line.func.text_get = __predictsearch_text_get;
+       ps->itc_1line.func.state_get = NULL;
+       ps->itc_1line.func.del = __predictsearch_del_cb;
+
+
+       genlist = elm_genlist_add(parent);
+       if (!genlist) {
+               D_EMSG("list is NULL");
+               return NULL;
+       }
+
+       elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+       elm_object_focus_allow_set(genlist, EINA_FALSE);
+       evas_object_data_set(genlist, "keyword", ps->txt_ps_keyword);
+       ps->glist_ps = genlist;
+
+       Evas_Object *bg = msg_ui_composer_bg_create(parent);
+       elm_object_style_set(bg, "edit_mode");
+       elm_object_part_content_set(parent, "swl.bg_predictsearch", bg);
+       D_LEAVE;
+       return genlist;
+}
+
+void msg_ui_composer_predictsearch_list_delete(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       msg_ui_composer_predictsearch_clear(cd);
+
+       if (cd->predictsearch) {
+               free(cd->predictsearch);
+               cd->predictsearch = NULL;
+       }
+
+       D_LEAVE;
+}
+
+static bool __predictsearch_iterate_load(PREDICTSEARCH_S *ps)
+{
+       D_MSG_RETVM_IF(ps == NULL, false, "Predict Search Data is NULL");
+       D_MSG_RETVM_IF(ps->ct_list, false, "Predict Search list is already exist");
+       D_MSG_RETVM_IF(ps->state == COMPOSER_PREDICTSEARCH_END, false, "Predict Search state END");
+
+       contacts_query_h query = NULL;
+       contacts_filter_h filter = NULL;
+       int ct_err = CONTACTS_ERROR_NONE;
+       unsigned int list_count = 0;
+
+       /*First Load contact search list about name or number */
+       if (ps->state == COMPOSER_PREDICTSEARCH_NONE) {
+               /* get list from person name */
+               contacts_query_create(_contacts_person_number._uri, &query);
+               contacts_filter_create(_contacts_person_number._uri, &filter);
+               contacts_filter_add_str(filter, _contacts_person_number.display_name, CONTACTS_MATCH_CONTAINS, ps->txt_ps_keyword);
+               contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR);
+               contacts_filter_add_str(filter, _contacts_person_number.number, CONTACTS_MATCH_CONTAINS, ps->txt_ps_keyword);
+               contacts_query_set_filter(query, filter);
+               ct_err = contacts_db_get_records_with_query(query, 0, 0, &ps->ct_list);
+               contacts_filter_destroy(filter);
+               contacts_query_destroy(query);
+               filter = NULL;
+               query = NULL;
+
+               if (ct_err == CONTACTS_ERROR_NONE) {
+                       contacts_list_get_count(ps->ct_list, &list_count);
+                       if (!list_count) {
+                               D_MSG("There is no contact name or number data");
+                               contacts_list_destroy(ps->ct_list, true);
+                               ps->ct_list = NULL;
+                       } else {
+                               ps->state = COMPOSER_PREDICTSEARCH_NAME_OR_NUMBER;
+                               D_MSG("Get Contact NAME or NUMBER List SUCCESS count = %d", list_count);
+                               return true;
+                       }
+               } else {
+                       D_EMSG("contacts_db_get_records_with_query is failed err = %x", ct_err);
+               }
+       }
+
+       /*Second Load contact search list about name or email*/
+       if (ps->state < COMPOSER_PREDICTSEARCH_NAME_OR_EMAIL) {
+               /* get list from person email */
+               contacts_query_create(_contacts_person_email._uri, &query);
+               contacts_filter_create(_contacts_person_email._uri, &filter);
+               contacts_filter_add_str(filter, _contacts_person_email.display_name, CONTACTS_MATCH_CONTAINS, ps->txt_ps_keyword);
+               contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR);
+               contacts_filter_add_str(filter, _contacts_person_email.email, CONTACTS_MATCH_CONTAINS, ps->txt_ps_keyword);
+               contacts_query_set_filter(query, filter);
+               ct_err = contacts_db_get_records_with_query(query, 0, 0, &ps->ct_list);
+               contacts_filter_destroy(filter);
+               contacts_query_destroy(query);
+               filter = NULL;
+               query = NULL;
+
+               if (ct_err == CONTACTS_ERROR_NONE) {
+                       contacts_list_get_count(ps->ct_list, &list_count);
+                       if (!list_count) {
+                               D_MSG("There is no contact name or email data");
+                               contacts_list_destroy(ps->ct_list, true);
+                               ps->ct_list = NULL;
+                       } else {
+                               ps->state = COMPOSER_PREDICTSEARCH_NAME_OR_EMAIL;
+                               D_MSG("Get Contact NAME or EMAIL List SUCCESS count = %d", list_count);
+                               return true;
+                       }
+               } else {
+                       D_EMSG("contacts_db_get_records_with_query is failed err = %d", ct_err);
+               }
+       }
+       /*Load contact search list about log*/
+       if (IsValidNumber(ps->txt_ps_keyword) == EINA_TRUE) {
+               if (ps->state < COMPOSER_PREDICTSEARCH_LOG) {
+                       /* get log list from address */
+                       contacts_query_create(_contacts_person_phone_log._uri, &query);
+                       contacts_filter_create(_contacts_person_phone_log._uri, &filter);
+                       contacts_filter_add_str(filter, _contacts_person_phone_log.address, CONTACTS_MATCH_CONTAINS, ps->txt_ps_keyword);
+                       contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND);
+                       contacts_filter_add_int(filter, _contacts_person_phone_log.person_id, CONTACTS_MATCH_NONE, 0);
+                       contacts_query_set_filter(query, filter);
+
+                       ct_err = contacts_db_get_records_with_query(query, 0, 0, &ps->ct_list);
+                       contacts_filter_destroy(filter);
+                       contacts_query_destroy(query);
+                       filter = NULL;
+                       query = NULL;
+
+                       if (ct_err == CONTACTS_ERROR_NONE) {
+                               contacts_list_get_count(ps->ct_list, &list_count);
+                               if (!list_count) {
+                                       D_MSG("There is no phone log data");
+                                       contacts_list_destroy(ps->ct_list, true);
+                                       ps->ct_list = NULL;
+                               } else {
+                                       ps->state = COMPOSER_PREDICTSEARCH_LOG;
+                                       D_MSG("Get LOG List SUCCESS count = %d", list_count);
+                                       return true;
+                               }
+                       } else {
+                               D_EMSG("contacts_db_get_records_with_query is failed err = %d", ct_err);
+                       }
+               }
+       }
+
+       D_EMSG("Search Data is NOT exist")
+       ps->state = COMPOSER_PREDICTSEARCH_END;
+       ps->ct_list = NULL;
+
+       return false;
+}
+
+static int __predictsearch_genlist_item_append(PREDICTSEARCH_S *ps, const int req_count)
+{
+       D_MSG_RETVM_IF(ps == NULL, 0, "Predict Search Data is NULL");
+       D_MSG_RETVM_IF(ps->ct_list == NULL, 0, "Predict Search List is NULL");
+
+       RECIPIENT_ITEM_S *ct_item = NULL;
+       Evas_Object *genlist = ps->glist_ps;
+       int i = 0;
+       int ct_index = 0;
+       int ct_ret = CONTACTS_ERROR_NONE;
+       char *recipient = NULL;
+       char *display = NULL;
+
+       if (ps->state < COMPOSER_PREDICTSEARCH_NAME_OR_NUMBER || ps->state > COMPOSER_PREDICTSEARCH_LOG) {
+               ps->state = COMPOSER_PREDICTSEARCH_END;
+               D_MSG("Predict State is END");
+               return i;
+       }
+
+       while (CONTACTS_ERROR_NONE == ct_ret) {
+               contacts_record_h ct_record = NULL;
+               contacts_list_get_current_record_p(ps->ct_list, &ct_record);
+
+               if (ct_record) {
+                       if (ps->state == COMPOSER_PREDICTSEARCH_LOG) {
+                               contacts_record_get_str_p(ct_record, _contacts_person_phone_log.address, &recipient);
+                               if (recipient && *recipient) {
+                                       ct_item = (RECIPIENT_ITEM_S *)calloc(1, sizeof(RECIPIENT_ITEM_S));
+                                       strncpy(ct_item->recipient, (char *)recipient, COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX);
+                                       elm_genlist_item_append(genlist, &ps->itc_1line, ct_item, NULL, ELM_GENLIST_ITEM_NONE, __predictsearch_sel, ps->cd);
+                                       ps->count++;
+                               }
+                       } else {
+                               if (ps->state == COMPOSER_PREDICTSEARCH_NAME_OR_EMAIL) {
+                                       contacts_record_get_int(ct_record, _contacts_person_email.person_id, &ct_index);
+                                       contacts_record_get_str_p(ct_record, _contacts_person_email.email, &recipient);
+                                       contacts_record_get_str_p(ct_record, _contacts_person_email.display_name, &display);
+                               } else {
+                                       contacts_record_get_int(ct_record, _contacts_person_number.person_id, &ct_index);
+                                       contacts_record_get_str_p(ct_record, _contacts_person_number.number, &recipient);
+                                       contacts_record_get_str_p(ct_record, _contacts_person_number.display_name, &display);
+                               }
+
+                               if ((ct_index > 0) && recipient) {
+                                       ct_item = (RECIPIENT_ITEM_S *)calloc(1, sizeof(RECIPIENT_ITEM_S));
+                                       ct_item->index = ct_index;
+
+                                       strncpy(ct_item->recipient, recipient, COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX);
+
+                                       if (display)
+                                               strncpy(ct_item->display_name, display, COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX);
+
+                                       elm_genlist_item_append(genlist, &ps->itc_2line, ct_item, NULL, ELM_GENLIST_ITEM_NONE, __predictsearch_sel, ps->cd);
+                                       ps->count++;
+                               } else {
+                                       D_MSG("Waring Search result has not contact index or recipient");
+                               }
+                       }
+               } else {
+                       D_EMSG("ct_record is NULL");
+               }
+
+               i++;
+
+               if (req_count > 0 && i == req_count)
+                       return i;
+
+               ct_ret = contacts_list_next(ps->ct_list);
+       }
+
+       D_MSG("ct_ret = %d, i = %d, req_count = %d", ct_ret, i, req_count);
+
+       if (CONTACTS_ERROR_NONE != ct_ret) {
+               contacts_list_destroy(ps->ct_list, true);
+               ps->ct_list = NULL;
+       }
+
+       return i;
+}
+
+static void  __predictsearch_list_append(PREDICTSEARCH_S *ps, int req_count)
+{
+       int addcount = 0;
+       int retcount = 0;
+       bool bLoad;
+
+       if (ps->ct_list == NULL || ps->state == COMPOSER_PREDICTSEARCH_END) {
+               D_EMSG("return ps->ct_list = %d", ps->ct_list);
+               return;
+       }
+
+       while (addcount < req_count) {
+               retcount = __predictsearch_genlist_item_append(ps, req_count - addcount);
+               if (retcount <= 0)
+                       return;
+
+               addcount += retcount;
+
+               if (ps->state == COMPOSER_PREDICTSEARCH_END) {
+                       D_MSG("PredictSearchList append Done");
+                       return;
+               }
+
+               if (ps->ct_list == NULL) {
+                       bLoad = __predictsearch_iterate_load(ps);
+                       if (bLoad == false)
+                               return;
+               }
+       }
+}
+
+Eina_Bool __predictsearch_idler_process(void *data)
+{
+       D_MSG_RETVM_IF(data == NULL, EINA_FALSE, "Predict Search Data is NULL");
+
+       PREDICTSEARCH_S *ps = (PREDICTSEARCH_S *)data;
+
+       __predictsearch_list_append(ps, COMPOSER_PSLIST_COUNT_AT_TIME);
+
+       if (ps->state == COMPOSER_PREDICTSEARCH_END || ps->ct_list == NULL) {
+               ps->idler_ps = NULL;
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+Eina_Bool __predictsearch_timer_process(void *data)
+{
+       D_MSG_RETVM_IF(data == NULL, ECORE_CALLBACK_CANCEL, "Predict Search Data is NULL");
+       PREDICTSEARCH_S *ps = data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = ps->cd;
+       D_MSG_RETVM_IF(cd == NULL, ECORE_CALLBACK_CANCEL, "Composer Data is NULL");
+
+       ps->timer_ps = NULL;
+
+       /*Check req string with predict search keyword*/
+       if (strlen(ps->txt_ps_reqkeyword) && !strcmp(ps->txt_ps_reqkeyword, ps->txt_ps_keyword)){
+               D_MSG("SAME REQUEST KEYWORD request string %s", ps->txt_ps_reqkeyword);
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       /*clear and reset predictsearch struct*/
+       msg_ui_composer_predictsearch_clear(cd);
+
+       /*change ps keyword*/
+       strncpy(ps->txt_ps_keyword, ps->txt_ps_reqkeyword, sizeof(ps->txt_ps_keyword)-1);
+       D_MSG("Predict Search Sting Update [%s]", ps->txt_ps_keyword);
+
+       /*Search List Load & show*/
+       if (__predictsearch_iterate_load(ps) == true) {
+               __predictsearch_list_append(ps, COMPOSER_PSLIST_COUNT_AT_TIME);
+
+               if (ps->count > 0) {
+                       __predictsearch_show(ps);
+
+                       if (ps->state != COMPOSER_PREDICTSEARCH_END)
+                               ps->idler_ps = ecore_idler_add(__predictsearch_idler_process, ps);
+
+               } else {
+                       __predictsearch_hide(ps);
+               }
+       } else {
+               __predictsearch_hide(ps);
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+void msg_ui_composer_predictsearch_request(MSG_COMPOSER_VIEW_DATA_S *cd, const char *str)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+       D_MSG_RETM_IF(cd->predictsearch == NULL, "PredictSearch Data is Invalid");
+
+       PREDICTSEARCH_S *ps = cd->predictsearch;
+
+       if (str && strlen(str) > 0) {
+
+               /*changed request string of predict search*/
+               bzero(ps->txt_ps_reqkeyword, sizeof(ps->txt_ps_reqkeyword)-1);
+               strncpy(ps->txt_ps_reqkeyword, str, sizeof(ps->txt_ps_reqkeyword)-1);
+
+               if (ps->timer_ps) {
+                       ecore_timer_del(ps->timer_ps);
+                       ps->timer_ps = NULL;
+               }
+
+               ps->timer_ps = ecore_timer_add(COMPOSER_PS_TIMER, __predictsearch_timer_process, ps);
+       } else {
+               msg_ui_composer_predictsearch_clear(cd);
+               __predictsearch_hide(ps);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_predictsearch_clear(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+       D_MSG_RETM_IF(cd->predictsearch == NULL, "PredictSearch Data is Invalid");
+
+       PREDICTSEARCH_S *ps = cd->predictsearch;
+       if (ps->timer_ps) {
+               ecore_timer_del(ps->timer_ps);
+               ps->timer_ps = NULL;
+       }
+
+       if (ps->idler_ps) {
+               ecore_idler_del(ps->idler_ps);
+               ps->idler_ps = NULL;
+       }
+
+       if (ps->ct_list) {
+               contacts_list_destroy(ps->ct_list, true);
+               ps->ct_list = NULL;
+       }
+
+       if (ps->glist_ps)
+               elm_genlist_clear(ps->glist_ps);
+
+       bzero(ps->txt_ps_keyword, sizeof(ps->txt_ps_keyword));
+
+       ps->state = COMPOSER_PREDICTSEARCH_NONE;
+
+       ps->count = 0;
+
+       __predictsearch_hide(ps);
+
+       D_LEAVE;
+}
diff --git a/composer/src/ui-composer/msg-ui-composer-recipient-callback.c b/composer/src/ui-composer/msg-ui-composer-recipient-callback.c
new file mode 100755 (executable)
index 0000000..e0087e7
--- /dev/null
@@ -0,0 +1,852 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-external.h"
+#include "msg-ui-composer-predictsearch.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-recipient-callback.h"
+#include "msg-ui-composer-attachment.h"
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-main.h"      /*for page duration, it should be removed if more option concept is changed*/
+
+/*==================================================================================================
+*                                                              FUNCTION IMPLEMENTATIONS
+*==================================================================================================*/
+/*change number popup cb*/
+void msg_ui_recipient_change_number_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       MSGC_EVAS_OBJECT_DEL(rd->popup_change_number);
+       D_LEAVE;
+}
+
+void msg_ui_recipient_change_number_popup_list_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "recipient data Data is NULL");
+
+       RECIPIENT_ITEM_S *r_item = evas_object_data_get(obj, "selected_item");;
+       D_MSG_RETM_IF(r_item == NULL, "Recipient Data is NULL");
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       elm_genlist_item_selected_set(item, EINA_FALSE);
+
+       CONTACT_ITEM_S *ct_item = (CONTACT_ITEM_S *)elm_object_item_data_get(item);
+       D_MSG_RETM_IF(ct_item == NULL, "ct_item is NULL");
+
+       if (g_strcmp0(r_item->recipient, ct_item->recipient) == 0) {
+               D_MSG("same recipient %s", ct_item->recipient);
+               MSGC_EVAS_OBJECT_DEL(rd->popup_change_number);
+               return;
+       }
+
+       if (COMPOSER_RETURN_RECIPIENT_DUPLICATE == msg_ui_composer_recipient_duplicate_check(cd->recipient, ct_item->recipient)) {
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_DUP_RECP);
+       } else {
+               memset(r_item->recipient, 0x00, sizeof(r_item->recipient));
+               strncpy(r_item->recipient, ct_item->recipient, sizeof(r_item->recipient) - 1);
+               r_item->type = msg_ui_composer_recipient_type_get(r_item->recipient);
+               msg_ui_composer_message_type_check_and_change(cd);
+       }
+
+       MSGC_EVAS_OBJECT_DEL(rd->popup_change_number);
+       return;
+}
+
+static char *__contact_type_string_get(int type, int contact_type)
+{
+       static char return_string[DEF_BUF_LEN + 1] = { 0, };
+       memset(return_string, 0, DEF_BUF_LEN + 1);
+
+       if (type == COMPOSER_ADDR_TYPE_NUMBER) {
+               switch (contact_type) {
+               case CONTACTS_NUMBER_TYPE_HOME:
+                       strncpy(return_string, _SYSSTR("IDS_COM_BODY_HOME"), sizeof(return_string) - 1);
+                       break;
+               case CONTACTS_NUMBER_TYPE_WORK:
+                       strncpy(return_string, _SYSSTR("IDS_COM_BODY_WORK"), sizeof(return_string) - 1);
+                       break;
+               case CONTACTS_NUMBER_TYPE_CELL:
+                       strncpy(return_string, _SYSSTR("IDS_COM_BODY_MOBILE"), sizeof(return_string) - 1);
+                       break;
+               default:
+                       strncpy(return_string, _MSGSTR("IDS_MSGF_BODY_OTHER"), sizeof(return_string) - 1);
+                       break;
+               }
+       } else if (type == COMPOSER_ADDR_TYPE_EMAIL) {
+               switch (contact_type) {
+               case CONTACTS_EMAIL_TYPE_HOME:
+                       strncpy(return_string, _SYSSTR("IDS_COM_BODY_HOME"), sizeof(return_string) - 1);
+                       break;
+               case CONTACTS_EMAIL_TYPE_WORK:
+                       strncpy(return_string, _SYSSTR("IDS_COM_BODY_WORK"), sizeof(return_string) - 1);
+                       break;
+               default:
+                       strncpy(return_string, _MSGSTR("IDS_MSGF_BODY_OTHER"), sizeof(return_string) - 1);
+                       break;
+               }
+       } else {
+               D_EMSG("Invalid number type !!!");
+               strncpy(return_string, _MSGSTR("IDS_MSGF_BODY_OTHER"), sizeof(return_string) - 1);
+       }
+
+       return return_string;
+}
+
+char *msg_ui_recipient_change_number_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_MSG_RETVM_IF(data == NULL, NULL, "data param is NULL");
+       CONTACT_ITEM_S *ct_item = (CONTACT_ITEM_S *)data;
+
+       if (!strcmp(part, "elm.text.1")) {
+               return strdup(ct_item->recipient);
+       } else {
+               return strdup(__contact_type_string_get(ct_item->type, ct_item->contact_type));
+       }
+}
+
+void msg_ui_recipient_change_number_gl_del(void *data, Evas_Object *obj)
+{
+       D_MSG_RETM_IF(data == NULL, "RECIPIENT_ITEM_S data is NULL");
+       CONTACT_ITEM_S *ct_item = (CONTACT_ITEM_S *)data;
+
+       if (ct_item)
+               free(ct_item);
+}
+
+/*select popup cb*/
+void msg_ui_recipient_select_popup_list_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       elm_list_item_selected_set(item, EINA_FALSE);
+
+       elm_multibuttonentry_item_selected_set(rd->sel_mbe_item, EINA_FALSE);
+
+       char *label = (char *)elm_object_item_text_get(item);
+
+       if (cd->isAppControl) {
+               if (!strcmp(label, _SYSSTR("IDS_COM_OPT_DELETE"))) {
+                       msg_ui_composer_recipient_selected_delete(cd);
+               } else if (!strcmp(label,_SYSSTR("IDS_COM_BODY_EDIT"))) {
+                       msg_ui_composer_recipient_selected_edit(cd);
+               } else {
+                       D_EMSG("Invalid list type!!");
+               }
+       } else {
+               if (!strcmp(label, _SYSSTR("IDS_COM_OPT_DELETE"))) {
+                       msg_ui_composer_recipient_selected_delete(cd);
+               } else if (!strcmp(label,_SYSSTR("IDS_COM_BODY_EDIT"))) {
+                       msg_ui_composer_recipient_selected_edit(cd);
+               } else if (!strcmp(label, _MSGSTR("IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"))) {
+                       msg_ui_composer_recipient_create_change_number_popup(cd);
+               } else if (!strcmp(label, _MSGSTR("IDS_MSGC_OPT_VIEW_CONTACT"))) {
+                       RECIPIENT_ITEM_S *r_item = msg_ui_composer_recipient_selected_item_data_get(cd);
+                       msg_ui_composer_launch_contact_detail_ug(cd, r_item->index);
+
+                       /* set focus to back_btn to resolve invalid focus tree issue */
+                       elm_object_focus_set(cd->back_btn, EINA_TRUE);
+               } else if (!strcmp(label, _SYSSTR("IDS_COM_OPT_ADD_TO_CONTACTS"))) {
+                       RECIPIENT_ITEM_S *r_item = msg_ui_composer_recipient_selected_item_data_get(cd);
+                       int type = MSG_CT_UG_REQUEST_UPDATE_WITH_NUM;
+
+                       if (IsVaildEmailAddress(r_item->recipient))
+                               type = MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL;
+
+                       msg_ui_composer_launch_contact_list_ug(cd, type, r_item->recipient);
+
+                       /* set focus to back_btn to resolve invalid focus tree issue */
+                       elm_object_focus_set(cd->back_btn, EINA_TRUE);
+               } else {
+                       D_EMSG("Invalid list type!!");
+               }
+       }
+
+       rd->sel_r_item = NULL;
+       rd->sel_mbe_item = NULL;
+       MSGC_EVAS_OBJECT_DEL(rd->popup_selected);
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_select_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       RECIPIENT_S *rd = cd->recipient;
+
+       elm_multibuttonentry_item_selected_set(rd->sel_mbe_item, EINA_FALSE);
+       rd->sel_r_item = NULL;
+       rd->sel_mbe_item = NULL;
+       MSGC_EVAS_OBJECT_DEL(rd->popup_selected);
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_contact_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       /*set focus to back_btn to resolve invalid focus tree issue regarding contact_btn show/hide*/
+       elm_object_focus_set(cd->back_btn, EINA_TRUE);
+       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_CONTACT_PHONEUI, NULL);
+
+       D_LEAVE;
+}
+
+/* multibuttonentry cb */
+void msg_ui_recipient_mbe_focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = NULL;
+       RECIPIENT_S *rd = NULL;
+       PREDICTSEARCH_S *ps = NULL;
+
+       cd = data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       ps = cd->predictsearch;
+       D_MSG_RETM_IF(rd == NULL, "Predict Data is NULL");
+
+       msg_ui_composer_last_focused_entry_set(cd, obj);
+       /* it is added to prevent unfocused_cb of entry on mbe */
+       Elm_Object_Item *item = elm_multibuttonentry_selected_item_get(obj);
+       elm_multibuttonentry_item_selected_set(item, EINA_FALSE);
+
+       elm_multibuttonentry_expanded_set(obj, EINA_TRUE);
+
+       if (!cd->isAppControl || !cd->isEmulator)
+               edje_object_signal_emit(_EDJ(rd->ly_to), "show.ct_button", "*");
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_mbe_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       RECIPIENT_S *rd = cd->recipient;
+
+       /*If it exist Selected item popup, then it should not shrink mode set == 1*/
+       if (msg_ui_composer_popup_exist(cd) == EINA_TRUE)
+               return;
+
+       elm_multibuttonentry_expanded_set(obj, EINA_FALSE);
+
+       if (!cd->isAppControl || !cd->isEmulator)
+               edje_object_signal_emit(_EDJ(rd->ly_to), "hide.ct_button", "*");
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_mbe_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       int attach_count = msg_ui_composer_get_attach_count(cd);
+
+       if (attach_count > 1)
+               msg_ui_composer_contract_attach_list(cd);
+
+       if(msg_ui_composer_popup_exist(cd) == EINA_TRUE) {
+               msg_ui_composer_popup_focus(cd);
+               return;
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_mbe_item_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       D_MSG_RETM_IF(item == NULL, "Selected Object Item is NULL");
+
+       RECIPIENT_ITEM_S *r_item;
+
+       r_item = elm_object_item_data_get(item);
+       if (r_item == NULL) {
+               D_MSG("There are no item data");
+               return;
+       }
+
+       rd->sel_r_item = r_item;
+       rd->sel_mbe_item = item;
+       msg_ui_composer_last_focused_entry_set(cd, rd->mbe);
+       msg_ui_composer_recipient_select_popup_create(cd);
+
+       D_LEAVE;
+}
+
+Eina_Bool msg_ui_recipient_mbe_item_verify_cb(Evas_Object *obj, const char *item_label, const void *item_data, const void *data)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(item_label == NULL, EINA_FALSE, "item_label is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETVM_IF(cd == NULL, EINA_FALSE, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETVM_IF(rd == NULL, EINA_FALSE, "Recipient Data is NULL");
+
+       RECIPIENT_ITEM_S *r_item = NULL;
+
+       if (cd->state == COMPOSER_STATE_TYPE_PAUSE)
+               return EINA_FALSE;
+
+       msg_ui_composer_recipient_addr_type_set(rd, COMPOSER_RECP_ADDR_NONE);
+
+       /*Check recipient count*/
+       int r_count = msg_ui_composer_recipient_count_get(rd);
+       if (r_count >= COMPOSER_RECIPIENT_COUNT_MAX) {
+               D_EMSG("recipient is over max count %d ", COMPOSER_RECIPIENT_COUNT_MAX);
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_COUNT_MAX);
+               msg_ui_composer_recipient_entry_text_set(rd, "");
+               return EINA_FALSE;
+       }
+
+       if (item_data) {
+               D_MSG("This is a checked item before append");
+               return EINA_TRUE;
+       }
+
+       if (msg_ui_composer_recipient_duplicate_check(cd->recipient, item_label) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+               D_EMSG("Input recipient is duplication");
+               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_DUP_RECP);
+               msg_ui_composer_recipient_entry_text_set(rd, "");
+               return EINA_FALSE;
+       }
+
+       r_item = msg_ui_composer_recipient_item_make_by_string(item_label);
+       if (r_item == NULL)
+               return EINA_FALSE;
+
+       if (r_item->type == COMPOSER_RECP_ADDR_INVALID) {
+               D_EMSG("recipient is invalid recipient");
+               msg_ui_composer_recipient_addr_type_set(rd, COMPOSER_RECP_ADDR_INVALID);
+
+               if (rd->notify_popup_idler) {
+                       ecore_idler_del(rd->notify_popup_idler);
+                       rd->notify_popup_idler = NULL;
+               }
+               rd->notify_popup_idler = ecore_idler_add(msg_ui_composer_recipient_show_invalid_address_popup, cd);
+
+               g_free(r_item);
+               return EINA_FALSE;
+       }
+
+       g_free(r_item);
+       D_LEAVE;
+       return EINA_TRUE;
+}
+
+void msg_ui_recipient_mbe_item_added_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       D_MSG_RETM_IF(item == NULL, "Mbe item is NULL");
+
+       RECIPIENT_ITEM_S *recipient_item = NULL;
+
+       if (elm_object_item_data_get(item) == NULL) {
+               char *bt_label = elm_entry_markup_to_utf8(elm_object_item_text_get(item));
+               if (bt_label) {
+                       recipient_item = msg_ui_composer_recipient_item_make_by_string(bt_label);
+                       if (recipient_item) {
+                               elm_object_item_text_set(item, recipient_item->display_name);
+                               elm_object_item_data_set(item, recipient_item);
+                       } else {
+                               elm_object_item_del(item);
+                       }
+
+                       g_free(bt_label);
+               } else {
+                       D_EMSG("button label is null");
+               }
+       } else {
+               recipient_item = elm_object_item_data_get(item);
+               D_MSG(" recipient_item index [%d], recipient_item recipient [%s], recipient_item display_name [%s], recipient_item->image_path [%s]", recipient_item->index, recipient_item->recipient, recipient_item->display_name, recipient_item->image_path);
+       }
+
+       if (recipient_item) {
+               if (recipient_item->type == COMPOSER_RECP_ADDR_VALID_NUMBER || recipient_item->type == COMPOSER_RECP_ADDR_VALID_EMAIL) {
+                       msg_ui_composer_message_type_check_and_change(cd);
+               } else {
+                       D_EMSG("Invalid recipient added!!");
+               }
+       } else {
+               D_EMSG("No recipient item");
+       }
+}
+
+void msg_ui_recipient_mbe_item_deleted_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_ITEM_S *recipient_item = elm_object_item_data_get(event_info);
+       D_MSG_RETM_IF(recipient_item == NULL,"reicpient item is NULL");
+
+       D_MSG("===== START of recipient_item free =====");
+       D_MSG("recipient_item index [%d]", recipient_item->index);
+       D_MSG("recipient_item recipient [%s]", recipient_item->recipient);
+       D_MSG("recipient_item display_name [%s]", recipient_item->display_name);
+       D_MSG("===== END of recipient_item free =====");
+       g_free(recipient_item);
+
+       msg_ui_composer_message_type_check_and_change(cd);
+       D_LEAVE;
+}
+
+static Eina_Bool __move_to_scroll_end(void *data)
+{
+       D_ENTER;
+       RECIPIENT_S *rd = (RECIPIENT_S *)data;
+       D_MSG_RETVM_IF(rd == NULL, EINA_FALSE, "recipient data is NULL");
+
+       rd->scroll_down_idler = NULL;
+
+       Evas_Coord scr_w;
+       Evas_Coord scr_h;
+       Evas_Coord box_h;
+       evas_render(evas_object_evas_get(rd->bx_main));
+
+       elm_scroller_region_get(rd->sc, NULL, NULL, &scr_w, &scr_h);
+       D_PRINT("scroller region w = %d, h = %d ", scr_w, scr_h);
+
+       evas_object_geometry_get(rd->mbe, NULL, NULL, NULL, &box_h);
+       D_PRINT("mbe geometry h = %d ", box_h);
+
+       elm_scroller_region_show(rd->sc, 0, box_h - scr_h, scr_w, scr_h);
+       D_PRINT("scroller region show x = %d, y = %d, w = %d, h = %d ", 0, box_h - scr_h, scr_w, scr_h);
+
+       D_LEAVE;
+       return EINA_FALSE;
+}
+
+void msg_ui_recipient_mbe_expanded_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       RECIPIENT_S *rd = (RECIPIENT_S *)data;
+       D_MSG_RETM_IF(rd == NULL, "recipient data is NULL");
+
+       if (rd->scroll_down_idler) {
+               ecore_idler_del(rd->scroll_down_idler);
+               rd->scroll_down_idler = NULL;
+       }
+
+       int r_count = msg_ui_composer_recipient_count_get(rd);
+       if (r_count > 1)
+               rd->scroll_down_idler = ecore_idler_add(__move_to_scroll_end, rd);
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_mbe_contracted_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       RECIPIENT_S *rd = (RECIPIENT_S *)data;
+       D_MSG_RETM_IF(rd == NULL, "recipient data is NULL");
+
+       if (rd->scroll_down_idler) {
+               ecore_idler_del(rd->scroll_down_idler);
+               rd->scroll_down_idler = NULL;
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_mbe_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL,"Mbe object is NULL point");
+
+       RECIPIENT_ITEM_S *r_item;
+       Elm_Object_Item *mbe_item = elm_multibuttonentry_first_item_get(obj);
+
+       D_MSG("===== START of mbe_items free =====");
+       while (mbe_item) {
+               r_item = elm_object_item_data_get(mbe_item);
+               if (r_item) {
+                       D_MSG("===== START of r_item free =====");
+                       D_MSG("r_item index [%d]", r_item->index);
+                       D_MSG("r_item recipient [%s]", r_item->recipient);
+                       D_MSG("r_item display_name [%s]", r_item->display_name);
+                       D_MSG("===== END of r_item free =====");
+                       g_free(r_item);
+               }
+
+               mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+       }
+       D_MSG("===== END of mbe_items free =====");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_recipient_process_delimiter_char(void *data, char *full_str, char **text, int type)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(full_str == NULL, "param is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       int full_str_len = strlen(full_str);
+       bool is_required_parsing = false;
+
+       if (full_str_len < 1) {
+               D_EMSG("full_str_len is %d", full_str_len);
+               return;
+       }
+
+       if (type == RECIPIENT_PARSING_TYPE_ENTER_KEY) { /*enter key case*/
+               is_required_parsing = true;
+       } else {
+               /* check last character is either ',' or ';' */
+               if (full_str[full_str_len - 1] == ',' || full_str[full_str_len - 1] == ';') {
+                       D_MSG("full_str [%s]", full_str);
+
+                       /* remove last ',' or ';' */
+                       full_str[full_str_len - 1] = '\0';
+                       --full_str_len;
+
+                       is_required_parsing = true;
+               }
+       }
+
+       if (is_required_parsing) {
+               /* parse full str with delimeter , ; */
+               gchar **split_str = NULL;
+               split_str = g_strsplit_set(full_str, ",;", -1);
+
+               if (split_str) {
+                       int count = g_strv_length(split_str);
+                       int i = 0;
+                       MSG_BOOL is_added = FALSE;
+                       MSG_BOOL is_count_max = FALSE;
+                       MSG_BOOL *is_used_list = NULL;
+
+                       D_MSG("splitted string count = %d", count);
+
+                       is_used_list = (MSG_BOOL *)calloc(count, sizeof(MSG_BOOL));
+
+                       if (is_used_list) {
+                               for (i = 0; i < count; i++) {
+                                       D_MSG("%dth string is [%s]", i+1, split_str[i]);
+
+                                       if (split_str[i] && strlen(split_str[i])) {
+                                               if (msg_ui_composer_recipient_vaild_check(split_str[i]) == EINA_TRUE) {
+                                                       /*Check recipient count*/
+                                                       int r_count = msg_ui_composer_recipient_count_get(rd);
+                                                       if (r_count >= COMPOSER_RECIPIENT_COUNT_MAX) {
+                                                               D_EMSG("recipient is over max count %d ", COMPOSER_RECIPIENT_COUNT_MAX);
+                                                               is_count_max = TRUE;
+                                                               is_added = TRUE;
+                                                               is_used_list[i] = TRUE;
+                                                               continue;
+                                                       }
+
+                                                       if (msg_ui_composer_recipient_duplicate_check(rd, split_str[i]) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+                                                               D_EMSG("Input recipient is duplicated");
+                                                               is_added = TRUE;
+                                                               is_used_list[i] = TRUE;
+                                                               continue;
+                                                       }
+
+                                                       if (msg_ui_composer_recipient_append(cd->recipient, split_str[i], 0) == COMPOSER_RETURN_SUCCESS) {
+                                                               is_added = TRUE;
+                                                               is_used_list[i] = TRUE;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               if (is_count_max)
+                                       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_COUNT_MAX);
+
+                               /* re-assemble string */
+                               if (is_added) {
+                                       char *re_assembled_str = NULL;
+
+                                       re_assembled_str = (char *)calloc(full_str_len + 1, sizeof(char));
+
+                                       if (re_assembled_str) {
+                                               for (i = 0; i < count - 1; i++) {
+                                                       if (split_str[i] && strlen(split_str[i])) {
+                                                               if (!is_used_list[i]) {
+                                                                       strncat(re_assembled_str, split_str[i], strlen(split_str[i]));
+                                                                       strncat(re_assembled_str, ",", 1);
+                                                               }
+                                                       } else {
+                                                               strncat(re_assembled_str, ",", 1);
+                                                       }
+                                               }
+                                               /* append last parsted string */
+                                               if (split_str[i] && strlen(split_str[i])) {
+                                                       if (!is_used_list[i])
+                                                               strncat(re_assembled_str, split_str[i], strlen(split_str[i]));
+                                               }
+
+                                               /* remove ',' ';' of last position */
+                                               int str_len = strlen(re_assembled_str);
+                                               if (str_len > 1) {
+                                                       while (re_assembled_str[str_len - 1] == ',' || re_assembled_str[str_len - 1] == ';') {
+                                                               re_assembled_str[str_len - 1] = '\0';
+                                                               --str_len;
+
+                                                               if (str_len == 0)
+                                                                       break;
+                                                       }
+                                               }
+
+                                               D_MSG("reassembeld str = [%s]", re_assembled_str);
+                                               /*set re-assembed str to text */
+                                               Evas_Object *entry = elm_multibuttonentry_entry_get(rd->mbe);
+
+                                               if (type == RECIPIENT_PARSING_TYPE_DELETE_CHAR ||
+                                                       type == RECIPIENT_PARSING_TYPE_ENTER_KEY) {     /* entry_changed_cb | enter key case */
+                                                       elm_entry_entry_set(entry, re_assembled_str);
+                                                       elm_entry_cursor_end_set(entry);
+
+                                                       if (strlen(re_assembled_str)) {
+                                                               rd->is_required_address_popup = true;
+                                                       }
+                                               } else {        /* entry_filter_cb */
+                                                       elm_entry_entry_set(entry, "");
+                                                       free(*text);
+
+                                                       if (strlen(re_assembled_str)) {
+                                                               rd->is_required_address_popup = true;
+                                                               *text = strdup(re_assembled_str);
+                                                       } else {
+                                                               *text = NULL;
+                                                       }
+                                               }
+
+                                               free(re_assembled_str);
+                                       } else {
+                                               D_EMSG("calloc is failed");
+                                       }
+                               }
+
+                               free(is_used_list);
+                       } else {
+                               D_EMSG("calloc is failed");
+                       }
+
+                       g_strfreev(split_str);
+               } else {
+                       D_EMSG("g_strsplit_set is failed");
+               }
+       }
+}
+
+void msg_ui_recipient_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       char *recipient_str;
+       static char saved_str[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX + 1] = { 0, };
+
+       /* show invalid address popup, after either inserting text(keypad, paste) or deleting text  */
+       if (rd->is_required_address_popup) {
+               msg_ui_composer_recipient_addr_type_set(rd, COMPOSER_RECP_ADDR_INVALID);
+
+               if (rd->notify_popup_idler) {
+                       ecore_idler_del(rd->notify_popup_idler);
+                       rd->notify_popup_idler = NULL;
+               }
+               rd->notify_popup_idler = ecore_idler_add(msg_ui_composer_recipient_show_invalid_address_popup, cd);
+
+               rd->is_required_address_popup = false;
+       }
+
+       recipient_str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
+       if (recipient_str == NULL)
+               return;
+
+       COMPOSER_RECP_ADDR_E addr_type = COMPOSER_RECP_ADDR_NONE;
+
+       if (recipient_str && strlen(recipient_str)) {
+               addr_type = msg_ui_composer_recipient_type_get(recipient_str);
+
+               int str_len = strlen(recipient_str);
+
+               if (str_len > 1) {
+                       /* remove ',' ';' character of last position, it is used for deleting character case  */
+                       if (recipient_str[str_len - 1] == ',' || recipient_str[str_len - 1] == ';') {
+                               __msg_ui_recipient_process_delimiter_char(cd, recipient_str, NULL, RECIPIENT_PARSING_TYPE_DELETE_CHAR);
+                               free(recipient_str);
+                               return;
+                       }
+               }
+       }
+
+       D_MSG("changed_str = %s", recipient_str);
+       D_MSG("saved_str = %s", saved_str);
+
+       msg_ui_composer_recipient_addr_type_set(rd, addr_type);
+       D_MSG("recipient is invalid recipient addr_type = %d", addr_type);
+
+       if (g_strcmp0(saved_str, recipient_str) == 0) {
+               D_MSG("It is same string before str(%s), current str(%s)", saved_str, recipient_str);
+               g_free(recipient_str);
+               return;
+       }
+
+       strncpy(saved_str, recipient_str, sizeof(saved_str) - 1);
+       saved_str[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX] = '\0';
+
+       if (strlen(recipient_str) > 0 ) {
+               msg_ui_composer_predictsearch_request(cd, recipient_str);
+       } else {
+               msg_ui_composer_predictsearch_clear(cd);
+       }
+
+       g_free(recipient_str);
+       D_LEAVE;
+}
+
+void msg_ui_recipient_entry_activated_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       char *recipient_str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
+       if (recipient_str == NULL)
+               return;
+
+       __msg_ui_recipient_process_delimiter_char(cd, recipient_str, NULL, RECIPIENT_PARSING_TYPE_ENTER_KEY);
+
+       free(recipient_str);
+
+       msg_ui_composer_body_focus_set(cd, 0);
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_entry_filter_cb(void *data, Evas_Object *entry, char **text)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(text == NULL || *text == NULL, "New Text is NULL");
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       const char *pre_str = NULL;
+       char *utf8_text = NULL;
+       gchar *full_str = NULL;
+
+       utf8_text  = elm_entry_markup_to_utf8(*text);
+       if (utf8_text) {
+               /* get previous entered str */
+               pre_str = elm_entry_entry_get(entry);
+
+               /* make full str */
+               if (pre_str)
+                       full_str = g_strconcat(pre_str, utf8_text, NULL);
+               else
+                       full_str = g_strdup(utf8_text);
+
+               if (full_str) {
+                       __msg_ui_recipient_process_delimiter_char(data, full_str, text, RECIPIENT_PARSING_TYPE_ADD_CHAR);
+                       g_free(full_str);
+               } else {
+                       D_EMSG("full_str is NULL");
+               }
+
+               free(utf8_text);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_recipient_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       RECIPIENT_S *rd = (RECIPIENT_S *)data;
+       D_MSG_RETM_IF(rd == NULL, "rd is NULL");
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)rd->cd;
+       Evas_Coord x = 0;
+       Evas_Coord y = 0;
+       Evas_Coord w = 0;
+       Evas_Coord h = 0;
+
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       D_MSG("recipient box x = %d, y = %d, w = %d, h = %d", x, y, w, h);
+       if (rd->recipient_h != h) {
+               rd->recipient_h = h;
+
+               if (cd->isclosed == false) {    /* evas_object_resize makes bs during closing composer*/
+                       Evas_Object *entry = elm_multibuttonentry_entry_get(rd->mbe);
+                       int keypad_h = msg_ui_composer_get_keypad_height(entry);
+
+                       msg_ui_composer_change_body_scroll_size(cd, keypad_h);
+               }
+       }
+
+       D_LEAVE;
+}
+
diff --git a/composer/src/ui-composer/msg-ui-composer-recipient.c b/composer/src/ui-composer/msg-ui-composer-recipient.c
new file mode 100755 (executable)
index 0000000..b0068b8
--- /dev/null
@@ -0,0 +1,1358 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* includes*/
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-recipient-callback.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-external.h"
+
+#define CONTACT_NAME_IS_NOT_SUPPORT
+/*==================================================================================================
+*                                                              FUNCTION IMPLEMENTATIONS
+*==================================================================================================*/
+void msg_ui_composer_recipient_create_change_number_popup(void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       Evas_Object *popup = NULL;
+       Evas_Object *genlist = NULL;
+       int ct_err = CONTACTS_ERROR_NONE;
+       int count = 0;
+       RECIPIENT_ITEM_S *r_item = NULL;
+       CONTACT_ITEM_S *ct_item = NULL;
+
+       contacts_list_h list = NULL;
+       contacts_query_h query = NULL;
+       contacts_filter_h filter = NULL;
+
+       r_item = msg_ui_composer_recipient_selected_item_data_get(cd);
+       D_MSG_RETM_IF(r_item == NULL, "Selected Data is NULL");
+       D_MSG_RETM_IF(r_item->index <= 0, "Selected index <= 0");
+
+       rd->change_number_itc.item_style = "2text.3";
+       rd->change_number_itc.func.text_get = msg_ui_recipient_change_number_gl_text_get;
+       rd->change_number_itc.func.content_get = NULL;
+       rd->change_number_itc.func.state_get = NULL;
+       rd->change_number_itc.func.del = msg_ui_recipient_change_number_gl_del;
+
+       genlist = elm_genlist_add(cd->main_window);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_data_set(genlist, "selected_item", r_item);
+
+       /* create query and get list for numbers */
+       contacts_query_create(_contacts_person_number._uri, &query);
+       contacts_filter_create(_contacts_person_number._uri, &filter);
+       contacts_filter_add_int(filter, _contacts_person_number.person_id, CONTACTS_MATCH_EXACTLY, r_item->index);
+       contacts_query_set_filter(query, filter);
+
+       ct_err = contacts_db_get_records_with_query(query, 0, 0, &list);
+       contacts_filter_destroy(filter);
+       contacts_query_destroy(query);
+       filter = NULL;
+       query = NULL;
+
+       if (ct_err != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_err);
+               contacts_list_destroy(list, true);
+               return;
+       }
+
+       while (CONTACTS_ERROR_NONE == ct_err) {
+               contacts_record_h ct_value = NULL;
+               int type;
+
+               contacts_list_get_current_record_p(list, &ct_value);
+
+               if (ct_value) {
+                       contacts_record_get_int(ct_value, _contacts_person_number.type, &type);
+
+                       if (type != CONTACTS_NUMBER_TYPE_ASSISTANT) {
+                               char *content = NULL;
+
+                               contacts_record_get_str_p(ct_value, _contacts_person_number.number, &content);
+                               D_MSG("[%d][%d]%s", r_item->index, type, content);
+
+                               if (content) {
+                                       if (strcmp(r_item->recipient, content)) {
+                                               ct_item = (CONTACT_ITEM_S *)calloc(1, sizeof(CONTACT_ITEM_S));
+                                               if (ct_item) {
+                                                       ct_item->type = COMPOSER_ADDR_TYPE_NUMBER;
+                                                       ct_item->contact_type = type;
+                                                       strncpy(ct_item->recipient, content, sizeof(ct_item->recipient) - 1);
+
+                                                       elm_genlist_item_append(genlist, &rd->change_number_itc, ct_item, NULL, ELM_GENLIST_ITEM_NONE, msg_ui_recipient_change_number_popup_list_clicked_cb, cd);
+
+                                                       count++;
+                                               } else {
+                                                       D_EMSG("calloc is failed");
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               ct_err = contacts_list_next(list);
+       }
+
+       contacts_list_destroy(list, true);
+       list = NULL;
+
+       /* create query and get list for emails */
+       contacts_query_create(_contacts_person_email._uri, &query);
+       contacts_filter_create(_contacts_person_email._uri, &filter);
+       contacts_filter_add_int(filter, _contacts_person_email.person_id, CONTACTS_MATCH_EXACTLY, r_item->index);
+       contacts_query_set_filter(query, filter);
+
+       ct_err = contacts_db_get_records_with_query(query, 0, 0, &list);
+       contacts_filter_destroy(filter);
+       contacts_query_destroy(query);
+
+       if (ct_err != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_err);
+               contacts_list_destroy(list, true);
+               return;
+       }
+
+       while (CONTACTS_ERROR_NONE == ct_err) {
+               contacts_record_h ct_value = NULL;
+               int type;
+
+               contacts_list_get_current_record_p(list, &ct_value);
+
+               if (ct_value) {
+                       char *content = NULL;
+
+                       contacts_record_get_int(ct_value, _contacts_person_email.type, &type);
+                       contacts_record_get_str_p(ct_value, _contacts_person_email.email, &content);
+
+                       D_MSG("[%d][%d]%s", r_item->index, type, content);
+
+                       if (content) {
+                               if (strcmp(r_item->recipient, content)) {
+                                       ct_item = (CONTACT_ITEM_S *)calloc(1, sizeof(CONTACT_ITEM_S));
+                                       if (ct_item) {
+                                               ct_item->type = COMPOSER_ADDR_TYPE_EMAIL;
+                                               ct_item->contact_type = type;
+                                               strncpy(ct_item->recipient, (char *)content, sizeof(ct_item->recipient) - 1);
+
+                                               elm_genlist_item_append(genlist, &rd->change_number_itc, ct_item, NULL, ELM_GENLIST_ITEM_NONE, msg_ui_recipient_change_number_popup_list_clicked_cb, cd);
+
+                                               count++;
+                                       } else {
+                                               D_EMSG("calloc is failed");
+                                       }
+                               }
+                       }
+               }
+
+               ct_err = contacts_list_next(list);
+       }
+
+       contacts_list_destroy(list, true);
+
+       if (count >= 5)
+               count = 4;
+
+       Evas_Object *box = elm_box_add(cd->main_window);
+       evas_object_size_hint_min_set(box, 0, MSGC_POPUP_GENLIST_H * count * elm_config_scale_get());
+       evas_object_show(genlist);
+       elm_box_pack_end(box, genlist);
+       popup = msg_ui_composer_list_popup_create(cd, _SYSSTR("IDS_COM_SK_SELECT"), box, "min_menustyle");
+
+       Evas_Object *btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, _SYSSTR("IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", msg_ui_recipient_change_number_popup_btn_clicked_cb, cd);
+
+       elm_object_focus_allow_set(popup, EINA_TRUE);
+       elm_object_focus_set(popup, EINA_TRUE);
+
+       rd->popup_change_number = popup;
+
+       D_LEAVE;
+}
+
+Eina_Bool msg_ui_composer_recipient_show_invalid_address_popup(void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETVM_IF(cd == NULL, EINA_FALSE, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETVM_IF(rd == NULL, EINA_FALSE, "recipient data is NULL");
+
+       rd->notify_popup_idler = NULL;
+
+       if (!msg_ui_composer_popup_exist(cd) && !cd->loaded_ug && !cd->loaded_aul) {
+               /* show popup when message window has a top focus.(active state of app) */
+               if (elm_win_focus_get(cd->main_window) == EINA_TRUE) {
+                       if (cd->isclosed == false)
+                               msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK);
+               }
+       }
+
+       D_LEAVE;
+       return EINA_FALSE;
+}
+
+RECIPIENT_ITEM_S *msg_ui_composer_recipient_selected_item_data_get(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETVM_IF(rd == NULL, NULL, "Recipient Data is NULL");
+
+       RECIPIENT_ITEM_S *r_item = NULL;
+
+       r_item = rd->sel_r_item;
+       if (!r_item) {
+               D_EMSG("No data in Selected MBE item");
+               return NULL;
+       }
+
+       D_LEAVE;
+
+       return r_item;
+}
+
+void msg_ui_composer_recipient_selected_delete(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       Elm_Object_Item *mbe_item = NULL;
+       mbe_item = rd->sel_mbe_item;
+       if (!mbe_item) {
+               D_EMSG("There is no Selected MBE item");
+               return;
+       }
+
+       elm_object_item_del(mbe_item);
+       msg_ui_composer_message_type_check_and_change(cd);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_recipient_selected_edit(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "Recipient Data is NULL");
+
+       Elm_Object_Item *mbe_item = NULL;
+       Evas_Object *sc_entry = NULL;
+#ifdef CONTACT_NAME_IS_NOT_SUPPORT
+       RECIPIENT_ITEM_S *r_item = NULL;
+#else
+       const char *label_selected_bt = NULL;
+#endif
+
+       mbe_item = rd->sel_mbe_item;
+       if (!mbe_item) {
+               D_EMSG("There is no Selected MBE item");
+               return;
+       }
+
+#ifdef CONTACT_NAME_IS_NOT_SUPPORT
+       r_item = msg_ui_composer_recipient_selected_item_data_get(cd);
+       D_MSG_RETM_IF(r_item == NULL, "Selected Data is NULL");
+
+       sc_entry = elm_multibuttonentry_entry_get(rd->mbe);
+       elm_entry_entry_set(sc_entry, r_item->recipient);
+       elm_entry_cursor_line_end_set(sc_entry);
+#else
+       label_selected_bt = elm_object_item_text_get(mbe_item);
+
+       sc_entry = elm_multibuttonentry_entry_get(rd->mbe);
+       elm_entry_entry_set(sc_entry, label_selected_bt);
+       elm_entry_cursor_line_end_set(sc_entry);
+#endif
+       elm_object_item_del(mbe_item);
+       msg_ui_composer_message_type_check_and_change(cd);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_recipient_select_popup_create(void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "data param is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       RECIPIENT_S *rd = cd->recipient;
+       D_MSG_RETM_IF(rd == NULL, "recipient data is NULL");
+
+       Evas_Object *popup = NULL;
+       Evas_Object *list = NULL;
+       Evas_Object *btn1 = NULL;
+       RECIPIENT_ITEM_S *r_item = NULL;
+       char title_str[DEF_BUF_LEN + 1] = {0,};
+       char *markup_title_str = NULL;
+
+       r_item = msg_ui_composer_recipient_selected_item_data_get(cd);
+       if (!r_item) {
+               D_EMSG("r_item is NULL");
+               return;
+       }
+
+       /*list */
+       list = elm_list_add(cd->main_window);
+       elm_list_mode_set(list, ELM_LIST_EXPAND);
+
+       elm_list_item_append(list, _SYSSTR("IDS_COM_OPT_DELETE"), NULL, NULL, msg_ui_recipient_select_popup_list_clicked_cb, cd);
+       elm_list_item_append(list, _SYSSTR("IDS_COM_BODY_EDIT"), NULL, NULL, msg_ui_recipient_select_popup_list_clicked_cb, cd);
+
+       if (cd->isAppControl && cd->isEmulator) {
+               snprintf(title_str, sizeof(title_str), "%s", r_item->recipient);
+       } else {
+               if (r_item->index > 0) {
+                       if (IsMultipleNumber(r_item->index)) {
+                               elm_list_item_append(list, _MSGSTR("IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"), NULL, NULL, msg_ui_recipient_select_popup_list_clicked_cb, cd);
+                       } else {
+                               elm_list_item_append(list, _MSGSTR("IDS_MSGC_OPT_VIEW_CONTACT"), NULL, NULL, msg_ui_recipient_select_popup_list_clicked_cb, cd);
+                       }
+
+                       if (r_item->display_name[0] != '\0')
+                               snprintf(title_str, sizeof(title_str), "%s <%s>", r_item->display_name, r_item->recipient);
+                       else
+                               snprintf(title_str, sizeof(title_str), "%s", r_item->recipient);
+               } else {
+                       elm_list_item_append(list, _SYSSTR("IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, NULL, msg_ui_recipient_select_popup_list_clicked_cb, cd);
+                       snprintf(title_str, sizeof(title_str), "%s", r_item->recipient);
+               }
+       }
+
+       elm_list_go(list);
+
+       markup_title_str = elm_entry_utf8_to_markup(title_str);
+       popup = msg_ui_composer_list_popup_create(data, markup_title_str, list, "min_menustyle");
+
+       if (markup_title_str)
+               g_free(markup_title_str);
+
+       btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, _SYSSTR("IDS_COM_BODY_CLOSE"));
+       elm_object_part_content_set(popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", msg_ui_recipient_select_popup_btn_clicked_cb, cd);
+
+       elm_object_focus_allow_set(popup, EINA_TRUE);
+       elm_object_focus_set(popup, EINA_TRUE);
+
+       rd->popup_selected = popup;
+
+       D_LEAVE;
+}
+
+static Evas_Object *__mbe_create(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       Evas_Object *mbe = NULL;
+       Evas_Object *entry = NULL;
+       Ecore_IMF_Context *context = NULL;
+       Elm_Entry_Filter_Limit_Size limit_filter;
+
+       char label_txt[TO_FIELD_LABEL_SIZE_MAX] = { 0, };
+       gsize len = 0;
+
+       mbe = elm_multibuttonentry_add(rd->parent);
+       evas_object_size_hint_weight_set(mbe, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(mbe, EVAS_HINT_FILL, 0.0);
+       evas_object_show(mbe);
+
+       /* set mbe label */
+       len = snprintf(label_txt, (gsize)sizeof(label_txt), "%s:", MSGC_STR_TO);
+       if (len == -1) {
+               D_EMSG("len = %d", len);
+       } else if (len > 0) {
+               label_txt[len] = '\0';
+               elm_object_text_set(mbe, label_txt);
+       } else {
+               D_EMSG("len = %d", len);
+       }
+
+       /* set guide text */
+       elm_object_part_text_set(mbe, "guide", MSGC_STR_ADD_RECIPIENT);
+
+       /* set mbe callback */
+       evas_object_smart_callback_add(mbe, "item,added", msg_ui_recipient_mbe_item_added_cb, rd->cd);
+       evas_object_smart_callback_add(mbe, "item,deleted", msg_ui_recipient_mbe_item_deleted_cb, rd->cd);
+       evas_object_smart_callback_add(mbe, "item,clicked", msg_ui_recipient_mbe_item_clicked_cb, rd->cd);
+       evas_object_smart_callback_add(mbe, "expanded", msg_ui_recipient_mbe_expanded_cb, rd);
+       evas_object_smart_callback_add(mbe, "contracted", msg_ui_recipient_mbe_contracted_cb, rd);
+
+       evas_object_smart_callback_add(mbe, "focused", msg_ui_recipient_mbe_focused_cb, rd->cd);
+       evas_object_smart_callback_add(mbe, "clicked", msg_ui_recipient_mbe_clicked_cb, rd->cd);
+       evas_object_smart_callback_add(mbe, "unfocused", msg_ui_recipient_mbe_unfocused_cb, rd->cd);
+       evas_object_event_callback_add(mbe, EVAS_CALLBACK_DEL, msg_ui_recipient_mbe_delete_cb, rd->cd);
+
+       elm_multibuttonentry_item_filter_append(mbe, msg_ui_recipient_mbe_item_verify_cb, rd->cd);
+
+       entry = elm_multibuttonentry_entry_get(mbe);
+       evas_object_smart_callback_add(entry, "changed", msg_ui_recipient_entry_changed_cb, rd->cd);
+       evas_object_smart_callback_add(entry, "preedit,changed", msg_ui_recipient_entry_changed_cb, rd->cd);
+       /* activated is added for enter key of keypad */
+       evas_object_smart_callback_add(entry, "activated", msg_ui_recipient_entry_activated_cb, rd->cd);
+
+       elm_entry_markup_filter_prepend(entry, msg_ui_recipient_entry_filter_cb, rd->cd);
+
+       /* set entry max character count*/
+       limit_filter.max_char_count = COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter);
+
+       context = elm_entry_imf_context_get(entry);
+       ecore_imf_context_input_panel_event_callback_add((Ecore_IMF_Context *)context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, msg_ui_composer_entry_imf_state_cb, rd->cd);
+       ecore_imf_context_input_panel_event_callback_add((Ecore_IMF_Context *)context, ECORE_IMF_INPUT_PANEL_GEOMETRY_EVENT, msg_ui_composer_entry_imf_resize_cb, rd->cd);
+
+       D_LEAVE;
+       return mbe;
+}
+
+static Evas_Object *__scroller_create(Evas_Object *parent)
+{
+       D_ENTER;
+       Evas_Object *scroller;
+       scroller = elm_scroller_add(parent);
+       evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_FALSE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+       evas_object_show(scroller);
+
+       D_LEAVE;
+       return scroller;
+}
+
+static Evas_Object *__msg_ui_composer_recipient_to_layout_create(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       if (rd == NULL)
+               return NULL;
+
+       Evas_Object *layout = NULL;
+       Evas_Object *parent  = rd->parent;
+
+       layout = msg_ui_composer_load_edj(parent, MSGC_UI_DEFAULT_EDJ, MSGC_EDJ_GRP_RECIPIENT_TO_FIELD);
+       if (!layout) {
+               D_EMSG("layout is NULL");
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+
+       Evas_Object *to_sc = __scroller_create(parent);
+       rd->sc = to_sc;
+
+       Evas_Object *box = elm_box_add(parent);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(box);
+
+       Evas_Object *box2 = elm_box_add(parent);
+       evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, 0.0);
+       evas_object_show(box2);
+
+       elm_box_pack_end(box, box2);
+
+       Evas_Object *mbe = __mbe_create(rd);
+       rd->mbe = mbe;
+
+       elm_object_content_set(to_sc, box);
+       elm_box_pack_end(box2, mbe);
+       elm_object_part_content_set(layout, "swl.mbe_scroll", to_sc);
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)rd->cd;
+
+       if (!cd->isAppControl || !cd->isEmulator) {
+               Evas_Object *contact_btn = elm_button_add(rd->parent);
+               elm_object_theme_set(contact_btn, cd->th);
+               elm_object_style_set(contact_btn, "msg/contact_btn");
+
+               Evas_Object *icon = elm_icon_add(contact_btn);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, MSGC_IMG_CONTACT_BUTTON_ICON);
+
+               evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+               elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+
+               elm_object_part_content_set(contact_btn, "icon", icon);
+
+               evas_object_smart_callback_add(contact_btn, "clicked", msg_ui_recipient_contact_btn_clicked_cb, rd->cd);
+               elm_object_part_content_set(layout, "swl.closed_btn", contact_btn);
+       } else {
+               edje_object_signal_emit(_EDJ(layout), "hide.ct_button", "*");
+       }
+
+       D_LEAVE;
+       return layout;
+}
+
+static void __msg_ui_composer_recipient_layout_create(RECIPIENT_S *r)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(r->parent == NULL, "r->parent is NULL");
+
+       /*Create layout*/
+       Evas_Object *bx;
+       bx = elm_box_add(r->parent);
+       evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(bx);
+
+       r->bx_main = bx;
+
+       r->ly_to = __msg_ui_composer_recipient_to_layout_create(r);
+       elm_box_pack_end(r->bx_main, r->ly_to);
+
+       evas_object_event_callback_add(r->bx_main, EVAS_CALLBACK_RESIZE, msg_ui_recipient_resize_cb, r);
+
+       D_LEAVE;
+}
+
+static RECIPIENT_ITEM_S *__msg_ui_composer_recipient_item_make(
+                                                                                       COMPOSER_RECP_ADDR_E type,
+                                                                                       int index,
+                                                                                       const char *display_name,
+                                                                                       const char *recipient,
+                                                                                       const char *image_path)
+{
+       RECIPIENT_ITEM_S *recipient_item;
+       RECIPIENT_ITEM_S r_item;
+
+       bzero(&r_item, sizeof(r_item));
+
+       r_item.type = type;
+       r_item.index = index;
+
+       if (recipient)
+               strncpy(r_item.recipient, recipient, sizeof(r_item.recipient) - 1);
+
+       if (display_name)
+               strncpy(r_item.display_name, display_name, sizeof(r_item.display_name) - 1);
+
+       if (image_path)
+               strncpy(r_item.image_path, image_path, sizeof(r_item.image_path) - 1);
+
+       recipient_item = calloc(1, sizeof(RECIPIENT_ITEM_S));
+       if (!recipient_item) return NULL;
+
+       memcpy(recipient_item, &r_item, sizeof(RECIPIENT_ITEM_S));
+
+       D_MSG("---------- make item start----------");
+       D_MSG(">>type = %d", r_item.type);
+       D_MSG(">>index = %d", r_item.index);
+       D_MSG(">>displayname = %s", r_item.display_name);
+       D_MSG(">>recipient = %s", r_item.recipient);
+       D_MSG(">>image path = %s", r_item.image_path);
+       D_MSG("---------- make item end----------");
+       return recipient_item;
+}
+
+RECIPIENT_ITEM_S *msg_ui_composer_recipient_item_make_by_string(const char *str)
+{
+       D_MSG_RETVM_IF(str == NULL, NULL, "str is NULL");
+
+       COMPOSER_UTIL_ADDRTYPE_E type;
+       RECIPIENT_ITEM_S r_item;
+       RECIPIENT_ITEM_S *recipient_item;
+#ifndef CONTACT_NAME_IS_NOT_SUPPORT
+       int ret;
+       char tmp_display_name1[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1] = {0,};
+       char tmp_display_name2[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1] = {0,};
+#endif
+
+       bzero(&r_item, sizeof(r_item));
+
+       type = get_address_type(str);
+       if (type == COMPOSER_UTIL_ADDRTYPE_NUMBER || type == COMPOSER_UTIL_ADDRTYPE_EMAIL) {
+
+               strncpy(r_item.recipient, str, sizeof(r_item.recipient)-1);
+               r_item.type = msg_ui_composer_recipient_type_get(r_item.recipient);
+               r_item.index = get_contact_index_by_recipient(str);
+               if (r_item.index <= 0 || get_contact_display_name_by_index(r_item.index, r_item.display_name, sizeof(r_item.display_name))) {
+                               strncpy(r_item.display_name, str, sizeof(r_item.display_name)-1);
+               }
+
+       } else {
+#ifdef CONTACT_NAME_IS_NOT_SUPPORT
+               /* contact name is not supported */
+               r_item.type = COMPOSER_RECP_ADDR_INVALID;
+               strncpy(r_item.recipient, str, sizeof(r_item.recipient)-1);
+               strncpy(r_item.display_name, str, sizeof(r_item.display_name)-1);
+#else
+               /*IF string is name*/
+               r_item.index = get_contact_index_by_name(str);
+               if (r_item.index > 0) {
+                       ret = get_contact_display_name_by_index(r_item.index, r_item.display_name, sizeof(r_item.display_name)-1);
+                       if (COMPOSER_RETURN_SUCCESS != ret){
+                               return NULL;
+                       }
+
+                       remove_space(r_item.display_name, tmp_display_name1, sizeof(tmp_display_name1)-1);
+                       remove_space(str, tmp_display_name2, sizeof(tmp_display_name2)-1);
+                       if (g_ascii_strncasecmp(tmp_display_name1, tmp_display_name2, strlen(tmp_display_name1))==0){
+                               D_MSG("Contact's name %s = Inputted name %s", r_item.display_name, str);
+                               ret = get_contact_default_recipient_by_index(r_item.index, r_item.recipient ,sizeof(r_item.recipient)-1);
+                               if (CONTACTS_ERROR_NONE != ret){
+                                       return NULL;
+                               }
+
+                               r_item.type = msg_ui_composer_recipient_type_get(r_item.recipient);
+                       } else {
+                               D_MSG("Contact's name %s != Inputted name %s", r_item.display_name, str);
+                               r_item.type = COMPOSER_RECP_ADDR_INVALID;
+                               r_item.index = 0;
+                               bzero(r_item.display_name, sizeof(r_item.display_name));
+                               strncpy(r_item.display_name, str, sizeof(r_item.display_name)-1);
+                       }
+
+
+               } else {
+                       r_item.type = COMPOSER_RECP_ADDR_INVALID;
+                       strncpy(r_item.display_name, str, sizeof(r_item.display_name)-1);
+               }
+#endif
+       }
+
+       /*make recipient Item*/
+       recipient_item = __msg_ui_composer_recipient_item_make(r_item.type, r_item.index, r_item.display_name, r_item.recipient, NULL);
+       if (!recipient_item) {
+               D_MSG("Fail of msg_ui_composer_recipient_item_make");
+               return NULL;
+       }
+
+       return recipient_item;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_duplicate_check(RECIPIENT_S *rd, const char *recipient)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(rd == NULL, COMPOSER_RETURN_FAIL, "rd is NULL");
+       D_MSG_RETVM_IF(recipient == NULL, COMPOSER_RETURN_FAIL, "recipient is NULL");
+
+       RECIPIENT_ITEM_S *recipient_item;
+       Elm_Object_Item *mbe_item;
+       COMPOSER_UTIL_ADDRTYPE_E inp_type;
+       COMPOSER_UTIL_ADDRTYPE_E tmp_type;
+
+       char inp_str[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX + 1] = { 0, };
+       char tmp_str[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX + 1] = { 0, };
+
+       bool is_dup = FALSE;
+       int len = 0;
+
+       len = strlen(recipient);
+       inp_type = get_address_type(recipient);
+
+       mbe_item = elm_multibuttonentry_first_item_get(rd->mbe);
+       while (mbe_item) {
+               recipient_item = elm_object_item_data_get(mbe_item);
+
+               if (recipient_item) {
+                       tmp_type = get_address_type(recipient_item->recipient);
+
+                       if (inp_type == tmp_type) {
+                               if (inp_type == COMPOSER_UTIL_ADDRTYPE_NUMBER) {
+                                       int tlen = strlen(recipient_item->recipient);
+
+                                       if (len >= COMPARE_STRING_NUM && tlen >= COMPARE_STRING_NUM) {
+                                               strncpy(inp_str, recipient, sizeof(inp_str) - 1);
+                                               strncpy(tmp_str, recipient_item->recipient, sizeof(tmp_str) - 1);
+
+                                               g_strreverse(inp_str);
+                                               g_strreverse(tmp_str);
+
+                                               if (!strncmp(inp_str, tmp_str, COMPARE_STRING_NUM)) {
+                                                       is_dup = TRUE;
+                                                       break;
+                                               }
+                                       } else if (len == tlen) {
+                                               if (!g_strcmp0(recipient_item->recipient, recipient)) {
+                                                       D_MSG("DUP TRUE");
+                                                       is_dup = TRUE;
+                                                       break;
+                                               }
+                                       }
+                               } else if (inp_type == COMPOSER_UTIL_ADDRTYPE_EMAIL){
+                                       if (!g_strcmp0(recipient_item->recipient, recipient)) {
+                                               is_dup = TRUE;
+                                               break;
+                                       }
+                               } else {
+                                       D_EMSG("Unknown type recipient TODO check recipient");
+                               }
+                       }
+
+               }
+
+               mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+       }
+
+       if (is_dup) {
+               D_MSG("Found dup recipient = [%s(%d)] with [%s(%d)]", recipient, strlen(recipient), recipient_item->recipient, strlen(recipient_item->recipient));
+               return COMPOSER_RETURN_RECIPIENT_DUPLICATE;
+       }
+
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+int msg_ui_composer_recipient_count_get(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(rd == NULL, 0, "recipient data is NULL");
+       D_MSG_RETVM_IF(rd->mbe == NULL, 0, "mbe is NULL");
+
+       int r_count = 0;
+       Elm_Object_Item *mbe_item;
+
+       mbe_item = elm_multibuttonentry_first_item_get(rd->mbe);
+       while (mbe_item) {
+               r_count++;
+               mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+       }
+
+       D_MSG("recipient count ---------->[%d]", r_count);
+       D_LEAVE;
+       return r_count;
+}
+
+void msg_ui_composer_recipient_addr_type_set(RECIPIENT_S *rd, COMPOSER_RECP_ADDR_E type)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(rd == NULL, "recipient data is NULL");
+
+       rd->type = type;
+}
+
+COMPOSER_RECP_ADDR_E msg_ui_composer_recipient_addr_type_get(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(rd == NULL, COMPOSER_RECP_ADDR_NONE, "recipient data is NULL");
+       D_MSG("rd->type = [%d]", rd->type);
+
+       return rd->type;
+}
+
+COMPOSER_RECP_ADDR_E msg_ui_composer_recipient_type_get(const char *recipient)
+{
+       int len = 0;
+       COMPOSER_RECP_ADDR_E ret = COMPOSER_RECP_ADDR_INVALID;
+       COMPOSER_UTIL_ADDRTYPE_E type;
+
+       if (!recipient) {
+               D_PRINT("No Input recipient");
+               return ret;
+       }
+
+       len = strlen(recipient);
+       if (len == 0) {
+               D_PRINT("input recipient length is [%d]", len);
+               return ret;
+       }
+
+       type = get_address_type(recipient);
+       if (type == COMPOSER_UTIL_ADDRTYPE_NUMBER) {
+
+               if (len >= COMPOSER_RECIPIENT_PHONE_NUMBER_LEN_MIN
+                        && len <= COMPOSER_RECIPIENT_PHONE_NUMBER_LEN_MAX) {
+
+                       ret = COMPOSER_RECP_ADDR_VALID_NUMBER;
+               }
+
+       } else if (type == COMPOSER_UTIL_ADDRTYPE_EMAIL) {
+               if (len <= COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX ) {
+
+                       ret = COMPOSER_RECP_ADDR_VALID_EMAIL;
+               }
+       }
+
+       return ret;
+}
+
+Eina_Bool msg_ui_composer_recipient_vaild_check(const char *recipient)
+{
+       D_ENTER;
+
+       int len = 0;
+       COMPOSER_UTIL_ADDRTYPE_E type;
+
+       if (!recipient) {
+               D_PRINT("No Input recipient");
+               return EINA_FALSE;
+       }
+
+       type = get_address_type(recipient);
+       len = strlen(recipient);
+
+       if (len == 0) {
+               D_PRINT("input recipient length is [%d]", len);
+               return EINA_FALSE;
+       }
+
+       if (type == COMPOSER_UTIL_ADDRTYPE_NUMBER) {
+               if (len > COMPOSER_RECIPIENT_PHONE_NUMBER_LEN_MAX) {
+                       D_PRINT("NUMBER type recipient Too Long [%d]", len);
+                       return EINA_FALSE;
+               }
+
+               if (len < COMPOSER_RECIPIENT_PHONE_NUMBER_LEN_MIN) {
+                       D_PRINT("NUMBER type recipient Too Short [%d]", len);
+                       return EINA_FALSE;
+               }
+       } else if (type == COMPOSER_UTIL_ADDRTYPE_EMAIL) {
+               if (len > COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX) {
+                       D_PRINT("Email type recipient Too Long [%d]", len);
+                       return EINA_FALSE;
+               }
+
+               if (len < COMPOSER_RECIPIENT_PHONE_NUMBER_LEN_MIN) {
+                       D_PRINT("Email type recipient Too Short [%d]", len);
+                       return EINA_FALSE;
+               }
+       } else {
+               D_PRINT("Unknown type recipient[%d]", type);
+               return EINA_FALSE;
+       }
+
+       D_LEAVE;
+       return EINA_TRUE;
+}
+
+Eina_Bool msg_ui_composer_recipient_is_mms(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, EINA_FALSE, "composer data is NULL");
+
+       RECIPIENT_ITEM_S *recipient_item = NULL;
+       Elm_Object_Item *mbe_item = NULL;
+       Eina_Bool is_mms = EINA_FALSE;
+       COMPOSER_UTIL_ADDRTYPE_E addrtype;
+       RECIPIENT_S *rd = cd->recipient;
+
+       if (!cd) {
+               D_EMSG("cd is NULL");
+               return is_mms;
+       }
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+               if (rd->mode == 1) {
+                       mbe_item = elm_multibuttonentry_first_item_get(rd->mbe);
+
+                       while (mbe_item) {
+                               recipient_item = elm_object_item_data_get(mbe_item);
+
+                               if (recipient_item) {
+                                       addrtype = get_address_type(recipient_item->recipient);
+
+                                       if (addrtype == COMPOSER_UTIL_ADDRTYPE_EMAIL) {
+                                               is_mms = EINA_TRUE;
+                                               break;
+                                       }
+                               }
+
+                               mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+                       }
+               }
+       } else if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               Eina_List *list = NULL;
+               RECIPIENT_ITEM_S *r_item = NULL;
+
+               EINA_LIST_FOREACH(cd->recipient_list, list, r_item) {
+                       if (r_item) {
+                               addrtype = get_address_type(r_item->recipient);
+
+                               if (addrtype == COMPOSER_UTIL_ADDRTYPE_EMAIL) {
+                                       is_mms = EINA_TRUE;
+                                       break;
+                               }
+                       }
+               }
+       } else {
+               D_EMSG("Invalid composer ug mode = %d", cd->msg_ug_mode);
+       }
+
+       D_LEAVE;
+       return is_mms;
+}
+
+void msg_ui_composer_recipient_focus_set(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       if (rd->mbe == NULL)
+               return;
+
+       elm_object_focus_set(rd->mbe, EINA_TRUE);
+       D_LEAVE;
+}
+
+void msg_ui_composer_recipient_expanded_set(RECIPIENT_S *rd, Eina_Bool expanded)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(rd == NULL, "rd is NULL");
+
+       if (rd->mbe == NULL)
+               return;
+
+       elm_multibuttonentry_expanded_set(rd->mbe, expanded);
+       D_LEAVE;
+}
+
+Eina_List *msg_ui_composer_recipient_invalid_recipient_list_get(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       RECIPIENT_ITEM_S *r_item;
+       Elm_Object_Item *mbe_item;
+       Eina_List *invalid_list = NULL;
+
+       if (rd->mode == 1) {
+               if (rd->mbe == NULL)
+                       return NULL;
+
+               mbe_item = elm_multibuttonentry_first_item_get(rd->mbe);
+               while (mbe_item) {
+                       r_item = elm_object_item_data_get(mbe_item);
+                       if (!r_item) {
+                               D_EMSG("elm_multibuttonentry data is null");
+                               continue;
+                       }
+
+                       if (msg_ui_composer_recipient_vaild_check(r_item->recipient) == EINA_FALSE) {
+                               invalid_list = eina_list_append(invalid_list, r_item);
+                       }
+
+                       mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+               }
+
+       } /*else if (rd->mode == 0) {
+               r_item  = &cd->recipient_frame;
+               if (msg_ui_composer_recipient_vaild_check(r_item->recipient) == EINA_FALSE) {
+                       invalid_list = eina_list_append(invalid_list,r_item);
+               }
+
+       } */else {
+               return NULL;
+       }
+       return invalid_list;
+}
+
+const char *msg_ui_composer_recipient_entry_text_get(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(rd == NULL, NULL, "recipient data is NULL");
+       D_MSG_RETVM_IF(rd->mbe == NULL, NULL, "mbe is NULL");
+
+       Evas_Object *entry = elm_multibuttonentry_entry_get(rd->mbe);
+       if (entry == NULL)
+               return NULL;
+
+       const char *str = elm_entry_entry_get(entry);
+
+       D_MSG("string = %s", str);
+
+       D_LEAVE;
+       return str;
+}
+
+void msg_ui_composer_recipient_entry_text_set(RECIPIENT_S *rd, const char *str)
+{
+       D_ENTER;
+
+       if (rd->mbe == NULL)
+               return;
+
+       Evas_Object *entry = elm_multibuttonentry_entry_get(rd->mbe);
+       elm_entry_entry_set(entry, str);
+
+       D_LEAVE;
+}
+
+RECIPIENT_S *msg_ui_composer_recipient_create(Evas_Object *p, int mode, void *data)
+{
+       D_ENTER;
+       RECIPIENT_S *rd;
+
+       rd = calloc(1, sizeof(RECIPIENT_S));
+       if (rd == NULL)
+               return NULL;
+
+       rd->parent = p;
+       rd->cd = data;
+       rd->mode = mode;
+
+       if (mode == 1)
+               __msg_ui_composer_recipient_layout_create(rd);
+
+       D_LEAVE;
+       return rd;
+}
+
+void msg_ui_composer_recipient_delete(RECIPIENT_S *rd)
+{
+       D_ENTER;
+
+       if (rd == NULL)
+               return;
+
+       if (rd->scroll_down_idler) {
+               ecore_idler_del(rd->scroll_down_idler);
+               rd->scroll_down_idler = NULL;
+       }
+
+       if (rd->notify_popup_idler) {
+               ecore_idler_del(rd->notify_popup_idler);
+               rd->notify_popup_idler = NULL;
+       }
+
+       MSGC_EVAS_OBJECT_DEL(rd->mbe);
+       MSGC_EVAS_OBJECT_DEL(rd->ly_to);
+       MSGC_EVAS_OBJECT_DEL(rd->bx_main);
+       MSGC_EVAS_OBJECT_DEL(rd->popup_change_number);
+       g_free(rd);
+
+       D_LEAVE;
+}
+
+void msg_ui_composer_recipient_clear(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(rd == NULL, "recipient data is NULL");
+       D_MSG_RETM_IF(rd->mbe == NULL, "Multibuttonentry is NULL");
+
+       RECIPIENT_ITEM_S *r_item;
+       Elm_Object_Item * mbe_item;
+
+       mbe_item = elm_multibuttonentry_first_item_get(rd->mbe);
+       while (mbe_item) {
+               r_item = elm_object_item_data_get(mbe_item);
+               if (r_item) {
+                       g_free(r_item);
+                       elm_object_item_data_set(mbe_item, NULL);
+               }
+
+               mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+       }
+
+       elm_multibuttonentry_clear(rd->mbe);
+
+       MSGC_EVAS_OBJECT_DEL(rd->popup_change_number);
+       D_LEAVE;
+}
+
+void msg_ui_composer_recipient_update(RECIPIENT_S *rd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(rd == NULL, "recipient data is NULL");
+       D_MSG_RETM_IF(rd->mbe == NULL, "Multibuttonentry is NULL");
+
+       RECIPIENT_ITEM_S *r_item;
+       Elm_Object_Item *mbe_item;
+
+       mbe_item = elm_multibuttonentry_first_item_get(rd->mbe);
+       while (mbe_item) {
+               r_item = elm_object_item_data_get(mbe_item);
+               if (!r_item) {
+                       D_EMSG("elm_multibuttonentry data is null");
+                       mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+                       continue;
+               }
+
+               /*Check changed contact && change display name && recipient*/
+               if (strlen(r_item->recipient) > 0) {
+
+                       bzero(r_item->display_name, sizeof(r_item->display_name));
+                       r_item->index = get_contact_index_by_recipient(r_item->recipient);
+                       if (r_item->index > 0) {
+                               if (get_contact_display_name_by_index(r_item->index, r_item->display_name, sizeof(r_item->display_name)-1) != COMPOSER_RETURN_SUCCESS) {
+                                       strncpy(r_item->display_name, r_item->recipient, sizeof(r_item->display_name)-1);
+                               }
+                       } else {
+                               strncpy(r_item->display_name, r_item->recipient, sizeof(r_item->display_name)-1);
+                       }
+                       elm_object_item_text_set(mbe_item, r_item->display_name);
+
+               } else if (strlen(r_item->display_name) > 0) {
+
+                       bzero(r_item->recipient, sizeof(r_item->recipient));
+                       r_item->index = get_contact_index_by_name(r_item->display_name);
+                       if (r_item->index > 0) {
+                               char tmp_display_name1[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1] = {0,};
+                               char tmp_display_name2[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1] = {0,};
+
+                               get_contact_display_name_by_index(r_item->index, tmp_display_name1, sizeof(tmp_display_name1)-1);
+                               D_MSG("display_name = %s, get contact displayname = %s", r_item->display_name, tmp_display_name1);
+                               remove_space(r_item->display_name, tmp_display_name2, sizeof(tmp_display_name2)-1);
+                               remove_space(tmp_display_name1, tmp_display_name1, sizeof(tmp_display_name1)-1);
+                               if (g_ascii_strncasecmp(tmp_display_name1, tmp_display_name2, strlen(tmp_display_name1)) == 0) {
+                                       get_contact_default_recipient_by_index(r_item->index, r_item->recipient ,sizeof(r_item->recipient)-1);
+                                       r_item->type = msg_ui_composer_recipient_type_get(r_item->recipient);
+                               } else {
+                                       r_item->type = COMPOSER_RECP_ADDR_INVALID;
+                                       r_item->index = 0;
+                               }
+                       } else {
+                               D_EMSG("No contact id of %s", r_item->display_name);
+                       }
+               }
+
+               D_MSG("type [%d]", r_item->type);
+               D_MSG("index [%d]", r_item->index);
+               D_MSG("recipient [%s]", r_item->recipient);
+               D_MSG("display_name [%s]", r_item->display_name);
+
+               mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+       }
+
+       D_LEAVE;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_append(RECIPIENT_S *rd, const char *recipient, int index)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(rd == NULL, COMPOSER_RETURN_FAIL, "recipient data is NULL");
+       D_MSG_RETVM_IF(rd->mbe == NULL, COMPOSER_RETURN_FAIL, "mbe is NULL");
+       D_MSG_RETVM_IF(recipient == NULL, COMPOSER_RETURN_FAIL, "recipient is NULL");
+       D_MSG("Recipient Append Parameter [recipient = %s, index = %d]", recipient, index);
+
+       RECIPIENT_ITEM_S *recipient_item;
+       COMPOSER_RECP_ADDR_E type;
+       int tmp_index;
+       char tmp_recipient[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1] = {0,};
+       char tmp_displayname[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1] = {0,};
+
+       /*Get recipient*/
+       strncpy(tmp_recipient, recipient, sizeof(tmp_recipient)-1);
+
+       /*get type*/
+       type = msg_ui_composer_recipient_type_get(tmp_recipient);
+
+       /*Get index*/
+       if (index > 0) {
+               tmp_index = index;
+       } else {
+               tmp_index = get_contact_index_by_recipient(tmp_recipient);
+       }
+
+       /*get display name*/
+       if (tmp_index > 0) {
+               if (get_contact_display_name_by_index(tmp_index, tmp_displayname, sizeof(tmp_displayname)) != COMPOSER_RETURN_SUCCESS) {
+                       strncpy(tmp_displayname, tmp_recipient, sizeof(tmp_displayname)-1);
+               }
+       } else {
+               strncpy(tmp_displayname, tmp_recipient, sizeof(tmp_displayname)-1);
+       }
+
+       /*make recipient item*/
+       recipient_item = __msg_ui_composer_recipient_item_make(type, tmp_index, tmp_displayname, tmp_recipient, NULL);
+       if (recipient_item == NULL) {
+               D_MSG("Fail of msg_ui_composer_recipient_item_make");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       /*append recipient item to mbe*/
+       if (elm_multibuttonentry_item_append(rd->mbe, recipient_item->display_name, NULL, recipient_item) == NULL) {
+               D_EMSG("error elm_multibuttonentry_item_add!!");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_read_data(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       RECIPIENT_S *r;
+       RECIPIENT_ITEM_S *r_item;
+       Elm_Object_Item *mbe_item;
+       int r_count = 0;
+       if (!cd)
+               return COMPOSER_RETURN_FAIL;
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               Eina_List *recipient_list = cd->recipient_list;
+
+               if (recipient_list) {
+                       int recipient_cnt = eina_list_count(recipient_list);
+                       int i = 0;
+                       RECIPIENT_ITEM_S *r_item = NULL;
+                       D_MSG("recipient_cnt = %d", recipient_cnt);
+
+                       for (i = 0; i < recipient_cnt; i++) {
+                               r_item = (RECIPIENT_ITEM_S *)eina_list_nth(recipient_list, i);
+                               if (r_item) {
+                                       D_MSG("r_item->recipient = %s", r_item->recipient);
+                                       if (msg_ui_composer_message_add_address(r_item->recipient) == COMPOSER_RETURN_SUCCESS)
+                                               r_count++;
+                               } else {
+                                       D_EMSG("r_item is null");
+                               }
+                       }
+               } else {
+                       D_EMSG("There is no recipient address");
+               }
+       } else {
+               r = cd->recipient;
+               if (!r)
+                       return COMPOSER_RETURN_FAIL;
+
+               mbe_item = elm_multibuttonentry_first_item_get(r->mbe);
+               while (mbe_item) {
+                       r_item = elm_object_item_data_get(mbe_item);
+                       if (r_item) {
+                               D_MSG("[%s]", r_item->recipient);
+                               if (msg_ui_composer_message_add_address(r_item->recipient) == COMPOSER_RETURN_SUCCESS)
+                                       r_count++;
+                       }
+                       mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
+               }
+       }
+
+       if (r_count == 0)
+               return COMPOSER_RETURN_FAIL;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_set_recipient_list(MSG_COMPOSER_VIEW_DATA_S *cd, msg_thread_id_t thread_id)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "param is NULL");
+
+       /* set recipient list for bubble composer */
+       msg_struct_list_s addrList;
+       int i = 0;
+
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+
+       if (msg_get_address_list(cd->msg_handle, thread_id, &addrList) != COMPOSER_RETURN_SUCCESS)
+               return COMPOSER_RETURN_FAIL;
+
+       char address[MAX_ADDRESS_VAL_LEN + 1] = {0,};
+       int address_len = sizeof(address);
+
+       for (i = 0; i < addrList.nCount; i++) {
+               memset(&address, 0, address_len);
+               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, address, address_len);
+               if (msg_ui_composer_recipient_add_recipient_list(cd, address) != COMPOSER_RETURN_SUCCESS) {
+                       msg_release_list_struct(&addrList);
+                       return COMPOSER_RETURN_FAIL;
+               }
+       }
+
+       msg_release_list_struct(&addrList);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_add_recipient_list(MSG_COMPOSER_VIEW_DATA_S *cd, const char *recipient)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "param is NULL");
+       D_MSG_RETVM_IF(recipient == NULL, COMPOSER_RETURN_FAIL, "param is NULL");
+       D_MSG_RETVM_IF(!strlen(recipient), COMPOSER_RETURN_FAIL, "strlen(recipient) is 0");
+
+       RECIPIENT_ITEM_S *r_item = NULL;
+
+       r_item = (RECIPIENT_ITEM_S *)calloc(1, sizeof(RECIPIENT_ITEM_S));
+       if (!r_item) {
+               D_EMSG("calloc is failed");
+               return COMPOSER_RETURN_FAIL;
+       }
+       strncpy(r_item->recipient, recipient, sizeof(r_item->recipient)-1);
+
+       cd->recipient_list = eina_list_append(cd->recipient_list, r_item);
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_clear_recipient_list(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "param is NULL");
+       D_MSG_RETVM_IF(cd->recipient_list == NULL, COMPOSER_RETURN_FAIL, "cd->recipient_list is NULL");
+
+       RECIPIENT_ITEM_S *r_item = NULL;
+       D_MSG("recipient_cnt = %d", eina_list_count(cd->recipient_list));
+
+       EINA_LIST_FREE(cd->recipient_list, r_item) {
+               if (r_item)
+                       g_free(r_item);
+               else
+                       D_EMSG("r_item is null");
+       }
+
+       cd->recipient_list = NULL;
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_set_loaded_data(void *data, const char *recipient, int index)
+{
+       D_MSG_RETVM_IF(data == NULL, COMPOSER_RETURN_FAIL, "data is NULL");
+       D_MSG_RETVM_IF(recipient == NULL, COMPOSER_RETURN_FAIL, "recipient is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (msg_ui_composer_recipient_count_get(cd->recipient) >= COMPOSER_RECIPIENT_COUNT_MAX)
+               return COMPOSER_RETURN_RECIPIENT_COUNTMAX;
+
+       if (msg_ui_composer_recipient_duplicate_check(cd->recipient, recipient) == COMPOSER_RETURN_RECIPIENT_DUPLICATE)
+               return COMPOSER_RETURN_RECIPIENT_DUPLICATE;
+
+       if (msg_ui_composer_recipient_vaild_check(recipient) == EINA_FALSE)
+               return COMPOSER_RETURN_RECIPIENT_INVALID;
+       else
+               return msg_ui_composer_recipient_append(cd->recipient, recipient, index);
+}
+
+void msg_ui_composer_recipient_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, const char *font_sytle)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(font_sytle == NULL, "font_sytle is NULL");
+
+       Evas_Object* entry = NULL;
+
+       if (cd->recipient && cd->recipient->mbe) {
+               entry = elm_multibuttonentry_entry_get(cd->recipient->mbe);
+               elm_entry_text_style_user_push(entry, font_sytle);
+       }
+
+       D_LEAVE;
+}
+
diff --git a/composer/src/ui-composer/msg-ui-composer-subject.c b/composer/src/ui-composer/msg-ui-composer-subject.c
new file mode 100755 (executable)
index 0000000..c00869e
--- /dev/null
@@ -0,0 +1,473 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* includes*/
+#include <Elementary.h>
+#include "msg-ui-composer-subject.h"
+#include "msg-ui-composer-recipient.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-common.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-body.h"
+#include "msg-ui-composer-popup.h"
+#include "msg-ui-composer-attachment.h"
+#include "msg-ui-composer-main.h"      /*for page duration, it should be removed if more option concept is changed*/
+
+/* defines*/
+#define MSGC_SUBJECT_CHAR_MAX  40
+#define MSGC_SUBJECT_BYTE_MAX  0
+
+/* function definitions*/
+static void __msg_composer_subject_guidetext_show(SUBJECT_S *sd)
+{
+       D_MSG_RETM_IF(sd == NULL, "Subject Data is Invalid");
+       D_MSG_RETM_IF(sd->layout== NULL, "Subject Layout is Invalid");
+       D_MSG("Subject Guide Text Show");
+
+       edje_object_part_text_set(_EDJ(sd->layout), "subject.guidetxt", MSGC_STR_SUBJECT);
+}
+
+static void __msg_composer_subject_guidetext_hide(SUBJECT_S *sd)
+{
+       D_MSG_RETM_IF(sd == NULL, "Subject Data is Invalid");
+       D_MSG_RETM_IF(sd->layout== NULL, "Subject Layout is Invalid");
+       D_MSG("Subject Guide Text Hide");
+
+       edje_object_part_text_set(_EDJ(sd->layout), "subject.guidetxt", "");
+}
+
+static void __msg_composer_subject_entry_press_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {
+               elm_entry_context_menu_disabled_set(obj, EINA_TRUE);
+               elm_entry_magnifier_disabled_set(obj, EINA_TRUE);
+       } else {
+               elm_entry_context_menu_disabled_set(obj, EINA_FALSE);
+               elm_entry_magnifier_disabled_set(obj, EINA_FALSE);
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_composer_subject_entry_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       int attach_count = msg_ui_composer_get_attach_count(cd);
+
+       if (attach_count > 1)
+               msg_ui_composer_contract_attach_list(cd);
+
+       D_LEAVE;
+}
+
+static void __msg_composer_subject_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       char *subject = NULL;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       if (cd->sub_data.entry) {
+               subject = elm_entry_markup_to_utf8(elm_entry_entry_get(cd->sub_data.entry));
+
+               if (subject) {
+                       if ((elm_object_focus_get(cd->sub_data.entry) == EINA_FALSE) && (strlen(subject) == 0)) {
+                               __msg_composer_subject_guidetext_show(&cd->sub_data);
+                       } else {
+                               __msg_composer_subject_guidetext_hide(&cd->sub_data);
+                       }
+
+                       g_free(subject);
+               }
+       }
+
+       if (msg_ui_composer_common_is_send_possible(cd)) {
+               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+               msg_ui_composer_body_update_send_btn_icon(cd, false);
+               msg_ui_composer_body_info_area_update(cd);
+       } else {
+               elm_object_disabled_set(cd->send_button, EINA_TRUE);
+               msg_ui_composer_body_update_send_btn_icon(cd, true);
+               edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", "");// remove character count
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_composer_subject_entry_focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG("FOCUS GET = %d", elm_object_focus_get(obj));
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {
+               /* if focused_cb is called twice becuase of double click, move focus to popup */
+               if (msg_ui_composer_popup_exist(cd))
+                       msg_ui_composer_popup_focus(cd);
+
+               return;
+       }
+
+       /* change body scroller size */
+       int keypad_h = msg_ui_composer_get_keypad_height(obj);
+       msg_ui_composer_change_body_scroll_size(cd, keypad_h);
+
+       __msg_composer_subject_guidetext_hide(&cd->sub_data);
+       msg_ui_composer_last_focused_entry_set(data, cd->sub_data.entry);
+
+       /* show delete button */
+       edje_object_signal_emit(_EDJ(cd->sub_data.layout), "show.delete", "*");
+
+
+       D_LEAVE;
+}
+
+static void __msg_composer_subject_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       char *subject = NULL;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG("FOCUS GET = %d", elm_object_focus_get(obj));
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       if (cd->sub_data.entry) {
+               subject = elm_entry_markup_to_utf8(elm_entry_entry_get(cd->sub_data.entry));
+
+               if (subject) {
+                       if ((elm_object_focus_get(cd->sub_data.entry) == EINA_FALSE) && (strlen(subject) == 0)) {
+                               __msg_composer_subject_guidetext_show(&cd->sub_data);
+                       } else {
+                               __msg_composer_subject_guidetext_hide(&cd->sub_data);
+                       }
+
+                       g_free(subject);
+               }
+       }
+       /* hide delete button */
+       edje_object_signal_emit(_EDJ(cd->sub_data.layout), "hide.delete", "*");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_composer_subject_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       msg_ui_composer_remove_subject_layout(cd);
+
+       if (!msg_ui_composer_common_is_send_possible(cd)) {
+               elm_object_disabled_set(cd->send_button, EINA_TRUE);
+               msg_ui_composer_body_update_send_btn_icon(cd, true);
+               edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", "");/* remove character count*/
+       } else {
+               elm_object_disabled_set(cd->send_button, EINA_FALSE);
+               msg_ui_composer_body_update_send_btn_icon(cd, false);
+               msg_ui_composer_body_info_area_update(cd);
+       }
+
+       cd->isSubject = false;
+
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {
+               msg_ui_composer_message_type_check_and_change(cd);
+       } else {
+               /* focus change to the first page of message body*/
+               MSG_COMPOSER_BODY_PAGE_S *first_page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(cd->body_data.page_list, 0);
+
+               if (first_page_data) {
+                       if (!elm_object_focus_get(first_page_data->entry)) {
+                               D_MSG("ENTRY FOCUS CHANGE");
+                               msg_ui_composer_last_focused_entry_set(cd, first_page_data->entry);
+                               cd->current_edit_entry = 0;
+                               msg_ui_composer_last_focus_load(cd);
+                       }
+               }
+
+               msg_ui_composer_message_type_check_and_change(cd);
+       }
+
+       D_LEAVE;
+}
+
+static void __msgc_subject_delete_btn_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_DEL_BTN_PRESS_ICON);
+}
+
+static void __msgc_subject_delete_btn_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(obj == NULL, "obj is NULL");
+       elm_image_file_set(obj, MSG_IMAGES_EDJ, MSGC_IMG_SUBJECT_DEL_ICON);
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_read_subject(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       const char *entry_text = NULL;
+       char *body_text = NULL;
+       int body_length = 0;
+
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer Data is Invalid");
+       D_MSG_RETVM_IF(cd->isSubject == false, COMPOSER_RETURN_FAIL, "Subject is NOT Exist");
+       D_MSG_RETVM_IF(cd->sub_data.entry == NULL, COMPOSER_RETURN_FAIL, "Subject Entry is NOT Exist");
+
+       entry_text = elm_entry_entry_get(cd->sub_data.entry);
+       if (entry_text) {
+               body_text = elm_entry_markup_to_utf8(entry_text);
+
+               if (body_text) {
+
+                       body_length = strlen(body_text);
+                       if (body_length > 0) {
+                               msg_ui_composer_message_set_subject(body_text, body_length);
+                       } else {
+                               D_MSG("Subject Text is Empty");
+                       }
+
+                       g_free(body_text);
+               }
+
+       } else {
+               D_MSG("Subject Text is Empty");
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_remove_subject_layout(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_NULL_POINTER, "Composer Data is Invalid");
+
+       if (cd->isSubject) {
+               if (cd->sub_data.entry) {
+                       Evas_Object *last_entry = msg_ui_composer_last_focused_entry_get(cd);
+                       if (last_entry && (last_entry == cd->sub_data.entry)) {
+                               msg_ui_composer_last_focused_entry_set(cd, NULL);
+                       }
+
+                       evas_object_smart_callback_del(cd->sub_data.entry, "changed", __msg_composer_subject_entry_changed_cb);
+                       evas_object_smart_callback_del(cd->sub_data.entry, "preedit,changed", __msg_composer_subject_entry_changed_cb);
+                       evas_object_smart_callback_del(cd->sub_data.entry, "focused", __msg_composer_subject_entry_focused_cb);
+                       evas_object_smart_callback_del(cd->sub_data.entry, "unfocused", __msg_composer_subject_entry_unfocused_cb);
+
+                       evas_object_del(cd->sub_data.entry);
+                       cd->sub_data.entry = NULL;
+               }
+
+               if (cd->sub_data.del_icon) {
+                       evas_object_event_callback_del(cd->sub_data.del_icon, EVAS_CALLBACK_MOUSE_DOWN, __msgc_subject_delete_btn_down_cb);
+                       evas_object_event_callback_del(cd->sub_data.del_icon, EVAS_CALLBACK_MOUSE_UP, __msgc_subject_delete_btn_up_cb);
+               }
+
+               if (cd->sub_data.layout) {
+                       evas_object_del(cd->sub_data.layout);
+                       cd->sub_data.layout = NULL;
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_subject_clear(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       return msg_ui_composer_remove_subject_layout(cd);
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_subject_set_loaded_data(void *data, const char *subject)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_NULL_POINTER, "Composer Data is Invalid");
+
+       if (!cd->isSubject && subject && strlen(subject) > 0) {
+               cd->isSubject = true;
+               if (msg_ui_composer_add_subject(cd) != COMPOSER_RETURN_SUCCESS) {
+                       return COMPOSER_RETURN_FAIL;
+               }
+       }
+
+       if (cd->sub_data.entry) {
+               elm_entry_entry_set(cd->sub_data.entry, subject);
+       }
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+Evas_Object *msg_ui_composer_create_subject_entry(Evas_Object *parent, MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       Evas_Object *entry = NULL;
+       Ecore_IMF_Context *entry_ctx = NULL;
+       static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer Data is Invalid");
+       D_MSG_RETVM_IF(parent == NULL, NULL, "Parent Layout is Invalid");
+
+       entry = elm_entry_add(parent);
+       D_MSG_RETVM_IF(entry == NULL, NULL, "Fail to Create Entry");
+
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+       evas_object_size_hint_weight_set(entry, 0.0, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(entry, 0.0, EVAS_HINT_FILL);
+       /* fix font size */
+       char font_style[DEF_BUF_LEN_S + 1] = {0,};
+       int font_size = msg_ui_composer_get_font_size(COMPOSER_TYPE_SUBJECT);
+
+       if (font_size > 0)
+               snprintf(font_style, sizeof(font_style), "DEFAULT='font_size=%d'", font_size);
+       else
+               snprintf(font_style, sizeof(font_style), "DEFAULT='font_size=%d'", MSGC_SUBJECT_FONT_SIZE);
+
+       elm_entry_text_style_user_push(entry, font_style);
+
+       evas_object_show(entry);
+
+       /* add entry filter for changing text to UTF8 if it is markups */
+       limit_filter_data.max_char_count = MSGC_SUBJECT_CHAR_MAX;
+       limit_filter_data.max_byte_count = MSGC_SUBJECT_BYTE_MAX;
+       elm_entry_markup_filter_append(entry, msg_composer_entry_filter_remove_markup, cd);
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
+
+       evas_object_smart_callback_add(entry, "changed", __msg_composer_subject_entry_changed_cb, cd);
+       evas_object_smart_callback_add(entry, "preedit,changed", __msg_composer_subject_entry_changed_cb, cd);
+       evas_object_smart_callback_add(entry, "focused", __msg_composer_subject_entry_focused_cb, cd);
+       evas_object_smart_callback_add(entry, "unfocused", __msg_composer_subject_entry_unfocused_cb, cd);
+       evas_object_smart_callback_add(entry, "press", __msg_composer_subject_entry_press_cb, cd);
+       evas_object_smart_callback_add(entry, "clicked", __msg_composer_subject_entry_clicked_cb, cd);
+
+       entry_ctx = elm_entry_imf_context_get(entry);
+       ecore_imf_context_input_panel_event_callback_add((Ecore_IMF_Context *)entry_ctx, ECORE_IMF_INPUT_PANEL_STATE_EVENT, msg_ui_composer_entry_imf_state_cb, cd);
+       ecore_imf_context_input_panel_event_callback_add((Ecore_IMF_Context *)entry_ctx, ECORE_IMF_INPUT_PANEL_GEOMETRY_EVENT, msg_ui_composer_entry_imf_resize_cb, cd);
+
+       cd->sub_data.entry = entry;
+
+       D_LEAVE;
+       return entry;
+}
+
+Evas_Object *msg_ui_composer_create_subject_layout(Evas_Object *parent, MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       Evas_Object *layout = NULL;
+       Evas_Object *entry = NULL;
+       Evas_Object *del_icon = NULL;
+
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer Data is Invalid");
+       D_MSG_RETVM_IF(parent == NULL, NULL, "Parent Layout is Invalid");
+
+       layout = elm_layout_add(parent);
+       elm_layout_file_set(layout, msg_ui_composer_edj_get(cd), MSGC_EDJ_GRP_SUBJECT_FIELD);
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       /* add entry */
+       entry = msg_ui_composer_create_subject_entry(layout, cd);
+       D_MSG_RETVM_IF(entry == NULL, NULL, "Fail to Create Subject Entry");
+
+       elm_object_part_content_set(layout, "subject.swl.entry", entry);
+
+       /* add guide text */
+       edje_object_part_text_set(_EDJ(layout), "subject.guidetxt", MSGC_STR_SUBJECT);
+
+       /* create del_button */
+       del_icon = elm_icon_add(parent);
+       elm_image_file_set(del_icon, MSG_IMAGES_EDJ, MSGC_IMG_SUBJECT_DEL_ICON);
+       evas_object_size_hint_weight_set(del_icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(del_icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       evas_object_data_set(del_icon, "layout", layout);
+       elm_object_part_content_set(layout, "subject.swl.del_button", del_icon);
+
+       evas_object_smart_callback_add(del_icon, "clicked", __msg_ui_composer_subject_delete_clicked_cb, cd);
+       evas_object_event_callback_add(del_icon, EVAS_CALLBACK_MOUSE_DOWN, __msgc_subject_delete_btn_down_cb, NULL);
+       evas_object_event_callback_add(del_icon, EVAS_CALLBACK_MOUSE_UP, __msgc_subject_delete_btn_up_cb, NULL);
+
+       cd->sub_data.layout = layout;
+       cd->sub_data.del_icon = del_icon;
+
+       evas_object_show(layout);
+
+       D_LEAVE;
+       return layout;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_add_subject(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       Evas_Object *sub_layout = NULL;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer Data is Invalid");
+
+       sub_layout = msg_ui_composer_create_subject_layout(cd->ly_body, cd);
+       D_MSG_RETVM_IF(sub_layout == NULL, COMPOSER_RETURN_FAIL, "Fail to Create Subject Layout");
+
+       /* subject layout is packed on the body main box */
+       if (cd->body_box)
+               elm_box_pack_start(cd->body_box, sub_layout);
+
+       cd->isSubject = true;
+
+       msg_ui_composer_message_type_check_and_change(cd);
+
+       if (!cd->isLoad) {
+               if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {
+                       msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK);
+               } else {
+                       /* if added recipient is not invalid number, change entry focus to the subject */
+                       msg_ui_composer_last_focused_entry_set(cd, cd->sub_data.entry);
+                       msg_ui_composer_last_focus_load(cd);
+               }
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+void msg_ui_composer_subject_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, const char *font_sytle)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(font_sytle == NULL, "font_sytle is NULL");
+
+       Evas_Object *entry = cd->sub_data.entry;
+
+       if (cd->isSubject && entry) {
+               elm_entry_text_style_user_push(entry, font_sytle);
+       }
+
+       D_LEAVE;
+}
+
diff --git a/composer/src/util/msg-ui-composer-util.c b/composer/src/util/msg-ui-composer-util.c
new file mode 100755 (executable)
index 0000000..06d8e12
--- /dev/null
@@ -0,0 +1,1444 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <contacts.h>
+#include <image_util.h>
+#include <libexif/exif-data.h>
+#include <tapi_common.h>
+#include <TapiUtility.h>
+#include <TelPower.h>
+#include <ITapiModem.h>
+#include <vconf.h>
+#include <drm_client.h>
+#include <utilX.h>
+
+#include "msg-ui-composer-data.h"
+#include "msg-ui-composer-util.h"
+#include "msg-ui-composer-message.h"
+#include "msg-ui-composer-common.h"
+
+#define EMAIL_ADDR_LEN_MAX 256
+#define ADDR_LEN_MIN 1
+
+#define MSG_CREATION_MODE_SMALL_IMG_WIDTH      160
+#define MSG_CREATION_MODE_SMALL_IMG_HEIGHT     120
+#define MSG_CREATION_MODE_LARGE_IMG_WIDTH      640
+#define MSG_CREATION_MODE_LARGE_IMG_HEIGHT     480
+
+/* information of exif value
+1 : top left
+2 : top right
+3 : bottom right
+4 : bottom left
+5 : left top
+6 : right top
+7 : right bottom
+8 : left bottom
+*/
+enum MSGC_EXIF_ORIENTATION {
+    MSGC_EXIF_NOT_AVAILABLE = 0,
+    MSGC_EXIF_NORMAL = 1,
+    MSGC_EXIF_HFLIP = 2,
+    MSGC_EXIF_ROT_180 = 3,
+    MSGC_EXIF_VFLIP = 4,
+    MSGC_EXIF_TRANSPOSE = 5,
+    MSGC_EXIF_ROT_90 = 6,
+    MSGC_EXIF_TRANSVERSE = 7,
+    MSGC_EXIF_ROT_270 = 8
+};
+
+COMPOSER_UTIL_ADDRTYPE_E get_address_type(const char *address)
+{
+       COMPOSER_UTIL_ADDRTYPE_E addrtype = COMPOSER_UTIL_ADDRTYPE_INVALID;
+
+       if (!address) {
+               D_EMSG("No input address");
+               return addrtype;
+       }
+
+       if (IsValidNumber(address) == EINA_TRUE) {
+               addrtype = COMPOSER_UTIL_ADDRTYPE_NUMBER;
+               D_MSG("It is number type![%s]", address);
+       } else if (IsVaildEmailAddress(address) == EINA_TRUE) {
+               addrtype = COMPOSER_UTIL_ADDRTYPE_EMAIL;
+               D_MSG("It is email type![%s]", address);
+       } else {
+               D_MSG("It is not email or number type![%s]", address);
+       }
+
+       return addrtype;
+}
+
+Eina_Bool IsMultipleNumber(int index)
+{
+       D_ENTER;
+       int ct_err = CONTACTS_ERROR_NONE;
+
+       contacts_list_h list = NULL;
+       contacts_query_h query = NULL;
+       contacts_filter_h filter = NULL;
+
+       unsigned int num_list_count = 0;
+       unsigned int email_list_count = 0;
+       unsigned int list_count;
+
+       contacts_query_create(_contacts_simple_contact._uri, &query);
+       contacts_filter_create(_contacts_simple_contact._uri, &filter);
+       contacts_filter_add_int(filter, _contacts_simple_contact.person_id, CONTACTS_MATCH_EQUAL, index);
+       contacts_query_set_filter(query, filter);
+
+       ct_err = contacts_db_get_records_with_query(query, 0, 0, &list);
+       contacts_filter_destroy(filter);
+       contacts_query_destroy(query);
+
+       if (ct_err != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_err);
+               contacts_list_destroy(list, true);
+               return EINA_FALSE;
+       }
+
+       ct_err = contacts_list_get_count(list, &list_count);
+       D_MSG("list_count = %d", list_count);
+
+       while (CONTACTS_ERROR_NONE == ct_err) {
+               contacts_record_h ct_value = NULL;
+               contacts_list_h number_list = NULL;
+               contacts_list_h email_list = NULL;
+               int contact_id;
+
+               contacts_list_get_current_record_p(list, &ct_value);
+
+               if (ct_value) {
+                       contacts_record_get_int(ct_value, _contacts_simple_contact.id, &contact_id);
+
+                       if (contact_id > 0) {
+                               /* get number list count */
+                               contacts_query_create(_contacts_number._uri, &query);
+                               contacts_filter_create(_contacts_number._uri, &filter);
+                               contacts_filter_add_int(filter, _contacts_number.contact_id, CONTACTS_MATCH_EQUAL, contact_id);
+                               contacts_query_set_filter(query, filter);
+
+                               ct_err = contacts_db_get_records_with_query(query, 0, 0, &number_list);
+                               contacts_filter_destroy(filter);
+                               contacts_query_destroy(query);
+
+                               if (ct_err != CONTACTS_ERROR_NONE) {
+                                       D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_err);
+                                       ct_err = contacts_list_next(list);
+                                       contacts_list_destroy(number_list, true);
+                                       continue;
+                               }
+
+                               contacts_list_get_count(number_list, &num_list_count);
+                               contacts_list_destroy(number_list, true);
+
+                               /* get mail list count */
+                               contacts_query_create(_contacts_email._uri, &query);
+                               contacts_filter_create(_contacts_email._uri, &filter);
+                               contacts_filter_add_int(filter, _contacts_email.contact_id, CONTACTS_MATCH_EQUAL, contact_id);
+                               contacts_query_set_filter(query, filter);
+
+                               ct_err = contacts_db_get_records_with_query(query, 0, 0, &email_list);
+                               contacts_filter_destroy(filter);
+                               contacts_query_destroy(query);
+
+                               if (ct_err != CONTACTS_ERROR_NONE) {
+                                       D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_err);
+                                       ct_err = contacts_list_next(list);
+                                       contacts_list_destroy(email_list, true);
+                                       continue;
+                               }
+
+                               contacts_list_get_count(email_list, &email_list_count);
+                               contacts_list_destroy(email_list, true);
+                       } else {
+                               D_EMSG("Invalid contact_id = %d", contact_id);
+                       }
+               } else {
+                       D_EMSG("contacts_list_get_current_record_p is failed");
+               }
+
+               ct_err = contacts_list_next(list);
+       }
+
+       contacts_list_destroy(list, true);
+
+       D_MSG("num_list_count = %d", num_list_count);
+       D_MSG("email_list_count = %d", email_list_count);
+
+       D_LEAVE;
+       if (num_list_count + email_list_count > 1)
+               return EINA_TRUE;
+
+       return EINA_FALSE;
+}
+
+Eina_Bool IsValidNumber(const char *address)
+{
+       D_ENTER;
+
+       if (!address)
+               return EINA_FALSE;
+
+       int addrlen = strlen(address);
+
+       if (addrlen < ADDR_LEN_MIN) {
+               D_EMSG("Too short address");
+               return EINA_FALSE;
+       }
+
+       const char *oneChar = address;
+       int digitCount = 0;
+
+       if (*oneChar == '+')
+               ++oneChar;
+
+       if (!(*oneChar)) {
+               return EINA_FALSE;
+       }
+
+       while (*oneChar) {
+               if (!isdigit(*oneChar) && (*oneChar != '*') && (*oneChar != '#') && (*oneChar != '-'))
+                       return EINA_FALSE;
+
+               if (isdigit(*oneChar))
+                       ++digitCount;
+
+               ++oneChar;
+       }
+
+       if (!digitCount)
+               return EINA_FALSE;
+
+       D_LEAVE;
+       return EINA_TRUE;
+}
+
+Eina_Bool IsVaildEmailAddress(const char *address)
+{
+       D_ENTER;
+
+       char *oneChar;
+       Eina_Bool isPrefixCorrect = EINA_FALSE;
+       Eina_Bool isSurfixCorrect = EINA_FALSE;
+       Eina_Bool isExistAt = EINA_FALSE;
+
+       int addrlen;
+
+       if (address == NULL) {
+               D_EMSG("Input address is NULL");
+               return EINA_FALSE;
+       }
+
+       oneChar = (char *)address;
+       addrlen = strlen(address);
+
+       if (addrlen == 0 || addrlen > EMAIL_ADDR_LEN_MAX)
+               return EINA_FALSE;
+
+       for (; *oneChar != '\0'; ++oneChar) {
+               if (isExistAt == EINA_FALSE) {
+                       if (isalnum(*oneChar) || *oneChar == '.' || *oneChar == '_' || *oneChar == '-') {
+                               isPrefixCorrect = EINA_TRUE;
+                               continue;
+                       } else if (*oneChar == '@') {
+                               if (isPrefixCorrect == EINA_FALSE)
+                                       return EINA_FALSE;
+                               else
+                                       isExistAt = EINA_TRUE;
+                       } else {
+                               return EINA_FALSE;
+                       }
+               } else {
+                       if (isalnum(*oneChar) || *oneChar == '.' || *oneChar == '_' || *oneChar == '-') {
+                               isSurfixCorrect = EINA_TRUE;
+                               continue;
+                       } else {
+                               return EINA_FALSE;
+                       }
+               }
+       }
+
+       D_LEAVE;
+       return (isPrefixCorrect && isSurfixCorrect && isExistAt);
+}
+
+int get_contact_index_by_recipient(const char *address)
+{
+       int index = -1;
+       int ct_err = CONTACTS_ERROR_NONE;
+       contacts_list_h list = NULL;
+       contacts_query_h query = NULL;
+       contacts_filter_h filter = NULL;
+
+       /* get number list first */
+       contacts_query_create(_contacts_person_number._uri, &query);
+       contacts_filter_create(_contacts_person_number._uri, &filter);
+       contacts_filter_add_str(filter, _contacts_person_number.number_filter, CONTACTS_MATCH_EXACTLY, address);
+       contacts_query_set_filter(query, filter);
+
+       ct_err = contacts_db_get_records_with_query(query, 0, 0, &list);
+       contacts_filter_destroy(filter);
+       contacts_query_destroy(query);
+       filter = NULL;
+       query = NULL;
+
+       if (ct_err != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_err);
+               contacts_list_destroy(list, true);
+               return index;
+       }
+
+       while (CONTACTS_ERROR_NONE == ct_err) {
+               contacts_record_h ct_value = NULL;
+               contacts_list_get_current_record_p(list, &ct_value);
+
+               if (ct_value) {
+                       contacts_record_get_int(ct_value, _contacts_person_number.person_id, &index);
+                       if (index > 0) {
+                               contacts_list_destroy(list, true);
+                               return index;
+                       }
+               }
+
+               ct_err = contacts_list_next(list);
+       }
+
+       contacts_list_destroy(list, true);
+       list = NULL;
+
+       /* get email list second */
+       contacts_query_create(_contacts_person_email._uri, &query);
+       contacts_filter_create(_contacts_person_email._uri, &filter);
+       contacts_filter_add_str(filter, _contacts_person_email.email, CONTACTS_MATCH_EXACTLY, address);
+       contacts_query_set_filter(query, filter);
+
+       ct_err = contacts_db_get_records_with_query(query, 0, 0, &list);
+       contacts_filter_destroy(filter);
+       contacts_query_destroy(query);
+
+       if (ct_err != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_err);
+               contacts_list_destroy(list, true);
+               return index;
+       }
+
+       while (CONTACTS_ERROR_NONE == ct_err) {
+               contacts_record_h ct_value = NULL;
+               contacts_list_get_current_record_p(list, &ct_value);
+
+               if (ct_value) {
+                       contacts_record_get_int(ct_value, _contacts_person_email.person_id, &index);
+                       if (index > 0) {
+                               contacts_list_destroy(list, true);
+                               return index;
+                       }
+               }
+
+               ct_err = contacts_list_next(list);
+       }
+
+       contacts_list_destroy(list, true);
+
+       return index;
+}
+
+int get_contact_index_by_name(const char *display_name)
+{
+       int index = -1;
+       int ct_err;
+
+       contacts_list_h list = NULL;
+       contacts_query_h query = NULL;
+       contacts_filter_h filter = NULL;
+
+       /* get number list first */
+       contacts_query_create(_contacts_person._uri, &query);
+       contacts_filter_create(_contacts_person._uri, &filter);
+       contacts_filter_add_str(filter, _contacts_person.display_name, CONTACTS_MATCH_EXACTLY, display_name);
+       contacts_query_set_filter(query, filter);
+
+       ct_err = contacts_db_get_records_with_query(query, 0, 0, &list);
+       contacts_filter_destroy(filter);
+       contacts_query_destroy(query);
+
+       if (ct_err != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_err);
+               contacts_list_destroy(list, true);
+               return index;
+       }
+
+       while (CONTACTS_ERROR_NONE == ct_err) {
+               contacts_record_h ct_value = NULL;
+               contacts_list_get_current_record_p(list, &ct_value);
+               if (ct_value) {
+                       contacts_record_get_int(ct_value, _contacts_person.id, &index);
+                       if (index > 0) {
+                               contacts_list_destroy(list, true);
+                               return index;
+                       }
+               }
+
+               ct_err = contacts_list_next(list);
+       }
+
+       contacts_list_destroy(list, true);
+
+       return index;
+}
+
+int get_contact_display_name_by_index(int index, char *dest, int dest_size)
+{
+       D_MSG_RETVM_IF(dest == NULL, COMPOSER_RETURN_FAIL, "dest is NULL");
+
+       int ct_ret = CONTACTS_ERROR_NONE;
+       int ret = COMPOSER_RETURN_SUCCESS;
+       char *display = NULL;
+       contacts_record_h ct_value = NULL;
+
+       ct_ret = contacts_db_get_record(_contacts_person._uri, index, &ct_value);
+       if (ct_ret != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_record is failed ct_ret = %d", ct_ret);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       contacts_record_get_str_p(ct_value, _contacts_person.display_name, &display);
+
+       if (!display) {
+               D_EMSG("display name is NULL");
+               ret = COMPOSER_RETURN_FAIL;
+       } else {
+               if (strlen(display)) {
+                       strncpy(dest, display, dest_size);
+               } else {
+                       ret = COMPOSER_RETURN_FAIL;
+               }
+       }
+
+       contacts_record_destroy(ct_value, true);
+
+       return ret;
+}
+
+int get_contact_default_number_by_index(int index, char *dest, int dest_size)
+{
+       D_MSG_RETVM_IF(dest == NULL, COMPOSER_RETURN_FAIL, "dest is NULL");
+
+       int ret = COMPOSER_RETURN_FAIL;
+       int ct_ret;
+       char *default_num = NULL;
+
+       contacts_list_h list = NULL;
+       contacts_query_h query;
+       contacts_filter_h filter;
+
+       /* get number list first */
+       contacts_query_create(_contacts_person_number._uri, &query);
+       contacts_filter_create(_contacts_person_number._uri, &filter);
+       contacts_filter_add_int(filter, _contacts_person_number.person_id, CONTACTS_MATCH_EXACTLY, index);
+       contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND);
+       contacts_filter_add_bool(filter, _contacts_person_number.is_primary_default, true);
+       contacts_query_set_filter(query, filter);
+
+       ct_ret = contacts_db_get_records_with_query(query, 0, 0, &list);
+       contacts_filter_destroy(filter);
+       contacts_query_destroy(query);
+
+       if (ct_ret != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_ret);
+               contacts_list_destroy(list, true);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       while (CONTACTS_ERROR_NONE == ct_ret) {
+               contacts_record_h ct_value = NULL;
+               contacts_list_get_current_record_p(list, &ct_value);
+               if (ct_value) {
+                       contacts_record_get_str_p(ct_value, _contacts_person_number.number, &default_num);
+
+                       if (default_num && *default_num) {
+                               strncpy(dest, default_num, dest_size);
+                               ret = COMPOSER_RETURN_SUCCESS;
+                               break;
+                       }
+               }
+
+               ct_ret = contacts_list_next(list);
+       }
+
+       contacts_list_destroy(list, true);
+
+       return ret;
+}
+
+int get_contact_default_email_by_index(int index, char *dest, int dest_size)
+{
+       D_MSG_RETVM_IF(dest == NULL, COMPOSER_RETURN_FAIL, "dest is NULL");
+
+       int ret = COMPOSER_RETURN_FAIL;
+       int ct_ret;
+       char *default_num = NULL;
+
+       contacts_list_h list = NULL;
+       contacts_query_h query;
+       contacts_filter_h filter;
+
+       /* get number list first */
+       contacts_query_create(_contacts_person_email._uri, &query);
+       contacts_filter_create(_contacts_person_email._uri, &filter);
+       contacts_filter_add_int(filter, _contacts_person_email.person_id, CONTACTS_MATCH_EXACTLY, index);
+       contacts_filter_add_bool(filter, _contacts_person_email.is_primary_default, true);
+       contacts_query_set_filter(query, filter);
+
+       ct_ret = contacts_db_get_records_with_query(query, 0, 0, &list);
+       contacts_filter_destroy(filter);
+       contacts_query_destroy(query);
+
+       if (ct_ret != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_records_with_query is failed error_code = %d", ct_ret);
+               contacts_list_destroy(list, true);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       while (CONTACTS_ERROR_NONE == ct_ret) {
+               contacts_record_h ct_value = NULL;
+               contacts_list_get_current_record_p(list, &ct_value);
+               if (ct_value) {
+                       contacts_record_get_str_p(ct_value, _contacts_person_email.email, &default_num);
+                       if (default_num && *default_num) {
+                               strncpy(dest, default_num, dest_size);
+                               ret = COMPOSER_RETURN_SUCCESS;
+                               break;
+                       }
+               }
+
+               ct_ret = contacts_list_next(list);
+       }
+
+       contacts_list_destroy(list, true);
+
+       return ret;
+}
+
+int get_contact_default_recipient_by_index(int index, char *dest, int dest_size)
+{
+       int ret;
+       ret = get_contact_default_number_by_index(index, dest, dest_size);
+       if (!ret) {
+               ret = get_contact_default_email_by_index(index, dest, dest_size);
+               if (!ret) {
+                       D_MSG("fail of get default recipient");
+               } else {
+                       D_MSG("get default email %s", dest);
+               }
+       } else {
+               D_MSG("get default number %s", dest);
+       }
+       return ret;
+}
+
+static bool __make_namecard(int person_id, char *file_path)
+{
+       D_MSG_RETVM_IF(file_path == NULL, false, "file_path is NULL");
+       int ct_ret = CONTACTS_ERROR_NONE;
+       char *vcard = NULL;
+       FILE *vcard_file = NULL;
+       contacts_record_h ct_value = NULL;
+
+       ct_ret = contacts_db_get_record(_contacts_person._uri, person_id, &ct_value);
+       if (ct_ret != CONTACTS_ERROR_NONE) {
+               D_EMSG("contacts_db_get_record is failed error_code = %d", ct_ret);
+               return false;
+       }
+
+       ct_ret = contacts_vcard_make_from_person(ct_value, &vcard);
+       if (ct_ret == CONTACTS_ERROR_NONE) {
+               vcard_file = fopen(file_path, "wt");
+               if (vcard_file == NULL) {
+                       contacts_record_destroy(ct_value, true);
+                       g_free(vcard);
+                       return false;
+               }
+
+               fprintf(vcard_file, "%s", vcard);
+               fclose(vcard_file);
+               g_free(vcard);
+
+               contacts_record_destroy(ct_value, true);
+               return true;
+       } else {
+               D_EMSG("contacts_vcard_make_from_person is failed ct_ret = %d", ct_ret);
+       }
+
+       contacts_record_destroy(ct_value, true);
+
+       return false;
+}
+
+#ifdef SUPPORT_MULTI_SELECT_VCARD
+static char* __get_vcard_filepath(const char *path)
+{
+       time_t timer = 0;
+       struct tm *stime = NULL;
+       char buf[COMPOSER_FILEPATH_LEN_MAX + 1] = {0,};
+
+       timer = time(NULL);
+       stime = localtime(&timer);
+       D_MSG_RETVM_IF(stime == NULL, NULL, "stime is NULL");
+
+       snprintf(buf, sizeof(buf), "%s/contacts_%02d%02d%02d%02d%02d%02d.vcf", path,
+                       stime->tm_year-100, stime->tm_mon+1, stime->tm_mday,
+                       stime->tm_hour, stime->tm_min, stime->tm_sec);
+
+       return strdup(buf);
+}
+#endif
+
+static char *__get_detail_vcard_filepath(int index, const char *path)
+{
+       int ct_ret = CONTACTS_ERROR_NONE;
+       char temp[COMPOSER_FILEPATH_LEN_MAX + 1] = {0,};
+       char display[COMPOSER_FILEPATH_LEN_MAX + 1] = {0,};
+       char filepath[COMPOSER_FILEPATH_LEN_MAX + 1] = {0,};
+       char *display_name = NULL;
+       contacts_record_h ct_value = NULL;
+
+       if (path == NULL)
+               path = MSGC_UI_DAT_PATH;
+
+       ct_ret = contacts_db_get_record(_contacts_person._uri, index, &ct_value);
+
+       if (ct_ret == CONTACTS_ERROR_NONE) {
+               contacts_record_get_str_p(ct_value, _contacts_person.display_name, &display_name);
+
+               if (display_name && display_name[0] != '\0')
+                       snprintf(temp, sizeof(temp), "%s", display_name);
+
+               contacts_record_destroy(ct_value, true);
+       } else {
+               D_EMSG("contacts_db_get_record is failed ct_ret = %d, index = %d", ct_ret, index);
+       }
+
+       if (temp[0] != '\0')
+               snprintf(display, sizeof(display), "%s", temp);
+       else
+               snprintf(display, sizeof(display), "%s", _SYSSTR("IDS_COM_BODY_NO_NAME"));
+
+       snprintf(filepath, sizeof(filepath), "%s/%s.vcf", path, display);
+
+       return strdup(filepath);
+}
+
+bool msg_composer_get_vcf_file_by_index(int index, char *strpath, int sizepath)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(strpath == NULL, false, "strpath is NULL");
+       bool ret = true;
+       char *filepath = NULL;
+
+       filepath = __get_detail_vcard_filepath(index, MSGC_UI_DAT_PATH);
+       D_MSG("make vcard path [%s]", filepath);
+
+       if (filepath == NULL) {
+               char tmp_filepath[COMPOSER_FILEPATH_LEN_MAX + 1] = {0,};
+               snprintf(tmp_filepath, sizeof(tmp_filepath), "%s/vcard_%d.vcf", MSGC_UI_DAT_PATH, index);
+               filepath = strdup(tmp_filepath);
+       }
+
+       if (filepath == NULL) {
+               D_EMSG("filepath is NULL");
+               return false;
+       }
+
+       if (__make_namecard(index, filepath) == false) {
+               D_EMSG("Fail of make namecard");
+               ret = false;
+       }
+
+       strncpy(strpath, filepath, sizepath);
+
+       free(filepath);
+
+       D_LEAVE;
+       return ret;
+}
+
+char *msg_composer_create_working_dir(void)
+{
+       D_ENTER;
+       char *base_dir = "/tmp/message";
+       char working_path[DEF_PATH_MAX + 1] = {0,};
+       int i = 0;
+
+       /*Create base dir*/
+       if (ecore_file_exists(base_dir) == EINA_FALSE) {
+               if(ecore_file_mkdir(base_dir) == EINA_FALSE) {
+                       return NULL;
+               }
+       }
+
+       /*Create work dir*/
+       do {
+
+               bzero(working_path, DEF_PATH_MAX);
+               snprintf(working_path, sizeof(working_path), "%s/composer_%d/", base_dir, i);
+               if (ecore_file_exists(working_path) == EINA_FALSE) {
+                       if (ecore_file_mkdir(working_path) == EINA_FALSE) {
+                               return NULL;
+                       } else {
+                               D_MSG("Success to create working path = %s", working_path);
+                               return strdup(working_path);
+                       }
+                       break;
+               }
+               i++;
+       } while(i < 255);
+
+       return NULL;
+}
+
+bool msg_composer_get_network_status(int *network_status)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(network_status == NULL, false, "param is NULL");
+
+       int svc_type = -1;
+
+       if (vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type) < 0) {
+               D_EMSG("vconf_get_int(svc_type) is failed !!");
+               return false;
+       } else {
+               D_MSG("network_status = %d", svc_type);
+               *network_status = svc_type;
+       }
+
+       return true;
+}
+
+bool msg_composer_get_flight_mode(int *flight_mode)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(flight_mode == NULL, false, "uri is NULL");
+
+       if (vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, flight_mode) < 0) {
+               D_EMSG("vconf_get_int(flight_mode) is failed !!");
+               return false;
+       } else {
+               D_MSG("flight_mode = %d", *flight_mode);
+       }
+
+       D_LEAVE;
+       return true;
+}
+
+bool msg_composer_set_flight_mode(bool flight_mode)
+{
+       D_ENTER;
+
+       if (vconf_set_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, flight_mode) < 0) {
+               D_EMSG("vconf_set_bool(flight_mode) is failed !!");
+               return false;
+       }
+
+       D_LEAVE;
+       return true;
+}
+
+bool msg_composer_set_flight_mode_by_api(void *handle, int type, void *callback, void *user_data)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(handle == NULL, false, "handle is NULL");
+       TapiHandle *tapi_handle = (TapiHandle *)handle;
+       tapi_response_cb cb = (tapi_response_cb)callback;
+       tapi_power_flight_mode_type_t flight_mode_type = (tapi_power_flight_mode_type_t)type;
+       int err = TAPI_API_SUCCESS;
+
+       err = tel_set_flight_mode(tapi_handle, flight_mode_type, cb, user_data);
+       if (err != TAPI_API_SUCCESS) {
+               D_EMSG("tel_set_flight_mode is failed");
+               return false;
+       }
+
+       D_LEAVE;
+       return true;
+}
+
+void msg_ui_composer_grab_key_setting(void *disp, void *win)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(disp == NULL, "disp is NULL");
+       D_MSG_RETM_IF(win == NULL, "xwin is NULL");
+
+       utilx_grab_key((Ecore_X_Display *)disp, elm_win_xwindow_get((Evas_Object *)win), KEY_VOLUMEUP, EXCLUSIVE_GRAB);
+       utilx_grab_key((Ecore_X_Display *)disp, elm_win_xwindow_get((Evas_Object *)win), KEY_VOLUMEDOWN, EXCLUSIVE_GRAB);
+}
+
+void msg_ui_composer_ungrab_key_setting(void *disp, void *win)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(disp == NULL, "disp is NULL");
+       D_MSG_RETM_IF(win == NULL, "xwin is NULL");
+
+       utilx_ungrab_key((Ecore_X_Display *)disp, elm_win_xwindow_get((Evas_Object *)win), KEY_VOLUMEUP);
+       utilx_ungrab_key((Ecore_X_Display *)disp, elm_win_xwindow_get((Evas_Object *)win), KEY_VOLUMEDOWN);
+}
+
+Eina_List *make_tokenize_list(const char *ori_string, const char *sep)
+{
+       D_ENTER;
+
+       Eina_List *e_list = NULL;
+       char *p = NULL;
+       char *copy_string;
+       char *save_p;
+
+       if (!ori_string) {
+               D_EMSG("Input string is NULL");
+               return NULL;
+       }
+
+       copy_string = MSG_STRDUP(ori_string);
+
+       if (copy_string) {
+               p = strtok_r(copy_string, sep, &save_p);
+
+               if (p)
+                       D_MSG("list item = %s", p);
+
+               while (p) {
+                       char *c = MSG_STRDUP(p);
+
+                       e_list = eina_list_append(e_list, c);
+
+                       p = strtok_r(NULL, sep, &save_p);
+
+                       if (p)
+                               D_MSG("list item = %s", p);
+               }
+
+               g_free(copy_string);
+       }
+
+       D_LEAVE;
+       return e_list;
+}
+
+void convert_ps_to_br(char *input)
+{
+       const char *char_ps = "<ps>";
+       char *ptr = NULL;
+
+       if (!input)
+               return;
+       while ((ptr = strstr(input, char_ps))) {
+               ptr[1] = 'b';
+               ptr[2] = 'r';
+       }
+
+       return;
+}
+
+int remove_space(const char *src, char *dest, int dest_size)
+{
+   int s_pos=0, d_pos=0, src_size;
+
+   if(NULL == src) {
+      D_MSG("The parameter(src) is NULL");
+      dest[d_pos] = '\0';
+      return d_pos;
+   }
+   src_size = strlen(src);
+
+   while(src[s_pos] != 0)
+   {
+        if(src[s_pos] == ' ') {
+            s_pos++;
+            continue;
+         }
+
+                memcpy(dest+d_pos, src+s_pos, 1);
+         d_pos++;
+         s_pos++;
+
+                if(d_pos >= dest_size - 1) break;
+   }
+
+   dest[d_pos] = '\0';
+   return d_pos;
+}
+
+int jpeg_image_get_rotation(const char *src_file_path, int *rotation)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(ecore_file_exists(src_file_path) == EINA_FALSE, COMPOSER_UTIL_RET_ERR, "There is not exist src file path = %s", src_file_path);
+       D_MSG_RETVM_IF(rotation == NULL, COMPOSER_UTIL_RET_ERR, "rotation is NULL");
+
+       int ret = COMPOSER_UTIL_RET_SUCCESS;
+       ExifData *exif_data = NULL;
+
+       exif_data = exif_data_new_from_file(src_file_path);
+       if (exif_data) {
+               ExifEntry *exif_entry = NULL;
+               exif_entry = exif_data_get_entry(exif_data, EXIF_TAG_ORIENTATION);
+
+               if (exif_entry) {
+                       ExifByteOrder byte_order = exif_data_get_byte_order(exif_data);
+                       short exif_value = exif_get_short(exif_entry->data, byte_order);
+                       D_MSG("value = %d", exif_value);
+
+                       if (exif_value >= MSGC_EXIF_NOT_AVAILABLE && exif_value <= MSGC_EXIF_ROT_270) {
+                               *rotation = exif_value;
+                       } else {
+                               *rotation = 0;
+                       }
+               } else {
+                       D_EMSG("exif_entry is NULL");
+                       ret = COMPOSER_UTIL_RET_ERR;
+               }
+
+               exif_data_unref(exif_data);
+       } else {
+               D_MSG("There is not exif data");
+               ret = COMPOSER_UTIL_RET_ERR;
+       }
+
+       D_LEAVE;
+       return ret;
+}
+
+int jpeg_image_get_resolution(const char *src_file_path, int *dst_w, int *dst_h)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(ecore_file_exists(src_file_path) == EINA_FALSE, COMPOSER_UTIL_RET_ERR, "There is not exist src file path = %s", src_file_path);
+       D_MSG_RETVM_IF((dst_w == NULL || dst_h == NULL), COMPOSER_UTIL_RET_ERR, "Parameter is Invalid dst_w = %p, dst_h = %p", dst_w, dst_h);
+
+       int ret = IMAGE_UTIL_ERROR_NONE;
+
+       /*decode jpeg file*/
+       unsigned char *image_buffer = NULL;
+       unsigned int buffer_size = 0;
+
+       ret = image_util_decode_jpeg(src_file_path, IMAGE_UTIL_COLORSPACE_RGB888, &image_buffer, dst_w, dst_h, &buffer_size);
+       if (ret != IMAGE_UTIL_ERROR_NONE) {
+               D_EMSG("image_util_decode_jpeg is failed ret = %d", ret);
+               return COMPOSER_UTIL_RET_ERR;
+       }
+
+       if (image_buffer)
+               free(image_buffer);
+
+       D_MSG("Image Resolution is (%d x %d)", *dst_w, *dst_h);
+
+       D_LEAVE;
+       return COMPOSER_UTIL_RET_SUCCESS;
+}
+
+int jpeg_image_rotate_image(const char *src_file_path, int rotation, const char *dst_file_path)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(src_file_path == NULL, COMPOSER_UTIL_RET_ERR, "src_file_path is NULL");
+       D_MSG_RETVM_IF(dst_file_path == NULL, COMPOSER_UTIL_RET_ERR, "dst_file_path is NULL");
+
+       int ret = IMAGE_UTIL_ERROR_NONE;
+       unsigned char *dst = NULL;
+       unsigned char *image_buffer = NULL;
+       int width = 0;
+       int height = 0;
+       int dest_width = 0;
+       int dest_height = 0;
+       unsigned int size = 0;
+       unsigned int dst_size = 0;
+       image_util_rotation_e rot = IMAGE_UTIL_ROTATION_NONE;
+
+       if (ecore_file_exists(src_file_path) == EINA_FALSE) {
+               D_EMSG("There is not exist src file path = %s", src_file_path);
+               return COMPOSER_UTIL_RET_ERR;
+       }
+
+       if (rotation != MSGC_EXIF_ROT_90 && rotation != MSGC_EXIF_ROT_180 && rotation != MSGC_EXIF_ROT_270) {
+               D_EMSG("Rotation is not required rotation = %d", rotation);
+               return COMPOSER_UTIL_RET_ERR;
+       }
+
+       /*decode jpeg file*/
+       ret = image_util_decode_jpeg(src_file_path, IMAGE_UTIL_COLORSPACE_RGB888, &image_buffer, &width, &height, &size);
+       if (ret != IMAGE_UTIL_ERROR_NONE) {
+               D_EMSG("image_util_decode_jpeg is failed ret = %d", ret);
+               return COMPOSER_UTIL_RET_ERR;
+       }
+
+       if (rotation == MSGC_EXIF_ROT_90 || rotation == MSGC_EXIF_ROT_270) {
+               dest_width = height;
+               dest_height = width;
+       } else {
+               dest_width = width;
+               dest_height = height;
+       }
+
+       /*get size about resize img*/
+       ret = image_util_calculate_buffer_size(dest_width, dest_height, IMAGE_UTIL_COLORSPACE_RGB888, &dst_size);
+       if (ret != IMAGE_UTIL_ERROR_NONE) {
+               D_EMSG("image_util_calculate_buffer_size is failed ret = %d", ret);
+               goto err_return;
+       }
+
+       if (dst_size > 0) {
+               D_MSG("dst_size = %d", dst_size);
+               dst = calloc(1, dst_size);
+               if (dst == NULL) {
+                       D_EMSG("fail of memory allocation size = %d", dst_size);
+                       goto err_return;
+               }
+       } else {
+               D_EMSG("no data size = %d", dst_size);
+               goto err_return;
+       }
+
+       /* convert rotation value */
+       if (rotation == MSGC_EXIF_ROT_90)
+               rot = IMAGE_UTIL_ROTATION_90;
+       else if (rotation == MSGC_EXIF_ROT_180)
+               rot = IMAGE_UTIL_ROTATION_180;
+       else if (rotation == MSGC_EXIF_ROT_270)
+               rot = IMAGE_UTIL_ROTATION_270;
+
+       dest_width = 0;
+       dest_height = 0;
+
+       D_MSG("rotation : %d => rot : %d", rotation, rot);
+
+       /* rotate image */
+       image_util_rotate(dst, &dest_width, &dest_height, rot, image_buffer, width, height, IMAGE_UTIL_COLORSPACE_RGB888);
+       if (ret != IMAGE_UTIL_ERROR_NONE) {
+               D_EMSG("image_util_rotate is failed ret = %d", ret);
+               goto err_return;
+       }
+
+       D_MSG("[rotate image] (%d x %d)->(%d x %d)", width, height, dest_width, dest_height);
+
+       /*save image to dst file path*/
+       ret = image_util_encode_jpeg(dst, dest_width, dest_height, IMAGE_UTIL_COLORSPACE_RGB888, 90, dst_file_path);
+       if (ret != IMAGE_UTIL_ERROR_NONE) {
+               D_EMSG("image_util_encode_jpeg is failed ret = %d", ret);
+               goto err_return;
+       }
+
+       if (image_buffer)
+               free(image_buffer);
+
+       if (dst)
+               free(dst);
+
+       D_LEAVE;
+       return COMPOSER_UTIL_RET_SUCCESS;
+
+err_return:
+       if (image_buffer)
+               free(image_buffer);
+
+       if (dst)
+               free(dst);
+
+       return COMPOSER_UTIL_RET_ERR;
+}
+
+int jpeg_image_change_image(const char *src_file_path, MSGC_UTIL_CHANGE_IMAGE_S *req, const char *dst_file_path)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(src_file_path == NULL, COMPOSER_UTIL_RET_ERR, "src_file_path is NULL");
+       D_MSG_RETVM_IF(dst_file_path == NULL, COMPOSER_UTIL_RET_ERR, "dst_file_path is NULL");
+       D_MSG_RETVM_IF(req == NULL, COMPOSER_UTIL_RET_ERR, "req is NULL");
+
+       int ret = IMAGE_UTIL_ERROR_NONE;
+       unsigned char *dst = NULL;
+       unsigned char *image_buffer = NULL;
+       int width = 0;
+       int height = 0;
+       unsigned int size = 0;
+       unsigned int dst_size = 0;
+       int quality = 0;
+
+       if (ecore_file_exists(src_file_path) == EINA_FALSE) {
+               D_EMSG("There is not exist src file path = %s", src_file_path);
+               return COMPOSER_UTIL_RET_ERR;
+       }
+
+       /*decode jpeg file*/
+       ret = image_util_decode_jpeg(src_file_path, IMAGE_UTIL_COLORSPACE_RGB888, &image_buffer, &width, &height, &size);
+       if (ret != IMAGE_UTIL_ERROR_NONE) {
+               D_EMSG("image_util_decode_jpeg is failed ret = %d", ret);
+               return COMPOSER_UTIL_RET_ERR;
+       }
+
+       /* resize image */
+       if (req->type & MSGC_IMAGE_CHANGE_RESIZE) {
+               D_MSG("MSGC_IMAGE_CHANGE_RESIZE image");
+               int dest_width = req->dest_width;
+               int dest_height = req->dest_height;
+
+               if (dest_width <= 0 || dest_height <= 0) {
+                       D_EMSG("There is not valid dst width = %d, height = %d", dest_width, dest_height);
+                       goto err_return;
+               }
+
+               /*get size about resize img*/
+               ret = image_util_calculate_buffer_size(dest_width, dest_height, IMAGE_UTIL_COLORSPACE_RGB888, &dst_size);
+               if (ret != IMAGE_UTIL_ERROR_NONE) {
+                       D_EMSG("image_util_calculate_buffer_size is failed ret = %d", ret);
+                       goto err_return;
+               }
+
+               if (dst_size > 0) {
+                       D_MSG("dst_size = %d", dst_size);
+                       dst = calloc(1, dst_size);
+                       if (dst == NULL) {
+                               D_EMSG("fail of memory allocation size = %d", dst_size);
+                               goto err_return;
+                       }
+               } else {
+                       D_EMSG("no data size = %d", dst_size);
+                       goto err_return;
+               }
+
+               dst_size = 0;
+
+               /* resize image */
+               D_MSG("[resize image] src = %s(%d x %d)->(%d x %d)", src_file_path, width, height, dest_width, dest_height);
+
+               ret = image_util_resize(dst, &dest_width, &dest_height, image_buffer, width, height, IMAGE_UTIL_COLORSPACE_RGB888);
+               if (ret != IMAGE_UTIL_ERROR_NONE) {
+                       D_EMSG("image_util_resize is failed ret = %d", ret);
+                       goto err_return;
+               }
+
+               if (dest_width != req->dest_width || dest_height != req->dest_height)
+                       D_EMSG("size is changed!! resized image (%d x %d)", dest_width, dest_height);
+
+               if (image_buffer) {
+                       free(image_buffer);
+                       image_buffer = NULL;
+               }
+
+               image_buffer = dst;
+               width = dest_width;
+               height = dest_height;
+               dst = NULL;
+       }
+
+       /* rotate image */
+       if (req->type & MSGC_IMAGE_CHANGE_ROTATION) {
+               D_MSG("MSGC_IMAGE_CHANGE_ROTATION image");
+               int rotation = req->rotation;
+
+               if (rotation != MSGC_EXIF_ROT_90 && rotation != MSGC_EXIF_ROT_180 && rotation != MSGC_EXIF_ROT_270) {
+                       D_MSG("Rotation is not required rotation = %d", rotation);
+               } else {
+                       int dest_width = 0;
+                       int dest_height = 0;
+                       image_util_rotation_e rot = IMAGE_UTIL_ROTATION_NONE;
+
+                       if (rotation == MSGC_EXIF_ROT_90 || rotation == MSGC_EXIF_ROT_270) {
+                               dest_width = height;
+                               dest_height = width;
+                       } else {
+                               dest_width = width;
+                               dest_height = height;
+                       }
+
+                       /*get size about resize img*/
+                       ret = image_util_calculate_buffer_size(dest_width, dest_height, IMAGE_UTIL_COLORSPACE_RGB888, &dst_size);
+                       if (ret != IMAGE_UTIL_ERROR_NONE) {
+                               D_EMSG("image_util_calculate_buffer_size is failed ret = %d", ret);
+                               goto err_return;
+                       }
+
+                       if (dst_size > 0) {
+                               D_MSG("dst_size = %d", dst_size);
+                               dst = calloc(1, dst_size);
+                               if (dst == NULL) {
+                                       D_EMSG("fail of memory allocation size = %d", dst_size);
+                                       goto err_return;
+                               }
+                       } else {
+                               D_EMSG("no data size = %d", dst_size);
+                               goto err_return;
+                       }
+
+                       /* convert rotation value */
+                       if (rotation == MSGC_EXIF_ROT_90)
+                               rot = IMAGE_UTIL_ROTATION_90;
+                       else if (rotation == MSGC_EXIF_ROT_180)
+                               rot = IMAGE_UTIL_ROTATION_180;
+                       else if (rotation == MSGC_EXIF_ROT_270)
+                               rot = IMAGE_UTIL_ROTATION_270;
+
+                       dest_width = 0;
+                       dest_height = 0;
+
+                       D_MSG("rotation : %d => rot : %d", rotation, rot);
+
+                       /* rotate image */
+                       image_util_rotate(dst, &dest_width, &dest_height, rot, image_buffer, width, height, IMAGE_UTIL_COLORSPACE_RGB888);
+                       if (ret != IMAGE_UTIL_ERROR_NONE) {
+                               D_EMSG("image_util_rotate is failed ret = %d", ret);
+                               goto err_return;
+                       }
+
+                       D_MSG("[rotate image] (%d x %d)->(%d x %d)", width, height, dest_width, dest_height);
+
+                       if (image_buffer) {
+                               free(image_buffer);
+                               image_buffer = NULL;
+                       }
+
+                       image_buffer = dst;
+                       width = dest_width;
+                       height = dest_height;
+                       dst = NULL;
+               }
+       }
+
+       /* set quality */
+       if (req->type & MSGC_IMAGE_CHANGE_QUAILTY) {
+               D_MSG("MSGC_IMAGE_CHANGE_QUAILTY image");
+               quality = req->quality;
+       } else {
+               quality = 90;
+       }
+
+       /* save image to dst file path*/
+       ret = image_util_encode_jpeg(image_buffer, width, height, IMAGE_UTIL_COLORSPACE_RGB888, quality, dst_file_path);
+       if (ret != IMAGE_UTIL_ERROR_NONE) {
+               D_EMSG("image_util_encode_jpeg is failed ret = %d", ret);
+               goto err_return;
+       }
+
+       if (image_buffer) {
+               free(image_buffer);
+               image_buffer = NULL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_UTIL_RET_SUCCESS;
+
+err_return:
+       if (image_buffer) {
+               free(image_buffer);
+               image_buffer = NULL;
+       }
+
+       if (dst) {
+               free(dst);
+               dst = NULL;
+       }
+
+       return COMPOSER_UTIL_RET_ERR;
+}
+
+COMPOSER_UTIL_RETURN_E msg_composer_is_allowed_creation_mode(const char *file_path, COMPOSER_MEDIA_TYPE_E media_type, int creation_mode)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(file_path == NULL, COMPOSER_UTIL_RET_ERR, "file_path is NULL");
+
+       char *ext = msg_composer_get_file_ext(file_path);
+       int dst_w = 0;
+       int dst_h = 0;
+
+       if (media_type == COMPOSER_MEDIA_TYPE_IMAGE) {
+               if ((strcasecmp(ext, "jpg") != 0) && (strcasecmp(ext, "jpeg") != 0)
+                       && (strcasecmp(ext, "gif") != 0) && (strcasecmp(ext, "wbmp") != 0)) {
+                               return COMPOSER_UTIL_RET_NOT_ALLOWED;
+               } else {
+                       /* Check High resoluton*/
+                       jpeg_image_get_resolution(file_path, &dst_w, &dst_h);
+                       if (dst_w > MSG_CREATION_MODE_LARGE_IMG_WIDTH || dst_h > MSG_CREATION_MODE_LARGE_IMG_HEIGHT) {
+                               if (creation_mode == MSG_CREATION_MODE_WARNING)
+                                       return COMPOSER_UTIL_RET_NOT_ALLOWED;
+                               else
+                                       return COMPOSER_UTIL_RET_ALLOWED_WITH_RESIZE;
+                       }
+               }
+       } else if (media_type == COMPOSER_MEDIA_TYPE_VIDEO) {
+               if ((strcasecmp(ext, "3gp") != 0) && (strcasecmp(ext, "3gpp") != 0)) {
+                       return COMPOSER_UTIL_RET_NOT_ALLOWED;
+               }
+       } else if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+               if ((strcasecmp(ext, "amr") != 0) && (strcasecmp(ext, "mid") != 0) && (strcasecmp(ext, "midi") != 0)) {
+                       return COMPOSER_UTIL_RET_NOT_ALLOWED;
+               }
+       } else {
+               D_MSG("It check only Image, Video, Audio type, media_type[%d] is not need to check", media_type);
+       }
+
+       D_LEAVE;
+       return COMPOSER_UTIL_RET_ALLOWED;
+}
+
+COMPOSER_UTIL_RETURN_E msg_composer_is_drm_file(const char *file_path)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(file_path == NULL, COMPOSER_UTIL_RET_ERR, "file_path is NULL");
+
+       drm_bool_type_e is_drm_file = DRM_FALSE;
+       if (drm_is_drm_file(file_path, &is_drm_file) == DRM_RETURN_SUCCESS &&
+               is_drm_file == DRM_TRUE) {
+               return COMPOSER_UTIL_RET_SUCCESS;
+       }
+
+       return COMPOSER_UTIL_RET_ERR;
+}
+
+COMPOSER_UTIL_RETURN_E msg_composer_is_drm_forwardlock(const char *file_path)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(file_path == NULL, COMPOSER_UTIL_RET_ERR, "file_path is NULL");
+
+       int ret = DRM_RETURN_SUCCESS;
+       drm_file_info_s drmInfo;
+
+       memset(&drmInfo, 0x0, sizeof(drm_file_info_s));
+
+       ret = drm_get_file_info(file_path, &drmInfo);
+       if (ret != DRM_RETURN_SUCCESS) {
+               D_EMSG("Error drm_get_file_info ret = %d", ret);
+               return COMPOSER_UTIL_RET_ERR;
+       }
+
+       if (drmInfo.oma_info.method == DRM_METHOD_TYPE_FORWARD_LOCK ||
+               drmInfo.oma_info.method == DRM_METHOD_TYPE_COMBINED_DELIVERY) {
+               D_MSG("drm file type %d is not allowed add", drmInfo.oma_info.method);
+               return COMPOSER_UTIL_RET_SUCCESS;
+       }
+
+       return COMPOSER_UTIL_RET_ERR;
+}
+
+
+const char *search_markup_keyword(const char *string, char *searchword,
+                                bool *result)
+{
+       char pstr[DEF_BUF_LEN + 1] = {0,};
+       static char return_string[DEF_BUF_LEN + 1] = { 0, };
+       int word_len = 0;
+       int search_len = 0;
+       int i = 0;
+       bool found = false;
+       gchar* markup_text_start;
+       gchar* markup_text_end;
+
+       if (!searchword) return string;
+
+       if(g_utf8_validate(string,-1,NULL)) {
+
+               strncpy(pstr, string, DEF_BUF_LEN);
+
+               word_len = strlen(pstr);
+               search_len = strlen(searchword);
+
+               for (i = 0; i < word_len; i++) {
+                       if (!strncasecmp(searchword, &pstr[i], search_len)) {
+                               found = true;
+                               break;
+                       }
+               }
+
+               *result = found;
+               memset(return_string, 0x00, DEF_BUF_LEN);
+
+               if (found) {
+                       if (i == 0) {
+                               markup_text_end = g_markup_escape_text(&pstr[search_len], word_len-search_len);
+                               snprintf(return_string,
+                                                       DEF_BUF_LEN,
+                                                       "<match>%s</match>%s",
+                                                       searchword,
+                                                       (char*)markup_text_end);
+                               g_free(markup_text_end);
+                       } else {
+                               markup_text_start = g_markup_escape_text(&pstr[0], i);
+                               markup_text_end =  g_markup_escape_text(&pstr[i+search_len], word_len-(i+search_len));
+                               snprintf(return_string,
+                                                       DEF_BUF_LEN,
+                                                       "%s<match>%s</match>%s",
+                                                       (char*)markup_text_start,
+                                                       searchword,
+                                                       (char*)markup_text_end);
+                               g_free(markup_text_start);
+                               g_free(markup_text_end);
+                       }
+               } else {
+                       snprintf(return_string, DEF_BUF_LEN, "%s", pstr);
+               }
+       }
+
+       return return_string;
+}
+
+bool is_web_uri(const char *uri)
+{
+       D_MSG_RETVM_IF(uri == NULL, false, "uri is NULL");
+
+       static const char* web_protocal_name[] =
+       {
+               "http://",
+               "https://",
+               "ftp://",
+               NULL,
+       };
+
+       int i = 0;
+       while (web_protocal_name[i] != NULL) {
+               if (strncmp(uri, web_protocal_name[i], strlen(web_protocal_name[i])) == 0) {
+                       D_MSG("uri %s is web uri", uri);
+                       return true;
+               }
+
+               i++;
+       }
+
+       D_MSG("Not web uri. %s", uri);
+       return false;
+}
+
+void print_sc_geo(Evas_Object *obj, char *name)
+{
+       Evas_Coord x,y,w,h;
+
+       if (!obj) return;
+               elm_scroller_region_get(obj,&x, &y, &w,&h);
+       D_PRINT("[SCGEO] %s x = %d, y = %d, w =%d, h = %d", name, x, y, w, h);
+
+}
+
+void print_geo(Evas_Object *obj, char *name)
+{
+       Evas_Coord x,y,w,h;
+
+       if (!obj) return;
+       evas_object_geometry_get(obj,&x, &y, &w,&h);
+       D_PRINT("[GEO] %s x = %d, y = %d, w =%d, h = %d", name, x, y, w, h);
+}
+
+void print_edje_geo(Evas_Object *obj, char *name)
+{
+       Evas_Coord x,y,w,h;
+
+       if (!obj) return;
+       edje_object_part_geometry_get(_EDJ(obj), name, &x, &y, &w,&h);
+       D_PRINT("[EDJ_GEO] %s x = %d, y = %d, w =%d, h = %d", name, x, y, w, h);
+}
+
diff --git a/composer/src/util/msg-ui-composer-util.h b/composer/src/util/msg-ui-composer-util.h
new file mode 100755 (executable)
index 0000000..6c49942
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_COMPOSER_UTIL_H__
+#define __MSG_COMPOSER_UTIL_H__
+#include "msg-ui-composer-data.h"
+#include <glib-object.h>
+#include <glib.h>
+#include <ui-gadget-module.h>
+#include "msg-ui-util.h"
+#include <Elementary.h>
+
+#define MSG_STRDUP(src) (NULL != src) ? strdup(src) : NULL
+
+#define MSGC_EVAS_OBJECT_DEL(src) do {\
+       if (src) {\
+               evas_object_del(src);\
+               src = NULL;\
+       }\
+} while(0)
+
+#define MSGC_IMAGE_CHANGE_RESIZE (0x0001)
+#define MSGC_IMAGE_CHANGE_ROTATION (0x0010)
+#define MSGC_IMAGE_CHANGE_QUAILTY (0x0100)
+
+typedef enum {
+       COMPOSER_UTIL_ADDRTYPE_INVALID,
+       COMPOSER_UTIL_ADDRTYPE_NUMBER,
+       COMPOSER_UTIL_ADDRTYPE_EMAIL,
+       COMPOSER_UTIL_ADDRTYPE_MAX,
+} COMPOSER_UTIL_ADDRTYPE_E;
+
+typedef enum {
+       COMPOSER_UTIL_RET_SUCCESS                               = 0,
+       COMPOSER_UTIL_RET_ERR                                   = -1,
+       COMPOSER_UTIL_RET_ALLOWED                               = -2,
+       COMPOSER_UTIL_RET_ALLOWED_WITH_RESIZE   = -3,
+       COMPOSER_UTIL_RET_NOT_ALLOWED                   = -4,
+} COMPOSER_UTIL_RETURN_E;
+
+
+
+/******************************
+ * structures
+ *******************************/
+typedef struct _MSGC_UTIL_CHANGE_IMAGE_S {
+       int type;
+       int dest_width;
+       int dest_height;
+       int rotation;
+       int quality;
+} MSGC_UTIL_CHANGE_IMAGE_S;
+
+COMPOSER_UTIL_ADDRTYPE_E get_address_type(const char *address);
+Eina_Bool IsMultipleNumber(int index);
+Eina_Bool IsValidNumber(const char *address);
+Eina_Bool IsVaildEmailAddress(const char *address);
+
+int get_contact_index_by_recipient(const char *phone_number);
+int get_contact_index_by_name(const char *phone_number);
+int get_contact_display_name_by_index(int index, char *dest, int dest_size);
+int get_contact_default_recipient_by_index(int index, char *dest, int dest_size);
+int get_contact_default_number_by_index(int index, char *dest, int dest_size);
+int get_contact_default_email_by_index(int index, char *dest, int dest_size);
+bool msg_composer_get_vcf_file_by_index(int index, char *strpath, int sizepath);
+
+char *msg_composer_create_working_dir(void);
+
+bool msg_composer_get_network_status(int *network_status);
+bool msg_composer_get_flight_mode(int *flight_mode);
+bool msg_composer_set_flight_mode(bool flight_mode);
+bool msg_composer_set_flight_mode_by_api(void *handle, int type, void *callback, void *user_data);
+
+void msg_ui_composer_grab_key_setting(void *disp, void *win);
+void msg_ui_composer_ungrab_key_setting(void *disp, void *win);
+
+void convert_ps_to_br(char *input);
+Eina_List *make_tokenize_list(const char *ori_string, const char *sep);
+int remove_space(const char *src, char *dest, int dest_size);
+
+int jpeg_image_get_rotation(const char *src_file_path, int *rotation);
+int jpeg_image_get_resolution(const char *src_file_path, int *dst_w, int *dst_h);
+int jpeg_image_rotate_image(const char *src_file_path, int rotation, const char *dst_file_path);
+int jpeg_image_change_image(const char *src_file_path, MSGC_UTIL_CHANGE_IMAGE_S *req, const char *dst_file_path);
+
+COMPOSER_UTIL_RETURN_E msg_composer_is_allowed_creation_mode(const char *file_path, COMPOSER_MEDIA_TYPE_E media_type, int creation_mode);
+COMPOSER_UTIL_RETURN_E msg_composer_is_drm_file(const char *file_path);
+COMPOSER_UTIL_RETURN_E msg_composer_is_drm_forwardlock(const char *file_path);
+
+const char *search_markup_keyword(const char *string, char *searchword, bool *result);
+bool is_web_uri(const char *uri);
+
+void print_geo(Evas_Object *obj, char *name);
+void print_sc_geo(Evas_Object *obj, char *name);
+void print_edje_geo(Evas_Object *obj, char *name);
+
+#endif /*__MSG_COMPOSER_UTIL_H__*/
diff --git a/debian/changelog b/debian/changelog
new file mode 100755 (executable)
index 0000000..9367a96
--- /dev/null
@@ -0,0 +1,7 @@
+message (0.8.2-37) unstable; urgency=low
+
+  * Git: slp/pkgs/m/message-app
+  * Tag: message_0.8.2-37
+
+ -- Jaeyun Jeong <jyjeong@samsung.com>  Mon, 04 Jun 2012 19:00:27 +0900
+
diff --git a/debian/compat b/debian/compat
new file mode 100755 (executable)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100755 (executable)
index 0000000..20b2c4a
--- /dev/null
@@ -0,0 +1,21 @@
+Source: message
+Section: devel
+Priority: optional
+Maintainer: Jaeyun Jeong <jyjeong@samsung.com>, Sangkoo Kim <sangkoo.kim@samsung.com>, Seunghwan Lee <sh.cat.lee@samsung.com>, SoonMin Jung <sm0415.jung@samsung.com>, Jae-Young Lee <jy4710.lee@samsung.com>
+Build-Depends: debhelper (>= 5), libglib2.0-dev, libelm-dev, libecore-dev, libeina-dev, libappcore-common-dev, libappcore-efl-dev,  libslp-msg-service-dev, libslp-setting-dev, libslp-utilx-dev, dlog-dev, libui-gadget-dev, libcontacts-service-dev, libaul-1-dev, libug-contacts-dev, drm-client-dev, libicu-dev, libmm-common-dev,  libmm-player-dev, libmm-utility-dev,  libmm-session-dev, libmm-fileinfo-dev, libmm-player-internal-dev, libappsvc-dev,  libdevman-haptic-dev, libheynoti-dev, capi-appfw-application-dev, syspopup-caller-dev
+Standards-Version: 3.7.2
+Homepage:
+
+Package: org.tizen.message
+Section: devel
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: message application
+Version: 0.1.0
+
+Package: org.tizen.message-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: message application (unstripped)
+Version: 0.1.0
diff --git a/debian/dirs b/debian/dirs
new file mode 100755 (executable)
index 0000000..ca882bb
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/debian/docs b/debian/docs
new file mode 100755 (executable)
index 0000000..7a77580
--- /dev/null
@@ -0,0 +1,2 @@
+CMakeCache.txt
+CMakeLists.txt
diff --git a/debian/org.tizen.message.install.in b/debian/org.tizen.message.install.in
new file mode 100755 (executable)
index 0000000..67b6d4c
--- /dev/null
@@ -0,0 +1,10 @@
+@PREFIX@/bin/*
+@PREFIX@/res/locale/*
+@PREFIX@/res/icons/*
+@PREFIX@/res/images/*
+@PREFIX@/res/edje/*
+@PREFIX@/data
+@PREFIX@/lib/*
+/opt/share/applications/*
+/opt/share/icons/*
+/opt/ug/lib/*
diff --git a/debian/org.tizen.message.postinst.in b/debian/org.tizen.message.postinst.in
new file mode 100755 (executable)
index 0000000..38fa0a8
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+#if [ ${USER} = "root" ]
+if [ "`id -u`" = "0" ]
+then
+       #5000 is inhouse user id
+       chown -R 5000:5000 @DATADIR@
+       /usr/bin/vconftool set -t int db/private/org.tizen.message/font_size 0 -u 5000
+fi
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..811ab78
--- /dev/null
@@ -0,0 +1,126 @@
+#!/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
+LDFLAGS ?= 
+PREFIX ?= /usr/apps/org.tizen.message
+RESDIR ?= /usr/apps/org.tizen.message/res
+DATADIR ?= /opt/usr/apps/org.tizen.message/data
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+       CFLAGS="$(CFLAGS)" 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)
+             
+       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 -f CMakeCache.txt
+       rm -rf CMakeFiles main/CMakeFiles composer/CMakeFiles setting/CMakeFiles viewer/CMakeFiles class0/CMakeFiles dialog/CMakeFiles common/CMakeFiles
+       rm -f cmake_install.cmake main/cmake_install.cmake composer/cmake_install.cmake setting/cmake_install.cmake viewer/cmake_install.cmake class0/cmake_install.cmake dialog/cmake_install.cmake common/cmake_install.cmake
+       rm -f Makefile main/Makefile composer/Makefile setting/Makefile viewer/Makefile class0/Makefile dialog/Makefile common/Makefile
+       rm -f install_manifest.txt main/install_manifest.txt composer/install_manifest.txt setting/install_manifest.txt class0/install_manifest.txt dialog/install_manifest.txt viewer/install_manifest.txt common/install_manifest.txt
+       rm -f main/po/CMakeCache.txt
+       rm -rf main/po/CMakeFiles
+       rm -f main/po/cmake_install.cmake
+       rm -f main/po/Makefile
+#      rm -f po/install_manifest.txt
+
+       rm -f *.so composer/*.so setting/*.so viewer/*.so common/*.so
+       rm -f *.edj thread/theme/*.edj composer/data/composer_edc/*.edj bubble/theme/*.edj setting/theme/*.edj viewer/theme/*.edj common/data/*.edj
+       rm -f main/*.desktop
+       rm -f class0/*.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
+
+
+# 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 --dbg-package=org.tizen.message-dbg
+       dh_compress
+       dh_fixperms
+#      dh_perl
+       dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/dialog/CMakeLists.txt b/dialog/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..d940b09
--- /dev/null
@@ -0,0 +1,47 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(message C)
+
+SET(MESSAGE_DIALOG message-dialog)
+SET(SRCS ./message-dialog.c)
+SET(CMAKE_SKIP_BUILD_RPATH TRUE)
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_COMMON_DIR}
+                               ${CMAKE_SOURCE_DIALOG_DIR}
+                               /usr/include/msg-service/
+)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED elementary dlog capi-appfw-application)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fpie")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DDEBUG")
+ADD_DEFINITIONS("-DDEBUG_ON")
+ADD_DEFINITIONS("-DLCD_TYPE_WVGA")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+
+ADD_EXECUTABLE(${MESSAGE_DIALOG} ${SRCS})
+TARGET_LINK_LIBRARIES(${MESSAGE_DIALOG} ${pkgs_LDFLAGS})
+
+INSTALL(TARGETS ${MESSAGE_DIALOG} DESTINATION bin)
+
+# i18n
+#ADD_SUBDIRECTORY(po)
diff --git a/dialog/message-dialog.c b/dialog/message-dialog.c
new file mode 100755 (executable)
index 0000000..0cdc2bc
--- /dev/null
@@ -0,0 +1,334 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "message-dialog.h"
+#include "app_service.h"
+
+
+static void __msg_ui_dialog_always_ask_left_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_dialog_always_ask_right_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static int __msg_ui_dialog_create_always_ask_popup(void *data);
+static void __msg_ui_dialog_rotate(app_device_orientation_e orientation, void *data);
+static void __msg_ui_dialog_win_del(void *data, Evas_Object *obj, void *event);
+static Evas_Object *__msg_ui_dialog_create_win(const char *name);
+static int parse_opt(int argc, char **argv, struct appdata *ad);
+
+
+void msg_ui_dialog_exit(void *data)
+{
+       struct appdata *ad = data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       if (ad->msg) {
+               g_free(ad->msg);
+               ad->msg = NULL;
+       }
+
+       if (ad->url) {
+               g_free(ad->url);
+               ad->url = NULL;
+       }
+
+       if (ad->popup != NULL) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       if (ad->main_window != NULL) {
+               evas_object_del(ad->main_window);
+               ad->main_window = NULL;
+       }
+
+       elm_exit();
+}
+
+static void __msg_ui_dialog_always_ask_left_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       struct appdata *ad = data;
+       service_h svc_h;
+       int ret = SERVICE_ERROR_NONE;
+
+       ret = service_create(&svc_h);
+       if (ret != SERVICE_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed : %d", ret);
+               return;
+       }
+
+       ret = service_set_operation(svc_h, SERVICE_OPERATION_VIEW);
+       if (ret != SERVICE_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_set_operation() is failed : %d", ret);
+               goto DESTROY;
+       }
+
+       ret = service_set_uri(svc_h, ad->url);
+       if (ret != SERVICE_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_set_uri() is failed : %d", ret);
+               goto DESTROY;
+       }
+
+       ret = service_send_launch_request(svc_h, NULL, NULL);
+       if (ret != SERVICE_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request() is failed : %d", ret);
+       }
+
+DESTROY:
+       ret = service_destroy(svc_h);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "service_destroy() returns : %d", ret);
+
+       msg_ui_dialog_exit(ad);
+}
+
+static void __msg_ui_dialog_always_ask_right_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       struct appdata *ad = data;
+
+       msg_ui_dialog_exit(ad);
+}
+
+static int __msg_ui_dialog_create_always_ask_popup(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       struct appdata *ad = data;
+       char display_msg[100] = { 0, };
+       Evas_Object *btn1;
+       Evas_Object *btn2;
+
+       const char *str = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q");
+       snprintf(display_msg, sizeof(display_msg), str, ad->url);
+
+       ad->popup = elm_popup_add(ad->main_window);
+       if (ad->popup == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Cannot add popup object !!");
+               return MSG_UI_RET_ERR;
+       }
+
+       evas_object_size_hint_weight_set(ad->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(ad->popup, display_msg);
+       elm_popup_orient_set(ad->popup, ELM_POPUP_ORIENT_CENTER);
+
+       btn1 = elm_button_add(ad->popup);
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_YES"));
+       elm_object_part_content_set(ad->popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", __msg_ui_dialog_always_ask_left_btn_cb, ad);
+
+       btn2 = elm_button_add(ad->popup);
+       elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_NO"));
+       elm_object_part_content_set(ad->popup, "button2", btn2);
+       evas_object_smart_callback_add(btn2, "clicked", __msg_ui_dialog_always_ask_right_btn_cb, ad);
+
+       evas_object_show(ad->popup);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+static void __msg_ui_dialog_rotate(app_device_orientation_e orientation, void *data)
+{
+       struct appdata *ad = data;
+       int r;
+
+       if (ad == NULL || ad->main_window == NULL)
+               return;
+
+       switch (orientation) {
+       case APP_DEVICE_ORIENTATION_0:
+               r = 0;
+               break;
+       case APP_DEVICE_ORIENTATION_180:
+               r = 180;
+               break;
+       case APP_DEVICE_ORIENTATION_270:
+               r = 270;
+               break;
+       case APP_DEVICE_ORIENTATION_90:
+               r = 90;
+               break;
+       default:
+               r = -1;
+               break;
+       }
+
+       if (r >= 0) {
+               if (ad->main_window) {
+                       elm_win_rotation_with_resize_set(ad->main_window, r);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid case !!");
+               }
+       }
+}
+
+static void __msg_ui_dialog_win_del(void *data, Evas_Object *obj, void *event)
+{
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       elm_exit();
+}
+
+static Evas_Object *__msg_ui_dialog_create_win(const char *name)
+{
+       Evas_Object *eo = NULL;
+       int w, h;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
+       if (eo) {
+               elm_win_alpha_set(eo, EINA_TRUE);
+               elm_win_title_set(eo, name);
+               elm_win_raise(eo);
+               evas_object_smart_callback_add(eo, "delete,request", __msg_ui_dialog_win_del, NULL);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+               evas_object_resize(eo, w, h);
+               evas_object_show(eo);
+       }
+
+       return eo;
+}
+
+static bool app_create(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       struct appdata *ad = data;
+
+       if (ad->dialog_mode != MSG_UI_DIALOG_MODE_PUSH_MSG_ALWAYS_ASK) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Invalid mode !!");
+               return FALSE;
+       }
+
+       /* init internationalization */
+       if (bindtextdomain(MESSAGE_PKGNAME, LOCALEDIR) == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "bindtextdomain() is failed !!");
+               return FALSE;
+       }
+
+       if (textdomain(MESSAGE_PKGNAME) == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "textdomain() is failed !!");
+               return FALSE;
+       }
+
+       /* Create main window */
+       ad->main_window = __msg_ui_dialog_create_win(PACKAGE);
+       if (ad->main_window == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "__msg_ui_dialog_create_win() is failed !!");
+               return FALSE;
+       }
+
+       if (__msg_ui_dialog_create_always_ask_popup(ad) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "__msg_ui_dialog_create_always_ask_popup() is failed !!");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static void app_terminate(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+}
+
+static void app_pause(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+}
+
+static void app_resume(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+}
+
+static void app_service(service_h service, void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+}
+
+static int parse_opt(int argc, char **argv, struct appdata *ad)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int opt;
+
+       if (ad == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid argument: application data is NULL");
+               return MSG_UI_RET_ERR;
+       }
+
+       while ((opt = getopt(argc, argv, "m:o:u:h")) != -1) {
+               switch (opt) {
+               case 'o':
+                       ad->msg = strdup(optarg);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "optarg = %s", ad->msg);
+                       break;
+
+               case 'm':
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "m  = %s", optarg);
+                       if (g_strcmp0(optarg, "PUSH_MSG_ALWAYS_ASK") == 0) {
+                               ad->dialog_mode = MSG_UI_DIALOG_MODE_PUSH_MSG_ALWAYS_ASK;
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid mode: %s", optarg);
+                               return MSG_UI_RET_ERR;
+                       }
+                       break;
+               case 'u':
+                       ad->url = strdup(optarg);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ad->url = %s", ad->url);
+                       break;
+               case 'h':
+               default:
+                       fprintf(stderr, "Usage: %s [-h] [-m PUSH_MSG_ALWAYS_ASK] [-u LaunchURL] \n", argv[0]);
+                       fprintf(stderr, "ex) %s -m PUSH_MSG_ALWAYS_ASK -u www.google.com \n", argv[0]);
+                       return MSG_UI_RET_ERR;
+               }
+       }
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+int main(int argc, char **argv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       struct appdata ad;
+       memset(&ad, 0x0, sizeof(struct appdata));
+
+       app_event_callback_s event_callback;
+
+       event_callback.create = app_create;
+       event_callback.terminate = app_terminate;
+       event_callback.pause = app_pause;
+       event_callback.resume = app_resume;
+       event_callback.service = app_service;
+       event_callback.low_memory = NULL;
+       event_callback.low_battery = NULL;
+       event_callback.device_orientation = __msg_ui_dialog_rotate;
+       event_callback.language_changed = NULL;
+       event_callback.region_format_changed = NULL;
+
+       if (parse_opt(argc, argv, &ad) == -1) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "parse_opt() is failed !!");
+               return MSG_UI_RET_ERR;
+       }
+
+       return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
diff --git a/dialog/message-dialog.h b/dialog/message-dialog.h
new file mode 100755 (executable)
index 0000000..d818462
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_message_dialog_H_
+#define __DEF_message_dialog_H_
+
+#include <stdio.h>
+#include <glib.h>
+#include <Elementary.h>
+#include <app.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include "msg-ui-util.h"
+
+
+#define PACKAGE "message_dialog" /* for i18n */
+
+
+typedef enum {
+               MSG_UI_DIALOG_MODE_PUSH_MSG_ALWAYS_ASK,
+
+               MSG_UI_DIALOG_MODE_MAX
+
+} MSG_UI_DIALOG_MODE;
+
+struct appdata {
+       Evas_Object *main_window;
+       Evas_Object *popup;
+
+       /* argument */
+       MSG_UI_DIALOG_MODE dialog_mode;
+       char *url;
+       char *msg;
+
+};
+
+void msg_ui_dialog_exit(void *data);
+int main(int argc, char **argv);
+
+#endif /* __DEF_message_dialog_H_ */
+
diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..bf2d55f
--- /dev/null
@@ -0,0 +1,84 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(message C)
+
+SET(SRCS
+       message.c
+       ${CMAKE_SOURCE_THREAD_DIR}/src/msg-ui-thread-main.c
+       ${CMAKE_SOURCE_THREAD_DIR}/src/msg-ui-thread-list.c
+       ${CMAKE_SOURCE_THREAD_DIR}/src/msg-ui-thread-callback.c
+       ${CMAKE_SOURCE_THREAD_DIR}/src/msg-ui-thread-util.c
+)
+
+SET(THREAD_GENLIST  thread_genlist)
+
+SET(CMAKE_SKIP_BUILD_RPATH TRUE)
+SET(CMAKE_INSTALL_RPATH "${LIBDIR}")
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+INCLUDE_DIRECTORIES(
+       ${CMAKE_SOURCE_COMMON_DIR}
+       ${CMAKE_SOURCE_MAIN_DIR}
+       ${CMAKE_SOURCE_THREAD_DIR}/include
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fpie")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" MATCHES "^arm.*")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" MATCHES "^arm.*")
+
+ADD_DEFINITIONS("-DDEBUG")
+ADD_DEFINITIONS("-DDEBUG_ON")
+ADD_DEFINITIONS("-DLCD_TYPE_WVGA")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${CMAKE_LDFLAGS} msg-common)
+
+#Install desktop file & icon.
+INSTALL(TARGETS message DESTINATION bin)
+
+IF("${ARCH}" MATCHES "^arm.*")
+       CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/${PKGNAME}.xml.target ${CMAKE_SOURCE_DIR}/${PKGNAME}.xml)
+ELSE("${ARCH}" MATCHES "^arm.*")
+        CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/${PKGNAME}.xml.emul ${CMAKE_SOURCE_DIR}/${PKGNAME}.xml)
+ENDIF("${ARCH}" MATCHES "^arm.*")
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/${PKGNAME}.xml DESTINATION /usr/share/packages)
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/image/${PKGNAME}.png DESTINATION ${ICONDIR})
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/image/${PKGNAME}.voice.png DESTINATION ${ICONDIR})
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/image/${PKGNAME}.cb.png DESTINATION ${ICONDIR})
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/image/${PKGNAME}.noti.png DESTINATION ${ICONDIR})
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/image/${PKGNAME}.png DESTINATION /usr/share/icons/default/small)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_COMMON_DIR}/data/image/ DESTINATION ${IMGDIR} FILES_MATCHING PATTERN "*.png")
+INSTALL(DIRECTORY ${CMAKE_SOURCE_COMMON_DIR}/data/image/ DESTINATION ${IMGDIR} FILES_MATCHING PATTERN "*.PNG")
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+#INSTALL(FILES ${CMAKE_SOURCE_MAIN_DIR}/${PROJECT_NAME}.ini DESTINATION share/process-info/ )
+
+#EDJ file.
+ADD_CUSTOM_TARGET(${THREAD_GENLIST}.edj
+                COMMAND edje_cc -id ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+                ${CMAKE_SOURCE_THREAD_DIR}/theme/${THREAD_GENLIST}.edc ${CMAKE_SOURCE_THREAD_DIR}/theme/${THREAD_GENLIST}.edj
+                DEPENDS ${CMAKE_SOURCE_THREAD_DIR}/theme/${THREAD_GENLIST}.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} ${THREAD_GENLIST}.edj)
+
+INSTALL(FILES ${CMAKE_SOURCE_THREAD_DIR}/theme/${THREAD_GENLIST}.edj DESTINATION ${EDJDIR})
+
+
+# i18n
+ADD_SUBDIRECTORY(po)
+
diff --git a/main/message.c b/main/message.c
new file mode 100755 (executable)
index 0000000..661040d
--- /dev/null
@@ -0,0 +1,1215 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "message.h"
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <sound_manager.h>
+#include <system_info.h>
+
+#include "msg-ui-thread-main.h"
+#include "msg-ui-common-utility.h"
+
+static void __rotate(app_device_orientation_e orientation, void *data);
+static void __msg_ui_popup_warning(Evas_Object *parent, const char *msg);
+static service_h __msg_ui_parse_sms_uri(service_h service, const char *uri);
+static service_h __msg_ui_parse_mmsto_uri(service_h service, const char *uri);
+static service_h __msg_ui_parse_file_uri(service_h service, const char *uri);
+static service_h __get_service_with_new_msg(struct appdata *ad);
+static service_h __get_service_with_msg_id(struct appdata *ad, service_h service);
+
+void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+void result_cb(ui_gadget_h ug, service_h result, void *priv);
+void destroy_cb(ui_gadget_h ug, void *priv);
+
+struct appdata *gAppData = NULL;
+
+static void win_del(void *data, Evas_Object *obj, void *event)
+{
+       elm_exit();
+}
+
+static void main_quit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       elm_exit();
+}
+
+static void lang_changed(void *data)
+{
+       D_ENTER;
+       struct appdata *ad = data;
+
+       ug_send_event(UG_EVENT_LANG_CHANGE);
+
+       msg_ui_thread_lang_changed(ad->thread_data);
+}
+
+static void low_battery_cb(void *data)
+{
+       D_ENTER;
+
+       ug_send_event(UG_EVENT_LOW_BATTERY);
+}
+
+static void region_changed_cb(void *data)
+{
+       D_ENTER;
+
+       ug_send_event(UG_EVENT_REGION_CHANGE);
+}
+
+static void device_orientation(app_device_orientation_e orientation, void *data)
+{
+       D_ENTER;
+
+       struct appdata *ad = data;
+       if (ad == NULL || ad->win_main == NULL)
+               return;
+
+       __rotate(orientation, data);
+}
+
+static void __rotate(app_device_orientation_e orientation, void *data)
+{
+       struct appdata *ad = data;
+       int ret = 0;
+       int rot = THREAD_ROTATE_ANGLE_UNKNOWN;
+
+       switch (orientation) {
+               case APP_DEVICE_ORIENTATION_0:
+                       rot = THREAD_ROTATE_ANGLE_PORTRAIT;
+                       ret = ug_send_event(UG_EVENT_ROTATE_PORTRAIT);
+                       break;
+               case APP_DEVICE_ORIENTATION_180:
+                       rot = THREAD_ROTATE_ANGLE_PORTRAIT_UPSIDEDOWN;
+                       ret = ug_send_event(UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN);
+                       break;
+               case APP_DEVICE_ORIENTATION_270:
+                       rot = THREAD_ROTATE_ANGLE_LANDSCAPE;
+                       ret = ug_send_event(UG_EVENT_ROTATE_LANDSCAPE);
+                       break;
+               case APP_DEVICE_ORIENTATION_90:
+                       rot = THREAD_ROTATE_ANGLE_LANDSCAPE_UPSIDEDOWN;
+                       ret = ug_send_event(UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN);
+                       break;
+               default:
+                       rot = THREAD_ROTATE_ANGLE_UNKNOWN;
+                       break;
+       }
+
+       if (rot >= 0) {
+               msg_ui_thread_rotation_set(ad->thread_data, rot);
+               elm_win_rotation_with_resize_set(ad->win_main, rot);
+       }
+}
+
+static void _block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       evas_object_del(obj);
+       elm_exit();
+}
+
+static void __msg_ui_popup_warning(Evas_Object *parent, const char *msg)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, parent == NULL || msg == NULL);
+
+       Evas_Object *layout, *pu;
+
+       evas_object_show(parent);
+
+       layout = elm_layout_add(parent);
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, layout);
+       evas_object_show(layout);
+
+       pu = elm_popup_add(layout);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ASSERT, pu == NULL, "Cannot add popup object\n");
+       evas_object_size_hint_weight_set(pu, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_smart_callback_add(pu , "block,clicked", _block_clicked_cb, NULL);
+
+       elm_object_text_set(pu, msg);
+       elm_popup_timeout_set(pu, 2);
+       evas_object_smart_callback_add(pu, "timeout", main_quit_cb, NULL);
+       evas_object_show(pu);
+
+       D_LEAVE;
+}
+
+static service_h __msg_ui_parse_sms_uri(service_h service, const char *uri)
+{
+       D_ENTER;
+
+       char *content = NULL;
+       char *recipient = NULL;
+       char *body_text = NULL;
+
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       char *scheme = g_strdup(uri);
+
+       if (scheme) {
+               strtok_r(scheme, ":", &content);
+
+               if (content) {
+                       if (g_ascii_isdigit(content[0]) || (content[0] == '+' && g_ascii_isdigit(content[1]))) {
+                               recipient = strtok_r(NULL, "?", &content);
+                               D_MSG("APPSVC RECIPIENT = [%s]", recipient);
+
+                               if (recipient)
+                                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
+                       }
+               }
+               g_free(scheme);
+       } else {
+               service_get_extra_data(service, SERVICE_DATA_TO, &recipient);
+               D_MSG("APPSVC RECIPIENT = [%s]", recipient);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
+       }
+
+       /* Add body text */
+       service_get_extra_data(service, SERVICE_DATA_TEXT, &body_text);
+       if (body_text) {
+               D_MSG("APPSVC BODY_TEXT = [%s]", body_text);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_BODY, body_text);
+       }
+
+       D_LEAVE;
+       return svc_handle;
+}
+
+static service_h __msg_ui_parse_mmsto_uri(service_h service, const char *uri)
+{
+       D_ENTER;
+
+       char *content = NULL;
+       char *recipient = NULL;
+       char *body_text = NULL;
+       char *subject = NULL;
+       char *attachment = NULL;
+       char *cc = NULL;
+
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       char *scheme = g_strdup(uri);
+
+       if (scheme) {
+               strtok_r(scheme, ":", &content);
+
+               if (content) {
+                       if (g_ascii_isdigit(content[0]) || (content[0] == '+' && g_ascii_isdigit(content[1]))) {
+                               recipient = strtok_r(NULL, "?", &content);
+                               cc = strtok_r(NULL, "&", &content);
+                               if (cc)
+                                       strtok_r(NULL, "=", &cc);
+
+                               D_MSG("APPSVC RECIPIENT = [%s]", recipient);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
+                       }
+               }
+               g_free(scheme);
+       } else {
+               service_get_extra_data(service, SERVICE_DATA_TO, &recipient);
+               D_MSG("APPSVC RECIPIENT = [%s]", recipient);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
+       }
+
+       /* Add body text */
+       service_get_extra_data(service, SERVICE_DATA_TEXT, &body_text);
+       if (body_text) {
+               D_MSG("APPSVC BODY_TEXT = [%s]", body_text);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_BODY, body_text);
+       }
+
+       /* Add subject */
+       service_get_extra_data(service, SERVICE_DATA_SUBJECT, &subject);
+       if (subject) {
+               D_MSG("APPSVC SUBJECT = [%s]", subject);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_SUBJECT, subject);
+       }
+
+       /* Add attachment */
+       service_get_extra_data(service, MSG_BUNDLE_KEY_ATTACHFILE, &attachment);
+       if (attachment) {
+               D_MSG("APPSVC ATTACHMENT = [%s]", attachment);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_ATTACHFILE, attachment);
+       }
+
+       D_LEAVE;
+
+       return svc_handle;
+}
+
+static service_h __msg_ui_parse_file_uri(service_h service, const char *uri)
+{
+       D_ENTER;
+
+       char *content = NULL;
+       char attachment[DEF_IMG_PATH_LEN] = {0, };
+       int i = 0;
+       int len = 0;
+
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       char *scheme = g_strdup(uri);
+
+       if (scheme) {
+               strtok_r(scheme, ":", &content);
+               D_MSG("content = [%s]", content);
+
+               if (content) {
+                       len = strlen(content) - 2;
+                       if (len <= 0) {
+                               D_EMSG("len is less than 0 !!");
+                               service_destroy(svc_handle);
+                               g_free(scheme);
+                               return NULL;
+                       }
+
+                       /* Remove '//' from content string */
+                       for (i = 0; i < len; i++) {
+                               attachment[i] = content[i+2];
+                       }
+
+                       if (attachment[0] != '\0') {
+                               D_MSG("APPSVC ATTACHMENT = [%s]", attachment);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_ATTACHFILE, attachment);
+                       }
+               }
+               g_free(scheme);
+       } else {
+               D_EMSG("scheme is NULL!!");
+               service_destroy(svc_handle);
+               return NULL;
+       }
+
+       D_LEAVE;
+
+       return svc_handle;
+}
+
+static service_h __get_service_app_svc_op(const char *operation, service_h service)
+{
+       D_ENTER;
+
+       if (service == NULL || operation == NULL)
+               return NULL;
+
+       char *uri = NULL;
+       char *recipient = NULL;
+       char *body_text = NULL;
+       char *attachment = NULL;
+       char *subject = NULL;
+
+       service_h svc_handle = NULL;
+
+       if (g_strcmp0(operation, SERVICE_OPERATION_SEND) == 0) {
+               service_get_uri(service, &uri);
+               D_MSG("APPSVC URI = [%s]", uri);
+
+               if (uri) {
+                       if (g_str_has_prefix(uri, MSG_BUNDLE_VALUE_MMSTO_URI)) {  /* MMS URI */
+                               svc_handle = __msg_ui_parse_mmsto_uri(service, uri);
+                       } else if (g_str_has_prefix(uri, MSG_BUNDLE_VALUE_FILE_URI)) {
+                               /* file URI */
+                               svc_handle = __msg_ui_parse_file_uri(service, uri);
+                               if (svc_handle == NULL) {
+                                       D_MSG("cb is NULL");
+                                       return NULL;
+                               }
+                       } else if (g_str_has_prefix(uri, "/")) {
+                               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                                       D_EMSG("service_create() is failed !!");
+                                       return NULL;
+                               }
+
+                               D_MSG("APPSVC ATTACHMENT = [%s]", uri);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_ATTACHFILE, uri);
+                       } else {
+                               D_MSG("Not supported URI type");
+                               return NULL;
+                       }
+               } else {
+                       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                               D_EMSG("service_create() is failed !!");
+                               return NULL;
+                       }
+
+                       /* Add recipient number */
+                       service_get_extra_data(service, SERVICE_DATA_TO, &recipient);
+                       if (recipient) {
+                               D_MSG("APPSVC RECIPIENT = [%s]", recipient);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
+                       }
+
+                       /* Add body text */
+                       service_get_extra_data(service, SERVICE_DATA_TEXT, &body_text);
+                       if (body_text) {
+                               D_MSG("APPSVC BODY_TEXT = [%s]", body_text);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_BODY, body_text);
+                       }
+
+                       /* Add subject */
+                       service_get_extra_data(service, SERVICE_DATA_SUBJECT, &subject);
+                       if (subject) {
+                               D_MSG("APPSVC SUBJECT = [%s]", subject);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_SUBJECT, subject);
+                       }
+
+                       /* Add attachment */
+                       service_get_extra_data(service, MSG_BUNDLE_KEY_ATTACHFILE, &attachment);
+                       if (attachment) {
+                               D_MSG("APPSVC ATTACHMENT = [%s]", attachment);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_ATTACHFILE, attachment);
+                       }
+               }
+
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_COMPOSE);
+
+       } else if (g_strcmp0(operation, SERVICE_OPERATION_SEND_TEXT) == 0) {
+               service_get_uri(service, &uri);
+               D_MSG("APPSVC URI = [%s]", uri);
+
+               if (uri) {
+                       if (g_str_has_prefix(uri, MSG_BUNDLE_VALUE_SMS_URI)) {  /* SMS URI */
+                               svc_handle = __msg_ui_parse_sms_uri(service, uri);
+                       } else {
+                               D_MSG("Not supported mime type");
+                               return NULL;
+                       }
+               } else {
+                       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                               D_EMSG("service_create() is failed !!");
+                               return NULL;
+                       }
+
+                       /* Add body text */
+                       service_get_extra_data(service, SERVICE_DATA_TEXT, &body_text);
+                       if (body_text) {
+                               D_MSG("APPSVC BODY_TEXT = [%s]", body_text);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_BODY, body_text);
+                       }
+
+                       /* Add recipient number */
+                       service_get_extra_data(service, SERVICE_DATA_TO, &recipient);
+                       if (recipient) {
+                               D_MSG("APPSVC RECIPIENT = [%s]", recipient);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
+                       }
+               }
+
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_COMPOSE);
+       } else if (g_strcmp0(operation, SERVICE_OPERATION_DEFAULT) == 0) {
+               char *key_type = NULL;
+
+               service_get_extra_data(service, MSG_BUNDLE_KEY_TYPE, &key_type);
+               if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_MSG_ID) == 0) {
+                       msg_error_t err = MSG_SUCCESS;
+                       msg_struct_t count_info = msg_create_struct(MSG_STRUCT_COUNT_INFO);
+                       int unread_cnt = 0;
+
+                       err = msg_count_message(gAppData->msgHandle, MSG_INBOX_ID, count_info);
+                       if (err != MSG_SUCCESS) {
+                               msg_release_struct(&count_info);
+                               return NULL;
+                       }
+
+                       msg_get_int_value(count_info, MSG_COUNT_INFO_UNREAD_INT, &unread_cnt);
+                       if (unread_cnt == 1)
+                               svc_handle = __get_service_with_msg_id(gAppData, service);
+
+                       msg_release_struct(&count_info);
+               }
+       }
+
+       D_LEAVE;
+
+       return svc_handle;
+}
+
+static service_h __get_service_with_new_msg(struct appdata *ad)
+{
+       D_ENTER;
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_list_s peerList;
+       msg_struct_t sort_rule_t = msg_create_struct(MSG_STRUCT_SORT_RULE);
+       service_h svc_handle = NULL;
+
+       int i = 0;
+       int new_sms_cnt = 0;
+       int new_mms_cnt = 0;
+       int unreadCnt = 0;
+       char buf[DEF_BUF_LEN_L] = {'0',};
+       char buf_contact[DEF_BUF_LEN] = {'0',};
+
+       msg_set_int_value(sort_rule_t, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+       msg_set_bool_value(sort_rule_t, MSG_SORT_RULE_ACSCEND_BOOL, false);
+
+       vconf_get_int(VCONFKEY_MESSAGE_RECV_SMS_STATE, &new_sms_cnt);
+       vconf_get_int(VCONFKEY_MESSAGE_RECV_MMS_STATE, &new_mms_cnt);
+
+       err = msg_get_thread_view_list(ad->msgHandle, sort_rule_t, &peerList);
+       if (err != MSG_SUCCESS) {
+               msg_release_struct(&sort_rule_t);
+               return NULL;
+       }
+
+       if (peerList.nCount <= 0) {
+               msg_release_list_struct(&peerList);
+               msg_release_struct(&sort_rule_t);
+               return NULL;
+       }
+
+       for (i=0; i<peerList.nCount; i++){
+               msg_get_int_value(peerList.msg_struct_info[i], MSG_THREAD_UNREAD_COUNT_INT, &unreadCnt);
+               if (unreadCnt > 0)
+                       break;
+       }
+
+       if(i >= peerList.nCount) {
+               msg_release_list_struct(&peerList);
+               msg_release_struct(&sort_rule_t);
+               return NULL;
+       }
+
+       msg_get_int_value(peerList.msg_struct_info[i], MSG_THREAD_UNREAD_COUNT_INT, &unreadCnt);
+       if(unreadCnt == new_sms_cnt+new_mms_cnt){
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       D_EMSG("service_create() is failed !!");
+                       msg_release_list_struct(&peerList);
+                       msg_release_struct(&sort_rule_t);
+                       return NULL;
+               }
+
+               msg_struct_list_s *addrList = NULL;
+               int thread_id = 0;
+               int contact_id = 0;
+               char strName[DEF_THREAD_NAME_LEN+1] = {0,};
+               char strNumber[DEF_THREAD_ADDR_LEN+1] = {0,};
+
+               msg_get_int_value(peerList.msg_struct_info[i], MSG_THREAD_ID_INT, &thread_id);
+               msg_get_list_handle(peerList.msg_struct_info[i], MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addrList);
+
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_NEW_MSG);
+               snprintf(buf, DEF_BUF_LEN_L, "%d", thread_id);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, buf);
+               msg_get_str_value(peerList.msg_struct_info[i], MSG_THREAD_NAME_STR, strName, DEF_THREAD_NAME_LEN);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_NAME, strName);
+
+               msg_get_str_value(addrList->msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+               msg_get_int_value(addrList->msg_struct_info[0], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+
+               snprintf(buf_contact, DEF_BUF_LEN, "%d", contact_id);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ADDRESS, strNumber);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_CONTACT_ID, buf_contact);
+       }
+
+       msg_release_struct(&sort_rule_t);
+       msg_release_list_struct(&peerList);
+
+       D_LEAVE;
+
+       return svc_handle;
+}
+
+static service_h __get_service_with_msg_id(struct appdata *ad, service_h service)
+{
+       D_ENTER;
+
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       int msg_id = 0;
+       char *msg_id_str = NULL;
+       service_get_extra_data(service, MSG_BUNDLE_KEY_MSG_ID, &msg_id_str);
+
+       if (!msg_id_str) {
+               service_destroy(svc_handle);
+               return NULL;
+       }
+
+       msg_id = atoi(msg_id_str);
+
+       if (msg_id <= 0) {
+               service_destroy(svc_handle);
+               return NULL;
+       }
+
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       msg_error_t err = MSG_SUCCESS;
+
+       int thread_id = 0;
+       int contact_id = 0;
+       char buf_thread[DEF_BUF_LEN_S] = {0,};
+       char buf_contact[DEF_BUF_LEN_S] = {0,};
+
+       msg_struct_list_s *addr_list = NULL;
+       char strNumber[DEF_THREAD_ADDR_LEN + 1] = {0,};
+       char strName[DEF_THREAD_NAME_LEN + 1] = {0,};
+
+       err = msg_get_message(ad->msgHandle, (msg_message_id_t)msg_id, msgInfo, sendOpt);
+
+       if (err != MSG_SUCCESS) {
+               service_destroy(svc_handle);
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return NULL;
+       }
+
+       msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+       snprintf(buf_thread, sizeof(buf_thread), "%d", thread_id);
+
+       msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+
+       msg_get_str_value(addr_list->msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+       msg_get_str_value(addr_list->msg_struct_info[0], MSG_ADDRESS_INFO_DISPLAYNAME_STR, strName, DEF_THREAD_NAME_LEN);
+       msg_get_int_value(addr_list->msg_struct_info[0], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+       snprintf(buf_contact, sizeof(buf_contact), "%d", contact_id);
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, buf_thread);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_NAME, strName);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ADDRESS, strNumber);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_CONTACT_ID, buf_contact);
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       D_LEAVE;
+       return svc_handle;
+}
+
+static Evas_Object* create_win(const char *name)
+{
+       D_ENTER;
+
+       Evas_Object *eo;
+       int w, h;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+       if (eo) {
+               elm_win_title_set(eo, name);
+               evas_object_smart_callback_add(eo, "delete,request", win_del, NULL);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+               evas_object_resize(eo, w, h);
+               elm_win_conformant_set(eo, EINA_TRUE);
+       }
+
+       D_LEAVE;
+       return eo;
+}
+
+void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       D_ENTER;
+
+       struct appdata *ad;
+       Evas_Object *base, *win;
+
+       if (!ug || !priv)
+               return;
+
+       ad = priv;
+
+       base = ug_get_layout(ug);
+
+       if (!base){
+               ug_destroy(ug);
+               return;
+       }
+
+       win = ug_get_window();
+
+       switch (mode) {
+               case UG_MODE_FULLVIEW:
+                       evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_show(base);
+                       break;
+               case UG_MODE_FRAMEVIEW:
+               default:
+                       break;
+       }
+
+       D_LEAVE;
+}
+
+void result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !ug || !priv);
+
+       struct appdata *ad = priv;
+
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       char *buf = NULL;
+       char *str_result = NULL;
+
+       service_get_extra_data(result, MSG_BUNDLE_KEY_RESULT, &str_result);
+       if (pData == NULL) {
+               if (!g_strcmp0(str_result, MSG_BUNDLE_VALUE_DEL_ALL))
+                       ug_destroy(ug);
+
+               elm_exit();
+               return;
+       }
+
+       pListData = msg_ui_thread_get_current_list();
+
+       if (!g_strcmp0(str_result, MSG_BUNDLE_VALUE_DEL_ALL)) {
+               ug_destroy(ug);
+
+               if (pListData) {
+                       int del_id = 0;
+
+                       if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG) {
+                               service_get_extra_data(result, MSG_BUNDLE_KEY_MSG_ID, &buf);
+                               if (buf) {
+                                       del_id = atoi(buf);
+                                       msg_ui_thread_list_msg_item_delete(pListData, del_id);
+                               }
+                       } else {
+                               service_get_extra_data(result, MSG_BUNDLE_KEY_THREAD_ID, &buf);
+                               if (buf) {
+                                       del_id = atoi(buf);
+                                       msg_ui_thread_list_item_delete(pListData, del_id);
+                               }
+                       }
+
+                       if (pListData->item_cnt <= 0 && pListData->search_mode == THREAD_SEARCH_ON)
+                               msg_ui_thread_cancel_search_mode(pListData);
+
+                       if (pData->isRotate == true) {
+                               if (!pData->split_data) {
+                                       msg_ui_thread_create_split_data();
+                                       msg_ui_thread_splitview_launch(pData, pData->split_data);
+                               }
+                       } else {
+                               elm_object_part_content_set(pData->panes, "left", pData->layout_main);
+                               elm_object_part_content_unset(pData->panes, "right");
+                               elm_panes_content_left_size_set(pData->panes, 1.0);
+                       }
+
+                       pListData->sel_gen_item = NULL;
+                       pListData->sel_thread_id = 0;
+                       pListData->sel_msg_id = 0;
+                       ad->composer_ug = NULL;
+                       ad->ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+               }
+       } else {
+               int update_id = 0;
+
+               if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG) {
+                       service_get_extra_data(result, MSG_BUNDLE_KEY_MSG_ID, &buf);
+                       if (buf) {
+                               update_id = atoi(buf);
+                               msg_ui_thread_list_msg_item_update(pListData, update_id);
+                       }
+               } else {
+                       service_get_extra_data(result, MSG_BUNDLE_KEY_THREAD_ID, &buf);
+                       if (buf) {
+                               update_id = atoi(buf);
+                               msg_ui_thread_list_item_update(pListData, update_id);
+                               pListData->sel_thread_id = update_id;
+                       }
+               }
+       }
+
+       D_LEAVE;
+}
+
+void destroy_cb(ui_gadget_h ug, void *priv)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !ug || !priv);
+
+       struct appdata *ad = (struct appdata *)priv;
+       int ug_type = ad->ug_type;
+
+       if (ug == ad->composer_ug) {
+               ug_destroy(ug);
+               ad->composer_ug = NULL;
+               ad->ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+       }
+
+       if (ad->layout_main) {
+               PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data;
+               PMSG_THREAD_LIST_DATA pListData = NULL;
+
+               pListData = msg_ui_thread_get_current_list();
+               if (pListData == NULL) {
+                       elm_exit();
+                       return;
+               }
+
+               if (pData) {
+                       if (pData->isRotate == true) {
+                               if (!pData->split_data) {
+                                       msg_ui_thread_create_split_data();
+                                       msg_ui_thread_splitview_launch(pData, pData->split_data);
+                               }
+                               if (ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) {
+                                       msg_ui_thread_cancel_search_mode(pListData);
+                                       elm_win_lower(pData->win_main);
+                               }
+                       } else {
+                               elm_object_part_content_set(pData->panes, "left", pData->layout_main);
+                               elm_object_part_content_unset(pData->panes, "right");
+                               elm_panes_content_left_size_set(pData->panes, 1.0);
+                       }
+               }
+
+               if (pListData->sel_thread_id > 0)
+                       msg_ui_thread_list_item_update(pListData, pListData->sel_thread_id);
+
+               if (pListData->sel_msg_id > 0)
+                       msg_ui_thread_list_msg_item_update(pListData, pListData->sel_msg_id);
+
+               pListData->sel_gen_item = NULL;
+               pListData->sel_thread_id = 0;
+               pListData->sel_msg_id = 0;
+
+               pListData->view_mode = THREAD_NORMAL_VIEW;
+       } else {
+               elm_exit();
+       }
+}
+
+int msg_ui_load_composer_ug(service_h svc_handle, MessageComposerUgType ug_type)
+{
+       D_ENTER;
+
+       if (!gAppData)
+               return MSG_UI_RET_ERR;
+
+       if (gAppData->composer_ug) {
+               if (ug_type == MSG_COMPOSER_UG_TYPE_COMPOSER && gAppData->ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) {
+                       ug_destroy(gAppData->composer_ug);
+                       gAppData->composer_ug = NULL;
+                       gAppData->ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
+                       if (ug_type == MSG_COMPOSER_UG_TYPE_COMPOSER)
+                               gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs);
+                       else
+                               gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FRAMEVIEW, svc_handle, &gAppData->cbs);
+               } else {
+                       ug_send_message(gAppData->composer_ug, svc_handle);
+               }
+       } else {
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
+               if (ug_type == MSG_COMPOSER_UG_TYPE_COMPOSER)
+                       gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs);
+               else
+                       gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FRAMEVIEW, svc_handle, &gAppData->cbs);
+       }
+
+       if (!gAppData->composer_ug)
+               return MSG_UI_RET_ERR;
+
+       gAppData->ug_type = ug_type;
+
+       if (ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) {
+               PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)gAppData->thread_data;
+               Evas_Object * layout = (Evas_Object *)ug_get_layout(gAppData->composer_ug);
+               elm_object_part_content_set(pData->panes, "right", layout);
+               msg_ui_thread_destroy_split_data(pData->split_data);
+
+               if (pData->isRotate == false) {
+                       elm_object_part_content_unset(pData->panes, "left");
+                       elm_panes_content_left_size_set(pData->panes, 0.0);
+                       evas_object_hide(pData->layout_main);
+               }
+       }
+       D_LEAVE;
+       return MSG_UI_RET_SUCCESS;
+}
+
+Evas_Object *msg_ui_get_composer_ug_viewer_layout(void)
+{
+       D_ENTER;
+
+       if (!gAppData || !gAppData->composer_ug)
+               return NULL;
+
+       if (gAppData->ug_type != MSG_COMPOSER_UG_TYPE_VIEWER)
+               return NULL;
+
+       Evas_Object * layout = (Evas_Object *)ug_get_layout(gAppData->composer_ug);
+
+       D_LEAVE;
+
+       return layout;
+}
+
+void msg_ui_destroy_composer_ug(void)
+{
+       if (!gAppData || !gAppData->composer_ug)
+               return;
+
+       ug_destroy(gAppData->composer_ug);
+
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)gAppData->thread_data;
+       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+
+       if (pListData) {
+               if (pData->isRotate == true) {
+                       if (!pData->split_data) {
+                               msg_ui_thread_create_split_data();
+                               msg_ui_thread_splitview_launch(pData, pData->split_data);
+                       }
+               }
+
+               pListData->sel_gen_item = NULL;
+               pListData->sel_thread_id = 0;
+               pListData->sel_msg_id = 0;
+               gAppData->composer_ug = NULL;
+               gAppData->ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+       }
+}
+
+static bool app_create(void *data)
+{
+       /* return TRUE : success, return FALSE : not to run main loop */
+
+       D_ENTER;
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !data, MSG_UI_RET_ERR);
+
+       struct appdata *ad = data;
+       Evas_Object *win;
+       sound_manager_error_e err = SOUND_MANAGER_ERROR_NONE;
+
+       /* create window */
+       win = create_win(MESSAGE_PKGNAME);
+       if (win == NULL)
+               return FALSE;
+
+       ad->win_main = win;
+
+       ad->bg = elm_bg_add(ad->win_main);
+       evas_object_size_hint_weight_set(ad->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(ad->win_main, ad->bg);
+
+       ad->conform = elm_conformant_add(win);
+       if (ad->conform == NULL)
+               return FALSE;
+
+       evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(win, ad->conform);
+       evas_object_show(ad->conform);
+
+       err = sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
+       if (err != SOUND_MANAGER_ERROR_NONE)
+               D_MSG("sound_manager_set_session_type is failed, ret = [%d]", err);
+
+       UG_INIT_EFL(ad->win_main, UG_OPT_INDICATOR_ENABLE);
+       elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_SHOW);
+       __rotate(app_get_device_orientation(), ad);
+
+       ad->cbs.layout_cb = layout_cb;
+       ad->cbs.result_cb = result_cb;
+       ad->cbs.destroy_cb = destroy_cb;
+       ad->cbs.priv = (void *)ad;
+
+       gAppData = ad; // Set global app data pointer;
+
+       D_LEAVE;
+       return TRUE;
+}
+
+static void app_terminate(void *data)
+{
+       D_ENTER;
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !data, "data is null");
+
+       struct appdata *ad = data;
+       msg_error_t     err;
+
+       ug_destroy_all();
+
+       if (ad->thread_data)
+               msg_ui_thread_deinit_thread_data(ad->thread_data);
+
+       if (ad->msgHandle) {
+               err = msg_close_msg_handle(&ad->msgHandle);
+               D_MSG("msg_close_msg_handle, ret = [%d]", err);
+       }
+
+       D_LEAVE;
+}
+
+static void app_pause(void *data)
+{
+       D_ENTER;
+
+       msg_ui_thread_set_app_state(MSG_UI_STATE_PAUSE);
+       ug_pause();
+
+       D_LEAVE;
+}
+
+static void app_resume(void *data)
+{
+       D_ENTER;
+       msg_ui_thread_set_app_state(MSG_UI_STATE_RUNNING);
+
+       ug_resume();
+
+       D_LEAVE;
+}
+
+static void app_service(service_h service, void *data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !data, "data is NULL");
+
+       struct appdata *ad = data;
+       service_h svc_handle = NULL;
+       msg_error_t err = MSG_SUCCESS;
+       msg_handle_t msgHandle = NULL;
+       bool isDefaultView = false;
+
+       char *operation = NULL;
+       char *cvalue = NULL;
+       int ret = SYSTEM_INFO_ERROR_NONE;
+
+       ret = system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &cvalue);
+       if (ret == SYSTEM_INFO_ERROR_NONE && cvalue != NULL) {
+               if (g_strcmp0(cvalue, "Emulator") == 0) {
+                       D_MSG("Not support in Emulator !!");
+                       g_free(cvalue);
+                       cvalue = NULL;
+
+                       service_h reply;
+
+                       int ret = service_create(&reply);
+                       if (ret != SERVICE_ERROR_NONE) {
+                               D_EMSG("service_create() is failed : ret = %d", ret);
+                       } else {
+                               service_reply_to_launch_request(reply, service, SERVICE_RESULT_CANCELED);
+                               service_destroy(reply);
+                       }
+
+                       /* Exit application because it is not supported in Emulator. */
+                       elm_exit();
+                       return;
+               }
+       }
+
+       if (cvalue) {
+               g_free(cvalue);
+               cvalue = NULL;
+       }
+
+       ug_resume();
+
+       if (!ad->msgHandle) {
+               err = msg_open_msg_handle(&msgHandle);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "msg_open_msg_handle failed, Error=[%d]\n", err);
+                       __msg_ui_popup_warning(ad->win_main,  dgettext("sys_string", "IDS_COM_POP_SERVICE_UNAVAILABLE"));
+                       return;
+               }
+               ad->msgHandle = msgHandle;
+       }
+
+       if (service) {
+               service_get_operation(service, &operation);
+               if (operation) {
+                       svc_handle = __get_service_app_svc_op(operation, service);
+               } else {
+                       char *key_type = NULL;
+
+                       service_get_extra_data(service, MSG_BUNDLE_KEY_TYPE, &key_type);
+                       if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_COMPOSE) == 0) {
+                               service_clone(&svc_handle, service);
+                       } else if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_NEW_MSG) == 0) {
+                               svc_handle = __get_service_with_new_msg(ad);
+                       } else if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_MSG_ID) == 0) {
+                               svc_handle = __get_service_with_msg_id(ad, service);
+                       } else {
+                               char *mime_type = NULL;
+
+                               service_get_extra_data(service, AUL_K_MIME_TYPE, &mime_type);
+                               if (g_strcmp0(mime_type, MSG_BUNDLE_VALUE_SMS_URI) == 0)
+                                       svc_handle = __msg_ui_parse_sms_uri(service, NULL);
+                               else if (g_strcmp0(mime_type, MSG_BUNDLE_VALUE_MMSTO_URI) == 0)
+                                       svc_handle = __msg_ui_parse_mmsto_uri(service, NULL);
+                               else
+                                       isDefaultView = true;
+                       }
+               }
+
+               if (!svc_handle)
+                       isDefaultView = true;
+       } else {
+               isDefaultView = true;
+       }
+
+       if (isDefaultView) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "show DefaultView");
+               if (ad->composer_ug) {
+                       ug_destroy(ad->composer_ug);
+                       ad->composer_ug = NULL;
+                       ad->ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+               }
+
+               if (!ad->thread_data)
+                       ad->thread_data = msg_ui_thread_init_thread_data(ad);
+
+               if (!ad->layout_main) {
+                       ad->layout_main = msg_ui_thread_create_layout_main(ad->thread_data);
+                       evas_object_size_hint_weight_set(ad->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       elm_object_content_set(ad->conform, ad->layout_main);
+
+                       msg_ui_thread_load_thread_view(ad->thread_data, service);
+               } else {
+                       msg_ui_thread_reset_thread_view(ad->thread_data, service);
+               }
+               __rotate(app_get_device_orientation(), ad);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "show app-service view");
+               /* If message app is called by app-service to display composer view,
+                * list view should be destroyed because previous screen should be displayed
+                * when user tap back button.
+                */
+                MessageComposerUgType ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+
+               if (operation != NULL) {
+                       int i = 0;
+                       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data;
+
+                       if (g_strcmp0(operation, SERVICE_OPERATION_SEND) == 0 ||
+                               g_strcmp0(operation, SERVICE_OPERATION_SEND_TEXT) == 0) {
+                               if (ad->layout_main) {
+                                       /* content unset composer */
+                                       if (ad->ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) {
+                                               if (pData)
+                                                       elm_object_part_content_unset(pData->panes, "right");
+                                       }
+
+                                       if (pData) {
+                                               for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+                                                       if (pData->list_data[i] != NULL) {
+                                                               msg_ui_thread_destroy_thread_list_data(pData->list_data[i]);
+                                                       }
+                                               }
+                                       }
+                                       evas_object_del(ad->layout_main);
+                                       ad->layout_main = NULL;
+                               }
+                               ug_type = MSG_COMPOSER_UG_TYPE_COMPOSER;
+                       } else if (g_strcmp0(operation, SERVICE_OPERATION_DEFAULT) == 0) {
+                               char *key_type = NULL;
+
+                               service_get_extra_data(service, MSG_BUNDLE_KEY_TYPE, &key_type);
+                               if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_MSG_ID) == 0) {
+                                       if (ad->layout_main) {
+                                               /* content unset composer */
+                                               if (ad->ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) {
+                                                       if (pData)
+                                                               elm_object_part_content_unset(pData->panes, "right");
+                                               }
+
+                                               if (pData) {
+                                                       for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+                                                               if (pData->list_data[i] != NULL) {
+                                                                       msg_ui_thread_destroy_thread_list_data(pData->list_data[i]);
+                                                               }
+                                                       }
+                                               }
+                                               evas_object_del(ad->layout_main);
+                                               ad->layout_main = NULL;
+                                       }
+                                       ug_type = MSG_COMPOSER_UG_TYPE_VIEWER;
+                               }
+                       }
+               }
+
+               if (ad->composer_ug) {
+                       ug_destroy(ad->composer_ug);
+                       ad->composer_ug = NULL;
+                       ad->ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+               }
+
+               ad->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &ad->cbs);
+               ad->ug_type = ug_type;
+       }
+
+       if (svc_handle)
+               service_destroy(svc_handle);
+
+       if (ad->win_main) {
+               evas_object_show(ad->win_main);
+               elm_win_activate(ad->win_main);
+       }
+
+       if (ad->layout_main == NULL && ad->composer_ug == NULL)
+               elm_exit();
+
+       D_LEAVE;
+}
+
+int main(int argc, char *argv[])
+{
+       D_ENTER;
+
+       struct appdata ad;
+       memset(&ad, 0x0, sizeof(struct appdata));
+
+       app_event_callback_s event_callback;
+
+       event_callback.create = app_create;
+       event_callback.terminate = app_terminate;
+       event_callback.pause = app_pause;
+       event_callback.resume = app_resume;
+       event_callback.service = app_service;
+       event_callback.low_memory = NULL;
+       event_callback.low_battery = low_battery_cb;
+       event_callback.device_orientation = device_orientation;
+       event_callback.language_changed = lang_changed;
+       event_callback.region_format_changed = region_changed_cb;
+
+       D_LEAVE;
+       return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
diff --git a/main/message.h b/main/message.h
new file mode 100755 (executable)
index 0000000..b870a65
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __DEF_message_H_
+#define __DEF_message_H_
+
+#include <stdio.h>
+#include <glib.h>
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+
+#include <libintl.h>
+#include <bundle.h>
+#include <app.h>
+#include <Ecore.h>
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+#include <utilX.h>
+#include "msg-ui-util.h"
+#include <aul.h>
+#include <appsvc.h>
+
+#define POPUP_DELAY (1)
+#define DEF_NUM_LEN    (64)
+
+typedef enum {
+       MSG_COMPOSER_UG_TYPE_NONE = 0,
+       MSG_COMPOSER_UG_TYPE_COMPOSER,
+       MSG_COMPOSER_UG_TYPE_VIEWER,
+} MessageComposerUgType;
+
+struct appdata
+{
+       Evas_Object *win_main;
+       Evas_Object *conform;
+       Evas_Object *bg;
+       Evas_Object *layout_main;
+
+       struct ug_cbs cbs;
+       ui_gadget_h composer_ug;
+       MessageComposerUgType ug_type;
+
+
+       msg_handle_t msgHandle;
+       void *thread_data;
+};
+
+int msg_ui_load_composer_ug(service_h svc_handle, MessageComposerUgType ug_type);
+Evas_Object *msg_ui_get_composer_ug_viewer_layout(void);
+void msg_ui_destroy_composer_ug(void);
+
+#endif /* __DEF_message_H__ */
+
+
diff --git a/main/po/CMakeLists.txt b/main/po/CMakeLists.txt
new file mode 100644 (file)
index 0000000..47bce2c
--- /dev/null
@@ -0,0 +1,28 @@
+# for i18n
+
+#SET(POFILES de.po el.po en_US.po es.po fr.po it.po ja.po ko.po nl.po pt.po ru.po tk.po zh_CN.po zh_HK.po zh_TW.po)
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en.po en_PH.po en_US.po es_ES.po es_MX.po et.po eu.po
+       fi.po fr_CA.po fr_FR.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po
+       lt.po lv.po mk.po nb.po nl_NL.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po
+       sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_SG.po zh_TW.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/main/po/ar.po b/main/po/ar.po
new file mode 100755 (executable)
index 0000000..e17ea04
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "تقرير التوصيل"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "تقرير القراءة"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "طلب تقرير التوصيل"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "طلب تقرير قراءة الرسالة"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "قائمة العناصر"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "نقل إلى الهاتف"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "نمط الإنشاء"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "مركز الخدمة"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "نقل إلى البطاقة"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "رسالة مجدولة"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "رسائل البريد العشوائي‬"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "نوع تنبيه الاستلام"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "التكرار"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "التقاط فيديو"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "تسجيل الصوت"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "رسائل CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "رسائل بطاقة SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "عرض الاسم"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "غير قابل للفتح"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "تحميل"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "يتعذر النقل"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "تم الوصول للحد الأقصى لعدد الصفحات"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "الوضع المقيد. غير قادر على إدراج محتوى مقيد"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "تم التوصيل"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "انتهت المدة"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "جاري التحميل…"
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "أدخل البطاقة لإرسال رسائل. سيتم حفظ الرسالة في الصادرة"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "أدخل رقم القناة"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "تم تحديد رسالة واحدة"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "تم تحديد %d رسائل"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "معاينة"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "اسم الملف موجود مسبقا"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "لا توجد رسائل"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "إضافة إلى جهة اتصال"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "تخلص"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "يتعذر إرسال الرسالة"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "التقاط صورة"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "لا يوجد عنوان"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "قائمة العناصر المرفقة"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "تحميل تلقائي"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "رسائل البث"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "مركز %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "وقت مخصص"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "فشل الإرسال"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "من"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "قائمة العناصر المدرجة"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "تم توصيل الرسالة"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "تم تحميل الرسالة"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "حر"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "تحذير"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "تم الإرسال"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "كيلوبايت"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "رسائل الدفع"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "تم الاستلام"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "يدوي"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "رفض"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "خيارات الاستقبال"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "مقيد"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "غير هامة"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "عادي"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "هامة"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "الأولوية"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "إرسال تقرير قراءة الرسالة"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "مدة الصفحة"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "رسائل الطوارئ"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "رسائل نصية"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "إجمالي الحجم"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "محتوى DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 ثوان"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "ثانيتان"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 ثوان"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "الشبكة المحلية"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "تثبيت"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "الشبكة الأجنبية"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "عرض تفاصيل جهة الاتصال"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "تم إرسال رسالة الوسائط"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "فشل استرداد الرسالة"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "فشل ارسال رسالة متعددة الوسائط."
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "مدة الشريحة"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "استخدام مفتاح الصوت"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "رسالة نصية"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "بدون عنوان"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "حجم الرسالة"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "تم الطلب"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "غير مطلوب"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "تحويل"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "غير مقروءة"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "مستلم مكرر"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "تم بلوغ الحد الأقصى لعدد المستلمين (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "إلى"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "تسجيل صوت"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "تسجيل فيديو"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "تم التغيير إلى رسالة وسائط"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "تم التغيير إلى SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "يتوفر %d مرفقات. قم بتحديد عدد يصل إلى %d مرفقات"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "يتعذر إرفاق جميع الملفات. يبلغ الحد الأقصى لسعة المرفقات %d كيلوبايت. استمرار؟"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "حجم الخط"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "رسالة وسائط"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "لا يوجد موضوع"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "تحديد عنوان"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "أنت على وشك تسجيل الدخول (%s). متابعة"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "إعادة إرسال"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "مستلم غير صالح"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "مستلمين غير صالحين"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "يتعذر التشغيل أثناء المكالمة"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "يتعذر الحفظ أثناء استخدام وضع التخزين كبير السعة‬"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "رفض الرسالة الحالية؟"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "تم التحديد"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "مسح؟"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "يتعذر الإرفاق. يبلغ الحد الأقصى لحجم الملفات %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "مقيد"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "غير قابل لتحويل هذا الملف. تم قفل تحويل هذا الملف"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "سياسة الأمان تقيد إنشاء رسائل نصية"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "تتم الإضافة. الرجاء الانتظار..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "عنوان مركز الخدمة"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "كبير"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "عادي"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "صغير"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "يتعذر إرسال رسالة مجدولة. حدد موعدا آخر"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "التاريخ و الوقت"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "رسائل الوسائط"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "لم تتم إضافة مستلمين. أدخل المستلمين"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "خيارات الإرسال"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "طوارئ"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "عادي"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "إرسال رسالة الطوارئ"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "المستقبلون"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "رسالة"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "مرة واحدة"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 مرات"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 مرات"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "أنا في حالة طارئة. رجاء المساعدة"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "لم يتم إدخال بطاقة SIM"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "التقاط صورة"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "يجب أن تكون المدة أطول من %d ثوان"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "غير قابل على إضافة محتوى"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "تحديد مستلم"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "المدة (%s ثوان)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "الصورة كبيرة للغاية. ضغط..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "تم حفظ الرسالة كمسودة"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "آخر"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "مسودة"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "إرسال بريد إلكتروني"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "العناصر المدرجة"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "المحتويات الملحقة"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d مرفقات"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "رسالة\nمجدولة"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "المدة\n‏(%d ثوان)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "استخدام معلومات جهة اتصال أخرى"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "تحتوي هذه الرسالة على ملف ملحق غير ظاهر"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "تحتوي هذه الرسالة على ملفات ملحقة غير ظاهرة"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "حفظ الكل"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "رسائل المسودة"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "ستتم استعادة الرسالة"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "سيتم إلغاء الرسالة المجدولة"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "نسخ نص الرسالة"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "عرض تفاصيل الرسالة"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "رسائل مقفلة"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "صناديق الرسائل"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "حجب"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "نسخ إلى الهاتف"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "تم نسخ الرسالة من بطاقة SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "إلغاء الرسالة"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "الملحقات"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "رسالة فشل الإرسال"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "تم الوصول إلى أقصى عدد من الحروف"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "تم الحفظ في ملفاتي"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "تفاصيل الرسالة"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "قيد الاستعادة..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "لا يوجد ملحقات"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "تم النسخ إلى الحافظة"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "نسخ إلى البطاقة"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "يتعذر النسخ"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "إيقاف تشغيل الحماية"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "تشغيل الحماية"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "حفظ الملحقات"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "إستعادة"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "رسائل محمية"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "جاري الإلغاء..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "مطابق تماما"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "يبدأ بـ"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "يتضمن"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "مطابقة المعيار"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "حذف الرقم"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s محظور"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "هل تريد حذف هذه الرسالة المحمية؟"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "إلغاء الحجب"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "جاري الحذف..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "تم ارجاع الضبط"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "رسائل محمية"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "تمت إزالة الحماية"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "حظر %s؟"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s غير محظور"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "ينبغي ضبط الوقت المحدد في المستقبل"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "نوع المحتوى مقيد. إرفاق على أية حال؟"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "تضمين الرسائل المحمية"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "مخطط S"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "نمط الإدخال"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "أبجدية GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "الرمز الموحد"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "تلقائي"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "أدخل الرقم"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "متماثلة"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "إضافة كلمة"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "خيارات الاستقبال"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "هناك رقم غير صالح لدى بعض المستلمين. لن تتم إضافة المستلمين غير الصالحين. المستلمون غير الصالحين: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "المستقبل"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "أدخل كلمة"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "تعديل كلمة"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "المقروءة"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "إضافة رقم"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "تعديل رقم"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "حذف كلمات"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "لن يتم حظر الرسائل التي تم استلامها من جهات اتصالك حتى وإن كان بها كلمات محظورة"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "الأرقام المحظورة"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "الكلمات المحظورة"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "نبذة عن ‏‫رسائل الطوارئ‬"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "يتعذر إرسال الرسائل أثناء استخدام وضع الطيران. قم بإلغاء تفعيل وضع الطيران، ثم أعد المحاولة"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "إلغاء وضع الطيران"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "تم إرسال الرسالة"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "فشل إرسال الرسالة"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "حذف الأرقام"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "عند الطوارئ، اضغط على مفتاح خفض مستوى الصوت 4 مرات عندما يكون قفل المفاتيح نشطا. حيث يؤدي ذلك إلى إرسال ‏‫رسالة طوارئ‬ إلى المستلمين المحددين. وفي حالة معاودتهم الاتصال بك، لن يصدر رنينا من الهاتف ولكن سيتم الرد على مكالمتهم تلقائيا. بعد إرسال ‏‫رسالة طوارئ‬، تظل جميع وظائف الهاتف الأخرى غير متاحة حتى يتم إلغاء تنشيط قفل المفاتيح"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "لقد تم تسجيلك كمستلم لرسالة الطوارئ"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "إرسال الآن"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "نسخة احتياطية"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "التصدير إلى بطاقة SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "أنا"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "رسالة وسائط"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "جاري..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "إعلام برسالة وسائط متعددة"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "الحالة"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "تنتهي الصلاحية في: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "بعض الأحرف قد تكون فقدت. متابعة؟"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "إضافة نص"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "نماذج نصية"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "إدراج رموز تعبيرية"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "نوع الوسائط غير مدعوم"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "جار إلغاء تفعيل وضع الطيران..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d محادثة (محادثات)"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d رسالة (رسائل)"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "لا توجد قوالب بهذه القائمة"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "بحث متقدم"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "نموذج"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "الصوت"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "نمط الفقاعات"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "نمط الخلفية"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "خيارات الرسائل"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "‏‫يجب أن تكون المدة %d ثوان على الأقل‬"
+
diff --git a/main/po/az.po b/main/po/az.po
new file mode 100755 (executable)
index 0000000..c70c2aa
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Çatdırılma haqqında hesabat"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Oxunma hesabatı"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Çatdırılma haqqında hesabat tələb et"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Oxunma hesabatı tələb et"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Element siyahısı"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Telefona göndər"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Yaratma rejimi"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Servis mərkəzi"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM-ə göndər"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Planlaşdırılılmış mesaj"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam mesajları"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Siqnal növü qəbul edilir"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Təkrar et"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Video yaz"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Səsi yaz"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB mesajları"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM kart mesajları"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Kontaktı görüntülə"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Açmaq mümkün deyil"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Bərpa et"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Yerini dəyişdirmək mümkün deyil"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Səhifələrin sayı maksimuma çatmışdır"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Məhdud rejim. Məhdud məzmunu daxil etmək mümkün deyil"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Çatdırıldı"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Etibarlılıq tarixi artıq keçmişdir"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Bərpa edilir..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Mesajların göndərilməsi üçün xahiş olunur SİM kartı daxil edin. Mesaj Çıxan mesajlar siyahısına yazılacaq"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Kanal nömrəsini daxil edin"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mesaj seçildi"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mesaj seçildi"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Nəzər yetirmə"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Artıq var"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Mesaj yoxdur"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Kontakta əlavə edin"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "At"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Mesaj göndərmək mümkün deyil"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Foto çək"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Ünvan yoxdur"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Əlavə olunmuş element siyahısı"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Avto yüklənmə"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Yayım mesajları"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Mərkəz %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Vaxtı təyin et"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Göndərmək mümkün olmadı"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Kimdən"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Daxil edilmiş element siyahısı"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mesaj çatdırılmışdır"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mesaj çıxarılmışdır"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Azad"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Diqqət"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Göndərildi"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Puş mesajları"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Qəbul edildi"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ələ işlət"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "İmtina et"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Qəbul etmə parametrləri"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Məhdudlaşdırılmışdır"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Alçaq"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Zəruri"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Üstünlük"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Oxunma haqqında hesabat göndər"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Səhifənin ölçüsü"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS mesajları"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Mətn mesajları"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Ümumi ölçü"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM tərkibi"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 saniyə"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 saniyə"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 saniyə"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Ev şəbəkəsi"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Yüklə"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Xarici şəbəkə"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Adın təfsilatlarını nəzərdən keçir"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimedia mesajı göndərildi"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Mesajın bərpa edilməsi mümkün olmadı"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Multimedia mesajının göndərilməsi alınmadı"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Slayd üçün müddət"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Səs düyməsindən ist. et"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Mətn mesajı"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Başlıqsız"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Mesajın ölçüsü"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Tələb edildi"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Təklif edilməyib"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Ötür"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Oxunmamış"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Duplikat qəbul edən"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Qəbul edənlərin sayı maksimuma (%d) çatıb"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Kimə"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Səs yaz"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Video yazı"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "MMS-ə dəyişdirildi"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "SMS-ə dəyişdirildi"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d qoşma mümkündür. Maksimum %d qoşma seçin."
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Bütün faylları əlavə etmək mümkün deyil. Maksimum qoşma həcmi %d KB-dır. Davam edilsin?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Şriftin ölçüsü"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimediya mesajı"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Mövzu yoxdur"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Ünvan seç"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Siz şəbəkəyə qoşulmaq üzrəsiniz(%s). Davam edilsin?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Yenidən göndər"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Qəbuledən səhvdir"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Qəbul edənlər səhvdir"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Zəng zamanı səsləndirmək olmur"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Kütləvi yaddaş rejimində saxlamaq mümkün deyil"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Cari mesaj ləğv edilsin?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Seçildi"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Silinsin?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Əlavə etmək mümkün deyil. Faylların maksimum ölçüsü %d KB-dır"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Məhdudlaşdırılmışdır"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Göndərmək mümkün deyil.\nGöndərmə əməliyyatı blokirovkadadır"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Təhlükəsizlik siyasəti mətn mesajları yazmağı məhdudlaşdırır"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Əlavə olunur. Lütfən gözləyin..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Xidmət mərkəzi ünvanı"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Geniş"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Kiçik"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Planlaşdırılmış mesajı göndərmək mümkün deyil. Başqa bir vaxtı qur"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Tarix və vaxt"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimdia mesajları"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Qəbul edən əlavə edilmədi. Qəbul edənləri daxil et"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Göndərmə parametrləri"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS göndərilir"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Qəbul edənlər"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mesaj"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Bir dəfə zəng çal"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 dəfə"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 dəfə"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Mən pis vəziyyətdəyəm. Xahiş edirəm, mənə kömək edin."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM daxil edilməyib"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Şəkil çək"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Müddət %d saniyədən çox olmalıdır"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Məzmun əlavə etmək mümkün deyil"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Qəbul edəni seç"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Müddət (%s saniyə)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Şəkil çox böyükdür. Sıxlaşdırılır..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mesaj qaralama kimi saxlandı"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Başqa"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Qaralama"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Elektron məktubu göndər"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Daxil edilmiş elementlər"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Qoşulan elementlər"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d qoşma"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Planlı\nmesaj"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Müddət\n(%d san)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Dgr kntkt mlm.ist. et"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Bu mesaj göstərilməyən əlavə edilmiş fayldan ibarətdir"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Bu mesaja göstərilməyən əlavə edilmiş fayllar daxildir"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Hamısını yaddaşa yaz"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Qaralama mesajlar"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Mesajlar bərpa ediləcək"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Planlaşdırılmış mesaj ləğv ediləcək"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Msj.n mtnni kçrn"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Msj tfərrütlrnı gstr"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Kilidlənmiş mesajlar"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Mesaj qutuları"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokirovka et"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Telefona köçür"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mesaj SIM kartdan köçürüldü"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Mesajı ləğv et"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Əlavələr"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Uğursuz mesaj göndərilir"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Simvol sayı maksimuma çatıb"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Fayllarımda saxlandı"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Mesaj təfərrüatları"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Bərpa edilir..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Əlavələr yoxdur"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Mübadilə buferinə köçürüldü"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "SIM-ə köçürt"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Surətini köçürmək mümkün deyildir"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Müdafiə söndürüldü"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Müdafiə qoşuldu"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Əlavəni saxla"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Brp. edin"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Qorunmuş mesajlar"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "İmtina edilir..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Məhz ... kimi"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "ilə başla"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Daxil et"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Meyarı uyğunlaşdır"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Nömrəni sil"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blok edildi"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Bu qorunan mesaj silinsin?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Blokirovkadan çıxar"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Silinir..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Bərpa olundu"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Qorunmuş mesajlar"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Mühafizə silindi"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s bloklansın?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s blokdan çıxarıldı"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Planlaşdırılmış vaxt gələcək zamanda təyin edilməlidir"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Məhdudlaşdırılmış məzmun növü. İstənilən halda əlavə edilsin?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Qorunan mesajı daxil et"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Daxil etmə rejimi"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-əlifba"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Yunikod"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Avtomatik"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Xahiş olunur nömrəni daxil edin"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Surəti çıxarıldı"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Söz əlavə et"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Qəbul etmə parametrləri"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Bəzi qəbuledənlərin nömrəsi səhvdir. Səhv qəbuledənlər əlavə edilmədi. Qəbuledənlər səhvdir: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Qəbul edən"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Söz daxil et"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Sözü redaktə edin"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Oxu"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Nömrə əlavə et"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Nömrəni redaktə et"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Sözləri sil"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Kontaktlarınızdan gələn mesajlar bloklanmış sözlər ehtiva etsələr də, bloklanmayacaq"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Bloklanmış nömrələr"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Bloklanmış sözlər"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS mesajları haqqında"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Uçuş rejimində mesaj göndərmək mümkün deyil. Uçuş rejimini qeyri-aktiv et və yenidən cəhd et"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Uçuş rji.i q-aktv et"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mesaj göndərildi"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Mesajın göndərilməsi baş tutmadı"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Rəqəmləri sil"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Fövqəladə hal zamanı düymə kilidi aktiv olduqda səs azaltma düyməsini 4 dəfə basın. Bu seçilmiş şəxslərə SOS mesajı göndəriləcək. Onlar sizə cavab zəngi etsələr, telefon zəng çalmayacaq, lakin zənglərinə avtomatik cavab veriləcək. SOS mesajı göndərildikdən sonra telefondakı bütün digər funksiyalar düymə kilidi ləğv edilənə qədər işləməyəcək"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Siz SOS mesajı resipienti kimi qeyd edilmisiniz."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "İndi gndr"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Nüsxə"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "SD karta ixrac et"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Mən"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "İşlənilir..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimedia mesajı bildirişi"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Durum"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Tamamlanır: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Bəzi simvollar itə bilər.\nDavam etsin?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Mətn əlavə et"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Mətn nümunələri"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Emosiya ikonası daxil et"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Dəstəklənməyən media növü"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Uçuş rejimi qeyri aktiv edilir..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d söhbət"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d mesaj"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Siyahıda şablon yoxdur"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Təkmil axtarış"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Şablon"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Qabarcıq üslubu"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Fon üslubu"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Message options"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Müddət minimum %d saniyə olmalıdır"
+
diff --git a/main/po/bg.po b/main/po/bg.po
new file mode 100755 (executable)
index 0000000..6ebbfaa
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Отчет за доставка"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Отчет за прочетени"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Отчет за доставка"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Изискване отчет за четене"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Списък с елементи"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Премести в телефона"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Режим на създаване"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Център за обслужване"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Премести в SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Съобщение по разписание"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Съобщения със спам"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Получаване на вид предупреждение"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Повтори"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Запис на видео"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Записване на аудио"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Циркулярни съобщения"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Съобщения на SIM картата"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Преглед на тел. указ."
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Невъзможно е отварянето"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Изтегли"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Не може да се премести"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Достигнат е максималният брой страници"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Ограничен режим. Не може да се вмъкне забранено съдържание"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Доставено"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "С изтекъл срок"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Изтегляне..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Поставете SIM карта, за да изпращате съобщения. Съобщението ще бъде запаметено в Изходящи"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Въведете номер на канал"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Избрано е 1 съобщение"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Избрани са %d съобщения"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Преглед"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Името на файл вече съществува"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Няма съобщения"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Добави към запис"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Анулиране"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Не може да се изпрати съобщението"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Снимай"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Няма адрес"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Списък с прикачени елементи"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Авто изтегляне"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Излъчени съобщения"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Център %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Часова зона по избор"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Неуспешно изпращане"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "От"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Списък с вмъкнати елементи"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Съобщението е доставено"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Съобщението е изтеглено"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Свободен"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Предупреждение"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Изпратен"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push съобщения"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Получени"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ръчно"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Отказ"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Опции за получаване"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Ограничен"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Hисък"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Нормален"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Спешно"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Приоритет"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Изпр. отчет чет."
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Времетраене на страница"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS съобщения"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Текстови съобщения"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Общ размер"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM съдържание"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 секунди"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 секунди"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 секунди"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Национална мрежа"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Инсталиране"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Мрежа в чужбина"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Преглед на детайли за запис"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Мултимедийното съобщение е изпратено"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Неуспешно изтегляне на съобщение"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Неуспешно изпращане на мултимедийно съобщение"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Продължителност за слайда"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Изп. бут. сила на звука"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Текстово съобщение"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Без име"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Размер на съобщението"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Поискано"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Не е поискан"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Препр"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Нечетени"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Повтарящ се получател"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Достигнат е максималният брой получатели (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "До"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Запис на звук"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Запис на видео"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Променено на MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Сменено на SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Възможни са %d прикачени файла. Изберете до %d прикачени файла"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Не могат да се прикачат всички файлове. Максималният размер за прикачени файлове е %d KB. Продължаване?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Размер на шрифта"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Мултимедийно съобщение"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Няма тема"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Изберете адрес"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Ще преминете в състояние ”онлайн”(%s). Продължаване?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Повторно изпращане"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Невалиден получател"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Невалидни получатели"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Не може да се възпроизведе по време на разговор"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Не може да се записва, докато е в режим на запаметяващо устройство"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Игнориране на текущото съобщение?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Избран"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Изтриване?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Не може да се прикачи. Максималният размер на файловете е %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Ограничен"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Препращането е невъзможно. Файлът е защитен от препращане"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Правилата за защита ограничават писането на текстови съобщения"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Добавяне. Моля, изчакайте..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Адрес сервизен центъра"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Едър"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Нормален"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Малък"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Мъничък"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Съобщението по разписание не може да се изпрати. Задайте друг час"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Дата и час"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Мултимедийни съобщения"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Няма добавени получатели. Въведете получатели"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Опции за изпращане"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Нормален"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Изпращане на SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Получатели"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Съобщение"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Веднъж"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 пъти"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 пъти"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Има спешен случай. Моля, помогнете ми."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM не е поставена"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Направи снимка"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Продължителността трябва да е повече от %d секунди"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Невъзможно добавяне на съдържание"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Избор получател"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Времетраене (%s сек.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Картината е твърде голяма. Компресиране..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Съобщението записано като чернова"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Друго"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Чернова"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Изпращане на еmail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Вмъкнати елементи"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Прикачени обекти"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d прикачени файла"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Планирано\nсъобщение"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Времетраене\n(%d сек)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Изп. др. данни за кон."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Това съобщение включва прикачени файлове, които не са показани"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Това съобщение включва прикачени файлове, които не са показани"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Запис на всичко"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Чернови съобщения"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Съобщението ще бъде възстановено"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Съобщението по график ще бъде отменено"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Копирай текст съобщ."
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Подробности съобщ."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Заключени съобщения"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Кутии със съобщения"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Блокиране"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Копиране в телефона"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Съобщението е копирано от SIM картата"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Отмяна на съобщение"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Прикачени файлове"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Изпращане на неуспешно съобщение"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Достигнат максимален брой знаци"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Записан в Моите файлове"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Данни за съобщение"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Възстановяване..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Няма прикачени файлове"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Копирано в системния буфер"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Копирай в SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Не може да се копира"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Защита изкл."
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Защита вкл."
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Запис на приложения файл"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Възстан."
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Защитени съобщения"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Отмяна ..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Точно същото като"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Започни с"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Включване"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Свързване критерии"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Изтриване на номер"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s блокиран"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Изтриване на това защитено съобщение?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Разблокиране"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Премахване..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Възстановен"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Защитени съобщения"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Защитата е премахната"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Блокиране на %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s деблокиран"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Насроченото време трябва да е зададено в бъдещето"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Ограничен тип съдържание. Да се прикачи ли все пак?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Включи защитено съобщение"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Режим за въвеждане на текст"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM азбука"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Автоматично"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Въвеждане на номер"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Дублиране"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Добавяне на дума"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Опции за получаване"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Някои получатели имат невалиден номер. Невалидните получатели не са добавени. Невалидни получатели: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Получател"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Въведете дума"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Редактиране на дума"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Прочетете"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Добави номер"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Редактиране на номер"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Изтриване на думи"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Съобщенията, получени от вашите записи, няма да бъдат блокирани, дори когато съдържат блокирани думи"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Блокирани номера"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Блокирани думи"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "За съобщенията за помощ"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Не може да се изпращат съобщения, докато сте в режим Полет. Деактивирайте режим Полет и опитайте отново"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Деактив. режим Полет"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Съобщението е изпратено"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Неуспешно изпращане на съобщение"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Изтриване на номера"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "При спешен случай натиснете клавиша за сила на звука 4 пъти при активирано заключване на клавиатурата. Това ще изпрати SOS съобщения до избраните от вас получатели. Ако те ви наберат, телефонът няма да звъни, но повикванията им ще бъдат приети автоматично. След изпращането на SOS съобщенията всички други функции на телефона ще останат недостъпни, докато не се деактивира заключването на клавиатурата"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Регистрирани сте като получател на SOS съобщ."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Изп. сега"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Резервно копие"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Експортиране в SD картата"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Мен"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "В процес на..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Уведомяване за мултимедийно съобщение"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Състояние"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Срокът изтича: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Някои символи може да се загубят.\nПродължение?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Добави текст"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Текстови шаблони"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Вмъкване на емотикон"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Неподдържан тип носител"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Деактивиране на режим полет..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d разговора"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d съобщ."
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Няма шаблони в списъка"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Разширено търсене"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Шаблон"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Автоматично"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Балонен стил"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Стил на фона"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Опции за съобщения"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Продължителността трябва да е поне %d секунди"
+
diff --git a/main/po/ca.po b/main/po/ca.po
new file mode 100755 (executable)
index 0000000..db65668
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Informe de lliurament"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Informe de lectura"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Sol·licitar informe lliurament"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Sol·licitar informe lectura"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Llista d'elements"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Moure a telèfon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Mode de creació"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centre de serveis"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Moure a SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Missatge programat"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Missatges de correu brossa"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Rebent tipus d'alerta"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repetir"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capturar vídeo"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Gravar àudio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Missatges CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Missatges de la targeta SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Veure contacte"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "No es pot obrir"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Recuperar"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "No es pot moure"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "S'ha assolit el nombre màxim de pàgines"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Mode restringit. No es pot introduir el contingut restringit"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Lliurat"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Caducat"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Recuperant..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insereixi una targeta SIM per a enviar missatges. El missatge es desarà a la Bústia de sortida"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Introdueixi el número de canal"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 missatge seleccionat"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d missatges seleccionats"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Vista prèvia"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "El nom de fitxer ja existeix"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "No hi ha cap missatge"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Afegir a contacte"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Descartar"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "No es pot enviar el missatge"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Fer una foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Sense adreça"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Llista d'elements adjunts"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Descàrrega automàtica"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Missatges de difusió"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centre %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Hora personalitzada"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Error en enviar"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Llista d'elements inserits"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Missatge entregat"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Missatge recuperat"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Lliure"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Advertència"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Enviat"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Missatges Push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Rebut"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Rebutjar"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opcions de recepció"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restringit"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Baixa"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgent"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritat"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Enviar informe de lectura"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Durada de la pàgina"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Missatges SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Missatges de text"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Mida total"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Contingut DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 segons"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 segons"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 segons"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Xarxa local"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instal·lar"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Xarxa externa"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Veure el detall del contacte"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Missatge multimèdia enviat"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Error en recuperar missatge"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Error en l'enviament del missatge multimèdia"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durada de la diapositiva"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Utilitzi la tecla volum"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Missatge de text"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Sense títol"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Mida del missatge"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Sol·licitat"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "No sol·licitat"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Reenv"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Sense llegir"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinatari duplicat"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "S'ha assolit el nombre màxim de destinataris (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "A"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Gravar so"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Gravar vídeo"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Canviat a MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Canviat a SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d fitxers adjunts disponibles. Seleccioni fins a %d fitxers adjunts"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "No es poden adjuntar tots els fitxers. La capacitat màxima d'adjunció són %d KB. Continuar?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Mida de font"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Missatge multimèdia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Sense assumpte"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Seleccioni adreça"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Està a punt de connectar-se (%s). Vol continuar?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Torn a env"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinatari no vàlid"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinataris no vàlids"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "No es pot reproduir durant la trucada"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "No es pot desar mentre està en mode d'emmagatzematge massiu"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Descartar missatge actual?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Seleccionat"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Esborrar?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Error d'adjunció. La mida màxima de fitxers és %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restringit"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "No es pot reenviar.\nEl fitxer està bloquejat per a reenviaments"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "La política de seguretat restringeix la redacció de missatges de text"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Afegint. Esperi..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adreça del centre de serveis"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Gran"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Petit"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "No es pot enviar el missatge programat. Defineixi una altra hora"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Hora i data"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Missatges multimèdia"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "No s'han afegit destinataris. Introdueixi'n"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opcions d'enviament"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Enviant SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinataris"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Missatge"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Una vegada"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 vegades"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 vegades"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Tinc una emergència. Ajuda'm"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "No s'ha inserit SIM"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Fer foto"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "La durada ha de ser superior a %d segons"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "No es pot afegir contingut"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Seleccionar destinatari"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Durada (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Foto massa gran. S'està comprimint..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Missatge desat com a esborrany"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Altres"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Esborran"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Enviar correu electrònic"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Elements introduïts"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Elements adjunts"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d fitxers adjunts"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Missatge\nprogramat"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Durada\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Util info altres cont"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Aquest missatge inclou un fitxer adjunt que no es mostra"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Aquest missatge inclou fitxers adjunts que no es mostren"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Desar-ho tot"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Esborranys de missatges"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Es restablirà el missatge seleccionat"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "El missatge programat es cancel·larà"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copiar text miss"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Veure det missatge"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Missatges bloquejats"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Quadres de missatge"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloquejar"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copiar al telèfon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "S'ha copiat el missatge de la targeta SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancel·lar missatge"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Adjunts"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Error en enviar un missatge"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "S'ha assolit el nombre màxim de caràcters"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Desat a Els meus fitxers"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Detalls del missatge"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restaurant..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Sense adjunts"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "S'ha copiat al porta-retalls"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copiar a la SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "No es pot copiar"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Protecció desactivada"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Protecció activada"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Desar annex"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restaurar"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Missatges protegits"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Cancel·lant..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exactament el mateix que"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Començar amb"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Incloure"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Fer coincidir criteris"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Esborrar número"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloquejat"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Eliminar aquest missatge protegit?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Desbloquejar"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Eliminant..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restaurat"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Missatges protegits"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protecció eliminada"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Bloquejar %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s desbloquejat"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "L'hora programada s'ha de definir en el futur"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Tipus de contingut restringit. Adjuntar igualment?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Incloure missatges protegits"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "Planificador S"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Mode entrada"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabet GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automàtica"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Introduir número"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicat"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Afegir paraula"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opcions de recepció"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Alguns destinataris no tenen un número vàlid. No s'afegiran els destinataris no vàlids. Destinataris no vàlids: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinatari"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Introduir paraula"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Editar paraula"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Llegir"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Afegir número"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Editar número"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Esborrar paraules"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Els missatges rebuts dels seus contactes no es bloquejaran encara que continguin paraules bloquejades"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Números bloquejats"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Paraules bloquejades"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Sobre missatges SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "No es poden enviar missatges durant el mode Vol. Deshabiliti el mode Vol i torni-ho a intentar"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Deshab mode Vol"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Missatge enviat"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Error en enviar el missatge"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Esborrar els números"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "A una situació d'emergència, premi la tecla de volum avall 4 cops seguits. Aquesta acció enviarà missatges d'auxili als destinataris seleccionats. Si li tornen la trucada, el telèfon no sonarà però la trucada es respondrà automàticament. Després d'enviar els missatges d'auxili, totes les altres funcions del telèfon no estaran disponibles fins que es la tecla de bloqueig deixi d'estar activa"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Està enregistrat com a destinatari de missatge SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Env ara"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Còpia de seguretat"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exportar a targeta SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Jo"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "En curs..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notificació de missatge multimèdia"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Estat"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Caduca: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Es poden perdre alguns caràcters.\nVol continuar?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Afegir text"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Plantilles de text"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Inserir emoticona"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "No s'admet aquest tipus de mitjà"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Deshabilitant mode Vol..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d converses"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d missatges"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Sense plantilles a la llista"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Cerca avançada"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Plantilla"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Àudio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Estil de bombolla"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Estil de fons"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opcions de missatge"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "La durada ha de ser d'almenys %d segons"
+
diff --git a/main/po/cs.po b/main/po/cs.po
new file mode 100755 (executable)
index 0000000..9f6d549
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Potvrzení o doručení"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Zpráva o přečtení"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Požadovat zprávu o doručení"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Požadovat zpr. o přečtení"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Seznam položek"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Přesunout do telefonu"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Režim vytváření"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Středisko služeb"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Přesunout na SIM kartu"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Plánovaná zpráva"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Nevyžádané zprávy"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Typ upozornění na příjem"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Opakovat"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Nahrávání videoklipů"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Nahrát zvuk"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB zprávy"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Zprávy na SIM kartě"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Zobrazit kontakty"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Nelze otevřít"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Stáhnout"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Nelze přesunout"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Bylo dosaženo maximálního počtu stránek"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Omezený režim. Omezený obsah nelze vložit"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Doručeno"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Platnost vypršela"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Načítání..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Chcete-li odesílat zprávy, vložte SIM kartu. Zpráva bude uložena do složky K odeslání"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Zadejte číslo kanálu"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Byla vybrána 1 zpráva"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Bylo vybráno %d zpráv"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Náhled"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Název souboru již existuje"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Žádné zprávy"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Přidat do kontaktu"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Vyřadit"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Nelze uložit zprávu"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Fotografovat"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Bez adresy"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Byl připojen seznam položek"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automaticky stáhnout"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Vysílané zprávy"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Středisko %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Vlastní doba"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Odeslání se nezdařilo"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Od"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Byl vložen seznam položek"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Zpráva byla doručena"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Zpráva načtena"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Volné"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Upozornění"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Odesláno"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "kB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Zprávy push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Přijato"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ručně"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Odmítnout"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Možnosti příjmu"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Zakázáno"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Nízká"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normální"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Naléhavé"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Důležitost"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Odeslat zprávu o přečtení"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Trvání stránky"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Zprávy SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Celková velikost"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Obsah DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekund"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekund"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekund"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Domácí síť"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalovat"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Síť roaming"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Zobrazit detaily kontaktu"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS odeslána"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Načtení zprávy se nezdařilo"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Odeslání MMS zprávy se nezdařilo"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Interval zobrazení snímku"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Použít tl. hlasitosti"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Bez názvu"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Velikost zprávy"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Požadavek na odpověď/potvrzení"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nepožadováno"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Před."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nepřečt."
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Duplicitní příjemce"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Bylo dosaženo maximálního počtu příjemců (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Do"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Nahrát zvuk"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Nahrát video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Změněno na MMS zprávu"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Změněno na SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "K dispozici je %d příloh. Vyberte maximálně %d příloh"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Nepodařilo se připojit všechny soubory. Maximální kapacita přílohy je %d kB. Chcete pokračovat?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Velikost písma"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimediální zpráva."
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Bez předmětu"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Zvolte adresu"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Chystáte se přejít do režimu online (%s). Chcete pokračovat?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Odesl. zn."
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Neplatný příjemce"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Neplatní příjemci"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Nelze přehrát během hovoru"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Nelze uložit v režimu velkokapacitního paměťového zařízení"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Zrušit aktuální zprávu?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Vybráno"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Odstranit?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Nelze připojit. Maximální velikost souborů je %d kB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Zakázáno"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Nelze předat dál.\nSoubor je zamknut proti předávání dál"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Zásady zabezpečení omezují vytváření textových zpráv"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Přidávání. Počkejte prosím..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresa střediska služeb"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Velké"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normální"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Malé"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Naplánovanou zprávu nelze odeslat. Nastavte jiný čas"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Datum a čas"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nebyli přidání žádní příjemci. Zadejte příjemce"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Možnosti odesílání"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normální"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Odesílání SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Příjemci"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Zpráva"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Jednou"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3krát"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5krát"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Jsem v nouzové situaci. Prosím, pomozte mi."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM karta není vložena"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Fotografovat"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Doba trvání musí být delší než %d sekund"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Obsah nelze přidat"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Vybrat příjemce"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Doba trvání (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Obrázek je příliš velký. Komprimování..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Zpráva byla uložena jako koncept"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Další"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Koncept"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Odeslat e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Vložené položky"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Připojené položky"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "Přílohy (%d)"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Plánovaná\nzpráva"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Doba trvání\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Použít jiné kont. info"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Tato zpráva obsahuje soubor, který není uveden."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Tato zpráva zahrnuje připojené soubory, které nejsou zobrazeny"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Uložit vše"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Koncepty"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Zpráva bude obnovena"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Naplánovaná zpráva bude zrušena"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopírovat text zpr."
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Zobr. detaily zprávy"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Zamknuté zprávy"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Složky zpráv"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokovat"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopírovat do telefonu"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Zpráva byla zkopírována ze SIM karty"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Zrušit zprávu"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Přílohy"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Nepodařilo se odeslat zprávu"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Bylo dosaženo maximálního počtu znaků"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Uloženo do Mých souborů"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Podrobnosti zprávy"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Obnovení..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Bez příloh"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Zkopírováno do schránky"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopírovat na kartu SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Nelze zkopírovat"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Vypnout ochranu"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Zapnout ochranu"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Uložit přílohu"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Obnovit"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Chráněné zprávy"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Probíhá zrušení..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Naprosto stejné jako"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Začátek"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Zahrnout"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Kritéria"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Odstranit číslo"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s je blokován"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Odstranit tuto chráněnou zprávu?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Odblokovat"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Odebírání..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Obnoveno"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Chráněné zprávy"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Ochrana byla odebrána"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Blokovat %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s je odblokován"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Plánovaný čas musí být nastaven v budoucnu"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Zakázaný typ obsahu. Opravdu ho chcete připojit?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Zahrnout chráněnou zprávu"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S plánovač"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Vkládací režim"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Abeceda GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automaticky"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Zadat číslo"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicita"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Přidat slovo"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Možnosti příjmu"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Někteří příjemci mají neplatné číslo. Neplatní příjemci nebudou přidáni. Neplatní příjemci: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Příjemce"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Zadejte slovo"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Upravit slovo"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Číst"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Přidat číslo"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Upravit číslo"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Odstranit slova"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Zprávy přijaté od vašich kontaktů nebudou blokovány, ani když budou obsahovat blokovaná slova"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokovaná čísla"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokovaná slova"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "O zprávách SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "V režimu Letadlo není možné odesílat zprávy. Vypněte režim Letadlo a opakujte akci"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Vypn. režim Letadlo"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Zpráva odeslána"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Odeslání zprávy se nezdařilo"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Odstraňte čísla"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Ve stavu nouze stiskněte (při zamknuté klávesnici) 4krát za sebou tlačítko pro snížení hlasitosti. Tím odešlete zprávy SOS vybraným příjemcům. Pokud vám zavolají zpět, telefon nezazvoní, ale jejich hovor bude automaticky přijat. Po odeslání zpráv SOS zůstanou všechny ostatní funkce telefonu vypnuty, dokud neodemknete klávesnici"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Jste registrováni jako příjemce zprávy SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Odeslat"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Zálohování"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Export na SD kartu"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Já"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Provádění..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Oznámení MMS zprávy"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Stav"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Platnost do: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Některé znaky mohou být ztraceny.\nPokračovat?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Přidat text"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Textové šablony"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Vložit emotikonu"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nepodporovaný typ média"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Zakazování režimu Letadlo..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d konverzací"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d zpráv"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "V seznamu nejsou žádné šablony"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Rozšířené hledání"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Šablona"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Zvuk"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Styl bubliny"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Styl pozadí"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Možnosti zprávy"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Doba trvání musí být alespoň %d sekund"
+
diff --git a/main/po/da.po b/main/po/da.po
new file mode 100755 (executable)
index 0000000..2f37130
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Leveringsrapport"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Læsningsrapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Anmod om leveringsrapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Anmod om læsningsrapport"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Elementliste"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Flyt til telefon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Oprettelsestilstand"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Tjenestecentral"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Flyt til SIM-kort"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Planlagt meddelelse"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam-meddelelser"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Modtager advarselstype"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Gentag"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Optag video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Optag lyd"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Gruppemeddelelser"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-kortmeddelelser"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Vis kontakter"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Der kan ikke åbnes"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Hent"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Kunne ikke flytte"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Det maksimale antal sider er nået"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Begrænset tilstand. Kan ikke indsætte begrænset indhold"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Sendt"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Udløbet"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Henter..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Indsæt et SIM-kort for at sende meddelelser. Denne meddelelse vil blive gemt i Udbakken"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Indtast kanalnummer"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 meddelelse valgt"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d meddelelser valgt"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Forhåndsvisning"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Filnavnet findes allerede"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Ingen meddelelser"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Føj til kontakt"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Slet"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Kunne ikke sende meddelelse"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Tag billede"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Ingen adresse"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Vedh. Elementliste"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automatisk overførsel"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Gruppemeddelelser"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Center %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Brugerdefineret tid"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Afsendelse mislykkedes"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Fra"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Indsat elementliste"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Meddelelsen er leveret"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Meddelelsen er modtaget"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Ledig"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Advarsel"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Sendt"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push-meddelelser"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Modtaget"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuelt"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Afvis"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Modtagelsesindstillinger"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Begrænset"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Lav"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Haster"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritet"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Send læsningsrapport"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Sidevarighed"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS-meddelelser"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Sms-meddelelser"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Størrelse i alt"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM indhold"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekunder"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekunder"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekunder"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Hjemmenetværk"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installér"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Roaming"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Vis kontaktdetalje"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimediemeddelelse er sendt"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Hentning af meddelelse mislykkedes"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Afsendelse af multimediemeddelelse mislykkedes"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Varighed for dias"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Brug lydstyrketasten"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Tekstmeddelelse"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Ikke-navngivet"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Meddelelsesstørrelse"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Anmodet"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Ikke anmodet"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Vid.send"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Ulæst"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Kopierede modtagere"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Det maksimale antal modtagere (%d) er nået"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Til"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Optag lyd"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Optag videoklip"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Ændret til mms"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Ændret til sms"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d vedhæftninger tilgængelige. Vælg op til %d vedhæftninger"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Kan ikke vedhæfte alle filer. Maksimal kapacitet for vedhæftning %d KB. Fortsæt?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Skriftstørrelse"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimediemeddelelse"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Intet emne"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Vælg adresse"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Du er ved at gå online(%s). Vil du fortsætte?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Send igen"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Ugyldig modtager"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Ugyldige modtagere"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Kunne ikke afspille under opkald"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Kan ikke gemme lagringsmedietilstand"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Annullér aktuel meddelelse?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Valgte"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Slet?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Kan ikke tilknytte. Maks. størrelse for filer er %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Begrænset"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Kan ikke videresende.\nFilen er låst mod videresendelse"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Sikkerhedspolitikken begrænser udfærdigelse af tekstmeddelelser"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Tilføjer. Vent..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresse på tjenestecentral"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Stor"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Lille"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Planlagt meddelelse blev ikke sendt. Indstil et andet tidspunkt"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Dato og tid"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimediemeddelelser"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Ingen modtagere tilføjet. Indtast modtagere"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Afsendelsesindstillinger"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Sender SOS-meddelelse"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Modtagere"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Meddelelse"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Én gang"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 gange"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 gange"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Jeg er i nød. Hjælp mig!"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-kort er ikke indsat"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Tag billede"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Varighed skal være længere end %d sekunder"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Kan ikke tilføje indhold"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Vælg modtagere"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Varighed (%s sek.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Billede for stort. Komprimerer..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Meddelelse gemt som udkast"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Anden"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Udkast"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Send e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Indsatte elementer"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Vedhæftede filer"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d vedhæftninger"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Planlagt\nbesked"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Varighed\n(%d sek.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Brug andre kontaktopl."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Denne meddelelse indeholder en vedhæftet fil, som ikke vises."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Denne meddelelse indeholder vedhæftede filer, der ikke vises"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Gem alle"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Kladdemeddelelser"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Meddelelse bliver gendannet"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Planlagt meddelelse vil blive annulleret"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopier medd.tekst"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Vis medd.detaljer"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Låste meddelelser"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Meddelelsesbokse"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokér"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopiér til telefon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Meddelelse kopieret fra SIM-kort"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Annullér meddelelse"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Vedhæftede filer"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Meddelelse om mislykket afsendelse"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Det maksimale antal tegn er nået"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Gemt i Mine filer"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Meddelelsesdetaljer"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Gendanner..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Ingen vedhæftede filer"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Kopieret til udklipsholder"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopiér til SIM-kort"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Kunne ikke kopiere"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Beskyttelse fra"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Beskyttelse til"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Gem vedhæftning"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Gendan"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Beskyttede meddelelser"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Annullerer ..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Nøjagtig det samme som"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Start med"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Inkludér"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Match kriterier"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Slet nummer"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blokeret"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Slet denne beskyttede meddelelse?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Ophæv blokering"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Fjerner..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Gendannet"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Beskyttede meddelelser"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Beskyttelse fjernet"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Blokér %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s ikke blokeret"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Planlagt tid skal indstilles til fremtiden"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Begrænset indholdstype. Vedhæft alligevel?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Inkludér beskyttet meddelelse"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S-notat"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S-planlægger"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Tekstindtastningstilstand"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-alfabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatisk"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Angiv nummer"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Gentagne navne"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Tilføj ord"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Modtagelsesindstillinger"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Nogle modtagere har et ugyldigt nummer. Ugyldige modtagere ikke tilføjet. Ugyldige modtagere: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Modtager"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Indtast ord"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Redigér ord"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Læs"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Tilføj nummer"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Redigér nummer"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Slet ord"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Meddelelser modtaget fra dine kontakter vil ikke blive blokeret, selv om de indeholder blokerede ord"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokerede numre"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokerede ord"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Om SOS-meddelelser"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Kan sende meddelelser under Flytilstand. Deaktivér Flytilstand, og prøv igen"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Deakt. Flytilstand"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Meddelelse er sendt"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Kunne ikke sende meddelelse"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Slet numre"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "I nødstilfælde skal du trykke tasten lydstyrke ned fire gange, når tastaturlåsen er aktiveret. På denne måde sendes SOS-meddelelser til de valgte modtagere. Hvis de ringer tilbage til dig, ringer telefonen ikke, men deres opkald besvares automatisk. Efter afsendelse af SOS-meddelelser forbliver alle andre funktioner på telefonen utilgængelige, indtil tastaturlåsen ikke længere er aktiveret"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Du er registreret som modtager af en SOS-meddelelse."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Send nu"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Sikkerhedskopi"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Eksportér til SD-kort"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Mig"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "Mms"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "I gang..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Besked om multimediemeddelelse"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Udløber: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Nogle tegn går muligvis tabt.\nFortsæt?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Tilføj tekst"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Tekstskabeloner"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Indsæt humørikon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Medietype understøttes ikke"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Deaktiverer Flytilstand ..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d samtaler"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d meddelelser"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Ingen skabeloner på liste"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Avanceret søgning"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Skabelon"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Lyd"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Boblestil"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Baggrundsstil"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Meddelelsesindstillinger"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Varigheden skal være på mindst %d sekunder"
+
diff --git a/main/po/de_DE.po b/main/po/de_DE.po
new file mode 100755 (executable)
index 0000000..6c14ae1
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Zustellbericht"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Lesebericht"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Zustellbericht anfordern"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Lesebericht anfordern"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Elementliste"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "In Telefon verschieben"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Erstellungsmodus"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Dienstzentrale"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Auf SIM-Karte verschieben"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Geplante Nachricht"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam-Nachrichten"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Benachrichtigungston"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Wiederholen"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Video aufnehmen"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Ton aufzeichnen"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB-Nachrichten"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-Karten-Nachrichten"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Kontakte anzeigen"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Kann nicht geöffnet werden"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Abrufen"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Verschieben nicht möglich"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Maximale Anzahl an Seiten erreicht"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Eingeschränkter Modus. Eingeschränkter Inhalt kann nicht eingefügt werden"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Zugestellt"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Abgelaufen"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Wird abgerufen..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "SIM-Karte einlegen, um Nachrichten zu senden. Die Nachricht wird im Postausgang gespeichert"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Sendernummer eingeben"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 Nachricht ausgewählt."
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d Nachrichten ausgewählt."
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Vorschau"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Dateiname wird bereits verwendet"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Keine Nachrichten"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Zu Kontakt hinzufügen"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Verwerfen"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Nachricht kann nicht gesendet werden"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Foto aufnehmen"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Keine Adresse"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Elementliste angehängt"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automatisch herunterladen"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Infomeldungen"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Zentrale %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Benutzerdefinierte Zeit"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Senden fehlgeschlagen"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Von"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Liste der eingefügten Elemente"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Nachricht zugestellt"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Nachricht abgerufen"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Frei"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Warnung"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Gesendet"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "WAP-Push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Empfangen"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuell"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Ablehnen"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Empfangsoptionen"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Eingeschränkt"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Niedrig"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Dringend"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Priorität"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Lesebericht senden"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Seitenanzeigedauer"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS-Nachrichten"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Gesamtgröße"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM-Inhalt"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 Sekunden"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 Sekunden"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 Sekunden"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Heimatnetz"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installieren"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Fremdnetz"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Kontaktdetails anzeigen"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS gesendet"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Abrufen der Nachricht fehlgeschlagen"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Senden der Multimedia-Nachricht fehlgeschlagen"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Anzeigedauer:"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Lautstärketaste verwenden"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Unbenannt"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Nachrichtengröße"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Angefordert"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nicht angefragt"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Weiterl."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Unge-\nlesen"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Doppelter Empfänger"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maximale Anzahl an Empfängern (%d) erreicht"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "An"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Ton aufzeichnen"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Video aufzeichnen"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Zu MMS geändert"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Zu SMS geändert"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d Anhänge verfügbar. Wählen Sie bis zu %d Anhänge."
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Anhängen der Dateien nicht möglich. Maximale Anhangsgröße ist %d KB. Fortfahren?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Schriftgröße"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Kein Betreff"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Adresse auswählen"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Sie sind im Begriff Online zu gehen (%s). Fortfahren?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Erneut senden"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Ungültiger Empfänger"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Ungültige Empfänger"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Wiedergabe während Anruf nicht möglich"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Im Massenspeichermodus kein Speichern möglich"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Aktuelle Nachricht verwerfen?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Ausgewählt"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Löschen?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Anhängen nicht möglich. Maximale Dateigröße ist %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Eingeschränkt"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Weiterleiten nicht möglich.\nDatei ist für Weiterleitung gesperrt"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Sicherheitsrichtlinie schränkt das Verfassen von SMS ein"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Hinzufügen. Bitte warten..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresse der SMS-Zentrale"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Groß"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Klein"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Sehr klein"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Geplante Nachricht kann nicht gesendet werden. Andere Zeit festlegen."
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Datum und Uhrzeit"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Keine Empfänger hinzugefügt. Empfänger hinzufügen."
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Sendeoptionen"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "Notruf"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS senden"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Empfänger"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Nachricht"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Einmal"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 Mal"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 Mal"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Ich befinde mich in einer Notsituation! Bitte helfen Sie mir."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM nicht eingelegt"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Foto aufnehmen"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Länge muss mehr als %d Sekunden betragen."
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Inhalt kann nicht hinzugefügt werden"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Empfänger auswählen"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Dauer (%s Sek.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Bild zu groß. Komprimieren..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Nachricht als Entwurf gespeichert"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Andere"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Entwurf"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "E-Mail senden"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Eingefügte Elemente"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Angehängte Elemente"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d Anhänge"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Geplante\nNachricht"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Dauer:\n(%d Sek.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Andere Kontaktinfos verw."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Diese Nachricht enthält angehängte Dateien, die nicht angezeigt werden."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Diese Nachricht umfasst angehängte, nicht angezeigte Dateien"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Alle speichern"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Nachrichtenentwürfe"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Nachricht wird wiederhergestellt"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Geplante Nachricht wird abgebrochen"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Nachricht kopieren"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Details anzeigen"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Geschützte Nachrichten"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Nachrichtenkästchen"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Sperren"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Ins Telefon kopieren"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Nachricht von SIM-Karte kopiert"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Nachricht stornieren"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Anhänge"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Nicht gesendete Nachrichten"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Maximal zulässige Zeichenanzahl erreicht."
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "In “Eigene Dateien” gespeichert"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Nachrichtendetails"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Wiederherstellung wird durchgeführt..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Keine Anhänge"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "In Zwischenablage kopiert"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Auf die SIM-Karte kopieren"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Kopieren nicht möglich"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Schutz aus"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Schutz an"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Anhang speichern"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Wiederherstellen"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Geschützte Nachrichten"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Abbrechen..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Identisch mit"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Beginnt mit"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Enthält"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Passende Kriterien"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Nummer löschen"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s gesperrt"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Diese geschützte Nachricht löschen?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Freigeben"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Entferne..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Wiederhergestellt"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Geschützte Nachrichten"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Schutz entfernt"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s sperren?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s entsperrt"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Geplante Zeit sollte in der Zukunft liegen"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Eingeschränkter Inhaltstyp. Trotzdem anhängen?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Geschützte Nachricht miteinbeziehen"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Eingabemodus"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-Alphabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatisch"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Nummer eingeben"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Verdoppelt"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Wort hinzufügen"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Empfangsoptionen"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Die Nummern einiger Empfänger sind ungültig. Ungültige Empfänger wurden nicht hinzugefügt. Ungültige Empfänger: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Empfänger"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Wort eingeben"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Wort bearbeiten"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lesen"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Nummer hinzufügen"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Nummer bearbeiten"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Wörter löschen"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Nachrichten, die Sie von Ihren Kontakten erhalten, werden nicht blockiert, auch wenn Sie gesperrte Wörter enthalten."
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Gesperrte Nummern"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Gesperrte Wörter"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Info zu SOS-Nachrichten"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Im Offline-Modus können keine Nachrichten gesendet werden. Deaktivieren Sie den Offline-Modus und versuchen Sie es erneut."
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Offline-Modus deakt."
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Nachricht gesendet"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Fehler beim Senden der Nachricht"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Nummern löschen"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Drücken Sie in einer Notsituation die Lautstärketaste vier Mal, wenn die Tastensperre aktiviert ist. Die SOS-Nachrichten werden dann an Ihre ausgewählten Empfänger gesendet. Wenn diese zurückrufen, wird das Telefon nicht klingeln, aber der Anruf wird automatisch beantwortet. Nachdem die SOS-Nachrichten versendet wurden, sind die anderen Funktionen des Telefons so lange nicht verfügbar, bis die Tastensperre deaktiviert ist."
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Sie sind als SOS-Nachrichtenempfänger registriert."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Senden"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Datensicherung"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Auf SD-Karte exportieren"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Ich"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Wird ausgeführt..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "MMS-Benachrichtigung"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Läuft ab: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Einige Zeichen gehen u. U. verloren\nFortsetzen?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Text hinzufügen"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "SMS-Vorlagen"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Emoticon einfügen"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nicht unterstützter Medientyp"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Offline-Modus wird deaktiviert..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d Konversationen"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d Nachrichten"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Keine Vorlagen in der Liste"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Erweiterte Suche"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Vorlage"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Blasen-Stil"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Hintergrundstil"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Nachrichtenoptionen"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Dauer muss mindestens %d Sekunden betragen."
+
diff --git a/main/po/el_GR.po b/main/po/el_GR.po
new file mode 100755 (executable)
index 0000000..190d51e
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Αναφορά παράδοσης"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Αναφορά ανάγνωσης"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Αίτηση αναφοράς παράδοσης"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Αίτηση αναφ. ανάγνωσης"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Λίστα στοιχείων"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Μετακίνηση στο τηλέφωνο"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Λειτουργία δημιουργίας"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Κέντρο υπηρεσίας"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Μετακίνηση στην κάρτα SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Προγραμματισμένο μήνυμα"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Ανεπιθύμητα μηνύματα"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Λήψη τύπου ειδοποίησης"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Επανάληψη"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Λήψη βίντεο"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Ηχογράφηση"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Μηνύματα εκπομπής κυψέλης"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Μηνύματα κάρτας SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Προβολή επαφών"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Δεν είναι δυνατό το άνοιγμα"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Ανάκτηση"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Δεν είναι δυνατή η μετακίνηση"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Συμπληρώθηκε ο μέγιστος αριθμός σελίδων"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Περιορισμός. Δεν είναι δυνατή η εισαγωγή απαγορευμένου περιεχομένου"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Παραδόθηκε"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Έληξε"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Ανάκτηση..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Εισάγετε κάρτα SIM για την αποστολή μηνυμάτων. Το μήνυμα θα αποθηκευτεί στα Εξερχόμενα"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Εισαγωγή αριθμού καναλιού"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Έχει επιλεχθεί 1 μήνυμα"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Έχουν επιλεχθεί %d μηνύματα"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Προεπισκόπηση"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Το όνομα αρχείου υπάρχει ήδη"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Κανένα μήνυμα"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Προσθήκη σε επαφή"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Απόρριψη"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Δεν είναι δυνατή η αποστολή μηνύματος"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Λήψη φωτογραφίας"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Καμία διεύθυνση"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Συνημμένη λίστα στοιχείων"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Αυτόματη λήψη"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Μηνύματα εκπομπής κυψέλης"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Κέντρο %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Προσαρμοσμένη ώρα"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Αποτυχία αποστολής"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Από"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Εισαχθείσα λίστα στοιχείων"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Το μήνυμα παραδόθηκε"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Το μήνυμα ανακτήθηκε"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Ελεύθερο"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Προειδοποίηση"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Εστάλη"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Μηνύματα Push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Ελήφθη"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Χειροκίνητα"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Απόρριψη"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Επιλογές λήψης"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Περιορισμός"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Χαμηλή"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Κανονική"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Επείγον"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Προτεραιότητα"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Αποστολή αναφοράς ανάγνωσης"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Διάρκεια σελίδας"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Μηνύματα SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Συνολικό μέγεθος"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Περιεχόμενο DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 δευτερόλεπτα"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 δευτερόλεπτα"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 δευτερόλεπτα"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Οικείο δίκτυο"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Εγκατάσταση"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Δίκτυο περιαγωγής"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Προβολή λεπτομερειών επαφής"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Το MMS εστάλη"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Αποτυχία ανάκτησης μηνύματος"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Αποτυχία αποστολής μηνύματος πολυμέσων"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Διάρκεια διαφάνειας"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Χρήση πλήκτρου έντασης"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Χωρίς τίτλο"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Μέγεθος μηνύματος"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Έγινε αίτημα"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Δεν ζητήθηκε"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Προώθ."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Μη αναγνωσμένο"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Διπλότυπος παραλήπτης"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Συμπληρώθηκε ο μέγιστος αριθμός παραληπτών (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Προς"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Εγγραφή ήχου"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Εγγραφή βίντεο"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Άλλαξε σε MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Αλλαγή σε SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d συνημμένα διαθέσιμα. Επιλέξτε έως και %d συνημμένα"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Δεν είναι δυνατή η επισύναψη όλων των αρχείων. Η μέγιστη χωρητικότητα για επισυνάψεις είναι %d KB. Συνέχεια;"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Μέγεθος γραμματοσειράς"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Χωρίς θέμα"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Επιλογή διεύθυνσης"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Πρόκειται να συνδεθείτε (%s). Συνέχεια;"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Επανάληψη αποστολής"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Μη έγκυρος παραλήπτης"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Μη έγκυροι παραλήπτες"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Δεν είναι δυνατή η αναπαραγωγή παιχνιδιού κατά την κλήση"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Δεν είναι δυνατή η αποθήκευση κατά την λειτουργία μαζικής αποθήκευσης"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Να απορριφθεί το τρέχον μήνυμα;"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Επιλεγμένο"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Διαγραφή;"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Δεν είναι δυνατή η επισύναψη. Το μέγιστο όριο μεγέθους των αρχείων είναι %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Περιορισμός"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Δεν είναι δυνατή η προώθηση. Το αρχείο έχει προστασία κατά της προώθησης"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Η πολιτική ασφαλείας περιορίζει τη σύνταξη μηνυμάτων κειμένου"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Γίνεται προσθήκη. Περιμένετε..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Διεύθυνση κέντρου υπηρεσίας"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Μεγάλο"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Κανονική"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Μικρό"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Δεν είναι δυνατή η αποστολή του προγραμματισμένου μηνύματος. Ορίστε άλλη ώρα"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Ημερομηνία & ώρα"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Δεν έχουν προστεθεί παραλήπτες. Εισάγετε παραλήπτες"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Επιλογές αποστολής"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Κανονική"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Αποστολή μηνύματος SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Παραλήπτες"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Μήνυμα"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Μία φορά"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 φορές"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 φορές"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Βρίσκομαι σε έκτακτη ανάγκη. Βοηθήστε με."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Δεν έχει τοποθετηθεί SIM"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Λήψη φωτογραφίας"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Η διάρκεια πρέπει να είναι μεγαλύτερη από %d δευτερόλεπτα"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Αδύνατη η προσθήκη περιεχομένου"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Επιλογή παραλήπτη"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Διάρκεια (%s δευτ/τα)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Πολύ μεγάλη εικόνα. Συμπίεση..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Αποθήκευση μηνύματος ως πρόχειρο"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Άλλο"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Πρόχειρο"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Αποστολή email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Στοιχεία που έχουν εισαχθεί"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Συνημμένα στοιχεία"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d συνημμένα"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Προγραμ.\nμήνυμα"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Διάρκεια\n(%d δευτ.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Χρ. στοιχ. άλλης επαφ."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Αυτό το μήνυμα περιέχει ένα συνημμένο αρχείο που δεν εμφανίζεται"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Αυτό το μήνυμα περιέχει μερικά συνημμένα που δεν εμφανίζονται"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Αποθήκευση όλων"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Πρόχειρα μηνύματα"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Θα γίνει επαναφορά του μηνύματος"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Το προγραμματισμένο μήνυμα θα ακυρωθεί"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Αντιγρ. κειμέν. μηνυμ."
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Προβολ.στοιχ.μηνύμ."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Κλειδωμένα μηνύματα"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Φάκελοι μηνυμάτων"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Αποκλεισμός"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Αντιγραφή στο τηλέφωνο"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Το μήνυμα αντιγράφηκε από την κάρτα SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Ακύρωση μηνύματος"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Συνημμένα"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Αποστολή μηνύματος αποτυχίας"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Ο μέγιστος αριθμός χαρακτήρων συμπληρώθηκε"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Αποθηκεύτηκε στο φάκελο “Τα αρχεία μου”"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Στοιχεία μηνύματος"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Επαναφορά..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Χωρίς συνημμένα"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Αντιγράφηκε στο πρόχειρο"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Αντιγραφή στη SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Δεν είναι δυνατή η αντιγραφή"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Προστασία ανενεργή"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Προστασία ενεργή"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Αποθήκευση συνημμένου"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Επαναφορά"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Προστατευμένα μηνύματα"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Ακύρωση..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Ακριβώς ίδιο με"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Αρχίζει από"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Να συμπεριληφθεί"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Αντιστοίχιση κριτηρίων"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Διαγραφή αριθμού"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "Ο/Η %s αποκλείστηκε"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Να γίνει διαγραφή αυτού του προστατευμένου μηνύματος;"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Ακύρωση αποκλεισμού"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Αφαίρεση..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Επαναφέρθηκε"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Προστατευμένα μηνύματα"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Η προστασία καταργήθηκε"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Αποκλεισμός του %s;"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "Αναίρεση αποκλεισμού του/της %s"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Ο προγραμματισμένος χρόνος θα πρέπει να οριστεί στο μέλλον"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Απαγορευμένος τύπος περιεχομένου. Να γίνει επισύναψη;"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Συμπερίληψη προστατευμένου μηνύματος"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "εισαγωγή λειτουργίας"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Αλφάβητο GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Αυτόματo"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Εισαγωγή αριθμού"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Διπλότυπος"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Προσθήκη λέξης"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Επιλογές λήψης"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Ορισμένοι παραλήπτες έχουν μη έγκυρο αριθμό. Οι μη έγκυροι παραλήπτες δεν προστέθηκαν. Μη έγκυροι παραλήπτες: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Παραλήπτης"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Εισάγετε λέξη"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Επεξεργασία λέξης"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Ανάγνωση"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Προσθήκη αριθμού"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Επεξεργασία αριθμού"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Διαγραφή λέξεων"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Τα μηνύματα που λαμβάνετε από τις επαφές σας δεν θα αποκλείονται, ακόμα και αν περιλαμβάνουν απαγορευμένες λέξεις"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Απαγορευμένοι αριθμοί"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Απαγορευμένες λέξεις"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Πληροφορίες για τα μηνύματα SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Δεν είναι δυνατή η αποστολή μηνυμάτων, όσο είναι ενεργοποιημένη η λειτουργία πτήσης. Απενεργοποιήστε τη λειτουργία πτήσης και δοκιμάστε ξανά"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Απενερ. λειτ. πτήσης"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Μήνυμα εστάλη"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Αποτυχία αποστολής μηνύματος"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Διαγραφή αριθμών"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Σε περίπτωση έκτακτης ανάγκης, πιέστε το πλήκτρο μείωσης της έντασης 4 φορές ενώ είναι ενεργοποιημένο το κλείδωμα πλήκτρων. Με αυτήν την ενέργεια, θα αποσταλεί μήνυμα SOS στους επιλεγμένους παραλήπτες. Αν αυτοί επιστρέψουν την κλήση σας, το τηλέφωνο δεν θα ηχήσει αλλά η κλήση θα απαντηθεί αυτόματα. Μετά την αποστολή των μηνυμάτων SOS όλες οι υπόλοιπες λειτουργίες του τηλεφώνου δεν θα είναι διαθέσιμες έως ότου απενεργοποιηθεί το κλείδωμα πλήκτρων"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Είστε εγγεγραμμένος ως παραλήπτης μηνύματος SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Αποστολή"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Αντίγραφο ασφαλείας"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Εξαγωγή στην κάρτα SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Εγώ"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Σε εξέλιξη..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Ειδοποίηση μηνύματος πολυμέσων"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Κατάσταση"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Λήξη: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Μερικοί χαρακτήρες μπορεί να χαθούν\nΣυνέχεια;"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Προσθήκη κειμένου"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Πρότυπα κειμένου"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Εισαγωγή emoticon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Μη υποστηριζόμενος τύπος μέσου"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Λειτ.πτήσης απενερ..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d συνομιλίες"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d μηνύματα"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Δεν υπάρχουν πρότυπα στη λίστα"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Σύνθετη αναζήτηση"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Πρότυπο"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Ήχος"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Στυλ για συννεφάκι κειμένου"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Στυλ παρασκηνίου"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Επιλογές μηνύματος"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Η διάρκεια πρέπει να είναι τουλάχιστον %d δευτερόλεπτα"
+
diff --git a/main/po/en.po b/main/po/en.po
new file mode 100755 (executable)
index 0000000..1b28e0f
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Delivery report"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Read report"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Request delivery report"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Request read report"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Item list"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Move to phone"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Creation mode"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Service centre"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Move to SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Scheduled message"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam messages"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Receiving alert type"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repeat"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capture video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Record audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB messages"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM card messages"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "View contact"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Unable to open"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Retrieve"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Unable to move"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Maximum number of pages reached"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Restricted mode. Unable to insert restricted content"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Delivered"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Expired"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Retrieving..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insert a SIM card to send messages. The message will be saved in Outbox"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Enter channel number"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 message selected"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d messages selected"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Preview"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "File name already exists"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "No messages"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Add to contact"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Discard"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Unable to send message"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Take photo"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "No address"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Attached item list"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Auto download"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Broadcast messages"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centre %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Custom time"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Sending failed"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "From"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Inserted item list"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Message delivered"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Message retrieved"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Free"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Warning"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Sent"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push messages"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Received"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Reject"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Receiving options"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restricted"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Low"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgent"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Priority"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Send read report"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Page duration"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS messages"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Text messages"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Total size"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM content"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 seconds"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 seconds"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 seconds"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Home network"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Install"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Foreign network"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "View contact detail"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimedia message sent"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Retrieving message failed"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Sending multimedia message failed"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duration for slide"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Use the volume key"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Text message"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Untitled"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Message size"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Requested"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Not requested"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Fwd"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Unread"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Duplicated recipient"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maximum number of recipients (%d) reached"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "To"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Record sound"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Record video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Changed to MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Changed to SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d attachments available. Select up to %d attachments"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Unable to attach all files. Maximum attachment capacity %d KB. Continue?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Font size"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedia message"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "No subject"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Select address"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "You are about to go online(%s). Continue?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Resend"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Invalid recipient"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Invalid recipients"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Unable to play during call"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Unable to save while in Mass storage mode"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Discard current message?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Selected"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Delete?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Unable to attach. Maximum size of files is %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restricted"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Unable to forward.\nFile is forward locked"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Security policy restricts composing of text messages"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Adding. Please wait..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Service centre address"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Large"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Small"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Unable to send scheduled message. Set another time"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Date and time"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimedia messages"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "No recipients added. Enter recipients"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Sending options"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Sending SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Recipients"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Once"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 times"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 times"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "I am in an emergency. Please help me"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM not inserted"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Take picture"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Duration must be longer than %d seconds"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Unable to add content"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Select recipient"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duration (%s secs)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Picture too large. Compressing..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Message saved as draft"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Other"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Draft"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Send email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Inserted items"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Attached items"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d attachments"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Scheduled\nmessage"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duration\n(%d secs)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Use other contact info"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "This message includes an attached file not shown"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "This message includes attached files not shown"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Save all"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Draft messages"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Message will be restored"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Scheduled message will be cancelled"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copy message text"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "View message details"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Locked messages"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Message boxes"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Block"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copy to phone"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Message copied from SIM card"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancel message"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Attachments"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Sending failed message"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Maximum number of characters reached"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restoring..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "No attachments"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copied to clipboard"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copy to SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Unable to copy"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Protection off"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Protection on"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Save attachment"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restore"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Protected messages"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Cancelling..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exactly the same as"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Start with"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Include"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Match criteria"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Delete number"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blocked"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Delete this protected message?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Unblock"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Removing..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restored"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Protected messages"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protection removed"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Block %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s unblocked"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Scheduled time should set in the future"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Restricted content type. Attach anyway?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Include protected message"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Input mode"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM alphabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatic"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Enter number"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicated"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Add word"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Receiving options"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Some recipients have an invalid number. Invalid recipients not added. Invalid recipients: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Recipient"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Enter word"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Edit word"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Read"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Add number"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Edit number"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Delete words"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Messages received from your contacts will not be blocked even if they contain blocked words"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blocked numbers"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blocked words"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "About SOS messages"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Unable to send messages while in Flight mode. Disable Flight mode and try again"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Disable Flight mode"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Message sent"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Sending message failed"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Delete numbers"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "In an emergency press the volume down key 4 times when key lock is active. This will send SOS messages to your selected recipients. If they call you back, the phone will not ring but their call will be answered automatically. After sending the SOS messages all other functions on the phone will remain unavailable until the key lock is no longer active"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "You are registered as an SOS message recipient."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Send now"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Backup"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Export to SD card"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Me"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "In progress..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimedia message notification"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Expires: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Some characters may be lost. Continue?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Add text"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Text templates"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Insert emoticon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Unsupported media type"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Disabling Flight mode..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversations"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d messages"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "No templates in list"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Advanced search"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Template"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Bubble style"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Background style"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Message options"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Duration must be at least %d seconds"
+
diff --git a/main/po/en_PH.po b/main/po/en_PH.po
new file mode 100755 (executable)
index 0000000..aef0f94
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Delivery report"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Read report"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Request delivery report"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Request read report"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Item list"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Move to phone"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Creation mode"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Service center"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Move to SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Scheduled message"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam messages"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Receiving alert type"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repeat"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capture video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Record audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB messages"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM card messages"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "View contact"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Unable to open"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Retrieve"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Unable to move"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Maximum number of pages reached"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Restricted mode. Unable to insert restricted content"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Delivered"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Expired"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Retrieving..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insert a SIM card to send messages. The message will be saved in Outbox"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Enter channel number"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 message selected"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d messages selected"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Preview"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "File name already exists"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "No messages"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Add to contact"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Discard"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Unable to send message"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Take photo"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "No address"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Attached item list"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Auto download"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Broadcast messages"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Center %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Custom time"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Sending failed"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "From"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Inserted item list"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Message delivered"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Message retrieved"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Free"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Warning"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Sent"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push messages"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Received"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Reject"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Receiving options"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restricted"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Low"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgent"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Priority"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Send read report"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Page duration"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS messages"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Text messages"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Total size"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM content"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 seconds"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 seconds"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 seconds"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Home network"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Install"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Foreign network"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "View contact detail"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimedia message sent"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Retrieving message failed"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Sending multimedia message failed"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duration for slide"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Use the volume key"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Text message"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Untitled"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Message size"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Requested"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Not requested"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Fwd"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Unread"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Duplicated recipient"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maximum number of recipients (%d) reached"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "To"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Record sound"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Record video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Changed to MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Changed to SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d attachments available. Select up to %d attachments"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Unable to attach all files. Maximum attachment capacity %d KB. Continue?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Font size"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedia message"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "No subject"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Select address"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "You are about to go online(%s). Continue?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Resend"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Invalid recipient"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Invalid recipients"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Unable to play during call"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Unable to save while in Mass storage mode"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Discard current message?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Selected"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Delete?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Unable to attach. Maximum size of files is %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restricted"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Unable to forward.\nFile is forward locked"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Security policy restricts composing of text messages"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Adding. Please wait..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Service center address"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Large"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Small"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Unable to send scheduled message. Set another time"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Date and time"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimedia messages"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "No recipients added. Enter recipients"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Sending options"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Sending SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Recipients"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Once"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 times"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 times"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "I am in an emergency. Please help me"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM not inserted"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Take picture"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Duration must be longer than %d seconds"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Unable to add content"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Select recipient"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duration (%s secs)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Picture too large. Compressing..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Message saved as draft"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Other"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Draft"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Send Email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Inserted items"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Attached items"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d attachments"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Scheduled\nmessage"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duration\n(%d secs)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Use other contact info"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "This message includes an attached file not shown"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "This message includes attached files not shown"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Save all"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Draft messages"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Message will be restored"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Scheduled message will be canceled"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copy message text"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "View message details"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Locked messages"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Message boxes"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Block"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copy to phone"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Message copied from SIM card"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancel message"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Attachments"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Sending failed message"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Maximum number of characters reached"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restoring..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "No attachments"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copied to clipboard"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copy to SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Unable to copy"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Protection off"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Protection on"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Save attachment"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restore"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Protected messages"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Canceling..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exactly the same as"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Start with"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Include"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Match criteria"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Delete number"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blocked"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Delete this protected message?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Unblock"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Removing..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restored"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Protected messages"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protection removed"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Block %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s unblocked"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Scheduled time should set in the future"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Restricted content type. Attach anyway?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Include protected message"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Input mode"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM alphabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatic"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Enter number"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicated"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Add word"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Receiving options"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Some recipients have an invalid number. Invalid recipients not added. Invalid recipients: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Recipient"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Enter word"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Edit word"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Read"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Add number"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Edit number"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Delete word"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "If Added words are contained to received message from a person in my phonebook, the message will not be blocked. \nContinue?"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Numbers to reject"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blocked word"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "About SOS messages"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Unable to send messages while in Flight mode. Disable Flight mode and try again"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Disable Flight mode"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Message sent"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Sending message failed"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Delete numbers"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "In an emergency press the volume down key 4 times when key lock is active. This will send SOS messages to your selected recipients. If they call you back, the phone will not ring but their call will be answered automatically. After sending the SOS messages all other functions on the phone will remain unavailable until the key lock is no longer active"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "You are registered as a SOS message recipient."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Send now"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Back-up"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Export to SD card"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Me"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "In progress..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimedia message notification"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Expires: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Some characters may be lost. Continue?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Add text"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Text templates"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Insert emoticon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Unsupported media type"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Disabling Flight mode..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversations"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d messages"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "No templates in list"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Advanced search"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Template"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Bubble style"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Background style"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Message options"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Duration must be at least %d seconds"
+
diff --git a/main/po/en_US.po b/main/po/en_US.po
new file mode 100755 (executable)
index 0000000..a203cc4
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Delivery report"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Read report"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Request delivery report"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Request read report"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Item list"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Move to phone"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Creation mode"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Service center"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Move to SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Scheduled message"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam messages"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Receiving alert type"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repeat"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capture video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Record audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB messages"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM card messages"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "View contact"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Unable to open"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Retrieve"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Unable to move"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Maximum number of pages reached"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Restricted mode. Unable to insert restricted content"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Delivered"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Expired"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Retrieving..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insert a SIM card to send messages. The message will be saved in Outbox"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Enter channel number"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 message selected"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d messages selected"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Preview"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "File name already exists"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "No messages"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Add to contact"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Discard"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Unable to send message"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Take photo"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "No address"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Attached item list"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Auto download"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Broadcast messages"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "center %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Custom time"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Sending failed"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "From"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Inserted item list"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Message delivered"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Message retrieved"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Free"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Warning"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Sent"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push messages"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Received"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Reject"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Receiving options"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restricted"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Low"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgent"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Priority"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Send read report"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Page duration"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS messages"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Text messages"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Total size"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM content"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 seconds"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 seconds"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 seconds"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Home network"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Install"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Foreign network"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "View contact detail"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimedia message sent"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Retrieving message failed"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Sending multimedia message failed"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duration for slide"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Use the volume key"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Text message"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Untitled"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Message size"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Requested"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Not requested"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Fwd"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Unread"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Duplicated recipient"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maximum number of recipients (%d) reached"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "To"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Record sound"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Record video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Changed to MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Changed to SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d attachments available. Select up to %d attachments"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Unable to attach all files. Maximum attachment capacity %d KB. Continue?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Font size"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedia message"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "No subject"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Select address"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "You are about to go online(%s). Continue?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Resend"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Invalid recipient"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Invalid recipients"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Unable to play during call"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Unable to save while in Mass storage mode"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Discard current message?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Selected"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Delete?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Unable to attach. Maximum size of files is %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restricted"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Unable to forward.\nFile is forward locked"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Security policy restricts composing of text messages"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Adding. Please wait..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Service center address"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Large"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Small"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Unable to send scheduled message. Set another time"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Date and time"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimedia messages"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "No recipients added. Enter recipients"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Sending options"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Sending SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Recipients"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Once"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 times"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 times"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "I am in an emergency. Please help me"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM not inserted"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Take picture"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Duration must be longer than %d seconds"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Unable to add content"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Select recipient"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duration (%s sec)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Picture too large. Compressing..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Message saved as draft"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Other"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Draft"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Send email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Inserted items"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Attached items"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d attachments"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Scheduled\nmessage"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duration\n(%d secs)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Use other contact info"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "This message includes an attached file not shown"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "This message includes attached files not shown"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Save all"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Draft messages"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Message will be restored"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Scheduled message will be canceled"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copy message text"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "View message details"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Locked messages"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Message boxes"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Block"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copy to phone"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Message copied from SIM card"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancel message"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Attachments"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Sending failed message"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Maximum number of characters reached"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restoring..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "No attachments"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copied to clipboard"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copy to SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Unable to copy"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Protection off"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Protection on"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Save attachment"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restore"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Protected messages"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Cancelling..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exactly the same as"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Start with"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Include"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Match criteria"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Delete number"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blocked"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Delete this protected message?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Unblock"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Removing..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restored"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Protected messages"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protection removed"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Block %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s unblocked"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Scheduled time should set in the future"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Restricted content type. Attach anyway?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Include protected message"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Input mode"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM alphabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatic"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Enter number"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicated"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Add word"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Receiving options"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Some recipients have an invalid number. Invalid recipients not added. Invalid recipients: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Recipient"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Enter word"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Edit word"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Read"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Add number"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Edit number"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Delete words"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Messages received from your contacts will not be blocked even if they contain blocked words"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blocked numbers"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blocked words"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "About SOS messages"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Unable to send messages while in Flight mode. Disable Flight mode and try again."
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Disable Flight mode"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Message sent"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Sending message failed"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Delete numbers"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "In an emergency press the volume down key 4 times when key lock is active. This will send SOS messages to your selected recipients. If they call you back, the phone will not ring but their call will be answered automatically. After sending the SOS messages all other functions on the phone will remain unavailable until the key lock is no longer active."
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "You are registered as an SOS message recipient."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Send now"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Backup"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Export to SD card"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Me"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "In progress..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimedia message notification"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Expires: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Some characters may be lost. Continue?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Add text"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Text templates"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Insert emoticon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Unsupported media type"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Disabling Airplane mode..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversations"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d messages"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "No templates in list"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Advanced search"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Template"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Bubble style"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Background style"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Message options"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Duration must be at least %d seconds"
+
diff --git a/main/po/es_ES.po b/main/po/es_ES.po
new file mode 100755 (executable)
index 0000000..9e7393c
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Informe de entrega"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Informe de lectura"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Solicitar informe de envío"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Solicitar inf. de lectura"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Lista de elementos"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Mover a teléfono"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Modo de creación"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centro de servicios"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Mover a SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Mensaje programado"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Mensajes de correo basura"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Recibiendo tipo de alerta"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repetir"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capturar vídeo"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Grabar audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Mensajes de CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Mensajes de tarjeta SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Ver contactos"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "No se puede abrir"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Recuperar"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "No se puede mover"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Se ha alcanzado el número máximo de páginas"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Modo restringido. No se puede insertar contenido restringido"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Entregado"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Caducado"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Recuperando..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Inserte una tarjeta SIM para enviar mensajes. El mensaje se guardará en la Bandeja de salida"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Introducir número de canal"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mensaje seleccionado"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mensajes seleccionados"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Vista previa"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "El nombre del archivo ya existe"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "No hay mensajes"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Añadir a contacto"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Descartar"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Imposible enviar mensaje"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Hacer foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Sin dirección"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Lista de elementos adjuntos"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Descarga automática"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Mensajes de difusión"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centro %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Personalizar hora"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Error al enviar"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lista de elementos insertada"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mensaje entregado"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mensaje recuperado"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Libre"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Aviso"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Enviado"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Mensajes push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Recibido"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Rechazar"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opciones de recepción"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restringido"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Baja"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgente"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioridad"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Enviar informe de lectura"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Duración de página"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Mensajes de emergencia"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Mensajes de texto"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Tamaño total"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Contenido de DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 segundos"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 segundos"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 segundos"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Red nacional"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalar"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Red en extranjero"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Ver detalles del contacto"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Mensaje multimedia enviado"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Error al recuperar mensaje"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Error al enviar mensaje multimedia"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duración de la presentación de diapositiva"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Utilice la tecla volumen"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Mensaje de texto"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Sin título"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Tamaño de mensaje"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Solicitado"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "No solicitado"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Reenv."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "No leídos"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinatario duplicado"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Alcanzado el número máximo de destinatarios (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Para"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Grabar sonido"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Grabar vídeo"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Cambiado a MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Cambiado a SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d adjuntos disponibles. Seleccione hasta %d adjuntos"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "No se pueden adjuntar todos los archivos. Se pueden adjuntar como máximo %d KB. ¿Continuar?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Tamaño de fuente"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Mensaje multimedia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Sin asunto"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Seleccionar dirección"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Está a punto de conectarse(%s). ¿Continuar?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Reenviar"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinatario no válido"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinatarios no válidos"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "No se puede reproducir durante la llamada"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "No se puede guardar en modo de almacenamiento masivo"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "¿Descartar mensaje actual?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Seleccionado"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "¿Eliminar?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "No se puede adjuntar. El tamaño máximo de archivos es de %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restringido"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "No se puede reenviar.\nEl archivo está bloqueado contra reenvíos"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "La política de seguridad restringe la redacción de mensajes de texto"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Añadiendo. Espere..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Dirección del centro de servicios"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Grande"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Pequeño"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Diminuto"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "No se puede enviar el mensaje programado. Defina otra hora"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Fecha y hora"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Mensajes multimedia"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "No se han añadido destinatarios. Introduzca destinatarios"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opciones de envío"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "Emergencia"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Envío de mensaje de emergencia"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinatarios"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mensajes"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Una vez"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 veces"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 veces"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Estoy en una emergencia. Ayúdenme, por favor"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM no insertada"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Hacer foto"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "La duración debe superar los %d segundos"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "No se puede añadir contenido"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Seleccionar destinatario"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duración (%s seg)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Imagen demasiado grande. Comprimiendo..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mensaje guardado como borrador"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Otro"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Borrador"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Enviar correo electrónico"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Elementos insertados"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Elementos adjuntos"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d archivos adjuntos"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Mensaje\nprogramado"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duración\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Usar info otros contac"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Este mensaje incluye un archivo adjunto que no se muestra"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Este mensaje incluye archivos adjuntos que no se muestran"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Guardar todo"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Mensajes de borrador"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Se restablecerá el mensaje"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Se cancelará el mensaje programado"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copiar texto del mensaje"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Ver detalles mens"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Mensajes bloqueados"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Buzón de mensajes"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloquear"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copiar en el teléfono"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mensaje copiado desde la tarjeta SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancelar mensaje"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Archivos adjuntos"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Error al enviar mensaje"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Alcanzado el número máximo de caracteres"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Guardado en Mis archivos"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Detalles de mensaje"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restaurando..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Sin archivos adjuntos"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copiado al portapapeles"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copiar a SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "No se puede copiar"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Protección desactivada"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Protección activada"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Guardar adjunto"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restaurar"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Mensajes protegidos"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Cancelando..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exactamente igual a"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Comenzar"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Incluir"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Coincidir criterios"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Eliminar número"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloqueado"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "¿Eliminar este mensaje protegido?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Desbloquear"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Eliminando..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restaurado"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Mensajes protegidos"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protección eliminada"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "¿Bloquear %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s desbloqueado"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "La hora programada debe estar fijada en el futuro"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Tipo de contenido restringido. ¿Adjuntar de todas formas?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Incluir mensaje protegido"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "Planificador S"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Modo de entrada de texto"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabeto GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automática"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Introducir número"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicado"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Añadir palabra"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opciones de recepción"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Algunos destinatarios tienen un número no válido. No se han agregado los destinatarios no válidos. Destinatarios no válidos: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinatario"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Introducir palabra"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Editar palabra"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Leer"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Añadir número"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Editar número"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Eliminar palabras"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Los mensajes recibidos de sus contactos no se bloquearan aunque contengan palabras bloqueadas"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Números bloqueados"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Palabras bloqueadas"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Acerca de mensajes SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "No se pueden enviar mensajes durante el modo Vuelo. Desactive el modo Vuelo y vuelva a intentarlo"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Desactiv modo Avión"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mensaje enviado"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Error al enviar mensaje"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Eliminar números"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "En una situación de emergencia, pulse la tecla de bajar volumen 4 veces cuando el bloqueo del teclado esté activado. De este modo, enviará mensajes de SOS a los destinatarios seleccionados. Si le llaman, el teléfono no sonará, pero su llamada se contestará automáticamente. Después de enviar mensajes de SOS, el resto de funciones del teléfono seguirán sin estar disponibles hasta que el bloqueo del teclado deje de estar activo"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Está registrado como destinatario de mensajes de emergencia."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Env ahora"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Copia de seguridad"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exportar a tarjeta SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Yo"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "En curso..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notificación de mensaje multimedia"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Estado"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Caduca el: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Podrían perderse algunos caracteres.\n¿Continuar?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Añadir texto"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Plantillas de texto"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Insertar emoticono"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Tipo multimedia no admitido"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Desactivando modo avión..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversaciones"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%s mensajes"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Ninguna plantilla en la lista"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Búsqueda avanzada"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Plantilla"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Estilo de burbuja"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Estilo de fondo"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opciones de mensaje"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "La duración debe ser de al menos %d segundos"
+
diff --git a/main/po/es_MX.po b/main/po/es_MX.po
new file mode 100755 (executable)
index 0000000..e54f8c3
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Informe de entrega"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Informe de lectura"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Solicitar informe de entrega"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Solicitar informe de lectura"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Lista de elementos"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Mover a teléfono"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Modo de creación"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centro de servicio"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Mover a tarjeta SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Mensaje programado"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Tipo de alerta de recepción"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repetir"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capturar video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Grabar audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Mensajes de canales de información"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Mensajes de tarjeta SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Ver contacto"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "No se puede abrir"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Recuperar"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "No se puede mover"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Se ha alcanzado el número máximo de páginas."
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Modo restringido. No se puede insertar contenido."
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Entregado"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Agotada"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Recuperando..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Inserte la tarjeta SIM para enviar mensajes. El mensaje será guardado en el Buzón de salida"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Introducir número de canal"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mensaje seleccionado"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mensajes seleccionados"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Vista previa"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nombre de archivo ya existe"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "No hay mensajes"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Añadir a contacto"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Descartar"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "No se puede enviar mensaje"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Tomar foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Sin dirección"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Lista de elementos adjuntos"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Descarga automática"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Canales de información"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centro %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Tiempo personalizado"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Error al enviar"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lista de elementos insertados"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mensaje entregado"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mensaje recuperado"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Libre"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Aviso"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Enviado"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Mensajes WAP PUSH"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Recibido"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Rechazar"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opciones de recepción"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restringido"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Baja"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgente"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioridad"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Enviar informe de lectura"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Duración de página"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Mensajes de emergencia"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Mensajes de texto"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Tamaño total"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Contenido de DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 segundos"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 segundos"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 segundos"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Red local"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalar"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Red en el extranjero"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Ver detalles del contacto"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Mensaje multimedia enviado"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Error al recuperar mensaje"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Error al enviar mensaje multimedia"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duración de diapositiva"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Usar tecla de volumen"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Mensaje de texto"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Sin título"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Tamaño del mensaje"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Solicitado"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "No solicitado"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Reenviar"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "No leídos"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinatario duplicado"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Se ha alcanzado el número máximo de destinatarios (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "A"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Grabar sonido"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Grabar video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Cambiar a mensaje multimedia"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Cambiado a mensaje de texto"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d adjuntos disponibles. Seleccione hasta %d adjuntos"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "No se pueden adjuntar todos los archivos. Se pueden adjuntar como máximo %d KB. ¿Continuar?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Tamaño de fuente"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Mensaje multimedia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Sin asunto"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Seleccionar dirección"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Usted está por conectarse(%s). ¿Continuar?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Reenviar"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinatario no válido"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinatarios no válidos"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "No se puede reproducir durante la llamada"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "No se puede guardar mientras está en modo de almacenamiento masivo"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "¿Cancelar mensaje actual?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Seleccionado"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "¿Eliminar?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "No se puede adjuntar. El tamaño máximo de archivos es de %d KB."
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restringido"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "No se puede reenviar.\nEl archivo está bloqueado contra reenvíos"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "La política de seguridad restringe la redacción de mensajes de texto"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Añadiendo. Espere..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Dirección del centro de servicios"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Grande"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Pequeño"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Diminuto"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "No se puede enviar el mensaje programado. Seleccione otra hora"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Fecha y hora"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Mensajes multimedia"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "No se han añadido destinatarios. Introducir destinatarios"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opciones de envío"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "Emergencia"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Enviar mensaje de emergencia"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinatarios"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mensaje"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Una vez"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 veces"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 veces"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Estoy en una emergencia. Ayudenme."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Tarjeta SIM no insertada"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Capturar imagen"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "La duración debe superar los %d segundos"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "No se puede añadir contenido"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Seleccionar destinatario"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duración (%s seg)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Imagen demasiado grande. Cambiando tamaño..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mensaje guardado en Borrador"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Otro"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Borrador"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Enviar correo"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Elementos insertados"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Archivos adjuntos"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d adjuntos"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Mensaje\nprogramado"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duración\n(%d seg)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Usar inf. de otro con."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Este mensaje incluye algunos archivos adjuntos que no se muestran"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Este mensaje incluye archivos adjuntos que no se muestran"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Guardar todo"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Mensajes de borrador"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "El mensaje se restaurará"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Se cancelará el mensaje programado"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copiar texto"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Ver detalles"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Mensajes bloqueados"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Buzón de mensajes"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloquear"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copiar en dispositivo"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mensaje copiado desde la tarjeta SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancelar mensaje"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Adjuntos"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Error al enviar mensaje"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Se ha alcanzado el número máximo de caracteres"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Guardado en Mis archivos"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Detalles del mensaje"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restableciendo…"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Sin archivos adjuntos"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copiado al portapapeles"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copiar en tarjeta SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "No se puede copiar"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Desactivar protección"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Activar protección"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Guardar adjunto"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restaurar"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Mensajes protegidos"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Cancelando..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exactamente igual a"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Empieza en"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Incluir"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Criterios de asignación"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Eliminar número"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloqueado"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "¿Eliminar este mensaje protegido?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Desbloquear"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Eliminando..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restablecido"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Mensajes protegidos"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protección eliminada"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "¿Bloquear %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s desbloqueado"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "La hora del evento debe ser posterior a la actual"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Tipo de contenido restringido. ¿Adjuntar de todas formas?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Incluir mensaje protegido"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Método de entrada"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabeto GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automático"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Introducir número"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicado"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Añadir palabra"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opciones de recepción"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Algunos destinatarios tienen un número no válido. No se han agregado los destinatarios no válidos. Destinatarios no válidos: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinatario"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Introducir palabra"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Editar palabra"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Leídos"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Añadir número"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Editar número"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Eliminar palabras"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "No se bloquearán los mensajes recibidos de sus contactos incluso si contienen palabras bloqueadas"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Números bloqueados"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Palabras bloqueadas"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Acerca de los mensajes de emergencia"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "No es posible enviar mensajes mientras está en perfil Fuera de línea. Desactive el perfil Fuera de línea e inténtelo de nuevo"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Des. Fuera de línea"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mensaje enviado"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Error al enviar mensaje"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Eliminar números"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Durante una emergencia, presione la tecla de volumen hacia abajo 4 veces con la pantalla de bloqueo activada. Esto enviará mensajes de emergencia a sus destinatarios seleccionados. Si le llaman de vuelta, el teléfono no sonará y se responderá la llamada automáticamente. Después de enviar los mensajes de emergencia todas las otras funciones del teléfono no estarán disponibles hasta que se desactive la tecla de bloqueo"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Está registrado como destinatario de mensajes de emergencia."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Enviar"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Copia de seguridad"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exportar a tarjeta de memoria"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Yo"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "Mensaje multimedia"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Procesando..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notificación de mensaje multimedia"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Estado"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Caduca el: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Podrían perderse algunos caracteres.\n¿Continuar?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Añadir texto"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Plantillas de texto"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Insertar emoticón"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Tipo de medio no compatible"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Desactivando Perfil Fuera de línea..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversaciones"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d mensajes"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "No hay plantillas en la lista"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Búsqueda avanzada"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Plantilla"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Estilo de burbuja"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Estilo de fondo"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opciones de mensaje"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "La duración debe ser de al menos %d segundos"
+
diff --git a/main/po/et.po b/main/po/et.po
new file mode 100755 (executable)
index 0000000..63bb6db
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Kohaletoimetamisraport"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Loe raportit"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Taotle saateraportit"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Saada lugemisraport"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Üksuste loend"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Teisalda telefoni"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Loomisrežiim"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Teenusekeskus"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Teisalda SIM-kaardile"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Plaanitud sõnum"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Rämpspost"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Vastuvõtmise märguandetüüp"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Korda"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Salvesta video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Salvesta heli"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Võrguteabesõnumid"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-kaardi sõnumid"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Vaata kontakte"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ei saa avada"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Laadi"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Ei saa teisaldada"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Lehekülgede maksimaalne arv on saavutatud"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Piiratud režiim. Piiratud sisu ei saa sisestada"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Kohale toimetatud"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Aegunud"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Laadimine..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Sõnumite saatmiseks sisestage palun SIM kaart. Sõnum salvestatakse Väljundkasti"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Sisestage kanali number"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 sõnum on valitud"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d sõnumit on valitud"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Eelvaade"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Failinimi on juba olemas"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Sõnumid puuduvad"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Lisa kontaktile"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Loobu"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Sõnumit ei saa saata"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Pildista"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Aadress puudub"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Manustatud üksuste loend"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automaatne allalaadimine"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Kärjeteated"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Keskel %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Kohandatud aeg"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Saatmine nurjus"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Saatja"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Sisestatud üksuste loend"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Sõnum on kohale toimetatud"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Sõnum on toodud"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Vaba"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Hoiatus"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Saadetud"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "kB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Kommertsteated"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Vastu võetud"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Käsitsi"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Keeldu"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Vastuvõtmise valikud"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Piiratud"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Madal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Tavaline"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Kiire"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioriteet"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Saada lugemisraport"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Lehe kestus"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Hädaabisõnumid"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Tekstsõnumid"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Maht kokku"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM-sisu"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekundit"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekundit"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekundit"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Koduvõrk"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installi"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Rändlusvõrk"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Kuva kontakti üksikasjad"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimeediumsõnum on saadetud"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Sõnumi laadimine nurjus"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Multimeediumsõnumi saatmine nurjus"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Slaidi kestus"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Kasutage helitugevusnuppu"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Tekstsõnum"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Pealkirjata"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Sõnumi maht"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Taotletud"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Pole taotletud"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Edasta"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Lugemata"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Mitu adressaati"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maksimaalne adressaatide arv (%d) on saavutatud"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Saaja"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Salvesta heli"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Salvesta video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Muudetud MMS-iks"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Muudetud SMS-sõnumiks"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d manust on saadaval. Valige kuni %d manust"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Kõiki faile ei saa manustada. Manuste maksimaalne maht on %d kB. Kas jätkata?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Fondi suurus"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimeediumsõnum"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Teema puudub"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Vali aadress"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Hakkate minema Internetti (%s). Kas jätkata?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Saada uuesti"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Vale adressaat"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Valed adressaadid"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Kõne ajal ei saa esitada"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Massmälu režiimis ei saa salvestada"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Kas loobuda praegusest sõnumist?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Valitud"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Kustutada?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Ei saa manustada. Failide maksimaalne suurus on %d kB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Piiratud"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Ei saa edastada.\nFailil on edastamislukk"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Turvalisuse poliis piirab tekstsõnumite koostamise"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Lisamine. Palun oodake..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Teenusekeskuse aadress"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Suur"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Tavaline"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Väike"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Ajastatud sõnumit ei saa saata. Määrake teine aeg"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Kuupäev ja kellaaeg"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimeediumsõnumid"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Adressaate pole lisatud. Sisestage adressaadid"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Saatmisvalikud"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "Hädaabi"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Tavaline"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Hädaabisõnumi saatmine"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Adressaadid"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Sõnum"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Üks kord"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 korda"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 korda"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Olen hädaolukorras. Palun aidake mind."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-kaart ei ole sisestatud"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Pildista"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Kestus peab olema pikem kui %d sekundit"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Ei saa lisada sisu"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Vali adressaat"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Kestus (%s sek)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Pilt on liiga suur. Tihendamine..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Sõnum salvestati mustandina"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Muu"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Mustand"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Saada e-kiri"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Sisestatud üksused"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Manustatud üksused"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d manust"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Planeeritud\nsõnum"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Kestus\n(%d sek)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Kas. muud kon.-teavet"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Sellel sõnumil on manusfaile, mida ei näidata"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "See sõnum sisaldab manustatud faile, mida ei näidata"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Salvesta kõik"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Mustandsõnumid"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Sõnum taastatakse"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Planeeritud sõnum tühistatakse"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopeeri sõnumi tekst"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Kuva sõnumi detailid"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Lukustatud sõnumid"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Sõnumikaustad"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokeeri"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopeeri telefoni"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Sõnum on SIM-kaardilt kopeeritud"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Tühista sõnum"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Manused"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Nurjunud sõnumi saatmine"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Lubatud arv märke on täis"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Salvestatud Minu failidesse"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Sõnumi üksikasjad"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Taastamine..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Manuseid ei ole"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Kopeeritud lõikelauale"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopeeri SIM-kaardile"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Ei saa kopeerida"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Kaitse väljas"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Kaitse sees"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Salvesta manus"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Taasta"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Kaitstud sõnumid"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Tühistamine..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Täpselt sama kui"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Alusta koos"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Lisa"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Ühita kriteeriumid"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Kustuta number"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s on blokeeritud"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Kas kustutada see kaitstud sõnum?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Eemalda blokeering"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Eemaldamine..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Taastatud"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Kaitstud sõnumid"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Kaitse on eemaldatud"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Kas blokeerida sõber %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s on deblokeeritud"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Plaanitud aeg tuleks tulevikus seadistada"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Piiratud sisutüüp. Kas manustada ikkagi?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Lisa kaitstud sõnum"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planeerija"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Tekstisisestusrežiim"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-tähestik"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automaatne"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Sisestage number"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Dubleeritud"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Lisa sõna"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Vastuvõtmise valikud"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Mõne adressaadi number on vale. Valesid adressaate ei lisatud. Valed adressaadid: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Adressaat"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Sisesta sõna"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Muuda sõna"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Loe"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Lisa number"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Redigeeri numbrit"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Kustuta sõnu"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Kontaktidelt saabunud sõnumeid ei blokeerita isegi siis, kui need sisaldavad blokeeritud sõnu"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokeeritud numbrid"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokeeritud sõnad"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Teave hädaabisõnumite kohta"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Lennurežiimis ei saa sõnumeid saata. Desaktiveerige lennurežiim ja proovige uuesti"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Keela lennurežiim"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Sõnum on saadetud"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Sõnumi saatmine nurjus"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Kustuta numbrid"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Hädaolukorras vajutage helitugevuse vähendamise nuppu 4 korda, kui klahvilukk on aktiivne. Teie valitud adressaatidele saadetakse hädaabisõnumid. Kui nad tagasi helistavad, ei helise telefon, kuid nende kõnele vastatakse automaatselt. Pärast hädaabisõnumite saatmist ei saa telefoni funktsioone kasutada, kuni avate klahviluku"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Olete registreeritud hädaabisõnumi adressaadiks."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Saada"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Varundus"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Ekspordi SD-kaardile"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Mina"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Saatmine..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimeediumsõnumi teavitus"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Olek"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Aegub: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Osa märkidest võib kaduda. Kas jätkata?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Lisa tekst"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Tekstimallid"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Sisesta emotikon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Toetuseta meediatüüp"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Lennurežiimi desaktiveerimine..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d vestlust"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d sõnumit"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Loendis ei ole malle"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Täpsem otsing"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Mall"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Heli"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Mullistiil"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Tausta stiil"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Sõnumi valikud"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Kestus peab olema vähemalt %d sekundit"
+
diff --git a/main/po/eu.po b/main/po/eu.po
new file mode 100755 (executable)
index 0000000..b8f8f38
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Banaketa txostena"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Irakurketa txostena"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Emate txostena eskatu"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Irakurtze txostena eskatu"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Elementuen zerrenda"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Telefonora mugitu"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Sortze modua"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Zerbitzu zentroa"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIMera mugitu"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Programatutako mezua"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam mezuak"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Alerta mota jasotzen"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Errepikatu"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Bideoa grabatu"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Audioa grabatu"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB mezuak"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM txartelaren mezuak"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Kontaktua ikusi"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ezin da ireki"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Berreskuratu"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Ezin da mugitu"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Gehieneko orri kopurura iritsi zara"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Modu murriztua. Ezin da eduki murrizturik sartu"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Banatua"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Iraungia"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Berreskuratzen..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Mezuak bidaltzeko SIM txartel bat sartu. Mezua Irteera postontzian gordeko da"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Idatzi kanalaren zenbakia"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Mezu 1 hautatuta"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mezu hautatu dira"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Aurrebista"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Fitxategiaren izena dagoeneko bada"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Mezurik ez"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Kontaktuari gehitu"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Baztertu"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Ezin da mezua bidali"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Argazkia atera"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Ez dago helbiderik"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Erantsitako elementuen zerrenda"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Deskarga automatikoa"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Difusio mezuak"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "%d zentroa"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Ordu pertsonalizatua"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Bidaltzerakoan akatsa"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Nork"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Sartutako elementuen zerrenda"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mezua bidali da"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mezua berreskuratu da"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Libre"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Oharra"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Bidalitakoak"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Difusio mezuak"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Jasota"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Eskuzkoa"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Ukatu"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Jasotze aukerak"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Mugatuta"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Txikia"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Arrunta"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Premiazkoa"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Lehentasuna"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Irakurtze txostena bidali"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Orri iraupena"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Larrialdi mezuak"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Testu mezuak"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Neurria guztira"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM edukia"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 segundo"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 segundo"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 segundo"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Sare lokala"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalatu"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Atzerriko sarea"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Ikusi kontaktuaren datuak"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimedia mezua bidali da"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Mezua berreskuratzeak huts egin du"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Ezin izan da multimedia-mezua bidali"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Diapositibaren iraupena"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Erabili bolumen tekla"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Testu mezua"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Izenbururik gabe"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Mezu tamaina"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Eskatuta"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Ez eskatua"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Birbidali"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Irakurri gabea"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Hartzaile bikoiztua"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Gehienezko hartzaile kopurura (%d) iritsi zara"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Hartzailea"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Soinua grabatu"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Bideoa grabatu"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "MMSera aldatua"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "SMSra aldatuta"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d eranskin eskuragarri. Aukeratu %d eranskin arte"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Ezin dira fitxategi guztiak erantsi. Eranskinen ahalmena gehienez %d KB-koa da. Jarraitu?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Letraren tamaina"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedia mezua"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Gairik gabe"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Helbidea aukeratu"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Linean egoteko abian zaude (%s). Jarraitu?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Birbidali"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Hartzaile baliogabea"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Hartzaile baliogabeak"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Ezin da deian zehar erreproduzitu"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Ezin da gorde biltegiratze Masibo moduan"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Baztertu oraingo mezua?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Aukeratutakoa(k)"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Ezabatu?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Ezin da erantsi. Fitxategien gehienezko neurria %d KB da"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Mugatuta"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Ezin da birbidali.\nFitxategi birbidaltzea blokeatuta dago"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Segurtasun politikak testu mezuen osaketa mugatzen du"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Gehitzen. Itxaron mesedez..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Zerbitzu zentroaren helbidea"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Handia"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Arrunta"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Txikia"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Ezin da programatutako mezua bidali. Ezarri beste ordu bat"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Data eta ordua"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimedia mezuak"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Ez da hartzailerik gehitu. Adierazi hartzaileak"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Bidalketa aukerak"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Arrunta"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Larrialdi mezuak bidaltzen"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Hartzaileak"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mezua"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Behin"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 aldiz"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 aldiz"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Larrialdi batetan nago. Lagundu mesedez"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM ez da sartu"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Argazkia atera"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Iraupena %d segundokoa baino luzeagoa izan behar da"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Ezin da edukia gehitu"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Aukeratu hartzailea"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Iraupena (%s seg.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Argazkia handiegia da. Konprimitzen..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mezua zirriborro gisa gordea"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Besterik"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Zirrib."
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Mezu elektronikoa bidali"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Sartutako elementuak"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Erantsitako elementuak"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d eranskin"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Programatut.\nmezua"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Iraupena\n(%d seg)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Erabili beste kontaktuen info."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Mezu honek erakusten ez den fitxategi bat dauka"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Mezu honi erantsitako fitxategiak ez dira erakutsi"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Denak gorde"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Zirriborro mezuak"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Mezua berreskuratuko da"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Programatutako mezua bertan behera utziko da"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopiatu testu mezua"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Ikusi mezu xehetas."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Blokeatutako mezuak"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Mezuen koadroak"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokeatu"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Telefonora kopiatu"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mezua SIM txarteletik kopiatu da"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Utzi mezua"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Eranskinak"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Huts egindako mezua bidaltzen"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Gehienezko karaktere kopurura heldu zara"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Nire fitxategietan gordeta"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Mezuari buruzko xehetasunak"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Berrezartzen..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Ez dago eranskinik"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Arbelera kopiatu da"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "SIMean kopiatu"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Ezin da kopiatu"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Babespena desaktibatuta"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Babespena aktibatuta"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Eranskina gorde"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Berrezar"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Babestutako mezuak"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Ezeztatzen..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Honen bera"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Zerekin hasi"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Gehitu"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Esleitze irizpideak"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Zenbakia ezabatu"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blokeatuta"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Ezabatu babestutako mezu hau?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Desblokeatu"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Ezabatzen..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Berrezarrita"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Babestutako mezuak"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Babesa kenduta"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s blokeatu?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s desblokeatuta"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Etorkizunean ordua programatu behar da"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Eduki mota mugatua. Erantsi hala ere?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Gehitu babestutako mezua"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S planifikagailua"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Idazkera modua"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-alfabetoa"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatikoa"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Zenbakia idatzi"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Bikoiztuta"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Hitza gehitu"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Jasotze aukerak"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Hartzaile batzuk zenbaki baliogabea dute. Hartzaile baliogabeak ez dira gehitu. Hartzaile baliogabeak: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Hartzailea"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Adierazi hitza"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Editatu hitza"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Irakurri"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Gehitu zenbakia"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Editatu zenbakia"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Ezabatu hitzak"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Zure kontaktuetatik jasotako mezuak ez dira blokeatuko nahiz eta blokeatutako hitzak izan"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokeatutako zenbakiak"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokeatutako hitzak"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS mezuei buruz"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ezin izan dira mezuak bidali Hegaldi moduan. Ezgaitu Hegaldi modua eta saiatu berriz"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Ezgaitu Hegaldi modua"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mezua bidali da"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Mezua bidaltzeak huts egin du"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Ezabatu zenbakiak"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Larrialdietan, sakatu bolumenaren tekla beherantz 4 aldiz, teklen blokeoa aktibo dagoenean. Horrela, SOS mezua iritsiko zaie zuk hautatutako hartzaileei. Pertsona horiek bueltan deitzen badizute, telefonoak ez du hotsik aterako, haien deiak automatikoki erantzungo baitira. SOS mezuak bidali ondoren, telefonoko beste eginbide batzuk ez dira erabilgarri izango, teklatu blokeoa berriz aktibo ez egon arte"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "SOS mezu hartzaile bezala erregistratuta zaude."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Bid. or."
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Babeskopia"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Esportatu SD txartelera"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Nik\r "
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Abian..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimedia mezuaren jakinarazpena"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Egoera"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Iraungitzea: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Baliteke karaktere batzuk galtzea.\nJarraitu?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Testua gehitu"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Testu txantiloiak"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Emotikonoa sartu"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Media mota ez bateragarria"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Hegaldi modua desgaitzen..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d hizketaldi"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d mezu"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Txantiloirik ez zerrendan"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Bilaketa aurreratua"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Txantiloia"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audioa"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Burbuila estiloa"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Atzealdeko estiloa"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Mezu aukerak"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Iraupenak gutxienez %d segundo izan behar ditu"
+
diff --git a/main/po/fi.po b/main/po/fi.po
new file mode 100755 (executable)
index 0000000..2beb66a
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Toimitusraportti"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Lukuraportti"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Pyydä toimitusraportti"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Pyydä lukuraportti"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Kohdeluettelo"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Siirrä puhelimeen"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Luontitila"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Viestikeskus"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Siirrä SIM-kortille"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Ajoitettu viesti"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Roskapostiviestit"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Vastaanotettavan hälytyksen tyyppi"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Toista"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Kuvaa video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Tallenna ääntä"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB-viestit"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-kortilla olevat viestit"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Tarkastele yhteystietoja"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ei voi avata"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Nouda"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Ei voi siirtää"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Sivujen enimmäismäärä on saavutettu"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Rajoitettu tila. Rajoitettua sisältöä ei voi lisätä"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Toimitettu"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Vanhentunut"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Noudetaan..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Aseta SIM-kortti viestien lähettämiseksi. Viesti tallennetaan Lähetetyt-kansioon"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Syötä kanavanumero"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 viesti valittu"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d viestiä valittu"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Esikatselu"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Tiedostonimi on jo käytössä"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Ei viestejä"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Lisää yhteystietoon"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Hylkää"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Viestiä ei voi lähettää"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Ota valokuva"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Ei osoitetta"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Liitetiedostojen luettelo"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automaattinen lataus"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Tiedoteviestit"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Keskus %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Määritetty aika"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Lähetys epäonnistui"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Lähettäjä"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lisätty kohdeluettelo"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Viesti toimitettu"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Viesti noudettu"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Vapaa"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Varoitus"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Lähetetty"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "t"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "kt"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Palveluviestit"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Vastaanotettu"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuaalinen"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Hylkää"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Vastaanottoasetukset"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Rajoitettu"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Matala"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normaali"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Kiireellinen"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Tärkeys"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Lähetä lukuraportti"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Sivun kesto"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Hätäviestit"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Tekstiviestit"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Koko yhteensä"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM-sisältö"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekuntia"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekuntia"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekuntia"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Kotiverkko"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Asenna"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Vierailuverkko"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Näytä yhteystiedot"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimediaviesti lähetetty"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Viestin nouto epäonnistui"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Multimediaviestin lähettäminen epäonnistui"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Dian kesto"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Käytä voimakkuusnäppäintä"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Tekstiviesti"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Nimetön"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Viestin koko"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Pyydetty"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Ei pyydetty"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Siir."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Lukem."
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Vastaanottaja esiintyy kahdesti"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Vastaanottajien enimmäismäärä (%d) on saavutettu"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Vastaanottaja"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Tallenna ääntä"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Tallenna video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Muutettu multimediaviestiksi"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Vaihdettu tekstiviestiksi"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d liitettä käytettävissä. Valitse enintään %d liitettä"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Kaikkia tiedostoja ei voi liittää. Liitetiedostojen enimmäiskapasiteetti on %d kt. Jatketaanko?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Kirjasinkoko"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimediaviesti"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Ei aihetta"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Valitse osoite"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Olet siirtymässä online-tilaan (%s). Jatketaanko?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Läh. uud."
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Virheellinen vast.ottaja"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Virheelliset vastaanottajat"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Puhelun aikana ei voi toistaa"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Ei voi tallentaa massamuistitilassa"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Hylätäänkö nykyinen viesti?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Valittu"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Poistetaanko?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Ei voi liittää. Tiedostojen enimmäiskoko on %d kt"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Rajoitettu"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Ei voi lähettää edelleen.\nTiedoston edelleenlähetys on estetty"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Suojauskäytäntö estää tekstiviestien kirjoittamisen"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Lisätään. Odota..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Viestikeskuksen osoite"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Iso"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normaali"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Pieni"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tosi pieni"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Ajoitettua viestiä ei voi lähettää. Määritä toinen aika"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Päivämäärä ja aika"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimediaviestit"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Vastaanottajia ei lisätty. Anna vastaanottajat"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Lähetysasetukset"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "Hätäviesti"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normaali"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Hätäviestin lähetys"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Vastaanottajat"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Viesti"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Kerran"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 kertaa"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 kertaa"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Olen hädässä. Auta minua."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-korttia ei ole asetettu"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Ota kuva"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Keston on oltava enemmän kuin %d sekuntia"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Sisältöä ei voi lisätä"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Valitse vastaanottaja"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Kesto (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Kuva on liian iso. Pakataan..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Viesti tallennettu luonnoksena"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Muu"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Vedos"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Lähetä sähköpostiviesti"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Lisätyt kohteet"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Liitetyt kohteet"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d liitettä"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Ajoitettu\nviesti"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Kesto\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Käytä muita yht.tiet."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Tähän viestiin sisältyy liitetiedosto, jota ei näytetä"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Tähän viestiin sisältyy liitetiedostoja, joita ei näytetä"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Tallenna kaikki"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Viestiluonnokset"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Viesti palautetaan"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Ajoitettu viesti peruutetaan"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopioi viestiteksti"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Näytä viestin tiedot"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Lukitut viestit"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Viesti-ikkunat"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Estä"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopioi puhelimeen"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Viesti on kopioitu SIM-kortilta"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Peruuta viesti"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Liitteet"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Lähetetään epäonnistunutta viestiä"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Merkkien enimmäismäärä saavutettu"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Tallennettu Omat tiedostot -kansioon"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Viestin tiedot"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Palautetaan..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Ei liitteitä"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Kopioitu leikepöydälle"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopioi SIM-kortille"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Ei voi kopioida"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Suojaus pois"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Suojaus päälle"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Tallenna liite"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Palauta"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Suojatut viestit"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Peruutetaan..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Täsmälleen sama kuin"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Aloita käyttäen"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Sisällytä"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Hylkäyskriteeri"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Poista numero"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "Osoite %s estetty"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Poistetaanko tämä suojattu viesti?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Poista esto"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Poistetaan..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Palautettu"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Suojatut viestit"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Suojaus on poistettu"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Estetäänkö %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "Osoitteen %s esto poistettu"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Ajoitetun ajan on oltava tulevaisuudessa"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Rajoitettu sisältötyyppi. Liitetäänkö silti?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Lisää suojattu viesti"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "Kalenteri"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Tekstinsyöttötila"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-merkistö"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode-merkistö"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automaattinen"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Syötä numero"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Kopioitu"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Lisää sana"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Vastaanottoasetukset"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Joidenkin vastaajien numero on virheellinen. Virheellisiä vastaanottajia ei lisätty. Virheelliset vastaanottajat: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Vastaanottaja"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Anna sana"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Muokkaa sanaa"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lue"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Lisää numero"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Muokkaa numeroa"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Poista sanat"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Yhteyshenkilöiltä saapuvia viestejä ei estetä, vaikka niissä olisi estettyjä sanoja"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Estetyt numerot"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Estetyt sanat"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Tietoja hätäviesteistä"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Viestejä ei voi lähettää lentotilassa. Poista lentotila käytöstä ja yritä uudelleen"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Poista lentot. käyt."
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Viesti lähetetty"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Viestin lähetys epäonnistui"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Poista numerot"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Jos olet hätätilanteessa, paina äänenvoimakkuuden vähennysnäppäintä 4 kertaa, kun näppäinlukko on käytössä. Tällöin valitsemillesi vastaanottajille lähetetään hätäviesti. Jos he soittavat sinulle takaisin, puhelin ei soi, mutta heidän puheluihinsa vastataan automaattisesti. Hätäviestien lähettämisen jälkeen puhelimen kaikki muut toiminnot ovat poissa käytöstä, kunnes näppäinlukko ei enää ole aktiivinen"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Sinun numerosi on tallennettu hätäviestien vastaanottajaksi."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Läh. nyt"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Varm.kop."
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Vie SD-kortille"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Minä"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "Multimediaviesti"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Kesken..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimediaviesti-ilmoitus"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Tila"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Vanhentuu: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Joitakin merkkejä voi kadota.\nJatketaanko?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Lisää teksti"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Tekstimallit"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Lisää hymiö"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Mediatyyppiä ei tueta"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Lentotila poistetaan käytöstä..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d keskustelua"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d viestiä"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Luettelossa ei ole malleja"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Tarkennettu haku"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Malli"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Ääni"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Kuplan tyyli"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Taustan tyyli"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Viestivaihtoehdot"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Keston on oltava vähintään %d sekuntia"
+
diff --git a/main/po/fr_CA.po b/main/po/fr_CA.po
new file mode 100755 (executable)
index 0000000..7c2ebbe
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Rapport de remise"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Confirmation de lecture"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Demander un rapport de remise"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Demander une confirmation de lecture"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Liste d'éléments"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Déplacer vers le téléphone"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Mode de création"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centre de service"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Déplacer vers la carte SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Message programmé"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Messages Spam"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Type d'alerte de message SOS"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Nombre de répétitions"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Saisir une vidéo"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Enregistrer un clip audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Messages de diffusion"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Messages de la carte SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Afficher le contact"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ouverture impossible"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Récupérer"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Déplacement impossible"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Nombre maximum de pages atteint"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Mode restreint. Impossible d'insérer un contenu restreint"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Remis"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Expiré"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Récupération ..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insérez une carte SIM pour envoyer des messages. Le message sera enregistré dans la boite d'envoi"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Saisissez le numéro de la chaine"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 message sélectionné"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d messages sélectionnés"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Aperçu"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nom de fichier déjà utilisé"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Aucun message"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Ajouter aux contacts"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Ignorer"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Impossible d'envoyer le message"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Prendre une photo"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Aucune adresse"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Liste d'éléments jointe"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Téléchargement auto."
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Messages diffusés"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centre %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Durée personnalisée"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Échec de l'envoi"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Liste d'éléments insérée"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Message remis"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Message récupéré"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Libre"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Avertissement"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Envoyé"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "O"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "Ko"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Messages Push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Reçu"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuel"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Refuser"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Options de réception"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restreint"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Faible"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgent"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Priorité"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Envoyer une confirmation de lecture"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Temps défilement pages"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Messages SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Messages texte"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Taille totale"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Contenu GDN"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 secondes"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 secondes"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 secondes"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Réseau domestique"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installer"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Réseau d'itinérance"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Afficher les coordonnées du contact"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Message multimédia envoyé"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Échec de la récupération du message"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Échec d'envoi du message multimédia"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durée de la diapositive"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Bouton de volume"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Message texte"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Sans titre"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Taille message"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Demandé"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Non demandé"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Transf."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Non lu"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinataire en double"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Nombre maximum de destinataires (%d) atteint"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "À"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Enregistrer un son"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Enregistrer une vidéo"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Changé en message multimédia"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Converti en message texte"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d pièces jointes disponibles. Sélectionnez-en %d au maximum"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Impossible de joindre tous les fichiers. La taille maximale des pièces jointes est de %d Ko. Continuer?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Taille de police"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Message multimédia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Aucun objet"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Sélectionner l'adresse"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Connexion imminente (%s). Continuer ?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Renvoyer"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinataire non valide"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinataires non valides"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Impossible de lire le message pendant un appel"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Impossible d'enregistrer en mode Stockage de masse"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Ignorer le message actuel?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Sélectionné"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Supprimer ?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Impossible d'ajouter la pièce jointe. La taille maximale des fichiers est de %d Ko"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restreint"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Transfert impossible. Le fichier est verrouillé pour le transfert."
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "La politique de sécurité limite la création de message texte"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Ajout. Veuillez patienter..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresse du centre de service"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Grande"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Petite"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Minuscule"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Impossible d'envoyer un message programmé. Définissez un autre horaire"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Date et heure"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Messages multimédias"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Aucun destinataire ajouté. Sélectionnez-en"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Options d'envoi"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Envoi de SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinataires"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "1 fois"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 fois"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 fois"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Je suis en situation d'urgence. Aidez-moi s'il vous plait."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Carte SIM non insérée"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Prendre une photo"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "La durée doit être supérieure à %d secondes"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Impossible d'ajouter du contenu"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Sélectionner un destinataire"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Durée (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Photo trop volumineuse. Compression..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Message enregistré comme brouillon"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Autre"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Brouillon"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Envoyer un courriel"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Éléments insérés"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Pièces jointes"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d pièces jointes"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Message\nprogrammé"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Durée\n(%d s.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Util autr. infos cont."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Ce message comporte une pièce jointe non affichée"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Ce message inclut les fichiers joints non affichés"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Tout enregistrer"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Messages brouillons"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Le message sera restauré"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Le message programmé sera annulé"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copie message texte"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Aff. détails message"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Messages verrouillés"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Messageries"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloquer"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copier dans le téléphone"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Message copié à partir de la carte SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Annuler le message"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Pièces jointes"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Envoi du message d'échec"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Nb. max. de caractères atteint"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Enregistré dans Mes fichiers"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Détails des messages"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restauration..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Aucune pièce jointe"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copié dans le presse-papier"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copier dans SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Copie impossible"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Protection désactivée"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Protection activée"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Enregistrer la pièce jointe"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restaurer"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Messages protégés"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Annulation..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Identique à"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Commence par"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Inclure"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Critères correspondants"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Supprimer le numéro"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloqué"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Supprimer ce message protégé?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Débloquer"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Retrait..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restauré"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Messages protégés"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protection supprimée"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Voulez-vous vraiment bloquer le contact %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s débloqué"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "L'heure programmée doit être postérieure à l'heure actuelle"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Type de contenu restreint. Joindre quand même?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Inclure les messages protégés"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "Calendrier S"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Mode de saisie"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alphabet GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatique"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Entrez le numéro"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Dupliqué"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Ajouter un mot"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Options de réception"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Certains destinataires ont un numéro incorrect. Destinataires incorrects non ajoutés. Destinataires incorrects : %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinataire"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Entrer un mot"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Modifier le terme"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lu"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Ajouter un numéro"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Modifier un numéro"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Supprimer des mots"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Les messages reçus de vos contacts ne seront pas bloqués même s'ils contiennent des mots bloqués"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Numéros bloqués"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Mots bloqués"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "À propos des messages SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Impossible d'envoyer des messages en mode Avion. Désactivez le mode Avion et réessayez"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Dés. mode Avion"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Message envoyé"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Échec de l'envoi du messsage"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Supprimer les numéros"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "En cas d'urgence, appuyez 4 fois sur la touche de diminution du volume lorsque le téléphone est verrouillé. Un message SOS sera envoyé aux destinataires sélectionnés. S'ils vous rappellent, l'appel sera accepté automatiquement. Après l'envoi du message SOS, toutes les autres fonctions du téléphone sont indisponibles jusqu'à ce que le téléphone soit déverrouillé"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Vous êtes inscrit comme destinataire d'un message SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Envoyer"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Sauvegarde"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exporter vers la carte SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Moi"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "Message multimédia"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "En cours..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notification de message multimédia"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "État"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Expiration : %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Certains caractères risquent d'être perdus\nContinuer ?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Ajouter du texte"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Modèles texte"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Insérer une binette"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Type de média non pris en charge"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Désactivation du mode Avion..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversations"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d messages"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Aucun modèle dans la liste"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Recherche avancée"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Modèles"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Style de bulle"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Style de l'arrière-plan"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Options de message"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "La durée doit être d'au moins %d secondes"
+
diff --git a/main/po/fr_FR.po b/main/po/fr_FR.po
new file mode 100755 (executable)
index 0000000..39f1477
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Accusé de réception"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Confirmation de lecture"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Accusé de réception"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Confirmation de lecture"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Sélection"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Déplacer vers le téléphone"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Mode de création"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centre de service"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Déplacer vers la carte SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Message programmé"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Messages Spam"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Type d'alerte de réception"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Nombre de répétitions"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capturer une vidéo"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Enregistrement audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Messages de diffusion"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Messages de la carte SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Voir le contact"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ouverture impossible"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Récupérer"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Déplacement impossible"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Nombre maximum de pages atteint"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Mode restreint. Impossible d'insérer un contenu restreint"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Reçu"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Date d'expiration révolue"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Récupération..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insérez une carte SIM pour envoyer des messages. Le message sera enregistré dans la boîte d'envoi"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Entrez numéro de chaîne"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 message sélectionné"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d messages sélectionnés"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Aperçu"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nom de fichier déjà utilisé"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Aucun message"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Ajouter aux contacts"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Ne pas enregistrer"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Impossible d'envoyer le message"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Prendre une photo"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Aucune adresse"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Liste d'éléments jointe"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Téléchargement auto."
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Messages de diffusion"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centre %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Durée personnalisée"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Échec de l'envoi"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Liste d'éléments insérée"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Message remis"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Message reçu"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Libre"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Avertissement"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Envoyé(s)"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "O"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "Ko"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Messages Push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Reçu(s)"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuel"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Refuser"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Options de réception"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Limité"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Faible"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgent"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Priorité"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Confirmation de lecture"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Temps de défilement des pages"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Messages SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Taille totale"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Contenu DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 secondes"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 secondes"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 secondes"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Réseau domestique"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installer"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Réseau d'itinérance"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Afficher les détails du contact"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS envoyé"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Échec de la récupération du message"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Échec envoi MMS"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durée de la diapositive"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Utiliser touche de volume"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Sans titre"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Taille message"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Demandé"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Non demandé"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Transf."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Non lu"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinataire en double"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Nombre maximum de destinataires (%d) atteint"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "A"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Enregistrer un mémo"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Enregistrer une vidéo"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Modifié en MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Modifié en SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d pièces jointes disponibles. Sélectionnez-en %d au maximum"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Impossible de joindre tous les fichiers. La taille maximale des pièces jointes est de %d Ko. Continuer ?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Taille de la police"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Aucun objet"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Sélectionner l'adresse"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Connexion imminente (%s). Continuer ?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Renvoyer"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinataire non valide"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinataires non valides"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Lecture impossible pendant un appel"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Impossible d'enregistrer en mode Stockage de masse"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Ignorer le message actuel ?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Sélectionné"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Supprimer ?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Impossible d'ajouter la pièce jointe. La taille maximale des fichiers est de %d Ko"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Limité"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Transfert impossible.\nLe transfert du fichier est interdit"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "La politique de sécurité limite la création de SMS"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Ajout. Veuillez patienter..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresse du centre de service"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Grande"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Petite"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Minuscule"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Impossible d'envoyer un message programmé. Définissez un autre horaire"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Date et heure"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Aucun destinataire ajouté. Sélectionnez"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Options d'envoi"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Envoi de SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinataires"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Message"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "1 fois"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 fois"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 fois"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Je suis en situation d'urgence. Aidez-moi s'il vous plaît."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Carte SIM non insérée"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Photographier"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "La durée doit être supérieure à %d secondes"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Impossible d'ajouter du contenu"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Sélectionner un destinataire"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Durée (%s sec)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Image trop volumineuse. Compression..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Message enregistré comme brouillon"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Autre"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Brouil."
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Envoyer un e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Eléments insérés"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Pièces jointes"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d pièces jointes"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Message\nprogrammé"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Durée\n(%d s.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Util autr. infos cont."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Ce message comporte une pièce jointe non affichée"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Ce message inclut les fichiers joints non affichés"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Tout enregistrer"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Messages brouillons"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Le message sera restauré"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Le message programmé sera annulé"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copie message texte"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Aff. détails message"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Messages verrouillés"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Messageries"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloquer"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copier dans le téléphone"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Message copié à partir de la carte SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Annuler le message"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Pièce(s) jointe(s)"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Envoi du message d'échec"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Nb. max. de caractères atteint"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Enregistré dans Mes fichiers"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Détails des messages"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restauration..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Pas de pièce jointe"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copié dans le Presse-papiers"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copier dans SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Copie impossible."
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Désactiver protection"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Activer protection"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Enregistrer la pièce jointe"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restaurer"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Messages protégés"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Annulation..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Identique à"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Commence par"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Inclure"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Critères correspondants"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Supprimer le numéro"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloqué"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Supprimer ce message protégé ?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Débloquer"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Suppression..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restauré"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Messages protégés"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protection supprimée"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Bloquer %s ?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s débloqué"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "L'heure programmée doit être postérieure à la date actuelle"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Type de contenu restreint. Joindre quand même ?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Inclure les messages protégés"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Calendrier"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Mode de saisie"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alphabet GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatique"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Saisir un numéro"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Nom déjà existant"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Ajouter un mot"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Options de réception"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Certains destinataires ont un numéro incorrect. Destinataires incorrects non ajoutés. Destinataires incorrects : %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinataire"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Entrer un mot"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Modifier le terme"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lire"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Ajouter un numéro"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Modifier un numéro"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Supprimer des mots"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Les messages reçus de vos contacts ne seront pas bloqués même s'ils contiennent des mots bloqués"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Numéros bloqués"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Mots bloqués"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "À propos des messages SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Impossible d'envoyer des messages en mode Hors-ligne. Désactivez le mode Hors-ligne et réessayez"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Dés. mode Hors-ligne"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Message envoyé"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Échec de l'envoi du message"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Supprimer les numéros"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "En cas d'urgence, appuyez 4 fois sur la touche de volume Bas lorsque le téléphone est verrouillé. Un message SOS sera envoyé aux destinataires sélectionnés. S'ils vous rappellent, l'appel sera accepté automatiquement. Après l'envoi du message SOS, toutes les autres fonctions du téléphone sont indisponibles jusqu'à ce que le téléphone soit déverrouillé"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Vous êtes inscrit comme destinataire d'un message SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Envoyer"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Sauvegarde"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exporter vers la carte SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Moi"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "En cours..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notification de message MMS"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Etat"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Expiration : %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Certains caractères risquent d'être perdus. Continuer ?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Ajouter texte"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Modèles SMS"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Insérer émoticône"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Type de support non pris en charge"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Désactivation du mode Hors-ligne..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversations"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d messages"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Aucun modèle dans la liste"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Recherche avancée"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Modèle"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Style de bulle"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Style de l'arrière-plan"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Options de message"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "La durée est d'au moins %d secondes"
+
diff --git a/main/po/ga.po b/main/po/ga.po
new file mode 100755 (executable)
index 0000000..a29c1b1
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Admháil seachadta"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Admháil léite"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Iarr admháil seachadta"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Iarr admháil léite"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Liosta míreanna"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Bog chuig fón"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Mód cruthaithe"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Ionad seirbhíse"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Bog chuig SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Teachtaireacht sceidealaithe"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Teachtaireachtaí turscair"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Cineál foláirimh fála"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Athdhéan"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Gabh físeán"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Taifead fuaim"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Teachtaireachtaí CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Teachtaireachtaí chárta SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Amharc ar theagmhálaí"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ní féidir oscailt"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Aisghabh"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Ní féidir bogadh"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Uaslíon na leathanach bainte amach"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Modh srianta. Ní féidir inneachar teoranta a chur isteach"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Seachadta"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Imithe as feidhm"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Ag aisghabháil..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Ionsáigh cárta SIM chun teachtaireachtaí a sheoladh. Sábhálfar an teachtaireacht i mBosca Amach"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Iontráil uimhir an chainéil"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Teachtaireacht amháin roghnaithe"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d teachtaireacht roghnaithe"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Réamhamharc"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Comhadainm ann cheana"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Níl teachtaireachtaí ann"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Cuir le teagmhálaí"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Cuileáil"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Ní féidir teachtaireacht a sheoladh"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Glac grianghraf"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Níl seoladh ann"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Liosta na míreanna ceangailte"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Uath-íoslódáil"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Teachtaireachtaí craolta"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Larionad %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Am saincheaptha"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Theip ar sheoladh"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Ó"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Liosta na míreanna ionsáite"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Teachtaireacht seachadta"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Teachtaireacht aisghafa"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Saor in aisce"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Rabhadh"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Seolta"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Brútheachtaireachtaí"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Faighte"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Láimhe"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Diúltaigh"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Roghanna fála"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Srianta"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Íseal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normálta"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Práinneach"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Tosaíocht"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Seol admháil léite?"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Fad ama an leathanaigh"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Teachtaireachtaí SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Teachtaireachtaí téacs"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Méid iomlán"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Inneachar DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 soicind"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 shoicind"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 shoicind"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Líonra baile"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Suiteáil"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Líonra iasachta"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Amharc ar shonraí teagmhálaí"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Teachtaireacht ilmheán seolta"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Theip ar aisghabháil teachtaireachta"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Theip ar sheoladh na teachtaireachta ilmheán"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Fad ama don sleamhnán"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Úsáid an eochair airde"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Teachtaireacht téacs"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Gan teideal"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Méid na teachtaireachta"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Iarrtha"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Neamhiarrtha"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Ar agh."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Neamh-léite"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Faighteoir dúbláilte"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Uaslíon na bhfaighteoirí (%d) bainte amach"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Chuig"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Taifead fuaim"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Taifead físeán"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Athraithe go MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Athraithe go SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d ceangaltán ar fáil. Roghnaigh suas le %d ceangaltán"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Ní féidir gach comhad a cheangal. Is é %d MB an t-uasmhéid is féidir a cheangal. Ar aghaidh?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Méid an chló"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Teachtaireacht ilmheán"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Níl ábhar ann"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Roghnaigh seoladh"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Tá tú ar tí dul ar líne(%s). Ar aghaidh?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Seol arís"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Faighteoir neamhbhailí"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Faighteoirí neamhbhailí"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Ní féidir seinm le linn glao"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Ní féidir sábháil agus an Mód ollstórála ar siúl"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Díobh an teachtaireacht reatha?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Roghnaithe"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Scrios?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Ní féidir cuir i gceangal. Is %d KB uasmhéid na gcomhad"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Srianta"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Ní féidir seoladh ar aghaidh.\nTá seoladh ar aghaidh an chomhaid glasáilte"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Cuireann an beartas slándála srian ar theachtaireachtaí téacs a chumadh"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Ag cur leis. Fan go fóill..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Seoladh an lárionaid seirbhíse"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Mór"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normálta"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Beag"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Bídeach"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Ní féidir teachtaireacht sceidealta a sheoladh. Socraigh am eile"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Dáta agus am"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Teachtaireachtaí ilmheán"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Níor cuireadh faighteoir leis. Iontráil faighteoirí"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Roghanna seolta"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normálta"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Ag seoladh SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Faighteoirí"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Teachtaireacht"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Uair amháin"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 huaire"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 huaire"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Tá mé i lár éigeandála. Cabhraigh liom le do thoil"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Níl SIM ionsáite"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Glac pictiúr"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Ní mór fad ama bheith níos faide ná %d soicind"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Ní féidir inneachar a chur leis"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Roghnaigh faighteoir"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Fad ama (%s soic)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Pictiúr rómhór. Ag comhbhrú..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Teachtaireacht sábháilte mar dhréacht"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Eile"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Dréacht"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Seol r-phost"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Míreanna ionsáite"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Míreanna ceangailte"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d ceangaltán"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Tcht\nsceideal."
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Fad ama\n(%d shoic)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Úsáid fais. teag. eile"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Leis an teachtaireacht seo tá comhad ceangailte nach bhfuil ar taispeáint"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Leis an teachtaireacht seo tá comhaid cheangailte nach bhfuil ar taispeáint"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Sábháil gach"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Dréacht-teachtaireachtaí"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Aischuirfear an teachtaireacht"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Cuirfear an teachtaireacht sceidealta ar ceal"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Cóipeáil téacs tcht."
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Amharc sonraí tcht."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Teachtaireachtaí glasáilte"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Boscaí teachtaireachta"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Cuir bac air"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Cóipeáil chuig fón"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Cóipeáladh teachtaireacht ón gcárta SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cuir teachtaireacht ar ceal"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Ceangaltáin"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Theip ar sheoladh teachtaireachta"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Uaslíon na gcarachtar bainte amach"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Sábháilte i Mo Chomhaid"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Sonraí na teachtaireachta"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Ag cur ar ais..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Níl ceangaltáin ann"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Cóipeáilte chuig gearrthaisce"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Cóipeáil chuig SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Ní féidir cóipeáil"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Cosaint as"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Cosaint air"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Sábháil ceangaltán"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Aischuir"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Teachtaireachtaí faoi chosaint"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Ag cur ar ceal..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Díreach comhchosúil le"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Tosaigh le"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Áirigh"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Meaitseáil critéir"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Scrios uimhir"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "bac curtha ar %s"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Scrios an teachtaireacht chosanta seo?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Bain bac"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Ag baint…"
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Curtha ar ais"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Teachtaireachtaí faoi chosaint"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Cosaint bainte"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Cuir bac ar %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "bac bainte ó %s"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Ní mór am sceidealaithe a shocrú sa todhchaí"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Cineál inneachair atá srianta. Ceangail ar aon nós?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Cuir teachtaireacht chosanta san áireamh"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Phleanálaí"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Mód ionchuir"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Aibítir GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Uathoibríoch"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Iontráil uimhir"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Dúbailte"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Cuir focal leis"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Roghanna fála"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Tá uimhir neamhbhailí ag faighteoirí áirithe. Níor cuireadh faighteoirí neamhbhailí leis. Faighteoirí neamhbhailí: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Faighteoir"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Iontráil focal"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Cuir focal in eagar"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Léigh"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Cuir uimhir leis"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Cuir uimhir in eagar"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Scrios focail"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Ní chuirfear bac ar theachtaireachtaí ó do theagmhálaithe fiú má tá focail bhactha iontu"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Uimhreacha bactha"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Focail bhactha"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Eolas faoi theachtaireachtaí SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ní féidir teachtaireachtaí a sheoladh nuair atá tú i mód Eitilte. Díchumasaigh mód Eitilte agus triail arís é"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Díchumas. Mód eitilte"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Teachtaireacht seolta"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Theip ar sheoladh teachtaireachta"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Scrios uimhreacha"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "I gcás éigeandála, brúigh an eochair airde 4 uaire nuair atá an eochairghlas gníomhach. Seolfaidh sé seo teachtaireachtaí SOS chuig d’fhaighteoirí roghnaithe. Má ghlaonn siad ar ais ort freagrófar a gcuid glaonna go huathoibríoch. I ndiaidh teachtaireachtaí SOS a sheoladh, ní bheidh aon fheidhm eile ar fáil ar an bhfón go dtí go mbeidh an eochairghlas neamhghníomhach"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Tá tú cláraithe mar fhaighteoir teachtaireachtaí SOS"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Seol anois"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Cúltaca"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Easpórtáil go cárta SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Mise"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Ar bun..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Fógra faoi theachtaireacht ilmheán"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Stádas"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "As feidhm: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Seans go gcaillfí roinnt carachtar.\nAr aghaidh?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Cuir téacs leis"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Teimpléid téacs"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Ionsáigh straoiseog"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Cineál meán gan tacú"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Mód eitilte á dhíchumasú..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d comhrá"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d teachtaireacht"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Liosta teimpléad folamh"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Cuardach casta"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Teimpléad"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Fuaim"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Stíl bholgáin"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Stíl an chúlra"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Roghanna teachtaireachta"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Ní mór fad ama a bheith %d soicind ar a laghad"
+
diff --git a/main/po/gl.po b/main/po/gl.po
new file mode 100755 (executable)
index 0000000..c54575a
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Informe de entrega"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Informe de lectura"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Solicitar informe de entrega"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Solicitar inform. lectura"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Lista de elementos"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Mover ao teléfono"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Modo creación"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centro de servizo"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Mover á SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Mensaxe programada"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Mensaxes de correo non desexado"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Recibindo tipo de alerta"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repetir"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capturar Vídeo"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Gravar audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Mensaxes CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Mensaxes da tarxeta SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Ver contacto"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Non se pode abrir"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Recuperar"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Non se pode mover"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Alcanzouse o número máximo de páxinas"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Modo restrinxido. Non se pode inserir contido restrinxido"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Entregado"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Caducada"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Recuperando..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insira a tarxeta SIM para enviar mensaxes. A mensaxe gardarase na Caixa de saída"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Introducir número de canle"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mensaxe seleccionada"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mensaxes seleccionadas"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Vista previa"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "O nome do arquivo xa existe"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Non hai mensaxes"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Engadir a contacto"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Refugar"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Non se pode enviar a mensaxe"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Facer unha foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Sen enderezo"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Lista de elementos adxuntos"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Descarga automática"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Mensaxes de difusión"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centro %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Hora personalizada"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Erro de envío"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lista de elementos inserida"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mensaxe entregada"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mensaxe recuperada"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Libre"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Aviso"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Enviada"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Mensaxes push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Recibido"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Rexeitar"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opcións de recepción"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restrinxida"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Baixo"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urxente"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioridade"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Enviar informe de lectura"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Duración da páxina"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Mensaxes de SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Mensaxes de texto"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Tamaño total"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Contido DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 segundos"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 segundos"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 segundos"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Rede local"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalar"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Rede estranxeira"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Ver detalles do contacto"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Mensaxe multimedia enviada"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Erro ao recuperar a mensaxe"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Erro no envío da mensaxe multimedia"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duración da diapositiva"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Utiliza a tecla de volume"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Mensaxe de texto"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Sen título"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Tamaño da mensaxe"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Solicitado"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Non solicitado"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Reenv"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Non lida"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinatario duplicado"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Alcanzouse o número máximo de destinatarios (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Para"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Gravar son"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Gravar vídeo"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Cambiado a MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Cambiouse a SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d adxuntos dispoñibles. Selecciona %d como máximo"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Non se poden achegar todos os arquivos. A capacidade máxima dos adxuntos é de %d KB. Continuar?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Tamaño da fonte"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Mensaxe multimedia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Sen asunto"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Seleccionar enderezo"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Está a punto de conectarse (%s). Continuar?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Vol env"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinatario non válido"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinatarios incorrectos"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Non se pode reproducir durante a chamada"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Imposible gardar no modo de almacenamento masivo"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Eliminar esta mensaxe?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Seleccionado"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Eliminar?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Non se pode achegar. O tamaño máximo dos arquivos é de %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restrinxida"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Non se pode reenviar.\nO arquivo está bloqueado contra reenvíos"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "A política de seguridade limita a composición das mensaxes de texto"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Engadindo. Por favor, espera..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Enderezo do centro de servizos"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Grande"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Pequeno"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Non se pode enviar a mensaxe programada. Establece outra hora"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Data e hora"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Mensaxes multimedia"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Non se engadiron destinatarios. Introduce destinatarios"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opcións de envío"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Enviando SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinatarios"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mensaxe"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Unha vez"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 veces"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 veces"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Teño unha urxencia. Por favor, axúdeme"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM non inserida"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Facer unha foto"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "A duración debe ser de máis de %d segundos"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Non se pode engadir o contido"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Seleccionar destinatario"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duración (%s seg.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Imaxe demasiado grande. Comprimindo..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mensaxe gardada como borrador"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Outro"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Borrador"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Enviar correo electrónico"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Elementos inseridos"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Elementos adxuntos"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d adxuntos"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Mensaxe\nprogramada"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duración\n(%d seg.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Usar outra info. cont."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Esta mensaxe inclúe un arquivo adxunto non mostrado"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Esta mensaxe inclúe arquivos adxuntos que non aparecen"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Gardar todo"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Borradores"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Restablecerase a mensaxe"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "A mensaxe programada cancelarase"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copiar men. de texto"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Ver detalles da mens"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Mensaxes bloqueadas"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Cadros de mensaxe"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloquear"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copiar ao teléfono"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mensaxe copiada da tarxeta SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancelar mensaxe"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Documentos adxuntos"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Erro ao enviar a mensaxe"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Número máximo de caracteres alcanzado"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Gardado en Os meus arquivos"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Detalles da mensaxe"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restaurando..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Non hai adxuntos"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copiado no portapapeis"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copiar á SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Non se pode copiar"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Protección desactivada"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Protección activada"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Gardar adxunto"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restaurar"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Mensaxes protexidas"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Cancelando..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exactamente o mesmo que"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Comezar con"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Incluír"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Axustarse a criterios"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Eliminar número"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloqueado"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Eliminar esta mensaxe protexida?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Desbloquear"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Eliminando..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restaurado"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Mensaxes protexidas"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protección eliminada"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Bloquear a %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s desbloqueado"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "No futuro, debería establecerse a hora programada"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Tipo de contido restrinxido. Achegar de todas formas?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Incluír mensaxes protexidas"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Modo de entrada"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabeto GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automática"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Introduce o número"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicado"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Engadir palabra"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opcións de recepción"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Algúns destinatarios dispoñen dun número non válido. Os destinatarios non válidos non se engadiron. Destinatarios non válidos: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinatario"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Introducir palabra"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Editar palabra"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Ler"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Engadir número"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Editar número"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Eliminar palabras"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "As mensaxes recibidas dos teus contactos non se bloquearán aínda que conteñan palabras bloqueadas"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Números bloqueados"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Palabras bloqueadas"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Acerca das mensaxes de SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Non se pode enviar mensaxes no modo de Avión. Desactiva o modo de Avión e téntao de novo"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Desactiva modo Avión"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mensaxe enviada"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Erro no envío da mensaxe"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Eliminar números"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Cando se produce unha urxencia, pulsa a tecla de baixar volume 4 veces cando o bloqueo de teclas estea activado. Deste xeito, enviaranse mensaxes de urxencia aos destinatarios seleccionados. Se che devolven a chamada, o teléfono non soará, pero a súa chamada responderase automaticamente. Despois de enviar as mensaxes de urxencia, o resto de funcións do teléfono non estarán dispoñibles ata que o bloqueo das teclas deixe de estar activo"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Está rexistrado como destinatario de mensaxes de SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Env. ago."
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Copia de seguridade"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exportar á tarxeta SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Eu"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "En curso..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notificación de mensaxe multimedia"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Estado"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Caduca: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Algúns caracteres poden perderse.\nContinuar?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Engadir texto"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Modelos de texto"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Inserir emoticona"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Tipo multimedia non admitido"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Desactivando o modo de avión..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversas"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d mensaxes"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Ningún modelo na lista"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Busca avanzada"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Modelo"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Estilo da burbulla"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Estilo de fondo"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opcións de mensaxe"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "A duración ten que ser polo menos de %d segundos"
+
diff --git a/main/po/hi.po b/main/po/hi.po
new file mode 100755 (executable)
index 0000000..48a49f9
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "वितरण रिपोर्ट"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "पठित रिपोर्ट"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "वितरण रिपोर्ट के लिए अनुरोध"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "पठित रिपोर्ट के लिए अनुरोध"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "आइटेम सूची"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "फोन में ले जाएं"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "निर्माण मोड"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "सेवा केंद्र"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM में ले जाएं"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "शेड्यूल्ड हुआ सन्देश"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "स्‍पैम सन्देश"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "अलर्ट प्रकार प्राप्त कर रहा है"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "दोहराएँ"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "वीडियो कैप्‍चर करें"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "ऑडियो रिकॉर्ड करें"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB सन्देश"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "सीम कार्ड सन्देश"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "संपर्क देखें"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "खुलने में अक्षम"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "पुनः प्राप्त करें"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "मूव करने में अक्षम"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "पेज़ों की अधि‍कतम संख्‍या पहुँची"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "प्रतिबंधित मोड. प्रतिबंधित सामग्री शामिल करने में अक्षम"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "भेज दिया"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "अवधि समाप्त"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "पुन: प्राप्त कर रहा है…"
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Messages भेजने के लिए कोई SIM कार्ड डालें। Message Outbox में सेव किया जाएगा"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "चैनल नंबर दर्ज करें"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 सन्देश चयनित"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d सन्देश चयनित"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "पूर्वदर्शन"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "फाइल का नाम पहले से ही मौजूद"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "कोई सन्देश नहीं"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "संपर्क में जोड़ें"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "डिस्कार्ड"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "सन्देश भेजने में अक्षम"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "फोटो लें"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "कोई पता नहीं"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "संलग्न आइटेम सूची"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "स्वत: डाउनलोड"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "प्रसारण सन्देश"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "केंद्र %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "कस्टम समय"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "भेजना असफल हुआ"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "से"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "शामिल आइटेम सूची"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "सन्देश पहुँचाया गया"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "सन्देश वापस मिला"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "मुक्त"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "चेतावनी"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "भेजा"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "पुश सन्देश"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "प्राप्त हुआ"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "मैनुअल"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "अस्वीकारें"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "प्राप्ति के विकल्प"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "प्रतिबंधित"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "निम्न"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "सामान्य"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "तत्काल"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "प्राथमिकता"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "पठित रिपोर्ट भेजें"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "पेज अवधि"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "आपातकाल सन्देश"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "टेक्स्ट सन्देश"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "कुल आकार"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM सामग्री"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 सेकंड"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 सेकंड"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 सेकंड"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "होम नेटवर्क"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "स्थापित करें"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "विदेशी नेटवर्क"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "संपर्क विवरण देखें"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "मल्टीमीडिया सन्देश भेजा गया"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "सन्देश पुनः प्राप्त करना असफल"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "मल्‍टीमीडिया सन्देश भेजना असफल"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "स्लाइड अवधि"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "वॉल्यूम की का उपयोग करें"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "टेक्स्ट सन्देश"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "शीर्षकविहीन"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "सन्देश आकार"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "अनुरोध किया गया"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "अनुरोध नहीं है"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "आगे"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "अपठित"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "डुप्लीकेट प्राप्तकर्त्ता"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "प्राप्तकर्ताओं की अधिकतम संख्या (%d) तक पहुँच गया"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "को"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "ध्वनि रिकॉर्ड करें"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "विडियो रिकॉर्ड करें"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "MMS में बदला गया"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "SMS में बदला गया"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d अटैचमेंट्स उपलब्ध। %d अटैचमेंट्स तक चुनें"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "सभी फाइलें संलग्न करने में अक्षम। अधिकतम अटैचमेंट क्षमता %d केबी है। जारी रखें?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "फॉन्ट आकार"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "मल्टीमीडिया सन्देश"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "कोई विषय नहीं"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "पता चुनें"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "आप ऑनलाइन (%s) होने जा रहें हैं। जारी रखें?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "पुनःभेजें"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "अमान्य प्राप्तकर्ता"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "अमान्‍य प्राप्तकर्ता"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "कॉल के दौरान चलाने में असमर्थ"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "मास स्‍टोरेज मोड में होने पर सेव करने में अक्षम"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "वर्तमान सन्देश निरस्त करें?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "चयनित"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "हटाएँ?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "संलग्न करने में अक्षम। फ़ाइलों का अधिकतम आकार %d KB है"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "प्रतिबंधित"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "फॉरवर्ड करने में असमर्थ।\n फाइल का फॉरवर्ड लॉक है"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "सुरक्षा नीति टेक्‍स्‍ट संदेशों की रचना को प्रतिबंधित करता है"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "जोड रहा है. कृपया प्रतीक्षा करें..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "सेवा केन्द्र पता"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "बड़ा"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "सामान्य"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "छोटा"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "छोटा"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "अनुसूचित सन्देश भेजने में अक्षम। एक और समय सेट करें"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "दिनांक और समय"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "मल्टीमीडिया सन्देश"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "कोई प्राप्तकर्ता जोड़ा नहीं गया। प्राप्तकर्ता दर्ज करें"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "भेजनें के विकल्प"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "आपातकाल"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "सामान्य"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "आपातकालीन भेज रहा है"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "प्राप्तकर्त्ता"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "सन्देश"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "एकबार"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 बार"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 बार"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "मैं आपात स्थिति में हूँ। कृपया मेरी मदद करें"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM नहीं डाली गई"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "तस्वीर लें"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "अवधि %d सेकंड्स से अधिक होनी चाहिए"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "विषय वस्तु जोड़ने में अक्षम"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "प्राप्‍तकर्ता चुनें"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "अवधि (%s सेकंड)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "चित्र बहुत बडा है। कंप्रेस हो रहा है..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "सन्देश ड्राफ्ट के रूप में सेव किया"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "अन्य"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "ड्राफ्ट"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "ईमेल भेजें"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "सम्मिलित आइटम"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "संलग्न मदें"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d अटैचमेंट्स"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "निर्धारित\nसंदेश"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "अवधि\n(%d सेकंड)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "अन्य संपर्क जानकारी का उपयोग करें"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "इस सन्देश में अदृश्य संलग्न फ़ाइल शामिल हैं"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "इस सन्देश में अप्रदर्शित संलग्न की गई फ़ाइलें शामिल हैं"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "सभी सेव करें"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "ड्राफ़्ट संदेश"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "संदेश रीस्टोर किए जाएँगे"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "निर्धारित संदेश रद्द किया जाएगा"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "सन्देश टेक्‍स्‍ट कॉपी करें"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "सन्देश विवरण देखें"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "सन्देश लॉक किए गए"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Message बॉक्‍सेज़"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "ब्लॉक करें"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "फोन में कॉपी करें"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "SIM कार्ड से सन्देश कॉपी किया गया"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "संदेश रद्द करें"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "संलग्नक"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "विफल सन्देश भेजा जा रहा है"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "वर्णो की संख्‍या अधिकतम पहुँची"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "मेरी फ़ाइलों में सुरक्षित किया गया"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "सन्देश विवरण"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "रीस्‍टोर हो रहा है…"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "कोई संलग्नक नहीं"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "क्लिपबोर्ड में कॉपी किया गया"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "SIM में कॉपी करें"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "कॉपी करने में अक्षम"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "सुरक्षा बंद"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "सुरक्षा चालू"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "संलग्नक सुरक्षित करें"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "रीस्‍टोर"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "सुरक्षित सन्देश"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "रद्द कर रहा है…"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "ठीक ऐसा ही"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "से शुरू करें"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "शामिल करें"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "कसौटी मिलाएँ"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "नंबर हटाएँ"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s ब्लॉक किया गया"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "यह सुरक्षित सन्देश हटाएँ?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "अनब्‍लॉक करें"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "हटा रहा है…"
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "रीस्‍टोर किया गया"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "सुरक्षित सन्देश"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "सुरक्षा निकाली गई"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s ब्लाक करें?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s अनब्लॉक किया गया"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "भविष्य में शेड्यूल्ड समय सेट करें"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "प्रतिबंधित सामग्री प्रकार। फिर भी संलग्न करें?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "सुरक्षित सन्देश शामिल करें"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S प्लैनर"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "इनपुट मोड"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM वर्णाक्षर"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "यूनिकोड"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "स्वचालित"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "नंबर प्रविष्‍ट करें"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "डुप्लीकेट किया गया"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "शब्द जोड़ें"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "प्राप्ति के विकल्प"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "कुछ प्राप्तकर्ताओं के पास अमान्‍य नंबर हैं। अमान्‍य प्राप्तकर्ता जोड़े नहीं गए। अमान्‍य प्राप्तकर्ता: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "प्राप्तकर्त्ता"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "शब्‍द दर्ज करें"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "शब्‍द संपादन"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "पढ़ें"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "नंबर जोड़ें"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "नंबर संपादित करें"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "शब्द हटाएँ"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "आपके संपर्कों से प्राप्त संदेशों को अवरूद्ध नहीं किया जाएगा भले ही उनमें अवरूद्ध किए गए शब्द हों"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "अवरूद्ध किए गए नंबर"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "अवरूद्ध किए गए शब्द"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS संदेशों के बारे में"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "फ़्लाइट मोड के दौरान संदेश भेजने में अक्षम। फ़्लाइट मोड अक्षम करें और फिर से प्रयास करें"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "फ़्लाइट मोड अक्षम करें"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "सन्देश भेजा"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Message भेजना विफल"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "नंबर हटाएँ"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "आपातस्थिति में जब की कुंजी लॉक सक्रिय हो तो वॉल्यूम कम कुंजी को 4 बार दबाएँ। यह आपके द्वारा चुने गए प्राप्तकर्ताओं को SOS मैसेजेस भेज देगा। यदि वे आपको वापस कॉल करते है, तो फ़ोन रिंग नहीं होगा लेकिन उनके कॉल का स्वचालित रूप से जवाब दिया जाएगा। SOS संदेशों को भेजने के बाद फ़ोन के अन्य सभी फ़ंक्शन्स तब तक अनुपलब्ध रहेंगे जब तक की कुंजी लॉक सक्रिय नहीं होता है"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "आप आपातकालीन सन्देश प्राप्तकर्ता के रूप में पंजीकृत हैं"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "अभी भेजें"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "बैकअप"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "SD कार्ड पर निर्यात करें"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "मेरे द्वारा"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "प्रगति पर..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "मल्टीमीडिया सन्देश अधिसूचना"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "स्थिति"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "समय सीमा समाप्ति: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "कुछ वर्ण खो सकते हैं।\nजारी रखें?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "टेक्स्ट जोड़ें"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "टेक्स्ट टेम्पलेट्स"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "ईमोटिकॉन डालें"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "असमर्थित मीडिया प्रकार"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "फ़्लाइट मोड अक्षम किया जा रहा है..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d वार्तालाप"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d सन्देश"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "सूची में टेम्पलेट्स नहीं"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "उन्नत खोज"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "टेम्पलेट"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "ऑडियो"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "बबल स्टाइल"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "बैकग्राउंड शैली"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "सन्देश विकल्प"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "अवधि कम से कम %d सेकंदों का होना चाहिए"
+
diff --git a/main/po/hr.po b/main/po/hr.po
new file mode 100755 (executable)
index 0000000..c116d17
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Izvješće o isporuci"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Izvještaj o čitanju"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Izvješće isporuke"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Izvješće čitanja"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Popis stavki"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Premjesti u telefon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Način sastavljanja"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centar za usluge"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Premjesti na SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Odgođeno slanje"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Neželjene poruke"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Vrsta obavjesti"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Ponavljanje"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Snimanje videa"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Snimi zvuk"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB poruke"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Poruke na SIM kartici"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Prikaz kontakta"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Nemoguće otvoriti"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Preuzmi"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Nemoguće premjestiti"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Maks. broj stranica"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Ograničeni način rada. Nemoguće umetnuti ograničeni sadržaj"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Isporučeno"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Isteklo"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Preuzimanje..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Umetnite SIM karticu prije slanja poruke. Poruka spremljena u Odlazne"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Unesite broj kanala"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Odabrana 1 poruka"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d odabranih poruka"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Pregled"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Ime datoteke već postoji"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Nema poruka"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Dodaj kontaktu"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Odbaci"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Nemoguće poslati poruku"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Fotografiranje"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nema adrese"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Privici"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Auto. skidanje"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Info poruke mreže"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centar %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Postavi"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Slanje neuspješno"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Od"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Umetnute stavke"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Poruka isporučena"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Poruka preuzeta"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Slobodno"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Upozorenje"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Poslano"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push poruke"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Primljeno"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ručno"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Odbaci poziv"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opcije primanja"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Ograničeno"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Niski"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normalni"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Visoki"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritet"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Slanje izvještaja čitanosti"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Trajanje stranice"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS poruke"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS poruke"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Ukupna veličina"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM sadržaj"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sek"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sek"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sek"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Matična mreža"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalirati"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Roaming"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Detalji kontakta"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS poslan"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Preuzimanje poruke neuspješno"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Neuspješno slanje MMS poruke"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Trajanje stranice"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Upotreba tipke glasnoće"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Bez naslova"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Veličina poruke"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Zatraženo"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nije zatraženo"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Proslij."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nepročitano"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Primatelji su duplicirani"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maksimalni broj primatelja (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Za"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Snimi zvuk"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Video snimanje"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Promijenjeno na MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Promijenjeno u SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d privitaka dostupno. Odaberite do %d privitaka"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Nemoguće pridružiti sve datoteke. Maksimalna veličina privitka %d kB. Nastavak?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Veličina slova"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Bez naslova"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Odaberite adresu"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Spajanje na internet (%s). Nastaviti?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Pon. pošalji"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Neispravan primatelj"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Greška primatelja"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Nemoguće reprod. tijekom poziva"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Nemoguće spremiti u načinu spremanja podataka"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Odbaciti trenutnu poruku?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Odabrano"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Obrisati?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Nemoguće pridružiti. Maks. veličina datoteka: %d kB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Ograničeno"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Prosljeđivanje nemoguće\nDatoteka zaključana za prosljeđivanje"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Sigurnosne odredbe ograničavaju sastavljanje SMS poruka"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Dodaje se. Pričekajte..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresa centra za poruke"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Velika"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normalna"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Mala"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Nije moguće poslati zakazanu poruku. Postavite drugo vrijeme"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Datum i vrijeme"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS poruke"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nema dodanih primatelja. Unesite primatelje"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opcije slanja"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normalna"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Slanje SOS poruke"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Primatelji"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Poruka"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "1 puta"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 puta"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 puta"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "U nevolji sam! Molim pomoć!"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Umetnite SIM karticu"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Fotografiranje"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Trajanje mora biti dulje od %d sek"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Nemoguće dodati"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Odaberite primatelja"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Trajanje (%s sek)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Slika prevelika. Sažimanje..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Poruka spremljena u Pripremu"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Ostalo"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Priprema"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Pošalji email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Umetnute stavke"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Privitak"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d privitaka"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Zakazana\nporuka"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Trajanje\n(%d sek)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Kor. dru. kontak. pod."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Poruka sadrži privitak koji nije prikazan"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Poruka sadrži privitke koji nisu prikazani"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Spremi sve"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Poruke iz pripreme"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Poruke će biti vraćene"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Zakazane poruke bit će otkazane"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopiraj tekst poruke"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Prikaz detalja"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Zaključane poruke"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Okviri poruka"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokiraj"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopiraj na telefon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Poruka kopirana sa SIM kartice"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Poništi poruku"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Privitak"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Slanje neuspješnih poruka"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Maks. broj znakova"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Spremljeno u Moje datoteke"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Detalji poruke"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Vraćanje..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Bez privitaka"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Kopirano u međuspremnik"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopiraj na SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Nemoguće kopirati"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Isključi zaštitu"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Uključi zaštitu"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Spremi privitak"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Vrati"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Zaštićene poruke"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Prekidanje..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Točno kao prikazan"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Započni s"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Sadrži"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Kriterij podudaranja"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Obriši broj"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blokiran"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Obrisati ovu zaštićenu poruku?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Odblokiraj"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Uklanjanje..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Vraćeno"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Zaštićene poruke"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Zaštita uklonjena"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Blokirati %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s odblokiran"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Zakazano vrijeme treba biti u budućnosti"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Ograničena vrsta sadržaja. Svejedno dodati?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Uključite zaštićenu poruku"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S bilješka"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planer"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Način unosa teksta"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM abeceda"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatski"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Unesite broj"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Kopirano"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Dodaj riječ"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opcije primanja"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Neki primatelji imaju neispravan broj. Neispravni primatelji nisu dodani. Neispravni primatelji: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Primatelj"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Unesite riječ"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Uredi riječ"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Čitaj"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Dodaj broj"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Izmijeni broj"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Obriši riječi"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Poruke primljene iz kontakata neće biti blokirane niti ako sadrže blokirane riječi"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokirani brojevi"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokirane riječi"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "O SOS porukama"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Nemoguće slati poruke u profilu Bez mreže. Isključite profil Bez mreže i ponovite"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Isk. Profil bez mr."
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Poruka poslana"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Slanje poruke neuspješno"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Obriši brojeve"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "U slučaju nužde pritisnite tipku za glasnoću 4 puta kada je aktivna blokada tipkovnice. Time ćete poslati SOS poruke odabranim pošiljateljima. Ako vam uzvrate poziv telefon neće zvoniti već će poziv biti automatski prihvaćen. Nakon slanja SOS poruka sve druge funkcije telefona bit će nedostupne do prekida blokade tipki"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Registrirani ste kao primatelj SOS poruke."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Šalji sad"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Sigurnosna kopija"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Izvezi na SD karticu"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Ja"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "U tijeku..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "MMS obavijest"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Istek: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Neki znakovi bi mogli biti obrisani.\nNastaviti?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Dodaj tekst"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "SMS obrasci"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Umetni smajlića"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nepodržani mediji"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Isključivanje načina rada u zrakoplovu..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d razgovora"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d poruka"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Nema obrazaca na popisu"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Napredno pretraživanje"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Obrazac"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Zvuk"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Stil mjehurića"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Stil pozadine"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "MMS opcije"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Duljina mora biti bar %d sek"
+
diff --git a/main/po/hu.po b/main/po/hu.po
new file mode 100755 (executable)
index 0000000..14eee3c
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Kézbesítési jelentés"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Jelentést olvas"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Kézbesítési jelentést kér"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Olvasási jelentést kér"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Tételek listája"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Telefonra áthelyez"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Létrehozási mód"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Szolgáltatásközpont"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM-kártyára áthelyez"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Ütemezett üzenet"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Levélszemét"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Fogadásjelzés típusa"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Ismétlés"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Videó rögzítése"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Hang rögzítése"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Hírüzenetek"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-üzenetek"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Névjegy megtekintése"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Nem nyitható meg"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Fogadás"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Nem helyezhető át"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Elérte az oldalak maximális számát"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Korlátozott mód. Nem szúrható be korlátozott tartalom"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Kézbesítve"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Lejárt"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Fogadás..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Üzenetküldéshez helyezzen be SIM-kártyát. Az üzenet a Kimenő mappába kerül"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Adja meg a csatorna számát"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 üzenet kiválasztva"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d üzenet kiválasztva"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Előnézet"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Ez a fájlnév már létezik."
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Nincs üzenet"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Hozzáadás névjegyhez"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Elvetés"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Nem lehet elküldeni az üzenetet"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Fényképezés"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nincs cím"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Csatolt tételek"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automatikus letöltés"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Hálózati hírüzenetek"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "%d. központ"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Egyéni időpont"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "A küldés sikertelen"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Feladó"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Beszúrt tétellista"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Az üzenet kézbesítve"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Az üzenet letöltve"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Szabad"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Figyelmeztetés"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Elküldve"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push üzenetek"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Fogadva"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Kézi"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Elutasít"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Fogadás beállítások"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Korlátozva"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Alacsony"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normál"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Sürgős"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritás"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Olvasási jelentés küldése"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Oldal időtartama"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Segélykérő üzenetek"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Szöveges üzenetek"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Teljes méret"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM-tartalom"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 másodperc"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 másodperc"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 másodperc"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Saját hálózat"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Telepít"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Roamingban használt hálózat"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Névjegyadatok megtekintése"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimédia üzenet elküldve"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Üzenet fogadása sikertelen"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "A multimédia üzenet elküldése nem sikerült"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Dia időtartama"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Hangerőgomb használata"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Szöveges üzenet"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Névtelen"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Üzenet mérete"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Kérés"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nem kérték"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Tov.k."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Olv.tlan"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Kétszer előforduló címzett"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Elérte a címzettek maximális számát (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Címzett"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Hangfelvétel"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Videófelvétel"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Átvált MMS-re"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "SMS-re módosítva"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d melléklet áll rendelkezésre. Legfeljebb %d mellékletet válasszon ki"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Nem lehet mindegyik fájlt csatolni. Összesen legfeljebb %d KB csatolható. Folytatja?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Betűméret"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimédia üzenet"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Üres tárgymező"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Válasszon címet"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Kapcsolódni készül (%s). Folytatja?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Újraküld"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Érvénytelen címzett"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Érvénytelen címzettek"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Hívás közben nem lehet lejátszani"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Háttértár módban nem lehet menteni"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Elveti a jelenlegi üzenetet?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Kiválasztva"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Törli?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Nem csatolható. A maximális fájlméret %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Korlátozva"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Nem lehet továbbküldeni. A fájl védett a továbbküldés ellen"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "A biztonsági irányelv korlátozza a szöveges üzenetek írását"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Hozzáadás. Kis türelmet..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Szolgáltatóközpont címe"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Nagy"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normál"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Kicsi"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Nem lehet elküldeni az ütemezett üzenetet. Más időt állítson be"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Dátum és idő"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimédia üzenetek"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nem adott meg címzettet. Adja meg a címzetteket"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Küldés beállítások"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normál"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Segélykérő üzenet küldése"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Címzettek"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Üzenet"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Egyszer"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "Háromszor"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "Ötször"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Veszélyben vagyok. Segítséget kérek."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Nincs behelyezve SIM"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Kép készítése"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Az időtartamnak hosszabbnak kel lennie %d másodpercnél"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "A tartalom nem adható hozzá"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Címzett kiválasztása"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Időtartam (%s mp)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "A kép túl nagy. Tömörítés..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Üzenet piszkozatként mentve"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Egyéb"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Piszkoz."
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "E-mail küldése"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Beszúrt tételek"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Csatolt tételek"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d melléklet"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Ütemezett\nüzenet"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Időtartam\n(%d mp)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Más kapcs.info. haszn."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Ez az üzenet nem megjeleníthető mellékletet tartalmaz"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Ez az üzenet megjelenítetlen csatolt fájlokat tartalmaz"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Összes mentése"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Piszkozatok"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Vissza fogja állítani az üzenetet"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Vissza fogja vonni az ütemezett üzenetet"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Üzenetszöv. másolása"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Üz.adatok megtekint."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Védett üzenetek"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Üzenetablakok"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Letiltás"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Másolás telefonra"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Üzenet átmásolva a SIM kártyáról"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Üzenet visszavonása"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Mellékletek"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Sikertelen üzenet küldése"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Nincs hely több karakternek"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Mentve a Saját fájlok közé"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Üzenet részletei"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Visszaállítás..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Nincs melléklet"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "A vágólapra másolva"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Másolás SIM-re"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Nem lehet átmásolni"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Védelem kikapcsolva"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Védelem bekapcsolva"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Melléklet mentése"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Visz.áll."
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Védett üzenetek"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Megszakítás..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Pontosan ugyanaz, mint"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Ezzel kezdődik:"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Belefoglalás"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Egyezőségi feltétel"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Szám törlése"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blokkolva"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Törli ezt a védett üzenetet?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Feloldás"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Eltávolítás..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Helyreállítva"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Védett üzenetek"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Védelem eltávolítva"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Letiltja %s felhasználót?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s feloldva"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Az ütemezett időpontnak a jövőben kell lennie"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Korlátozott típusú tartalom. Így is kívánja csatolni?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Védett üzeneteket is"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S tervező"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Szövegbeviteli üzemmód"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Ékezet nélkül"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Ékezetes"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatikus"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Írja be a számot"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Ismétlődés"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Szó hozzáadása"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Fogadás beállítások"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Bizonyos címzettek száma érvénytelen. Az érvénytelen címzettek nincsenek hozzáadva. Érvénytelen címzettek: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Címzett"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Írja be a szót"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Szó szerkesztése"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Olvas"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Szám hozzáadása"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Szám szerkesztése"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Szavak törlése"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "A névjegyzékben szereplő címekről kapott üzenetek nem lesznek blokkolva, hacsak nem tartalmaznak tiltott szavakat"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokkolt számok"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Tiltott szavak"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "A segélykérő üzenetekről"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Repülő üzemmódban nem lehet üzenetet küldeni. Kapcsolja ki a Repülő üzemmódot, és próbálja újra"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Kap. ki a Rep. módot"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Üzenet elküldve"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Üzenet küldése sikertelen"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Számok törlése"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Vészhelyzetben aktív billentyűzár esetén nyomja meg 4-szer a halkítógombot. Ezzel segélykérő üzenetet küld a kiválasztott címzetteknek. Ha ezek visszahívják, a készülék csengés nélkül automatikusan fogadja a hívást. Segélykérő üzenet küldése után a telefon semmilyen egyéb funkciója nem lesz elérhető, amíg fel nem oldja a billentyűzárat"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Segélykérő üzenet címzettjeként regisztrálták."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Küldés"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Biztonsági mentés"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exportálás SD-kártyára"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Én"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Folyamatban..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimédia üzenet jelzése"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Állapot"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Elévül: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Bizonyos karakterek elveszhetnek.\nFolytatja?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Szöveg hozzáadása"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Szövegsablonok"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Hangulatjal beszúrása"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nem támogatott médiatípus"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Repülő üzemmód kikapcsolása..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d beszélgetés"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d üzenet"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "A lista nem tartalmaz sablont"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Speciális keresés"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Sablon"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Hang"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Buborék stílus"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Háttér stílusa"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Üzenetopciók"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Az időtartamnak legalább %d másodpercnek kell lennie"
+
diff --git a/main/po/hy.po b/main/po/hy.po
new file mode 100755 (executable)
index 0000000..17d1981
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Առաքման զեկույց"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Ընթերցման հաշվետվություն"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Հայցել առաքման հաշվետվություն"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Հայց. ընթերց. հաշվետվ."
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Տարրերի ցանկ"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Տեղափոխել հեռախոս"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Ստեղծման ռեժիմ"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Սպասարկման կենտրոն"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Տեղափոխել SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Պլանավորված հաղորդագրություն"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Սպամ հաղորդագրություններ"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Ստացվում է զգուշացման տեսակ"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Կրկնություն"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Տսհլվկ նկրլ"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Ձայնագրել աուդիոն"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "ԲՀ հաղորդագրություններ"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM քարտի հաղորդագրություններ"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Դիտել կոնտակտը"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Անհնար է բացել"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Ստանալ"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Անհնար է տեղափոխել"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Էջերի առավելագույն քանակը լրացված է"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Սահմանափակ ռեժիմ: Անհնար է մտցնել սահմանափակված բովանդակություն"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Առաքված է"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Սպառվել է"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Ստանում է..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Հաղորդագրություններ ուղարկելու համար տեղադրել SIM քարտ: Հաղորդագրությունը պահվելու է Ելից նամակներում"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Մուտքագրել կապուղու համարը"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 հաղորդագրություն է ընտրվել"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d հաղորդագրություն է ընտրվել"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Դիտել"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Ֆայլի անունն արդեն գոյություն ունի"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Հաղորդագրություններ չկան"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Ավելացնել կոնտակտում"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Չեղարկել"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Հնարավոր չէ ուղարկել հաղորդագրությունը"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Նկարահանում"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Հասցե չկա"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Կցված տարրերի ցանկ"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Ավտոբեռնում"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Ցանցի հաղորդագրություններ"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Կենտրոն %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Ընտրել ժամանակը"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Ուղարկումը ձախողվեց"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Ումից"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Մտցված տարրերի ցանկ"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Հաղորդագրությունը առաքված է"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Հաղորդագրությունը վերականգնված է"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Ազատ"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Զգուշացում"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Ուղարկված է"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "Բ"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "ԿԲ"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push հաղորդագրություններ"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Ստացված է"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ձեռքով"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Մերժել"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Ստացման ընտրանքներ"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Արգելված է"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Ցածր"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Նորմալ"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Շտապ"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Առաջնություն"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Ուղարկել ընթերցման ստացականը"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Էջի տևողություն"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS հաղորդագրություններ"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Տեքստային հաղորդագրություններ"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Ընդհանուր չափը"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM պարունակություն"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 վայրկյան"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 վայրկյան"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 վայրկյան"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Տեղական ցանց"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Տեղադրել"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Օտարերկրյա ցանց"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Դիտել կոնտակտի մանրամասները"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Մուլտիմեդիա հաղորդագրությունը ուղարկվել է"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Հաղորդագրության ստացումը ձախողվեց"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Մուլտիմեդիա հաղորդագրության ուղարկումը ձախողվեց"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Սլայդի տևողությունը"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Օգտ. ձայնի ուժգն. ստեղնը"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Տեքստային հաղորդագրություն"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Առանց վերնագրի"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Հաղորդագրության չափը"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Պահանջված"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Չի պահանջվել"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Առաջ"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Չկարդացված"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Կրկնակված հասցեատեր"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Հասել է հասցեատերերի առավելագույն քանակին (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Ում"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Ձայնագրել հնչյուն"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Տեսագրել"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Փոխվեց դեպի MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Փոխվել է SMS-ի"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Մատչելի է %d կցուրդ: Ընտրել մինչև %d կցուրդ"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Անհնար է կցել բոլոր ֆայլերը: Կցուրդների առավելագույն տարողությունը %d ԿԲ է. շարունակե՞լ:"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Տառաչափ"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Մուլտիմեդիա հաղորդագրություն"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Թեմա չկա"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Ընտրեք հասցեն"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Դուք կմիանաք ցանցին(%s): Շարունակե՞լ"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Կրկն ուղր"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Անվավեր հասցեատեր"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Անվավեր հասցեատերեր"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Անհնար է վերարտադրել կանչի ընթացքում"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Անհնար է պահպանել Զանգվածային պահոցի ռեժիմում"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Դեն նետե՞լ ընթացիկ հաղորդագրությունը:"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Ընտրված"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Ջնջե՞լ"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Անհնար է կցել: Ֆայլերի առավելագույն չափը %d ԿԲ է"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Արգելված է"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Անհնար է վերահասցեավորել:\nՖայլը արգելափակված է վերահասցեավորումից"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Անվտանգության քաղաքականությունը սահմանափակում է տեքստային հաղորդագրություններ կազմելը"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Ավելացվում է: Խնդրում ենք սպասել..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Սպասարկման կենտրոնի հասցե"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Մեծ"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Նորմալ"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Փոքր"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Անհնար է պլանավորված հաղորդագրություն ուղարկել: Դրեք այլ ժամ"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Անսաթիվ և ժամանակ"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Մուլտիմեդիա հաղորդագրություններ"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Հասցեատերեր չեն ավելացվել: Մուտքագրել հասցեատերեր"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Ուղարկման ընտրանքներ"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Նորմալ"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Ուղարկում է SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Ստացողներ"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Հաղորդագրություն"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Մեկ անգամ"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 անգամ"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 անգամ"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Ինձ մոտ արտակարգ իրավիճակ է: Խնդրում եմ ինձ օգնել"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-ը տեղադրված չէ"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Նկարել"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Տևողությունը պետք է լինի %d վայրկյանից երկար"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Անհնար է բովանդակություն ավելացնել"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Ընտրել հասցեատեր"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Տևողություն (%s վրկ)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Նկարը շատ մեծ է: Խտացվում է..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Ուղերձը պահված է որպես սևագիր"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Այլ"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Սևագիր"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Ուղարկել էլ. փոստ"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Մտցված տարրեր"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Կցված տարրեր"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d կցուրդ"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Պլանավորված\nհղգրություն"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Տևողություն\n(%d վրկ)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Օգտ. այլ կոնտ. տվյլներ"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Այս հաղորդագրությունը պարունակում է կցված ֆայլ, որը չի ցուցադրվում"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Այս հաղորդագրությունը ներառում է չպատկերված կից ֆայլեր"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Պահպանել բոլորը"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Սևագիր հաղորդագրություններ"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Հաղորդագրությունը կվերականգնվի"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Պլանավորված հաղորդագրությունը կդադարեցվի"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Պատճենել հղգրն տեքստ"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Դիտել հգրն մնրմսներ"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Արգելափակված հաղորդագրություններ"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Հաղորդագրությունների արկղեր"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Արգելափակել"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Պատճենել հեռախոսի մեջ"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Հաղորդագրությունը պատճենվեց SIM քարտից"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Դադարեցնել հաղորդագրությունը"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Կիցեր"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Հաղորդագրության ուղարկումը ձախողվեց"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Հասել եք նիշերի առավելագույն քանակին"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Պահպանվել է Իմ Ֆայլերում"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Հաղորդագրության մանրամասներ"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Վերականգնումն ընթացքում է..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Ներդիր չկա"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Պատճենվել է գզրոցի մեջ"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Պատճենել SIM-ի մեջ"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Հնարավոր չէ պատճենել"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Պաշտպանությունը հանված"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Պաշտպանությունը միացված"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Պահպանել կիցը"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Վերականգ"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Պաշտպանված հաղորդագրություններ"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Չեղարկում..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Ճիշտ նույնը, ինչ"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Սկսել ...ից"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Ներառել"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Համապատասխանեցնել չափանիշները"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Ջնջել համարը"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s արգելափակվեց"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Վերացնե՞լ այս պաշտպանված հաղորդագրությունը:"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Հանել արգելափակումից"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Հեռացնում է..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Վերականգնված"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Պաշտպանված հաղորդագրություններ"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Պաշտպանությունը հեռացվեց"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Արգելափակե՞լ %sին:"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s արգելաբացվեց"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Պլանավորված ժամանակը պետք է դրվի ապագայում"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Սահմանափակ տիպի բովանդակություն. կցե՞լ ամեն դեպքում:"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Ներառել պաշտպանված հաղորդագրություն"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Ներմուծման ռեժիմ"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-այբուբեն"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Ավտոմատ կերպով"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Մուտքագրեք համարը"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Կրկնօրինակված է"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Ավելացնել բառ"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Ստացման ընտրանքներ"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Որոշ հասցեատերեր անվավեր համար ունեն: Անվավեր հասցեատերերը չեն ավելացվել: Անվավեր հասցեատերեր՝ %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Ստացող"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Մուտքագրել բառ"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Խմբագրել բառը"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Ընթերցել"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Ավելացնել համար"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Խմբագրել համարը"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Վերացնել բառեր"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Ձեր կոնտակտներից ստացված հաղորդագրությունները չեն արգելափակվի, նույնիսկ եթե դրանք պարունակում են արգելափակված բառեր"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Արգելափակված համարներ"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Արգելափակված բառեր"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS հաղորդագրությունների մասին"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Անհնար է հաղորդագրություններ ուղարկել Թռիչքային ռեժիմում: Կասեցրեք Թռիչքային ռեժիմը և նորից փորձեք"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Կասեցնել Թռչք. ռեժիմ"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Հաղորդագրությունն ուղարկված է"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Չհաջողվեց ուղարկել հաղորդագրությունը"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Վերացնել համարներ"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Արտակարգ իրավիճակում 4 անգամ սեղմեք ձայնի իջեցման ստեղնը, երբ ստեղների արգելափակիչն ակտիվ է: Սա SOS հաղորդագրություններ կուղարկի Ձեր ընտրած հասցեատերերին: Եթե նրանք հետ զանգեն Ձեզ, հեռախոսը չի զանգահարի, բայց նրանց զանգն ինքնաբերաբար կպատասխանվի: SOS հաղորդագրություններն ուղարկելուց հետո հեռախոսի բոլոր մյուս գործառույթները անմատչելի կմնան, մինչև ստեղների արգելափակիչն այլևս ակտիվ չլինի"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Դուք գրանցված է որպես SOS հաղորդագրության ստացող"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Ուղ. հիմա"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Պհստ պտճն"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Արտահանել SD քարտի մեջ"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Իմ կողմից"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Ընթացքում է..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Մուլտիմեդիա հաղորդագրության ծանուցում"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Կարգավիճակ"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Սպառված է. %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Որոշ նշաններ կարող են կորչել:\nՇարունակե՞լ:"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Ավելացնել տեքստ"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Տեքստի ձևանմուշներ"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Մուտքագրել էմոցիա"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Չհամապատասխանող մեդիայի տեսակ"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Թռիչքային ռեժիմը կասեցվում է..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d խոսակցություն"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d հղրդ."
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Ցուցակում ձևանմուշներ չկան"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Ընդլայնված որոնում"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Ձևանմուշ"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Աուդիո"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Պղպջակի ոճ"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Ետնապատկերի ոճ"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Հաղորդագրության ընտրանքներ"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Տևողությունը պետք է լինի առնվազն %d վայրկյան"
+
diff --git a/main/po/is.po b/main/po/is.po
new file mode 100755 (executable)
index 0000000..c8363b1
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Skilatilkynning"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Lestilkynning"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Biðja um skilatilkynningu"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Biðja um lestilkynningu"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Listi"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Færa í síma"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Stærðartakmörk"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Þjónustumiðstöð"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Færa á SIM-kort"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Áætluð skilaboð"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Ruslpóstur"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Móttek tegund viðvörunartóns"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Endurtaka"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Taka upp vídeó"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Taka upp hljóð"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Skilaboð frá endurvarpa"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-kortsskilaboð"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Birta tengilið"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ekki tókst að opna"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Endurheimta"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Ekki hægt að flytja"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Hámarksfjölda síðna hefur verið náð"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Takmörkuð stilling. Mistókst að setja inn efni með takmörkunum"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Afhent"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Útrunnið"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Verið er að endurheimta..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Setjið SIM-kort í til að senda skilaboð. Skilaboðin verða vistuð í Úthólfi"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Slá inn stöðvarnúmer"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 skilaboð valin"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d skilaboð valin"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Forskoða"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Sama skrárheiti er til fyrir"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Engin boð"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Bæta við tengilið"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Henda"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Mistókst að senda skilaboð"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Taka mynd"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Ekkert netfang"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Viðhengdur listi"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Sjálfvirkt niðurhal"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Skilaboð frá endurvarpa"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Miðstöð %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Velja tíma"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Sending mistókst"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Frá"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Innsettur listi"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Boð afhent"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Boð sótt"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Laust"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Viðvörun"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Sent"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push-skilaboð"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Móttekið"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Handvirkt"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Hafna"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Móttökukostir"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Takmarkað"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Lítið"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Venjulegt"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Áríðandi"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Forgangur"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Senda lestilkynningu"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Tímalengd síðu"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Neyðarskilaboð"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Textaboð"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Heildarstærð"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Höfundaréttarvarið efni"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekúndur"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekúndur"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekúndur"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Heimakerfi"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Setja upp"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Reikikerfi"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Birta upplýsingar um tengilið"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Margmiðlunarboð send"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Mistókst að sækja skilaboð"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Mistókst að senda margmiðlunarskilaboð"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Tímalengd skyggnu"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Notaðu hljóðstyrkstakkann"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Textaskilaboð"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Ónefnt"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Stærð skilaboða"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Beiðnin var send"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Ekki beðið um"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Frams."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Ólesið"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Viðtakandi kemur tvisvar fyrir"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Hámarksfjölda viðtakenda (%d) náð"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Til"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Taka upp hljóð"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Taka upp myndskeið"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Breytt í MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Breytt í SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d viðhengi tiltæk. Veldu allt að %d viðhengi"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Mistókst að hengja allar skrár við. Hámarksstærð viðhengja er %d KB. Vildu halda áfram?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Leturstærð"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Margmiðlun"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Ekkert efni"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Veldu netfang"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Þú ert að fara að tengjast (%s)? Viltu halda áfram?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Senda aftur"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Ógildur viðtakandi"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Ógildir viðtakendur"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Ekki er hægt að spila á meðan símtal stendur yfir"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Ekki tókst að vista í magngeymslustillingu"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Viltu fleygja þessum skilaboðum?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Valið"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Á að eyða?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Mistókst að hengja við. Hámarksstærð skráa er %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Takmarkað"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Ekki tókst að framsenda\nLokað er fyrir framsendingu skrárinnar"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Öryggisreglur takmarka skrif textaskilaboða"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Bæti við. Andartak..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Netfang þjónustumiðstöðvar"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Stórt"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Venjulegt"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Lítið"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Mistókst að senda áætluð skilaboð. Veldu annan tíma"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Dagsetning og tími"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Margmiðlunarboð"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Engum viðtakendum bætt við. Bættu við viðtakendum"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Sendikostir"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Venjulegt"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Sendi neyðarskilaboð"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Viðtakendur"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Skilaboð"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Einu sinni"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 skipti"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 skipti"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Ég þarf hjálp! Vinsamlega aðstoðið"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Það er ekkert SIM-kort til staðar"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Taka mynd"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Lengdin verður að vera meiri en %d sekúndur"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Ekki tókst að bæta við innihaldi"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Velja viðtakanda"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Tímalengd (%s sek.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Myndin er of stór. Þjappa..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Skilaboð voru vistuð sem drög"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Annað"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Drög"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Senda tölvupóst"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Hlutir settir inn"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Viðhengd atriði"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d viðhengi"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Áætluð\nskilaboð"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Tímalengd\n(%d sek.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Nota aðr. tengil.uppl."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Í þessum skilaboðum er viðhengi ekki sýnt"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Í þessum skilaboðum eru viðhengin ekki sýnd"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Vista allt"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Drög"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Skilaboð verða endurheimt"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Hætt verður við áætluð skilaboð"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Afrita skilab.texta"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Sjá uppl. um skilab."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Læst skilaboð"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Skilaboðahólf"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Læsa"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Afrita í síma"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Skilaboð afrituð af SIM-korti"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Hætta við skilaboð"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Viðhengi"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Sendi skilaboð sem mistókst að senda"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Hámarksfjölda stafa hefur verið náð"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Vistað í Skránum mínum"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Upplýsingar um skilaboð"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Endurbyggja"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Engin viðhengi"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Afritað á klemmuspjald"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Afrita á SIM-kort"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Mistókst að afrita"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Slökkt á vörn"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Kveikt á vörn"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Vista viðhengi"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Endurh."
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Varin skilaboð"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Hætt við..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Nákvæmlega eins og"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Byrja á"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Láta fylgja"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Finna eins"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Eyða númeri"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s útilokaðir"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Eyða þessum vörðu skilaboðum?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Taka úr lás"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Verið er að fjarlægja..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Endurbyggt"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Varin skilaboð"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Vörn fjarlægð"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Loka á %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s opnaðir"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Áætlaður tími ætti að vera í framtíðinni"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Takmarkað efnissnið. Hengja það samt við?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Taka varin skilaboð með"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S-skipulag"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Innsláttaraðferð"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM stafróf"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Sjálfvirkt"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Tilgreina númer"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Afritað"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Bæta við orði"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Móttökukostir"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Einhverjir viðtakendur eru með ógilt númer. Ógildum viðtakendum var ekki bætt við. Ógildir viðtakendur: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Viðtakandi"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Færðu inn orð"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Breyta orði"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lesa"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Bæta við númeri"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Breyta númeri"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Eyða orðum"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Skilaboð frá tengiliðunum þínum verða ekki útilokuð jafnvel þótt þau innihaldi orð á bannlista"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Númer á bannlista"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Orð á bannlista"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Um neyðarskilaboð"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ekki er hægt að senda skilaboð þegar flugstilling er virk. Slökktu á flugstillingu og reyndu aftur"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Slökkva á flugstill."
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Boð send"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Mistókst að senda skilaboð"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Eyða númerum"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Í neyðartilvikum skaltu ýta fjórum sinnum á takkann til að lækka hljóðstyrk þegar síminn er læstur. Við það eru sjálfkrafa send neyðarskilaboð valinna viðtakenda. Ef viðtakandi hringir í þig svarar síminn símtalinu sjálfkrafa án þess að hringitónn heyrist. Þegar neyðarskilaboð hafa verið send virka aðrar aðgerðir símans ekki fyrr en takkalásinn hefur verið tekinn af"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Notandinn er skráður sem viðtakandi SOS-boða"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Senda nú"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Varaafrit"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Flytja út á SD-kort"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Ég"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Stendur yfir..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Tilkynning um margmiðlunarskilaboð"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Staða"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "„Rennur út: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Sumir stafir gætu glatast.\nÁ að halda áfram?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Slá inn texta"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Textasniðmát"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Setja inn lyndistákn"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Óstudd tegund miðils"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Geri flugstillingu óvirka..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d samtöl"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d skilaboð"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Engin sniðmát á lista"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Ítarleg leit"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Sniðmát"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Hljóð"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Blöðrur"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Bakgrunnsstíll"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Valkostir skilaboða"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Tímalengdin þarf að vera minnst %d sekúndur"
+
diff --git a/main/po/it_IT.po b/main/po/it_IT.po
new file mode 100755 (executable)
index 0000000..e9b4777
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Rapporto consegna"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Conferma lettura"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Chiedi conferma consegna"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Conferma lettura"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Elenco elementi"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Sposta nel telefono"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Modalità creazione"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centro servizi"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Sposta in SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Messaggio programmato"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Messaggi spam"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Ricezione tipo di avviso"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Ripeti"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Registra video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Registra audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Messaggi CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Messaggi scheda SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Visualizza contatto"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Impossibile aprire"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Recupera"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Impossibile spostare"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Raggiunto numero massimo di pagine"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Modalità limitata. Impossibile inserire contenuto limitato"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Consegnato"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Scaduta"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Recupero..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Inserire una scheda SIM per inviare messaggi. Il messaggio verrà salvato in In uscita"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Inserire numero canale"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 messaggio selezionato"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d messaggi selezionati"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Anteprima"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nome file già in uso"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Nessun messaggio"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Aggiungi a contatto"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Annulla"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Impossibile inviare messaggio"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Scatta foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nessun indirizzo"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Elenco elementi allegati"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Download automatico"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Messaggi broadcast"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centro %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Ora personalizzata"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Invio non riuscito"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Da"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Elenco elementi inseriti"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Messaggio consegnato"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Messaggio recuperato"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Libera"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Avviso"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Inviato"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Messaggi Push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Ricevuto"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuale"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Rifiuta"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opzioni di ricezione"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Con restrizioni"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Bassa"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgente"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Priorità"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Invia conferma lettura"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Durata pagina"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Messaggi SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Dimensione totale"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Contenuto DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 secondi"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 secondi"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 secondi"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Propria rete"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installa"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Rete roaming"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Visualizza dettagli contatto"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS inviato"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Impossibile recuperare messaggio"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Invio MMS non eseguito"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durata per slide"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Usa il tasto del volume"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Senza nome"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Dimensioni messaggio"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Richiesto"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Non richiesto"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Inoltra"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Non letto"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinatario duplicato"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Raggiunto numero massimo di destinatari (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "A"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Registra suono"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Registra video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Cambiato in MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Cambiato in SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d allegati disponibili. Selezionare fino a %d allegati"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Impossibile allegare tutti i file. Capacità massima allegati %d KB. Continuare?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Dimensioni carattere"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Nessun oggetto"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Seleziona indirizzo"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Connessione in corso(%s). Continuare?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Invia di nuovo"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinatario non valido"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinatari non validi"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Impossibile riprodurre durante una chiamata"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Impossibile salvare in modalità Archiviazione di massa"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Eliminare messaggio corrente?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Selezionato"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Eliminare?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Impossibile allegare. Dimensioni massime file %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Con restrizioni"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Impossibile inoltrare.\nFile bloccato per l'inoltro"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "I criteri di protezione limitano la composizione degli SMS"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Aggiunta. Attendere..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Indirizzo centro servizi"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Grande"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Piccolo"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Minuscolo"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Impossibile inviare messaggio programmato. Impostare un orario diverso"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Data e ora"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nessun destinatario aggiunto. Immettere i destinatari"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opzioni di invio"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normale"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Invio messaggio SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinatari"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Messaggio"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Una volta"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 volte"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 volte"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Sono in una situazione di emergenza. Ho bisogno di aiuto."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM non inserita"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Scatta foto"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "La durata deve essere superiore a %d secondi"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Impossibile aggiungere contenuto"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Seleziona destinatario"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Durata (%s sec)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Immagine troppo grande. Compressione..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Messaggio salvato come bozza"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Altri"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Bozza"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Invia e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Elementi inseriti"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Elementi allegati"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d allegati"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Messaggio\nprogrammato"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Durata\n(%d sec)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Usa altre info contatto"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Il messaggio contiene un file allegato non visualizzato"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Questo messaggio include file allegati non visualizzati"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Salva tutti"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Bozze messaggi"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Il messaggio verrà ripristinato"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Il messaggio programmato verrà annullato"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copia testo messaggio"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Visual. dettagli msg"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Messaggi bloccati"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Cartelle messaggi"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blocca"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copia nel telefono"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Messaggio copiato dalla scheda SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Annulla messaggio"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Allegati"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Invio messaggio non riuscito"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Raggiunto numero massimo di caratteri"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Salvato in Archivio"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Dettagli del messaggio"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Ripristino..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Nessun allegato"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Elemento copiato negli appunti"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copia nella SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Impossibile copiare"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Disattiva protezione"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Attiva protezione"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Salva allegato"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Riprist."
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Messaggi protetti"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Annullamento..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Esattamente uguale a"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Inizia con"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Contiene"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Criteri corrispondenza"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Elimina numero"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloccato"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Eliminare questo messaggio protetto?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Sblocca"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Rimozione..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Ripristinato"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Messaggi protetti"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protezione rimossa"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Bloccare %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s sbloccati"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "L'ora programmata deve essere impostata nel futuro"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Tipo di contenuto con restrizioni. Allegare comunque?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Includi messaggio protetto"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "Calendario"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Modalità scrittura"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabeto GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatica"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Inserisci numero"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicato"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Aggiungi parola"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opzioni di ricezione"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Alcuni destinatari dispongono di un numero non valido. I destinatari non validi non sono stati aggiunti. Destinatari non validi: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinatario"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Inserisci parola"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Modifica parola"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Letto"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Aggiungi numero"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Modifica numero"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Elimina parole"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "I messaggi ricevuti dai contatti non verranno bloccati anche se contengono parole bloccate"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Numeri bloccati"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Parole bloccate"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Info su messaggi SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Impossibile inviare messaggi se la modalità offline è attivata. Disattivate la modalità offline e riprovate"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Disatt. modal. offline"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Messaggio inviato"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Errore invio messaggio"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Elimina numeri"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "In caso di emergenza, premere 4 volte il tasto di riduzione del volume mentre è attivo il blocco della tastiera. In questo modo, verrà inviato un messaggio SOS ai destinatari selezionati. Nel caso in cui questi richiamino, il telefono non squillerà e verrà attivata la risposta automatica. Dopo avere inviato il messaggio SOS, tutte le altre funzioni del telefono non sono disponibili finché non viene disattivato il blocco della tastiera"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Utente registrato come destinatario messaggio SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Invia ora"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Backup"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Esporta su scheda SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Me stesso"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "In corso..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notifica MMS"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Stato"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Scade: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Alcuni caratteri potrebbero andare persi.\nContinuare?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Aggiungi testo"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Modelli di testo"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Inserisci emoticon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Tipo di contenuto non supportato"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Disattivazione modalità Offline in corso..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversazioni"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d messaggi"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Nessun modello in elenco"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Ricerca avanzata"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Modello"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Stile vignetta"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Stile sfondo"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opzioni messaggio"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "La durata deve essere di almeno %d secondi"
+
diff --git a/main/po/ja_JP.po b/main/po/ja_JP.po
new file mode 100755 (executable)
index 0000000..98fe077
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "配信確認"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "レポートを読む"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "配信レポートを要求"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "既読レポートを要求"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "アイテム​リスト"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "本体に移動"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "作成モード"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "サービスセンター"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIMに移動"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "予約メッセージ"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "迷惑メッセージ"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "受信通知の種類"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "繰り返し"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "動画撮影"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "録音"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CBメッセージ"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIMカード​メッセージ"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "連絡先を表示"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "開らくことができません。"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "受信"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "移動できません。"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "最大ページ数になりました"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "制限​モード​です。​制限​された​内容​を​挿入​できません"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "配信完了"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "期限切れ"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "取得中..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "SIMカードを挿入してメッセージを送信します。メッセージは送信BOXに保存されます"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "チャンネル番号を入力"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1件​の​メッセージ​を​選択​しました"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d件のメッセージを選択しました。"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "プレビュー"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "ファイル名が既に登録されています。"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "メッセージがありません。"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "電話帳に追加"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "破棄"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "メッセージを送信できません。"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "カメラを起動"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "アドレスがありません。"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "添付​リスト"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "自動ダウンロード"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "放送メッセージ"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "センター%d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "時間設定"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "送信に失敗しました。"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "送信元"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "挿入​アイテム​リスト"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "メッセージ​が​配信​されました"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "メッセージ​を​受信​しました"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "フリー"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "警告"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "送信完了"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "プッシュメッセージ"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "受信完了"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "手動"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "拒否"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "受信オプション"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "制限"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "低"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "中"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "高"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "優先度"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "既読レポートを送信"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "ページ間隔"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOSメッセージ"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "合計​の​サイズ"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRMコンテンツ"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10秒"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2秒"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5秒"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "ホームネットワーク"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "インストール"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "外部ネットワーク"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "連絡先​詳細​を​表示"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "マルチメディア​メッセージ​が​送信​され​ました"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "メッセージ​の​受信​に​失敗​しました"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "マルチ​メディア​メッセージ​の​送信​に​失敗​しました"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "スライドの再生時間"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "音量キーを使用"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "無題"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "メッセージサイズ"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "要求しました。"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "不要"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "転送"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "未読"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "宛先が重複しています。"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "宛先が最大件数(%d)に達しました。"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "宛先"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "ボイスレコーダー起動"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "録画"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "MMSに変更しました"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "SMS​に​変更​しました"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "あと<n>件 追加できます。最大%d件まで添付可能です"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "全てのファイルを添付できません。 最大添付サイズは%dKBです。 続行しますか?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "文字サイズ"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "マルチメディアメッセージ"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "件名なし"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "アドレスを選択"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "オンラインしようとしています(%s)。続行しますか?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "再送信"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "宛先が無効です"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "無効な宛先"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "通話中は再生できません。"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "マスストレージモード中に保存することはできません。"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "現在のメッセージを破棄しますか?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "選択しました。"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "削除しますか?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "添付できません。ファイルの最大サイズは%dKBです。"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "制限"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "転送できません。\nファイル転送はロックされています"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "SMSの作成は、セキュリティポリシーによって制限されています。"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "追加中​です。​しばらく​お待ち​ください..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "サービス​センター​アドレス"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "大"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "標準"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "小"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "最小"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "予約メッセージを送信できません。他の時刻を設定してください。"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "日付と時刻"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "マルチメディアメッセージ"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "宛先は追加されませんでした。宛先を入力してください。"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "送信オプション"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "標準"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOSの送信中"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "宛先"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "メッセージ"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "1回のみ"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3回"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5回"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "緊急です。助けてください"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM​が​挿入​されて​いません"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "カメラを起動"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "表示時間は%d秒以上である必要があります。"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "コンテンツ​を​追加​できません"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "受信者を選択"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "所要時間 (%s秒)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "画像が大きすぎます。 圧縮中..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "メッセージは下書きに保存されました。"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "その他"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "下書き"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Eメール送信"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "挿入アイテム"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "添付アイテム"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d件の添付ファイル"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "送信予定\nメッセージ"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "期間\n(%d秒)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "他の連絡先情報を使用"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "このメッセージには非表示の添付ファイルが含まれています。"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "このメッセージには非表示の添付ファイルが含まれています。"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "全て保存"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "下書きメッセージ"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "メッセージを復元します。"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "送信予定メッセージをキャンセルします。"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "メッセージをコピー"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "メッセージの詳細を表示"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "保護メッセージ"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "メッセージ​ボックス"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "ブロック"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "本体にコピー"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "メッセージをSIMカードからコピーしました。"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "メッセージをキャンセル"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "添付"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "失敗したメッセージの送信中"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "最大文字数に達しました。"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "マイファイルに保存されました。"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "メッセージの詳細"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "復元中..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "添付ファイルがありません。"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "クリップボードにコピーしました。"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "SIMにコピー"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "コピーできません。"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "保護OFF"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "保護ON"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "添付を保存"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "回復"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "保護されたメッセージ"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "キャンセル中..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "完全一致"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "前方一致"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "内容"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "振り分けルール"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "番号を削除"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%sをブロックしました。"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "保護されたメッセージを削除しますか?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "ブロック解除"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "削除中..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "復元しました。"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "保護されたメッセージ"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "保護を解除しました。"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%sをブロックしますか?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%sをブロック解除しました。"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "予定時刻は未来の時刻で設定してください"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "制限されたコンテンツタイプです。添付しますか?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "保護メッセージも含める"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "Sノート"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "Sプランナー"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "入力モード"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSMアルファベット"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "自動"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "番号を入力"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "重複しています。"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "単語追加"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "受信オプション"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "一部の宛先に無効な番号が含まれています。無効な宛先は追加されませんでした。無効な宛先:%s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "宛先"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "単語​を​入力​して​ください"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "単語を編集"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "既読"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "番号を追加"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "番号を編集"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "用語を削除"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "自分自身の連絡先から受信したメッセージは、ブロック対象用語が含まれていてもブロックされません。"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "ブロックした番号"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "ブロックした用語"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOSメッセージについて"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "機内モードのときは、メッセージを送信できません。機内モードを無効にし、再度お試しください。"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "機内モードを無効にする"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "メッセージを送信しました。"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "メッセージの送信に失敗しました。"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "番号を削除"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "キーロックが有効な場合、緊急時に音量ダウンキーを4回押してください。選択しておいた受信者にSOSメッセージが送信されます。受信者からコールバックがあった場合、端末は鳴らずに自動応答します。SOSメッセージ送信後は、キーロックが無効になるまで、端末の他の全ての機能が利用できないままになります。"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "SOS​メッセージ​の​宛先​として​登録​され​ます。"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "すぐに送信"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "バックアップ"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "外部SDカードにエクスポート"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "自分"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "進行中..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "MMS通知"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "ステータス"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "有効期限: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "部分的に内容が失われることがあります。続行しますか?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "本文を入力"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "定型文"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "顔文字を挿入"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "未対応のメディアです。"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "機内モードを無効にします..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d件のスレッド"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d件のメッセージ"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "リストにテンプレートがありません。"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "詳細検索"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "テンプレート"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "オーディオ"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "吹き出し"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "背景スタイル"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "メッセージオプション"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "継続時間は%d秒以上である必要があります。"
+
diff --git a/main/po/ka.po b/main/po/ka.po
new file mode 100755 (executable)
index 0000000..8b9bb95
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "მიტანის რეპორტი"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "წაკითხვის რეპორტი"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "მისვლის შეტყობინების მოთხოვნა"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "წაკითხვის რეპორტის მოთხოვნა"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "ელემენტების სია"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "ტელეფონში გადატანა"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "შექმნის რეჟიმი"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "სერვის-ცენტრი"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "გადადი SIM-ზე"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "დაგეგმილი წერილი"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "სპამი წერილები"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "მიღების სიგნალის სახე"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "გამეორება"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "ვიდეოს გადაღება"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "აუდიო ფაილის ჩაწერა"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB წერილები"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "წერილები SIM ბარათზე"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "კონტაქტის დათვალიერება"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "ვერ იხსნება"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "ამოღება"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "ვერ გადაადგილდება"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "მიღწეულია გვერდების მაქსიმალური რაოდენობა"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "შეზღუდული რეჟიმი. ვერ ჩასვამთ შეზღუდულ შინაარსს"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "მიწოდებულია"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "ვადა გაუვიდა"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "ამოღება..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "გთხოვთ ჩადეთ SIM ბარათი რომ გააგზავნოთ შეტყობინება. შეტყობინება შეინახება გამავალში"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "ჩაწერეთ არხის ნომერი"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "არჩეულია 1 წერილი"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "არჩეულია %d წერილი"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "გადახედვა"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "ფაილის სახელი უკვე არსებობს"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "წერილები არ არის"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "კონტაქტზე დამატება"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "წაშლა"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "წერილის გაგზავნა შეუძლებელია"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "სურათის გადაღება"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "მისამართი არ არის"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "მიმაგრებულთა სია"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "ავტომატური ჩამოტვირთვა"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "შეტყობინებების გადაცემა"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "ცენტრი %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "შერჩეული დრო"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "ვერ გაიგზავნა"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "საიდან"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "ჩასმულ ელემენტთა სია"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "შეტყობინ. მივიდა"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "შეტყობინ. ამოღებულია"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "თავისუფალია"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "გაფრთხილება"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "გაგზავნილია"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "წერილების ლოდინი"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "მიღებულია"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "მექანიკური"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "უარყოფა"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "მიღების ოფციები"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "შეზღუდულია"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "დაბალი"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "ნორმალური"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "სასწრაფო"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "პრიორიტეტი"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "წაკითხვის შესახებ შეტყობინების გაგზავნა"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "გვერდის ხანგრძლივობა"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS წერილები"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "ტექსტური შეტყობინებები"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "საერთო ზომა"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM შინაარსი"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 წამი"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 წამი"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 წამი"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "შიდა ქსელი"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "დაინსტალირება"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "უცხოური ქსელი"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "კონტაქტის დეტალების ნახვა"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "მულტიმედიური წერილი გაიგზავნა"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "წერილის მიღება ვერ შესრულდა"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "მულტიმედიური წერილი ვერ გაიგზავნა"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "სლაიდის ხანგრძლივობაა"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "გამოიყენეთ ხმის ღილაკი"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "ტექსტური შეტყობინება"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "უსათაურო"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "წერილის ზომა"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "მოთხოვნილია"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "არ არის მოთხოვნილი"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "გადაგზ."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "წაუკითხავი"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "გამეორებული მიმღები"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "მიღწეულია მიმღებთა მაქსიმალური რაოდენობა (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "ვის"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "ხმის ჩაწერა"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "ვიდეოს ჩაწერა"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "შეიცვალა და გახდა MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "შეიცვალა და გახდა SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "შესაძლებელია %d დანართი. აირჩიეთ მაქსიმუმ %d დანართი"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "ყველა ფაილს ვერ მიამაგრებთ. მიმაგრებული ფაილების მაქსიმალური ზომაა %d კბ. განაგრძობთ?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "შრიფტის ზომა"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "მულტიმედიური შეტყობინება"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "არ არის თემა"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "აირჩიეთ მისამართი"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "ონლაინზე გადასვლას აპირებთ(%s). განვაგრძო?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "თავიდან გაგზავნა"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "მიმღები არასწორია"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "მიმღებები არასწორია"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "ვერ დაუკრავთ ზარის დროს"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "შენახვა შეუძლებელია მასიური მეხსიერების რეჟიმში"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "გადააგდებთ მიმდინარე წერილს?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "შერჩეულია"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "წაიშალოს?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "ვერ მიამაგრებთ. ფაილების მაქსიმალური ზომაა %d კბ"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "შეზღუდულია"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "ვერ გადამისამართდება.\nფაილის გადამისამართება დაბლოკილია"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "უსაფრთხოების პოლიტიკა ზღუდავს ტექსტური წერილების შედგენას"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "ემატება. გთხოვთ დაელოდოთ..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "სერვისის ცენტრის მისამართი"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "დიდი"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "ნორმალური"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "პატარა"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "დაგეგმილი წერილის გაგზავნა შეუძლებელია. დააყენეთ სხვა დრო"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "თარიღი და დრო"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "მულტიმედიური შეტყობინებები"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "მიმღებები ვერ დაემატა. ჩაწერეთ მიმღებები"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "გაგზავნის ოფციები"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "ნორმალური"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS-ის გაგზავნა"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "მიმღები"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "შეტყობინება"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "ერთი სიგნალი"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3-ჯერ"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5-ჯერ"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "საგანგებო მდგომარეობაში ვარ. გთხოვთ, დამეხმარეთ"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM არ დევს"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "სურათის გადაღება"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "ხანგრძლივობა უნდა იყოს %d წამზე მეტი"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "შინაარსის დამატება შეუძლებელია"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "აირჩიეთ მიმღები"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "ხანგრძლივობა (%s წამი)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "სურათი ძალზე დიდია. მცირდება..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "წერილი შენახულია მონახაზებში"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "სხვა"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "მონახაზი"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "ელ. წერილის გაგზავნა"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "ჩასმული ელემენტები"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "მიმაგრებული ელემენტები"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d მიმაგრებული ფაილი"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "დაგეგმილი\nწერილი"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "ხანგრძლივობა\n(%d წმ)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "შეცვალეთ საკონტ. ინფო"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "წერილზე მიმაგრებულია ფაილი, რომელიც არ ჩანს"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "ეს წერილი შეიცავს მიმაგრებულ ფაილებს, რომლებიც არ ჩანს"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "ყველაფრის შენახვა"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "წერილის მონახაზები"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "წერილები აღდგება"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "დაგეგმილი წერილი გაუქმდება"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "წერილის ტექსტის ასლი"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "წერილის დეტალები"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "დაბლოკილი წერილები"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "წერილების ყუთები"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "დაბლოკვა"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "ტელეფონში კოპირება"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "წერილის დაკოპირდა SIM ბარათიდან"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "წერილის გაუქმება"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "დანართები"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "იგზავნება გაუგზავნელი წერილები"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "მიღწეულია სიმბოლოების მაქსიმალური რაოდენობა"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "შენახულია ჩემს ფაილებში"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "წერილის დეტალები"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "აღდგენა..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "მიბმული ფაილების გარეშე"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "ასლი შენახულია ბუფერში"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "კოპირება SIM-ზე"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "ვერ დაკოპირდება"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "დაცვა გამორთულია"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "დაცვა ჩართულია"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "მიმაგრებული ფაილის შენახვა"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "აღდგენა"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "დაცული წერილები"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "გაუქმება..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "ზუსტად იგივე, რაც"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "დასაწყისი"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "დამატება"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "შედარების კრიტერიუმები"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "ნომრის წაშლა"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s დაბლოკილია"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "წაშლით ამ დაცულ წერილს?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "განბლოკვა"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "იშლება..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "აღდგენილია"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "დაცული წერილები"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "დაცვა მოცილდა"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "დაიბლოკოს %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s განბლოკილია"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "დაგეგმილი დრო დანიშნული უნდა იყოს მომავალში"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "შინაარსის ტიპი შეზღუდულია. მაინც მიამაგრებთ?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "დაერთოს დაცული წერილი"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "შემომავლის რეჟიმი"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM ანბანი"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "უნიკოდი"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "ავტომატურად"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "ჩაწერეთ ნომერი"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "დუბლირებულია"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "სიტყვის დამატება"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "მიღების ოფციები"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "ზოგიერთი მიმღების ნომერი არასწორია. არასწორი მიმღებები არ არის დამატებული. არასწორი მიმღებია: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "მიმღები"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "ჩაწერეთ სიტყვა"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "სიტყვის შესწორება"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "წაკითხვა"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "ნომრის დამატება"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "ნომრის რედაქტირება"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "სიტყვების წაშლა"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "თვენი კონტაქტებისგან მიღებული წერილები არ დაიბლოკება მაშინაც კი, როდესაც ისინი შეიცავს დალოკილ სიტყვებს"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "დაბლოკილი ნომრები"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "დაბლოკილი სიტყვები"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS შეტყობინებების შესახებ"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "წერილების გაგზავნა შეუძლებელია ფრენის რეჟიმში. გამორთეთ ფრენის რეჟიმი და ისევ ცადეთ"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "ფრენის რეჟიმის გამრ."
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "შეტყობინება გაგზავნილია"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "წერილი ვერ გაიგზავნა"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "ნომრების წაშლა"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "საგანგებო სიტუაციაში, როდესაც კლავიატურის დაბლოკვა აქტიურია, ზედიზედ 4-ჯერ დააჭირეთ ხმის დაწევის ღილაკს. ამითი გაიგზავნება SOS წერილები თქვენს მიერ არჩეულ აბონენტებთან. თუ ისინი გადმოგირეკავენ, ტელეფონი არ დარეკავს და ზარი ავტომატურად მიიღება. SOS წერილების გაგზავნის შემდეგ ტელეფონის ყველა ფუნქცია მიუწვდომელი დარჩება, სანამ არ გამოირთვება კლავიატურის დაბლოკვა"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "თქვენ დარეგისტრირებული ხართ, როგორც SOS წერილის მიმღები."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "გაგზავნეთ"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "რეზერვი"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "SD ბარათზე გადატანა"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "მე"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "მიმდინარეობს..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "მულტიმედიური წერილის შეტყობინება"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "სტატუსი"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "ვადა: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "ზოგიერთი სიმბოლო შეიძლება დაიკარგოს.\nგანაგრძობთ?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "ტექსტის დამატება"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "ტექსტის შაბლონები"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "სიცილაკის ჩასმა"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "მედიის ტიპი გაუთვალისწინებელია"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "ითიშება ფრენის რეჟიმი..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d საუბარი"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d წერილი"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "შაბლონები არ არის სიაში"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "გაფართოებული ძიება"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "ნიმუშები"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "აუდიო"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "ბუშტის სტილი"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "ფონის სტილი"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "წერილის პარამეტრები"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "ხანგრძლივობა უნდა იყოს მინიმუმ %d წამი"
+
diff --git a/main/po/kk.po b/main/po/kk.po
new file mode 100755 (executable)
index 0000000..40534c5
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Жеткізу жөніндегі есеп"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Оқылғандығы туралы есеп"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Хабарлама оқылғанда хабарлауды талап ету"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Оқылған туралы есеп беру"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Элементтер тізімі"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Телефонға ауыстыру"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Құру режимі"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Қызмет орталығы"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM-картаға ауыстыру"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Жоспарланған хабар"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Спам хабарлар"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Ескерту алу"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Қайталау"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Видео бөгеліс"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Аудионы жазу"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB хабарлары"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM картасындағы хабарлар"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Контактты көру"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ашуға болмайды"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Алу"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Жылжытуға мүмкіндік жоқ"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Беттердің шектеулі санына жетті"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Шектелген режим. Шектелген мазмұнды кірістіру мүмкін емес"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Жеткізілді"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Мерзімі өтіп кеткен"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Алып тастауда..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Хабарды жіберу үшін SIM картасын енгізіңіз. Хабар Жазбаларда сақталады"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Арна нөмірін енгізу"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 хабар таңдалды"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d хабар таңдалды"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Алдын-ала көру"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Бұл файл атауы бар"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Хабарлама жоқ"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Контактілерге қосу"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Тастау"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Хабар жіберу мүмкін емес"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Фотоға түсіру"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Мекен-жай жоқ"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Тіркелген элементтер тізімі"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Авто жазу"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Желі  хабарламасы"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "%d-орталық"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Белгіленген уақытта"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Жіберілген  үзіліп кеті"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Кімнен"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Кірістірілген элемент тізімі"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Хабар жеткізілді"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Хабар қайтарылды"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "тегін"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Ескерту"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Жіберілген"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "Б"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KБ"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push-хабарлама"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Қабылданған"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Қолмен"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Шығару"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Қабылдау опциялары"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Шектелген"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Төмен"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Қалыпты"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Тез"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Ерекшелігі"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Оқу есебін жіберу"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Бет ұзындығы"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS хабарламалары"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Мәтінді хабарламалар"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Жалпы өлшемі"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM мазмұны"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 секунд"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 секунд"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 секунд"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Үй желісі"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Орнату"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Шеткі желі"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Контакт туралы деректерді қарау"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Мультимедиялық хабар жіберілді"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Хабарды шығару сәтсіз болды"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Мультимедиа хабарын жіберу сәтсіз аяқталды"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "слайдтың ұзақтығы"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Дыбыс қат. пер. пайдалану"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Мәтінді хабарлама"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Аты жоқ"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Хабарлама өлшемі"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Сұралды"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Сұралмаған"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Жіб."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Оқылмаған"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Қайталанатын алушы"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Ең көп алушылар санына (%d) жетті"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Кімге"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Дыбысты жазу"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Бейнежазу"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "MMS-ге өзгертілді"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "SMS хабарына өзгертілді"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d тіркеме қол жетімді. %d тіркемеге дейін таңдаңыз"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Барлық файлды тіркеу мүмкін емес. Ең көп тіркеу сыйымдылығы - %d КБ. Жалғастыру керек пе?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Шрифт өлшемі"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Мультимедиалық хабарлама"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Нысаны жоқ"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Мекен-жайды таңдау"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Сіз онлайн режиміне өтейін деп тұрсыз(%s). Жалғастыру керек пе?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Қайта жіберу"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Алушы қате"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Алушылар қате"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Сөйлесу барысында ойнатуға мүмкіндік жоқ"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Жалпы сақтау режимінде сақтау мүмкін емес"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Ағымдағы хабарды алып тастау керек пе?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Таңдалған"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Өшіресіз бе?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Тіркеу мүмкін емес. Ең үлкен файлдар өлшемі – %d КБ"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Шектелген"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Жіберілмей жатыр\nқайта жіберу бұғатталып қалды"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Қауіпсіздік саясаты мәтіндік хабар жазуды шектейді"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Қосылуда. Күте тұрыңыз..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "SMSC адресі"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Үлкен"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Қалыпты"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Ұсақ"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Жоспарланған хабарды жіберу мүмкін емес. Басқа уақытты орнатыңыз"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Күні және уақыты"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Мультимедиа хабарлары"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Ешқандай алушы қосылмады. Алушылар енгізіңіз"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Жіберу опциялары"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Қалыпты"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS хабарламалары жіберілуде"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Қабылдаушылар"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Хабарлама"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Бір рет"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 рет"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 рет"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Мен қиын жағдайдамын. Маған көмек керек."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM картасы салынған жоқ"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Суретке түсіру"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Ұзақтығы %d секундтан асуы керек"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Мазмұн қосуға болмайды"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Алушы таңдау"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Ұзақтығы (%s сек)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Сурет тым үлкен. Қысуда..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Хабар жоба күйінде сақталған"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Басқа"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Жоба"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Email жіберу"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Енгізілген элементтер"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Қосылған хабарлар"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d тіркеме"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Жоспарланған\nхабарлар"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Ұзақтығы\n(%d сек)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Басқа конт. ақп. пайд."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Бұл хабарлама енгізу қосымша көрсетсыз файлдар"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Бұл хабарда көрсетілмеген тіркелген файлдар бар"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Барлығын сақтау"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Жобалық хабарлар"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Хабар қалпына келтіріледі"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Белгіленген хабардан бас тартылады"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Хабар мәтінін көшіру"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Хабар мәлімет. көру"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Бұғатталған хабарлар"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Хабарламалар қалталары"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Құлыптау"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Телефонға көшіру"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Хабар SIM картасынан көшірілді"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Хабардан бас тарту"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Қосымшалар"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Хабар жіберілмеді"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Таңбалардың ен көп саны артты"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "\"Менің файлдарым\" ішінде сақталды"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Хабар мәліметтері"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Қалпына келтіру..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Қосымшалар жоқ"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Буферге көшірілді"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "SIM-картаға көшіру"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Көшіру мүмкін емес"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Қорғаныш өшірілген"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Қорғаныс қосылды"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Қосымшаны сақтау"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Қ. кел-у"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Қорғалған хабарламалар"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Өзгертілуде..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Дәл сондай"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Бастау"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Қосу"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Сәйкес келу мөлшерлері"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Нөмірді жою"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s құлыпталды"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Бұл қорғалған хабарды жою керек пе?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Құлпын ашу"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Шығаруда..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Қалпына келтірілді"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Қорғалған хабарламалар"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Қорғау жойылды"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s тыйым салу керек пе?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s құлыптан ашылды"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Жоспарланған уақыт келер уақытта белгіленуі керек"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Шектелген мазмұн түрі. Бәрібір тіркеу керек пе?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Қорғалған хабарды қосу"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Енгізу тәртібі"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM алфавиті"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Юникод"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Автоматты түрде"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Нөмірін жазыңыз"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Дубликатталған"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Сөз қосу"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Қабылдау опциялары"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Кейбір алушылардың нөмірі қате. Қате алушылар қосылмады. Қате алушылар: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Қабылдаушы"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Сөз енгізіңіз"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Сөзді өзгерту"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Оқу"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Номір қосу"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Нөмірді өзгерту"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Сөздерді жою"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Контактілерден алынған хабарларда тыйым салынған сөздер болса да, оларға тыйым салынбайды"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Тыйым салынған сандар"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Тыйым салынған сөздер"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS хабарлары туралы"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ұшу режимінде хабарлар жіберу мүмкін емес. Ұшу режимін өшіріп, әрекетті қайталаңыз"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Ұшу режимін өшіру"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Хабар жіберілді"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Жіберілген хабарлама үзіліп кетті"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Нөмірлерді жою"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Төтенше жағдайда пернелерді құлыптау қосулы кезде дыбыс қаттылығын азайту пернесін 4 рет басыңыз. Бұл кезде SOS хабары таңдалған алушыларға жіберіледі. Егер олар сізге қайта қоңырау шалса, телефон шырылдамайды, бірақ олардың қоңырауларына автоматты түрде жауап беріледі. SOS хабарлары жіберілгеннен кейін пернелерді құлыптау өшірілмесе, телефондағы басқа барлық функциялар қол жеткізгісіз болады"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "SOS хабарламасын қабылдаушы ретінде тіркелдіңіз."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Қаз. жіб."
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Сақтық көшірме"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "SD картасына экспорттау"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Менен"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Процесс үстінде..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Мультимедиалық хабар туралы мәлімдеу"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Статус"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Мерзімі бітеді: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Кейбір қаріптер жоғалуы мүмкін. Жалғастырасыз ба?  Кейбір қаріптер жоғалуы мүмкін. Жалғастырасыз ба?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Тіркелгі толып кетген. ShoZu-мен хабарласыңыз."
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Мәтін үлгілері"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Сезім белгіреін енгізу"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Қолданылмайтын медиа түрі"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Ұшу режимі өшірілуде..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d әңгімелесу"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d хабарлар"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Тізімде үлгілер жоқ"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Қосымша іздеу"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Үлгі"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Аудио"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Көпіршік стилі"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Фондық стиль"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Хабар опциялары"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Ұзақтығы кемінде %d секунд болуы керек"
+
diff --git a/main/po/ko_KR.po b/main/po/ko_KR.po
new file mode 100755 (executable)
index 0000000..2aa86d1
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "수신 확인"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "읽음 확인"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "수신 확인"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "읽음 확인"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "항목 목록"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "휴대폰으로 이동"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "첨부 제한 설정"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "서비스 센터"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM으로 이동"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "예약 전송"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "스팸 메시지"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "수신 알림 방법"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "반복"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "동영상 촬영"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "오디오 녹음"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "방송 메시지"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM 카드 메시지"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "연락처 보기"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "열 수 없습니다"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "본문 받기"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "이동시킬 수 없습니다"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "최대 페이지 수를 초과하였습니다"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "제한 모드입니다. 제한된 컨텐츠는 삽입할 수 없습니다"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "전송되었습니다"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "만료된 컨텐츠"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "가져오는 중..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "메시지를 전송하기 위해서는 사용 가능한 SIM 카드를 넣으세요. 전송되지 못한 메시지는 발신대기함에 저장됩니다"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "채널 번호를 입력하세요"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1개의 메시지가 선택되었습니다"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d개의 메시지가 선택되었습니다"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "미리보기"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "사용 중인 이름입니다"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "메시지가 없습니다"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "연락처에 추가"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "취소"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "메시지를 전송할 수 없습니다"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "사진 촬영"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "저장된 주소가 없습니다"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "첨부파일 목록"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "자동 다운로드"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "방송 메시지"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "센터%d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "사용자 설정 시간"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "전송하지 못하였습니다"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "발신"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "첨부파일 목록"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "메시지가 전달되었습니다"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "메시지를 수신하였습니다"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "사용 가능"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "경고"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "전송되었습니다"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "푸시 메시지"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "수신하였습니다"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "수동"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "거절"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "수신 옵션"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "제한"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "낮음"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "보통"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "긴급"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "중요도"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "읽음 확인 설정"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "페이지 표시 시간"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS메시지"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "문자 메시지"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "총 크기"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM 컨텐츠"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10초"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2초"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5초"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "홈 네트워크"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "설치"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "로밍 네트워크"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "연락처 상세정보 보기"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "전송되었습니다"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "메시지를 가져오지 못하였습니다"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "MMS를 전송하지 못하였습니다"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "슬라이드 재생 시간"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "음량 버튼 사용"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "문자 메시지"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "제목 없음"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "최대 메시지 크기"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "요청되었습니다"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "요청되지 않음"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "전달"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "읽지 않음"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "수신인이 중복 입력되었습니다"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "추가할 수 있는 수신인(%d명)을 초과하였습니다"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "수신인"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "음성 녹음"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "동영상 촬영"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "MMS로 전환되었습니다"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "문자 메시지로 변경되었습니다"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "첨부파일 %d개가 있습니다. %d개까지 선택할 수 있습니다"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "모든 파일을 첨부할 수 없습니다. 첨부할 수 있는 최대 파일 용량은 %dKB입니다. 계속할까요?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "글자 크기"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "제목이 없습니다"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "주소를 선택하세요"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "%s에 접속합니다. 계속할까요?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "재전송"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "수신인이 바르지 않습니다"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "수신인이 바르지 않습니다"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "통화 중에는 재생할 수 없습니다"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "대용량 저장소 모드를 실행 중일 때는 저장할 수 없습니다"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "현재 메시지를 삭제할까요?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "선택되었습니다"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "삭제할까요?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "첨부할 수 없습니다. 첨부할 수 있는 파일 크기는 %dKB까지 입니다"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "제한"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "전달할 수 없습니다.\n전달 잠금이 설정되어 있습니다"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "보안 정책에 따라 문자 메시지 작성이 제한됩니다"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "추가 중... 잠시만 기다리세요"
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "서비스 센터 주소"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "크게"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "보통"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "작게"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "아주 작게"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "예약 메시지를 전송할 수 없습니다. 다른 시간을 설정하세요"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "날짜 및 시간"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "추가된 수신인이 없습니다. 수신인을 입력하세요"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "전송 옵션"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "보통"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS메시지 보내기"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "수신인"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "메시지"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "한 번만"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3회"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5회"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "위급 상황입니다. 도와주세요"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM이 삽입되지 않았습니다"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "사진 촬영"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "표시 시간 값은 %d초보다 커야 합니다"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "첨부할 수 없습니다"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "수신인 선택"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "표시 시간(%s초)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "사진이 너무 큽니다. 압축 중..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "메시지가 임시 보관 되었습니다"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "기타"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "임시 보관"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "이메일 보내기"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "추가된 항목"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "첨부파일"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d개의 첨부파일"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "예약\n메시지"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "시간\n(%d초)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "다른 연락처 정보 사용"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "메시지에 숨겨진 첨부파일이 포함되어 있습니다"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "메시지에 숨겨진 첨부파일이 포함되어 있습니다"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "모두 저장"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "임시 메시지"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "메시지가 복원됩니다"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "예약 메시지가 취소됩니다"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "메시지 본문 복사"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "메시지 내용 보기"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "보호 메시지"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "메시지 보관함"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "차단"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "휴대폰으로 복사"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "SIM 카드에서 메시지가 복사되었습니다"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "예약 메시지 취소"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "첨부파일"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "메시지를 전송하지 못하였습니다"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "입력 가능한 최대 글자수를 초과하였습니다"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "내 파일에 저장되었습니다"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "메시지 상세정보"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "복구 중..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "첨부파일이 없습니다"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "클립보드에 복사되었습니다"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "SIM으로 복사"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "복사할 수 없습니다"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "보호 해제"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "보호 설정"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "첨부파일 저장"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "복원"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "보호된 메시지"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "취소 중..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "입력 내용과 일치"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "입력 번호로 시작"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "포함"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "적용 기준"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "번호 삭제"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s이(가) 차단되었습니다"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "보호된 메시지를 삭제할까요?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "차단 해제"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "삭제 중..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "복구되었습니다"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "보호된 메시지"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "보호가 해제되었습니다"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s을(를) 차단할까요?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s이(가) 차단 해제되었습니다"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "예약 시간은 현재 시간 이후로만 설정 가능합니다"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "제한된 컨텐츠 형식입니다. 그래도 첨부할까요?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "보호된 메시지를 포함합니다"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S노트"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S플래너"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "입력 모드"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM 알파벳"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "유니코드"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "자동"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "전화번호를 입력하세요"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "같은 번호가 있습니다"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "단어 추가"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "수신 옵션"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "일부 수신인의 번호가 바르지 않습니다. 바르지 않은 수신인은 추가되지 않았습니다. 바르지 않은 수신인: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "수신인"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "단어를 입력하세요"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "단어 편집"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "읽기"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "전화번호 추가"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "전화번호 편집"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "단어 삭제"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "연락처로부터 수신한 메시지에 차단된 단어가 포함되어 있어도 해당 메시지는 차단되지 않습니다"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "차단된 전화번호"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "차단된 단어"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS 메시지 정보"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "비행기 탑승 모드에서는 메시지를 전송할 수 없습니다. 비행기 탑승 모드를 해제한 후 다시 전송하세요"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "비행기 탑승 모드 해제"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "메시지가 전송되었습니다"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "메시지를 전송하지 못하였습니다"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "번호 삭제"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "위급한 상황일 때 버튼 잠금 상태에서 음량 하 버튼을 짧게 4회 누르면 지정된 번호로 SOS 메시지가 전송됩니다. 메시지 수신처에서 전화가 오면 벨소리가 울리지 않고 자동으로 통화가 연결됩니다. SOS 메시지가 발신되면 버튼 잠금을 해제할 때까지 휴대폰의 모든 기능을 사용할 수 없습니다"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "SOS 메시지 수신인으로 등록되었습니다"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "지금 전송"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "백업"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "SD 카드로 내보내기"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "나"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "진행 중..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "MMS 알림"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "상태"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "만료: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "일부 문자가 지워질 수 있습니다. 계속할까요?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "텍스트 추가"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "상용구"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "이모티콘 추가"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "지원되지 않는 미디어 형식입니다"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "비행기 탑승 모드 해제 중..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "대화 %d개"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "메시지 %d개"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "상용문구가 목록에 없습니다"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "고급 검색"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "상용구"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "오디오"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "말풍선 스타일"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "배경화면 스타일"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "메시지 옵션"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "재생 시간은 최소 %d초 이상이어야 합니다"
+
diff --git a/main/po/lt.po b/main/po/lt.po
new file mode 100755 (executable)
index 0000000..44f3b45
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Ataskaita apie pristatymą"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Perskaitymo patvirtinimas"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Prašyti pristatymo ataskaitos"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Prašyti perskaitymo patvirtinimo"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Elementų sąrašas"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Perkelti į telefoną"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Kūrimo režimas"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Paslaugų centras"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Perkelti į SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Suplanuota žinutė"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Brukalų žinutės"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Priėmimo signalo tipas"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Kartoti"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Filmuoti vaizdo įrašą"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Įrašyti garso įrašą"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Tinklo žinutės"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM kortelėje esančios žinutės"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Rodyti adresatą"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Nepavyko atidaryti"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Atnaujinti"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Negalima perkelti"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Pasiektas didžiausias puslapių skaičius"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Draudžiamas režimas. Neįmanoma įterpti draudžiamo turinio"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Pristatyta"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Galiojimas pasibaigęs"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Atsiunčiama..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Įdėkite SIM kortelę, kad galėtumėte siųsti pranešimus. Pranešimas bus išsaugotas Išsiųstuose"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Įveskite kanalo numerį"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Pasirinkta 1 žinutė"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Pasirinkta žinučių: %d"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Peržiūra"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Failas tokiu pavadinimu jau yra"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Žinučių nėra"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Įtraukti adresatą"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Panaikinti"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Negalima išsiųsti žinutės"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Fotografuoti"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nėra adreso"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Pridėtas elementų sąrašas"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automatinis atsisiuntimas"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Transliavimo žinutės"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centras %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Pasirinktu laiku"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Išsiųsti nepavyko"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Nuo"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Pridėtų elementų sąrašas"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Žinutė pristatyta"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Žinutė atnaujinta"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Laisva"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Perspėjimas"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Išsiųsta"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Naujienų žinutės"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Gauta"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Rankinis"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Atmesti"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Gavimo parinktys"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Apribota"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Nesvarbus"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Įprastas"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Skubu"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Pirmenybė"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Siųsti ataskaitą apie perskaitymą"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Puslapio rodymo trukmė"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS žinutės"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Teksto žinutės"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Bendras dydis"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM turinys"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekundžių"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekundės"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekundės"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Vietos tinklas"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Įdiegti"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Tarptinklinis ryšys"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Peržiūrėti adresato informaciją"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Daugialypė žinutė išsiųsta"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Žinutės gauti nepavyko"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "MMS žinutės išsiųsti nepavyko"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Skaidrės trukmė"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Naudoti garsumo mygtuką"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Teksto žinutė"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Be pavadinimo"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Žinutės dydis"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Užklausta"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Neprašoma"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Persiųs."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Neskaityta"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Du tokie pat gavėjai"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Pasiektas didžiausias gavėjų (%d) skaičius"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Kam"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Įrašyti garsą"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Įrašyti vaizdo įrašą"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Pakeista į MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Keisti į SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Yra %d priedai (-ų). Pasirinkti iki %d priedų"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Neįmanoma pridėti visų failų. Maksimalus priedo dydis: %d KB. Tęsti?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Šrifto dydis"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Daugialypė žinutė"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Nėra temos"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Pasirinkti adresą"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Prisijungsite prie tinklo(%s). Tęsti?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Persiųsti"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Klaidingas gavėjas"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Neteisingi gavėjai"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Negalima paleisti skambučio metu"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Neįmanoma išsaugoti, kol veikia duomenų saugyklos režimas"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Atmesti dabartinę žinutę?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Pasirinkta"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Ar trinti?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Neįmanoma pridėti. Maksimalus failų dydis yra %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Apribota"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Persiųsti nepavyko.\nFailo persiuntimo galimybė užrakinta"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Saugos strategija riboja teksto žinučių kūrimą"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Pridedama. Palaukite..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Paslaugų centro adresas"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Didelis"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Įprastas"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Mažas"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Neįmanoma išsiųsti suplanuotos žinutės. Nustatyti kitą laiką"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Data ir laikas"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Daugialypės žinutės"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nėra pridėtų gavėjų. Įveskite gavėjus"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Siuntimo parinktys"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Įprastas"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS siunčiama"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Gavėjai"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Žinutė"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Vieną kartą"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 kartus"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 kartus"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Man atsitiko bėda. Padėkite man."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM neįdėta"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Fotografuoti"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Trukmė turi būti ilgesnė nei %d sek."
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Įtraukti turinio nepavyko"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Pasirinkti gavėją"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Trukmė (%s sek.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Per didelė nuotrauka. Glaudinama..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Žinutė išsaugota kaip juodraštis"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Kiti"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Juodraš."
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Siųsti el. laišką"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Įterpti elementai"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Pridėti elementai"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "Priedai: %d"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Suplanuota\nžinutė"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Trukmė\n(%d sek.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Naud. kitą kontak.inf."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Šioje žinutėje yra pridėtas, tačiau nerodomas failas."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Šioje žinutėje yra keli pridėti, tačiau nerodomi failai."
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Išsaugoti viską"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Juodraštinės žinutės"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Žinutė bus atkurta"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Suplanuota žinutė bus atšaukta"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopij. žinut. tekstą"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Rodyti žin. inf."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Užrakintos žinutės"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Žinučių dėžutės"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokuoti"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopijuoti į telefoną"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Iš SIM kortelės nukopijuota žinutė"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Atšaukti žinutę"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Priedai"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Pranešimas Išsiųsti nepavyko"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Pasiektas didžiausias simbolių skaičius"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Išsaugota aplanke „Mano failai“"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Žinutės informacija"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Atkuriama..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Priedų nėra"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Nukopijuota į iškarpinę"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopijuoti į SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Negalima kopijuoti"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Išjungta apsauga"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Įjungta apsauga"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Išsaugoti priedą"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Atkurti"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Apsaugoti pranešimai"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Atšaukiama..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Lygiai taip pat kaip"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Pradėti su"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Įtraukti"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Atitikties kriterijai"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Trinti numerį"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "Užblokuota: %s"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Ištrinti šią saugomą žinutę?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Atblokuoti"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Šalinama..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Atkurta"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Apsaugoti pranešimai"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Apsauga pašalinta"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Blokuoti %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "Atblokuota: %s"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Planuojamas laikas turi būti nustatytas ateityje"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Apribotas turinio tipas. Vis tiek pridėti?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Įtraukti apsaugotas žinutes"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Teksto įvedimo režimas"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM abėcėlė"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unikodas"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatinis"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Įvesti numerį"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Dubliuota"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Pridėti žodį"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Gavimo parinktys"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Kai kurių gavėjų numeris klaidingas. Klaidingi gavėjai neįtraukti. Netinkami gavėjai: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Gavėjas"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Įvesti žodį"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Redaguoti žodį"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Skaityti"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Pridėti numerį"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Redaguoti numerį"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Ištrinti žodžius"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Iš jūsų adresatų gautos žinutės nebus blokuojamos, net jei jose bus blokuojamų žodžių"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokuojami numeriai"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokuojami žodžiai"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Apie SOS žinutes"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Neįmanoma siųsti žinučių veikiant skrydžio režimui. Išjunkite skrydžio režimą ir bandykite dar kartą"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Išj. skrydžio režimą"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Žinutė išsiųsta"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Žinutės išsiųsti nepavyko"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Trinti numerius"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Įvykus nelaimei 4 kartus paspauskite garsumo mygtuką, kai užrakinta klaviatūra. Taip bus išsiųsta SOS žinutė jūsų pasirinktiems gavėjams. Jei jie atskambins jums, telefonas neskambės, tačiau į skambutį bus atsiliepta automatiškai. Išsiuntus SOS žinutes, visos kitos telefono funkcijos neveiks, kol bus atrakinta klaviatūra"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Jūs užregistruotas kaip SOS žinutės gavėjas."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Siųs.dbr."
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Atsarginė kopija"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Eksportuoti į SD kortelę"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Aš"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Vykdoma..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "MMS žinutės pranešimas"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Būsena"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Baigiasi: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Kai kurie ženklai gali būti prarasti. Tęsti?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Įtraukti tekstą"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Teksto šablonai"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Įterpti veidelį"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nepalaikomas pramogos tipas"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Išjungiamas skrydžio režimas..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d pokalbiai (-ių)"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d žinutės"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Sąraše šablonų nėra"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Išplėstinė paieška"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Šablonas"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Garso"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Burbulo stilius"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Fono stilius"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Žinutės parinktys"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Trukmė – ne mažiau nei %d sek."
+
diff --git a/main/po/lv.po b/main/po/lv.po
new file mode 100755 (executable)
index 0000000..150cf56
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Piegādes atskaite"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Lasīšanas atskaite"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Pieprasīt piegādes atskaiti"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Pieprasīt lasīšanas atsk."
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Objektu saraksts"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Pārvietot uz tālruni"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Izveides režīms"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Pakalpojumu centrs"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Pārvietot uz SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Ieplānotā ziņa"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Surogātpasta ziņas"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Saņemšanas signāla veids"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Atkārtot"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Uzņemt videoklipu"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Ierakstīt skaņu"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Šūnu apraides ziņas"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM kartes ziņas"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Skatīt kontaktu"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Nevar atvērt"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Izgūt"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Nevar pārvietot"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Ir sasniegts maksimālais lapu skaits"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Ierobežots režīms. Nevar ievietot ierobežotu saturu"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Piegādāta"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Beidzies derīgums"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Izgūst..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Lai sūtītu ziņas, ievietojiet SIM karti. Ziņu saglabās mapē Izejošās"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Ievadiet kanāla numuru"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Izvēlēta 1 ziņa"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Izvēlētas %d ziņas"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Priekšskatījums"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Faila nosaukums jau pastāv"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Nav ziņu"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Pievienot kontaktam"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Atmest"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Nevar nosūtīt ziņu"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Fotografēt"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nav adreses"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Pievienoto objektu sarakts"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automātiska lejupielāde"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Apraides ziņas"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centrs %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Pielāgots laiks"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Neizdevās nosūtīt"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "No"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Ievietoto objektu saraksts"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Ziņa piegādāta"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Ziņa ielādēta"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Brīvs"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Brīdinājums"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Nosūtīts"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Infoziņas"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Saņemts"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuāli"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Noraidīt"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Saņemšanas iespējas"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Aizliegts"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Zema"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Parasta"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Steidzami"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritāte"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Sūtīt lasīšanas atskaiti"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Lapas ilgums"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS ziņas"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Īsziņas"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Kopējais lielums"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM saturs"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekundes"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekundes"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekundes"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Mājas tīkls"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalēt"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Viesabonēšanas tīkls"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Skatīt kontakta datus"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multiziņa nosūtīta"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Ziņas izguve neizdevās"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Multivides ziņas sūtīšana neizdevās"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Slaida ilgums"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Izm. skaļuma reg. taust."
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Īsziņa"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Bez nosaukuma"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Ziņas lielums"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Pieprasīts"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nav pieprasīts"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Pārsūt."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nelas."
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Adresāta dublikāts"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Sasniegts maksimālais adresātu skaits (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Kam"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Ierakstīt skaņu"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Ierakstīt video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Mainīts uz multiziņu"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Mainīts uz īsziņu"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Pieejami %d pielikumi. Izvēlieties līdz pat %d pielikumiem"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Nevar pievienot visus failus. Maksimālais pievienojamo failu lielums ir %d KB. Vai turpināt?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Fonta lielums"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multiziņa"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Nav tēmas"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Atlasiet adresi"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Jūs grasāties pāriet uz tiešsaistes(%s) režīmu. Vai turpināt?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Sūtīt vēlreiz"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Nederīgs adresāts"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Nederīgi adresāti"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Sarunas laikā nevar veikt atskaņošanu"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Nevar saglabāt, atrodoties lielapjoma atmiņas režīmā"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Vai izmest pašreizējo ziņu?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Izvēlēts"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Vai dzēst?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Nevar pievienot. Maksimālais failu lielums ir %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Aizliegts"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Nevar pārsūtīt.\nFails ir bloķēts pret pārsūtīšanu"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Drošības politika ierobežo īsziņu izveidi"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Notiek pievienošana. Lūdzu, uzgaidiet..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Pakalpojuma centra adrese"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Liels"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Parasta"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Mazs"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Sīks"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Nevar nosūtīt ieplānoto ziņu. Iestatiet citu laiku"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Datums un laiks"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multiziņas"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nav pievienots neviens adresāts. Ievadiet adresātus"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Sūtīšanas iespējas"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Parasta"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS sūtīšana"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Adresāti"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Ziņa"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Vienu reizi"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "trīsreiz"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "piecreiz"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Man radusies ārkārtas situācija. Lūdzu, palīdzi."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM karte nav ievietota"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Fotografēt"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Ilgumam jābūt garākam par %d sekundēm"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Nevar pievienot saturu"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Adresāta izvēle"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Ilgums (%s s.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Attēls par lielu. Notiek saspiešana..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Ziņa saglabāta kā melnraksts"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Cits"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Melnr."
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Sūtīt e-pasta ziņu"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Ievietotie objekti"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Pievienotie objekti"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d pielikumi"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Ieplānota\nziņa"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Ilgums\n(%d sek.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Izm. citu kontaktinf."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Šai ziņai ir pievienoti daži faili, kas netiek rādīti."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Šajā ziņā ir pievienoti faili, kurus nerāda"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Saglabāt visu"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Ziņu melnraksti"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Ziņa tiks atjaunota"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Ieplānotā ziņa tiks atcelta"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopēt ziņas tekstu"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Skatīt ziņas datus"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Bloķētās ziņas"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Ziņu pastkastes"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloķēt"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopēt tālrunī"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Ziņa nokopēta no SIM kartes"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Atcelt ziņu"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Pielikumi"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Ziņa par neveiksmīgu nosūtīšanu"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Sasniegts maksimālais rakstzīmju skaits"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Saglabāts mapē Mani faili"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Ziņas dati"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Atjauno..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Nav pielikumu"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Kopēts starpliktuvē"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopēt SIM kartē"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Nevar kopēt"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Aizsardzība izslēgta"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Aizsardzība ieslēgta"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Saglabāt pielikumu"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Atjaunot"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Aizsargātas ziņas"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Atceļ..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Tieši tāds pats kā"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Sākas ar"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Ietver"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Saskaņot kritērijus"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Dzēst numuru"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s ir bloķēts"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Vai dzēst šo aizsargāto ziņu?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Atbloķēt"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Noņem..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Atjaunots"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Aizsargātas ziņas"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Aizsardzība noņemta"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Vai bloķēt %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s ir atbloķēts"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Turpmāk ir jāiestata ieplānotais laiks"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Ierobežota satura veids. Vai tomēr pievienot?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Iekļaut aizsargāto ziņu"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Ievades režīms"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM alfabēts"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unikods"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automātiski"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Ievadiet numuru"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Dublēts"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Pievienot vārdu"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Saņemšanas iespējas"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Dažiem adresātiem ir nederīgs numurs. Nederīgie adresāti nav pievienoti. Nederīgi adresāti: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Adresāts"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Ievadiet vārdu"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Rediģēt vārdu"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lasīt"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Pievienot numuru"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Rediģēt numuru"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Dzēst vārdus"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Ziņas no jūsu kontaktiem netiks bloķētas pat tad, ja ietvers bloķētos vārdus"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Bloķētie numuri"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Bloķētie vārdi"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Par SOS ziņām"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Lidojuma režīmā ziņas nevar nosūtīt. Deaktivizējiet lidojuma režīmu un mēģiniet vēlreiz"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Deakt. lidojuma rež."
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Ziņa nosūtīta"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Ziņas sūtīšana neizdevās"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Dzēst numurus"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Ārkārtas situācijā 4 reizes nospiediet skaļuma samazināšanas taustiņu, kad taustiņi ir bloķēti. Tādējādi izvēlētajiem adresātiem tiks nosūta SOS ziņa. Ja kāds no adresātiem jums atzvanīs, tālrunis neatskaņos zvana signālu, bet uz zvanu tiks atbildēts automātiski. Pēc SOS ziņas nosūtīšanas citas tālruņa funkcijas nebūs pieejamas, iekams netiks atbloķēti taustiņi"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Jūs esat reģistrēts kā SOS ziņas saņēmējs."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Sūtīt"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Dublējums"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Eksportēt uz SD karti"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Mans"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Notiek darbība..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multiziņas paziņojums"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Statuss"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Derīguma termiņš beidzas: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Dažas rakstzīmes var būt zaudētas. Vai turpināt?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Pievienot tekstu"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Teksta veidnes"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Ievietot emocijzīmi"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Neatbalstīts multivides veids"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Deaktivizē lidojuma režīmu..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d sarunas"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d ziņas"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Sarakstā nav nevienas veidnes"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Papildu meklēšana"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Veidne"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Burbuļa stils"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Fona stils"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Ziņas iespējas"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Ilgumam jābūt vismaz %d sekundes"
+
diff --git a/main/po/mk.po b/main/po/mk.po
new file mode 100755 (executable)
index 0000000..65e34b5
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Извештај за испорака"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Извештај за прочитаност"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Барај извештај за испорака"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Барај изв.за прочитаност"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Листа записи"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Премести во телефон"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Начин на создавање"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Услужен центар"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Премести на SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Закажана порака"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Спам-пораки"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Вид примање известувања"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Повторување"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Сними видео"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Снимање звук"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Инфо-пораки"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Пораки на SIM-картичката"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Прикажи број"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Не може да се отвори"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Вчитај"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Не може да се премести"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Достигнат е максималниот број страници"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Ограничен режим. Не може да се вметне ограничена содржина"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Испорачано"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Застарено"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Вчитување..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Вметнете SIM-картичка за да праќате пораки. Пораката ќе се меморира во излезното сандаче"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Внесете број на каналот"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Избрана е 1 порака"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Избрани се %d пораки"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Прикажи"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Името на фајлот веќе постои"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Нема пораки"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Додај на запис"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Отфрли"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Не може да се прати пораката"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Фотографирај"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Нема адреса"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Листа приложени записи"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Автоматско преземање"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Инфо пораки"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Центар %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Во одредено време"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Неуспешно праќање"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Од"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Листа вметнати записи"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Пораката е испорачана"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Пораката е вчитана"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Слободна"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Предупредување"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Пратено"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push пораки"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Примено"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Рачно"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Отфрли"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Опции за прием"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Ограничено"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Низок"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Нормално"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Итно"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Приоритет"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Праќај извештај за прочитано"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Траење на секоја стр."
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS пораки"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Текст пораки"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Вкупна големина"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Заштитена содржина"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 секунди"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 секунди"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 секунди"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Домашна мрежа"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Инсталирај"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Странска мрежа"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Прегледај детали"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Мултимед.порака е пратена"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Неуспешно вчитување на пораките"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Неуспешно испраќање мултимедијална порака"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Времетраење за слајд"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Со копчето за јачина"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Текст порака"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Без наслов"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Големина на пораката"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Побарано"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Не е побарано"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Препр."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Непроч."
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Дуплиран примател"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Достигнат е максималниот број приматели (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "До"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Сними звук"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Сними видео-запис"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Сменето во MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Сменето во SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Достапни се %d прилози. Изберете до %d прилози"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Не може да се приложат сите фајлови. Максималниот капацитет за прилози е %d KB. Продолжи?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Големина на букви"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Мултимед.порака"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Нема наслов"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Избери адреса"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Ќе бидете поврзани на Интернет(%s). Сепак продолжи?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Испрати пак"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Неважечки примател"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Неважечки приматели"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Не може да се пушти за време на разговор"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Не може да се сочува во режимот за мемориски уред"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Отфрли моментална порака?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Избрано"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Да се избрише?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Не може да се приложи. Максимална големина на фајловите е %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Ограничено"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Не може да се препрати. Фајлот е заклучена за препраќање"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Политиката на безбедност го ограничува составувањето текстуални пораки"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Се додава. Почекајте..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Адреса на услужен центар"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Голема"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Нормално"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Мала"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Не може да се прати закажаната порака. Одредете друго време"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Датум и време"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Мултимед. пораки"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Не се додадени приматели. Внесете приматели"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Опции за праќање"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Нормално"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Праќање SOS пораки"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Приматели"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Порака"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Еднократно"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 пати"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 пати"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Во незгода сум. Ве молам помогнете ми."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Не е вметнат SIM"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Сликај"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Времетраењето мора да биде подолго од %d секунди"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Не може да се додаде содржина"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Изберете примател"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Времетраење (%s секунди)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Сликата е преголема. Се компримира..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Пораката е меморирана како скица"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Друго"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Недовр."
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Прати e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Вметнати записи"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Приложени содржини"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d прилози"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Закажана\nпорака"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Траење\n(%d сек.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Кор.др.инфо.за контакт"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Пораката содржи неприкажан приложен фајл"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Пораката содржи неприкажани приложени фајлови"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Меморирај сè"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Недовршени пораки"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Пораката ќе се обнови"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Закажаната порака ќе се откаже"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Коп. текст од порака"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Види дет. за порака"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Заклучени пораки"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Сандачиња со пораки"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Блокирај"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Копирај во телефон"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Пораката е ископирана од SIM-картичката"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Откажи порака"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Прилози"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Се испраќа неуспешна порака"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Достигнат е максималниот број знаци"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Сочувано во Мои фајлови"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Детали за пораката"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Се обновува..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Без прилози"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Ископирано во посредната меморија"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Копирај на SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Не може да се копира"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Исклучена заштита"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Вклучена заштита"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Сочувај прилог"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Обнови"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Заштитени пораки"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Се откажува..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Потполно исто како"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Започни со"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Вклучи"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Критериум за совпаѓање"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Избриши број"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s е блокиран"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Да се избрише оваа заштитена порака?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Одблокирај"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Отстранување..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Обновено"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Заштитени пораки"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Заштитата е отстранета"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Блокирај %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s е деблокиран"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Планираното време треба да биде во иднина"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Ограничен вид содржина. Сепак приложи?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Вклучи ги и заштитените пораки"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Начин на внесување"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-alphabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Уникод"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Автоматски"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Внесете број"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Веќе е внесено"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Додај збор"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Опции за прием"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Некои приматели имаат неважечки број. Неважечките приматели не се додадени. Неважечки приматели: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Примател"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Внесете збор"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Измени збор"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Читање"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Додај број"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Измени број"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Избриши зборови"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Пораките примени од вашите контакти нема да се блокираат иако содржат блокирани зборови"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Блокирани броеви"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Блокирани зборови"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "За пораките за итен случај"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Не може да се праќаат пораки во режимот за летало. Исклучете го режимот за летало и обидете се повторно"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Искл.режим за летало"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Пораката е пратена"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Неуспешно праќање на пораката"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Избриши броеви"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Во итен случај, притиснете го копчето за намалување на јачината на звукот 4 пати при заклучена тастатура. Така ќе се пратат SOS пораки до одредените приматели. Ако ви се јават, телефонот нема да заѕвони, туку автоматски ќе се одговори на повикот. Откако ќе се пратат SOS пораките, сите други функции на телефонот ќе бидат недостапни сè додека не се исклучи заклучувањето на тастатурата"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Регистрирани сте како примател на SOS-пораката."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Испрати"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Резервна копија"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Извези во SD-картичка"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Мене"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Во тек..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Известување за мултимедијална порака"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Состојба"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Застарува: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Некои знаци може да се изгубат.\nДа се продолжи?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Додај текст"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Готов текст"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Вметни емотикон"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Неподдржан тип на медиум"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Се исклучува режимот за летало..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d разговори"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d пораки"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Нема урнеци на листата"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Напредно пребарување"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Готов текст"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "звук"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Стил на балонче"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Стил на заднината"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Опции за пораките"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Траењето мора да биде барем %d секунди"
+
diff --git a/main/po/nb.po b/main/po/nb.po
new file mode 100755 (executable)
index 0000000..a54c8dd
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Leveringsrapport"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Leserapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Be om leveringsrapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Be om leserapport"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Elementliste"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Flytt til telefon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Opprettelsesmodus"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Tjenestesentral"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Flytt til SIM-kort"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Planlagt melding"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spammeldinger"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Mottar varseltype"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Gjenta"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Ta opp video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Spill inn lyd"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB-meldinger"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-kortmeldinger"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Vis kontakter"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Kan ikke åpne"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Hent"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Kan ikke flytte"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Det maksimale antall sider er nådd"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Begrenset modus. Kan ikke sette inn begrenset innhold"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Levert"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Utløpt"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Henter..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Sett inn et SIM-kort for å sende meldinger. Meldinger vil lagres i utboksen"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Angi kanalnummer"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 melding valgt"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d meldinger valgt"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Forhåndsvisning"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Filnavn allerede i bruk"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Ingen meldinger"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Legg til kontakt"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Forkast"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Kan ikke sende melding"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Ta bilde"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Ingen adresse"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Vedlagt elementliste"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automatisk nedlasting"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Kringkastingsmeldinger"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Senter %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Egendefinert tid"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Mislykket..."
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Fra"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Innsatt elementliste"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Melding levert"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Melding hentet"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Ledig"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Advarsel"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Sendt"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Tjenestemeldinger"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Mottatt"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuelt"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Avvis"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Mottaksalternativer"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Begrenset"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Lav"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Haster"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritet"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Send leserapport"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Sidevarighet"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS-meldinger"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Tekstmeldinger"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Total størrelse"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM-innhold"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekunder"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekunder"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekunder"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Hjemmenettverk"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installer"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Roaming-nettverk"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Vis kontaktdetalj"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS-melding sendt"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Kunne ikke hente melding"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Sending av mulitmediamelding feilet"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Varighet for bilde"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Bruk volumtasten"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Tekstmelding"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Uten tittel"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Meldingsstørrelse"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Bedt om"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Ikke forespurt"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Vid.send"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Ulest"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Duplisert mottaker"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maksimalt antall mottakere (%d) er nådd"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Til"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Spill inn lyd"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Spill inn video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Endret til MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Endret til SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d vedlegg tilgjengelig. Velg opptil %d vedlegg"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Kan ikke legge ved alle filer. Maksimal kapasitet for vedlegg er %d kB. Fortsette?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Skriftstørrelse"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS-melding"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Intet emne"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Velg adresse"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Du er i ferd med å gå på nett (%s). Fortsette?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Send på nytt"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Ugyldig mottaker"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Ugyldige mottakere"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Kan ikke spille av under samtale"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Kan ikke lagre mens enheten er i masselagringsmodus"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Forkast aktuell melding?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Valgt"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Slette?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Kan ikke legge ved. Maksimal filstørrelse er %d kB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Begrenset"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Kan ikke legge til. Filen er beskyttet mot videresending"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Sikkerhetspolicy begrenser skriving av tekstmeldinger"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Legger til. Vennligst vent..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Tjenestesenteradresse"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Stor"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Liten"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Veldig liten"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Kan ikke sende planlagt melding. Angi et annet tidspunkt"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Dato og tid"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS-meldinger"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Ingen mottakere lagt til. Angi mottakere"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Sendingsalternativer"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Sender SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Mottakere"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Melding"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Én gang"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 ganger"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 ganger"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Jeg er i nød. Hjelp meg."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-kort ikke satt inn"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Ta bilde"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Varigheten må være lenger enn %d sekunder"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Kan ikke legge til innhold"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Velg mottaker"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Varighet (%s sek)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Bildet er for stort. Komprimerer..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Melding lagret som utkast"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Annet"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Utkast"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Send e-post"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Elementer som er satt inn"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Vedlagte elementer"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d vedlegg"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Planlagt\nmelding"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Varighet\n(%d sek)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Bruk annen kontaktinfo"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Denne meldingen inneholder ett filvedlegg som ikke vises"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Denne meldingen inkluderer vedlagte filer som ikke vises"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Lagre alle"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Kladdemeldinger"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Meldingen vil bli gjenopprettet"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Planlagt melding vil bli avbrutt"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopier meldingstekst"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Vis meldingsdetaljer"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Låste meldinger"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Meldingsbokser"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokker"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopier til telefon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Meldinger kopiert fra SIM-kort"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Avbryt melding"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Vedlegg"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Sending mislyktes-melding"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Nådd maksimalt antall tegn"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Lagret i Mine filer"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Meldingsdetaljer"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Gjenoppretter..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Ingen vedlegg"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Kopiert til utklippstavle"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopier til SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Kan ikke kopiere"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Beskyttelse av"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Beskyttelse på"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Lagre vedlegg"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Gjenoppr."
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Beskyttede meldinger"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Avbryter..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Eksakt samme som"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Begynn med"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Ta med"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Avvisningskriterier"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Slett nummer"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s sperret"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Slette denne beskyttede meldingen?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Opphev blokkering"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Tar bort..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Gjenopprettet"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Beskyttede meldinger"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Beskyttelse fjernet"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Sperre %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s opphevet"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Planlagt tidspunkt må angis i fremtiden"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Begrenset innholdstype. Legge ved likevel?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Inkluder beskyttet melding"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Inndatamodus"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-alfabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatisk"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Angi nummer"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Kopiert"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Legg til ord"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Mottaksalternativer"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Noen mottakere har et ugyldig nummer. Ugyldige mottakere ikke lagt til. Ugyldige mottakere: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Mottaker"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Angi ord"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Rediger ord"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lest"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Legg til nummer"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Rediger nummer"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Slett ord"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Meldinger som mottas fra kontaktene dine, vil ikke blokkeres selv hvis de inneholder blokkerte ord"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokkerte numre"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokkerte ord"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Om nødmeldinger"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Kan ikke sende meldinger mens Offlinemodus er på. Deaktiver Offlinemodus og prøv på nytt"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Deaktiver offl.modus"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Melding sendt"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Kunne ikke sende meldingen"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Slett numre"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "I en nødssituasjon trykker du på volum ned-tasten 4 ganger mens tastelåsen er aktivert. Dette vil sende SOS-meldinger til dine utvalgte mottakere. Hvis de ringer tilbake, vil ikke telefonen ringe, men anropet vil automatisk bli besvart. Når SOS-meldinger er sendt, vil alle andre funksjoner på telefonen forbli utilgjengelige til tastelåsen ikke lenger er aktivert"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Du er registrert som mottaker av SOS-melding."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Send nå"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Sikkerhetskopiering"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Eksporter til SD-kort"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Meg"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Under behandling..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Varsel om multimediemelding"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Utløper: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Noen tegn kan gå tapt.\nFortsette?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Legg til tekst"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Tekstmaler"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Sett inn humørikon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Medietypen støttes ikke"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Deaktiverer offlinemodus ..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d samtaler"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d meldinger"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Ingen maler på listen"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Avansert søk"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Mal"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Lyd"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Boblestil"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Bakgrunnsstil"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Meldingsalternativer"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Varigheten må være minst %d sekunder"
+
diff --git a/main/po/nl_NL.po b/main/po/nl_NL.po
new file mode 100755 (executable)
index 0000000..c3eee5b
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Ontvangstbevestiging"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Leesbevestiging"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Ontvangstbevestiging vragen"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Leesbevestiging vragen"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Itemlijst"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Verplaatsen naar telefoon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Aanmaakmodus"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "SMS-centrale"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Verplaatsen naar SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Gepland bericht"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spamberichten"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Alarmtype ontvangen"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Herhalen"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Video opnemen"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Geluid opnemen"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Infoberichten"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-kaartberichten"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Contacten weergeven"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Openen niet mogelijk"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Ophalen"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Kan niet verplaatsen"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Maximumaantal pagina's bereikt"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Beperkte modus. Kan inhoud met restricties niet invoegen"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Afgeleverd"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Verlopen"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Ophalen..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Plaats een SIM-kaart om berichten te verzenden. Het bericht wordt opgeslagen in het Postvak UIT"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Kanaalnummer invoeren"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 bericht geselecteerd"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d berichten geselecteerd"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Voorbeeld"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Bestandsnaam bestaat al"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Geen berichten"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Toevoegen aan contactpersoon"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Verwijderen"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Kan bericht niet verzenden"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Foto maken"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Geen adres"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Lijst met bijgevoegde items"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automatisch downloaden"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Infoberichten"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centrale %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Aangepast tijdstip"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Verzenden mislukt"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Van"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lijst met ingevoegde items"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Bericht afgeleverd"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Bericht opgehaald"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Vrij"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Waarschuwing"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Verzonden"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Serverberichten"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Ontvangen"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Handmatig"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Weigeren"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Ontvangstopties"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Beperkt"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Laag"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normaal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Dringend"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioriteit"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Leesbevestiging verzenden"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Weergavetijd pagina"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS-berichten"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS-berichten"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Totale omvang"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM-inhoud"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 seconden"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 seconden"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 seconden"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Netwerk eigen provider"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installeren"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Roamingnetwerk"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Contactgegevens weergeven"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS-bericht verzonden"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Ophalen bericht mislukt"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Verzenden MMS mislukt"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duur voor dia"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Volumetoets gebruiken"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS-bericht"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Naamloos"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Berichtgrootte"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Aangevraagd"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Niet aangevraagd"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Doorst."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Niet gelezen"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Dubbele ontvanger"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maximumaantal ontvangers (%d) bereikt"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Aan"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Geluid opnemen"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Video opnemen"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Gewijzigd in MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Gewijzigd in SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d bijlagen beschikbaar. Selecteer maximaal %d bijlagen"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Kan niet alle bestanden toevoegen. Maximumcapaciteit voor bijlagen is %d KB. Doorgaan?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Tekstgrootte"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS-bericht"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Geen onderwerp"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Adres selecteren"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "U gaat bijna online (%s). Doorgaan?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Opnieuw verzenden"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Ongeldige ontvanger"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Ongeldige ontvangers"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Niet mogelijk tijdens gesprek"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Kan niet opslaan in massaopslag-modus"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Huidig bericht verwijderen?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Geselecteerd"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Verwijderen?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Kan niet toevoegen. Maximumgrootte van bestanden is %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Beperkt"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Kan niet doorsturen.\nBestand is geblokkeerd voor doorsturen"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Beveiligingsbeleid legt beperkingen op voor SMS-berichten"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Toevoegen. Even geduld..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adres servicecentrum"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Groot"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normaal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Klein"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Extra klein"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Kan gepland bericht niet verzenden. Stel een andere tijd in"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Datum en tijd"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS-berichten"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Geen ontvangers toegevoegd. Geef ontvangers in"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Verzendopties"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normaal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS wordt verzonden"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Ontvangers"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Bericht"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Eenmalig"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 keer"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 keer"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Ik ben in gevaar. Help me."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM niet geplaatst"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Foto maken"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Duur moet langer zijn dan %d seconden"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Kan inhoud niet toevoegen"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Ontvanger selecteren"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duur (%s sec)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Foto te groot. Comprimeren..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Bericht opgeslagen als concept"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Overige"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Concept"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "E-mail verzenden"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Ingevoegde items"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Bijlagen"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d bijlagen"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Gepland\nbericht"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duur\n(%d sec)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Andere contactgegevens"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Dit bericht bevat een bijlage die niet wordt weergegeven"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Dit bericht bevat niet getoonde bijlagen"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Alles opslaan"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Conceptberichten"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Bericht wordt hersteld"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Gepland bericht wordt geannuleerd"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Berichttekst kopiëren"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Berichtdetails tonen"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Vergrendelde berichten"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Postvakken"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokkeren"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopiëren naar telefoon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Bericht gekopieerd van SIM-kaart"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Bericht annuleren"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Bijlagen"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Bericht “Verzenden mislukt”"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Maximumaantal tekens bereikt"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Opgeslagen in Mijn bestanden"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Berichtdetails"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Herstellen..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Geen bijlagen"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Gekopieerd naar klembord"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopiëren naar SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Kan niet kopiëren"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Beveiliging uit"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Beveiliging aan"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Bijlage opslaan"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Herstel"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Beveiligde berichten"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Annuleren..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Precies gelijk aan"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Beginnen met"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Invoegen"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Blokkeringscriteria"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Nummer verwijderen"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s geblokkeerd"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Dit beveiligde bericht verwijderen?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Deblokkeren"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Verwijderen..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Hersteld"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Beveiligde berichten"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Beveiliging verwijderd"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s blokkeren?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s gedeblokkeerd"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Geplande tijd moet in de toekomst liggen"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Beperkt inhoudstype. Toch bijvoegen?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Inclusief beveiligd bericht"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Invoerstand"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-alfabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatisch"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Nummer invoeren"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Gedupliceerd"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Woord toevoegen"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Ontvangstopties"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Sommige ontvangers hebben een ongeldig nummer. Ongeldige ontvangers worden niet toegevoegd. Ongeldige ontvangers: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Ontvanger"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Woord ingeven"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Woord bewerken"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lezen"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Nummer toevoegen"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Nummer bewerken"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Woorden verwijderen"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Berichten die u van uw contacten ontvangt, worden niet geblokkeerd, zelfs niet als ze geblokkeerde woorden bevatten"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Geblokkeerde nummers"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Geblokkeerde woorden"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Over SOS-berichten"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Kan geen berichten verzenden als de vliegtuigstand is ingeschakeld. Schakel de vliegtuigstand uit en probeer het opnieuw"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Vliegtuigstand uit"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Bericht verzonden"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Bericht verzenden mislukt"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Nummers verwijderen"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Druk in een noodgeval 4 maal op de toets volume omlaag wanneer de toetsvergrendeling is ingeschakeld. Hierdoor worden SOS-berichten verzonden naar de geselecteerde ontvangers. Als zij u terugbellen, gaat de telefoon niet over, maar wordt hun oproep automatisch verbonden. Nadat u de SOS-berichten hebt verzonden, zijn alle overige telefoonfuncties pas weer beschikbaar nadat u de vergrendeling hebt uitgeschakeld"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "U bent geregistreerd als ontvanger van SOS-berichten."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Nu verz."
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Back-up"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exporteren naar SD-kaart"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Ik"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Bezig..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Melding MMS-bericht"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Verloopt: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Enkele tekens kunnen verloren gaan. Doorgaan?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Tekst toevoegen"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Standaard SMS-berichten"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Emoticon invoegen"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Niet-ondersteund mediatype"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Vliegtuigstand uitschakelen..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d gesprekken"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d berichten"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Geen standaardberichten in lijst"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Geavanceerde zoekopdracht"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Standaardberichten"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Bubbelstijl"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Achtergrondstijl"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Berichtopties"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Duur moet ten minste %d seconden zijn"
+
diff --git a/main/po/pl.po b/main/po/pl.po
new file mode 100755 (executable)
index 0000000..dca8a29
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Raport doręczenia"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Raport odczytania"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Raport doręczenia"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Żądaj raportu przeczytania"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Lista elementów"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Przenieś do pamięci telefonu"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Tryb tworzenia"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centrum SMS"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Przenieś do pamięci SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Zaplanowana wiadomość"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Wiadomości typu spam"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Typ alarmu odbierania"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Powtarzanie"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Nagraj video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Nagraj dźwięk"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Wiadomości sieciowe"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Wiadomości karty SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Wyświetl kontakt"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Nie można otworzyć"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Pobierz wiad."
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Nie można przenieść"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Osiągnięto maksymalną liczbę stron"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Tryb ograniczony. Nie można wstawić zastrzeżonej treści"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Doręczono"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Wygasła wiadomość"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Pobieranie..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Włóż kartę SIM w celu wysłania wiadomości. Wiadomość zostanie zapisana w skrzynce nadawczej"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Wprowadź numer kanału"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Wybranych wiadomości: 1"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Wybranych wiadomości: %d"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Podgląd"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nazwa pliku już istnieje"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Brak wiadomości"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Dodaj do kontaktów"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Anuluj"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Nie można wysłać wiadomości"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Zrób zdjęcie"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Brak adresu"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Lista załączników"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automatycznie"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Wiad. sieciowe"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centrum SMS %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Ustaw. własne"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Błąd wysyłania"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Od"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lista wstawionych elementów"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Wiadomość dostarczona"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Wiadomość pobrana"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Nie ostrzegaj"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Ostrzeżenie"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Wysłano"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "kB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "WAP Push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Odebrano"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ręcznie"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Odrzucaj"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Ustawienia odbierania"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Ograniczony"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Niski"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normalny"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Wysoki"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Priorytet"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Wyślij raport odczytu"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Czas wyświetlania strony"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Wiad. alarmowa"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Łączny rozmiar"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Zawartość DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sek."
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sek."
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sek."
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Odbiór w sieci domowej"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instaluj"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Odbiór w roamingu"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Wyświetl szczegóły kontaktu"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Wysłano MMS"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Błąd pobierania wiadomości"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Błąd wysyłania MMS"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Czas trwania slajdu"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Użyj klawisza głośności"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Bez tytułu"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Limit rozmiaru"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Żądane"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nie żądano"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "P. dalej"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nieprz."
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Powtórzony odbiorca"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Osiągnięto maksymalną liczbę odbiorców (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Do"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Nagraj dźwięk"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Nagraj film"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Zmieniono na MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Zmieniono na SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Liczba dostępnych załączników: %d. Maksymalna liczba załączników do wybrania: %d"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Nie można dołączyć wszystkich plików. Maksymalna wielkość załącznika to %d kB. Kontynuować?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Rozmiar czcionki"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Brak tematu"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Wybierz adres"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Połączyć z WAP(%s)? Kontynuować?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Wyślij ponownie"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Nieprawidłowy odbiorca"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Nieprawidłowi odbiorcy"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Niedozwolone podczas połączenia"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Nie można zapisać w trybie pamięci masowej"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Usunąć bieżącą wiadomość?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Wybrane"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Usunąć?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Nie można dołączyć. Maksymalny rozmiar plików to %d kB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Ograniczony"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Nie można przesłać dalej.\nPrzesyłanie pliku jest zablokowane"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Zasady zabezpieczeń ograniczają tworzenie wiadomości SMS"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Dodawanie. Czekaj..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adres centrum usług"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Duża"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normalny"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Pomniejsz"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Bardzo mała"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Nie można wysłać zaplanowanej wiadomości. Ustaw inną godzinę"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Data i godzina"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nie dodano żadnych odbiorców. Wprowadź odbiorców"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Ustawienia wysyłania"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normalny"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Wysyłanie wiad. alarmowej"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Odbiorcy"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Wiadomość"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Raz"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 razy"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 razy"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Sytuacja alarmowa. Proszę o pomoc."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Nie włożono karty SIM"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Zrób zdjęcie"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Czas trwania musi być dłuższy niż %d s"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Nie można dodać zawartości"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Wybierz odbiorcę"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Czas trwania (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Obraz za duży. Trwa kompresja..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Wiadomość została zapisana jako robocza"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Inne"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Wer.rob."
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Wyślij e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Wstawione elementy"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Załączniki"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "Załączników: %d"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Zaplanowana\nwiadomość"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Czas trwania\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Użyj inf. innego kont."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Ta wiadomość zawiera pewne załączniki, które nie są pokazane."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Ta wiadomość zawiera niewyświetlone dołączone pliki"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Zapisz wszystko"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Wersje robocze wiadomości"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Wiadomość zostanie przywrócona"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Zaplanowana wiadomość zostanie anulowana"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopiuj tekst wiad."
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Pokaż szczeg. wiad."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Zablokowane wiadomości"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Skrzynki wiadomości"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokuj"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopiuj do pamięci telefonu"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Skopiowano wiadomość z karty SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Anuluj wiadomość"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Załączniki"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Błąd wysyłania wiadomości"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Osiągnięto maksymalną liczbę znaków"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Zapisano w Moich plikach"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Szczegóły wiadomości"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Przywracanie..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Bez załączników"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Skopiowane do schowka"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopiuj do pamięci SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Nie można skopiować"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Wył. ochronę"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Wł. ochronę"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Zapisz załącznik"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Przywróć"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Wiadomości chronione"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Anulowanie..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Dokładnie takie same, jak"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Zaczynające od"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Zawierające"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Kryteria dopasowania"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Usuń numer"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s zablokowany"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Usunąć tę wiadomość chronioną?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Odblokuj"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Usuwanie..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Odtworzono"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Wiadomości chronione"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Usunięto ochronę"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Zablokować znajomego %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s odblokowany"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Zaplanowana godzina powinna być przyszła"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Typ treści z ograniczeniami. Czy mimo to dołączyć?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Uwzględnij wiadomość chronioną"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Terminarz"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Tryb wprowadzania"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabet GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatyczny"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Wpisz numer"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Powtórzony"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Dodaj wyraz"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Ustawienia odbierania"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Niektórzy odbiorcy mają nieprawidłowy numer. Nie dodano nieprawidłowych odbiorców. Nieprawidłowych odbiorców: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Odbiorca"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Wprowadź słowo"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Edytuj słowo"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Czytaj"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Dodaj numer"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Edytuj numer"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Usuń słowa"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Wiadomości otrzymywane od Twoich kontaktów nie będą blokowane, nawet jeśli zawierają zablokowane słowa"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Zablokowane numery"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Zablokowane słowa"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Wiadomości alarmowe — informacje"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Kiedy tryb Offline jest włączony, nie można wysyłać wiadomości. Wyłącz tryb Offline i spróbuj ponownie"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Wyłącz tryb Offline"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Wiadomość wysłana"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Błąd wysyłania wiadomości"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Usuń numery"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "W sytuacji alarmowej naciśnij cztery razy klawisz zmniejszania głośności przy włączonej blokadzie klawiatury. Spowoduje to wysłanie wiadomości alarmowych do wybranych odbiorców. Jeśli te osoby oddzwonią, telefon nie zadzwoni, ale połączenia zostaną automatycznie odebrane. Po wysłaniu wiadomości alarmowych wszystkie inne funkcje telefonu pozostaną niedostępne aż do odblokowania klawiatury"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Zarejestrowano Cię jako odbiorcę wiadomości alarmowej."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Wyś.teraz"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Backup"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Eksportuj na kartę pamięci"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Ja"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "W toku..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Powiadomienie o MMS"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Stan"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "„Wygasa: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Niektóre znaki mogą zniknąć?\nKontynuować?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Wstaw tekst"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Szablony SMS"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Wstaw emotikon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nieobsługiwany typ nośnika"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Wyłączanie trybu offline..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "Rozmowy: %d"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "Wiadomości: %d"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Brak szablonów na liście"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Wyszukiwanie zaawansowane"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Szablon"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Dźwięk"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Styl dymka"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Styl tła"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opcje wiadomości"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Czas trwania nie może być krótszy niż %d s"
+
diff --git a/main/po/pt_BR.po b/main/po/pt_BR.po
new file mode 100755 (executable)
index 0000000..3359fc9
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Confirm. de entrega"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Confirm. de leitura"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Confirm. de entrega"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Confirm. de leitura"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Lista de itens"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Mover para telefone"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Modo de criação"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centro de serviços"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Mover para SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Mensagem programada"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Mensagens de spam"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Recebendo tipo de alerta"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repetir"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Gravar vídeo"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Gravar áudio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Mensagens Broadcast"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Mensagens do cartão SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Ver contato"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Impossível abrir"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Recuperar"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Impossível mover"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Número máximo de páginas atingido"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Modo restrito. Impossível inserir conteúdo restrito"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Entregue"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Expirado"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Recebendo..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insira um cartão SIM para enviar mensagens. A mensagem será salva na Caixa de saída"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Inserir número de canal"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mensagem selecionada"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mensagens selecionadas"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Pré-visualização"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nome de arquivo\njá existe"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Nenhuma mensagem"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Adicionar aos contatos"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Descartar"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Impossível enviar mensagem"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Tirar foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nenhum endereço"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Lista de itens anexados"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Download automático"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Broadcast"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centro %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Personalizar hora"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Falha de envio"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lista de itens inseridos"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mensagem entregue"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mensagem recuperada"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Livre"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Aviso"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Enviado"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Mensagens WAP"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Recebida"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Rejeitar"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opções de recebimento"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restrito"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Baixa"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgente"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioridade"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Confirm. de leitura"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Duração da página"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Mensagem SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Tamanho total"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Conteúdo DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 segundos"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 segundos"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 segundos"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Rede local"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalar"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Rede internacional"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Visualizar detalhes do contato"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Mensagem multimídia enviada"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Falha na recuperação da mensagem"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Falha ao enviar mensagem multimídia"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duração para o slide"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Usar tecla de volume"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Sem título"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Tamanho da mensagem"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Pedido"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Não solicitado"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Encaminhar"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Não lida"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinatário duplicado"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Número máximo de destinatários (%d) atingido"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Para"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Gravar som"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Gravar vídeo"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Alterado para MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Alterado para SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d anexos disponíveis. Selecione até %d anexos"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Impossível anexar todos os arquivos. Capacidade máxima para anexos %d KB. Continuar?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Tamanho de fonte"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Sem assunto"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Selecionar endereço"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Você está prestes a ficar online (%s). Continuar?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Reenviar"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinatário inválido"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinatários inválidos"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Impossível durante chamada"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Não é possível salvar enquanto no Modo de armazenamento em massa"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Apagar mensagem atual?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Selecionado"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Apagar?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Impossível anexar. Tamanho máximo dos arquivos é de %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restrito"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Impossível encaminhar.\nO arquivo tem o encaminhamento bloqueado"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "A política de segurança restringe escrever mensagens de texto"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Adicionando. Por favor aguarde..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Endereço do centro de serviço"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Grande"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Pequeno"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Minúsculo"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Não é possível enviar mensagem programada. Defina outra hora"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Data e Hora"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nenhum destinatário adicionado. Insira destinatários"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opções de envio"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Enviar SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinatários"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mensagem"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Uma vez"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 vezes"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 vezes"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Estou em uma emergência. Por favor, me ajude."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM não inserido"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Tirar foto"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "A duração deve ser superior a %d segundos"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Impossível adicionar conteúdo"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Selecionar destinatário"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duração (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Imagem muito extensa. Redimensionando"
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mensagem salva como rascunho"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Outros"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Rascunho"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Enviar e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Itens inseridos"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Itens anexados"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d anexos"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Mensagem\nprogramada"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duração\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Usar outra info cont."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Esta mensagem inclui alguns arquivos anexados que não estão exibidos."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Esta mensagem inclui arquivos anexados não exibidos"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Salvar tudo"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Mensagens de rascunho"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "A mensagem selecionada será restaurada"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "A mensagem agendada será cancelada"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copiar texto msg."
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Ver detalhes msg."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Mensagem bloqueada"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Caixas de mensagens"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloquear"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copiar para telefone"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mensagem copiada do cartão SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancelar mensagem"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Anexos"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Enviando mensagem que falhou"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Número máximo de caracteres atingido"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Salvo em Meus arquivos"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Detalhes da mensagem"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restaurando..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Nenhum anexo"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copiado para a área de transferência"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copiar para SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Impossível copiar"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Desativar proteção"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Ativar proteção"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Salvar anexo"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restaurar"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Mensg. protegidas"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Cancelando..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exatamente o mesmo que"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Iniciar com"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Incluir"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Corresponder ao critério"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Apagar número"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloqueado"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Apagar esta mensagem protegida?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Desbloquear"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Apagando..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restaurado"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Mensg. protegidas"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Proteção removida"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Bloquear %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s desbloqueado"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "O tempo programado deve ser definido no futuro"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Tipo de conteúdo restringido. Anexar mesmo assim?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Incluir mensagem protegida"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Modo de entrada"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabeto GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automático"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Insira número"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicado"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Adicionar palavra"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opções de recebimento"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Alguns destinatários têm um número inválido. Destinatários inválidos não adicionados. Destinatários inválidos: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinatário"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Inserir palavra"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Editar palavra"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Lida"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Adicionar número"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Editar número"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Excluir palavras"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "As mensagens recebidas de seus contatos não serão bloqueadas mesmo se contiverem palavras bloqueadas"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Números bloqueados"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Palavras bloqueadas"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Sobre mensagens SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Não é possível enviar mensagens no modo de voo. Desative o modo de voo e tente novamente"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Desat. modo de voo"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mensagem enviada"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Erro ao enviar mensagem"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Excluir números"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Em uma emergência, pressione a tecla de redução de volume 4 vezes quando a tecla de bloqueio está ativa. Isto enviará mensagens SOS para seus destinatários selecionados. Se eles retornarem a chamada, o celular não tocará mas sua chamada será atendida automaticamente. Após enviar mensagens SOS, todas as demais funções do celular permanecerão indisponíveis até que a tecla de bloqueio não esteja mais ativa"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Está registrado como um destinatário de mensagem SOS"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Env agora"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Backup"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exportar para cartão de memória"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Eu"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Em andamento..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notificação de mensagem multimídia"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Expira: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Alguns caracteres podem ser perdidos. Continuar?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Adicionar texto"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Modelo de texto"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Inserir Emoticon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Tipo de mídia não suportado"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Desativando o Modo Offline..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversações"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d mensagens"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Nenhum modelo na lista"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Busca avançada"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Modelo"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Áudio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Estilo do balão"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Estilo de fundo"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opções de mensagem"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "A duração deve ser de pelo menos %d segundos"
+
diff --git a/main/po/pt_PT.po b/main/po/pt_PT.po
new file mode 100755 (executable)
index 0000000..4788fa8
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Relatório de entrega"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Relatório de leitura"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Pedir relatório de entrega"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Pedir relatório de leitura"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Lista de itens"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Mover para o telefone"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Modo de criação"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centro de serviço"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Mover para o SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Mensagem programada"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Mensagens de spam"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Tipo de alerta de recepção"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repetir"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Capturar vídeo"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Gravação de áudio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Mensagens DC"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Mensagens do cartão SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Ver contactos"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Impossível abrir"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Receber"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Impossível mover"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Número máximo de páginas atingido"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Modo restringido. Impossível inserir conteúdo restringido"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Entregue"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Expirado"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "A receber..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Insira um cartão SIM para enviar mensagens. A mensagem será guardada na Caixa de saída"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Introduzir número de canal"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mensagem seleccionada"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mensagens seleccionadas"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Pré-visualizar"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nome do ficheiro já existente"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Nenhuma mensagem"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Adicionar a contacto"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Cancelar"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Impossível enviar mensagem"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Tirar fotografia"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nenhum endereço"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Lista de itens anexados"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Transferência automática"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Mensagens de difusão"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centro %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Personalizar hora"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Falha no envio"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lista de itens inseridos"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mensagem entregue"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mensagem recebida"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Livre"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Aviso"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Enviada"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Mensagens push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Recebido"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Rejeitar"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opções de recepção"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restringido"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Baixa"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgente"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioridade"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Enviar relatório de leitura"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Duração da página"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Mensagens SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Tamanho total"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Conteúdo DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 segundos"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 segundos"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 segundos"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Rede local"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalar"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Rede de roaming"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Ver detalhes do contacto"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS enviada"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Falha na recepção da mensagem"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Falha ao enviar mensagem multimédia"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duração para o slide"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Utilizar tecla de volume"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Sem título"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Tamanho da mensagem"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Pendente"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Não pedido"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Reenc."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Não lida"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinatário duplicado"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Número máximo de destinatários (%d) atingido"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Para"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Gravar som"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Gravar vídeo"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Alterado para MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Alterado para SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d anexos disponíveis. Seleccione até %d anexos"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Impossível anexar todos os ficheiros. Capacidade máxima para anexos %d KB. Continuar?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Tamanho da fonte"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Sem assunto"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Seleccionar endereço"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Está prestes a ficar online (%s). Continuar?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Reenviar"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinatário inválido"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinatários inválidos"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Impossível jogar durante chamada"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Impossível guardar durante o modo de armazenamento de massa"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Eliminar mensagem actual?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Seleccionado"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Eliminar?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Impossível anexar. O tamanho máximo dos ficheiros é %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restringido"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Impossível reencaminhar.\nO ficheiro tem o reencaminhamento bloqueado"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "A política de segurança restringe a redacção de mensagens de texto"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "A adicionar. Aguarde por favor..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Endereço do centro de serviço"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Grande"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Pequeno"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Muito pequeno"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Impossível enviar mensagem programada. Defina outra hora"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Data e hora"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nenhum destinatário adicionado. Introduzir destinatários"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opções de envio"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Envio de SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinatários"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mensagem"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Uma vez"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 vezes"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 vezes"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Estou numa situação de emergência. Ajudem-me."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM não inserido"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Tirar fotografia"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "A duração tem de ser mais longa do que %d segundos"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Impossível adicionar conteúdo"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Seleccionar destinatário"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Duração (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Imagem demasiado grande. A comprimir..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mensagem guardada como rascunho"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Outro"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Rascunho"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Enviar e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Itens inseridos"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Itens anexados"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d anexos"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Mensagem\nprogramada"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Duração\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Util. out. infos cntc."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Esta mensagem inclui um ficheiro anexado não apresentado."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Esta mensagem inclui ficheiros anexados não mostrados"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Guardar tudo"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Mensagens rascunho"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "A mensagem será restaurada"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "A mensagem programada será cancelada"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copiar texto msg."
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Ver detalhes msg."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Mensagens bloqueadas"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Caixas de mensagens"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloquear"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copiar para o telefone"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mensagem copiada do cartão SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Cancelar mensagem"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Anexos"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "A enviar mensagem que falhou"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Número máximo de caracteres atingido."
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Guardado em Os meus ficheiros"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Detalhes da mensagem"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "A recuperar..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Nenhum anexo"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copiado para a área de transferência"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copiar para o SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Impossível copiar"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Desactivar protecção"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Activar protecção"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Guardar anexo"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restaurar"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Mensagens protegidas"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "A cancelar..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exactamente o mesmo que"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Iniciar com"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Incluir"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Corresponder critérios"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Eliminar número"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloqueado"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Eliminar esta mensagem protegida?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Desbloquear"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "A remover..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restaurado"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Mensagens protegidas"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protecção removida"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Bloquear %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s desbloqueado"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "O tempo programado deve ser especificado no futuro"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Tipo de conteúdo restringido. Anexar na mesma?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Incluir mensagem protegida"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Modo de introdução"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabeto GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automático"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Introduzir número"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicado"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Adicionar palavra"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opções de recepção"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Alguns destinatários têm um número inválido. Destinatários inválidos não adicionados. Destinatários inválidos: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinatário"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Introduzir palavra"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Editar palavra"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Ler"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Adicionar número"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Editar número"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Eliminar palavras"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "As mensagens recebidas dos seus contactos não serão bloqueadas, mesmo que contenham palavras bloqueadas"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Números bloqueados"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Palavras bloqueadas"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Acerca das mensagens SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Impossível enviar mensagens no modo de Voo. Desactive o modo de Voo e tente novamente"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Desactivar modo Voo"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mensagem enviada"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Falha no envio de mensagem"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Eliminar números"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Numa emergência, prima a tecla de diminuir o volume 4 vezes quando o bloqueio do teclado estiver activado. Deste modo envia mensagens SOS para os destinatários seleccionados. Se eles devolverem a chamada, o telefone não toca, mas a respectiva chamada é atendida automaticamente. Depois do envio de mensagens SOS todas as outras funções do telefone permanecem indisponíveis até a tecla de bloqueio deixar de estar activa"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Está registado como um destinatário de mensagem SOS"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Env. ag."
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Cóp. segur."
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exportar para cartão SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Eu"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "A processar..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notificação de mensagem multimédia"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Estado"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Expira: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Alguns caracteres poderão estar perdidos.\nContinuar?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Adicionar texto"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Modelos do texto"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Inserir ícone expressivo"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Tipo de multimédia não suportado"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "A desactivar Modo de voo..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversações"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d mensagens"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Sem modelos na lista"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Procura avançada"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Modelo"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Áudio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Estilo do balão"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Estilo do segundo plano"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opções de mensagem"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "A duração tem de ter no mínimo %d segundos"
+
diff --git a/main/po/ro.po b/main/po/ro.po
new file mode 100755 (executable)
index 0000000..ae8eec2
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Raport livrare"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Citire raport"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Solicitare raport de livrare"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Solicitare raport citire"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Listă elemente"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Mutare în telefon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Mod creare"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centru service"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Mutare în SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Mesaj programat"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Mesaje spam"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Tip de alertă la primire"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Repetare"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Captură video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Înregistrare audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Mesaje CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Mesaje de pe cartela SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Vizualizare contacte"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Imposibil de deschis"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Preluare"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Imposibil de mutat"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "A fost atins numărul maxim de pagini"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Mod restricţionat. Imposibil de introdus conţinutul restricţionat"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Livrat"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Expirat"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Se preia..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Introduceţi cartela SIM pentru a trimite mesaje. Mesajele vor fi salvate în Cutia de ieşire"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Introducere număr canal"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mesaj selectat"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mesaje selectate"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Previzualizare"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Numele fişierului există deja"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Nici un mesaj"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Adăugare la contacte"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Renunţare"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Imposibil de trimis mesajul"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Realizare fotografie"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nicio adresă"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Listă de elemente ataşate"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Descărcare automată"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Mesaje informare"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centru %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Timp particularizat"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Trimitere eşuată"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "De la"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Listă de elemente inserate"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mesaj livrat"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mesaj regăsit"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Liber"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Avertisment"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Trimis"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KO"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Mesaje server"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Primit"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Respingere"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opţiuni primire"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Restricţionat"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Scăzută"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Urgent"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritate"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Trimitere raport citire"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Dimensiune pagină"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Mesaje SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Mesaje text"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Dimensiune totală"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Conţinut DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 secunde"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 secunde"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 secunde"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Reţea reşedinţă"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instalare"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Reţea în roaming"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Vizualizare detalii contact"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Mesaj multimedia trimis"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Preluare mesaj nereuşită"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Trimitere mesaj multimedia nereuşită"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durata pentru diapozitiv"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Utilizaţi tasta volum"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Mesaj text"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Fără titlu"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Dimensiune mesaj"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Solicitat"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nesolicitat"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Redir"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Necitit"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Destinatar dublat"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Numărul maxim de destinatari (%d) a fost atins"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Către"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Înregistrare sunet"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Înregistrare videoclip"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Schimbat în MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Modificat la SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d ataşări disponibile. Selectaţi maximum %d ataşări"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Imposibil de ataşat toate fişierele. Capacitatea maximă a ataşării este de %d KO. Continuaţi?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Dimensiune font"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Mesaj multimedia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Niciun subiect"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Selectare adresă"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Sunteţi pe cale să vă conectaţi (%s). Continuaţi?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Retrimitere"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Destinatar nevalid"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Destinatari nevalizi"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Imposibil de redat în timpul unui apel"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Imposibil de salvat din modul Stocare în masă"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Renunţaţi la mesajul curent?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Selectat"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Ştergeţi?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Imposibil de ataşat. Dimensiunea maximă a fişierelor este de %d KO"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Restricţionat"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Imposibil de redirecţionat. Fişierul este blocat la redirecţionare"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Politica de securitate restricţionează compunerea mesajelor text"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "În curs de adăugare. Aşteptaţi..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresă centru servicii"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Mare"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Mic"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Foarte mic"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Imposibil de trimis mesajul programat. Setaţi o altă oră"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Dată şi oră"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Mesaje multimedia"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nu a fost adăugat niciun destinatar. Introduceţi destinatari"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opţiuni trimitere"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Se trimite SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Destinatari"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mesaj"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "O dată"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 ori"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 ori"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Sunt într-o situaţie de urgenţă. Vă rog să mă ajutaţi."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM neinserat"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Fotografiere"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Durata trebuie să fie mai mare de %d secunde"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Imposibil de adăugat conţinut"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Selectare destinatar"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Durată (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Fotografia este prea mare. Se comprimă..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mesajul a fost salvat ca ciornă"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Alte"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Ciornă"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Trimitere email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Elemente inserate"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Elemente ataşate"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d ataşări"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Mesaj\nprogramat"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Durată\n(%d secunde)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Ut. alte inf. contact"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Acest mesaj include un fişiere ataşat care nu este prezentat."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Acest mesaj conţine fişiere ataşate neafişate"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Salvare totală"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Schiţe de mesaje"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Mesajul va fi restabilit"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Mesajul programat va fi revocat"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Copiere text mesaj"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Afiş. detalii mesaj"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Mesaje blocate"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Casete de mesaje"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blocare"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Copiere în telefon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mesaj copiat de pe cartela SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Revocare mesaj"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Ataşări"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Trimiterea mesajului nereuşit"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Adăugare la marcaje"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Salvat în Fişierele mele"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Detalii mesaj"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Restabilire"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Nicio ataşare"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Copiat în clipboard"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Copiere pe SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Imposibil de copiat"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Protecţie dezactivată"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Protecţie activată"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Salvare ataşare"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Restab."
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Mesaje protejate"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "În curs de anulare"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exact la fel ca"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Începe cu"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Includere"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Criteriu de potrivire"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Ştergere număr"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blocate"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Ştergeţi acest mesaj protejat?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Deblocare"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Eliminare..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Restabilit"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Mesaje protejate"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Protecţia a fost eliminată"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Se blochează %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s deblocate"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Momentul programat trebuie să fie în viitor"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Tip de conţinut restricţionat. Ataşaţi oricum?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Includere mesaj protejat"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "Planificator S"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Mod introducere text"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Alfabet GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automat"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Introduceţi numărul"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Dublat"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Adăugare cuvânt"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opţiuni primire"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Unii destinatari au un număr nevalid. Destinatarii nevalizi nu au fost adăugaţi. Destinatari nevalizi: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Destinatar"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Introducere cuvânt"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Editare cuvânt"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Citire"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Adăugare număr"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Editare număr"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Ştergere cuvinte"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Mesajele primite de la contactele dvs. nu vor fi blocate, chiar dacă acestea conţin cuvinte blocate"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Numere blocate"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Cuvinte blocate"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Despre mesaje SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Nu se pot trimite mesaje când sunteţi în modul Avion. Dezactivaţi modul Avion şi încercaţi din nou"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Dezactiv. mod Avion"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mesaj trimis"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Trimiterea mesajului nu a reuşit"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Ştergere numere"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "În caz de urgenţă, apăsaţi de 4 ori pe tasta de volum mai mic atunci când blocarea tastelor este activată. Astfel, vor fi trimise mesaje S.O.S. destinatarilor selectaţi. Dacă aceştia vă sună înapoi, telefonul nu va suna, dar se va răspunde automat la apel. După trimiterea mesajelor S.O.S., toate celelalte funcţii ale telefonului nu vor fi disponibile până când blocarea tastelor nu mai este activă"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Sunteţi înregistrat ca un destinatar al mesajelor SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Tr. acum"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Copie de rezervă"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Export pe cartela SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Eu"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "În curs..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Notificare privind mesajul multimedia"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Stare"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Expiră la: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Este posibil ca unele caractere să se fi pierdut.\nContinuaţi?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Adăugare text"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Şabloane text"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Inserare emoticon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Tip suport neacceptat"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Se dezactivează modul Avion..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d conversaţii"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d mesaje"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Niciun şablon pe listă"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Căutare avansată"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Şablon"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Stil balon"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Stil fundal"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opţiuni mesaj"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Durata trebuie să fie de cel puţin %d secunde"
+
diff --git a/main/po/ru_RU.po b/main/po/ru_RU.po
new file mode 100755 (executable)
index 0000000..8f7724e
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Отчет о доставке"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Отчет о прочтении"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Запросить отчет о доставке"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Отчет о прочтении"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Список элементов"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Переместить на телефон"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Режим создания"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "SMS-центр"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Переместить на SIM-карту"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Отложенная отправка"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Спам"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Тип уведомления о получении"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Повтор"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Записать видео"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Запись звука"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Широковещательные сообщ."
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Сообщения на SIM-карте"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Просмотреть"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Невозможно открыть"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Извлечь"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Невозможно переместить"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Достигнуто максимальное число страниц"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Ограниченный режим. Невозможно вставить ограниченное содержимое"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Доставлено"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Срок действия закончен"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Получение..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Для отправки сообщений установите SIM-карту. Сообщение будет сохранено в исходящих"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Введите номер канала"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Выбрано 1 сообщение"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Выбрано сообщений: %d"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Просмотр"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Файл с таким именем уже существует"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Нет сообщений"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Добавить к контакту"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Отменить"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Невозможно отправить сообщение"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Сделать фото"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Нет адреса"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Вложенные элементы"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Автозагрузка"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Сообщения сети"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Центр %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Выбрать время"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Сбой при отправке"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "От"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Вставленные элементы"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Сообщение доставлено"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Сообщение получено"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Свободный"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Предупреждающий"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Отправлено"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "б"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "Кб"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push-сообщения"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Получено"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Вручную"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Отказ"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Параметры приема"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Ограниченный"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Низкий"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Обычный"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Высокий"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Приоритет"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Отправлять отчет о прочтении"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Длительность страницы"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS сообщения"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Общий размер"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Файлы DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 секунд"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 секунды"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 секунд"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Домашняя сеть"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Установить"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Роуминг"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Сведения о контакте"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS отправлено"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Сбой получения сообщения"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Сбой отправки сообщения MMS"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Длительность слайда"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Испол. клавишу громкости"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Без названия"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Размер сообщения"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Запрос отправлен"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Не требуется"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Перес."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Непрочитанные"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Повторяющийся получатель"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Достигнуто максимальное число получателей (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Кому"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Записать звук"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Записать видео"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Изменено на MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Изменено на SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Доступно вложений: %d. Выберите не более %d вложений"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Невозможно вложить все файлы. Максимальный размер вложений — %d Кб. Продолжить?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Размер шрифта"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Нет темы"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Выберите адрес"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Вы собираетесь выйти в сеть (%s). Продолжить?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Отправить повторно"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Недопустимый получатель"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Недопустимые получатели"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Воспроизведение во время вызова невозможно"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Невозможно сохранить в режиме съемного диска"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Отметить текущее сообщение?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Выбрано"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Удалить?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Невозможно вложить. Максимальный размер файлов: %d КБ"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Ограниченный"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Не удается переслать.\nПересылка файла заблокирована"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Политика безопасности ограничивает написание SMS"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Добавление. Подождите..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Адрес центра обслуживания"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Большой"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Обычный"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Маленький"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Не удалось отправить запланированное сообщение. Задайте другое время"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Дата и время"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Получатели не введены. Введите получателей"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Параметры отправки"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Обычный"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Отправка SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Получатели"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Сообщение"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "1 раз"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 раза"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 раз"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Я в беде! Мне нужна помощь."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-карта не установлена"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Сделать фото"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Длительность должна быть более %d сек."
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Невозможно добавить содержимое"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Выберите получателя"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Длительность (%s сек.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Слишком большой размер изображения. Сжатие..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Сообщение сохранено как черновик"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Другой"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Черновик"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Отправить E-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Вставленные элементы"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Вложения"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "Вложений: %d"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Запланир.\nсообщение"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Продолжительн.\n(%d с.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Исп. свед. о др. конт."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Сообщение содержит вложенный файл, который не отображается."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Сообщение содержит вложенные файлы, которые не отображаются"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Сохранить все"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Черновики"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Сообщение будет восстановлено"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Запланированное сообщение будет отменено"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Копировать текст"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Просмотреть сведения"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Заблокированные сообщения"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Папки сообщений"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Блокировать"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Копировать на телефон"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Сообщение скопировано с SIM-карты"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Отменить сообщения"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Вложения"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Отправка сбойного сообщения"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Достигнуто максимальное число символов"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Сохранено в папке 'Мои файлы'"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Сведения о сообщении"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Восстановление..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Нет вложений"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Скопировано в буфер обмена"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Копировать на SIM-карту"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Невозможно скопировать"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Выключить защиту"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Включить защиту"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Сохранить вложение"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Восстан."
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Защищенные сообщения"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Отмена..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Точное совпадение"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Начинается с"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Содержит"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Условие совпадения"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Удалить номер"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "Заблокировано: %s"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Удалить это защищенное сообщение?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Разблокировать"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Удаление..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Восстановлено"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Защищенные сообщения"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Защита выключена"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Блокировать %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "Разблокировано: %s"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Запланированное время должно относиться к будущему"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Тип содержимого с ограничениями. Вложить?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Включая защищенные сообщения"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Режим ввода"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-алфавит"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Юникод"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Автоматически"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Введите номер"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Повторяется"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Добавить слово"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Параметры приема"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Номера некоторых получателей недопустимы. Недопустимые получатели не были добавлены. Недопустимые получатели: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Получатель"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Введите слово"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Изменить слово"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Прочитано"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Добавить номер"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Изменить номер"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Удалить слова"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Сообщения, полученные от ваших контактов, не будут блокироваться, даже если в них содержатся заблокированные слова"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Заблокированные номера"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Заблокированные слова"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Об экстренных сообщениях"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Невозможно отправить сообщения в автономном режиме. Отключите автономный режим и повторите попытку"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Откл. автоном. режим"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Сообщение отправлено"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Ошибка отправки сообщения"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Удалить номера"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "В экстренной ситуации заблокируйте клавиатуру и нажмите клавишу уменьшения громкости 4 раза. Экстренные сообщения будут отправлены выбранным получателям. Если получатель экстренного сообщения перезвонит вам, мелодия вызова звучать не будет, а ответ на вызов будет выполнен автоматически. После отправки экстренных сообщений все другие функции устройства останутся недоступными, пока не будет разблокирована клавиатура"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Вы внесены в список получателей экстренных сообщений"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Отправить"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Архивировать"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Экспорт на карту памяти SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Я"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "В процессе..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Уведомление о MMS"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Состояние"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Срок действия: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Некоторые символы могут быть потеряны. Продолжить?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Добавить текст"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Шаблоны SMS"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Вставить смайл"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Неподдерживаемый тип медиаданных"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Отключение автономного режима..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "Бесед: %d"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d сообщ"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "В списке нет шаблонов"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Расширенный поиск"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Шаблоны"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Звук"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Стиль окна сообщения"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Стиль фона"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Параметры сообщения"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Минимальная длительность — %d сек."
+
diff --git a/main/po/sk.po b/main/po/sk.po
new file mode 100755 (executable)
index 0000000..493ab73
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Potvrdenie o doručení"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Potvrdenie o prečítaní"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Vyžiadať potvrdenie o doručení"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Vyžiadať potvrd. o prečít."
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Zoznam položiek"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Presunúť do telefónu"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Režim vytvárania"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Stredisko služieb"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Presunúť na SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Naplánovaná správa"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Nevyžiadané správy"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Typ upozornenia na prijímanie"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Opakovať"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Snímať video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Nahrať zvuk"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Správy CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Správy na karte SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Zobraziť kontakty"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Nedá sa otvoriť"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Stiahnuť"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Nedá sa presunúť"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Dosiahol sa maximálny počet strán"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Obmedzený režim. Nedá sa vložiť obmedzený obsah"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Doručené"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Platnosť vypršala"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Načítavanie..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Pred odoslaním správ vložte SIM kartu. Správa sa uloží do priečinka Na odoslanie"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Zadajte číslo kanála"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 vybratá správa"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Vybraté správy: %d"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Ukážka"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Názov súboru už existuje"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Žiadne správy"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Pridať do kontaktu"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Vyradiť"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Správa sa nedá odoslať"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Odfotiť"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Žiadna adresa"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Zoznam priložených položiek"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automaticky stiahnuť"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Vysielané správy"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centrum %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Vlastný čas"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Odosielanie sa nepodarilo"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Od"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Zoznam vložených položiek"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Správa bola doručená"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Správa načítaná"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Voľné"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Upozornenie"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Odoslané"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "kB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Správa push"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Prijatá"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ručne"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Odmietnuť"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Možnosti príjmu"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Zakázané"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Nízka"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normálna"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Naliehavé"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Dôležitosť"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Odoslať potvrdenie o prečítaní"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Trvanie stránky"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Tiesňové správy"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Celková veľkosť"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Obsah DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekúnd"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekundy"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekúnd"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Domáca sieť"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Inštalovať"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Sieť roaming"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Zobraziť kontaktné údaje"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS odoslaná"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Načítanie správy sa nepodarilo"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Odoslanie multimediálnej správy zlyhalo"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Trvanie snímky"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Použiť tlač. hlasitosti"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Bez názvu"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Veľkosť správy"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Vyžiadané"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nevyžiadané"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Predať"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nepre-čítané"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Duplicitný príjemca"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Dosiahol sa maximálny počet príjemcov (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Komu"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Nahrať zvuk"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Nahrať video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Zmenená na MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Zmenené na SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d príloh k dispozícii. Vyberte maximálne %d príloh"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Nedajú sa priložiť všetky súbory. Maximálna veľkosť príloh je %d kB. Pokračovať?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Veľkosť písma"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Žiadny predmet"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Vyberte adresu"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Chystáte sa prejsť do režimu online (%s). Chcete pokračovať?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Odoslať znova"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Neplatný príjemca"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Neplatní príjemcovia"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Počas hovoru sa nedá prehrávať"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Nemožno uložiť v režime veľkokapacitného ukladacieho priestoru"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Zahodiť aktuálnu správu?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Vybrané"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Odstrániť?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Nedá sa priložiť. Maximálna veľkosť súborov je %d kB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Zakázané"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Nedá sa preposlať ďalej.\nSúbor je zamknutý proti preposielaniu ďalej"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Politika zabezpečenia obmedzuje písanie textových správ"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Pridáva sa. Počkajte, prosím..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresa strediska služieb"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Veľké"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normál."
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Malé"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Naplánovaná správa sa nedá odoslať. Nastavte iný čas"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Dátum a čas"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nepridali sa žiadni príjemcovia. Zadajte príjemcov"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Možnosti odosielania"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normál."
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Odosielanie tiesňovej správy"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Príjemcovia"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Správa"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Raz"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "Trikrát"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "Päťkrát"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Som v tiesňovej situácii. Pomôžte mi, prosím."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM karta nie je vložená"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Fotografovať"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Trvanie musí byť dlhšie než %d sekundy"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Obsah sa nedá pridať"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Vybrať príjemcu"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Trvanie (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Obrázok je príliš veľký. Komprimuje sa..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Správa uložená ako koncept"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Ďalšie"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Koncept"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Odoslať e-mail"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Vložené položky"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Pripojené položky"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "Prílohy: %d"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Naplánovaná\nspráva"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Trvanie\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Použ. ďal. kont. údaje"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Tato správa obsahuje súbor, ktorý nie je uvedený."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Tato správa obsahuje nezobrazené priložené súbory"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Uložiť všetko"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Koncepty správ"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Správa sa obnoví"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Naplánovaná správa sa zruší"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopír. text správy"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Zobr. detaily správy"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Uzamknuté správy"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Schránky správ"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokovať"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopírovať do telefónu"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Správa sa skopírovala z karty SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Zrušiť správu"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Prílohy"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Odosiela sa zlyhaná správa"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Bol dosiahnutý maximálny počet znakov"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Uložené do priečinka Moje súbory"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Podrobnosti o správe"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Obnovenie..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Žiadne prílohy"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Skopírované do schránky"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopírovať na kartu SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Nedá sa kopírovať"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Vypnúť ochranu"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Zapnúť ochranu"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Uložiť prílohu"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Obnoviť"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Chránené správy"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Ruší sa..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Presne rovnaké ako"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Začať s"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Zahrnúť"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Kritériá zhody"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Vymazať číslo"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blokované"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Odstrániť túto chránenú správu?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Odblokovať"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Odstraňovanie..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Obnovené"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Chránené správy"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Ochrana bola odstránená"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Blokovať %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s odblokované"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Naplánovaný čas musí byť nastavený v budúcnosti"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Obmedzený typ obsahu. Priložiť napriek tomu?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Zahrnúť chránenú správu"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "Plánovač S"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Režim vkladania textu"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Abeceda GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automaticky"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Zadať číslo"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplicitné"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Pridať slovo"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Možnosti príjmu"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Niektorí príjemcovia majú neplatné číslo. Neplatní príjemcovia neboli pridaní. Neplatní príjemcovia: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Príjemca"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Zadajte slovo"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Upraviť slovo"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Čítať"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Pridať číslo"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Upraviť číslo"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Odstrániť slová"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Správy prijaté od vašich kontaktov nebudú blokované ani v prípade, ak obsahujú blokované slová"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokované čísla"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokované slová"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Informácie o tiesňových správach"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "V letovom režime nemožno odosielať správy. Vypnite letový režim a skúste to znova"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Vypnúť letový režim"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Správa odoslaná"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Odoslanie správy sa nepodarilo"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Odstrániť čísla"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Ak sú zamknuté tlačidlá, v tiesňovej situácii stlačte 4 razy tlačidlo zníženia hlasitosti. Tým sa odošle tiesňová správa vybraným príjemcom. Ak vám zavolajú naspäť, telefón nebude zvoniť, ale hovor sa prijme automaticky. Po odoslaní tiesňovej správy zostanú všetky ostatné funkcie telefónu nedostupné, až kým nezrušíte zamknutie tlačidiel"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Ste registrovaný ako príjemca správy SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Odoslať"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Zálohovanie"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Exportovať na kartu SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Ja"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Vykonávanie..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Oznámenie o multimediálnej správe"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Stav"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Platnosť do: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Niektoré znaky môžu byť stratené.\nPokračovať?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Pridať text"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Textové šablóny"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Vložiť emotikonu"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nepodporovaný typ média"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Zakazuje sa letový režim..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d konverzácie"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "Počet správ: %d"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Žiadne šablóny v zozname"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Rozšírené hľadanie"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Šablóna"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Zvuk"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Štýl bubliny"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Štýl pozadia"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Možnosti správy"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Trvanie musí byť aspoň %d sekundy"
+
diff --git a/main/po/sl.po b/main/po/sl.po
new file mode 100755 (executable)
index 0000000..49f64cc
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Poročilo o dostavi"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Poročilo o branju"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Zahtevaj poročilo o dostavi"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Zahtevaj poročilo o branju"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Seznam predmetov"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Premakni v telefon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Način ustvarjanja"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Servisni center"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Premakni na SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Načrtovano sporočilo"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Neželena sporočila"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Vrsta opozorila za sprejem"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Ponovi"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Posnemi video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Posnemi zvok"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Sporočila v celici"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Sporočila na kartici SIM"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Prikaži vizitko"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ni mogoče odpreti"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Naloži"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Premikanje ni mogoče"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Doseženo je največje dovoljeno število strani"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Omejen način. Ni mogoče vstaviti omejene vsebine"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Dostavljeno"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Veljavnost je potekla"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Nalagam..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Vstavite kartico SIM za pošiljanje sporočil. Sporočilo se bo shranilo v mapo V pošiljanju"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Vnesi številko postaje"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 sporočilo je izbrano"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d izbranih sporočil"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Predogled"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Ime datoteke že obstaja"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Ni sporočil"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Dodaj v stike"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Zavrzi."
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Ni mogoče poslati sporočila"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Posnemi fotografijo"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Ni naslova"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Seznam pripetih predmetov"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Samodejno nalaganje"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Info sporočila"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Center %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Čas po meri"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Pošiljanje ni uspelo"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Od"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Seznam vnesenih predmetov"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Sporočilo je dostavljeno"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Sporočilo je naloženo"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Prosto"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Opozorilo"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Poslano"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Potisna sporočila"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Prejeto"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ročno"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Zavrni"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Možnosti sprejema"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Omejeno"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Nizka"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Nujno"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Pomembnost"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Pošlji poročilo o branju"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Trajanje strani"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Sporočila v sili"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Besedilna sporočila"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Skupna velikost"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Vsebina DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekund"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekundi"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekund"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Domače omrežje"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Namesti"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Tuje omrežje"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Prikaži podrobnosti stika"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Večpredstavnostno sporočilo je poslano"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Nalaganje sporočila ni uspelo"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Pošiljanje sporočila MMS ni uspelo"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Trajanje za diapozitiv"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Uporab. tipko za glasnost"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Besedilno sporočilo"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Brez naslova"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Velikost sporočila"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Zahtevano"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Ni zahtevano"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Posred."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Neprebr."
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Prejemnik je podvojen"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Doseženo je največje dovoljeno število prejemnikov (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Za"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Posnemi zvok"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Posnemi video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Spremenjeno v MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Spremenjeno v SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Na voljo je %d prilog. Izberite do %d prilog"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Vseh datotek ni mogoče priložiti. Velikost prilog je omejena na %d KB. Želite nadaljevati?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Velikost pisave"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedijsko sporočilo"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Ni zadeve"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Izberi naslov"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Vzpostavili boste povezavo (%s). Nadaljujem?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Znova pošlji"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Neveljaven prejemnik"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Neveljavni prejemniki"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Ni mogoče predvajati med klicem"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Ni mogoče shraniti v načinu shranjevanja"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Zavržem trenutno sporočilo?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Izbrano"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Izbrišem?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Ni mogoče priložiti. Največja dovoljena velikost datotek je %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Omejeno"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Dodajanje ni mogoče. Datoteka ima onemogočeno posredovanje"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Varnostni pravilnik omejuje sestavljanje besedilnih sporočil"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Dodajam. Počakajte ..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Naslov centra za storitve"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Velika"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Majhna"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Drobna"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Načrtovanega sporočila ni mogoče poslati. Nastavite drugo uro"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Datum in čas"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimedijska sporočila"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Ni dodanih prejemnikov. Vnesite prejemnike."
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Možnosti za pošiljanje"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normalno"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Pošiljanje sporočila v sili"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Prejemniki"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Sporočilo"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Enkrat"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3-krat"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5-krat"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Potrebujem pomoč. Pomagajte mi"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM ni vstavljena"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Posnemi sliko"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Trajanje mora biti daljše od %d sekund"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Vsebine ni mogoče dodati"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Izberite prejemnika"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Trajanje (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Slika je prevelika. Stiskam..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Sporočilo shranjeno kot osnutek"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Drugo"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Osnutek"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Pošlji e-pošto"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Vstavljeni elementi"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Priloženi predmeti"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d prilog"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Načrtovano\nsporočilo"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Trajanje\n(%d s)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Up. druge pod. za stik"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Sporočilo vsebuje pripeto datoteko, ki ni prikazana"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "To sporočilo vključuje priložene datoteke, ki niso prikazane"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Shrani vse"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Osnutki sporočil"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Sporočilo bo obnovljeno"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Načrtovano sporočilo bo preklicano"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kop. bes. sporočila"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Prik.podr. sporočila"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Zaklenjena sporočila"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Sporočilna polja"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokiraj"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopiraj v telefon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Sporočilo je kopirano s kartice SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Prekliči sporočilo"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Priloge"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Pošiljanje sporočila ni uspelo"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Doseženo je največje dovoljeno število znakov"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Shranjeno v Moje datoteke"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Podrobnosti sporočila"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Obnavljanje..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Ni prilog"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Kopirano v odložišče"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopiraj na SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Ni mogoče kopirati"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Zaščita je izključena"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Zaščita je vključena"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Shrani prilogo"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Obnovi"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Zaščitena sporočila"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Preklicujem..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Popolnoma enako kot"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Začni"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Vključi"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Merila ujemanja"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Zbriši številko"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blokiranih"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Zbrišem to zaščiteno sporočilo?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Odblokiraj"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Odstranjujem ..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Obnovljeno"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Zaščitena sporočila"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Zaščita je odstranjena"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Blokiram osebo %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s odblokiranih"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Načrtovani čas mora biti nastavljen v prihodnosti"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Omejena vrsta vsebine. Vseeno pripnem?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Vključi zaščiteno sporočilo"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Način za vnos besedila"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "Abeceda GSM"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Samodejno"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Vnesite številko"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Podvojeno"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Dodaj besedo"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Možnosti sprejema"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Nekateri prejemniki imajo neveljavno številko. Ti niso bili dodani. Neveljavni prejemniki: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Prejemnik"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Vnesite besedo"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Uredi besedo"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Preberi"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Dodaj številko"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Uredi številko"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Izbriši besede"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Sporočila, ki jih pošljejo vaši stiki, ne bodo blokirana, tudi če vsebujejo blokirane besede"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokirane številke"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokirane besede"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "O sporočilih SOS"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Ko je omogočen način letenja, pošiljanje sporočil ni mogoče. Onemogočite način letenja in poskusite znova"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Onem. način letenja"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Sporočilo poslano"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Pošiljanje sporočila ni uspelo"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Izbriši številke"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "V nujnih primerih 4-krat pritisnite tipko za nastavljanje glasnosti, ko je tipkovnica zaklenjena. Tako boste izbranim prejemnikom poslali sporočila SOS. Če vas pokličejo nazaj, telefon ne bo zvonil, ampak bo njihov klic samodejno sprejet. Ko pošljete sporočila SOS, vse druge funkcije v telefonu ne bodo na voljo, dokler ne izključite zaklepanja tipk"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Registrirani ste kot prejemnik sporočila SOS."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Poš. zdaj"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Varnostno kopiranje"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Izvozi na kartico SD"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Jaz"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "V teku..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Obvestilo o sporočilu MMS"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Stanje"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Poteče: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Nekaj znakov bo morda izgubljenih.\nNadaljujem?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Dodaj besedilo"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Predloge besedil"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Vstavi smeška"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nepodprta vrsta medija"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Onemogočanje načina letenja ..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d pogovorov"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d sporočil"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Na seznamu ni predlog"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Napredno iskanje"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Predloga"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Zvok"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Slog mehurčka"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Slog ozadja"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Možnosti sporočila"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Trajati mora vsaj %d sekund"
+
diff --git a/main/po/sr.po b/main/po/sr.po
new file mode 100755 (executable)
index 0000000..4043641
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Izveštaj o prispeću"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Čitanje izveštaja"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Zahtevaj izveštaj o prispeću"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Zahtevaj izveš. o čitanju"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Lista stavki"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Prebaci u telefon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Režim kreiranja"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Servisni centar"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Prebaci u SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Planirana poruka"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam poruke"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Tip upozorenja na prijem"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Ponovi"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Snimi video zapis"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Snimi audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Info poruke"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Poruke SIM kartice"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Prikaži kontakt"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Nemoguće otvoriti"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Preuzmi"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Nemoguće premestiti"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Dostignut maksimalan broj strana"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Ograničen režim. Nemoguće ubaciti sadržaj sa ograničenjem prikazivanja"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Isporučeno"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Datum isteka već prošao"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Preuzimanje..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Ubaci SIM karticu radi slanja poruka. Poruka će biti sačuvana u otpremnom sandučetu"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Unesi broj kanala"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Izabrano poruka: 1"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Izabrano poruka: %d"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Pregled"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Naziv fajla već postoji"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Nema poruka"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Dodaj u kontakte"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Odbaci"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Nemoguće poslati poruku"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Slikaj"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Nema adrese"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Lista priloženih stavki"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Automatsko preuzimanje"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Info poruke"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Centar %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Željeno vreme"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Slanje neuspešno"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Od"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Lista ubačenih stavki"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Poruka isporučena"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Poruka primljena"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Slobodno"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Upozorenje"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Poslato"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Pritisne poruke"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Primljeno"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Ručno"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Odbaci"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Opcije prijema"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Ograničeno"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Nizak"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normalan"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Hitno"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritet"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Šalji izveštaj o čitanju"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Dužina prikaza jedne strane"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS poruke"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Tekstualne poruke"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Ukupna veličina"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM sadržaj"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekundi"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekunde"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekundi"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Domaća mreža"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instaliraj"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Strana mreža"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Prikaži podatke o kontaktu"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimedijalna poruka poslata"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Preuzimanje poruke neuspešno"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Slanje multimedijalne poruke neuspešno"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Trajanje prikaza slajda"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Kor. tast. za jač. zvuka"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Tekstualna poruka"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Bez naslova"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Veličina poruke"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Zatraženo"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Nije traženo"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Prosledi"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Neproč."
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Primalac dupliran"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Dostignut maksimalan broj primalaca (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Za"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Snimi zvuk"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Snimi video zapis"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Promenjeno na MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Promenjeno u SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Dostupno je %d priloga. Izaberi do %d priloga"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Nemoguće priložiti sve fajlove. Maksimalna veličina priloga je %d KB. Nastavak?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Veličina fonta"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedijalna poruka"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Nema naslova"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Izaberi adresu"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Prećićete u online režim (%s). Nastaviti?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Ponovi slanje"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Neispravan primalac"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Neispravni primaoci"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Nemoguće reprodukovati tokom poziva"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Nije moguće čuvanje u režimu masovne memorije"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Odbaci trenutnu poruku?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Izabrano"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Obriši?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Nemoguće priložiti. Maks. veličina fajlova je %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Ograničeno"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Nemoguće proslediti. Fajl je zaključan za prosleđivanje"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Politika bezbednosti ograničava pisanje tekstualnih poruka"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Dodavanje. Sačekaj..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adresa servisnog centra"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Velika"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normalan"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Mala"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Mala"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Nije moguće poslati planiranu poruku. Podesi drugo vreme"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Datum i vreme"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimedijalne poruke"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Nisu dodati primaoci. Unesi primaoce"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Opcije slanja"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normalan"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Slanje SOS-a"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Primaoci"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Poruka"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Jednom"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 puta"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 puta"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "U opasnosti sam. Pomozite mi."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM kartica nije ubačena"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Slikaj"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Trajanje mora biti duže od %d sekundi"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Nemoguće dodati sadržaj"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Izaberi primaoca"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Trajanje (%s sek.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Slika prevelika. Sabijanje..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Poruka sačuvana kao skica"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Ostalo"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Skice"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Pošalji e-poruku"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Ubačene stavke"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Priložene stavke"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d priloga"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Planirana\nporuka"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Trajanje\n(%d sek.)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Koristi druge kontakt informacije"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Ova poruka sadrži neprikazan priložen fajl"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Ova poruka sadrži neprikazane priložene fajlove"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Sačuvaj sve"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Skica poruka"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Poruke će biti vraćene"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Planirana poruka će biti otkazana"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopiraj tekst poruke"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Prikaži info. o por."
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Zaključane poruke"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Sandučići"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blokiraj"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopiraj u telefon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Poruka je kopirana sa SIM kartice"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Otkaži poruku"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Prilozi"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Slanje neuspešno poslate poruke"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Dostignut maksimalan broj karaktera"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Sačuvano u Mojim fajlovima"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Informacije o poruci"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Vraćanje..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Nema priloga"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Iskopirano u privremenu memoriju"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopiraj u SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Nemoguće kopirati"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Zaštita isključena"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Zaštita uključena"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Sačuvaj prilog"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Vrati"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Zaštićene poruke"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Prekidanje..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Potpuno isto kao"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Započinje sa"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Uključi"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Kriterijumi pretrage"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Obriši broj"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s blokirano"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Obriši ovu zaštićenu poruku?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Deblokiraj"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Uklanjanje..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Vraćeno"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Zaštićene poruke"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Zaštita je uklonjena"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Blokiraj %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s deblokirano"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Planirano vreme treba da bude u budućnosti"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Zabranjen tip sadržaja. Ipak priloži?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Obuhvati zaštićenu poruku"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S planer"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Način unošenja teksta"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM abeceda"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unikod"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatski"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Unesi broj"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Duplirano"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Dodaj reč"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Opcije prijema"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Neki primaoci imaju nevažeći broj. Nevažeći primaoci nisu dodati. Nevažeći primaoci: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Primalac"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Unesi reč"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Izmeni reč"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Pročitaj"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Dodaj broj"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Izmeni broj"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Izbriši reči"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Poruke koje su primljene od tvojih kontakata neće biti blokirane čak iako sadrže reči koje su blokirane"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blokirani brojevi"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blokirane reči"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "O SOS porukama"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Slanje poruka nije moguće kada je omogućen režim letenja. Onemogući režim letenja i pokušaj ponovo"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Onemog. rež. letenja"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Poruka poslata"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Slanje poruke neuspešno"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Izbriši brojeve"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "U slučaju nužde pritisni taster za utišavanje zvuka 4 puta kada je aktivno zaključavanje tastature. Na taj način se šalje SOS poruka izabranim primaocima. Ako ti uzvrate poziv, telefon neće zazvoniti, već će se poziv automatski odgovoriti. Nakon slanja SOS poruka sve ostale funkcije telefona ostaju nedostupne dok zaključavanje tastature ne prestane da bude aktivno"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Registrovani ste kao primalac SOS poruka."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Poš. sada"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Bekap"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Izvezi na SD karticu"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Ja"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "U toku..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Obaveštenje o multimedijalnoj poruci"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Ističe: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Neki karakteri mogu nestati.\nNastavak?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Dodaj tekst"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Tekst šablon"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Ubaci emotikon"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Nepodržani tip medija"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Onemogućavanje režima letenja..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d razgovora"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d por."
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Nema obrazaca na listi"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Napredna pretraga"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Šablon"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Zvuk"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Stil sa oblačićima"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Stil pozadine"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Opcije u vezi poruka"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Trajanje ne sme biti kraće od %d sekunde/i"
+
diff --git a/main/po/sv.po b/main/po/sv.po
new file mode 100755 (executable)
index 0000000..62ab987
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Leveransrapport"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Läsrapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Begär leveransrapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Begär läsrapport"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Lista över objekt"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Flytta till telefon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Skapaläge"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Tjänstecenter"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Flytta till SIM"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Schemalagt meddelande"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Skräppostmeddelanden"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Tar emot varningstyp"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Upprepa"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Spela in video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Spela in ljud"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB-meddelanden"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-kortsmeddelanden"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Visa kontakter"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Det går inte att öppna"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Hämta"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Det går inte att flytta"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Högsta antal sidor har uppnåtts"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Begränsat läge. Det går inte att infoga begränsat innehåll"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Levererat"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Har slutat gälla"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Hämtar..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Sätt i ett SIM-kort för att skicka meddelanden. Meddelandet sparas i Utkorgen"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Ange kanalnummer"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 valt meddelande"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d valda meddelanden"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Förhandsgranska"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Filnamnet finns redan"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Inga meddelanden"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Lägg till till kontakt"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Avvisa"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Kan inte skicka meddelande"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Ta foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Ingen adress"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Bifogade objekt"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Autohämtning"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Broadcast-meddelanden"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Center %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Egen tid"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Sändningsfel"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Från"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Infogade objekt"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Meddelande levererat"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Meddelande hämtat"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Fritt"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Varning"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Sänt"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push-meddelanden"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Mottaget"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuellt"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Avvisa"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Mottagningsalternativ"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Begränsat"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Låg"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Brådskande"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritet"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Sänd läsrapport"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Sidvaraktighet"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS-meddelanden"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Textmeddelanden"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Total storlek"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM-innehåll"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 sekunder"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 sekunder"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 sekunder"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Hemnät"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Installera"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Roaming-nät"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Visa kontaktinformation"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimediemeddelande skickat"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Fel vid hämtning av meddelande"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Det gick inte att skicka multimediemeddelandet"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Tidslängd för bild"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Använd volymknappen"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Textmeddelande"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Namnlös"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Meddelandestorlek"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Begärt"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Inte begärd"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Vidare."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Olästa"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Mottagare finns redan"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Högsta antalet mottagare (%d) har uppnåtts"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Till"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Spela in ljud"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Spela in video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Ändrad till multimediemeddelande"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Ändrat till SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d bilagor är tillgängliga. Välj upp till %d bilagor"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Det går inte att bifoga alla filer. Högsta kapacitet för bilagor är %d KB. Fortsätta?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Teckenstorlek"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimediemeddelande"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Ingen rubrik"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Välj adress"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Du kommer att ansluta (%s). Fortsätt?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Skicka igen"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Ogiltig mottagare"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Ogiltiga mottagare"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Kan inte spela upp under samtal"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Det går inte att spara i masslagringsläget"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Ignorera aktuellt meddelande?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Vald"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Radera?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Det går inte att bifoga. Högsta filstorlek är %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Begränsat"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Det går inte att vidarebefordra.\nFilen är låst"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Säkerhetspolicy begränsar hur textmeddelanden kan skrivas"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Lägger till. Vänta..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Adress till tjänstcentral"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Stor"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Liten"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Det går inte att skicka schemalagt meddelande. Ange en annan tid"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Datum och tid"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimediemeddelanden"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Inga mottagare har lagts till. Lägg till mottagare"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Sändalternativ"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Sänder SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Mottagare"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Meddelande"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "En gång"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 gånger"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 gånger"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Jag är i nöd. Hjälp mig."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-kortet är inte isatt"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Ta foto"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Varaktigheten måste vara längre än %d sekunder"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Det går inte att lägga till innehåll"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Välj mottagare"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Varaktighet (%s s)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "För stor bild. Komprimerar..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Meddelandet har sparats som utkast"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Annat"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Utkast"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Skicka e-post"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Infogade objekt"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Bifogade objekt"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d bilagor"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Schemalagt\nmeddelande"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Varaktighet\n(%d sek)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Anv. ann. kontaktinfo."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Meddelandet innehåller en bifogad fil som inte visas"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Meddelandet innehåller bifogade filer som inte visas"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Spara alla"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Utkast"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Meddelandet kommer att återställas"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Schemalagt meddelande kommer att avbrytas"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Kopiera medd.text"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Visa meddelandeinfo"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Låsta meddelanden"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Meddelanderutor"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blockera"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Kopiera till telefonen"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Meddelandet har kopierats från SIM-kortet"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Avbryt meddelande"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Bilagor"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Skickar misslyckat meddelande"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Maximalt antal tecken har använts"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Sparat i Mina filer"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Meddelandeinformation"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Återställer..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Inga bilagor"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Kopierat till Urklipp"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Kopiera till SIM"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Det går inte att kopiera"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Skydd av"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Skydd på"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Spara bilaga"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Återställ"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Skyddade meddelanden"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Avbryter..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Exakt"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Starta med"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Inkludera"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Uppfyller kriterier"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Radera nummer"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s har blockerats"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Ta bort detta skyddade meddelande?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Tillåt"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Tar bort..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Återställd"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Skyddade meddelanden"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Skyddet är borttaget"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Blockera %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s har låsts upp"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Schemalagd tid ska vara i framtiden"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Begränsad innehållstyp. Bifoga ändå?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Inkludera skyddat meddelande"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Inmatningsspråk"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-alfabet"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Automatisk"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Ange nummer"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Dubblerad"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Lägg till ord"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Mottagningsalternativ"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Vissa mottagare har ogiltiga nummer. Ogiltiga mottagare har inte lagts till. Ogiltiga mottagare: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Mottagare"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Ange ord"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Redigera ord"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Läst"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Lägg till nummer"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Redigera nummer"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Ta bort ord"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Meddelanden från dina kontakter blockeras inte även om de innehåller blockerade ord"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blockerade nummer"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blockerade ord"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Om SOS-meddelanden"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Det går inte att skicka meddelanden i Flygläget. Inaktivera Flygläget och försök igen"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Inaktivera Flygläge"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Meddelandet skickat"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Meddelandet kunde inte skickas"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Ta bort nummer"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "I en nödsituation trycker du fyra gånger i rad på knappen för volymsänkning när knapplåset är aktiverat. Då skickas SOS-meddelanden till dina valda mottagare. Om de ringer tillbaka till dig ringer inte din telefon, utan samtalet besvaras automatiskt. När SOS-meddelandena har skickats kan inga funktioner på telefonen användas förrän knapplåset har inaktiverats"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Du har registrerats som mottagare av SOS-meddelande."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Skicka nu"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Säkerhetskopiering"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Export till SD-kort"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Mig"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "Multimediemeddelande"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Pågår..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "MMS-meddelande"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Status"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Upphör att gälla: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Det kan hända att tecken försvinner.\nFortsätta?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Lägg till text"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Textmallar"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Infoga uttryckssymbol"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Mediatypen stöds inte"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Inaktiverar Flygläget..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d konversationer"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d meddelanden"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Inga mallar i listan"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Avancerad sökning"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Mall"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Ljud"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Bubbelstil"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Bakgrundsstil"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Alternativ för meddelande"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Varaktigheten måste vara minst %d sekunder"
+
diff --git a/main/po/tr_TR.po b/main/po/tr_TR.po
new file mode 100755 (executable)
index 0000000..22dd922
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "İletim raporu"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Okundu raporu"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "İletim raporu talep et"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Okundu raporu iste"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Öğe listesi"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Telefon'a taşı"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Oluşturma modu"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Servis merkezi"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM'e taşı"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Zamanlı mesaj"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam mesajları"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Alma uyarı türü"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Tekrar"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Video yakala"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Ses kaydet"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB mesajları"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM kart mesajları"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Kişiyi görüntüle"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Açılamıyor"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Al"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Taşınamıyor"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Maksimum sayfa sayısına ulaşıldı"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Kısıtlı mod. Kısıtlı içerik girilemedi"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "İletildi"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Sona erdi"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Alınıyor..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Mesaj gönderebilmek için lütfen SIM kartını takın. Mesaj, Giden Kutusuna kaydedilecektir"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Kanal numarası gir"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mesaj seçildi"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mesaj seçildi"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Önizleme"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Dosya adı zaten kullanılıyor"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Mesaj yok"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Rehbere ekle"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Sil"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Mesaj gönderilemiyor"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Fotoğraf çek"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Adres yok"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Eklenen öğe listesi"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Oto. indirme"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Hücre yayını mesajları"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Merkez %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Özel süre"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Gönderme başarısız"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Kimden"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Dahil öğe listesi"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mesaj iletildi"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mesaj alındı"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Serbest"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Uyarı"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Gönderildi"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "İletim mesajları"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Alınan"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manuel"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Reddet"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Alma seçenekleri"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Kısıtlı"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Düşük"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Acil"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Öncelik"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Okundu raporu gönder"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Sayfa süresi"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Acil durum mesajları"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Metin mesajları"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Toplam boyut"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM içeriği"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 saniye"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 saniye"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 saniye"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Ana şebeke"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Kur"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Dış şebeke"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Kişi detaylarını göster"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimedya mesaj gönderildi"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Mesaj alınamadı"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Multimedya mesajı gönderme başarısız"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Slayt süresi"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Ses tuşunu kullan"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Metin mesajı"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Başlıksız"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Mesaj boyutu"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Talep edildi"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Talep edilmedi"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "İlet"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Okunmamış"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Çoğaltılan alıcı"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Maksimum alıcı sayısına (%d) ulaşıldı"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Alıcı"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Ses kaydet"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Video kaydet"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "MMS olarak değiştirildi"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "SMS olarak değişti"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d ek mevcut. %d eke kadar seçin"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Tüm dosyalar eklenemiyor. Maksimum ekleme kapasitesi %d KB. Devam edilsin mi?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Yazı tipi boyutu"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedya mesajı"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Konu yok"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Adres seçin"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Çevrimiçine(%s) geçmek üzeresiniz. Devam edilsin mi?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Tekrar Gönder"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Geçersiz alıcı"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Geçersiz alıcılar"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Görüşme sırasında çalınamaz"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Yığın depolama modunda kaydetme sağlanamıyor"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Geçerli mesajdan vazgeçilsin mi?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Seçili"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Sil?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Eklenemiyor. Maksimum dosya boyutu %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Kısıtlı"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "İletilemedi.\nDosya iletilmeye karşı kilitli"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Güvenlik ilkesi metin mesajı yazımını kısıtlıyor"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Ekleniyor. Lütfen bekleyin..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Servis merkezi adresi"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Büyük"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Küçük"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Zamanlanan mesaj gönderilemiyor. Başka zaman ayarlayın"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Tarih ve saat"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimedya mesajları"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Alıcı eklenemedi. Alıcı girin"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Gönderme seçenekleri"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "Acil"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Acil durum mesajı gönder"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Alıcılar"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mesaj"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Bir defa"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 kez"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 kez"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Acil bir durumla karşı karşıyayım. Lütfen bana yardım edin."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM takılı değil"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Resim çek"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Süre %d saniyeden uzun olmalıdır"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "İçerik eklenemiyor"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Alıcı seç"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Süre (%s sn)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Resim çok büyük. Sıkıştırılıyor..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mesaj taslak olarak kaydedildi"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Diğer"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Taslak"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "E-posta gönder"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Eklenen öğeler"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Ekli öğeler"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d ek"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Zamanlı\nmesaj"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Süre\n(%d san)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Dğr kişi blglrn kllnın"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Bu mesajda gösterilmemiş ekli dosya var"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Bu mesajda gösterilmemiş bazı ekli dosyalar var"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Tümünü kaydet"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Taslak mesajlar"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Mesaj geri yüklenecek"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Zamanlı mesaj iptal edilecek"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Mesaj metni kopyala"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Mesaj ayrıntı göster"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Kilitli mesajlar"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Mesaj kutuları"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Engelle"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Telefona kopyala"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mesaj SIM karttan kopyalandı"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Mesajı iptal et"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Eklentiler"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Gönderme başarısız mesajı"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Maksimum karakter sayısına ulaşıldı"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Dosyalarım'a kaydedildi"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Mesaj ayrıntıları"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Geri alınıyor..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Eklenti yok"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Panoya kopyalandı"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "SIM'e kopyala"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Kopyalanamıyor"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Koruma kapalı"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Koruma açık"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Eki kaydet"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Geri ykle"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Korumalı mesajlar"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "İptal ediliyor..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Aynısı"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Başlangıç:"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Dahil et"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Eşleşme kriterleri"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Numarayı sil"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s engellendi"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Bu korunan mesaj silinsin mi?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Aç"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Çıkartılıyor..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Geri alındı"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Korumalı mesajlar"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Koruma kaldırıldı"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s engellensin mi?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s için engelleme kaldırıldı"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Planlanan zaman gelecekte ayarlanmalı"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Sınırlı içerik tipi. Yine de eklensin mi?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Korunan mesajı dahil et"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planlayıcı"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Giriş modu"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-Alfabesi"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Çoklu dil"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Otomatik"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Numarayı girin"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Tekrarlanan"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Kelime ekle"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Alma seçenekleri"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Bazı alıcılar geçersiz bir numaraya sahip. Geçersiz alıcılar eklenmedi. Geçersiz alıcılar: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Alıcı"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Kelime gir"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Kelime düzenle"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Oku"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Numara ekle"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Numara düzenle"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Kelimeleri sil"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Kişilerinizden aldığınız mesajlar, engelli sözcükler içerse de engellenmeyecektir"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Engelli numaralar"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Engelli kelimeler"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS mesajları hakkında"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Uçuş modundayken, mesaj gönderilemiyor. Uçuş modunu devre dışı bırakın ve tekrar deneyin"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Uçş mdn dvr dşı brak"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Mesaj gönderildi"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Mesaj gönderme başarısız"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Numaraları sil"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Tuş kilidi devredeyken bir acil durumda ses azaltma tuşuna 4 kez basın. Bu, seçili alıcılarınıza Acil Durum mesajları gönderecektir. Sizi geri ararlarsa, telefon çalmayacaktır fakat arama otomatik olarak yanıtlanacaktır. SOS mesajları gönderdikten sonra telefonun diğer tüm işlevleri tuş kilidi devre dışı bırakılana kadar devre dışı kalacaktır"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Acil durum mesajı alıcısı olarak kayıtlısınız."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Şmdi gndr"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Yedekle"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "SD karta çıkar"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Ben"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Devam ediyor..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimedya mesajı bildirimi"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Durum"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Süresi dolar: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Bazı karakterler kaybolabilir.\nDevam etmek istiyor musunuz?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Metin ekle"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Metin şablonları"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "İfade ekle"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Desteklenmeyen ortam türü"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Uçuş modu kapatılıyor..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d görüşme"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d mesaj"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Listede şablon yok"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Gelişmiş arama"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Şablon"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Ses"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Kabarcık stili"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Arkaplan stili"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Mesaj seçenekleri"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Süre en az %d saniye olmalı"
+
diff --git a/main/po/uk.po b/main/po/uk.po
new file mode 100755 (executable)
index 0000000..4c6c16e
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Звіт про доставку"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Звіт про прочитання"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Запитувати звіт про доставку"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Запит. звіт про прочитання"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Список об’єктів"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Перемістити в телефон"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Режим створення"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "SMS-центр"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Перемістити на SIM-картку"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Заплановане повідомлення"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Небажані повідомлення"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Тип отримуваного сигналу"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Повторити"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Відеозйомка"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Записати звук"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB-повідомлення"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Повідомлення SIM-картки"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Переглянути контакт"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Неможливо відкрити"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Отримати"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Неможливо перемістити"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Досягнуто максимальної кількості сторінок"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Обмежений режим. Неможливо вставити обмежений вміст"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Доставлено"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Термін дії вже минув"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Отримання..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Щоб надіслати повідомлення, вставте SIM-картку. Повідомлення буде збережено у вихідних"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Введіть номер каналу"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "Вибрано 1 повідомлення"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "Вибрано повідомлень: %d"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Попередній перегляд"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Файл з такою назвою вже існує"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Немає повідомлень"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Додати до контакту"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Скасувати"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Неможливо надіслати повідомлення"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Сфотографувати"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Без адреси"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Приєднано список об’єктів"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Автозавантаження"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "СВ-повідомлення"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Центр %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Призначити час"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Збій надсилання"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Від"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Вставлено список об’єктів"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Повідомлення доставлено"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Повідомлення отримано"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Вільно"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Попередження"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Надіслано"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "Б"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "КБ"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push-повідомлення"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Отримано"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Вручну"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Відхилити"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Опції отримання"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Обмежено"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Низький"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Звичайний"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Терміново"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Пріоритет"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Надіслати звіт про прочитання"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Тривалість сторінки"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Екстрені повідомлення"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "SMS-повідомлення"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Загальний розмір"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Вміст DRM"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 секунд"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 секунди"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 секунд"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Домашня мережа"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Встановити"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Мережа роумінгу"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Переглянути деталі контакту"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "MMS-повідомлення надіслано"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Збій отримання повідомлення"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Збій під час надсилання MMS"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Тривалість слайда"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Викор. клавіші гучності"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "SMS"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Без назви"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Розмір повідомлення"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Запитано"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Немає запитів"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Перес."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Непроч."
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Повторення одержувача"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Досягнуто максимальної кількості одержувачів (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Кому"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Записати звук"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Записати відео"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Змінено на MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Змінено на SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "Доступно вкладень: %d. Виберіть не більше %d вкладень"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Неможливо вкласти всі файли. Максимальний обсяг вкладень: %d КБ. Продовжити?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Розмір шрифту"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS-повідомлення"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Немає теми"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Вибрати адресу"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Підключення до інтернету (%s) Продовжити?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Повторити надсилання"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Хибний одержувач"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Неприпустимі одержувачі"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Неможливо відтворити під час виклику"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Неможливо зберегти в режимі накопичувача"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Скасувати поточне повідомлення?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Вибрано"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Видалити?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Неможливо вкласти. Максимальний розмір файлів становить %d КБ"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Обмежено"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Неможливо переслати.\nЗаблоковано пересилання файлу"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Створення SMS-повідомлень обмежено політикою безпеки"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Додавання. Зачекайте..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Адреса сервісного центру"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Великий"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Звичайний"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Малий"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Дуже маленький"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Неможливо надіслати заплановане повідомлення. Встановіть інший час"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Дата і час"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "MMS-повідомлення"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Одержувачів не додано. Введіть одержувачів"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Опції надсилання"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Звичайний"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Надсилання екстреного повідомлення"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Одержувачі"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Повідомлення"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Один раз"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 рази"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 разів"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Я в надзвичайній ситуації. Допоможіть мені."
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-картку не вставлено"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Зробити знімок"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Тривалість має бути більшою за %d сек."
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Неможливо додати вміст"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Вибір одержувача"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Тривалість (%s сек.)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Фотографія завелика. Стискання..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Повідомлення збережено як чернетку"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Інші"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Чернетка"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Надіслати Email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Вставлені об'єкти"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Вкладені об’єкти"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d вкладень"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Запланов.\nповідомлення"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Тривалість\n(%d сек)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Вик. інші конт. дані"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Це повідомлення включає приєднаний файл, що не відображений."
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Це повідомлення включає приєднані файли, що не відображені."
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Зберегти все"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Чернетки повідомлень"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Повідомлення буде відновлено"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Заплановане повідомлення буде скасовано"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Копіюв. текст повід."
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Перегл. повідомлення"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Захищені повідомлення"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Вікна повідомлень"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Блокувати"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Копіювати на телефон"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Повідомлення скопійовано із SIM-картки"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Скасувати надсилання повідомлення"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Вкладення"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Надсилання повідомлення, з яким стався збій"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Досягнуто максимальної кількості символів"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Збережено в моїх файлах"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Деталі повідомлення"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Відновлення..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Без вкладень"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Скопійовано в буфер обміну"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "Копіювати на SIM-картку"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Неможливо скопіювати"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Зняти захист"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Увімкнути захист"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Зберегти вкладення"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Відновити"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Захищені повідомлення"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Скасування..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Повністю збігається з"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Розпочати"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "Додати"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Критерій блокування"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Видалити номер"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s заблоковано"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Видалити це захищене повідомлення?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Розблокувати"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Видалення..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Відновлено"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Захищені повідомлення"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Захист знято"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "Заблокувати абонента %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s розблоковано"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Запланований час слід встановити у майбутньому"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Заборонений тип вмісту. Все одно вкласти?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Включити захищене повідомлення"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Режим введення"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM-алфавіт"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Юнікод"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Автоматично"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Введіть номер"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Повторюється"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "Додати слово"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Опції отримання"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Номери деяких одержувачів хибні. Недійсні одержувачі не додані. Хибні одержувачі: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Одержувач"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "Введіть слово"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "Редагувати слово"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "Прочитане"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Додати номер"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Редагувати номер"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Видалити слова"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Повідомлення від контактів не блокуватимуться, навіть якщо вони міститимуть заблоковані слова"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Заблоковані номери"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Заблоковані слова"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "Про екстрені повідомлення"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Неможливо надсилати повідомлення в режимі без зв’язку. Вимкніть режим без зв'язку та спробуйте ще раз"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Вимк.реж.без зв’язку"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Повідомлення надіслано"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Збій надсилання повідомлення"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Видалити номери"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "У разі виникнення надзвичайної ситуації натисніть клавішу зменшення гучності 4 рази при заблокованій клавіатурі. Екстрені повідомлення будуть надіслані на номери вказаних одержувачів. Якщо вони вам зателефонують, телефон не дзвонитиме, але їх виклики буде прийнято автоматично. Після надсилання екстрених повідомлень усі інші функції телефону залишатимуться недоступними, доки клавіатуру не буде розблоковано"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Вас зареєстровано як одержувача екстреного повідомлення."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Над. зар."
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Резервне копіювання"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "Експортувати на карту пам’яті"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Я"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Триває відправка..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Сповіщення про MMS-повідомлення"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Стан"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Дійсне до: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Деякі символи може бути втрачено.\nПродовжити?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Додати текст"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Шаблони тексту"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Вставити емозначку"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Формат не підтримується"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Вимкнення режиму без зв’язку..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d розмов"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d повід."
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "У списку немає шаблонів"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Додатковий пошук"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Шаблон"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Аудіо"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Стиль вікна"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Стиль фону"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Опції повідомлення"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Тривалість має становити принаймні %d сек."
+
diff --git a/main/po/uz.po b/main/po/uz.po
new file mode 100755 (executable)
index 0000000..6f8358e
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Yetkazilganlik haqidagi hisobot"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "O‘qilgan haqidagi hisobot"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Yetkazish haqidagi hisobot so‘rovi"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "O‘qilganlik haqidagi hisobot so‘rovi"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Element ro‘yxati"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Telefonga ko‘chirish"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Yaratish rejimi"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Xizmat ko‘rsatish markazi"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM-kartaga ko‘chirish"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Rejalashtirilgan xabar"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Spam xabarlari"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Signal turini qabul qilish"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Takrorlash"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Video olish"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Audio yozib olish"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "CB xabarlari"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM-karta xabarlari"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Kontaktlarni ko‘rib chiqish"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Ochib bo‘lmaydi"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Qayta olish"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Ko‘chirib bo‘lmaydi"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Sahifalar soni ruxsat etilgan maksimal miqdorga yetdi"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Cheklangan rejim. Cheklangan tarkibni kiritib bo‘lmaydi"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Yetkazildi"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Amal qilish muddati tugadi"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Qayta olinmoqda..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Xabarlarni yuborish uchun, SIM-kartani kiriting. Xabar Chiqish qutisida saqlanadi"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Kanal raqamini kiriting"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 xabar tanlandi"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d xabar tanlandi"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Oldindan ko‘rib chiqish"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Fayl nomi avvaldan mavjud"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Xabarlar yo‘q"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Kontaktga qo‘shish"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Rad etish"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Xabarni yuborib bo‘lmaydi"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Suratga olish"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Manzil mavjud emas"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Attached item list"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Avto-yuklab olish"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Eshittirishli xabarlar"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Markaz %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "O‘rnatilgan vaqt"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Yuborib bo‘lmadi"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Quyidagidan"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Kiritilgan elementlar ro‘yxati"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Xabar yetkazildi"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Xabar qayta olindi"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Bo‘sh"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Ogohlantirish"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Yuborildi"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Tanlash xabarlari"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Qabul qilindi"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Qo‘lda"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Rad etish"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Qabul qilish opsiyalari"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Cheklangan"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Past"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Shoshilinch"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Ustunlik"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "O‘qilganlik haqida hisobot yuborish"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Sahifa davomiyligi"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS xabarlari"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Matnli xabarlar"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Jami o‘lcham"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM tarkib"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 soniya"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 soniya"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 soniya"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Uy tarmog‘i"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "O‘rnatish"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Tashqi tarmoq"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Kontakt tafsilotini ko‘rib chiqish"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Multimedia xabari yuborildi"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Xabarni qayta olish bajarilmadi"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Multimedia xabarini yuborish bajarilmadi"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Slayd namoyishi davomiyligi"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "Balandlik tugmasini ishl."
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "Matnli xabar"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "Nomsiz"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "Xabar o‘lchami"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "Talab qilindi"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "Talab qilinmaydi"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Bosh/yub"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "O‘qilmagan"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Takrorlanadigan qabul qiluvchi"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Qabul qiluvchilar soni ruxsat etilgan maksimal miqdorga (%d) yetdi"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Kimga"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Tovushni yozib olish"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Video yozib olish"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "MMSga o‘zgartirildi"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "SMSga o‘zgartirildi"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d biriktirmadan foydalanish mumkin. Eng ko‘pi bilan %d biriktirma tanlang"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Unable to attach all files. Maximum attachment capacity %d KB. Continue?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Shrift o‘lchami"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedia xabari"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Mavzu yo‘q"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Manzil tanlash"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Internetga ulanish arafasidasiz(%s). Davom ettirilsinmi?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Qay. Yub."
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Noto'g'ri qabul qilib oluvchi"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Noto‘g‘ri qabul qiluvchilar"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Qo‘ng‘iroq mobaynida o‘ynatib bo‘lmaydi"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Katta hajmli xotira rejimida saqlab bo‘lmaydi"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Joriy xabar rad etilsinmi?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Tanlangan"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "O'chirilsinmi?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Biriktirib bo‘lmaydi. Fayllarning mumkin bo‘lgan maksimal o‘lchami: %d Kb"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Cheklangan"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Boshqaga yo‘naltirib bo‘lmaydi.\nFayl boshqaga yo‘naltirishdan bloklangan"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Xavfsizlik siyosati matnli xabarlar yaratilishini cheklaydi"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Qo‘shilmoqda. Iltimos, kuting..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Xizmat ko‘rsatish markazi manzili"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Katta"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Kichik"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Mitti"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Rejadagi xabarni yuborib bo‘lmaydi. Boshqa vaqt o‘rnating"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Sana va vaqt"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Multimedia xabarlari"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Oluvchilar qo‘shilmagan. Oluvchilarni kiritish"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Yuborish variantlari"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "SOS yuborish"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Oluvchilar"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Xabar"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Bir marta"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 marta"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 marta"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Men favqulodda holatdaman. Iltimos, yordam bering"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM-karta kiritilmadi"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Rasmga olish"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Davomlilik %d soniyadan ko‘proq bo‘lishi lozim"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Tarkib qo‘shib bo‘lmaydi"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Qabul qiluvchini tanlang"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Davomlilik (%s soniya)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Rasm juda katta. Zichlash..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Xabar qoralama sifatida saqlandi"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Boshqa"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Qoralama"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "E-pochta yub."
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Kiritilgan elementlar"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Biriktirilgan elementlar"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d biriktirma"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Rejalashtirilgan\nxabar"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Davomliligi\n(%d soniya)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Boshqa kntk ma’l. foyd"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Ushbu xabar ko‘rsatilmagan biriktimaga ega"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Ushbu xabarda ko‘rsatilmagan biriktirilgan fayllar mavjud"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Barchasini saqlash"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Qoralama xabarlar"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Xabar tiklanadi"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Rejalashtirilgan xabar bekor qilinadi"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Xabar matnini nusxa"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Xabar tafs. ko‘rish"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Bloklangan xabarlar"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Xabar qutilari"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Bloklash"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Telefonga nusxa ko‘chirish"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Xabar SIM-kartadan nusxa ko‘chirildi"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Xabarni bekor qilish"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Biriktirmalar"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Yuborilmagan xabarni yuborish"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Belgilar soni ruxsat etilgan maksimal miqdorga yetdi"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "Mening fayllarimda saqlangan"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Xabar tafsilotlari"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Tiklanmoqda..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Biriktirmalar yo‘q"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Buferga nusxa olindi"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "SIM-kartaga nusxa ko‘chirish"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "Nusxa ko‘chirib bo‘lmaydi"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "Himoya o‘ch."
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "Himoya yoq."
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "Biriktirmani saqlash"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "Tiklash"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "Himoyalangan xabarlar"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "Bekor qilinmoqda..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "Quyidagi bilan bir xil"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "Quyidagi bilan boshlash"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "O‘z ichiga oladi"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "Moslik kriteriyasi"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "Raqamni o'chirish"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s bloklandi"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "Ushbu himoyalangan xabar o'chirib tashlansinmi?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "Blokdan chiqaring"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "Olib tashlanmoqda..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "Tiklandi"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "Himoyalangan xabarlar"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "Himoya olib tashlandi"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "%s bloklansinmi?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s blokdan chiqarildi"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "Belgilangan vaqt keyinchalik o‘rnatilishi kerak"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "Taqiqlangan tarkib turi. Baribir biriktirilsinmi?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "Himoyalangan xabar mavjud"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "Kiritish rejimi"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM alifbo"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Yunikod"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "Avtomatik"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "Raqam kiriting"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "Dublikatlangan"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "So‘z qo‘shish"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "Qabul qilish opsiyalari"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "Ba’zi qabul qiluvchilar noto‘g‘ri raqamga ega. Noto‘g‘ri qabul qiluvchilar qo‘shilmadi. Noto‘g‘ri qabul qiluvchilar: %s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "Oluvchi"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "So‘z kiriting"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "So‘zni tahrirlash"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "O‘qilganlar"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "Raqam qo‘shish"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "Raqamni tahrirlash"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "So‘zlarni yo‘q qilish"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Kontaktlaringizdan kelgan xabarlar bloklanmaydi, hatto ular bloklangan so‘zlarga ega bo‘lsa ham"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Bloklangan a’zolar"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Bloklangan so‘zlar"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "SOS xabarlari haqida"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "Uchish rejimida xabarlar yuborib bo‘lmaydi. Uchish rejimini o‘chiring va qayta urinib ko‘ring"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "Uchish rejimini o‘ch"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "Xabar yuborildi"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "Xabarni yuborib bo‘lmadi"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "Raqamlarni o‘chirib tashlash"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "Favqulodda vaziyatlarda klaviatura bloki faolligida ovozni pasaytirish tugmasini 4 marta bosing. Bu Sizning tanlangan qabul qiluvchilaringizga SOS xabarlarini yuboradi. Agar ular Sizga qayta qo‘ng‘iroq qilishsa, telefon ringtoni chalinmaydi, lekin ularning qo‘ng‘irog‘iga avtomatik ravishda javob beriladi. SOS xabarlarini yuborishdan so‘ng klaviatura bloklanishi faollashtirilguniga qadar telefondagi boshqa barcha funksiyalardan foydalanib bo‘lmaydi"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "Siz SOS xabari qabul qiluvchisi sifatida ro‘yxatdan o‘tgansiz."
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "Hozir/yub"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "Arxiv"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "SD-kartaga eksport qilish"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "Men"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "Bajarilmoqda..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "Multimedia xabari eslatmasi"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "Holat"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "Amal qilish muddati: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "Ba’zi belgilar yo‘qotilishi mumkin. Davom ettirilsinmi?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "Matn qo‘shish"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "Matn shablonlari"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "Hissiyot ikonchasi kiritish"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "Qo‘llab-quvvatlanmaydigan media turi"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "Uchish rejimi o‘chirilmoqda..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d suhbat"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d xabar"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "Ro‘yxatda shablonlar yo‘q"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "Kengaytirilgan qidiruv"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "Shablon"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "Audio"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "Pufakchalar uslubi"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "Fon uslubi"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "Xabar opsiyalari"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "Davomlilik kamida %d soniya bolishi lozim"
+
diff --git a/main/po/zh_CN.po b/main/po/zh_CN.po
new file mode 100755 (executable)
index 0000000..7f5a90c
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "发送报告"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "阅读报告"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "要求送达报告"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "要求阅读报告"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "项目列表"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "移动到手机"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "创建模式"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "短信息服务中心"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "移动到 SIM 卡"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "定时信息"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "垃圾信息"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "接收提示类型"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "重复"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "拍摄录像"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "录音"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "小区信息"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM卡信息"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "查看联系人"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "无法打开"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "取回"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "无法移动"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "已达页面最大数量"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "受限模式。 无法插入受限内容"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "已送达"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "已过期"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "取回中..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "插入 SIM 卡以发送信息。信息将被存于发件箱"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "输入频道号码"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "已选择一条信息"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "已选择%d条信息"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "预览"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "文件名已存在"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "无信息"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "添加到联系人"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "放弃"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "无法发送信息"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "拍照"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "无地址"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "附件列表"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "自动下载"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "广播信息"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "中心 %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "自定时间"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "发送失败"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "发件人"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "已插入项目列表"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "信息已送达"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "信息已取回"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "自由"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "警告"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "已发送"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "推送信息"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "已接收"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "手动"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "拒绝"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "接收选项"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "限制"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "低"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "紧急"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "优先级"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "发送读取报告"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "页面持续时间"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS信息"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "短信"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "总大小"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM 内容"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 秒"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 秒"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 秒"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "本地网络"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "安装"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "外国网络"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "查看联系人详细信息"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "彩信已发送"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "取回失败"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "发送彩信失败"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "幻灯片持续时间"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "使用音量键"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "短信息"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "无主题"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "信息大小"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "已发出请求"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "未请求"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "转发"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "未读"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "重复的收件人"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "已达到最大收件人数量(%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "至"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "录音"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "拍摄录像"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "更改为彩信"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "已更改为短信"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d个文件可用。至多可选择%d个附件"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "无法附加所有文件。附件的最大容量为%dKB。继续?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "字体大小"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "彩信"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "没有主题"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "选择地址"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "您将上网(%s)。 继续?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "重新发送"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "无效收件人"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "无效收件人"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "通话中无法播放"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "大容量存储模式打开,无法保存"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "丢弃当前信息?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "已选择"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "删除?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "无法附加。最大文件大小是 %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "限制"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "无法转寄\n文件已锁上转寄"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "安全政策限制编写短信"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "添加中,请稍等…"
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "服务中心地址"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "大"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "小"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "微小"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "无法发送定时信息。设置其他时间"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "日期和时间"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "彩信"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "没有添加收件人,请输入联系人"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "发送选项"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "发送SOS信息"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "收件人"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "信息"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "一次"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 次"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 次"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "我的情况很紧急。请帮帮我"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "未插入 SIM 卡"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "拍照"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "持续时间必须长于 %d 秒"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "无法添加内容"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "选择收件人"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "持续时间(%s秒)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "图片太大。压缩中…"
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "信息已保存为草稿"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "其他"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "草稿"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "发送邮件"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "插入的项目"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "附件条目"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d个附件"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "定时\n消息"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "时长\n(%d 秒)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "使用其他联系人信息"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "此信息包含一个未显示的附件"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "此信息包含未显示的附件"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "全部保存"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "信息草稿"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "将恢复信息"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "定时信息将取消"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "复制信息文本"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "查看信息详情"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "锁定信息"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "信箱"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "阻止"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "复制至手机"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "从 SIM 卡复制的信息"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "取消信息"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "附件"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "发送失败的信息"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "已达到最大字符限制"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "已保存在我的文件中"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "消息详情"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "恢复中..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "无附件"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "已复制到剪贴板"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "复制至 SIM 卡"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "无法复制"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "保护关闭"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "保护启动"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "存储附件"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "恢复"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "受保护信息"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "取消中..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "完全一样"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "开始于"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "包括"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "匹配标准"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "删除号码"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s 已阻止"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "删除该保护信息?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "取消阻止"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "正在移除..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "已恢复"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "受保护信息"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "保护已移除"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "阻止%s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "已取消阻止 %s"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "预定的时间应当在将来"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "被限制的内容类型。仍然附加?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "包括保护信息"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S日历"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "输入模式"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM 字母系统"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "单一码"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "自动"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "输入号码"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "重复"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "添加单词"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "接收选项"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "部分收件人号码无效。未添加无效收件人。无效收件人:%s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "收件人"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "输入单词"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "编辑文字"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "阅读"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "添加号码"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "编辑号码"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "删除词"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "从您的联系人接收的信息不会被阻止,即使其含有已阻止的词语"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "已阻止数字"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "已阻止词语"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "关于 SOS 信息"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "飞行模式下无法发送信息。禁用飞行模式并重试"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "禁用飞行模式"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "已发送"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "发送信息失败"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "删除号码"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "当按键锁激活时,在紧急情况下按音量键 4 次。这将发送 SOS 信息给您选中的收件人。如果他们回拨过来,手机不会发出铃声但会自动接听来电。在发送 SOS 信息后,手机上的所有其他功能将保持不可用,直至按键锁不再激活"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "您已注册为 SOS 信息收件人。"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "立即发送"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "备份"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "导出到SD卡"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "我"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "彩信"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "进行中..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "彩信通知"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "状态"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "到期时间: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "可能丢失部分字符。\n继续?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "添加文本"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "文本模板"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "插入动感图标"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "不支持的媒体类型"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "正在取消飞行模式…"
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%1$d 个会话"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d 条信息"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "列表中无模板"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "高级搜索"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "常用短语"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "声音"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "泡泡类型"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "背景风格"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "信息选项"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "持续时间必须至少%d秒"
+
diff --git a/main/po/zh_HK.po b/main/po/zh_HK.po
new file mode 100755 (executable)
index 0000000..f75460c
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "傳遞報告"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "讀取報告"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "請求傳遞報告"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "請求讀取報告"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "項目清單"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "移動到手機"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "建立模式"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "服務中心"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "移動到 SIM 卡"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "預定的訊息"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "垃圾訊息"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "接收提示類型"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "重複"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "拍攝影片"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "錄音"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "區域廣播訊息"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM 卡訊息"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "檢視聯絡人"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "無法開啟"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "取回"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "無法移動"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "頁面數目已達上限"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "限制模式。無法插入限制的內容"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "已傳遞"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "已過期"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "正在取回..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "插入 SIM 卡以發送訊息。訊息將會儲存到寄件匣"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "輸入頻道數字"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "已選擇 1 則訊息"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "已選擇 %d 則訊息"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "預覽"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "檔案名稱已存在"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "無訊息"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "加到聯絡人"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "捨棄"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "無法發送訊息"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "拍照"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "無地址"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "已附加項目清單"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "自動下載"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "廣播訊息"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "中心 %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "自訂時間"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "發送失敗"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "由"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "已插入項目清單"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "訊息已傳遞"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "訊息已取回"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "可用"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "警告"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "已發送"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "推送訊息"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "已接收"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "手動"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "拒絕"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "接收選項"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "限制"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "低"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "緊急"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "優先次序"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "發送讀取報告"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "頁面持續時間"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS 訊息"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "文字訊息"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "總大小"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM 內容"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 秒"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 秒"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 秒"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "本地網絡"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "安裝"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "漫遊網絡"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "檢視聯絡人詳細資料"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "已發送多媒體訊息"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "取回訊息失敗"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "發送多媒體訊息失敗"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "投影片持續時間"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "使用音量鍵"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "文字訊息"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "無標題"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "訊息大小"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "已請求"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "未要求"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "轉寄"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "未讀"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "重複的收件人"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "已達收件人的數量上限(%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "至"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "錄音"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "錄影"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "更改為 MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "已更改為短訊"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d 個附件可用。最多可選擇 %d 個附件"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "無法附加全部檔案。附件容量上限為 %d KB。是否繼續?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "字體大小"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "多媒體訊息"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "無主題"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "選擇地址"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "您即將上網 (%s)。要繼續嗎?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "重新發送"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "無效收件人"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "無效收件人"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "通話期間無法播放"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "在大容量儲存裝置模式下,無法儲存"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "捨棄目前的訊息嗎?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "已選擇"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "刪除嗎?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "無法附加。檔案最大為%d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "限制"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "無法轉寄。\n檔案轉寄功能已鎖定"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "安全政策限制撰寫文字訊息"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "加入中。請稍候…"
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "服務中心地址"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "大"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "小"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "微小"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "無法發送預定訊息。請設定其他時間"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "日期和時間"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "多媒體訊息"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "未加入收件人。請輸入收件人"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "發送選項"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "發送 SOS 訊息"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "收件人"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "訊息"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "1 次"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 次"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 次"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "我現在情況緊急。請救我"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM 卡未插入"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "拍照"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "持續時間必須超過 %d 秒"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "無法加入內容"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "選擇收件人"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "持續時間 (%s 秒)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "圖片太大。壓縮中…"
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "訊息已存成草稿"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "其他"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "草稿"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "發送電子郵件"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "已插入項目"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "已附加項目"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d 個附件"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "已排程\n訊息"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "持續時間n(%d 秒)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "使用其他聯絡人資訊"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "此訊息包括一個未顯示的附加檔案"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "此訊息包括未顯示的附加檔案"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "全部儲存"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "草稿訊息"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "訊息將被復原"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "預定訊息將被取消"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "複製訊息文字"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "檢視訊息詳情"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "已鎖定訊息"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "訊息箱"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "封鎖"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "複製到手機"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "從 SIM 卡複製訊息"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "取消訊息"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "附件"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "正在發送失敗的訊息"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "字元數目已達上限"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "儲存到我的檔案"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "訊息詳情"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "正在還原..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "無附件"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "已複製到剪貼板"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "複製到 SIM 卡"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "無法複製"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "保護關"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "保護開"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "儲存附件"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "還原"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "受保護訊息"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "正在取消..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "完全相同於"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "開始以"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "包括"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "符合標準"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "刪除號碼"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s已封鎖"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "刪除這個受保護的訊息?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "取消封鎖"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "正在移除..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "已還原"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "受保護訊息"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "已移除保護"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "封鎖 %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s已解封"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "列入日程的時間需設為未來時間"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "受限制的內容類型。仍要附加?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "包括受保護的訊息"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "輸入方法"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM 字符表"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "自動"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "輸入號碼"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "重複"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "加入單詞"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "接收選項"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "部分收件人的號碼無效。未加入無效收件人。無效收件人:%s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "收件人"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "輸入字詞"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "編輯字詞"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "已讀取"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "加入號碼"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "編輯號碼"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "刪除字詞"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "不會封鎖來自聯絡人的訊息,即使其中包含已封鎖的字詞"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "已封鎖號碼"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "已封鎖字詞"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "關於 SOS 訊息"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "在飛行模式中無法發送訊息。停用飛行模式並重試"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "停用飛行模式"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "訊息已發送"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "發送訊息失敗"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "刪除號碼"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "緊急時,在鎖定鍵啟用的情況下按四下降低音量鍵。如此將能發送 SOS 訊息給選擇的收件人。若他們回撥,手機將不會響鈴,但是會自動接聽通話。在發送 SOS 訊息後,所有手機的其他功能皆將無法使用,直到鎖定鍵不再啟用"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "您已註冊為 SOS 訊息收件人。"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "現在發送"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "備份"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "匯出到SD卡"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "我"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "MMS"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "正在進行..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "多媒體訊息通知"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "狀態"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "到期:%s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "部分字元可能遺失。繼續嗎?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "加入文字"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "文字範本"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "插入表情符號"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "不支援的媒體類型"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "正在停用飛行模式..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d 個對話"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d 個訊息"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "清單中無範本"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "進階搜尋"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "範本"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "音訊"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "對話框樣式"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "背景風格"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "訊息選項"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "持續時間必須至少 %d 秒"
+
diff --git a/main/po/zh_SG.po b/main/po/zh_SG.po
new file mode 100755 (executable)
index 0000000..dda2b74
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "送达报告"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "阅读报告"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "要求传递报告"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "要求阅读报告"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "项目列表"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "移动到手机"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "创建模式"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "简讯服务中心"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "移动到SIM卡"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "预发的讯息"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "垃圾信息"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "接收提示类型"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "重复"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "拍摄视频"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "录音"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "小区信息"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM卡信息"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "查看联系人"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "无法打开"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "取回"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "无法移动"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "已达页面最大数量"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "受限模式。 无法插入受限内容"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "已送达"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "已过期"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "取回中…"
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "插入 SIM 卡以发送讯息。讯息将被储存至发件箱。"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "输入频道号码"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "已选择一条信息"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "已选择%d条信息"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "预览"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "文件名已存在"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "无讯息"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "添加到联系人"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "放弃"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "无法发送信息"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "拍照"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "无地址"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "已附加项目列表"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "自动下载"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "广播讯息"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "中心 %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "自定时间"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "发送失败"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "发件人"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "已插入项目列表"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "信息已送达"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "信息已取回"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "自由"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "警告"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "已发送"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Push 简讯"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "已接收"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "手动"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "拒绝"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "接收选项"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "限制"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "低"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "紧急"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "优先"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "发送阅读报告"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "页面持续期间"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "求救讯息"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "简讯"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "总大小"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM 内容"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 秒"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2秒"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5秒"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "本地网络"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "安装"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "外国网络"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "查看联系人详细信息"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "彩信已发送"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "取回失败"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "发送彩信失败"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "幻灯片持续时间"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "使用音量键"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "简讯"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "未命名"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "讯息大小"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "已发出请求"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "未请求"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "转发"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "未读"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "重复的收件人"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "已达到最大收件人数量(%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "到"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "录制声音"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "拍摄录像"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "已改为 MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "已更改为短信"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d个文件可用。至多可选择%d个附件"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "无法附加所有文件。附件的最大容量为%dKB。继续?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "字体大小"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "多媒体简讯"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "没有主题"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "选择地址"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "您将上网(%s). 继续?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "重新发送"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "无效收件人"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "无效收件人"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "通话中无法播放"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "大容量存储模式期间无法保存"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "丢弃当前信息?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "已选择"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "删除?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "无法附加。最大文件大小是 %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "限制"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "无法转发。\n文件转发已锁"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "安全政策限制编写短信"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "添加中,请稍等…"
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "服务中心地址"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "大"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "小"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "细小"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "无法发送预定信息。设置其他时间"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "日期和时间"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "多媒体简讯"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "没有添加收件人,请输入联系人"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "发送选项"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "紧急求助"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "发送SOS讯息"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "收件人"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "讯息"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "一次"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3次"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5次"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "我的情况很紧急。请帮帮我"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "未插入 SIM 卡"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "拍照"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "持续时间必须长于 %d 秒"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "无法添加内容"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "选择收件人"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "持续时间(%s秒)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "图片太大。压缩中…"
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "讯息已保存为草稿"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "其他"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "草稿"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "发送电邮"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "插入的项目"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "已添加的项目"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d个附件"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "定时\n消息"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "时长\n(%d 秒)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "使用其他联系人信息"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "此讯息包含一个未显示的附件"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "此讯息包含未显示的附件"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "全部保存"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "信息草稿"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "将恢复信息"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "定时消息将取消"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "复制信息文本"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "查看信息详情"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "锁定讯息"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "信箱"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "阻止"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "复制至手机"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "从 SIM 卡复制的信息"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "取消消息"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "附件"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "发送失败的信息"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "已达最大字符数量"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "已保存在我的文件中"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "消息详情"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "恢复中…"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "无附件"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "已复制到剪贴板"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "复制至SIM卡"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "无法复制"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "保护关闭"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "保护开启"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "存储附件"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "重置"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "受保护讯息"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "取消中…"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "完全一样"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "开始以"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "包括"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "匹配标准"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "删除号码"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "已阻止 %s"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "删除该保护信息?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "取消阻止"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "移除中…"
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "已恢复"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "受保护讯息"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "保护已移除"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "阻止%s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "已取消阻止 %s"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "预定的时间应当在将来"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "被限制的内容类型。仍然附加?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "包括保护信息"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "输入方法"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM字母系统"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "自动"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "输入号码"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "重复"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "添加字词"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "接收选项"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "部分收件人号码无效。未添加无效收件人。无效收件人:%s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "收件人"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "输入单词"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "编辑文字"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "阅读"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "添加号码"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "编辑号码"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "Delete words"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "Messages received from your contacts will not be blocked even if they contain blocked words"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "Blocked numbers"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "Blocked words"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "About SOS messages"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "飞行模式下无法发送信息。禁用飞行模式并重试"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "禁用飞行模式"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "已发送"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "发送讯息失败"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "删除号码"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "当按键锁激活时,在紧急情况下按音量键 4 次。这将发送 SOS 信息给您选中的收件人。如果他们回拨过来,手机不会发出铃声但会自动接听来电。在发送 SOS 信息后,手机上的所有其他功能将保持不可用,直至按键锁不再激活"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "您已注册为 SOS 信息收件人。"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "立即发送"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "备份"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "导出到SD卡"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "我"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "多媒体简讯"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "进行中…"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "多媒体简讯通知"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "状态"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "到期时间: %s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "可能丢失部分字符。\n继续?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "添加文本"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "文本模板"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "插入动感图标"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "不支持的媒体类型"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "正在取消飞行模式…"
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d个聊天"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d 条讯息"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "列表中无模板"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "高级搜索"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "模板"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "音频"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "泡泡类型"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "背景风格"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "讯息选项"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "持续时间必须至少%d秒"
+
diff --git a/main/po/zh_TW.po b/main/po/zh_TW.po
new file mode 100755 (executable)
index 0000000..23ed223
--- /dev/null
@@ -0,0 +1,756 @@
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "傳遞報告"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "讀取報告"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "要求傳遞報告"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "要求讀取報告"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "項目清單"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "移動到手機"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "建立模式"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "服務中心"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "移動到 SIM 卡"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "預定訊息"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "垃圾訊息"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "接收警報類型"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "重覆"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "拍攝影片"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "錄音"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "區域廣播訊息"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "SIM 卡訊息"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "檢視聯絡人"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "無法開啟"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "擷取"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "無法移動"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "頁數已達上限"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "限制模式。無法插入限制的內容"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "已傳送"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "已過期"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "正在擷取..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "插入 SIM 卡以傳送訊息。訊息將會儲存在寄件匣中"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "輸入頻道號碼"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "已選擇 1 則訊息"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "已選擇 %d 則訊息"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "預覽"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "檔案名稱已存在"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "無訊息"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "加到聯絡人"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "捨棄"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "無法傳送訊息"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "拍照"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "無地址"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "附加項目清單"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "自動下載"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "廣播訊息"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "中心 %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "自訂時間"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "傳送失敗"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "自"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "已插入項目清單"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "訊息已傳遞"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "已擷取訊息"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "可用"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "警告"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "已傳送"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "推送訊息"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "已接收"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "手動模式"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "拒絕"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "接收選項"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "限制"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "低"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "緊急"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "優先順序"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "傳送讀取報告"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "頁面顯示時間"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "SOS 訊息"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "簡訊"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "總大小"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "DRM 內容"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 秒"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 秒"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 秒"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "本地網路"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "安裝"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "外部網路"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "檢視聯絡人詳細資料"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "已傳送多媒體訊息"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "擷取訊息失敗"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "傳送多媒體訊息失敗"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "投影片持續時間"
+
+msgid "IDS_MSG_MBODY_USE_THE_VOLUME_KEY"
+msgstr "使用音量鍵"
+
+msgid "IDS_MSGF_OPT_TEXT_MESSAGE"
+msgstr "簡訊"
+
+msgid "IDS_MSGF_BODY_UNTITLED_M_MMS"
+msgstr "無主旨"
+
+msgid "IDS_MSGF_BODY_MESSAGE_SIZE"
+msgstr "訊息大小"
+
+msgid "IDS_MSGF_BODY_REQUESTED"
+msgstr "已要求"
+
+msgid "IDS_MSGC_BODY_NOT_REQUESTED"
+msgstr "沒有要求"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "轉寄"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "未讀"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "重複的收件人"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "收件人的最大數量(%d位)已達到"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "至"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "錄音"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "錄影"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "已變更為 MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "更改為簡短訊息"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "加入附件/   最多至%個附件"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "無法附加所有檔案,最大容量%KB。要繼續嗎?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "字型大小"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "多媒體訊息"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "無主旨"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "選擇地址"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "您即將上線 (%s)。繼續?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "重新傳送"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "無效的收件人"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "無效接收者"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "通話期間無法播放"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "處於大容量儲存裝置模式時,無法儲存"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "放棄目前訊息"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "已選擇"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "要刪除嗎?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "無法附加。最大文件%d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "限制"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "無法轉寄。\n檔案轉寄已鎖住"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "訊息安全政策限制"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "增加中。請稍候..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "服務中心地址"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "大"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "小"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "細小"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "無法發送預定的訊息。請設定其他時間"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "日期與時間"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "多媒體訊息"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "沒有收件人,請輸入收件人"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "傳送選項"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "正常"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "傳送 SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "收件人"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "訊息"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "一次"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 次"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 次"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "我現在情況緊急。請救我"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM 卡未插入"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "拍照"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "時間必須超過 %d 秒"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "無法加入內容"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "選擇收件人"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "持續時間 (%s 秒)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "圖片太大。壓縮 ..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "訊息已存成草稿"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "其他"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "草稿"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "傳送電子郵件"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "已插入項目"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "已附加項目"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d 個附件"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "已排定\n訊息"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "持續時間n(%d 秒)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "使用其他聯絡人資訊"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "此訊息包括一個未顯示的附加檔案"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "此訊息包括未顯示的附加檔案"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "全部儲存"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "草稿訊息"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "訊息將復原"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "預約訊息將會取消"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "複製訊息文字"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "檢視訊息詳細資料"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "已鎖定訊息"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "訊息方塊"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "封鎖"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "複製到手機"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "從 SIM 卡複製的訊息"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "取消訊息"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "附件"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "訊息傳送失敗"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "已達字元數上限"
+
+msgid "IDS_MSGF_POP_SAVED_IN_MY_FILES"
+msgstr "儲存到我的檔案"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "訊息詳細資訊"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "正在還原..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "無附件"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "複製到剪貼簿"
+
+msgid "IDS_MSGF_BODY_COPY_TO_SIM"
+msgstr "複製到 SIM 卡"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_COPY"
+msgstr "無法複製"
+
+msgid "IDS_MSGF_OPT_PROTECTION_OFF"
+msgstr "保護關閉"
+
+msgid "IDS_MSGF_OPT_PROTECTION_ON"
+msgstr "保護開啟"
+
+msgid "IDS_MSGF_OPT_SAVE_ATTACHMENT"
+msgstr "儲存附件"
+
+msgid "IDS_MSGF_SK_RESTORE"
+msgstr "還原"
+
+msgid "IDS_MSGF_POP_PROTECTED_MESSAGES"
+msgstr "受保護的訊息"
+
+msgid "IDS_MSGF_POP_CANCELLING_ING"
+msgstr "正在取消..."
+
+msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
+msgstr "完全一樣"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_START_WITH"
+msgstr "開始"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
+msgstr "包括"
+
+msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
+msgstr "符合條件"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBER"
+msgstr "刪除號碼"
+
+msgid "IDS_MSGF_POP_PS_BLOCKED"
+msgstr "%s 已封鎖"
+
+msgid "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q"
+msgstr "刪除此保護的訊息嗎?"
+
+msgid "IDS_MSGF_OPT_UNBLOCK"
+msgstr "解除封鎖"
+
+msgid "IDS_MSGF_POP_REMOVING_ING"
+msgstr "正在移除..."
+
+msgid "IDS_MSGF_POP_RESTORED"
+msgstr "已還原"
+
+msgid "IDS_MSGF_OPT_PROTECTED_MESSAGES"
+msgstr "受保護的訊息"
+
+msgid "IDS_MSGF_POP_PROTECTION_REMOVED"
+msgstr "已移除保護"
+
+msgid "IDS_MSGF_POP_BLOCK_PS_Q"
+msgstr "是否封鎖 %s?"
+
+msgid "IDS_MSGF_POP_PS_UNBLOCKED"
+msgstr "%s 已解鎖"
+
+msgid "IDS_MSGC_POP_SCHEDULED_TIME_SHOULD_SET_IN_THE_FUTURE"
+msgstr "預定的時間應該設在未來"
+
+msgid "IDS_MSGF_POP_RESTRICTED_CONTENT_TYPE_ATTACH_ANYWAY_Q"
+msgstr "受限制的內容類型。要附加嗎?"
+
+msgid "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"
+msgstr "包括保護訊息"
+
+msgid "IDS_MSGC_OPT_S_NOTE"
+msgstr "S Note"
+
+msgid "IDS_MSGC_OPT_S_PLANNER"
+msgstr "S Planner"
+
+msgid "IDS_MSGC_HEADER_INPUTMODE"
+msgstr "輸入模式"
+
+msgid "IDS_MSGF_BODY_GSM_ALPHABET"
+msgstr "GSM 字母表"
+
+msgid "IDS_MSGF_BODY_UNICODE"
+msgstr "Unicode"
+
+msgid "IDS_MSGF_BODY_AUTOMATIC"
+msgstr "自動"
+
+msgid "IDS_MSGF_BODY_ENTER_NUMBER"
+msgstr "輸入號碼"
+
+msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
+msgstr "重複"
+
+msgid "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"
+msgstr "加入字詞"
+
+msgid "IDS_MSGF_HEADER_SOSMESSAGE_RECEIVINGOPTIONS"
+msgstr "接收選項"
+
+msgid "IDS_MSGF_BODY_SOME_RECIPIENTS_HAVE_AN_INVALID_NUMBER_INVALID_RECIPIENTS_NOT_ADDED_N_INVALID_RECIPIENTS_C_PS"
+msgstr "部分收件人的號碼無效。未新增無效收件人。無效收件人:%s"
+
+msgid "IDS_MSGF_OPT_RECIPIENT"
+msgstr "收件人"
+
+msgid "IDS_MSGF_BODY_ENTER_WORD"
+msgstr "輸入字詞"
+
+msgid "IDS_MSGF_BODY_EDIT_WORD"
+msgstr "編輯文字"
+
+msgid "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"
+msgstr "讀取"
+
+msgid "IDS_MSGF_HEADER_ADD_NUMBER"
+msgstr "新增號碼"
+
+msgid "IDS_MSGF_HEADER_EDIT_NUMBER"
+msgstr "編輯號碼"
+
+msgid "IDS_MSGF_HEADER_DELETE_WORDS"
+msgstr "選擇字詞"
+
+msgid "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"
+msgstr "不會封鎖來自聯絡人的訊息,即使其中包含封鎖的字詞"
+
+msgid "IDS_MSGF_BODY_BLOCKED_NUMBERS"
+msgstr "封鎖的號碼"
+
+msgid "IDS_MSGF_BODY_BLOCKED_WORDS"
+msgstr "封鎖的字詞"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES"
+msgstr "關於 SOS 訊息"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MESSAGES_WHILE_IN_FLIGHT_MODE_DISABLE_FLIGHT_MODE_AND_TRY_AGAIN"
+msgstr "在飛航模式中無法傳送訊息。停用飛航模式然後重試"
+
+msgid "IDS_MSGC_HEADER_DISABLE_FLIGHT_MODE_ABB"
+msgstr "停用飛航模式"
+
+msgid "IDS_MSGC_POP_MESSAGESENT"
+msgstr "訊息已傳送"
+
+msgid "IDS_MSGF_POP_SENDING_MESSAGE_FAILED"
+msgstr "傳送訊息失敗"
+
+msgid "IDS_MSGF_HEADER_DELETE_NUMBERS"
+msgstr "刪除號碼"
+
+msgid "IDS_MSGF_BODY_ABOUT_SOS_MESSAGES_HELP_MSG"
+msgstr "緊急時,在鎖定鍵啟用的情況下按四下降低音量鍵。如此將能傳送 SOS 訊息給選擇的收件人。若他們回撥,手機將不會響鈴,但是會自動接聽通話。在傳送 SOS 訊息後,所有手機的其他功能皆將無法使用,直到鎖定鍵不再啟用"
+
+msgid "IDS_MSGF_BODY_REGISTERED_AS_SOS_MSG_RECIPIENT"
+msgstr "您已登記為 SOS 訊息收件人。"
+
+msgid "IDS_MSG_SK_SEND_NOW"
+msgstr "現在發送"
+
+msgid "IDS_MSG_HEADER_BACKUP"
+msgstr "備份"
+
+msgid "IDS_MSG_OPT_EXPORT_TO_SD_CARD"
+msgstr "匯出到SD卡"
+
+msgid "IDS_MSGF_BODY_ME"
+msgstr "我"
+
+msgid "IDS_MSGF_BODY_MMS"
+msgstr "多媒體訊息"
+
+msgid "IDS_MSGF_POP_IN_PROGRESS_ING"
+msgstr "進行中..."
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"
+msgstr "多媒體訊息通知"
+
+msgid "IDS_MSGF_OPT_STATUS"
+msgstr "狀態"
+
+msgid "IDS_MSGF_HEADER_EXPIRES_C_PS"
+msgstr "過期:%s"
+
+msgid "IDS_MSGF_POP_SOME_CHARACTERS_MAY_BE_LOST_CONTINUE_Q"
+msgstr "部分字元可能會遺失。繼續?"
+
+msgid "IDS_MSGC_OPT_ADD_TEXT"
+msgstr "加入文字"
+
+msgid "IDS_MSGC_HEADER_TEXTTEMPLATES"
+msgstr "文字範本"
+
+msgid "IDS_MSGC_HEADER_INSERT_EMOTICON"
+msgstr "插入表情符號"
+
+msgid "IDS_MSGC_POP_UNSUPPORTED_MEDIA_TYPE"
+msgstr "不支援的媒體類型"
+
+msgid "IDS_MSGC_POP_DISABLING_FLIGHT_MODE_ING"
+msgstr "飛航模式停用中..."
+
+msgid "IDS_MSGF_BODY_PD_CONVERSATIONS"
+msgstr "%d個對話"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES"
+msgstr "%d 則訊息"
+
+msgid "IDS_MSG_POP_NO_TEMPLATES_IN_LIST"
+msgstr "清單中無範本"
+
+msgid "IDS_MSGF_HEADER_ADVANCED_SEARCH"
+msgstr "進階搜尋"
+
+msgid "IDS_MSGF_OPT_TEMPLATE"
+msgstr "範本"
+
+msgid "IDS_MSGF_OPT_AUDIO"
+msgstr "音訊"
+
+msgid "IDS_MSGF_BODY_BUBBLE_STYLE"
+msgstr "對話框樣式"
+
+msgid "IDS_MSGF_BODY_BACKGROUND_STYLE"
+msgstr "背景風格"
+
+msgid "IDS_MSGF_BODY_MESSAGE_OPTIONS"
+msgstr "訊息選項"
+
+msgid "IDS_MSGC_POP_DURATION_MUST_BE_AT_LEAST_PD_SECONDS"
+msgstr "持續時間必須至少 %d 秒"
+
diff --git a/org.tizen.message.manifest b/org.tizen.message.manifest
new file mode 100755 (executable)
index 0000000..44fa9d1
--- /dev/null
@@ -0,0 +1,34 @@
+<manifest>
+       <define>
+               <domain name="org.tizen.message"/>
+               <request>
+                       <smack request="ail::db" type="rw"/>
+                       <smack request="system::vconf" type="arwxt"/>
+                       <smack request="system::homedir" type="arwxt"/>
+                       <smack request="xorg" type="w"/>
+                       <smack request="net-config" type="r"/>
+                       <smack request="sound_server" type="rw"/>
+                       <smack request="msg-service" type="rw"/>
+                       <smack request="isf" type="rwx"/>
+                       <smack request="pkgmgr" type="r"/>
+                       <smack request="msg-service::db" type="rw"/>
+                       <smack request="contacts-service" type="rw"/>
+                       <smack request="contacts-service::db" type="rw"/>
+                       <smack request="efreet" type="rx"/>
+                       <smack request="media-data::db" type="rw"/>
+               </request>
+               <provide>
+                       <label name="org.tizen.message::vconf"/>
+               </provide>
+       </define>
+       <assign>
+               <filesystem path="/usr/share/packages/org.tizen.message.xml" label="_" />
+               <filesystem path="/usr/share/applications/org.tizen.message.desktop" label="_" />
+               <filesystem path="/usr/share/applications/org.tizen.msg-ui-class0.desktop" label="_" />
+               <filesystem path="/usr/share/applications/org.tizen.msg-composer-efl.desktop" label="_" />
+               <filesystem path="/usr/share/icons/default/small/org.tizen.message.png" label="_" />
+       </assign>
+       <request>
+               <domain name="org.tizen.message"/>
+       </request>
+</manifest>
diff --git a/org.tizen.message.xml.emul b/org.tizen.message.xml.emul
new file mode 100755 (executable)
index 0000000..81bb86e
--- /dev/null
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.message" version="0.8.15" install-location="internal-only">
+       <label>Message</label>
+       <author email="jyjeong@samsung.com" href="www.samsung.com">Jaeyun Jeong</author>
+       <description>Message Application</description>
+       <ui-application appid="org.tizen.message" exec="/usr/apps/org.tizen.message/bin/message" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+               <icon>org.tizen.message.png</icon>
+               <label>Messages</label>
+               <label xml:lang="ar-ae">الرسائل</label>
+               <label xml:lang="az-az">Mesajlar</label>
+               <label xml:lang="bg-bg">Съобщения</label>
+               <label xml:lang="ca-es">Missatges</label>
+               <label xml:lang="cs-cz">Zprávy</label>
+               <label xml:lang="da-dk">Meddelelser</label>
+               <label xml:lang="de-de">Nachrichten</label>
+               <label xml:lang="el-gr">Μηνύματα</label>
+               <label xml:lang="en-gb">Messages</label>
+               <label xml:lang="en-ph">Messages</label>
+               <label xml:lang="en-us">Messages</label>
+               <label xml:lang="es-es">Mensajes</label>
+               <label xml:lang="es-mx">Mensajes</label>
+               <label xml:lang="et-ee">Sõnumid</label>
+               <label xml:lang="eu-es">Mezuak</label>
+               <label xml:lang="fi-fi">Viestit</label>
+               <label xml:lang="fr-ca">Messages</label>
+               <label xml:lang="fr-fr">Messages</label>
+               <label xml:lang="ga-ie">Teachtaireachtaí</label>
+               <label xml:lang="gl-es">Mensaxes</label>
+               <label xml:lang="hi-in">सन्देश</label>
+               <label xml:lang="hr-hr">Poruke</label>
+               <label xml:lang="hu-hu">Üzenetek</label>
+               <label xml:lang="hy-am">Հղրդգրթ</label>
+               <label xml:lang="is-is">Skilaboð</label>
+               <label xml:lang="it-it">Messaggi</label>
+               <label xml:lang="ja-jp">メッセージ</label>
+               <label xml:lang="ka-ge">შეტყობინებები</label>
+               <label xml:lang="kk-kz">Хабарламалар</label>
+               <label xml:lang="ko-kr">메시지</label>
+               <label xml:lang="lt-lt">Žinutės</label>
+               <label xml:lang="lv-lv">Ziņas</label>
+               <label xml:lang="mk-mk">Пораки</label>
+               <label xml:lang="nb-no">Meldinger</label>
+               <label xml:lang="nl-nl">Berichten</label>
+               <label xml:lang="pl-pl">Wiadomości</label>
+               <label xml:lang="pt-br">Mensagens</label>
+               <label xml:lang="pt-pt">Mensagem</label>
+               <label xml:lang="ro-ro">Mesaje</label>
+               <label xml:lang="ru-ru">Сообщения</label>
+               <label xml:lang="sk-sk">Správy</label>
+               <label xml:lang="sl-si">Sporočila</label>
+               <label xml:lang="sr-rs">Poruke</label>
+               <label xml:lang="sv-se">Meddelanden</label>
+               <label xml:lang="tr-tr">Mesajlar</label>
+               <label xml:lang="uk-ua">Повідомлення</label>
+               <label xml:lang="uz-uz">Xabarlar</label>
+               <label xml:lang="zh-cn">信息</label>
+               <label xml:lang="zh-hk">訊息</label>
+               <label xml:lang="zh-sg">讯息</label>
+               <label xml:lang="zh-tw">訊息</label>
+       </ui-application>
+       <ui-application appid="org.tizen.msg-ui-class0" exec="/usr/apps/org.tizen.message/bin/msg-ui-class0" nodisplay="true" multiple="false" type="capp" taskmanage="true">
+               <label>Msg-ui-class0</label>
+               <label xml:lang="en-us">Class0 message viewer</label>
+               <label xml:lang="ko-kr">메시지</label>
+       </ui-application>
+       <ui-application appid="msg-composer-efl" exec="/usr/ug/bin/msg-composer-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+               <icon>org.tizen.message.png</icon>
+               <label>Message</label>
+               <label xml:lang="en-us">Message</label>
+       </ui-application>
+</manifest>
diff --git a/org.tizen.message.xml.target b/org.tizen.message.xml.target
new file mode 100755 (executable)
index 0000000..9b359d2
--- /dev/null
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.message" version="0.8.15" install-location="internal-only">
+       <label>Message</label>
+       <author email="jyjeong@samsung.com" href="www.samsung.com">Jaeyun Jeong</author>
+       <description>Message Application</description>
+       <ui-application appid="org.tizen.message" exec="/usr/apps/org.tizen.message/bin/message" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+               <icon>org.tizen.message.png</icon>
+               <label>Messages</label>
+               <label xml:lang="ar-ae">الرسائل</label>
+               <label xml:lang="az-az">Mesajlar</label>
+               <label xml:lang="bg-bg">Съобщения</label>
+               <label xml:lang="ca-es">Missatges</label>
+               <label xml:lang="cs-cz">Zprávy</label>
+               <label xml:lang="da-dk">Meddelelser</label>
+               <label xml:lang="de-de">Nachrichten</label>
+               <label xml:lang="el-gr">Μηνύματα</label>
+               <label xml:lang="en-gb">Messages</label>
+               <label xml:lang="en-ph">Messages</label>
+               <label xml:lang="en-us">Messages</label>
+               <label xml:lang="es-es">Mensajes</label>
+               <label xml:lang="es-mx">Mensajes</label>
+               <label xml:lang="et-ee">Sõnumid</label>
+               <label xml:lang="eu-es">Mezuak</label>
+               <label xml:lang="fi-fi">Viestit</label>
+               <label xml:lang="fr-ca">Messages</label>
+               <label xml:lang="fr-fr">Messages</label>
+               <label xml:lang="ga-ie">Teachtaireachtaí</label>
+               <label xml:lang="gl-es">Mensaxes</label>
+               <label xml:lang="hi-in">सन्देश</label>
+               <label xml:lang="hr-hr">Poruke</label>
+               <label xml:lang="hu-hu">Üzenetek</label>
+               <label xml:lang="hy-am">Հղրդգրթ</label>
+               <label xml:lang="is-is">Skilaboð</label>
+               <label xml:lang="it-it">Messaggi</label>
+               <label xml:lang="ja-jp">メッセージ</label>
+               <label xml:lang="ka-ge">შეტყობინებები</label>
+               <label xml:lang="kk-kz">Хабарламалар</label>
+               <label xml:lang="ko-kr">메시지</label>
+               <label xml:lang="lt-lt">Žinutės</label>
+               <label xml:lang="lv-lv">Ziņas</label>
+               <label xml:lang="mk-mk">Пораки</label>
+               <label xml:lang="nb-no">Meldinger</label>
+               <label xml:lang="nl-nl">Berichten</label>
+               <label xml:lang="pl-pl">Wiadomości</label>
+               <label xml:lang="pt-br">Mensagens</label>
+               <label xml:lang="pt-pt">Mensagem</label>
+               <label xml:lang="ro-ro">Mesaje</label>
+               <label xml:lang="ru-ru">Сообщения</label>
+               <label xml:lang="sk-sk">Správy</label>
+               <label xml:lang="sl-si">Sporočila</label>
+               <label xml:lang="sr-rs">Poruke</label>
+               <label xml:lang="sv-se">Meddelanden</label>
+               <label xml:lang="tr-tr">Mesajlar</label>
+               <label xml:lang="uk-ua">Повідомлення</label>
+               <label xml:lang="uz-uz">Xabarlar</label>
+               <label xml:lang="zh-cn">信息</label>
+               <label xml:lang="zh-hk">訊息</label>
+               <label xml:lang="zh-sg">讯息</label>
+               <label xml:lang="zh-tw">訊息</label>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/send"/>
+                       <uri name="mmsto"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/send"/>
+                       <uri name="mmsto"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/send"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/send"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/send_text"/>
+                       <uri name="sms"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/send_text"/>
+                       <uri name="sms"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/send_text"/>
+                       <mime name="*/*"/>
+               </application-service>
+       <application-service>
+                       <operation name="http://tizen.org/appcontrol/operation/send_text"/>
+               </application-service>
+       </ui-application>
+       <ui-application appid="org.tizen.msg-ui-class0" exec="/usr/apps/org.tizen.message/bin/msg-ui-class0" nodisplay="true" multiple="false" type="capp" taskmanage="true">
+               <label>Msg-ui-class0</label>
+               <label xml:lang="en-us">Class0 message viewer</label>
+               <label xml:lang="ko-kr">메시지</label>
+       </ui-application>
+       <ui-application appid="msg-composer-efl" exec="/usr/ug/bin/msg-composer-efl" nodisplay="true" multiple="true" type="capp" taskmanage="false">
+               <icon>org.tizen.message.png</icon>
+               <label>Message</label>
+               <label xml:lang="en-us">Message</label>
+       </ui-application>
+</manifest>
diff --git a/packaging/org.tizen.message.spec b/packaging/org.tizen.message.spec
new file mode 100755 (executable)
index 0000000..cf33dc6
--- /dev/null
@@ -0,0 +1,195 @@
+Name:       org.tizen.message
+Summary:    message application
+Version:    0.8.44
+Release:    1
+Group:      devel
+License:    Samsung
+Source0:    %{name}-%{version}.tar.gz
+Requires(post): /bin/touch
+Requires(post): /usr/bin/vconftool
+Requires: pkgmgr
+BuildRequires:  pkgconfig(appsvc)
+BuildRequires:  pkgconfig(bundle)
+BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(capi-appfw-app-manager)
+BuildRequires:  pkgconfig(capi-media-metadata-extractor)
+BuildRequires:  pkgconfig(capi-media-sound-manager)
+BuildRequires:  pkgconfig(capi-system-info)
+BuildRequires:  pkgconfig(capi-system-system-settings)
+BuildRequires:  pkgconfig(capi-media-metadata-extractor)
+BuildRequires:  pkgconfig(capi-media-image-util)
+BuildRequires:  pkgconfig(capi-media-player)
+BuildRequires: pkgconfig(capi-content-media-content)
+BuildRequires:  pkgconfig(contacts-service2)
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(drm-client)
+BuildRequires:  pkgconfig(elementary)
+BuildRequires:  pkgconfig(ecore)
+BuildRequires:  pkgconfig(ecore-x)
+BuildRequires:  pkgconfig(ecore-input)
+BuildRequires:  pkgconfig(ecore-imf)
+BuildRequires:  pkgconfig(ecore-file)
+BuildRequires:  pkgconfig(ecore-evas)
+BuildRequires:  pkgconfig(eina)
+BuildRequires:  pkgconfig(evas)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(heynoti)
+BuildRequires:  pkgconfig(icu-i18n)
+BuildRequires:  pkgconfig(libexif)
+BuildRequires:  pkgconfig(msg-service)
+BuildRequires:  pkgconfig(mm-common)
+BuildRequires:  pkgconfig(mm-player)
+BuildRequires:  pkgconfig(mm-session)
+BuildRequires:  pkgconfig(syspopup-caller)
+BuildRequires:  pkgconfig(status)
+BuildRequires:  pkgconfig(tapi)
+BuildRequires:  pkgconfig(ui-gadget-1)
+BuildRequires:  pkgconfig(utilX)
+BuildRequires:  libug-contacts-devel
+BuildRequires:  cmake
+BuildRequires:  edje-tools
+BuildRequires:  gettext-tools
+
+%description
+message application.
+
+%prep
+%setup -q
+
+%build
+
+%define PREFIX    "/usr/apps/org.tizen.message"
+%define RESDIR    "/usr/apps/org.tizen.message/res"
+%define DATADIR    "/opt/usr/apps/org.tizen.message/data"
+LDFLAGS+="-Wl,--rpath=%{PREFIX}/lib -Wl,--as-needed -Wl,--hash-style=both"; export LDFLAGS
+cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} -DCMAKE_INSTALL_DATADIR=%{DATADIR}
+# CMakeLists.Txt needs to be fixed for parallel build to work
+make #%{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+%post
+vconftool set -t int db/private/org.tizen.message/font_size 1 -u 5000 -f
+vconftool set -t int db/private/org.tizen.message/accessibility_font_size 1 -u 5000 -f
+vconftool set -t bool db/private/org.tizen.message/use_volume_key 0 -u 5000 -f
+chown -R 5000:5000 /opt/usr/apps/org.tizen.message/data
+mkdir -p /usr/ug/bin
+ln -sf /usr/bin/ug-client /usr/ug/bin/msg-composer-efl
+
+%files
+%manifest %{name}.manifest
+%defattr(-,root,root,-)
+/usr/apps/org.tizen.message/bin/message
+/usr/apps/org.tizen.message/lib/*
+/usr/apps/org.tizen.message/bin/message-dialog
+/usr/apps/org.tizen.message/bin/msg-ui-class0
+/usr/share/packages/*.xml
+/usr/apps/org.tizen.message/res/*
+/usr/ug/lib/*.so
+%dir /opt/usr/apps/org.tizen.message/data
+/usr/share/icons/default/small/*.png
+
+%changelog
+* Mon Feb 12 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-24797. Hide toolbar on horizontal search mode.
+- Fix N_SE-24783. Cancel search mode after delete message.
+- Fix N_SE-24338 issue - issue for loading bubbles after delete some messages.
+
+* Wed Feb 06 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Focus is set to last page only.
+- Fix N_SE-24694, popup focus issue.
+- Fix disabled more button issue on bubble view.
+- Fix N_SE-24578, flight mode issue.
+- Fix TDIS-1849 issue : Protected message delete scenario.
+- Fix N_SE-24534, duplicated recipient popup.
+- Change indicator show/hide when composer is top.
+
+* Wed Feb 06 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-24385 that elm_win_resize_object_add() is removed.
+- Delete draft messages before saving draft message.
+- Fix N_SE-24422. reset thread list after cancel search.
+- N_SE-24408.
+
+* Wed Feb 06 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-24338, mms draft message issue.
+
+* Mon Feb 04 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-24139 that only plain text is copied to entry.
+- N_SE-24098: Tapping volumebar is not working .
+- Change cnp_mode on search entry.
+
+* Mon Feb 04 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Change message application icon.
+
+* Fri Feb 01 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix composer & conversation view title button alignment.
+- Fix N_SE-23921. Change back button style.
+
+* Mon Jan 28 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-23264, Remove elm_win_resize_object_add() when adding a layout to main window.
+- Change image viewer launching method.
+
+* Wed Jan 23 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-21691, disable more button of composer in case of sms.
+
+* Tue Jan 22 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-22522, uri of filepath is supported.
+
+* Mon Jan 21 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Apply EFL API changes.
+- Change elm_scale_get to elm_config_scale_get of composer.
+- Change name of deprecated api elm_scale_get() to elm_config_scale_get().
+- Apply changed EFL api of thread.
+
+* Mon Jan 21 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-22080. Start search mode, reset toolbar.
+- Fix N_SE-22064, recipient select popup focus issue.
+
+* Thu Jan 17 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Change license URL from "www.tizenopensource.org"  to "floralicense.org".
+- Fix N_SE-18623, page duration string issue.
+
+* Wed Jan 16 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Change enum value related with SESSION policy in MMFW.
+
+* Thu Jan 10 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix prevent defect. 38150, 23538.
+
+* Tue Jan 8 2013 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix bubble prevent major issue.
+- Fix prevent defect. 35690, 35689, 23539, 23538.
+- Fix prevent issue 27952: String not null terminated.
+- Fix N_SE-17540, update subject font size issue.
+
+* Fri Dec 28 2012 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix N_SE-17540, update subject font size issue.
+- Update org.tizen.message.xml.target to support mmsto/sms scheme.
+
+* Mon Dec 10 2012 SooJung Lee <sj003.lee@samsung.com>
+- Apply EFL migration to message setting.
+- Use character count api of mf.
+- Apply EFL migration of composer.
+- Add isEmulator to check emulator mode.
+- Apply EFL migration of thread, common.
+- Apply EFL migration of viewer.
+
+* Fri Nov 23 2012 SooJung Lee <sj003.lee@samsung.com>
+- Modify smack manifest file.
+
+* Tue Nov 20 2012 Jaeyun Jeong <jyjeong@samsung.com>
+- Modify smack manifest file.
+- Apply translation data of application title name.
+
+* Sat Nov 10 2012 Jaeyun Jeong <jyjeong@samsung.com>
+- Change application path from '/opt' to '/usr'.
+
+* Fri Oct 26 2012 Jaeyun Jeong <jyjeong@samsung.com>
+- Fix build errors.
+- Fix cmaketext file.
+- Apply latest UX.
+- Remove unused define.
+- Apply thread list options and create split view.
+- Apply the latest Message Composer & Bubble UI guideline.
+- Apply Viewer options and more functions.
diff --git a/setting/CMakeLists.txt b/setting/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..5918207
--- /dev/null
@@ -0,0 +1,61 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6) 
+PROJECT(message C)
+
+SET (SETTING_THEME setting_theme)
+SET (MSG_UI_SETTING msg_ui_setting)
+
+######################## 
+# Message Setting List # 
+########################
+SET(SETTING_SRCS
+       ./src/main/msg-ui-setting-gadget.c
+        ./src/main/msg-ui-setting-main.c
+        ./src/main/msg-ui-setting-callback.c
+        ./src/main/msg-ui-setting-common-util.c
+        ./src/main/msg-ui-setting-msg-service-wrapper.c
+        ./src/spam/msg-ui-setting-spam-setting.c
+        ./src/spam/msg-ui-setting-spam-block-word.c
+        ./src/spam/msg-ui-setting-spam-block-number.c
+        ./src/text/msg-ui-setting-text-message.c
+        ./src/text/msg-ui-setting-text-service-center.c
+        ./src/multimedia/msg-ui-setting-mm-message.c
+        ./src/multimedia/msg-ui-setting-mm-recv-option.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_SETTING_DIR}/include 
+               ${CMAKE_SOURCE_MAIN_DIR}
+               ${CMAKE_SOURCE_COMMON_DIR}
+               /usr/include/msg-service/
+)
+
+
+FOREACH(flag ${pkgs_CFLAGS}) 
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") 
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+
+ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{PREFIX}\"") 
+ADD_DEFINITIONS("-DDATAFS=\"$ENV{DATADIR}\"") 
+ADD_DEFINITIONS("-DTARGET") 
+ADD_DEFINITIONS("-DSLP_PROF")
+
+
+ADD_CUSTOM_TARGET(${SETTING_THEME}.edj
+                COMMAND edje_cc -id ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+                ${CMAKE_SOURCE_SETTING_DIR}/theme/${SETTING_THEME}.edc ${CMAKE_SOURCE_SETTING_DIR}/theme/${SETTING_THEME}.edj
+                DEPENDS ${CMAKE_SOURCE_SETTING_DIR}/theme/${SETTING_THEME}.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} ${SETTING_THEME}.edj)
+
+
+# Install executable and .edj files. 
+INSTALL(FILES ${CMAKE_SOURCE_SETTING_DIR}/theme/${SETTING_THEME}.edj DESTINATION ${EDJDIR})
+ADD_LIBRARY(ug-msg-setting-efl SHARED ${SETTING_SRCS}) 
+TARGET_LINK_LIBRARIES(ug-msg-setting-efl ${pkgs_LDFLAGS} -L${CMAKE_SOURCE_COMMON_DIR} -lmsg-common)
+
+INSTALL(TARGETS ug-msg-setting-efl  DESTINATION ${UGDIR})
+
+#i18n
+#ADD_SUBDIRECTORY(po)
diff --git a/setting/include/msg-ui-setting-callback.h b/setting/include/msg-ui-setting-callback.h
new file mode 100755 (executable)
index 0000000..0b8a063
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_CALLBACK_H__
+#define __DEF_MSG_UI_SETTING_CALLBACK_H__
+
+#include "msg-ui-setting-main.h"
+
+/*============================================================================
+                               FUNCTION DEFINE
+=============================================================================*/
+void msg_ui_setting_text_msg_cb(void *data, Evas_Object *obj, void *event_info);
+
+void msg_ui_setting_mm_msg_cb(void *data, Evas_Object *obj, void *event_info);
+
+void msg_ui_setting_spam_msg_cb(void *data, Evas_Object *obj, void *event_info);
+
+void msg_ui_setting_font_size_cb(void *data, Evas_Object *obj, void *event_info);
+
+void msg_ui_setting_quit_cb(void *data, Evas_Object *obj, void *event_info);
+
+#endif
diff --git a/setting/include/msg-ui-setting-common-util.h b/setting/include/msg-ui-setting-common-util.h
new file mode 100755 (executable)
index 0000000..6e100a6
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_COMMON_UTIL_H__
+#define __DEF_MSG_UI_SETTING_COMMON_UTIL_H__
+
+#include "msg-ui-setting-main.h"
+#include "msg-ui-setting-spam-setting.h"
+#include "msg-ui-setting-text-message.h"
+#include "msg-ui-setting-mm-message.h"
+
+#define SETTING_MAX_FIELD_COUNT 20
+#define SETTING_MAX_VALUE_COUNT 10
+
+struct _msg_ui_setting_list_item {
+       char *name;
+       void (*func)(void *data, Evas_Object *obj, void *event_info);
+};
+
+struct _msg_ui_setting_mixed_list_item {
+       char depth;
+       char *name;
+       void (*func)(void *data, Evas_Object *obj, void *event_info);
+       Elm_Genlist_Item_Type type;
+};
+
+
+/*============================================================================
+                               FUNCTION DEFINE
+=============================================================================*/
+
+Evas_Object *msg_ui_setting_common_create_bg(Evas_Object *parent);
+Evas_Object *msg_ui_setting_common_create_layout(Evas_Object *parent);
+void msg_ui_setting_common_create_back_btn(Evas_Object *nf, Evas_Smart_Cb func, void *data);
+void msg_ui_setting_common_create_title_back_btn(Evas_Object *nf, Evas_Smart_Cb func, void *data);
+Evas_Object *msg_ui_setting_common_create_title_btn(Evas_Object *nf, const char *text, Evas_Smart_Cb func, void *data);
+Evas_Object *msg_ui_setting_common_create_toolbar(Evas_Object *parent, const char *text, Evas_Smart_Cb func, void *data);
+
+Evas_Object *msg_ui_setting_common_create_genlist(Evas_Object *parent);
+void msg_ui_setting_common_append_genlist_separator(Evas_Object *genlist, void *data);
+void msg_ui_setting_common_append_genlist_separator_without_bot_line(Evas_Object *genlist, void *data);
+
+Evas_Object *msg_ui_setting_common_create_scroller(Evas_Object *parent);
+Evas_Object *msg_ui_setting_common_create_no_content_view(Evas_Object *parent, const char *text);
+Evas_Object *msg_ui_setting_common_add_box(Evas_Object *parent);
+Evas_Object *msg_ui_setting_common_create_editfield(Evas_Object *parent, const char *label, const char *guide_label);
+
+int msg_ui_setting_common_vconf_get(const char *pKey);
+int msg_ui_setting_common_vconf_set(const char *pKey, int nSetValue);
+
+void msg_ui_setting_common_show_popup(PMSG_SETTING_DATA settingData, char *str);
+void msg_ui_setting_common_show_btn_popup(void *data, char *str);
+void msg_ui_setting_common_show_notify(void *data, char *str);
+void msg_ui_setting_common_show_selectioninfo(Evas_Object *parent, char *str, void *data);
+void msg_ui_setting_common_destroy_selectioninfo(void *data);
+
+ui_gadget_h msg_ui_setting_common_call_phoneui_ug(void *data, void *result_cb);
+
+#endif
diff --git a/setting/include/msg-ui-setting-gadget.h b/setting/include/msg-ui-setting-gadget.h
new file mode 100755 (executable)
index 0000000..79b6a72
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_GADGET_H__
+#define __DEF_MSG_UI_SETTING_GADGET_H__
+
+
+#endif /* __DEF_MSG_UI_SETTING_H__ */
diff --git a/setting/include/msg-ui-setting-main.h b/setting/include/msg-ui-setting-main.h
new file mode 100755 (executable)
index 0000000..22df034
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __DEF_MSG_UI_MAIN_SETTING_H__
+#define __DEF_MSG_UI_MAIN_SETTING_H__
+
+#include <vconf.h>
+#include "message.h"
+#include "msg-ui-util.h"
+#include <Elementary.h>
+#include "msg-ui-common-utility.h"
+#include "msg-ui-image-resource.h"
+#include "msg-ui-setting-types.h"
+#include "msg-ui-setting-gadget.h"
+#include "msg-ui-setting-callback.h"
+#include "msg-ui-setting-common-util.h"
+#include "msg-ui-setting-msg-service-wrapper.h"
+
+
+/*============================================================================
+                               DEFINE
+=============================================================================*/
+
+typedef enum {
+       MSG_UI_SETTING_MAIN_MENU_TEXT_MESSAGES,
+       MSG_UI_SETTING_MAIN_MENU_MULTIMEDIA_MESSAGES,
+       MSG_UI_SETTING_MAIN_MENU_SPAM_MESSAGES,
+       MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES,
+       MSG_UI_SETTING_MAIN_MENU_SUB_TITLE,
+       MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY,
+
+       MSG_UI_SETTING_MAIN_MENU_MAX
+
+} MSG_UI_SETTING_MAIN_MENU_E;
+
+
+/*============================================================================
+                               FUNCTION DEFINE
+=============================================================================*/
+
+PMSG_SETTING_DATA msg_ui_setting_get_data(void);
+
+Evas_Object *msg_ui_setting_create_navigation_layout(Evas_Object *parent);
+
+Evas_Object *msg_ui_setting_create_layout_main(Evas_Object *parent);
+
+void msg_ui_setting_launch(PMSG_SETTING_DATA settingData);
+void msg_ui_setting_launch_spam_setting(PMSG_SETTING_DATA settingData);
+
+void msg_ui_setting_create_main_view(PMSG_SETTING_DATA settingData);
+
+#endif /* __DEF_MSG_UI_MAIN_SETTING_H__ */
+
diff --git a/setting/include/msg-ui-setting-mm-message.h b/setting/include/msg-ui-setting-mm-message.h
new file mode 100755 (executable)
index 0000000..f2df6ad
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_MM_MESSAGE_H__
+#define __DEF_MSG_UI_SETTING_MM_MESSAGE_H__
+
+
+#include "msg-ui-setting-main.h"
+
+
+#define MSG_UI_SETTING_MM_STYLE_FONT_VERY_SMALL        28
+#define MSG_UI_SETTING_MM_STYLE_FONT_SMALL     32
+#define MSG_UI_SETTING_MM_STYLE_FONT_NORMAL    44
+#define MSG_UI_SETTING_MM_STYLE_FONT_LARGE     56
+
+
+/*============================================================================
+                               ENUMS
+=============================================================================*/
+
+typedef enum {
+       MSG_UI_SETTING_MM_MENU_RECEIVING_OPTION,
+       MSG_UI_SETTING_MM_MENU_DELIVERY_REPORT,
+       MSG_UI_SETTING_MM_MENU_READ_REPORT,
+       MSG_UI_SETTING_MM_MENU_CREATE_MODE,
+       MSG_UI_SETTING_MM_MENU_MAX
+
+} MSG_UI_SETTING_MM_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_MM_CREATE_MODE_MENU_FREE,
+       MSG_UI_SETTING_MM_CREATE_MODE_MENU_WARNING,
+       MSG_UI_SETTING_MM_CREATE_MODE_MENU_RESTRICTED,
+       MSG_UI_SETTING_MM_CREATE_MODE_MENU_MAX
+
+} MSG_UI_SETTING_MM_CREATE_MODE_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_MM_RECV_OPT_MENU_HOME,
+       MSG_UI_SETTING_MM_RECV_OPT_MENU_FOREIGN,
+       MSG_UI_SETTING_MM_RECV_OPT_MENU_MAX
+
+} MSG_UI_SETTING_MM_RECV_OPT_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_MM_READ_REP_MENU_REQUEST,
+       MSG_UI_SETTING_MM_READ_REP_MENU_SEND,
+       MSG_UI_SETTING_MM_READ_REP_MENU_MAX
+
+} MSG_UI_SETTING_MM_READ_REP_MENU_E;
+
+
+/*============================================================================
+                               FUNCTION DEFINE
+=============================================================================*/
+void msg_ui_setting_mm_create_view(void *data, Evas_Object *obj, void *event_info);
+
+/*
+ *     Receiving Option API
+ */
+void msg_ui_setting_mm_recv_opt_view(void *data, Evas_Object *obj, void *event_info);
+
+/*
+ *     Read Report API
+ */
+void msg_ui_setting_mm_read_rep_view(void *data, Evas_Object *obj, void *event_info);
+
+
+#endif
+
diff --git a/setting/include/msg-ui-setting-msg-service-wrapper.h b/setting/include/msg-ui-setting-msg-service-wrapper.h
new file mode 100755 (executable)
index 0000000..acd08b3
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_MSG_SERVICE_WRAPPER_H__
+#define __DEF_MSG_UI_SETTING_MSG_SERVICE_WRAPPER_H__
+
+#include "msg-ui-setting-main.h"
+
+int msg_ui_setting_msg_set_config(PMSG_SETTING_DATA settingData);
+
+int msg_ui_setting_msg_get_config(PMSG_SETTING_DATA settingData);
+
+#endif
diff --git a/setting/include/msg-ui-setting-spam-setting.h b/setting/include/msg-ui-setting-spam-setting.h
new file mode 100755 (executable)
index 0000000..2541f84
--- /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://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_SPAM_SETTING_H__
+#define __DEF_MSG_UI_SETTING_SPAM_SETTING_H__
+
+
+#include <msg.h>
+#include <status.h>
+#include <Eina.h>
+#include "msg-ui-setting-main.h"
+
+
+#define MSG_UI_SETTING_BLOCKED_DETAIL_CREATE   -1
+
+
+typedef enum {
+       MSG_UI_SETTING_SPAM_MENU_NUMBERS_TO_REJECT,
+       MSG_UI_SETTING_SPAM_MENU_BLOCK_WORD,
+       MSG_UI_SETTING_SPAM_MENU_MAX
+
+} MSG_UI_SETTING_GENERAL_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_BLOCK_DETAIL_MENU_DATA,
+       MSG_UI_SETTING_BLOCK_DETAIL_MENU_MAX
+
+} MSG_UI_SETTING_BLOCK_DETAIL_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_DATA,
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_NAME,
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_MAX
+
+} MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MATCH_CRITERIA_MENU_DATA_SAME_AS,
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MATCH_CRITERIA_MENU_NAME_START_WITH,
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MATCH_CRITERIA_MENU_NAME_INCLUDE,
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MATCH_CRITERIA_MENU_MAX
+
+} MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MATCH_CRITERIA_MENU_E;
+
+
+/*============================================================================
+                               FUNCTION DEFINE
+=============================================================================*/
+void msg_ui_setting_spam_create_view(void *data, Evas_Object *obj, void *event_info);
+Eina_List *filter_chk_list_append(Eina_List* list, int filter_id, Eina_Bool block_filter_chk_state, Eina_Bool number_reject_chk_state);
+
+/*
+ *     Spam Setting - Blocked word
+ */
+void msg_ui_setting_spam_block_word_main(void *data, Evas_Object *obj, void *event_info);
+
+/*
+ *     Spam Setting - Number to reject
+ */
+void msg_ui_setting_spam_block_number_main(void *data, Evas_Object *obj, void *event_info);
+
+
+#endif
diff --git a/setting/include/msg-ui-setting-text-message.h b/setting/include/msg-ui-setting-text-message.h
new file mode 100755 (executable)
index 0000000..e9b5740
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_TEXT_MESSAGE_H__
+#define __DEF_MSG_UI_SETTING_TEXT_MESSAGE_H__
+
+
+#include "msg-ui-setting-main.h"
+
+
+/*============================================================================
+                               ENUMS
+=============================================================================*/
+typedef enum {
+       MSG_UI_SETTING_TEXT_MENU_REQ_DELIVERY_REPORT,
+       MSG_UI_SETTING_TEXT_MENU_INPUT_MODE,
+       MSG_UI_SETTING_TEXT_MENU_SMSC,
+       MSG_UI_SETTING_TEXT_MENU_MAX
+
+} MSG_UI_SETTING_TEXT_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_TEXT_INPUT_MODE_MENU_GSM_ALPHABET,
+       MSG_UI_SETTING_TEXT_INPUT_MODE_MENU_UNICODE,
+       MSG_UI_SETTING_TEXT_INPUT_MODE_MENU_AUTOMATIC,
+       MSG_UI_SETTING_TEXT_INPUT_MODE_MENU_MAX
+
+} MSG_UI_SETTING_TEXT_INPUT_MODE_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_SMSC_MENU_ADDRESS_TITLE,
+       MSG_UI_SETTING_SMSC_MENU_ADDRESS,
+       MSG_UI_SETTING_SMSC_MENU_MAX
+
+} MSG_UI_SETTING_SMSC_MENU_E;
+
+
+/*============================================================================
+                               FUNCTION DEFINE
+=============================================================================*/
+void msg_ui_setting_text_create_view(void *data, Evas_Object *obj, void *event_info);
+
+
+/*
+ *     text message - service centre
+ */
+void msg_ui_setting_service_center_selected_main(void *data, int index);
+void msg_ui_setting_create_service_center_list(void *data, Evas_Object *obj, void *event_info);
+
+
+#endif
+
diff --git a/setting/include/msg-ui-setting-types.h b/setting/include/msg-ui-setting-types.h
new file mode 100755 (executable)
index 0000000..6c0104e
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_TYPES_H__
+#define __DEF_MSG_UI_SETTING_TYPES_H__
+
+
+#include "message.h"
+#include <msg.h>
+
+#define MSG_SETTING_THEME      EDJDIR"/setting_theme.edj"
+
+#define MAX_SETTING_CTRLBAR_BUTTON     4
+#define MAX_SMSC_LIST  SMSC_LIST_MAX
+#define MAX_SMSC_NAME_LEN      SMSC_NAME_MAX
+#define MAX_SMSC_ADDR_LEN      SMSC_ADDR_MAX
+#define MAX_MY_CH_LIST CB_CHANNEL_MAX
+#define MAX_CH_NAME_LEN        CB_CHANNEL_NAME_MAX
+#define MAX_CBLANG_COUNT       MSG_CBLANG_TYPE_MAX
+
+/*============================================================================
+                               TYPES
+=============================================================================*/
+
+/**
+ *     The values for this type SHOULD be in _MSG_UI_SETTING_TYPE_E.
+ */
+
+typedef unsigned int MSG_UI_SETTING_TYPE_T;
+
+/**
+ *     The values for this type SHOULD be in _MSG_UI_GENERAL_TYPE_E.
+ */
+typedef unsigned int MSG_UI_GENERAL_TYPE_T;
+
+/**
+ *     The values for this type SHOULD be in MSG_UI_SETTING_BLOCK_TYPE_E.
+ */
+
+typedef unsigned int MSG_UI_SETTING_BLOCK_TYPE_T;
+
+/**
+ *     The values for this type SHOULD be in MSG_UI_SETTING_CRITERIA_TYPE_E.
+ */
+
+typedef unsigned int MSG_UI_SETTING_CRITERIA_TYPE_T;
+
+
+/*============================================================================
+                               ENUMS
+=============================================================================*/
+
+/**
+ *     This enum is used as the value of MSG_UI_SETTING_TYPE_T.
+ */
+enum _MSG_UI_SETTING_TYPE_E {
+       MSG_UI_SETTING_TYPE_GENERAL = MSG_GENERAL_OPT,
+       MSG_UI_SETTING_TYPE_SMS_SEND = MSG_SMS_SENDOPT,
+       MSG_UI_SETTING_TYPE_SMSC_LIST = MSG_SMSC_LIST,
+       MSG_UI_SETTING_TYPE_MMS_SEND = MSG_MMS_SENDOPT,
+       MSG_UI_SETTING_TYPE_MMS_RECEIVE = MSG_MMS_RECVOPT,
+       MSG_UI_SETTING_TYPE_MMS_CLASS = MSG_MMS_CLASSOPT,
+       MSG_UI_SETTING_TYPE_CBMSG = MSG_CBMSG_OPT,
+};
+
+typedef enum {
+       MSG_UI_SETTING_BLOCK_FILTER_VIEW,
+       MSG_UI_SETTING_BLOCK_FILTER_DELETE_VIEW,
+       MSG_UI_SETTING_BLOCK_FILTER_DETAIL_VIEW,
+       MSG_UI_SETTING_BLOCK_LIST_VIEW,
+       MSG_UI_SETTING_BLOCK_LIST_DELETE_VIEW,
+
+} MSG_UI_SETTING_BLOCK_VIEW_MODE_E;
+
+typedef enum {
+       MSG_UI_SETTING_BLOCK_ADDR_SAME,
+       MSG_UI_SETTING_BLOCK_ADDR_INCLUDE,
+
+} MSG_UI_SETTING_CRITERIA_TYPE_E;
+
+
+/*============================================================================
+                               STRUCT DEFINE
+=============================================================================*/
+
+typedef struct {
+       Evas_Object *spam_genlist;
+       Elm_Genlist_Item_Class spam_itc;
+
+} MSG_UI_SETTING_SPAM_S;
+
+typedef struct {
+       Evas_Object *text_genlist;
+       Elm_Genlist_Item_Class text_2line_itc;
+       Elm_Genlist_Item_Class text_1line_1icon_itc;
+       Elm_Genlist_Item_Class text_2line_1icon_itc;
+
+       /* input mode */
+       Elm_Object_Item *text_input_mode_item;
+       Elm_Genlist_Item_Class text_input_mode_itc;
+       Evas_Object *text_input_mode_radio_group;
+
+       Evas_Object *req_delivery_rep_check;
+
+       Elm_Object_Item *service_centre_item;
+       Evas_Object *smsc_all_genlist;
+       Elm_Genlist_Item_Class text_1line_2icon_itc;
+       Evas_Object *service_centre_radio_group;
+       Evas_Object *service_centre_btn_reveal;
+
+       Elm_Genlist_Item_Class smsc_title_itc;
+       Elm_Genlist_Item_Class smsc_1icon_itc;
+
+       /* Service Center */
+       int center_index;
+       Evas_Object *smsc_addr_entry;
+
+} MSG_UI_SETTING_TEXT_S;
+
+typedef struct {
+       Evas_Object *mm_genlist;
+       Elm_Genlist_Item_Class mm_itc;
+       Elm_Genlist_Item_Class mm_1line_1icon_itc;
+       Elm_Genlist_Item_Class mm_2line_1icon_itc;
+       Evas_Object *mm_delivery_report_check;
+
+       /* Creation mode */
+       Elm_Genlist_Item_Class mm_creation_mode_itc;
+       Elm_Object_Item *creation_mode_item;
+       Evas_Object *creation_radio_group;
+
+       /* Receiving Option */
+       Evas_Object *mm_recv_genlist;
+       Elm_Genlist_Item_Class mm_recv_2line_expand_itc;
+
+       Elm_Genlist_Item_Class mm_recv_home_network_itc;
+       Elm_Genlist_Item_Class mm_recv_foreign_network_itc;
+
+       Elm_Object_Item *mm_recv_home_network_item;
+       Evas_Object *mm_recv_home_network_radio_group;
+
+       Elm_Object_Item *mm_recv_foreign_network_item;
+       Evas_Object *mm_recv_foreign_network_radio_group;
+
+       /* Read report Menu */
+       Evas_Object *mm_read_rep_genlist;
+       Elm_Genlist_Item_Class mm_read_rep_1line_1icon_itc;
+       Evas_Object *mm_read_rep_request_check;
+       Evas_Object *mm_read_rep_send_check;
+
+} MSG_UI_SETTING_MM_S;
+
+typedef struct _MSG_UI_SETTING_S {
+       MSG_UI_SETTING_TYPE_T type;
+
+       msg_struct_t setting_opt;
+       msg_struct_t smsc_opt;
+       msg_struct_t mms_recv_opt;
+       msg_struct_t cb_msg_opt;
+       msg_struct_list_s *smsc_list;
+
+} MSG_UI_SETTING_S;
+
+typedef struct _MSG_UI_SETTING_FILTER_LIST_S {
+       int filter_id;
+       Eina_Bool block_filter_chk_state;
+       Eina_Bool number_reject_chk_state;
+} MSG_UI_SETTING_FILTER_LIST_S;
+
+typedef struct _MSG_UI_SETTING_FILTER_S {
+       Evas_Object *block_layout;
+       Evas_Object *delete_layout;
+
+       msg_struct_list_s filterList;
+       MSG_UI_SETTING_BLOCK_TYPE_T block_type;
+       MSG_UI_SETTING_CRITERIA_TYPE_T criteria_type;
+       int word_cnt;
+       int addr_cnt;
+
+       Evas_Object *block_filter_nocontents;
+       Evas_Object *block_filter_box;
+       Evas_Object *delete_filter_box;
+
+       Evas_Object *add_btn;
+       Evas_Object *del_btn;
+       Elm_Object_Item *block_left_btn;
+       Elm_Object_Item *block_right_btn;
+
+       Evas_Object *block_ctrl_bar;
+       Evas_Object *delete_ctrl_bar;
+
+       /* Filter list */
+       Evas_Object *block_filter_genlist;
+       Elm_Genlist_Item_Class block_filter_itc;
+
+       Evas_Object *delete_genlist;
+
+       Evas_Object *block_filter_sel_all_layout;
+       Evas_Object *block_filter_chk_sel_all;
+       Eina_Bool block_filter_chk_sel_all_state;
+       Eina_List *block_filter_chk_state_list;
+
+       /* Filter detail view. */
+       int block_filter_sel_index;
+       Evas_Object *block_filter_detail_layout;
+       Evas_Object *block_filter_detail_genlist;
+       Elm_Genlist_Item_Class block_filter_detail_1icon_itc;
+       Evas_Object *block_filter_detail_done_btn;
+       Evas_Object *block_filter_detail_entry_ly;
+       Evas_Object *block_filter_detail_entry;
+
+       /* Match criteria */
+       int match_criteria;
+       Elm_Object_Item *block_filter_detail_match_criteria_item;
+       Elm_Genlist_Item_Class block_filter_detail_2line_1icon_itc;
+       Elm_Genlist_Item_Class block_filter_detail_match_criteria_itc;
+       Evas_Object *block_filter_detail_match_criteria_radio_group;
+
+} MSG_UI_SETTING_FILTER_S;
+
+typedef struct _MSG_SETTING_DATA {
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
+       ui_gadget_h loaded_ug;
+
+       Elm_Theme *th;
+
+       Evas_Object *layout_main;
+       Evas_Object *bg;
+       Evas_Object *navi_frame;
+       Evas_Object *popup;
+       Evas_Object *selectioninfo;
+       Evas_Object *selectioninfo_layout;
+       Elm_Object_Item *navi_it;
+
+       msg_handle_t msgHandle;
+       MSG_UI_SETTING_S msg_setting;
+
+       Elm_Genlist_Item_Class grp_sep_itc;
+       Elm_Genlist_Item_Class grp_sep_without_bot_line_itc;
+
+       Evas_Object *main_genlist;
+       Evas_Object *cb_activate_check;
+       Elm_Genlist_Item_Class main_itc;
+       Elm_Genlist_Item_Class cb_msg_itc;
+       Elm_Genlist_Item_Class sub_title_itc;
+
+       MSG_UI_SETTING_FILTER_S block_msg;
+
+       /* use the volume key */
+       Evas_Object *use_vol_key_activate_check;
+       Elm_Genlist_Item_Class use_vol_key_itc;
+
+       union {
+               MSG_UI_SETTING_SPAM_S spam_setting;
+               MSG_UI_SETTING_TEXT_S text_msg;
+               MSG_UI_SETTING_MM_S mm_msg;
+       } list;
+
+} MSG_SETTING_DATA, *PMSG_SETTING_DATA;
+
+#endif
diff --git a/setting/src/main/msg-ui-setting-callback.c b/setting/src/main/msg-ui-setting-callback.c
new file mode 100755 (executable)
index 0000000..d6a52a7
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+
+
+void msg_ui_setting_text_msg_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       msg_ui_setting_text_create_view(data, obj, event_info);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_mm_msg_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       msg_ui_setting_mm_create_view(data, obj, event_info);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_spam_msg_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       msg_ui_setting_spam_create_view(data, obj, event_info);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_quit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       ug_destroy_me(settingData->ug);
+
+       D_LEAVE;
+}
diff --git a/setting/src/main/msg-ui-setting-common-util.c b/setting/src/main/msg-ui-setting-common-util.c
new file mode 100755 (executable)
index 0000000..af52da8
--- /dev/null
@@ -0,0 +1,614 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+#include "msg-ui-setting-common-util.h"
+
+
+/*============================================================================
+                                                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static void __msg_ui_setting_common_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_common_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_common_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_common_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void __msg_ui_setting_common_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_common_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_common_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_common_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void __msg_ui_setting_common_ug_destroy_cb(ui_gadget_h ug, void *priv);
+
+/*============================================================================
+                                                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+static void __msg_ui_setting_common_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (elm_object_focus_get(layout)) {
+               if (elm_entry_is_empty(obj))
+                       elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+               else
+                       elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_common_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(layout, "elm,state,eraser,show", "elm");
+
+       elm_object_signal_emit(layout, "elm,state,guidetext,hide", "elm");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_common_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (elm_entry_is_empty(obj))
+               elm_object_signal_emit(layout, "elm,state,guidetext,show", "elm");
+
+       elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_common_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       D_ENTER;
+
+       Evas_Object *entry = (Evas_Object *)data;
+
+       elm_entry_entry_set(entry, "");
+       elm_object_signal_emit(obj, "elm,state,eraser,hide", "elm");
+
+       D_LEAVE;
+}
+
+Evas_Object *msg_ui_setting_common_create_bg(Evas_Object *parent)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent object is NULL");
+
+       Evas_Object *bg;
+
+       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_show(bg);
+
+       return bg;
+}
+
+Evas_Object *msg_ui_setting_common_create_layout(Evas_Object *parent)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent object is NULL");
+
+       Evas_Object *layout;
+
+       layout = elm_layout_add(parent);
+
+       elm_layout_theme_set(layout, "layout", "application", "noindicator");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       /* elm_object_style_set(settingData->bg, "group_list"); */
+
+       D_LEAVE;
+
+       return layout;
+}
+
+void msg_ui_setting_common_create_back_btn(Evas_Object *nf, Evas_Smart_Cb func, void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(nf == NULL, "navi_frame is NULL");
+
+       Evas_Object *back_btn;
+       Elm_Object_Item *navi_it;
+
+       back_btn = elm_button_add(nf);
+       navi_it = elm_naviframe_top_item_get(nf);
+       elm_object_item_part_content_set(navi_it, "prev_btn", back_btn);
+
+       elm_object_style_set(back_btn, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_btn, "clicked", func, (void *)data);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_common_create_title_back_btn(Evas_Object *nf, Evas_Smart_Cb func, void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(nf == NULL, "nf is NULL");
+
+       Evas_Object *back_btn;
+       Elm_Object_Item *navi_it;
+
+       back_btn = elm_button_add(nf);
+       navi_it = elm_naviframe_top_item_get(nf);
+       elm_object_item_part_content_set(navi_it, "title_left_btn", back_btn);
+
+       elm_object_style_set(back_btn, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_btn, "clicked", func, (void *)data);
+
+       D_LEAVE;
+}
+
+Evas_Object *msg_ui_setting_common_create_title_btn(Evas_Object *nf, const char *text, Evas_Smart_Cb func, void *data)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(nf == NULL, NULL, "nf is NULL");
+
+       Evas_Object *button;
+
+       button = elm_button_add(nf);
+       if (button == NULL) {
+               D_MSG("elm_button_add() is failed !!");
+               return NULL;
+       }
+       elm_object_style_set(button, "naviframe/title_icon");
+
+       if (strcmp(text, dgettext("sys_string", "IDS_COM_SK_DONE")) == 0 || strcmp(text, dgettext("sys_string", "IDS_COM_SK_SAVE")) == 0) {
+               Evas_Object *icon = elm_icon_add(button);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_COMMON_FILE_PLUS_ICON);
+               evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1 , 1);
+               elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+               elm_object_content_set(button, icon);
+       } else if (strcmp(text, dgettext("sys_string", "IDS_COM_SK_CANCEL")) == 0) {
+               elm_object_style_set(button, "naviframe/back_btn/default");
+       } else {
+               elm_object_style_set(button, "naviframe/title/default");
+               elm_object_text_set(button, text);
+       }
+
+       evas_object_smart_callback_add(button, "clicked", func, (void *)data);
+
+       D_LEAVE;
+       return button;
+}
+
+Evas_Object *msg_ui_setting_common_create_toolbar(Evas_Object *parent, const char *text, Evas_Smart_Cb func, void *data)
+{
+       D_ENTER;
+       Evas_Object *btn = elm_button_add(parent);
+       if (!btn) return NULL;
+       elm_object_style_set(btn, "naviframe/toolbar/default");
+       elm_object_text_set(btn, text);
+       evas_object_smart_callback_add(btn, "clicked", func, data);
+       return btn;
+}
+
+Evas_Object *msg_ui_setting_common_create_genlist(Evas_Object *parent)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent is NULL");
+
+       Evas_Object *genlist;
+
+       genlist = elm_genlist_add(parent);
+
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       D_LEAVE;
+
+       return genlist;
+}
+
+void msg_ui_setting_common_append_genlist_separator(Evas_Object *genlist, void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(genlist == NULL, "genlist is NULL");
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = NULL;
+
+       settingData->grp_sep_itc.item_style = "dialogue/separator";
+       settingData->grp_sep_itc.func.text_get = NULL;
+       settingData->grp_sep_itc.func.content_get = NULL;
+       settingData->grp_sep_itc.func.state_get = NULL;
+       settingData->grp_sep_itc.func.del = NULL;
+
+       it = elm_genlist_item_append(genlist, &settingData->grp_sep_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_common_append_genlist_separator_without_bot_line(Evas_Object *genlist, void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(genlist == NULL, "genlist is NULL");
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = NULL;
+
+       settingData->grp_sep_without_bot_line_itc.item_style = "dialogue/seperator.4";
+       settingData->grp_sep_without_bot_line_itc.func.text_get = NULL;
+       settingData->grp_sep_without_bot_line_itc.func.content_get = NULL;
+       settingData->grp_sep_without_bot_line_itc.func.state_get = NULL;
+       settingData->grp_sep_without_bot_line_itc.func.del = NULL;
+
+       it = elm_genlist_item_append(genlist, &settingData->grp_sep_without_bot_line_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+       D_LEAVE;
+}
+
+Evas_Object *msg_ui_setting_common_create_scroller(Evas_Object *parent)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent is NULL");
+
+       Evas_Object *scroller;
+
+       scroller = elm_scroller_add(parent);
+
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+       evas_object_show(scroller);
+
+       D_LEAVE;
+
+       return scroller;
+}
+
+Evas_Object *msg_ui_setting_common_create_no_content_view(Evas_Object *parent, const char *text)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent is NULL");
+
+       Evas_Object *no_content_layout;
+
+       no_content_layout = elm_layout_add(parent);
+       elm_layout_theme_set(no_content_layout, "layout", "nocontents", "text");
+
+       if (text != NULL)
+               elm_object_part_text_set(no_content_layout, "elm.text", text);
+       else
+               elm_object_part_text_set(no_content_layout, "elm.text", dgettext("sys_string", "IDS_COM_BODY_NO_ITEMS"));
+
+       D_LEAVE;
+
+       return no_content_layout;
+}
+
+Evas_Object *msg_ui_setting_common_add_box(Evas_Object *parent)
+{
+       D_ENTER;
+
+       Evas_Object *box = elm_box_add(parent);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0);
+       evas_object_show(box);
+
+       D_LEAVE;
+
+       return box;
+}
+
+Evas_Object *msg_ui_setting_common_create_editfield(Evas_Object *parent, const char *label, const char *guide_label)
+{
+       D_ENTER;
+
+       Evas_Object *layout = NULL;
+       Evas_Object *entry = NULL;
+
+       layout = elm_layout_add(parent);
+       elm_layout_theme_set(layout, "layout", "editfield", "title");
+
+       entry = elm_entry_add(layout);
+       elm_object_part_content_set(layout, "elm.swallow.content", entry);
+       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+
+       elm_object_part_text_set(layout, "elm.text", label);
+       elm_object_part_text_set(layout, "elm.guidetext", guide_label);
+
+       evas_object_smart_callback_add(entry, "focused", __msg_ui_setting_common_entry_focus_cb, (void *)layout);
+       evas_object_smart_callback_add(entry, "unfocused", __msg_ui_setting_common_entry_unfocus_cb, (void *)layout);
+       evas_object_smart_callback_add(entry, "changed", __msg_ui_setting_common_entry_changed_cb, (void *)layout);
+       elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", __msg_ui_setting_common_eraser_clicked_cb, (void *)entry);
+
+       D_LEAVE;
+
+       return layout;
+}
+
+int msg_ui_setting_common_vconf_get(const char *pKey)
+{
+       D_ENTER;
+
+       int retVal = 0;
+
+       if (vconf_get_int(pKey, &retVal) < 0)
+               return MSG_UI_RET_ERR;
+
+       D_MSG("value = %d", retVal);
+
+       return retVal;
+}
+
+int msg_ui_setting_common_vconf_set(const char *pKey, int nSetValue)
+{
+       D_ENTER;
+
+       int retVal = 0;
+
+       if (vconf_set_int(pKey, nSetValue) != 0)
+               return MSG_UI_RET_ERR;
+
+       return retVal;
+}
+
+static void __msg_ui_setting_common_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_common_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               D_MSG("Popup is exist !!");
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+       else
+               D_MSG("Popup is NULL !!");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_common_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+}
+
+void msg_ui_setting_common_show_popup(PMSG_SETTING_DATA settingData, char *str)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_SETTING_DATA is NULL");
+
+       settingData->popup = elm_popup_add(settingData->layout_main);
+
+       evas_object_size_hint_weight_set(settingData->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(settingData->popup, str);
+       evas_object_smart_callback_add(settingData->popup, "block,clicked", __msg_ui_setting_common_popup_block_clicked_cb, settingData);
+       elm_popup_timeout_set(settingData->popup, 2);
+       evas_object_smart_callback_add(settingData->popup, "timeout", __msg_ui_setting_common_popup_timeout_cb, settingData);
+       evas_object_show(settingData->popup);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_common_show_btn_popup(void *data, char *str)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       settingData->popup = elm_popup_add(settingData->layout_main);
+
+       evas_object_size_hint_weight_set(settingData->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(settingData->popup, str);
+
+       Evas_Object *btn1 = elm_button_add(settingData->popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+       elm_object_part_content_set(settingData->popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", __msg_ui_setting_common_popup_btn_clicked_cb, settingData);
+
+       evas_object_show(settingData->popup);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_common_show_notify(void *data, char *str)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *btn1;
+
+       msg_ui_setting_common_show_popup(settingData, str);
+
+       btn1 = elm_button_add(settingData->popup);
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+       evas_object_smart_callback_add(btn1, "clicked", __msg_ui_setting_common_popup_btn_clicked_cb, settingData);
+
+       D_LEAVE;
+}
+
+/**
+ * Create and show/hide selectioninfo.
+ *
+ * This fucntion create selectioninfo and show/hide it
+ *
+ * @param *parent: layout object.
+ * @param *str: if it is NULL or string length is 0, it will hide selectioninfo.
+ * @param *data: user data.
+ *
+ **/
+void msg_ui_setting_common_show_selectioninfo(Evas_Object *parent, char* str, void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (!settingData->selectioninfo) {
+               settingData->selectioninfo = elm_notify_add(parent);
+               elm_notify_align_set(settingData->selectioninfo, ELM_NOTIFY_ALIGN_FILL, 1.0);
+
+               settingData->selectioninfo_layout = elm_layout_add(parent);
+               elm_layout_theme_set(settingData->selectioninfo_layout, "standard", "selectioninfo", "center_text");
+               elm_object_content_set(settingData->selectioninfo, settingData->selectioninfo_layout);
+       }
+
+       if (str == NULL || strlen(str) == 0) {
+               evas_object_hide(settingData->selectioninfo);
+       } else {
+               edje_object_part_text_set(_EDJ(settingData->selectioninfo_layout), "elm.text", str);
+               evas_object_show(settingData->selectioninfo);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_common_destroy_selectioninfo(void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->selectioninfo_layout) {
+               evas_object_del(settingData->selectioninfo_layout);
+               settingData->selectioninfo_layout = NULL;
+       }
+
+       if (settingData->selectioninfo) {
+               evas_object_del(settingData->selectioninfo);
+               settingData->selectioninfo = NULL;
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_common_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ug, "ug is NULL");
+       D_MSG_RETM_IF(!priv, "priv is NULL");
+
+       Evas_Object *base;
+
+       base = ug_get_layout(ug);
+
+       if (!base) {
+               ug_destroy(ug);
+               D_EMSG("base is NULL !!");
+               return;
+       }
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(base);
+               break;
+       case UG_MODE_FRAMEVIEW:
+               break;
+       default:
+               break;
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_common_ug_destroy_cb(ui_gadget_h ug, void *priv)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ug, "ug is NULL");
+       D_MSG_RETM_IF(!priv, "priv is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA) priv;
+
+       settingData->loaded_ug = ug;
+
+       if (settingData->loaded_ug) {
+               ug_destroy(settingData->loaded_ug);
+               settingData->loaded_ug = NULL;
+       }
+
+       D_LEAVE;
+}
+
+ui_gadget_h msg_ui_setting_common_call_phoneui_ug(void *data, void *result_cb)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(data == NULL, NULL, "PMSG_SETTING_DATA is NULL");
+       D_MSG_RETVM_IF(result_cb == NULL, NULL, "result_cb is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       ui_gadget_h ug = NULL;
+       struct ug_cbs cbs = {0, };
+
+       service_h svc_h = NULL;
+       char request_number[DEF_BUF_LEN_D + 1] = {0, };
+
+       if (service_create(&svc_h) < 0 || svc_h == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
+
+       snprintf(request_number, sizeof(request_number)-1, "%d", MSG_CT_UG_REQUEST_SELECT_NUMBER);
+       service_add_extra_data(svc_h, MSG_BUNDLE_KEY_TYPE, request_number);
+
+       cbs.layout_cb = __msg_ui_setting_common_ug_layout_cb;
+       cbs.result_cb = result_cb;
+       cbs.destroy_cb = __msg_ui_setting_common_ug_destroy_cb;
+       cbs.priv = data;
+
+       ug = ug_create(settingData->ug, "contacts-tabui-efl", UG_MODE_FULLVIEW, svc_h, &cbs);
+       if (ug == NULL)
+               D_EMSG("ug_create is failed !!");
+
+       if (svc_h) {
+               service_destroy(svc_h);
+       }
+
+       return ug;
+}
diff --git a/setting/src/main/msg-ui-setting-gadget.c b/setting/src/main/msg-ui-setting-gadget.c
new file mode 100755 (executable)
index 0000000..1d4d73f
--- /dev/null
@@ -0,0 +1,374 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+
+#include "msg-ui-setting-types.h"
+#include "msg-ui-setting-main.h"
+#include "msg-ui-common-utility.h"
+#include <contacts.h>
+
+static void __msg_ui_setting_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_gadget_popup(PMSG_SETTING_DATA settingData, char *str);
+static Evas_Object *__msg_ui_setting_create_fullview(Evas_Object *parent, void *ugd);
+static Evas_Object *__msg_ui_setting_create_frameview(Evas_Object *parent, void *ugd);
+static void *__msg_ui_setting_on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv);
+static void __msg_ui_setting_on_start(ui_gadget_h ug, service_h data, void *priv);
+static void __msg_ui_setting_on_pause(ui_gadget_h ug, service_h data, void *priv);
+static void __msg_ui_setting_on_resume(ui_gadget_h ug, service_h data, void *priv);
+static void __msg_ui_setting_on_destroy(ui_gadget_h ug, service_h data, void *priv);
+static void __msg_ui_setting_on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv);
+static void __msg_ui_setting_on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv);
+static void __msg_ui_setting_on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv);
+
+static void __msg_ui_setting_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+
+       ug_destroy_me(settingData->ug);
+
+       D_LEAVE;
+}
+
+static void
+__msg_ui_setting_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+
+       ug_destroy_me(settingData->ug);
+}
+
+static void __msg_ui_setting_gadget_popup(PMSG_SETTING_DATA settingData, char *str)
+{
+       D_ENTER;
+
+       settingData->popup = elm_popup_add(settingData->layout_main);
+
+       evas_object_size_hint_weight_set(settingData->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(settingData->popup, str);
+       evas_object_smart_callback_add(settingData->popup, "block,clicked", __msg_ui_setting_popup_block_clicked_cb, settingData);
+       elm_popup_timeout_set(settingData->popup, 2);
+       evas_object_smart_callback_add(settingData->popup, "timeout", __msg_ui_setting_popup_timeout_cb, settingData);
+       evas_object_show(settingData->popup);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_create_fullview(Evas_Object *parent, void *ugd)
+{
+       D_ENTER;
+
+       Evas_Object *base;
+       Evas_Object *bg;
+       PMSG_SETTING_DATA settingData;
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ASSERT, !ugd, NULL);
+
+       settingData = (PMSG_SETTING_DATA)ugd;
+
+       bg = msg_ui_setting_common_create_bg(parent);
+       settingData->bg = bg;
+       elm_object_style_set(bg, "transparent");
+
+       /*Set default layout */
+       base = msg_ui_setting_create_layout_main(parent);
+       elm_object_part_content_set(base, "elm.swallow.bg", bg);
+
+       D_LEAVE;
+       return base;
+}
+
+static Evas_Object *__msg_ui_setting_create_frameview(Evas_Object *parent, void *ugd)
+{
+       Evas_Object *base = NULL;
+
+       /* Create Frame view */
+
+       return base;
+}
+
+static void *__msg_ui_setting_on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv)
+{
+       D_ENTER;
+
+       Evas_Object *parent;
+       PMSG_SETTING_DATA ugd;
+
+       if (!ug || !priv)
+               return NULL;
+
+       bindtextdomain("message", LOCALEDIR);
+
+       ugd = (PMSG_SETTING_DATA)priv;
+       ugd->ug = ug;
+
+       ugd->th = elm_theme_new();
+       elm_theme_ref_set(ugd->th, NULL);
+       elm_theme_extension_add(ugd->th, MSG_CUSTOM_WINSET_EDJ);
+
+       ugd->cbs.layout_cb = NULL;
+       ugd->cbs.result_cb = NULL;
+       ugd->cbs.destroy_cb = NULL;
+       ugd->cbs.priv = NULL;
+
+       parent = ug_get_parent_layout(ug);
+
+       if (!parent)
+               return NULL;
+
+       if (mode == UG_MODE_FULLVIEW)
+               ugd->layout_main = __msg_ui_setting_create_fullview(parent, ugd);
+       else
+               ugd->layout_main = __msg_ui_setting_create_frameview(parent, ugd);
+
+       return ugd->layout_main;
+}
+
+static void __msg_ui_setting_on_start(ui_gadget_h ug, service_h data, void *priv)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA ugd = (PMSG_SETTING_DATA)priv;
+       msg_error_t     err = MSG_SUCCESS;
+       msg_handle_t    msgHandle;
+       int ct_ret = CONTACTS_ERROR_NONE;
+       char *svc_value = NULL;
+
+       /*Set Message Handler*/
+       err = msg_open_msg_handle(&msgHandle);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_open_msg_handle failed, Error=[%d]", err);
+               __msg_ui_setting_gadget_popup(ugd, dgettext(MESSAGE_PKGNAME, "Message server is not ready"));
+               return;
+       }
+
+       ugd->msgHandle = msgHandle;
+
+       ct_ret = contacts_connect2();
+       if (ct_ret != CONTACTS_ERROR_NONE)
+               D_EMSG("contacts_svc_connect2 failed : ct_ret = [%d]", ct_ret);
+
+       if (data != NULL)
+               service_get_extra_data(data, MSG_BUNDLE_KEY_TYPE, &svc_value);
+
+       if (ugd->layout_main) {
+               if (svc_value != NULL && strcmp(svc_value, MSG_BUNDLE_VALUE_SPAM_SETTING) == 0)
+                       msg_ui_setting_launch_spam_setting(ugd);
+               else
+                       msg_ui_setting_launch(ugd);
+       } else {
+               D_EMSG("layout_main is NULL !!");
+       }
+}
+
+static void __msg_ui_setting_on_pause(ui_gadget_h ug, service_h data, void *priv)
+{
+       D_ENTER;
+}
+
+static void __msg_ui_setting_on_resume(ui_gadget_h ug, service_h data, void *priv)
+{
+       D_ENTER;
+}
+
+static void __msg_ui_setting_on_destroy(ui_gadget_h ug, service_h data, void *priv)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA ugd;
+
+       msg_error_t err = MSG_SUCCESS;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       int ct_ret = CONTACTS_ERROR_NONE;
+
+       if (!ug || !priv)
+               return;
+
+       ugd = (PMSG_SETTING_DATA)priv;
+
+       EINA_LIST_FREE(ugd->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       ct_ret = contacts_disconnect2();
+       if (ct_ret != CONTACTS_ERROR_NONE)
+               D_EMSG("contacts_svc_disconnect2 failed : ct_ret = [%d]", ct_ret);
+
+       if (ugd->msgHandle) {
+               err = msg_close_msg_handle(&ugd->msgHandle);
+               if (err != MSG_SUCCESS) {
+                       D_EMSG("msg_open_msg_handle failed, Error=[%d]", err);
+               }
+       }
+
+       if (ugd->bg) {
+               evas_object_del(ugd->bg);
+               ugd->bg = NULL;
+       }
+
+       evas_object_del(ugd->layout_main);
+       ugd->layout_main = NULL;
+
+       if (ugd->th) {
+               elm_theme_extension_del(ugd->th, MSG_CUSTOM_WINSET_EDJ);
+               elm_theme_free(ugd->th);
+               ugd->th = NULL;
+       }
+
+       if (ugd->msg_setting.setting_opt) {
+               msg_release_struct(&(ugd->msg_setting.setting_opt));
+       }
+
+       if (ugd->msg_setting.smsc_opt) {
+               msg_release_struct(&(ugd->msg_setting.smsc_opt));
+       }
+
+       if (ugd->msg_setting.mms_recv_opt) {
+               msg_release_struct(&(ugd->msg_setting.mms_recv_opt));
+       }
+
+       if (ugd->msg_setting.cb_msg_opt) {
+               msg_release_struct(&(ugd->msg_setting.cb_msg_opt));
+       }
+}
+
+static void __msg_ui_setting_on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv)
+{
+       D_ENTER;
+}
+
+static void __msg_ui_setting_on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA ugd;
+
+       if (!ug || !priv)
+               return;
+
+       ugd = (PMSG_SETTING_DATA)priv;
+
+       switch (event) {
+               case UG_EVENT_LOW_MEMORY:
+                       break;
+               case UG_EVENT_LOW_BATTERY:
+                       break;
+               case UG_EVENT_LANG_CHANGE:
+                       break;
+               case UG_EVENT_ROTATE_PORTRAIT:
+                       break;
+               case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+                       break;
+               case UG_EVENT_ROTATE_LANDSCAPE:
+                       break;
+               case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+                       break;
+               case UG_EVENT_REGION_CHANGE:
+                       break;
+               default:
+                       break;
+       }
+}
+
+static void __msg_ui_setting_on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv)
+{
+       D_ENTER;
+       D_LEAVE;
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA ugd;
+
+       if (!ops)
+               return MSG_UI_RET_ERR;
+
+       ugd = calloc(1, sizeof(MSG_SETTING_DATA));
+       if (!ugd)
+               return MSG_UI_RET_ERR;
+
+       ops->create = __msg_ui_setting_on_create;
+       ops->start = __msg_ui_setting_on_start;
+       ops->pause = __msg_ui_setting_on_pause;
+       ops->resume = __msg_ui_setting_on_resume;
+       ops->destroy = __msg_ui_setting_on_destroy;
+       ops->message = __msg_ui_setting_on_message;
+       ops->event = __msg_ui_setting_on_event;
+       ops->key_event = __msg_ui_setting_on_key_event;
+       ops->priv = (void *)ugd;
+       ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA ugd;
+
+       if (!ops)
+               return;
+
+       ugd = (PMSG_SETTING_DATA)ops->priv;
+       if (ugd == NULL) {
+               D_EMSG("ugd is NULL");
+               return;
+       }
+
+       /* If msg-server isn't ready, message setting try to display error popup.
+        * In this case, popup should be destroyed in UG_MODULE_EXIT.
+        * Because, ug_create is failed. Therefore, only UG_MODULE_EXIT is called.
+        */
+       if (ugd->popup != NULL) {
+               evas_object_del(ugd->popup);
+               ugd->popup = NULL;
+       }
+
+       free(ugd);
+       ugd = NULL;
+
+}
+
+UG_MODULE_API int setting_plugin_reset(service_h data, void *priv)
+{
+       /* To Do : Reset message settings. */
+
+       /* In case of success, it will return 0. */
+       return 0;
+}
diff --git a/setting/src/main/msg-ui-setting-main.c b/setting/src/main/msg-ui-setting-main.c
new file mode 100755 (executable)
index 0000000..f004066
--- /dev/null
@@ -0,0 +1,411 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+
+
+static struct _msg_ui_setting_list_item main_menu_its[] = {
+       { "IDS_MSGF_BODY_TEXT_MESSAGES", msg_ui_setting_text_msg_cb },
+       { "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE", msg_ui_setting_mm_msg_cb },
+       { "IDS_MSGF_BODY_SPAM_MESSAGES", msg_ui_setting_spam_msg_cb },
+       { "IDS_MSGF_BODY_BROADCASTMESSAGES", NULL },
+       { "IDS_COM_BODY_DISPLAY", NULL },
+       { "IDS_MSG_MBODY_USE_THE_VOLUME_KEY", NULL },
+       /* do not delete below */
+       { NULL, NULL }
+};
+
+
+static char *__msg_ui_setting_main_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_main_save_cb_activation(void *data);
+static void __msg_ui_setting_main_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_main_save_use_vol_key_activation(void *data);
+static void __msg_ui_setting_main_gl_use_vol_key_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_main_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_main_gl_realized(void *data, Evas_Object *obj, void *ei);
+static Evas_Object *__msg_ui_setting_create_main_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+
+
+static PMSG_SETTING_DATA g_settingData = NULL;
+
+
+static char *__msg_ui_setting_main_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+
+       if (!strcmp(part, "elm.text")) {
+               if (main_menu_its[index].name) {
+                       if (strstr(main_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", main_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, main_menu_its[index].name));
+               }
+       }
+       return NULL;
+}
+
+static void __msg_ui_setting_main_save_cb_activation(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Eina_Bool set_val = EINA_FALSE;
+       bool cb_msg = false;
+
+       set_val = elm_check_state_get(settingData->cb_activate_check);
+       D_MSG("cb_msg set = %d", (bool)set_val);
+
+       cb_msg = (bool)set_val;
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_CBMSG;
+       msg_set_bool_value(settingData->msg_setting.cb_msg_opt, MSG_CB_RECEIVE_BOOL, set_val);
+       msg_ui_setting_msg_set_config(settingData);
+
+}
+
+static void __msg_ui_setting_main_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_main_save_cb_activation(settingData);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_main_save_use_vol_key_activation(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Eina_Bool set_val = EINA_FALSE;
+       bool use_vol_key = false;
+
+       set_val = elm_check_state_get(settingData->use_vol_key_activate_check);
+       D_MSG("vol_key set = %d", (bool)set_val);
+
+       use_vol_key = (bool)set_val;
+       vconf_set_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, use_vol_key);
+
+       /* When USE VOL KEY is off, VCONFKEY_MSG_APP_FONT_SIZE is set with accessibility font size*/
+       if (!use_vol_key) {
+               int accessibility_font_size = -1;
+               if (vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &accessibility_font_size) < 0) {
+                       D_EMSG("vconf_get_int(font_size) is failed !!");
+                       return;
+               }
+               D_MSG("accessibility_font_size is %d", accessibility_font_size);
+               if (vconf_set_int(VCONFKEY_MSG_APP_FONT_SIZE, accessibility_font_size) < 0) {
+                       D_EMSG("vconf_get_int(font_size) is failed !!");
+                       return;
+               }
+       }
+}
+
+static void __msg_ui_setting_main_gl_use_vol_key_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_main_save_use_vol_key_activation(settingData);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_main_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool bReceive = false;
+       int use_vol_key = 0;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               if (index == MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES) {
+                       check = elm_check_add(obj);
+                       settingData->cb_activate_check = check;
+
+                       msg_get_bool_value(settingData->msg_setting.cb_msg_opt, MSG_CB_RECEIVE_BOOL, &bReceive);
+                       D_MSG("cb_msg_opt : %d", bReceive);
+
+                       if (bReceive == true)
+                               elm_check_state_set(check, EINA_TRUE);
+                       else
+                               elm_check_state_set(check, EINA_FALSE);
+
+                       elm_object_style_set(check, "on&off");
+
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_main_gl_check_clicked_cb, settingData);
+
+                       return check;
+               } else if (index == MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY) {
+                       check = elm_check_add(obj);
+                       settingData->use_vol_key_activate_check = check;
+
+                       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_vol_key);
+                       D_MSG("vconf_vol_key : %d", use_vol_key);
+
+                       if (use_vol_key == true)
+                               elm_check_state_set(check, EINA_TRUE);
+                       else
+                               elm_check_state_set(check, EINA_FALSE);
+
+                       elm_object_style_set(check, "on&off");
+
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_main_gl_use_vol_key_check_clicked_cb, settingData);
+
+                       return check;
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       Eina_Bool set_val = EINA_FALSE;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index == MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES) {
+               set_val = elm_check_state_get(settingData->cb_activate_check);
+
+               elm_check_state_set(settingData->cb_activate_check, !set_val);
+
+               __msg_ui_setting_main_save_cb_activation((void *)settingData);
+
+       } else if (index == MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY) {
+               set_val = elm_check_state_get(settingData->use_vol_key_activate_check);
+
+               elm_check_state_set(settingData->use_vol_key_activate_check, !set_val);
+
+               __msg_ui_setting_main_save_use_vol_key_activation((void *)settingData);
+
+       } else {
+               if (main_menu_its[index].func != NULL)
+                       main_menu_its[index].func(settingData, obj, event_info);
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_main_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+
+       int index = (int)elm_object_item_data_get(ei);
+
+       if (index == MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY)
+               return;
+
+       if (index == MSG_UI_SETTING_MAIN_MENU_TEXT_MESSAGES)
+               elm_object_item_signal_emit(ei, "elm,state,top", "");
+       else if (index == MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES)
+               elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+       else
+               elm_object_item_signal_emit(ei, "elm,state,center", "");
+
+}
+
+static Evas_Object *__msg_ui_setting_create_main_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       Evas_Object *main_genlist;
+       Elm_Object_Item *it = NULL;
+       int index = 0;
+
+       main_genlist = msg_ui_setting_common_create_genlist(parent);
+       evas_object_smart_callback_add(main_genlist, "realized", __msg_ui_setting_main_gl_realized, NULL);
+       settingData->main_genlist = main_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(main_genlist, settingData);
+
+       settingData->main_itc.item_style = "dialogue/1text";
+       settingData->main_itc.func.text_get = __msg_ui_setting_main_gl_text_get;
+       settingData->main_itc.func.content_get = NULL;
+       settingData->main_itc.func.state_get = NULL;
+       settingData->main_itc.func.del = NULL;
+
+       settingData->cb_msg_itc.item_style = "dialogue/1text.1icon";
+       settingData->cb_msg_itc.func.text_get = __msg_ui_setting_main_gl_text_get;
+       settingData->cb_msg_itc.func.content_get = __msg_ui_setting_main_gl_content_get;
+       settingData->cb_msg_itc.func.state_get = NULL;
+       settingData->cb_msg_itc.func.del = NULL;
+
+       settingData->sub_title_itc.item_style = "dialogue/title";
+       settingData->sub_title_itc.func.text_get = __msg_ui_setting_main_gl_text_get;
+       settingData->sub_title_itc.func.content_get = NULL;
+       settingData->sub_title_itc.func.state_get = NULL;
+       settingData->sub_title_itc.func.del = NULL;
+
+       settingData->use_vol_key_itc.item_style = "dialogue/1text.1icon";
+       settingData->use_vol_key_itc.func.text_get = __msg_ui_setting_main_gl_text_get;
+       settingData->use_vol_key_itc.func.content_get = __msg_ui_setting_main_gl_content_get;
+       settingData->use_vol_key_itc.func.state_get = NULL;
+       settingData->use_vol_key_itc.func.del = NULL;
+
+       for (index = 0; main_menu_its[index].name; index++) {
+               if (index == MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES) {
+                       elm_genlist_item_append(main_genlist, &settingData->cb_msg_itc, (void *)index, NULL,
+                                               ELM_GENLIST_ITEM_NONE, __msg_ui_setting_main_gl_sel, (void *)index);
+               } else if (index == MSG_UI_SETTING_MAIN_MENU_SUB_TITLE) {
+                       it = elm_genlist_item_append(main_genlist, &settingData->sub_title_itc, (void *)index, NULL,
+                                               ELM_GENLIST_ITEM_NONE, NULL, (void *)index);
+                       elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+               } else if (index == MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY) {
+                       elm_genlist_item_append(main_genlist, &settingData->use_vol_key_itc, (void *)index, NULL,
+                                               ELM_GENLIST_ITEM_NONE, __msg_ui_setting_main_gl_sel, (void *)index);
+               } else {
+                       elm_genlist_item_append(main_genlist, &settingData->main_itc, (void *)index, NULL,
+                                               ELM_GENLIST_ITEM_NONE, __msg_ui_setting_main_gl_sel, (void *)index);
+               }
+       }
+
+       D_LEAVE;
+
+       return main_genlist;
+}
+
+PMSG_SETTING_DATA msg_ui_setting_get_data(void)
+{
+       if (g_settingData)
+               return g_settingData;
+       else
+               return NULL;
+}
+
+Evas_Object *msg_ui_setting_create_navigation_layout(Evas_Object *parent)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent object is NULL");
+
+       Evas_Object *navi_frame;
+
+       navi_frame = elm_naviframe_add(parent);
+       elm_object_part_content_set(parent, "elm.swallow.content", navi_frame);
+
+       evas_object_show(navi_frame);
+
+       D_LEAVE;
+
+       return navi_frame;
+}
+
+void msg_ui_setting_create_main_view(PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_SETTING_DATA is NULL");
+
+       Evas_Object *main_layout;
+       Evas_Object *main_genlist;
+
+       Evas_Object *l_button;
+
+       msg_release_struct(&(settingData->msg_setting.cb_msg_opt));
+
+       /* Get CB activation setting. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_CBMSG;
+       msg_ui_setting_msg_get_config(settingData);
+
+       /* Change background color from transparent to group_list. */
+       elm_object_style_set(settingData->bg, "group_list");
+
+       main_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       main_genlist = __msg_ui_setting_create_main_genlist(settingData->navi_frame, settingData);
+       elm_object_part_content_set(main_layout, "elm.swallow.content", main_genlist);
+
+       /* Create Left Button */
+       l_button = elm_button_add(settingData->navi_frame);
+
+       elm_naviframe_item_push(settingData->navi_frame, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), l_button, NULL, main_layout, NULL);
+
+       /* Style set should be called after elm_naviframe_item_push(). */
+       elm_object_style_set(l_button, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(l_button, "clicked", msg_ui_setting_quit_cb, (void *)settingData);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_launch(PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       /* Set global data. */
+       g_settingData = settingData;
+
+       /* Navigation Frame */
+       settingData->navi_frame = msg_ui_setting_create_navigation_layout(settingData->layout_main);
+
+       msg_ui_setting_create_main_view(settingData);
+
+       D_LEAVE;
+}
+
+Evas_Object *msg_ui_setting_create_layout_main(Evas_Object *parent)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent object is NULL");
+
+       Evas_Object *layout;
+       layout = elm_layout_add(parent);
+       D_MSG_RETVM_IF(layout == NULL, NULL, "Failed elm_layout_add.\n");
+
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(layout);
+
+       D_LEAVE;
+
+       return layout;
+}
+
+void msg_ui_setting_launch_spam_setting(PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       /* Set global data. */
+       g_settingData = settingData;
+
+       /* Navigation Frame */
+       settingData->navi_frame = msg_ui_setting_create_navigation_layout(settingData->layout_main);
+
+       msg_ui_setting_spam_create_view(settingData, NULL, NULL);
+
+       D_LEAVE;
+}
diff --git a/setting/src/main/msg-ui-setting-msg-service-wrapper.c b/setting/src/main/msg-ui-setting-msg-service-wrapper.c
new file mode 100755 (executable)
index 0000000..206dadb
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-msg-service-wrapper.h"
+
+
+int msg_ui_setting_msg_set_config(PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       msg_error_t err = MSG_SUCCESS;
+
+       switch (settingData->msg_setting.type) {
+       case MSG_UI_SETTING_TYPE_GENERAL:
+               err = msg_set_general_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_SMS_SEND:
+               err = msg_set_sms_send_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_SMSC_LIST:
+               err = msg_set_smsc_opt(settingData->msgHandle, settingData->msg_setting.smsc_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_MMS_SEND:
+               err = msg_set_mms_send_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_MMS_RECEIVE:
+               err = msg_set_mms_recv_opt(settingData->msgHandle, settingData->msg_setting.mms_recv_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_CBMSG:
+               err = msg_set_cb_opt(settingData->msgHandle, settingData->msg_setting.cb_msg_opt);
+               break;
+       default:
+               D_EMSG("[FAIL] TYPE err %d \n", settingData->msg_setting.type);
+               return MSG_UI_RET_ERR;
+       }
+
+       D_MSG_RETVM_IF(err != MSG_SUCCESS, -1, "[FAIL] msg_set_config of MSG FW : err %d \n", err);
+
+       D_LEAVE;
+
+       return err;
+}
+
+int msg_ui_setting_msg_get_config(PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       msg_error_t err = MSG_SUCCESS;
+
+       switch (settingData->msg_setting.type) {
+       case MSG_UI_SETTING_TYPE_GENERAL:
+               settingData->msg_setting.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_GENERAL_OPT);
+               err = msg_get_general_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_SMS_SEND:
+               settingData->msg_setting.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_SMS_SEND_OPT);
+               err = msg_get_sms_send_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_SMSC_LIST:
+               settingData->msg_setting.smsc_opt = msg_create_struct(MSG_STRUCT_SETTING_SMSC_OPT);
+               err = msg_get_smsc_opt(settingData->msgHandle, settingData->msg_setting.smsc_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_MMS_SEND:
+               settingData->msg_setting.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_MMS_SEND_OPT);
+               err = msg_get_mms_send_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_MMS_RECEIVE:
+               settingData->msg_setting.mms_recv_opt = msg_create_struct(MSG_STRUCT_SETTING_MMS_RECV_OPT);
+               err = msg_get_mms_recv_opt(settingData->msgHandle, settingData->msg_setting.mms_recv_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_CBMSG:
+               settingData->msg_setting.cb_msg_opt = msg_create_struct(MSG_STRUCT_SETTING_CB_OPT);
+               err = msg_get_cb_opt(settingData->msgHandle, settingData->msg_setting.cb_msg_opt);
+               break;
+       default:
+               D_EMSG("[FAIL] TYPE err %d \n", settingData->msg_setting.type);
+               return MSG_UI_RET_ERR;
+       }
+
+       D_MSG_RETVM_IF(err != MSG_SUCCESS, -1, "[FAIL] msg_get_config of MSG FW : err %d \n", err);
+
+       D_LEAVE;
+
+       return err;
+}
+
diff --git a/setting/src/multimedia/msg-ui-setting-mm-message.c b/setting/src/multimedia/msg-ui-setting-mm-message.c
new file mode 100755 (executable)
index 0000000..1be0615
--- /dev/null
@@ -0,0 +1,770 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+#include "msg-ui-setting-mm-message.h"
+
+
+static struct _msg_ui_setting_mixed_list_item mm_menu_its[] = {
+       { 1, "IDS_MSGF_BODY_RECEIVINGOPTIONS", msg_ui_setting_mm_recv_opt_view, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_DELIVERY_REPORT", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_READ_REPORT", msg_ui_setting_mm_read_rep_view, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_MMSCREATIONMODE", NULL, ELM_GENLIST_ITEM_TREE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item mm_creation_mode_menu_its[] = {
+       { 2, "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 2, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item mm_read_rep_menu_its[] = {
+       { 1, "IDS_MSGF_BODY_REQUEST_READ_REPORT", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_SEND_READ_REPORT", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static void __msg_ui_setting_mm_save_creation_mode(void *data);
+static char *__msg_ui_setting_mm_creation_mode_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_creation_mode_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_mm_creation_mode_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_creation_mode_gl_sel(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_setting_mm_read_rep_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_save_read_rep_request(void *data);
+static void __msg_ui_setting_mm_save_read_rep_send(void *data);
+static void __msg_ui_setting_mm_read_rep_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_mm_read_rep_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_read_rep_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_mm_read_rep_gl_realized(void *data, Evas_Object *obj, void *ei);
+static Evas_Object *__msg_ui_setting_mm_read_rep_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+
+static char *__msg_ui_setting_mm_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_save_delivery_rep(void *data);
+static void __msg_ui_setting_mm_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_mm_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_mm_gl_exp(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_mm_gl_con(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_mm_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_mm_gl_realized(void *data, Evas_Object *obj, void *ei);
+static Evas_Object *__msg_ui_setting_mm_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**************************
+ ***  Create mode menu  ***
+ **************************/
+
+static void __msg_ui_setting_mm_save_creation_mode(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int selection;
+       msg_error_t     err = MSG_SUCCESS;
+
+       selection = elm_radio_value_get(settingData->list.mm_msg.creation_radio_group);
+       D_MSG("selected value is %d", selection);
+
+       /* Save selected value. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+       if (selection == 1)
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_CREATION_MODE_INT, MSG_CREATION_MODE_WARNING);
+       else if (selection == 2)
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_CREATION_MODE_INT, MSG_CREATION_MODE_RESTRICTED);
+       else
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_CREATION_MODE_INT, MSG_CREATION_MODE_FREE);
+
+       err = msg_ui_setting_msg_set_config(settingData);
+       D_MSG("msg_ui_setting_msg_set_config(creation_mode) is %d", err);
+}
+
+static char *__msg_ui_setting_mm_creation_mode_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (mm_creation_mode_menu_its[index].name) {
+                       if (strstr(mm_creation_mode_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", mm_creation_mode_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_creation_mode_menu_its[index].name));
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_creation_mode_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_mm_save_creation_mode(data);
+
+       elm_genlist_item_update(settingData->list.mm_msg.creation_mode_item);
+}
+
+static Evas_Object *__msg_ui_setting_mm_creation_mode_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               evas_object_propagate_events_set(radio, EINA_FALSE);
+               evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_mm_creation_mode_radio_cb, (void *)settingData);
+
+               elm_radio_group_add(radio, settingData->list.mm_msg.creation_radio_group);
+
+               return radio;
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_creation_mode_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = NULL;
+       int index = (int)data;
+
+       settingData = msg_ui_setting_get_data();
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       /* Change radio selection. */
+       elm_radio_value_set(settingData->list.mm_msg.creation_radio_group, index);
+
+       __msg_ui_setting_mm_save_creation_mode((void *)settingData);
+
+       elm_genlist_item_update(settingData->list.mm_msg.creation_mode_item);
+
+       D_LEAVE;
+       return;
+}
+
+/**************************
+ ***  Read Report menu  ***
+ **************************/
+
+static char *__msg_ui_setting_mm_read_rep_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (mm_menu_its[index].name) {
+                       if (strstr(mm_read_rep_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", mm_read_rep_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_read_rep_menu_its[index].name));
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_save_read_rep_request(void *data)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Eina_Bool set_val = EINA_FALSE;
+
+       set_val = elm_check_state_get(settingData->list.mm_msg.mm_read_rep_request_check);
+       D_MSG("set_val = %d", (int)set_val);
+
+       /* Set requesting read report in sending option. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+       msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, set_val);
+       msg_ui_setting_msg_set_config(settingData);
+}
+
+static void __msg_ui_setting_mm_save_read_rep_send(void *data)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Eina_Bool set_val = EINA_FALSE;
+
+       set_val = elm_check_state_get(settingData->list.mm_msg.mm_read_rep_send_check);
+       D_MSG("set_val = %d", (int)set_val);
+
+       /* Set sending read report in receiving option. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+       msg_set_bool_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_READ_REPORT_BOOL, set_val);
+       msg_ui_setting_msg_set_config(settingData);
+}
+
+static void __msg_ui_setting_mm_read_rep_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (obj == settingData->list.mm_msg.mm_read_rep_request_check)
+               __msg_ui_setting_mm_save_read_rep_request(settingData);
+       else if (obj == settingData->list.mm_msg.mm_read_rep_send_check)
+               __msg_ui_setting_mm_save_read_rep_send(settingData);
+       else
+               D_EMSG("Invalid obj = 0x%x", obj);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_mm_read_rep_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool bReadValue = false;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               if (index == MSG_UI_SETTING_MM_READ_REP_MENU_REQUEST) {
+                       check = elm_check_add(obj);
+                       settingData->list.mm_msg.mm_read_rep_request_check = check;
+
+                       msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &bReadValue);
+                       if (bReadValue == true)
+                               elm_check_state_set(check, EINA_TRUE);
+                       else
+                               elm_check_state_set(check, EINA_FALSE);
+
+                       elm_object_style_set(check, "on&off");
+
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_mm_read_rep_gl_check_clicked_cb, settingData);
+
+                       return check;
+               } else if (index == MSG_UI_SETTING_MM_READ_REP_MENU_SEND) {
+                       check = elm_check_add(obj);
+                       settingData->list.mm_msg.mm_read_rep_send_check = check;
+
+                       msg_get_bool_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_READ_REPORT_BOOL, &bReadValue);
+                       if (bReadValue == true)
+                               elm_check_state_set(check, EINA_TRUE);
+                       else
+                               elm_check_state_set(check, EINA_FALSE);
+
+                       elm_object_style_set(check, "on&off");
+
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_mm_read_rep_gl_check_clicked_cb, settingData);
+
+                       return check;
+               } else {
+                       D_EMSG("Invalid index = %d", index);
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_read_rep_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index == MSG_UI_SETTING_MM_READ_REP_MENU_REQUEST) {
+               Eina_Bool set_val = EINA_FALSE;
+
+               set_val = elm_check_state_get(settingData->list.mm_msg.mm_read_rep_request_check);
+               D_MSG("set_val = %d", (int)set_val);
+
+               elm_check_state_set(settingData->list.mm_msg.mm_read_rep_request_check, !set_val);
+
+               __msg_ui_setting_mm_save_read_rep_request((void *)settingData);
+       } else if (index == MSG_UI_SETTING_MM_READ_REP_MENU_SEND) {
+               Eina_Bool set_val = EINA_FALSE;
+
+               set_val = elm_check_state_get(settingData->list.mm_msg.mm_read_rep_send_check);
+               D_MSG("set_val = %d", (int)set_val);
+
+               elm_check_state_set(settingData->list.mm_msg.mm_read_rep_send_check, !set_val);
+
+               __msg_ui_setting_mm_save_read_rep_send((void *)settingData);
+       } else {
+               D_EMSG("Invalid index = %d", index);
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_mm_read_rep_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+
+       int index = (int)elm_object_item_data_get(ei);
+
+       if (index == MSG_UI_SETTING_MM_READ_REP_MENU_REQUEST)
+               elm_object_item_signal_emit(ei, "elm,state,top", "");
+       else if (index == MSG_UI_SETTING_MM_READ_REP_MENU_SEND)
+               elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+       else
+               elm_object_item_signal_emit(ei, "elm,state,center", "");
+}
+
+static Evas_Object *__msg_ui_setting_mm_read_rep_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !settingData, NULL);
+
+       Evas_Object *mm_read_rep_genlist;
+
+       int index = 0;
+
+       mm_read_rep_genlist = msg_ui_setting_common_create_genlist(parent);
+       evas_object_smart_callback_add(mm_read_rep_genlist, "realized", __msg_ui_setting_mm_read_rep_gl_realized, NULL);
+       settingData->list.mm_msg.mm_read_rep_genlist = mm_read_rep_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(mm_read_rep_genlist, settingData);
+
+       settingData->list.mm_msg.mm_read_rep_1line_1icon_itc.item_style = "dialogue/1text.1icon";
+       settingData->list.mm_msg.mm_read_rep_1line_1icon_itc.func.text_get = __msg_ui_setting_mm_read_rep_gl_text_get;
+       settingData->list.mm_msg.mm_read_rep_1line_1icon_itc.func.content_get = __msg_ui_setting_mm_read_rep_gl_content_get;
+       settingData->list.mm_msg.mm_read_rep_1line_1icon_itc.func.state_get = NULL;
+       settingData->list.mm_msg.mm_read_rep_1line_1icon_itc.func.del = NULL;
+
+       for (index = 0; mm_read_rep_menu_its[index].name; index++) {
+               if (index == MSG_UI_SETTING_MM_READ_REP_MENU_REQUEST ||
+                       index == MSG_UI_SETTING_MM_READ_REP_MENU_SEND) {
+                       elm_genlist_item_append(mm_read_rep_genlist, &settingData->list.mm_msg.mm_read_rep_1line_1icon_itc,
+                                                                                       (void *)index, NULL, mm_read_rep_menu_its[index].type,
+                                                                                       __msg_ui_setting_mm_read_rep_gl_sel, (void *)index);
+               } else {
+                       D_EMSG("Invalid index = %d", index);
+               }
+       }
+
+       D_LEAVE;
+
+       return mm_read_rep_genlist;
+}
+
+void msg_ui_setting_mm_read_rep_view(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *read_rep_layout;
+       Evas_Object *mm_read_rep_genlist;
+
+       read_rep_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       mm_read_rep_genlist = __msg_ui_setting_mm_read_rep_create_genlist(settingData->navi_frame, settingData);
+       elm_object_part_content_set(read_rep_layout, "elm.swallow.content", mm_read_rep_genlist);
+
+       elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_READ_REPORT"), NULL, NULL, read_rep_layout, NULL);
+
+       D_LEAVE;
+}
+
+
+/*********************************
+ ***  Multimedia message menu  ***
+ *********************************/
+
+static char *__msg_ui_setting_mm_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int creationMode = 0;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (mm_menu_its[index].name) {
+                       if (strstr(mm_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", mm_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_menu_its[index].name));
+               }
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_CREATION_MODE_INT, &creationMode);
+
+               if (creationMode == MSG_CREATION_MODE_FREE)
+                       return strdup(dgettext(MESSAGE_PKGNAME, mm_creation_mode_menu_its[0].name));
+               else if (creationMode == MSG_CREATION_MODE_WARNING)
+                       return strdup(dgettext(MESSAGE_PKGNAME, mm_creation_mode_menu_its[1].name));
+               else if (creationMode == MSG_CREATION_MODE_RESTRICTED)
+                       return strdup(dgettext(MESSAGE_PKGNAME, mm_creation_mode_menu_its[2].name));
+               else
+                       D_EMSG("Invalid mode = %d", creationMode);
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_save_delivery_rep(void *data)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Eina_Bool set_val = EINA_FALSE;
+
+       set_val = elm_check_state_get(settingData->list.mm_msg.mm_delivery_report_check);
+       D_MSG("set_val = %d", (int)set_val);
+
+       /* Set requesting delivery report in sending option. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+       msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, set_val);
+       msg_ui_setting_msg_set_config(settingData);
+
+       /* Set sending delivery report in receiving option. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+       msg_set_bool_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_DELIVERY_REPORT_BOOL, set_val);
+       msg_ui_setting_msg_set_config(settingData);
+}
+
+static void __msg_ui_setting_mm_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (obj == settingData->list.mm_msg.mm_delivery_report_check)
+               __msg_ui_setting_mm_save_delivery_rep(settingData);
+       else
+               D_EMSG("Invalid obj = 0x%x", obj);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_mm_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool bDeliveryReport = false;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               if (index == MSG_UI_SETTING_MM_MENU_DELIVERY_REPORT) {
+                       check = elm_check_add(obj);
+                       settingData->list.mm_msg.mm_delivery_report_check = check;
+
+                       /* We decide delivery report setting based on sending option setting. */
+                       msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, &bDeliveryReport);
+
+                       if (bDeliveryReport == true)
+                               elm_check_state_set(check, EINA_TRUE);
+                       else
+                               elm_check_state_set(check, EINA_FALSE);
+
+                       elm_object_style_set(check, "on&off");
+
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_mm_gl_check_clicked_cb, settingData);
+
+                       return check;
+               } else {
+                       D_EMSG("Invalid index = %d", index);
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       Eina_Bool expand_state = EINA_FALSE;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index == MSG_UI_SETTING_MM_MENU_CREATE_MODE) {
+               expand_state = elm_genlist_item_expanded_get(settingData->list.mm_msg.creation_mode_item);
+               if (expand_state == EINA_FALSE)
+                       elm_genlist_item_expanded_set(settingData->list.mm_msg.creation_mode_item, EINA_TRUE);
+               else
+                       elm_genlist_item_expanded_set(settingData->list.mm_msg.creation_mode_item, EINA_FALSE);
+       } else if (index == MSG_UI_SETTING_MM_MENU_DELIVERY_REPORT) {
+               Eina_Bool set_val = EINA_FALSE;
+
+               set_val = elm_check_state_get(settingData->list.mm_msg.mm_delivery_report_check);
+               D_MSG("set_val = %d", (int)set_val);
+
+               elm_check_state_set(settingData->list.mm_msg.mm_delivery_report_check, !set_val);
+
+               __msg_ui_setting_mm_save_delivery_rep((void *)settingData);
+       } else {
+               if (mm_menu_its[index].func != NULL) {
+                       mm_menu_its[index].func(settingData, obj, event_info);
+               }
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_mm_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = event_info;
+       int index = 0;
+       int depth = 0;
+       int creationMode = 0;
+
+       depth = elm_genlist_item_expanded_depth_get(it);
+
+       if (depth == 0) {
+               settingData->list.mm_msg.mm_creation_mode_itc.item_style = "dialogue/1text.1icon.2/expandable2";
+               settingData->list.mm_msg.mm_creation_mode_itc.func.text_get = __msg_ui_setting_mm_creation_mode_gl_text_get;
+               settingData->list.mm_msg.mm_creation_mode_itc.func.content_get = __msg_ui_setting_mm_creation_mode_gl_content_get;
+               settingData->list.mm_msg.mm_creation_mode_itc.func.state_get = NULL;
+               settingData->list.mm_msg.mm_creation_mode_itc.func.del = NULL;
+
+               settingData->list.mm_msg.creation_radio_group = elm_radio_add(obj);
+
+               for (index = 0; mm_creation_mode_menu_its[index].name; index++) {
+                       elm_genlist_item_append(settingData->list.mm_msg.mm_genlist,
+                                                                               &settingData->list.mm_msg.mm_creation_mode_itc,
+                                                                               (void *)index, it, mm_creation_mode_menu_its[index].type,
+                                                                               __msg_ui_setting_mm_creation_mode_gl_sel, (void *)index);
+               }
+
+               if (settingData->list.mm_msg.creation_radio_group) {
+                       /* Set creation mode current value */
+                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_CREATION_MODE_INT, &creationMode);
+                       if (creationMode == MSG_CREATION_MODE_WARNING)
+                               elm_radio_value_set(settingData->list.mm_msg.creation_radio_group, 1);
+                       else if (creationMode == MSG_CREATION_MODE_RESTRICTED)
+                               elm_radio_value_set(settingData->list.mm_msg.creation_radio_group, 2);
+                       else
+                               elm_radio_value_set(settingData->list.mm_msg.creation_radio_group, 0);
+               }
+       }
+}
+
+static void __msg_ui_setting_mm_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Elm_Object_Item *item = event_info;
+       elm_genlist_item_subitems_clear(item);
+}
+
+static void __msg_ui_setting_mm_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+       msg_release_struct(&(settingData->msg_setting.mms_recv_opt));
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       D_LEAVE;
+       return;
+}
+
+static void __msg_ui_setting_mm_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+       D_MSG_RETM_IF(!data, "data is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Elm_Object_Item *parent = NULL;
+
+       int index = (int)elm_object_item_data_get(ei);
+       parent = elm_genlist_item_parent_get(ei);
+
+       if (parent == settingData->list.mm_msg.creation_mode_item) {
+               if (index == MSG_UI_SETTING_MM_CREATE_MODE_MENU_FREE)
+                               elm_object_item_signal_emit(ei, "elm,state,top", "");
+               else if (index == MSG_UI_SETTING_MM_CREATE_MODE_MENU_RESTRICTED)
+                       elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+               else
+                       elm_object_item_signal_emit(ei, "elm,state,center", "");
+       } else {
+               if (index == MSG_UI_SETTING_MM_MENU_RECEIVING_OPTION)
+               elm_object_item_signal_emit(ei, "elm,state,top", "");
+               else if (index == MSG_UI_SETTING_MM_MENU_CREATE_MODE)
+                       elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+               else
+                       elm_object_item_signal_emit(ei, "elm,state,center", "");
+       }
+
+}
+
+static Evas_Object *__msg_ui_setting_mm_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       Evas_Object *mm_genlist;
+       Elm_Object_Item *it = NULL;
+
+       int index = 0;
+
+       mm_genlist = msg_ui_setting_common_create_genlist(parent);
+       evas_object_smart_callback_add(mm_genlist, "realized", __msg_ui_setting_mm_gl_realized, settingData);
+       settingData->list.mm_msg.mm_genlist = mm_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(mm_genlist, settingData);
+
+       settingData->list.mm_msg.mm_itc.item_style = "dialogue/1text";
+       settingData->list.mm_msg.mm_itc.func.text_get = __msg_ui_setting_mm_gl_text_get;
+       settingData->list.mm_msg.mm_itc.func.content_get = NULL;
+       settingData->list.mm_msg.mm_itc.func.state_get = NULL;
+       settingData->list.mm_msg.mm_itc.func.del = NULL;
+
+       settingData->list.mm_msg.mm_1line_1icon_itc.item_style = "dialogue/1text.1icon";
+       settingData->list.mm_msg.mm_1line_1icon_itc.func.text_get = __msg_ui_setting_mm_gl_text_get;
+       settingData->list.mm_msg.mm_1line_1icon_itc.func.content_get = __msg_ui_setting_mm_gl_content_get;
+       settingData->list.mm_msg.mm_1line_1icon_itc.func.state_get = NULL;
+       settingData->list.mm_msg.mm_1line_1icon_itc.func.del = NULL;
+
+       settingData->list.mm_msg.mm_2line_1icon_itc.item_style = "dialogue/2text.3/expandable";
+       settingData->list.mm_msg.mm_2line_1icon_itc.func.text_get = __msg_ui_setting_mm_gl_text_get;
+       settingData->list.mm_msg.mm_2line_1icon_itc.func.content_get = NULL;
+       settingData->list.mm_msg.mm_2line_1icon_itc.func.state_get = NULL;
+       settingData->list.mm_msg.mm_2line_1icon_itc.func.del = NULL;
+
+       for (index = 0; mm_menu_its[index].name; index++) {
+               if (index == MSG_UI_SETTING_MM_MENU_CREATE_MODE) {
+                       /* In case of creation mode. */
+                       it = elm_genlist_item_append(mm_genlist, &settingData->list.mm_msg.mm_2line_1icon_itc,
+                                                                                       (void *)index, NULL, mm_menu_its[index].type,
+                                                                                       __msg_ui_setting_mm_gl_sel, (void *)index);
+                       settingData->list.mm_msg.creation_mode_item = it;
+               } else if (index == MSG_UI_SETTING_MM_MENU_DELIVERY_REPORT) {
+                       elm_genlist_item_append(mm_genlist, &settingData->list.mm_msg.mm_1line_1icon_itc, (void *)index,
+                               NULL, mm_menu_its[index].type, __msg_ui_setting_mm_gl_sel, (void *)index);
+               } else {
+                       elm_genlist_item_append(mm_genlist, &settingData->list.mm_msg.mm_itc, (void *)index,
+                               NULL, mm_menu_its[index].type, __msg_ui_setting_mm_gl_sel, (void *)index);
+               }
+       }
+
+       evas_object_smart_callback_add(mm_genlist, "expanded", __msg_ui_setting_mm_gl_exp, settingData);
+       evas_object_smart_callback_add(mm_genlist, "contracted", __msg_ui_setting_mm_gl_con, settingData);
+
+       D_LEAVE;
+
+       return mm_genlist;
+}
+
+void msg_ui_setting_mm_create_view(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *mm_layout;
+       Evas_Object *mm_genlist;
+
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+       msg_ui_setting_msg_get_config(settingData);
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+       msg_ui_setting_msg_get_config(settingData);
+
+       /* Initialize global variable. */
+       memset(&settingData->list.mm_msg, 0x0, sizeof(settingData->list.mm_msg));
+
+       mm_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       mm_genlist = __msg_ui_setting_mm_create_genlist(settingData->navi_frame, settingData);
+       elm_object_part_content_set(mm_layout, "elm.swallow.content", mm_genlist);
+
+       elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"), NULL, NULL, mm_layout, NULL);
+
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
+                       __msg_ui_setting_mm_back_btn_cb, settingData);
+
+       D_LEAVE;
+}
+
diff --git a/setting/src/multimedia/msg-ui-setting-mm-recv-option.c b/setting/src/multimedia/msg-ui-setting-mm-recv-option.c
new file mode 100755 (executable)
index 0000000..ea409e6
--- /dev/null
@@ -0,0 +1,606 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-mm-message.h"
+
+
+static struct _msg_ui_setting_mixed_list_item mm_recv_menu_its[] = {
+       { 1, "IDS_MSGF_OPT_HOME_NETWORK", NULL, ELM_GENLIST_ITEM_TREE },
+       { 1, "IDS_MSGF_OPT_ROAM_NETWORK", NULL, ELM_GENLIST_ITEM_TREE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item mm_recv_home_network_menu_its[] = {
+       { 2, "IDS_MSGF_BODY_AUTODOWNLOAD", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 2, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item mm_recv_foreign_network_menu_its[] = {
+       { 2, "IDS_MSGF_BODY_AUTODOWNLOAD", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 2, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static void __msg_ui_setting_mm_recv_save_home_network(void *data);
+static char *__msg_ui_setting_mm_recv_home_network_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_recv_home_network_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_mm_recv_home_network_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_recv_home_network_gl_sel(void *data, Evas_Object *obj, void *event_info);
+
+static void __msg_ui_setting_mm_recv_save_foreign_network(void *data);
+static char *__msg_ui_setting_mm_recv_foreign_network_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_recv_foreign_network_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_mm_recv_foreign_network_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_recv_foreign_network_gl_sel(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_setting_mm_recv_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_mm_recv_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_mm_recv_gl_con(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_mm_recv_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**********************
+ ***  Home network  ***
+ **********************/
+
+static void
+__msg_ui_setting_mm_recv_save_home_network(void *data)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int selection = 0;
+       int set_val = 0;
+       msg_error_t     err = MSG_SUCCESS;
+
+       selection = elm_radio_value_get(settingData->list.mm_msg.mm_recv_home_network_radio_group);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected value is %d", selection);
+
+       switch (selection) {
+       case 0:
+               set_val = MSG_HOME_AUTO_DOWNLOAD;
+               break;
+
+       case 1:
+               set_val = MSG_HOME_MANUAL;
+               break;
+
+       case 2:
+               set_val = MSG_HOME_REJECT;
+               break;
+
+       default:
+               D_EMSG("Invalid selection = %d", selection);
+               set_val = MSG_HOME_AUTO_DOWNLOAD;
+               break;
+       }
+
+       /* Save selected value. */
+       msg_set_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, set_val);
+       err = msg_ui_setting_msg_set_config(settingData);
+       D_MSG("msg_ui_setting_msg_set_config(home network) is %d", err);
+
+}
+
+static char *
+__msg_ui_setting_mm_recv_home_network_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (mm_recv_home_network_menu_its[index].name) {
+                       if (strstr(mm_recv_home_network_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", mm_recv_home_network_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_home_network_menu_its[index].name));
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_mm_recv_home_network_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_mm_recv_save_home_network(data);
+
+       elm_genlist_item_update(settingData->list.mm_msg.mm_recv_home_network_item);
+}
+
+static Evas_Object *
+__msg_ui_setting_mm_recv_home_network_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       int retrieveType = 0;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               evas_object_propagate_events_set(radio, EINA_FALSE);
+               evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_mm_recv_home_network_radio_cb, (void *)settingData);
+               elm_radio_group_add(radio, settingData->list.mm_msg.mm_recv_home_network_radio_group);
+
+               /* When user contract expanded genlist item, genlist is updated.
+                * In this case, radio button is set to first item.
+                * Therefore, we should check and set radio value when last item is redrawn.
+                */
+               if (index == 2) {
+                       msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &retrieveType);
+                       if (retrieveType == MSG_HOME_MANUAL)
+                               elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 1);
+                       else if (retrieveType == MSG_HOME_REJECT)
+                               elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 2);
+                       else
+                               elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 0);
+               }
+
+               return radio;
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_mm_recv_home_network_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = NULL;
+       int index = (int)data;
+
+       settingData = msg_ui_setting_get_data();
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       /* Change radio selection. */
+       elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, index);
+
+       __msg_ui_setting_mm_recv_save_home_network((void *)settingData);
+
+       elm_genlist_item_update(settingData->list.mm_msg.mm_recv_home_network_item);
+
+       D_LEAVE;
+       return;
+}
+
+
+/*************************
+ ***  Foreign network  ***
+ *************************/
+
+static void
+__msg_ui_setting_mm_recv_save_foreign_network(void *data)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int selection;
+       msg_error_t     err = MSG_SUCCESS;
+
+       selection = elm_radio_value_get(settingData->list.mm_msg.mm_recv_foreign_network_radio_group);
+       D_MSG("selected value is %d", selection);
+
+       /* Save selected value. */
+       msg_set_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, selection);
+       err = msg_ui_setting_msg_set_config(settingData);
+       D_MSG("msg_ui_setting_msg_set_config(Foreign network) is %d", err);
+
+}
+
+static char *
+__msg_ui_setting_mm_recv_foreign_network_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (mm_recv_foreign_network_menu_its[index].name) {
+                       if (strstr(mm_recv_foreign_network_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", mm_recv_foreign_network_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_foreign_network_menu_its[index].name));
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_mm_recv_foreign_network_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_mm_recv_save_foreign_network(data);
+
+       elm_genlist_item_update(settingData->list.mm_msg.mm_recv_foreign_network_item);
+}
+
+static Evas_Object *
+__msg_ui_setting_mm_recv_foreign_network_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       int retrieveType = 0;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               evas_object_propagate_events_set(radio, EINA_FALSE);
+               evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_mm_recv_foreign_network_radio_cb, (void *)settingData);
+               elm_radio_group_add(radio, settingData->list.mm_msg.mm_recv_foreign_network_radio_group);
+
+               /* When user contract expanded genlist item, genlist is updated.
+                * In this case, radio button is set to first item.
+                * Therefore, we should check and set radio value when last item is redrawn.
+                */
+               if (index == 3) {
+                       msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &retrieveType);
+                       if (retrieveType == MSG_ABROAD_MANUAL)
+                               elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 1);
+                       else if (retrieveType == MSG_ABROAD_RESTRICTED)
+                               elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 2);
+                       else if (retrieveType == MSG_ABROAD_REJECT)
+                               elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 3);
+                       else
+                               elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 0);
+               }
+
+               return radio;
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_mm_recv_foreign_network_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = NULL;
+       int index = (int)data;
+
+       settingData = msg_ui_setting_get_data();
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       /* Change radio selection. */
+       elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, index);
+
+       __msg_ui_setting_mm_recv_save_foreign_network((void *)settingData);
+
+       elm_genlist_item_update(settingData->list.mm_msg.mm_recv_foreign_network_item);
+
+       D_LEAVE;
+       return;
+}
+
+
+/************************************
+ ***  Receiving option main menu  ***
+ ************************************/
+
+static char *
+__msg_ui_setting_mm_recv_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int set_val = 0;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (mm_recv_menu_its[index].name) {
+                       if (strstr(mm_recv_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", mm_recv_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_menu_its[index].name));
+               }
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_HOME) {
+                       msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &set_val);
+
+                       switch (set_val) {
+                       case MSG_HOME_AUTO_DOWNLOAD:
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_home_network_menu_its[0].name));
+                               break;
+
+                       case MSG_HOME_MANUAL:
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_home_network_menu_its[1].name));
+                               break;
+
+                       case MSG_HOME_REJECT:
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_home_network_menu_its[2].name));
+                               break;
+
+                       default:
+                               D_EMSG("Invalid value = %d", set_val);
+                               break;
+                       }
+               } else if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_FOREIGN) {
+                       msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &set_val);
+
+                       switch (set_val) {
+                       case MSG_ABROAD_AUTO_DOWNLOAD:
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_foreign_network_menu_its[0].name));
+                               break;
+
+                       case MSG_ABROAD_MANUAL:
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_foreign_network_menu_its[1].name));
+                               break;
+
+                       case MSG_ABROAD_RESTRICTED:
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_foreign_network_menu_its[2].name));
+                               break;
+
+                       case MSG_ABROAD_REJECT:
+                               return strdup(dgettext(MESSAGE_PKGNAME, mm_recv_foreign_network_menu_its[3].name));
+                               break;
+
+                       default:
+                               D_EMSG("Invalid value = %d", set_val);
+                               break;
+                       }
+               } else {
+                       D_EMSG("Invalid index = %d", index);
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_mm_recv_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       Eina_Bool expand_state = EINA_FALSE;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_HOME) {
+               expand_state = elm_genlist_item_expanded_get(settingData->list.mm_msg.mm_recv_home_network_item);
+               if (expand_state == EINA_FALSE)
+                       elm_genlist_item_expanded_set(settingData->list.mm_msg.mm_recv_home_network_item, EINA_TRUE);
+               else
+                       elm_genlist_item_expanded_set(settingData->list.mm_msg.mm_recv_home_network_item, EINA_FALSE);
+       } else if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_FOREIGN) {
+               expand_state = elm_genlist_item_expanded_get(settingData->list.mm_msg.mm_recv_foreign_network_item);
+               if (expand_state == EINA_FALSE)
+                       elm_genlist_item_expanded_set(settingData->list.mm_msg.mm_recv_foreign_network_item, EINA_TRUE);
+               else
+                       elm_genlist_item_expanded_set(settingData->list.mm_msg.mm_recv_foreign_network_item, EINA_FALSE);
+       } else {
+               D_EMSG("Invalid index = %d", index);
+       }
+
+       D_LEAVE;
+}
+
+static void
+__msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!data, "data is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = event_info;
+       int index = 0;
+       int depth = 0;
+       int retrieveType = 0;
+
+       depth = elm_genlist_item_expanded_depth_get(it);
+
+       if (depth == 0) {
+               if (it == settingData->list.mm_msg.mm_recv_home_network_item) {
+                       settingData->list.mm_msg.mm_recv_home_network_itc.item_style = "dialogue/1text.1icon.2/expandable2";
+                       settingData->list.mm_msg.mm_recv_home_network_itc.func.text_get = __msg_ui_setting_mm_recv_home_network_gl_text_get;
+                       settingData->list.mm_msg.mm_recv_home_network_itc.func.content_get = __msg_ui_setting_mm_recv_home_network_gl_content_get;
+                       settingData->list.mm_msg.mm_recv_home_network_itc.func.state_get = NULL;
+                       settingData->list.mm_msg.mm_recv_home_network_itc.func.del = NULL;
+
+                       settingData->list.mm_msg.mm_recv_home_network_radio_group = elm_radio_add(obj);
+
+                       for (index = 0; mm_recv_home_network_menu_its[index].name; index++) {
+                               elm_genlist_item_append(settingData->list.mm_msg.mm_recv_genlist,
+                                                                                       &settingData->list.mm_msg.mm_recv_home_network_itc,
+                                                                                       (void *)index, it, mm_recv_home_network_menu_its[index].type,
+                                                                                       __msg_ui_setting_mm_recv_home_network_gl_sel, (void *)index);
+                       }
+
+                       if (settingData->list.mm_msg.mm_recv_home_network_radio_group) {
+                               msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &retrieveType);
+
+                               if (retrieveType == MSG_HOME_MANUAL)
+                                       elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 1);
+                               else if (retrieveType == MSG_HOME_REJECT)
+                                       elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 2);
+                               else
+                                       elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 0);
+                       }
+               } else if (it == settingData->list.mm_msg.mm_recv_foreign_network_item) {
+                       settingData->list.mm_msg.mm_recv_foreign_network_itc.item_style = "dialogue/1text.1icon.2/expandable2";
+                       settingData->list.mm_msg.mm_recv_foreign_network_itc.func.text_get = __msg_ui_setting_mm_recv_foreign_network_gl_text_get;
+                       settingData->list.mm_msg.mm_recv_foreign_network_itc.func.content_get = __msg_ui_setting_mm_recv_foreign_network_gl_content_get;
+                       settingData->list.mm_msg.mm_recv_foreign_network_itc.func.state_get = NULL;
+                       settingData->list.mm_msg.mm_recv_foreign_network_itc.func.del = NULL;
+
+                       settingData->list.mm_msg.mm_recv_foreign_network_radio_group = elm_radio_add(obj);
+
+                       for (index = 0; mm_recv_foreign_network_menu_its[index].name; index++) {
+                               elm_genlist_item_append(settingData->list.mm_msg.mm_recv_genlist,
+                                                                                       &settingData->list.mm_msg.mm_recv_foreign_network_itc,
+                                                                                       (void *)index, it, mm_recv_foreign_network_menu_its[index].type,
+                                                                                       __msg_ui_setting_mm_recv_foreign_network_gl_sel, (void *)index);
+                       }
+
+                       if (settingData->list.mm_msg.mm_recv_foreign_network_radio_group) {
+                               msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &retrieveType);
+
+                               if (retrieveType == MSG_ABROAD_MANUAL)
+                                       elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 1);
+                               else if (retrieveType == MSG_ABROAD_RESTRICTED)
+                                       elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 2);
+                               else if (retrieveType == MSG_ABROAD_REJECT)
+                                       elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 3);
+                               else
+                                       elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 0);
+                       }
+               } else {
+                       D_EMSG("Invalid it = 0x%x", it);
+               }
+       }
+}
+
+static void
+__msg_ui_setting_mm_recv_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Elm_Object_Item *item = event_info;
+       elm_genlist_item_subitems_clear(item);
+}
+
+static Evas_Object *
+__msg_ui_setting_mm_recv_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !settingData, NULL);
+
+       Evas_Object *mm_recv_genlist;
+       Elm_Object_Item *it = NULL;
+
+       int index = 0;
+
+       mm_recv_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->list.mm_msg.mm_recv_genlist = mm_recv_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(mm_recv_genlist, settingData);
+
+       settingData->list.mm_msg.mm_recv_2line_expand_itc.item_style = "dialogue/2text.3/expandable";
+       settingData->list.mm_msg.mm_recv_2line_expand_itc.func.text_get = __msg_ui_setting_mm_recv_gl_text_get;
+       settingData->list.mm_msg.mm_recv_2line_expand_itc.func.content_get = NULL;
+       settingData->list.mm_msg.mm_recv_2line_expand_itc.func.state_get = NULL;
+       settingData->list.mm_msg.mm_recv_2line_expand_itc.func.del = NULL;
+
+       for (index = 0; mm_recv_menu_its[index].name; index++) {
+               if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_HOME) {
+                       it = elm_genlist_item_append(mm_recv_genlist, &settingData->list.mm_msg.mm_recv_2line_expand_itc,
+                                                                                       (void *)index, NULL, mm_recv_menu_its[index].type,
+                                                                                       __msg_ui_setting_mm_recv_gl_sel, (void *)index);
+                       settingData->list.mm_msg.mm_recv_home_network_item = it;
+               } else if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_FOREIGN) {
+                       it = elm_genlist_item_append(mm_recv_genlist, &settingData->list.mm_msg.mm_recv_2line_expand_itc,
+                                                                                       (void *)index, NULL, mm_recv_menu_its[index].type,
+                                                                                       __msg_ui_setting_mm_recv_gl_sel, (void *)index);
+                       settingData->list.mm_msg.mm_recv_foreign_network_item = it;
+               } else {
+                       D_EMSG("Invalid index = %d", index);
+               }
+       }
+
+       evas_object_smart_callback_add(mm_recv_genlist, "expanded", __msg_ui_setting_mm_recv_gl_exp, settingData);
+       evas_object_smart_callback_add(mm_recv_genlist, "contracted", __msg_ui_setting_mm_recv_gl_con, settingData);
+
+       D_LEAVE;
+
+       return mm_recv_genlist;
+}
+
+void msg_ui_setting_mm_recv_opt_view(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *recv_layout;
+       Evas_Object *mm_recv_genlist;
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+
+       recv_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       mm_recv_genlist = __msg_ui_setting_mm_recv_create_genlist(settingData->navi_frame, settingData);
+       elm_object_part_content_set(recv_layout, "elm.swallow.content", mm_recv_genlist);
+
+       elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVINGOPTIONS"), NULL, NULL, recv_layout, NULL);
+
+       D_LEAVE;
+}
+
diff --git a/setting/src/spam/msg-ui-setting-spam-block-number.c b/setting/src/spam/msg-ui-setting-spam-block-number.c
new file mode 100755 (executable)
index 0000000..573900e
--- /dev/null
@@ -0,0 +1,1694 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-spam-setting.h"
+
+#include <contacts.h>
+
+static struct _msg_ui_setting_mixed_list_item title_menu_its[] = {
+       { 1, "IDS_MSGF_HEADER_ADD_NUMBER", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_HEADER_EDIT_NUMBER", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item detail_menu_its[] = {
+       { 1, "Editfield", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA", NULL, ELM_GENLIST_ITEM_TREE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item match_criteria_mode_menu_its[] = {
+       { 2, "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_SETBLOCK_START_WITH", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_SETBLOCK_INCLUDE", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 2, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static char *__msg_ui_setting_block_number_match_criteria_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_match_criteria_mode_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_number_match_criteria_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_match_criteria_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_match_criteria_gl_exp(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_match_criteria_gl_con(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_setting_block_number_detail_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void __msg_ui_setting_block_number_detail_phonui_ug_result_cb(ui_gadget_h ug, service_h result, void *priv);
+static void __msg_ui_setting_block_number_detail_ct_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_number_detail_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_detail_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_gl_realized(void *data, Evas_Object *obj, void *ei);
+static Evas_Object *__msg_ui_setting_block_number_create_detail_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_number_detail_trans_finished(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_save(void *data);
+static void __msg_ui_setting_block_number_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_view(void *data, int index);
+
+static char *__msg_ui_setting_block_number_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_gl_dialogue_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_number_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_create_block_number_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_number_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_setting_block_number_delete_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_delete_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_number_delete_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_number_delete_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_create_number_delete_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_number_check_select_all(void *data);
+static void __msg_ui_setting_block_number_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_sel_all_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_delete_mode_exit(void *data);
+static void __msg_ui_setting_block_number_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_delete_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_delete_view_toolbar(void *data, Elm_Object_Item *navi_it);
+static void __msg_ui_setting_block_number_delete_view(void *data);
+
+static void __msg_ui_setting_block_number_update_view(void *data);
+static void __msg_ui_setting_destroy_block_number_main(void *data);
+static void __msg_ui_setting_init_block_number_main(void *data);
+static void __msg_ui_setting_show_block_number_main(void *data);
+static void __msg_ui_setting_block_number_update_toolbar(void *data);
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**********************************
+ ***  Match Criteria detail view  ***
+ **********************************/
+
+static char *__msg_ui_setting_block_number_match_criteria_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+
+       if(index >= sizeof(match_criteria_mode_menu_its) / sizeof(match_criteria_mode_menu_its[0])) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (match_criteria_mode_menu_its[index].name) {
+                       if (strstr(match_criteria_mode_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", match_criteria_mode_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[index].name));
+               }
+       }
+        else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_match_criteria_mode_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Save selected Criteria value. */
+       settingData->block_msg.match_criteria = elm_radio_value_get(settingData->block_msg.block_filter_detail_match_criteria_radio_group) + 1;
+
+       elm_genlist_item_update(settingData->block_msg.block_filter_detail_match_criteria_item);
+}
+
+static Evas_Object *__msg_ui_setting_block_number_match_criteria_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               evas_object_propagate_events_set(radio, EINA_FALSE);
+               evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_block_number_match_criteria_mode_radio_cb, (void *)settingData);
+
+               if (index == 0)
+                       settingData->block_msg.block_filter_detail_match_criteria_radio_group = radio;
+               else
+                       elm_radio_group_add(radio, settingData->block_msg.block_filter_detail_match_criteria_radio_group);
+
+               return radio;
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_match_criteria_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = NULL;
+       int index = (int)data;
+
+       settingData = msg_ui_setting_get_data();
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       /* Change radio selection. */
+       elm_radio_value_set(settingData->block_msg.block_filter_detail_match_criteria_radio_group, index);
+
+       /* Save selected Criteria value. */
+       settingData->block_msg.match_criteria = elm_radio_value_get(settingData->block_msg.block_filter_detail_match_criteria_radio_group) + 1;
+
+       elm_genlist_item_update(settingData->block_msg.block_filter_detail_match_criteria_item);
+
+       D_LEAVE;
+       return;
+}
+
+static void __msg_ui_setting_block_number_match_criteria_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = event_info;
+       int index = 0;
+       int depth = 0;
+       int matchCriteria = -1;
+
+       depth = elm_genlist_item_expanded_depth_get(it);
+
+       D_MSG("depth = %d", depth);
+
+       if (depth == 0) {
+               settingData->block_msg.block_filter_detail_match_criteria_itc.item_style="dialogue/1text.1icon.2/expandable2";
+               settingData->block_msg.block_filter_detail_match_criteria_itc.func.text_get = __msg_ui_setting_block_number_match_criteria_gl_text_get;
+               settingData->block_msg.block_filter_detail_match_criteria_itc.func.content_get = __msg_ui_setting_block_number_match_criteria_gl_content_get;
+               settingData->block_msg.block_filter_detail_match_criteria_itc.func.state_get = NULL;
+               settingData->block_msg.block_filter_detail_match_criteria_itc.func.del = NULL;
+
+               for (index = 0; match_criteria_mode_menu_its[index].name; index++) {
+                       elm_genlist_item_append(settingData->block_msg.block_filter_detail_genlist,
+                                                                       &settingData->block_msg.block_filter_detail_match_criteria_itc,
+                                                                               (void *)index, it, match_criteria_mode_menu_its[index].type,
+                                                                               __msg_ui_setting_block_number_match_criteria_gl_sel, (void *)index);
+               }
+               matchCriteria = settingData->block_msg.match_criteria;
+
+               /* Set Match Criteria current value */
+               if (matchCriteria == MSG_FILTER_BY_ADDRESS_SAME)
+                       elm_radio_value_set(settingData->block_msg.block_filter_detail_match_criteria_radio_group, 0);
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_START)
+                       elm_radio_value_set(settingData->block_msg.block_filter_detail_match_criteria_radio_group, 1);
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_INCLUDE)
+                       elm_radio_value_set(settingData->block_msg.block_filter_detail_match_criteria_radio_group, 2);
+       }
+}
+
+static void __msg_ui_setting_block_number_match_criteria_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Elm_Object_Item *item = event_info;
+       elm_genlist_item_subitems_clear(item);
+}
+
+/**********************************
+ ***  Block filter detail view  ***
+ **********************************/
+
+static char *__msg_ui_setting_block_number_detail_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       int matchCriteria = -1;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+
+       D_MSG("index = %d", index);
+
+       if (index > MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_MAX)
+               return NULL;
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_NAME) {
+                       return strdup(dgettext(MESSAGE_PKGNAME, detail_menu_its[1].name));
+               } else {
+                       D_EMSG("Invalid index = %d", index);
+               }
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               matchCriteria = settingData->block_msg.match_criteria;
+
+               if (matchCriteria == MSG_FILTER_BY_ADDRESS_SAME)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[0].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_START)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[1].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_INCLUDE)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[2].name));
+               else
+                       D_EMSG("Match Criteria mode fail = %d", matchCriteria);
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       char *buf = NULL;
+
+       if (elm_object_focus_get(settingData->block_msg.block_filter_detail_entry_ly)) {
+               if (elm_entry_is_empty(obj))
+                       elm_object_signal_emit(settingData->block_msg.block_filter_detail_entry_ly, "elm,state,eraser,hide", "elm");
+               else
+                       elm_object_signal_emit(settingData->block_msg.block_filter_detail_entry_ly, "elm,state,eraser,show", "elm");
+       }
+
+       buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
+
+       /* If input strings are composed of only space or empty, Done button should be disabled. */
+       if (!buf || strlen(g_strstrip(buf)) == 0) {
+               D_MSG("No value");
+               if (elm_object_disabled_get(settingData->block_msg.block_filter_detail_done_btn) == EINA_FALSE)
+                       elm_object_disabled_set(settingData->block_msg.block_filter_detail_done_btn, EINA_TRUE);
+       } else {
+               if (elm_object_disabled_get(settingData->block_msg.block_filter_detail_done_btn) == EINA_TRUE)
+                       elm_object_disabled_set(settingData->block_msg.block_filter_detail_done_btn, EINA_FALSE);
+       }
+
+       if (buf != NULL)
+               free(buf);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(layout, "elm,state,eraser,show", "elm");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       D_ENTER;
+
+       Evas_Object *entry = (Evas_Object *)data;
+
+       elm_entry_entry_set(entry, "");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_phonui_ug_result_cb(ui_gadget_h ug, service_h service, void *priv)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ug, "ug is NULL");
+       D_MSG_RETM_IF(!service, "service is NULL");
+       D_MSG_RETM_IF(!priv, "priv is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)priv;
+
+       int num_id = 0;
+       int ct_ret = CONTACTS_ERROR_NONE;
+       char *number_str = NULL;
+       char *service_val = NULL;
+       MSG_BOOL isContactId = FALSE;
+       MSG_BOOL bInvalidNum = FALSE;
+       contacts_record_h record_number = NULL;
+
+       service_get_extra_data(service, MSG_CT_UG_BUNDLE_RESULT_NUMBER_ID, &service_val);
+
+       if (service_val) {
+               num_id = atoi(service_val);
+               isContactId = TRUE;
+       } else {
+               /* phonelog id list*/
+               service_get_extra_data(service, "plog_id", &service_val);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !service_val);
+
+               num_id = atoi(service_val);
+       }
+
+       if (num_id <= 0) {
+               D_EMSG("num_id <= 0, invaild num_id");
+               goto ERROR_EXIT;
+       }
+
+       if (isContactId) {
+               /* get record number */
+               ct_ret = contacts_db_get_record(_contacts_number._uri, num_id, &record_number);
+               if (ct_ret != CONTACTS_ERROR_NONE) {
+                       D_EMSG("_contacts_number, db_get_record is failed : ct_ret = [%d]", ct_ret);
+                       goto ERROR_EXIT;
+               }
+
+               /* get number str */
+               ct_ret = contacts_record_get_str_p(record_number, _contacts_number.number, &number_str);
+               if (ct_ret != CONTACTS_ERROR_NONE) {
+                       D_EMSG("contacts_record_get_str_p is failed : ct_ret = [%d]", ct_ret);
+                       goto ERROR_EXIT;
+               }
+       } else {
+               /* get record number */
+               ct_ret = contacts_db_get_record(_contacts_phone_log._uri, num_id, &record_number);
+               if (ct_ret != CONTACTS_ERROR_NONE) {
+                       D_EMSG("_contacts_phone_log, db_get_record is failed : ct_ret = [%d]", ct_ret);
+                       goto ERROR_EXIT;
+               }
+
+               /* get number str */
+               ct_ret = contacts_record_get_str(record_number, _contacts_phone_log.address, &number_str);
+               if (ct_ret != CONTACTS_ERROR_NONE) {
+                       D_EMSG("contacts_record_get_str is failed : ct_ret = [%d]", ct_ret);
+                       goto ERROR_EXIT;
+               }
+       }
+
+       D_MSG("selected number_id = %d, number_str = %s", num_id, number_str);
+
+       if (number_str) {
+               if (strlen(number_str) == 0) {
+                       bInvalidNum = TRUE;
+               } else {
+                       elm_entry_entry_set(settingData->block_msg.block_filter_detail_entry, number_str);
+               }
+       } else {
+               D_EMSG("number_str is NULL");
+       }
+
+ERROR_EXIT:
+
+       if (record_number != NULL) {
+               ct_ret = contacts_record_destroy(record_number, true);
+               if (ct_ret != CONTACTS_ERROR_NONE)
+                       D_EMSG("contacts_record_destroy is failed : ct_ret = [%d]", ct_ret);
+       }
+
+       if (bInvalidNum) {
+               msg_ui_setting_common_show_notify(settingData, "Invalid address!!");
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_ct_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       settingData->loaded_ug = msg_ui_setting_common_call_phoneui_ug(settingData, __msg_ui_setting_block_number_detail_phonui_ug_result_cb);
+}
+
+static Evas_Object *__msg_ui_setting_block_number_detail_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+
+       int sel_index = settingData->block_msg.block_filter_sel_index;
+       char filter_val[MAX_FILTER_VALUE_LEN+1] = {0,};
+
+       D_MSG("index = %d", index);
+       D_MSG("sel_index = %d", sel_index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               if (index == MSG_UI_SETTING_BLOCK_DETAIL_MENU_DATA) {
+                       char *buf = NULL;
+                       static Elm_Entry_Filter_Limit_Size block_number_limit_filter_data;
+                       static Elm_Entry_Filter_Accept_Set block_number_accept_filter_data;
+
+                       Evas_Object *block_filter_ly = NULL;
+                       Evas_Object *block_filter_entry = NULL;
+                       Evas_Object *ct_ly;
+                       Evas_Object *ct_button;
+                       Evas_Object *icon;
+
+                       ct_ly = elm_layout_add(obj);
+                       elm_layout_file_set(ct_ly, MSG_SETTING_THEME, "editfield_layout_with_contact_button");
+
+                       block_filter_ly = elm_layout_add(obj);
+                       if (block_filter_ly == NULL) {
+                               D_EMSG("block_filter_ly failed");
+                               return NULL;
+                       }
+                       elm_layout_theme_set(block_filter_ly, "layout", "editfield", "title");
+                       elm_object_part_content_set(ct_ly, "elm.swallow.content", block_filter_ly);
+                       settingData->block_msg.block_filter_detail_entry_ly = block_filter_ly;
+
+                       block_filter_entry = elm_entry_add(block_filter_ly);
+                       if (block_filter_entry == NULL) {
+                               D_EMSG("block_filter_entry failed");
+                               return NULL;
+                       }
+                       elm_entry_single_line_set(block_filter_entry, EINA_TRUE);
+                       elm_entry_scrollable_set(block_filter_entry, EINA_TRUE);
+                       elm_entry_autocapital_type_set(block_filter_entry, ELM_AUTOCAPITAL_TYPE_NONE);
+                       elm_entry_input_panel_layout_set(block_filter_entry, ELM_INPUT_PANEL_LAYOUT_PHONENUMBER);
+                       settingData->block_msg.block_filter_detail_entry = block_filter_entry;
+
+                       evas_object_smart_callback_add(block_filter_entry, "changed", __msg_ui_setting_block_number_detail_entry_changed_cb, (void *)settingData);
+                       evas_object_smart_callback_add(block_filter_entry, "preedit,changed", __msg_ui_setting_block_number_detail_entry_changed_cb, (void *)settingData);
+                       evas_object_smart_callback_add(block_filter_entry, "focused", __msg_ui_setting_block_number_detail_entry_focus_cb, (void *)block_filter_ly);
+                       evas_object_smart_callback_add(block_filter_entry, "unfocused", __msg_ui_setting_block_number_detail_entry_unfocus_cb, (void *)block_filter_ly);
+                       elm_object_signal_callback_add(block_filter_ly, "elm,eraser,clicked", "elm", __msg_ui_setting_block_number_detail_eraser_clicked_cb, (void *)block_filter_entry);
+
+                       /* Before giving focus to the entry object, the entry object should be shown. */
+                       evas_object_show(block_filter_entry);
+                       elm_object_part_content_set(block_filter_ly, "elm.swallow.content", block_filter_entry);
+                       elm_object_part_text_set(block_filter_ly, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_ENTER_NUMBER"));
+
+                       block_number_limit_filter_data.max_char_count = 0;
+                       block_number_limit_filter_data.max_byte_count = MAX_FILTER_VALUE_LEN;
+                       elm_entry_markup_filter_append(block_filter_entry, elm_entry_filter_limit_size, &block_number_limit_filter_data);
+
+                       /* If '*', '#', 'P' are inputed, it will be ignored. */
+                       block_number_accept_filter_data.accepted = "*+#0123456789";
+                       block_number_accept_filter_data.rejected = NULL;
+                       elm_entry_markup_filter_append(block_filter_entry, elm_entry_filter_accept_set, &block_number_accept_filter_data);
+                       elm_entry_cnp_mode_set(block_filter_entry, ELM_CNP_MODE_PLAINTEXT);
+
+                       /* Set data only in edit case. */
+                       if (sel_index != MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+                               msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[sel_index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+                               if (strlen(filter_val) > 0) {
+                                       buf = elm_entry_utf8_to_markup(filter_val);
+                                       elm_entry_entry_set(block_filter_entry, buf);
+                                       if (buf != NULL) {
+                                               free(buf);
+                                               buf = NULL;
+                                       }
+                               }
+                       }
+
+                       elm_object_focus_set(settingData->block_msg.block_filter_detail_entry, EINA_TRUE);
+                       elm_entry_cursor_end_set(block_filter_entry);
+
+                       ct_button = elm_button_add(ct_ly);
+                       elm_object_theme_set(ct_button, settingData->th);
+                       elm_object_style_set(ct_button, "circle/contact_button");
+
+                       icon = elm_icon_add(ct_button);
+                       elm_image_file_set(icon, MSG_IMAGES_EDJ, MSGC_IMG_CONTACT_BUTTON_ICON);
+                       elm_object_part_content_set(ct_button, "icon", icon);
+
+                       elm_object_part_content_set(ct_ly, "ct_button", ct_button);
+                       evas_object_smart_callback_add(ct_button, "clicked", __msg_ui_setting_block_number_detail_ct_btn_clicked_cb, settingData);
+
+                       return ct_ly;
+               } else {
+                       D_MSG("Nothing to do.");
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_detail_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       Eina_Bool expand_state = EINA_FALSE;
+
+       if (index > MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_MAX)
+               return;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_DATA) {
+               elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+       } else if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_NAME) {
+               expand_state = elm_genlist_item_expanded_get(settingData->block_msg.block_filter_detail_match_criteria_item);
+               if (expand_state == EINA_FALSE) {
+                       elm_genlist_item_expanded_set(settingData->block_msg.block_filter_detail_match_criteria_item, EINA_TRUE);
+                       elm_object_focus_set(settingData->block_msg.block_filter_detail_entry, EINA_FALSE);
+               } else {
+                       elm_genlist_item_expanded_set(settingData->block_msg.block_filter_detail_match_criteria_item, EINA_FALSE);
+               }
+       } else {
+               D_EMSG("Invalid index = %d", index);
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+       D_MSG_RETM_IF(!data, "data is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Elm_Object_Item *parent = NULL;
+
+       int index = (int)elm_object_item_data_get(ei);
+       parent = elm_genlist_item_parent_get(ei);
+
+       if (parent == settingData->block_msg.block_filter_detail_match_criteria_item) {
+               if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MATCH_CRITERIA_MENU_DATA_SAME_AS)
+                       elm_object_item_signal_emit(ei, "elm,state,top", "");
+               else if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MATCH_CRITERIA_MENU_NAME_INCLUDE)
+                       elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+               else
+                       elm_object_item_signal_emit(ei, "elm,state,center", "");
+       } else {
+               if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_DATA)
+                       elm_object_item_signal_emit(ei, "elm,state,top", "");
+               else
+                       elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+       }
+}
+
+static Evas_Object *__msg_ui_setting_block_number_create_detail_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       Evas_Object *detail_genlist;
+
+       Elm_Object_Item *it = NULL;
+
+       int index = 0;
+
+       detail_genlist = msg_ui_setting_common_create_genlist(parent);
+       evas_object_smart_callback_add(detail_genlist, "realized", __msg_ui_setting_block_number_detail_gl_realized, settingData);
+       settingData->block_msg.block_filter_detail_genlist = detail_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(detail_genlist, settingData);
+
+       settingData->block_msg.block_filter_detail_1icon_itc.item_style = "dialogue/1icon";
+       settingData->block_msg.block_filter_detail_1icon_itc.func.text_get = NULL;
+       settingData->block_msg.block_filter_detail_1icon_itc.func.content_get = __msg_ui_setting_block_number_detail_gl_content_get;
+       settingData->block_msg.block_filter_detail_1icon_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_detail_1icon_itc.func.del = NULL;
+
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.item_style = "dialogue/2text.3/expandable";
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.func.text_get = __msg_ui_setting_block_number_detail_gl_text_get;
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.func.content_get = NULL;
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.func.del = NULL;
+
+       for (index = 0; detail_menu_its[index].name; index++) {
+               if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_DATA) {
+                       it = elm_genlist_item_append(detail_genlist, &settingData->block_msg.block_filter_detail_1icon_itc,
+                                                                                       (void *)index, NULL, detail_menu_its[index].type,
+                                                                                       __msg_ui_setting_block_number_detail_gl_sel, (void *)index);
+
+                       elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+               } else if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_NAME) {
+                       it = elm_genlist_item_append(detail_genlist, &settingData->block_msg.block_filter_detail_2line_1icon_itc,
+                                                                                       (void *)index, NULL, detail_menu_its[index].type,
+                                                                                       __msg_ui_setting_block_number_detail_gl_sel, (void *)index);
+                       settingData->block_msg.block_filter_detail_match_criteria_item = it;
+               } else {
+                       D_EMSG("Invalid index = %d", index);
+               }
+       }
+
+       evas_object_smart_callback_add(detail_genlist, "expanded",      __msg_ui_setting_block_number_match_criteria_gl_exp, settingData);
+       evas_object_smart_callback_add(detail_genlist, "contracted", __msg_ui_setting_block_number_match_criteria_gl_con, settingData);
+
+       D_LEAVE;
+
+       return detail_genlist;
+}
+
+static void __msg_ui_setting_block_number_detail_trans_finished(void *data, Evas_Object *obj, void *event_info)
+{
+       /* Enable pushing the prev button. */
+       elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
+
+       evas_object_smart_callback_del(obj, "transition,finished", \
+                       __msg_ui_setting_block_number_detail_trans_finished);
+}
+
+static void __msg_ui_setting_block_number_detail_save(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       char *buf = NULL;
+       int index;
+       msg_error_t err = MSG_SUCCESS;
+       int filter_id = 0;
+       char filter_val[MAX_FILTER_VALUE_LEN+1] = {0, };
+       int db_criteria = -1;
+       char db_str[MAX_FILTER_VALUE_LEN+1] = {0, };
+       int total_cnt = 0;
+       int filter_type = -1;
+       int i = 0;
+
+       msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+       index = settingData->block_msg.block_filter_sel_index;
+       D_MSG("index = %d", index);
+
+       buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
+
+       /* If input strings are composed of only space, it isn't saved. */
+       if (!buf || strlen(g_strstrip(buf)) == 0) {
+               D_MSG("No value");
+               goto block_filter_detail_exist;
+       }
+
+       /* Check whether value is existed or not. */
+       total_cnt = settingData->block_msg.filterList.nCount;
+       for (i = 0; i < total_cnt; i++) {
+               if (index == i)
+                       continue;
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_VALUE_STR, db_str, sizeof(db_str));
+                       if (strcmp(db_str, buf) == 0) {
+                               status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"));
+                               goto block_filter_detail_exist;
+                       }
+               }
+       }
+
+       /* Check whether value is changed or not. */
+       if (index != MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0') {
+                       msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &db_criteria);
+                       if (strcmp(filter_val, buf) == 0 && settingData->block_msg.match_criteria == db_criteria) {
+                               D_MSG("Value is not changed.");
+                               goto block_filter_detail_exit;
+                       }
+               }
+       }
+
+       memset(filter_val, 0x0, sizeof(filter_val));
+       strncpy(filter_val, buf, MAX_FILTER_VALUE_LEN);
+
+       /* Save Match Criteria selected value. */
+       err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, settingData->block_msg.match_criteria);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_set_int_value(MSG_FILTER_TYPE_INT) is failed : err = %d", err);
+               goto block_filter_detail_exist;
+       }
+
+       err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_set_str_value(MSG_FILTER_VALUE_STR) is failed : err = %d", err);
+               goto block_filter_detail_exist;
+       }
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               err = msg_add_filter(settingData->msgHandle, filter);
+               if (err != MSG_SUCCESS)
+                       D_MSG("msg_add_filter() is failed : err = %d", err);
+       } else {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+               if (err != MSG_SUCCESS)
+                       D_MSG("msg_get_int_value() (filter_id) is failed : err = %d", err);
+
+               D_MSG("filterID = %d", filter_id);
+               msg_set_int_value(filter, MSG_FILTER_ID_INT, filter_id);
+
+               err = msg_update_filter(settingData->msgHandle, filter);
+               if (err != MSG_SUCCESS)
+                       D_MSG("msg_update_filter() is failed : err = %d", err);
+       }
+
+       if (err == MSG_ERR_FILTER_DUPLICATED) {
+               msg_ui_setting_common_show_popup(settingData, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"));
+       }
+
+       __msg_ui_setting_block_number_update_view(settingData);
+
+
+block_filter_detail_exit:
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+block_filter_detail_exist:
+       if (buf)
+               free(buf);
+
+       if (filter)
+               msg_release_struct(&filter);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_block_number_detail_save(settingData);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+}
+
+static void __msg_ui_setting_block_number_detail_view(void *data, int index)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *detail_layout;
+       Evas_Object *detail_genlist;
+
+       Elm_Object_Item *navi_it;
+
+       char title[DEF_BUF_LEN_S] = {0, };
+
+       Evas_Object *title_left_btn;
+       Evas_Object *title_right_btn;
+
+       if (index ==  MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               settingData->block_msg.match_criteria = MSG_FILTER_BY_ADDRESS_SAME;
+       } else {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &((settingData->block_msg).match_criteria));
+       }
+
+       settingData->block_msg.block_filter_sel_index = index;
+
+       detail_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       detail_genlist = __msg_ui_setting_block_number_create_detail_genlist(settingData->navi_frame, settingData);
+       elm_object_part_content_set(detail_layout, "elm.swallow.content", detail_genlist);
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
+               strncpy(title, dgettext(MESSAGE_PKGNAME, title_menu_its[0].name), sizeof(title)-1);
+       else
+               strncpy(title, dgettext(MESSAGE_PKGNAME, title_menu_its[1].name), sizeof(title)-1);
+
+       /* Disable pushing the prev button automatically. */
+       elm_naviframe_prev_btn_auto_pushed_set(settingData->navi_frame, EINA_FALSE);
+       evas_object_smart_callback_add(settingData->navi_frame, "transition,finished", __msg_ui_setting_block_number_detail_trans_finished, NULL);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, title, NULL, NULL, detail_layout, NULL);
+
+       title_left_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_DONE"), __msg_ui_setting_block_number_detail_done_btn_cb, (void *)settingData);
+       elm_object_item_part_content_set(navi_it, "title_left_btn", title_left_btn);
+       settingData->block_msg.block_filter_detail_done_btn = title_left_btn;
+
+       title_right_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_CANCEL"), __msg_ui_setting_block_number_detail_cancel_btn_cb, (void *)settingData);
+       elm_object_item_part_content_set(navi_it, "title_right_btn", title_right_btn);
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
+               elm_object_disabled_set(title_left_btn, EINA_TRUE);
+
+       D_LEAVE;
+}
+
+
+/********************************
+ ***  Block filter main view  ***
+ ********************************/
+
+static char *__msg_ui_setting_block_number_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       msg_error_t err = MSG_SUCCESS;
+       char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+       int matchCriteria = -1;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0')
+                       return strdup(filter_val);
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &matchCriteria);
+
+               if (matchCriteria == MSG_FILTER_BY_ADDRESS_SAME)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[0].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_START)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[1].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_INCLUDE)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[2].name));
+               else
+                       D_EMSG("Match Criteria get fail = %d", matchCriteria);
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_gl_dialogue_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       msg_error_t err = MSG_SUCCESS;
+       Eina_Bool filter_active = EINA_FALSE;
+       int filter_id = 0;
+       void *cur_index = NULL;
+       int index = -1;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       cur_index = evas_object_data_get(obj, "cur_index_on/off");
+       index = (int)cur_index;
+       D_MSG("cur_index_on/off = %d", index);
+
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       filter_active = list_data->number_reject_chk_state;
+
+       msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+
+       /* Set the filter_active on/off  database*/
+       msg_set_filter_active(settingData->msgHandle, (msg_filter_id_t)filter_id, (bool)filter_active);
+       D_MSG("filter_active = %d", filter_active);
+
+       /* Set the bool value for sync with database */
+       err = msg_set_bool_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ACTIVE_BOOL, (bool)filter_active);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_set_filter_active(MSG_FILTER_ACTIVE_BOOL) is failed : err = %d", err);
+       }
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_block_number_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool filter_active = false;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       D_MSG("index = %d", index);
+
+       check = elm_check_add(obj);
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       elm_check_state_pointer_set(check, &list_data->number_reject_chk_state);
+       evas_object_data_set(check, "cur_index_on/off", data);
+
+       msg_get_bool_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ACTIVE_BOOL, &filter_active);
+
+       if (filter_active == true)
+               elm_check_state_set(check, EINA_TRUE);
+       else
+               elm_check_state_set(check, EINA_FALSE);
+
+       elm_object_style_set(check, "on&off");
+
+       evas_object_propagate_events_set(check, EINA_FALSE);
+       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_block_number_gl_dialogue_clicked_cb, settingData);
+
+       return check;
+}
+
+static void __msg_ui_setting_block_number_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       __msg_ui_setting_block_number_detail_view(settingData, index);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       if (settingData->block_msg.addr_cnt == 1)
+               return;
+
+       Elm_Object_Item *first_it = elm_genlist_first_item_get(settingData->block_msg.block_filter_genlist);
+       Elm_Object_Item *second_it = elm_genlist_item_next_get(first_it);
+       Elm_Object_Item *last_it = elm_genlist_last_item_get(settingData->block_msg.block_filter_genlist);
+
+       if (ei == second_it)
+               elm_object_item_signal_emit(ei, "elm,state,top", "");
+       else if (ei == last_it)
+               elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+       else
+               elm_object_item_signal_emit(ei, "elm,state,center", "");
+}
+
+static Evas_Object *__msg_ui_setting_create_block_number_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       Evas_Object *block_filter_genlist;
+
+       int index = 0;
+       int filter_type = 0;
+       int total_cnt = 0;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       block_filter_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->block_msg.block_filter_genlist = block_filter_genlist;
+       evas_object_smart_callback_add(block_filter_genlist, "realized", __msg_ui_setting_block_number_gl_realized, settingData);
+
+       msg_ui_setting_common_append_genlist_separator(block_filter_genlist, settingData);
+
+       settingData->block_msg.block_filter_itc.item_style = "dialogue/2text.1icon.6";
+       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_number_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = __msg_ui_setting_block_number_gl_content_get;
+       settingData->block_msg.block_filter_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_itc.func.del = NULL;
+       settingData->block_msg.block_filter_itc.decorate_all_item_style = "dialogue/edit";
+
+       for (index = 0; index < total_cnt; index++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       elm_genlist_item_append(block_filter_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                               NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_block_number_gl_sel, (void *)index);
+               }
+       }
+
+       D_LEAVE;
+
+       return block_filter_genlist;
+}
+
+static void __msg_ui_setting_block_number_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to detail view. */
+       __msg_ui_setting_block_number_detail_view(settingData, MSG_UI_SETTING_BLOCKED_DETAIL_CREATE);
+
+}
+
+static void __msg_ui_setting_block_number_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to block filter delete view. */
+       __msg_ui_setting_block_number_delete_view(settingData);
+}
+
+static void __msg_ui_setting_block_number_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       EINA_LIST_FREE(settingData->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       memset(&settingData->block_msg, 0x0, sizeof(MSG_UI_SETTING_FILTER_S));
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+}
+
+/********************************
+ ***  Block filter main delete view  ***
+ ********************************/
+
+static char *__msg_ui_setting_block_number_delete_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       msg_error_t err = MSG_SUCCESS;
+       char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+       int matchCriteria = -1;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0')
+                       return strdup(filter_val);
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &matchCriteria);
+
+               if (matchCriteria == MSG_FILTER_BY_ADDRESS_SAME)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[0].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_START)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[1].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_INCLUDE)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[2].name));
+               else
+                       D_EMSG("Match Criteria get fail = %d", matchCriteria);
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_delete_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int count = 0;
+       int total_cnt = 0;
+       int addr_cnt = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+       addr_cnt = settingData->block_msg.addr_cnt;
+
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == TRUE) {
+                                       count++;
+                               }
+                       }
+               }
+       }
+
+       if (count == addr_cnt) {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       } else {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_FALSE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       }
+
+       if (count == 0) {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       } else {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       }
+
+       if (count == 0)
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+       else
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_FALSE);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_number_delete_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       D_MSG("index = %d", index);
+
+       check = elm_check_add(obj);
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       elm_check_state_pointer_set(check, &list_data->block_filter_chk_state);
+       evas_object_data_set(check, "cur_index_delete_chk", data);
+
+       evas_object_propagate_events_set(check, EINA_FALSE);
+       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_block_number_delete_gl_check_clicked_cb, settingData);
+
+       return check;
+}
+
+static void __msg_ui_setting_number_delete_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       int count = 0;
+       int total_cnt = 0;
+       int addr_cnt = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+       addr_cnt = settingData->block_msg.addr_cnt;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       list_data->block_filter_chk_state = !list_data->block_filter_chk_state;
+
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == TRUE) {
+                                       count++;
+                               }
+                       }
+               }
+       }
+
+       if (count == addr_cnt) {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       } else {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_FALSE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       }
+
+       elm_genlist_item_fields_update((Elm_Object_Item *)event_info, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+       elm_genlist_realized_items_update(settingData->block_msg.delete_genlist);
+
+       if (count == 0) {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       } else {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       }
+
+       if (count == 0) {
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+       } else {
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_FALSE);
+       }
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_create_number_delete_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       int index = 0;
+       int total_cnt = 0;
+       int filter_type;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       Evas_Object *delete_genlist;
+
+       delete_genlist = elm_genlist_add(parent);
+       evas_object_size_hint_weight_set(delete_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(delete_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       settingData->block_msg.delete_genlist = delete_genlist;
+
+       settingData->block_msg.block_filter_itc.item_style = "2text.1icon.8";
+       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_number_delete_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = __msg_ui_setting_number_delete_gl_content_get;
+       settingData->block_msg.block_filter_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_itc.func.del = NULL;
+       settingData->block_msg.block_filter_itc.decorate_all_item_style = "edit";
+
+       for (index = 0; index < total_cnt; index++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       elm_genlist_item_append(delete_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                               NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_number_delete_gl_sel, (void *)index);
+               }
+       }
+
+       D_LEAVE;
+
+       return delete_genlist;
+}
+
+static void __msg_ui_setting_block_number_check_select_all(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Eina_Bool sel_all_state = EINA_FALSE;
+       int i = 0;
+       int total_cnt = 0;
+       int filter_type;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       sel_all_state = settingData->block_msg.block_filter_chk_sel_all_state;
+
+       for (i = 0; i < total_cnt; i++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, i);
+                       list_data->block_filter_chk_state = sel_all_state;
+               }
+       }
+
+       elm_genlist_realized_items_update(settingData->block_msg.delete_genlist);
+
+       if (sel_all_state == EINA_TRUE) {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), settingData->block_msg.addr_cnt);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       } else {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       }
+
+       if (sel_all_state == EINA_TRUE)
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_FALSE);
+       else
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+}
+
+static void __msg_ui_setting_block_number_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       settingData->block_msg.block_filter_chk_sel_all_state = !settingData->block_msg.block_filter_chk_sel_all_state;
+       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+
+       __msg_ui_setting_block_number_check_select_all(settingData);
+}
+
+static void __msg_ui_setting_block_number_sel_all_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       D_MSG("sel_all_chk_state = [%d]", settingData->block_msg.block_filter_chk_sel_all_state);
+
+       __msg_ui_setting_block_number_check_select_all(data);
+}
+
+static void __msg_ui_setting_block_number_delete_mode_exit(void *data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_block_number_update_view(settingData);
+
+       if (settingData->block_msg.delete_genlist) {
+               evas_object_del(settingData->block_msg.delete_genlist);
+               settingData->block_msg.delete_genlist = NULL;
+       }
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       return;
+}
+
+static void __msg_ui_setting_block_number_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       int index = 0;
+       int total_cnt = 0;
+       int filter_id = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       /* Delete selected filter item. */
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == EINA_TRUE) {
+                                       msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+                                       if (list_data->filter_id == filter_id) {
+                                               msg_delete_filter(settingData->msgHandle, (msg_filter_id_t)filter_id);
+                                               settingData->block_msg.block_filter_chk_state_list = eina_list_remove(settingData->block_msg.block_filter_chk_state_list, (const void *)list_data);
+                                               free(list_data);
+                                       }
+                               }
+                       }
+                       index++;
+               }
+       }
+
+       __msg_ui_setting_block_number_delete_mode_exit(settingData);
+
+}
+
+static void __msg_ui_setting_block_number_delete_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Cancel block filter deletion. */
+       __msg_ui_setting_block_number_delete_mode_exit(settingData);
+}
+static void __msg_ui_setting_block_number_delete_view_toolbar(void *data, Elm_Object_Item *navi_it)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *del_btn = NULL;
+
+       if (settingData->block_msg.add_btn) {
+               evas_object_del(settingData->block_msg.add_btn);
+               settingData->block_msg.add_btn = NULL;
+       }
+
+       if (settingData->block_msg.del_btn) {
+               evas_object_del(settingData->block_msg.del_btn);
+               settingData->block_msg.del_btn = NULL;
+       }
+
+       del_btn = msg_ui_setting_common_create_toolbar(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_DELETE"), __msg_ui_setting_block_number_delete_btn_clicked_cb, settingData);
+       elm_object_item_part_content_set(navi_it, "toolbar_button1", del_btn);
+       settingData->block_msg.del_btn = del_btn;
+
+}
+
+static void __msg_ui_setting_block_number_delete_view(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *filter_layout_sel_all;
+       Evas_Object *filter_check_sel_all;
+
+       Evas_Object *delete_filter_box;
+       Evas_Object *delete_filter_list;
+       Elm_Object_Item *navi_it;
+
+       Evas_Object *delete_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+       settingData->block_msg.delete_layout = delete_layout;
+
+       delete_filter_box = elm_box_add(settingData->navi_frame);
+       settingData->block_msg.delete_filter_box = delete_filter_box;
+       evas_object_size_hint_weight_set(delete_filter_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(delete_filter_box);
+       elm_object_part_content_set(settingData->block_msg.delete_layout, "elm.swallow.content", delete_filter_box);
+
+       delete_filter_list = __msg_ui_setting_create_number_delete_genlist(settingData->navi_frame, settingData);
+       elm_box_pack_end(delete_filter_box, delete_filter_list);
+       evas_object_show(delete_filter_list);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_DELETE_NUMBERS"), NULL, NULL, delete_layout, NULL);
+
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, __msg_ui_setting_block_number_delete_cancel_btn_clicked_cb, settingData);
+
+       __msg_ui_setting_block_number_delete_view_toolbar(settingData, navi_it);
+
+       /* Append 'Select All' layout. */
+       filter_layout_sel_all = elm_layout_add(settingData->block_msg.delete_filter_box);
+       settingData->block_msg.block_filter_sel_all_layout = filter_layout_sel_all;
+       elm_layout_theme_set(filter_layout_sel_all, "genlist", "item", "select_all/default");
+       evas_object_size_hint_weight_set(filter_layout_sel_all, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+       evas_object_size_hint_align_set(filter_layout_sel_all, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_event_callback_add(filter_layout_sel_all, EVAS_CALLBACK_MOUSE_DOWN, __msg_ui_setting_block_number_sel_all_mouse_down_cb, settingData);
+
+       filter_check_sel_all = elm_check_add(filter_layout_sel_all);
+       settingData->block_msg.block_filter_chk_sel_all = filter_check_sel_all;
+       elm_check_state_pointer_set(filter_check_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+       evas_object_smart_callback_add(filter_check_sel_all, "changed", __msg_ui_setting_block_number_sel_all_check_clicked_cb, settingData);
+       evas_object_propagate_events_set(filter_check_sel_all, EINA_FALSE);
+       elm_object_part_content_set(filter_layout_sel_all, "elm.icon", filter_check_sel_all);
+
+       elm_object_part_text_set(filter_layout_sel_all, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+       elm_box_pack_start(settingData->block_msg.delete_filter_box, filter_layout_sel_all);
+       evas_object_show(filter_layout_sel_all);
+
+       elm_genlist_decorate_mode_set(settingData->block_msg.delete_genlist, EINA_FALSE);
+       elm_genlist_select_mode_set(settingData->block_msg.delete_genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+       /* Default state of "Delete" button is disable. */
+       elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+}
+
+/**********************************
+ ***  Block filter main  ***
+ **********************************/
+
+void __msg_ui_setting_block_number_update_view(void *data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_destroy_block_number_main(settingData);
+       __msg_ui_setting_init_block_number_main(settingData);
+       __msg_ui_setting_show_block_number_main(settingData);
+       __msg_ui_setting_block_number_update_toolbar(settingData);
+}
+
+void __msg_ui_setting_destroy_block_number_main(void *data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       msg_ui_setting_common_destroy_selectioninfo(settingData);
+
+       /* Remove 'Select All' layout. */
+       if (settingData->block_msg.block_filter_sel_all_layout) {
+               elm_box_unpack(settingData->block_msg.block_filter_box, settingData->block_msg.block_filter_sel_all_layout);
+               evas_object_del(settingData->block_msg.block_filter_sel_all_layout);
+               settingData->block_msg.block_filter_sel_all_layout = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_genlist) {
+               evas_object_del(settingData->block_msg.block_filter_genlist);
+               settingData->block_msg.block_filter_genlist = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_box) {
+               evas_object_del(settingData->block_msg.block_filter_box);
+               settingData->block_msg.block_filter_box = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_nocontents) {
+               evas_object_del(settingData->block_msg.block_filter_nocontents);
+               settingData->block_msg.block_filter_nocontents = NULL;
+       }
+
+}
+
+static void __msg_ui_setting_init_block_number_main(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       msg_error_t err = MSG_SUCCESS;
+       int total_cnt = 0;
+       int i = 0;
+       int filter_type = 0;
+       int filter_id = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       err = msg_get_filter_list(settingData->msgHandle, &(settingData->block_msg.filterList));
+       if (err != MSG_SUCCESS) {
+               D_MSG("msg_get_filter_list() fail - err [%d]", err);
+               return;
+       }
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+       settingData->block_msg.addr_cnt = 0;
+
+       EINA_LIST_FREE(settingData->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       for (i = 0; i < total_cnt; i++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_ID_INT, &filter_id);
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               settingData->block_msg.block_filter_chk_state_list = filter_chk_list_append(settingData->block_msg.block_filter_chk_state_list, filter_id, EINA_FALSE, EINA_TRUE);
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       settingData->block_msg.addr_cnt++;
+               }
+       }
+}
+
+void __msg_ui_setting_show_block_number_main(void *data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *block_filter_box;
+       Evas_Object *block_filter_nocontents;
+       Evas_Object *block_filter_list;
+
+       if (settingData->block_msg.addr_cnt == 0) {
+               block_filter_nocontents = msg_ui_setting_common_create_no_content_view(settingData->block_msg.block_layout, NULL);
+               settingData->block_msg.block_filter_nocontents = block_filter_nocontents;
+               elm_object_part_content_set(settingData->block_msg.block_layout, "elm.swallow.content", block_filter_nocontents);
+       } else {
+               block_filter_box = elm_box_add(settingData->navi_frame);
+               settingData->block_msg.block_filter_box = block_filter_box;
+               evas_object_size_hint_weight_set(block_filter_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(block_filter_box);
+               elm_object_part_content_set(settingData->block_msg.block_layout, "elm.swallow.content", block_filter_box);
+
+               block_filter_list = __msg_ui_setting_create_block_number_genlist(settingData->navi_frame, settingData);
+               elm_box_pack_end(block_filter_box, block_filter_list);
+               evas_object_show(block_filter_list);
+       }
+}
+
+static void __msg_ui_setting_block_number_update_toolbar(void *data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *add_btn = NULL;
+       Evas_Object *del_btn = NULL;
+
+       if (settingData->block_msg.add_btn) {
+               evas_object_del(settingData->block_msg.add_btn);
+               settingData->block_msg.add_btn = NULL;
+       }
+
+       if (settingData->block_msg.del_btn) {
+               evas_object_del(settingData->block_msg.del_btn);
+               settingData->block_msg.del_btn = NULL;
+       }
+
+       add_btn = msg_ui_setting_common_create_toolbar(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_ADD"), __msg_ui_setting_block_number_add_btn_clicked_cb, settingData);
+       elm_object_item_part_content_set(settingData->navi_it, "toolbar_button1", add_btn);
+       elm_object_style_set(add_btn, "naviframe/toolbar/left");
+       settingData->block_msg.add_btn = add_btn;
+
+       del_btn = msg_ui_setting_common_create_toolbar(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_DELETE"), __msg_ui_setting_block_number_del_btn_clicked_cb, settingData);
+       elm_object_item_part_content_set(settingData->navi_it, "toolbar_button2", del_btn);
+       elm_object_style_set(del_btn, "naviframe/toolbar/right");
+       settingData->block_msg.del_btn = del_btn;
+
+       /* If no item exist in Blocked numbers, delete button should be disabled. */
+       if (settingData->block_msg.addr_cnt == 0)
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+       else
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_FALSE);
+
+}
+
+void msg_ui_setting_spam_block_number_main(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *block_layout = NULL;
+
+       /* Init block message data. */
+       __msg_ui_setting_init_block_number_main(settingData);
+
+       block_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+       settingData->block_msg.block_layout = block_layout;
+
+       __msg_ui_setting_show_block_number_main(settingData);
+
+       settingData->navi_it= elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_BLOCKED_NUMBERS"), NULL, NULL, block_layout, NULL);
+
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, __msg_ui_setting_block_number_back_btn_cb, settingData);
+
+       __msg_ui_setting_block_number_update_toolbar(settingData);
+}
diff --git a/setting/src/spam/msg-ui-setting-spam-block-word.c b/setting/src/spam/msg-ui-setting-spam-block-word.c
new file mode 100755 (executable)
index 0000000..1d1b6b9
--- /dev/null
@@ -0,0 +1,1206 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-spam-setting.h"
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static void __msg_ui_setting_block_word_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void __msg_ui_setting_general_block_word_detail_trans_finished(void *data, Evas_Object *obj, void *event_info);
+static bool __msg_ui_setting_block_word_detail_exist_check(void *data);
+static void __msg_ui_setting_block_word_detail_save(void *data);
+static void __msg_ui_setting_block_word_detail_popup_yes_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_popup_no_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_word_filter_detail_view(void *data, int index);
+
+static char *__msg_ui_setting_block_word_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_word_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_gl_realized(void *data, Evas_Object *obj, void *ei);
+static Evas_Object *__msg_ui_setting_create_block_word_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_word_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_setting_block_word_delete_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_word_delete_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_word_delete_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_word_delete_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_create_block_word_delete_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_word_check_select_all(void *data);
+static void __msg_ui_setting_block_word_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_sel_all_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_delete_mode_exit(void *data);
+static void __msg_ui_setting_block_word_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_delete_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_delete_view_toolbar(void *data, Elm_Object_Item *navi_it);
+static void __msg_ui_setting_block_word_delete_view(void *data);
+
+static void __msg_ui_setting_block_word_update_view(void *data);
+static void __msg_ui_setting_destroy_block_word_main(void *data);
+static void __msg_ui_setting_init_block_word_main(void *data);
+static void __msg_ui_setting_show_block_word_main(void *data);
+static void __msg_ui_setting_block_word_update_toolbar(void *data);
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**********************************
+ ***  Block filter detail view  ***
+ **********************************/
+
+static void __msg_ui_setting_block_word_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       char *buf = NULL;
+
+       if (elm_object_focus_get(settingData->block_msg.block_filter_detail_entry_ly)) {
+               if (elm_entry_is_empty(obj))
+                       elm_object_signal_emit(settingData->block_msg.block_filter_detail_entry_ly, "elm,state,eraser,hide", "elm");
+               else
+                       elm_object_signal_emit(settingData->block_msg.block_filter_detail_entry_ly, "elm,state,eraser,show", "elm");
+       }
+
+       buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
+
+       /* If input strings are composed of only space or empty, Done button should be disabled. */
+       if (!buf || strlen(g_strstrip(buf)) == 0) {
+               D_MSG("No value");
+               if (elm_object_disabled_get(settingData->block_msg.block_filter_detail_done_btn) == EINA_FALSE)
+                       elm_object_disabled_set(settingData->block_msg.block_filter_detail_done_btn, EINA_TRUE);
+       } else {
+               if (elm_object_disabled_get(settingData->block_msg.block_filter_detail_done_btn) == EINA_TRUE)
+                       elm_object_disabled_set(settingData->block_msg.block_filter_detail_done_btn, EINA_FALSE);
+       }
+
+       if (buf != NULL)
+               free(buf);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_word_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(layout, "elm,state,eraser,show", "elm");
+
+       elm_object_signal_emit(layout, "elm,state,guidetext,hide", "elm");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_word_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (elm_entry_is_empty(obj))
+               elm_object_signal_emit(layout, "elm,state,guidetext,show", "elm");
+
+       elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_word_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       D_ENTER;
+
+       Evas_Object *entry = (Evas_Object *)data;
+
+       elm_entry_entry_set(entry, "");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_general_block_word_detail_trans_finished(void *data, Evas_Object *obj, void *event_info)
+{
+       /* Enable pushing the prev button. */
+       elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
+
+       evas_object_smart_callback_del(obj, "transition,finished", \
+                       __msg_ui_setting_general_block_word_detail_trans_finished);
+}
+
+static bool __msg_ui_setting_block_word_detail_exist_check(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       char *buf = NULL;
+       int index;
+       msg_error_t err = MSG_SUCCESS;
+       char filter_val[MAX_FILTER_VALUE_LEN+1] = {0,};
+       char db_str[MAX_FILTER_VALUE_LEN+1] = {0, };
+       int total_cnt = 0;
+       int filter_type = -1;
+       int i = 0;
+       bool is_exist = FALSE;
+
+       msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+       index = settingData->block_msg.block_filter_sel_index;
+       D_MSG("index = %d", index);
+
+       buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
+
+       /* If input strings are composed of only space, it isn't saved. */
+       if (!buf || strlen(g_strstrip(buf)) == 0) {
+               D_MSG("No value");
+               goto block_filter_detail_exit;
+       }
+
+       /* Check whether value is existed or not. */
+       total_cnt = settingData->block_msg.filterList.nCount;
+       for (i = 0; i < total_cnt; i++) {
+               if (index == i)
+                       continue;
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_VALUE_STR, db_str, sizeof(db_str));
+                       if (strcmp(db_str, buf) == 0) {
+                               status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"));
+                               is_exist = TRUE;
+                               goto block_filter_detail_exit;
+                       }
+               }
+       }
+
+       /* Check whether value is changed or not. */
+       if (index != MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0') {
+                       if (strcmp(filter_val, buf) == 0) {
+                               D_MSG("Value is not changed.");
+                       }
+               }
+       }
+
+block_filter_detail_exit:
+       if (buf)
+               free(buf);
+
+       if (filter)
+               msg_release_struct(&filter);
+
+       D_LEAVE;
+
+       return is_exist;
+
+}
+
+static void __msg_ui_setting_block_word_detail_save(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       int index;
+       msg_error_t err = MSG_SUCCESS;
+       int filter_id = 0;
+       char *buf = NULL;
+       char filter_val[MAX_FILTER_VALUE_LEN+1] = {0,};
+
+       msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+       index = settingData->block_msg.block_filter_sel_index;
+       D_MSG("index = %d", index);
+
+       buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
+       if (buf)
+               strncpy(filter_val, buf, MAX_FILTER_VALUE_LEN);
+       else
+               D_EMSG("elm_entry_markup_to_utf8 failed !!");
+
+       /* Save value. */
+       err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_WORD);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_set_int_value(MSG_FILTER_TYPE_INT) is failed : err = %d", err);
+               goto block_filter_detail_exit;
+       }
+
+       err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_set_str_value(MSG_FILTER_VALUE_STR) is failed : err = %d", err);
+               goto block_filter_detail_exit;
+       }
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               err = msg_add_filter(settingData->msgHandle, filter);
+               if (err != MSG_SUCCESS)
+                       D_MSG("msg_add_filter() is failed : err = %d", err);
+       } else {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+               if (err != MSG_SUCCESS)
+                       D_MSG("msg_get_int_value() (filter_id) is failed : err = %d", err);
+
+               D_MSG("filterID = %d", filter_id);
+               msg_set_int_value(filter, MSG_FILTER_ID_INT, filter_id);
+
+               err = msg_update_filter(settingData->msgHandle, filter);
+               if (err != MSG_SUCCESS)
+                       D_MSG("msg_update_filter() is failed : err = %d", err);
+       }
+
+       if (err == MSG_ERR_FILTER_DUPLICATED) {
+               msg_ui_setting_common_show_popup(settingData, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"));
+       }
+
+       __msg_ui_setting_block_word_update_view(settingData);
+
+block_filter_detail_exit:
+       if (buf) {
+               free(buf);
+               buf = NULL;
+       }
+
+       if (filter)
+               msg_release_struct(&filter);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_word_detail_popup_yes_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+       __msg_ui_setting_block_word_detail_save(settingData);
+
+        elm_naviframe_item_pop(settingData->navi_frame);
+}
+
+static void __msg_ui_setting_block_word_detail_popup_no_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+}
+static void __msg_ui_setting_block_word_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (__msg_ui_setting_block_word_detail_exist_check(settingData) == FALSE) {
+               Evas_Object *btn1;
+               Evas_Object *btn2;
+               Evas_Object *main_win = NULL;
+
+               main_win = ug_get_window();
+
+               if (main_win == NULL) {
+                       D_EMSG("main window is NULL");
+                       return;
+               }
+
+               /* Create a popup. */
+               settingData->popup = elm_popup_add(main_win);
+               evas_object_size_hint_weight_set(settingData->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_object_text_set(settingData->popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_MESSAGES_RECEIVED_FROM_YOUR_CONTACTS_WILL_NOT_BE_BLOCKED_EVEN_IF_THEY_CONTAIN_BLOCKED_WORDS"));
+
+               btn1 = elm_button_add(settingData->popup);
+               elm_object_style_set(btn1, "popup_button/default");
+               elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_YES"));
+               elm_object_part_content_set(settingData->popup, "button1", btn1);
+               evas_object_smart_callback_add(btn1, "clicked", __msg_ui_setting_block_word_detail_popup_yes_btn_cb, settingData);
+
+               btn2 = elm_button_add(settingData->popup);
+               elm_object_style_set(btn2, "popup_button/default");
+               elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_NO"));
+               elm_object_part_content_set(settingData->popup, "button2", btn2);
+               evas_object_smart_callback_add(btn2, "clicked", __msg_ui_setting_block_word_detail_popup_no_btn_cb, settingData);
+
+               evas_object_show(settingData->popup);
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_word_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+}
+
+static void __msg_ui_setting_word_filter_detail_view(void *data, int index)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *block_filter_detail_layout = NULL;
+       Elm_Object_Item *navi_it = NULL;
+       Evas_Object *title_left_btn = NULL;
+       Evas_Object *title_right_btn = NULL;
+       Evas_Object *box = NULL;
+       Evas_Object *scroller = NULL;
+       Evas_Object *entry_layout = NULL;
+       Evas_Object *entry = NULL;
+
+       char title[DEF_BUF_LEN_S] = {0, };
+       char filter_val[MAX_FILTER_VALUE_LEN+1] = {0,};
+       char *buf = NULL;
+       Elm_Entry_Filter_Limit_Size block_filter_limit_filter_data;
+
+       settingData->block_msg.block_filter_sel_index = index;
+       D_MSG("select index : %d", index);
+
+       scroller = msg_ui_setting_common_create_scroller(settingData->navi_frame);
+       elm_object_style_set(scroller, "dialogue");
+
+       box = msg_ui_setting_common_add_box(scroller);
+       elm_object_content_set(scroller, box);
+
+       block_filter_detail_layout = elm_layout_add(box);
+       elm_layout_theme_set(block_filter_detail_layout, "layout", "dialogue", "1icon");
+       evas_object_size_hint_weight_set(block_filter_detail_layout, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(block_filter_detail_layout, EVAS_HINT_FILL, 0.0);
+
+       entry_layout = elm_layout_add(block_filter_detail_layout);
+       elm_layout_theme_set(entry_layout, "layout", "editfield", "title");
+       settingData->block_msg.block_filter_detail_entry_ly = entry_layout;
+
+       entry = elm_entry_add(block_filter_detail_layout);
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+       elm_entry_autocapital_type_set(entry, ELM_AUTOCAPITAL_TYPE_NONE);
+       elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
+
+       evas_object_smart_callback_add(entry, "changed", __msg_ui_setting_block_word_detail_entry_changed_cb, (void *)settingData);
+       evas_object_smart_callback_add(entry, "preedit,changed", __msg_ui_setting_block_word_detail_entry_changed_cb, (void *)settingData);
+       evas_object_smart_callback_add(entry, "focused", __msg_ui_setting_block_word_detail_entry_focus_cb, entry_layout);
+       evas_object_smart_callback_add(entry, "unfocused", __msg_ui_setting_block_word_detail_entry_unfocus_cb, entry_layout);
+
+       elm_object_signal_callback_add(entry_layout, "elm,eraser,clicked", "elm", __msg_ui_setting_block_word_detail_eraser_clicked_cb, (void *)entry);
+       elm_object_part_content_set(entry_layout, "elm.swallow.content", entry);
+
+       elm_object_part_text_set(entry_layout, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_ENTER_WORD"));
+       elm_object_part_content_set(block_filter_detail_layout, "elm.icon", entry_layout);
+       elm_box_pack_end(box, block_filter_detail_layout);
+       evas_object_show(block_filter_detail_layout);
+
+       /* Before giving focus to the entry object, the entry object should be shown. */
+       evas_object_show(entry);
+       settingData->block_msg.block_filter_detail_entry = entry;
+
+       block_filter_limit_filter_data.max_char_count = 0;
+       block_filter_limit_filter_data.max_byte_count = MAX_FILTER_VALUE_LEN;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &block_filter_limit_filter_data);
+
+       /* It should be used to remove tags. */
+       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+
+       /* Set data only in edit case. */
+       if (index != MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (strlen(filter_val) > 0) {
+                       buf = elm_entry_utf8_to_markup(filter_val);
+                       elm_entry_entry_set(entry, buf);
+                       if (buf != NULL) {
+                               free(buf);
+                               buf = NULL;
+                       }
+               }
+       }
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
+               strncpy(title, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_CREATEMSG_ADD_WORD"), sizeof(title)-1);
+       else
+               strncpy(title, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_EDIT_WORD"), sizeof(title)-1);
+
+       /* Disable pushing the prev button automatically. */
+       elm_naviframe_prev_btn_auto_pushed_set(settingData->navi_frame, EINA_FALSE);
+       evas_object_smart_callback_add(settingData->navi_frame, "transition,finished", __msg_ui_setting_general_block_word_detail_trans_finished, NULL);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, title, NULL, NULL, scroller, NULL);
+
+       title_left_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_DONE"), __msg_ui_setting_block_word_detail_done_btn_cb, (void *)settingData);
+       elm_object_item_part_content_set(navi_it, "title_left_btn", title_left_btn);
+       settingData->block_msg.block_filter_detail_done_btn = title_left_btn;
+
+       title_right_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_CANCEL"), __msg_ui_setting_block_word_detail_cancel_btn_cb, (void *)settingData);
+       elm_object_item_part_content_set(navi_it, "title_right_btn", title_right_btn);
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
+               elm_object_disabled_set(title_left_btn, EINA_TRUE);
+
+       elm_object_focus_set(entry, EINA_TRUE);
+       elm_entry_cursor_end_set(entry);
+
+       D_LEAVE;
+}
+
+
+/********************************
+ ***  Block filter main view  ***
+ ********************************/
+
+static char *__msg_ui_setting_block_word_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       msg_error_t err = MSG_SUCCESS;
+       char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0')
+                       return strdup(filter_val);
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_word_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       __msg_ui_setting_word_filter_detail_view(settingData, index);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_word_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       if (settingData->block_msg.word_cnt == 1)
+               return;
+
+       Elm_Object_Item *first_it = elm_genlist_first_item_get(settingData->block_msg.block_filter_genlist);
+       Elm_Object_Item *second_it = elm_genlist_item_next_get(first_it);
+       Elm_Object_Item *last_it = elm_genlist_last_item_get(settingData->block_msg.block_filter_genlist);
+
+       if (ei == second_it)
+               elm_object_item_signal_emit(ei, "elm,state,top", "");
+       else if (ei == last_it)
+               elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+       else
+               elm_object_item_signal_emit(ei, "elm,state,center", "");
+}
+
+static Evas_Object *__msg_ui_setting_create_block_word_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       Evas_Object *block_filter_genlist;
+
+       int index = 0;
+       int filter_type;
+       int total_cnt = 0;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       block_filter_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->block_msg.block_filter_genlist = block_filter_genlist;
+       evas_object_smart_callback_add(block_filter_genlist, "realized", __msg_ui_setting_block_word_gl_realized, settingData);
+
+       msg_ui_setting_common_append_genlist_separator(block_filter_genlist, settingData);
+
+       settingData->block_msg.block_filter_itc.item_style = "dialogue/1text";
+       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_word_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = NULL;
+       settingData->block_msg.block_filter_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_itc.func.del = NULL;
+       settingData->block_msg.block_filter_itc.decorate_all_item_style = "dialogue/edit";
+
+       for (index = 0; index < total_cnt; index++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       elm_genlist_item_append(block_filter_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                               NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_block_word_gl_sel, (void *)index);
+               }
+       }
+
+       D_LEAVE;
+
+       return block_filter_genlist;
+}
+
+static void __msg_ui_setting_block_word_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to detail view. */
+       __msg_ui_setting_word_filter_detail_view(settingData, MSG_UI_SETTING_BLOCKED_DETAIL_CREATE);
+}
+
+static void __msg_ui_setting_block_word_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to block filter delete view. */
+       __msg_ui_setting_block_word_delete_view(settingData);
+}
+
+static void __msg_ui_setting_block_word_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       EINA_LIST_FREE(settingData->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       memset(&settingData->block_msg, 0x0, sizeof(MSG_UI_SETTING_FILTER_S));
+}
+
+/********************************
+ ***  Block filter main delete view  ***
+ ********************************/
+
+ static char *__msg_ui_setting_block_word_delete_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       msg_error_t err = MSG_SUCCESS;
+       char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0')
+                       return strdup(filter_val);
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_word_delete_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int count = 0;
+       int total_cnt = 0;
+       int word_cnt = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+       word_cnt = settingData->block_msg.word_cnt;
+
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == TRUE) {
+                                       count++;
+                               }
+                       }
+               }
+       }
+
+       if (count == word_cnt) {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       } else {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_FALSE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       }
+
+       if (count == 0) {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       } else {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       }
+
+       if (count == 0)
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+       else
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_FALSE);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_block_word_delete_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       D_MSG("index = %d", index);
+
+       check = elm_check_add(obj);
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       elm_check_state_pointer_set(check, &list_data->block_filter_chk_state);
+
+       evas_object_propagate_events_set(check, EINA_FALSE);
+       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_block_word_delete_gl_check_clicked_cb, settingData);
+
+       return check;
+}
+
+static void __msg_ui_setting_block_word_delete_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       int count = 0;
+       int total_cnt = 0;
+       int word_cnt = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+       word_cnt = settingData->block_msg.word_cnt;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       list_data->block_filter_chk_state = !list_data->block_filter_chk_state;
+
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == TRUE) {
+                                       count++;
+                               }
+                       }
+               }
+       }
+
+       if (count == word_cnt) {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       } else {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_FALSE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       }
+
+       elm_genlist_item_fields_update((Elm_Object_Item *)event_info, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+       elm_genlist_realized_items_update(settingData->block_msg.delete_genlist);
+
+       if (count == 0) {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       } else {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       }
+
+       if (count == 0)
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+       else
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_FALSE);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_create_block_word_delete_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       int index = 0;
+       int total_cnt = 0;
+       int filter_type;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       Evas_Object *delete_genlist;
+
+       delete_genlist = elm_genlist_add(parent);
+       evas_object_size_hint_weight_set(delete_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(delete_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       settingData->block_msg.delete_genlist = delete_genlist;
+
+       settingData->block_msg.block_filter_itc.item_style = "1text.1icon.2";
+       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_word_delete_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = __msg_ui_setting_block_word_delete_gl_content_get;
+       settingData->block_msg.block_filter_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_itc.func.del = NULL;
+       settingData->block_msg.block_filter_itc.decorate_all_item_style = "edit";
+
+       for (index = 0; index < total_cnt; index++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       elm_genlist_item_append(delete_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                               NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_block_word_delete_gl_sel, (void *)index);
+               }
+       }
+
+       D_LEAVE;
+
+       return delete_genlist;
+}
+
+static void __msg_ui_setting_block_word_check_select_all(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Eina_Bool sel_all_state = EINA_FALSE;
+       int i = 0;
+       int total_cnt = 0;
+       int filter_type;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       sel_all_state = settingData->block_msg.block_filter_chk_sel_all_state;
+
+       for (i = 0; i < total_cnt; i++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, i);
+                       list_data->block_filter_chk_state = sel_all_state;
+               }
+       }
+
+       elm_genlist_realized_items_update(settingData->block_msg.delete_genlist);
+
+       if (sel_all_state == EINA_TRUE) {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), settingData->block_msg.word_cnt);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       } else {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       }
+
+       if (sel_all_state == EINA_TRUE)
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_FALSE);
+       else
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+}
+
+static void __msg_ui_setting_block_word_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       settingData->block_msg.block_filter_chk_sel_all_state = !settingData->block_msg.block_filter_chk_sel_all_state;
+       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+
+       __msg_ui_setting_block_word_check_select_all(settingData);
+}
+
+static void __msg_ui_setting_block_word_sel_all_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       D_MSG("sel_all_chk_state = [%d]", settingData->block_msg.block_filter_chk_sel_all_state);
+
+       __msg_ui_setting_block_word_check_select_all(data);
+}
+
+static void __msg_ui_setting_block_word_delete_mode_exit(void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_block_word_update_view(settingData);
+
+       if (settingData->block_msg.delete_genlist) {
+               evas_object_del(settingData->block_msg.delete_genlist);
+               settingData->block_msg.delete_genlist = NULL;
+       }
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       return;
+}
+
+static void __msg_ui_setting_block_word_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       int index = 0;
+       int total_cnt = 0;
+       int filter_id = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       /* Delete selected filter item. */
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == EINA_TRUE) {
+                                       msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+                                       if (list_data->filter_id == filter_id) {
+                                               msg_delete_filter(settingData->msgHandle, (msg_filter_id_t)filter_id);
+                                               settingData->block_msg.block_filter_chk_state_list = eina_list_remove(settingData->block_msg.block_filter_chk_state_list, (const void *)list_data);
+                                               free(list_data);
+                                       }
+                               }
+                       }
+                       index++;
+               }
+       }
+
+       __msg_ui_setting_block_word_delete_mode_exit(settingData);
+
+}
+
+static void __msg_ui_setting_block_word_delete_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Cancel block filter deletion. */
+       __msg_ui_setting_block_word_delete_mode_exit(settingData);
+}
+
+static void __msg_ui_setting_block_word_delete_view_toolbar(void *data, Elm_Object_Item *navi_it)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *del_btn = NULL;
+
+       if (settingData->block_msg.add_btn) {
+               evas_object_del(settingData->block_msg.add_btn);
+               settingData->block_msg.add_btn = NULL;
+       }
+
+       if (settingData->block_msg.del_btn) {
+               evas_object_del(settingData->block_msg.del_btn);
+               settingData->block_msg.del_btn = NULL;
+       }
+
+       del_btn = msg_ui_setting_common_create_toolbar(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_DELETE"), __msg_ui_setting_block_word_delete_btn_clicked_cb, settingData);
+       elm_object_item_part_content_set(navi_it, "toolbar_button1", del_btn);
+       settingData->block_msg.del_btn = del_btn;
+
+}
+
+static void __msg_ui_setting_block_word_delete_view(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *filter_layout_sel_all;
+       Evas_Object *filter_check_sel_all;
+
+       Evas_Object *delete_filter_box;
+       Evas_Object *delete_filter_list;
+       Elm_Object_Item *navi_it;
+
+       Evas_Object *delete_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+       settingData->block_msg.delete_layout = delete_layout;
+
+       delete_filter_box = elm_box_add(settingData->navi_frame);
+       settingData->block_msg.delete_filter_box = delete_filter_box;
+       evas_object_size_hint_weight_set(delete_filter_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(delete_filter_box);
+       elm_object_part_content_set(settingData->block_msg.delete_layout, "elm.swallow.content", delete_filter_box);
+
+       delete_filter_list = __msg_ui_setting_create_block_word_delete_genlist(settingData->navi_frame, settingData);
+       elm_box_pack_end(delete_filter_box, delete_filter_list);
+       evas_object_show(delete_filter_list);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_DELETE_WORDS"), NULL, NULL, delete_layout, NULL);
+
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, __msg_ui_setting_block_word_delete_cancel_btn_clicked_cb, settingData);
+
+       __msg_ui_setting_block_word_delete_view_toolbar(settingData, navi_it);
+
+       /* Append 'Select All' layout. */
+       filter_layout_sel_all = elm_layout_add(settingData->block_msg.delete_filter_box);
+       settingData->block_msg.block_filter_sel_all_layout = filter_layout_sel_all;
+       elm_layout_theme_set(filter_layout_sel_all, "genlist", "item", "select_all/default");
+       evas_object_size_hint_weight_set(filter_layout_sel_all, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+       evas_object_size_hint_align_set(filter_layout_sel_all, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_event_callback_add(filter_layout_sel_all, EVAS_CALLBACK_MOUSE_DOWN, __msg_ui_setting_block_word_sel_all_mouse_down_cb, settingData);
+
+       filter_check_sel_all = elm_check_add(filter_layout_sel_all);
+       settingData->block_msg.block_filter_chk_sel_all = filter_check_sel_all;
+       elm_check_state_pointer_set(filter_check_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+       evas_object_smart_callback_add(filter_check_sel_all, "changed", __msg_ui_setting_block_word_sel_all_check_clicked_cb, settingData);
+       evas_object_propagate_events_set(filter_check_sel_all, EINA_FALSE);
+       elm_object_part_content_set(filter_layout_sel_all, "elm.icon", filter_check_sel_all);
+
+       elm_object_part_text_set(filter_layout_sel_all, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+       elm_box_pack_start(settingData->block_msg.delete_filter_box, filter_layout_sel_all);
+       evas_object_show(filter_layout_sel_all);
+
+       elm_genlist_decorate_mode_set(settingData->block_msg.delete_genlist, EINA_FALSE);
+       elm_genlist_select_mode_set(settingData->block_msg.delete_genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+       /* Default state of "Delete" button is disable. */
+       elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+}
+
+/**********************************
+ ***  Block filter main  ***
+ **********************************/
+
+static void __msg_ui_setting_block_word_update_view(void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_destroy_block_word_main(settingData);
+       __msg_ui_setting_init_block_word_main(settingData);
+       __msg_ui_setting_show_block_word_main(settingData);
+       __msg_ui_setting_block_word_update_toolbar(settingData);
+}
+
+static void __msg_ui_setting_destroy_block_word_main(void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       msg_ui_setting_common_destroy_selectioninfo(settingData);
+
+       /* Remove 'Select All' layout. */
+       if (settingData->block_msg.block_filter_sel_all_layout) {
+               elm_box_unpack(settingData->block_msg.block_filter_box, settingData->block_msg.block_filter_sel_all_layout);
+               evas_object_del(settingData->block_msg.block_filter_sel_all_layout);
+               settingData->block_msg.block_filter_sel_all_layout = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_genlist) {
+               evas_object_del(settingData->block_msg.block_filter_genlist);
+               settingData->block_msg.block_filter_genlist = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_box) {
+               evas_object_del(settingData->block_msg.block_filter_box);
+               settingData->block_msg.block_filter_box = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_nocontents) {
+               evas_object_del(settingData->block_msg.block_filter_nocontents);
+               settingData->block_msg.block_filter_nocontents = NULL;
+       }
+}
+
+static void __msg_ui_setting_init_block_word_main(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       msg_error_t err = MSG_SUCCESS;
+       int total_cnt = 0;
+       int i = 0;
+       int filter_type = 0;
+       int filter_id = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data;
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       err = msg_get_filter_list(settingData->msgHandle, &(settingData->block_msg.filterList));
+       if (err != MSG_SUCCESS) {
+               D_MSG("msg_get_filter_list() fail - err [%d]", err);
+               return;
+       }
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+       settingData->block_msg.word_cnt = 0;
+
+       EINA_LIST_FREE(settingData->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       for (i = 0; i < total_cnt; i++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_ID_INT, &filter_id);
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               settingData->block_msg.block_filter_chk_state_list = filter_chk_list_append(settingData->block_msg.block_filter_chk_state_list, filter_id, EINA_FALSE, EINA_TRUE);
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       settingData->block_msg.word_cnt++;
+               }
+       }
+}
+
+static void __msg_ui_setting_show_block_word_main(void *data)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *block_filter_box;
+       Evas_Object *block_filter_nocontents;
+       Evas_Object *block_filter_list;
+
+       if (settingData->block_msg.word_cnt == 0) {
+               block_filter_nocontents = msg_ui_setting_common_create_no_content_view(settingData->block_msg.block_layout, NULL);
+               settingData->block_msg.block_filter_nocontents = block_filter_nocontents;
+               elm_object_part_content_set(settingData->block_msg.block_layout, "elm.swallow.content", block_filter_nocontents);
+       } else {
+               block_filter_box = elm_box_add(settingData->navi_frame);
+               settingData->block_msg.block_filter_box = block_filter_box;
+               evas_object_size_hint_weight_set(block_filter_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(block_filter_box);
+               elm_object_part_content_set(settingData->block_msg.block_layout, "elm.swallow.content", block_filter_box);
+
+               block_filter_list = __msg_ui_setting_create_block_word_genlist(settingData->navi_frame, settingData);
+               elm_box_pack_end(block_filter_box, block_filter_list);
+               evas_object_show(block_filter_list);
+       }
+}
+
+static void __msg_ui_setting_block_word_update_toolbar(void *data)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *add_btn = NULL;
+       Evas_Object *del_btn = NULL;
+
+       if (settingData->block_msg.add_btn) {
+               evas_object_del(settingData->block_msg.add_btn);
+               settingData->block_msg.add_btn = NULL;
+       }
+
+       if (settingData->block_msg.del_btn) {
+               evas_object_del(settingData->block_msg.del_btn);
+               settingData->block_msg.del_btn = NULL;
+       }
+
+       add_btn = msg_ui_setting_common_create_toolbar(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_ADD"), __msg_ui_setting_block_word_add_btn_clicked_cb, settingData);
+       elm_object_item_part_content_set(settingData->navi_it, "toolbar_button1", add_btn);
+       elm_object_style_set(add_btn, "naviframe/toolbar/left");
+       settingData->block_msg.add_btn = add_btn;
+
+       del_btn = msg_ui_setting_common_create_toolbar(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_DELETE"), __msg_ui_setting_block_word_del_btn_clicked_cb, settingData);
+       elm_object_item_part_content_set(settingData->navi_it, "toolbar_button2", del_btn);
+       elm_object_style_set(del_btn, "naviframe/toolbar/right");
+       settingData->block_msg.del_btn = del_btn;
+
+       /* If no item exist in Blocked numbers, delete button should be disabled. */
+       if (settingData->block_msg.word_cnt == 0)
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_TRUE);
+       else
+               elm_object_disabled_set(settingData->block_msg.del_btn, EINA_FALSE);
+
+}
+
+
+void msg_ui_setting_spam_block_word_main(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *block_layout;
+
+       /* Init block message data. */
+       __msg_ui_setting_init_block_word_main(settingData);
+
+       block_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+       settingData->block_msg.block_layout = block_layout;
+
+       __msg_ui_setting_show_block_word_main(settingData);
+
+       settingData->navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_BLOCKED_WORDS"), NULL, NULL, block_layout, NULL);
+
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, __msg_ui_setting_block_word_back_btn_cb, settingData);
+
+       __msg_ui_setting_block_word_update_toolbar(settingData);
+}
diff --git a/setting/src/spam/msg-ui-setting-spam-setting.c b/setting/src/spam/msg-ui-setting-spam-setting.c
new file mode 100755 (executable)
index 0000000..928f242
--- /dev/null
@@ -0,0 +1,207 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+#include "msg-ui-setting-spam-setting.h"
+
+
+static struct _msg_ui_setting_mixed_list_item spam_menu_its[] = {
+       { 1, "IDS_MSGF_BODY_BLOCKED_NUMBERS", msg_ui_setting_spam_block_number_main, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_BLOCKED_WORDS", msg_ui_setting_spam_block_word_main, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static char *__msg_ui_setting_spam_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_spam_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_spam_gl_realized(void *data, Evas_Object *obj, void *ei);
+static Evas_Object *__msg_ui_setting_spam_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_spam_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+Eina_List *filter_chk_list_append(Eina_List* list, int filter_id, Eina_Bool block_filter_chk_state, Eina_Bool number_reject_chk_state)
+{
+    MSG_UI_SETTING_FILTER_LIST_S *data = NULL;
+
+    data = (MSG_UI_SETTING_FILTER_LIST_S *) malloc(sizeof(MSG_UI_SETTING_FILTER_LIST_S));
+    data->filter_id = filter_id;
+    data->block_filter_chk_state = block_filter_chk_state;
+    data->number_reject_chk_state = number_reject_chk_state;
+
+    return eina_list_append(list, (const void *)data);
+}
+
+static char *
+__msg_ui_setting_spam_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (spam_menu_its[index].name) {
+                       if (strstr(spam_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", spam_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, spam_menu_its[index].name));
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_spam_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (spam_menu_its[index].func != NULL)
+               spam_menu_its[index].func(settingData, obj, event_info);
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_spam_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+
+       int index = (int)elm_object_item_data_get(ei);
+
+       if (index == 0)
+               elm_object_item_signal_emit(ei, "elm,state,top", "");
+       else if (index == 1)
+               elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+       else
+               elm_object_item_signal_emit(ei, "elm,state,center", "");
+}
+
+static Evas_Object *__msg_ui_setting_spam_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       Evas_Object *spam_genlist;
+       int index = 0;
+
+       spam_genlist = msg_ui_setting_common_create_genlist(parent);
+       evas_object_smart_callback_add(spam_genlist, "realized", __msg_ui_setting_spam_gl_realized, NULL);
+       settingData->list.spam_setting.spam_genlist = spam_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(spam_genlist, settingData);
+
+       settingData->list.spam_setting.spam_itc.item_style = "dialogue/1text";
+       settingData->list.spam_setting.spam_itc.func.text_get = __msg_ui_setting_spam_gl_text_get;
+       settingData->list.spam_setting.spam_itc.func.content_get = NULL;
+       settingData->list.spam_setting.spam_itc.func.state_get = NULL;
+       settingData->list.spam_setting.spam_itc.func.del = NULL;
+
+       for (index = 0; spam_menu_its[index].name; index++) {
+               elm_genlist_item_append(spam_genlist, &settingData->list.spam_setting.spam_itc, (void *)index,
+                       NULL, spam_menu_its[index].type, __msg_ui_setting_spam_gl_sel, (void *)index);
+       }
+
+       D_LEAVE;
+
+       return spam_genlist;
+}
+
+static void __msg_ui_setting_spam_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       D_LEAVE;
+}
+
+void msg_ui_setting_spam_create_view(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *spam_layout;
+       Evas_Object *spam_genlist;
+       Evas_Object *l_button;
+
+       bool filter_set = EINA_FALSE;
+
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_GENERAL;
+       msg_ui_setting_msg_get_config(settingData);
+
+       /* Block should be always enabled. */
+       msg_get_filter_operation(settingData->msgHandle, (bool *)&filter_set);
+       if (filter_set == EINA_FALSE) {
+               if (msg_set_filter_operation(settingData->msgHandle, EINA_TRUE) == MSG_SUCCESS) {
+                       D_MSG("Block is enabled !!");
+               } else {
+                       D_EMSG("msg_set_filter_operation() is failed !!");
+               }
+       }
+
+       /* Initialize global variable. */
+       memset(&settingData->list.spam_setting, 0x0, sizeof(settingData->list.spam_setting));
+
+       if (obj == NULL) {
+               /* Change background color from transparent to group_list. */
+               elm_object_style_set(settingData->bg, "group_list");
+       }
+
+       spam_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       spam_genlist = __msg_ui_setting_spam_create_genlist(settingData->navi_frame, settingData);
+       elm_object_part_content_set(spam_layout, "elm.swallow.content", spam_genlist);
+
+       /* Create Left Button */
+       l_button = elm_button_add(settingData->navi_frame);
+
+       elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), l_button, NULL, spam_layout, NULL);
+
+       /* Style set should be called after elm_naviframe_item_push(). */
+       elm_object_style_set(l_button, "naviframe/back_btn/default");
+       if (obj == NULL)
+               evas_object_smart_callback_add(l_button, "clicked", msg_ui_setting_quit_cb, (void *)settingData);
+       else
+               evas_object_smart_callback_add(l_button, "clicked", __msg_ui_setting_spam_back_btn_cb, (void *)settingData);
+
+       D_LEAVE;
+
+}
diff --git a/setting/src/text/msg-ui-setting-text-message.c b/setting/src/text/msg-ui-setting-text-message.c
new file mode 100755 (executable)
index 0000000..950587b
--- /dev/null
@@ -0,0 +1,518 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+#include "msg-ui-setting-text-message.h"
+
+static struct _msg_ui_setting_mixed_list_item text_menu_its[] = {
+       { 1, "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGC_HEADER_INPUTMODE", NULL, ELM_GENLIST_ITEM_TREE },
+       { 1, "IDS_MSGF_BODY_SERVICECENTRE", msg_ui_setting_create_service_center_list, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item input_mode_menu_its[] = {
+       { 2, "IDS_MSGF_BODY_GSM_ALPHABET", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_UNICODE", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "IDS_MSGF_BODY_AUTOMATIC", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 2, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static char *__msg_ui_setting_text_input_mode_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_setting_text_input_mode_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_text_input_mode_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_input_mode_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_input_mode_save(void *data);
+
+static void __msg_ui_setting_text_gl_exp(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_gl_con(void *data, Evas_Object *obj, void *event_info);
+static char *__msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_text_save_req_delivery_report(void *data);
+static void __msg_ui_setting_text_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_text_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_gl_realized(void *data, Evas_Object *obj, void *ei);
+static Evas_Object *__msg_ui_setting_text_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**********************************
+ ***  input mode view  ***
+ **********************************/
+static char *__msg_ui_setting_text_input_mode_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+
+       if(index >= sizeof(input_mode_menu_its) / sizeof(input_mode_menu_its[0])) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (input_mode_menu_its[index].name) {
+                       if (strstr(input_mode_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", input_mode_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, input_mode_menu_its[index].name));
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_setting_text_input_mode_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               evas_object_propagate_events_set(radio, EINA_FALSE);
+               evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_text_input_mode_radio_cb, (void *)settingData);
+
+               elm_radio_group_add(radio, settingData->list.text_msg.text_input_mode_radio_group);
+
+               return radio;
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_text_input_mode_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = NULL;
+       int index = (int)data;
+
+       settingData = msg_ui_setting_get_data();
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       /* Change radio selection. */
+       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, index);
+
+       __msg_ui_setting_text_input_mode_save((void *)settingData);
+
+       elm_genlist_item_update(settingData->list.text_msg.text_input_mode_item);
+
+       D_LEAVE;
+       return;
+}
+
+static void __msg_ui_setting_text_input_mode_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_text_input_mode_save((void *)settingData);
+
+       elm_genlist_item_update(settingData->list.text_msg.text_input_mode_item);
+}
+
+static void __msg_ui_setting_text_input_mode_save(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int inputMode = -1;
+       msg_error_t     err = MSG_SUCCESS;
+
+       /* Save selected input mode value. */
+       inputMode = elm_radio_value_get(settingData->list.text_msg.text_input_mode_radio_group);
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
+       if (inputMode == MSG_ENCODE_GSM7BIT)
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, MSG_ENCODE_GSM7BIT);
+       else if (inputMode == MSG_ENCODE_UCS2 - 1)
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, MSG_ENCODE_UCS2);
+       else
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, MSG_ENCODE_AUTO);
+
+       err = msg_ui_setting_msg_set_config(settingData);
+       D_MSG("msg_ui_setting_msg_set_config(input_mode) is %d", err);
+}
+
+
+/************************
+ ***  Text message menu ***
+ *************************/
+ static void __msg_ui_setting_text_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = event_info;
+       int index = 0;
+       int depth = 0;
+       int inputMode = -1;
+
+       depth = elm_genlist_item_expanded_depth_get(it);
+
+       D_MSG("depth = %d", depth);
+
+       if (depth == 0) {
+               settingData->list.text_msg.text_input_mode_itc.item_style = "dialogue/1text.1icon.2/expandable2";
+               settingData->list.text_msg.text_input_mode_itc.func.text_get = __msg_ui_setting_text_input_mode_gl_text_get;
+               settingData->list.text_msg.text_input_mode_itc.func.content_get = __msg_ui_setting_text_input_mode_gl_content_get;
+               settingData->list.text_msg.text_input_mode_itc.func.state_get = NULL;
+               settingData->list.text_msg.text_input_mode_itc.func.del = NULL;
+
+               settingData->list.text_msg.text_input_mode_radio_group = elm_radio_add(obj);
+
+               for (index = 0; input_mode_menu_its[index].name; index++) {
+                       elm_genlist_item_append(settingData->list.text_msg.text_genlist,
+                                                                       &settingData->list.text_msg.text_input_mode_itc,
+                                                                               (void *)index, it, input_mode_menu_its[index].type,
+                                                                               __msg_ui_setting_text_input_mode_gl_sel, (void *)index);
+               }
+
+               msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, &inputMode);
+
+               /* Input mode current radio value set */
+               if (inputMode == MSG_ENCODE_GSM7BIT)
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 0);
+               else if (inputMode == MSG_ENCODE_UCS2)
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 1);
+               else
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 2);
+       }
+}
+
+static void __msg_ui_setting_text_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Elm_Object_Item *item = event_info;
+       elm_genlist_item_subitems_clear(item);
+}
+
+static char *__msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int inputMode = -1;
+
+       msg_error_t err = MSG_SUCCESS;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (text_menu_its[index].name) {
+                       if (strstr(text_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", text_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, text_menu_its[index].name));
+               }
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               if (index == MSG_UI_SETTING_TEXT_MENU_SMSC) {
+                       char smsc_name[MAX_SMSC_NAME_LEN + 1] = {0, };
+                       int cur_index = 0;
+
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+                       err = msg_get_int_value(settingData->msg_setting.smsc_opt, MSG_SMSC_SELECTED_ID_INT, &cur_index);
+                       D_MSG("__msg_ui_setting_text_gl_text_get is %d", err);
+
+                       char *dgetbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD");
+                       char *g_buf = g_strdup_printf(dgetbuf, cur_index+1);
+                       strncpy(smsc_name, g_buf, sizeof(smsc_name) - 1);
+                       free(g_buf);
+                       return strdup(smsc_name);
+               } else if (index == MSG_UI_SETTING_TEXT_MENU_INPUT_MODE) {
+                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, &inputMode);
+                       if (inputMode == MSG_ENCODE_GSM7BIT)
+                               return strdup(dgettext(MESSAGE_PKGNAME, input_mode_menu_its[0].name));
+                       else if (inputMode == MSG_ENCODE_UCS2)
+                               return strdup(dgettext(MESSAGE_PKGNAME, input_mode_menu_its[1].name));
+                       else if (inputMode == MSG_ENCODE_AUTO)
+                               return strdup(dgettext(MESSAGE_PKGNAME, input_mode_menu_its[2].name));
+                       else
+                               D_EMSG("input Mode fail = %d", inputMode);
+               } else {
+                       D_EMSG("Invalid index = %s", index);
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_text_save_req_delivery_report(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Eina_Bool set_val = EINA_FALSE;
+
+       set_val = elm_check_state_get(settingData->list.text_msg.req_delivery_rep_check);
+       D_MSG("set_val = %d", (int)set_val);
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
+       msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_DELIVERY_REPORT_BOOL, set_val);
+       msg_ui_setting_msg_set_config(settingData);
+}
+
+static void __msg_ui_setting_text_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (obj == settingData->list.text_msg.req_delivery_rep_check)
+               __msg_ui_setting_text_save_req_delivery_report(settingData);
+       else
+               D_EMSG("Invalid obj = 0x%x", obj);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool bReport = false;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               if (index == MSG_UI_SETTING_TEXT_MENU_REQ_DELIVERY_REPORT) {
+                       check = elm_check_add(obj);
+                       settingData->list.text_msg.req_delivery_rep_check = check;
+
+                       msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_DELIVERY_REPORT_BOOL, &bReport);
+
+                       if (bReport == true)
+                               elm_check_state_set(check, EINA_TRUE);
+                       else
+                               elm_check_state_set(check, EINA_FALSE);
+
+                       elm_object_style_set(check, "on&off");
+
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_text_gl_check_clicked_cb, settingData);
+
+                       return check;
+               } else {
+                       D_EMSG("Invalid index = %d", index);
+               }
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_text_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       Eina_Bool expand_state = EINA_FALSE;
+
+       D_MSG("index = %d", index);
+       D_MSG_RETM_IF(settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index == MSG_UI_SETTING_TEXT_MENU_REQ_DELIVERY_REPORT) {
+               Eina_Bool set_val = EINA_FALSE;
+
+               set_val = elm_check_state_get(settingData->list.text_msg.req_delivery_rep_check);
+               D_MSG("set_val = %d", (int)set_val);
+
+               elm_check_state_set(settingData->list.text_msg.req_delivery_rep_check, !set_val);
+
+               __msg_ui_setting_text_save_req_delivery_report((void *)settingData);
+       } else if (index == MSG_UI_SETTING_TEXT_MENU_INPUT_MODE) {
+               expand_state = elm_genlist_item_expanded_get(settingData->list.text_msg.text_input_mode_item);
+               if (expand_state == EINA_FALSE)
+                       elm_genlist_item_expanded_set(settingData->list.text_msg.text_input_mode_item, EINA_TRUE);
+               else
+                       elm_genlist_item_expanded_set(settingData->list.text_msg.text_input_mode_item, EINA_FALSE);
+       } else if (index == MSG_UI_SETTING_TEXT_MENU_SMSC) {
+               if (text_menu_its[index].func != NULL)
+                       text_menu_its[index].func(settingData, obj, event_info);
+       } else {
+               D_EMSG("Invalid data : index = %d", index);
+       }
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_text_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+       msg_release_struct(&(settingData->msg_setting.smsc_opt));
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       D_LEAVE;
+       return;
+}
+
+static void __msg_ui_setting_text_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+       D_MSG_RETM_IF(!data, "data is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Elm_Object_Item *parent = NULL;
+
+       int index = (int)elm_object_item_data_get(ei);
+       parent = elm_genlist_item_parent_get(ei);
+
+       if (parent == settingData->list.text_msg.text_input_mode_item) {
+               if (index == MSG_UI_SETTING_TEXT_INPUT_MODE_MENU_GSM_ALPHABET)
+                               elm_object_item_signal_emit(ei, "elm,state,top", "");
+               else if (index == MSG_UI_SETTING_TEXT_INPUT_MODE_MENU_AUTOMATIC)
+                       elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+               else
+                       elm_object_item_signal_emit(ei, "elm,state,center", "");
+       } else {
+               if (index == MSG_UI_SETTING_TEXT_MENU_REQ_DELIVERY_REPORT)
+                       elm_object_item_signal_emit(ei, "elm,state,top", "");
+               else if (index == MSG_UI_SETTING_TEXT_MENU_SMSC)
+                       elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+               else
+                       elm_object_item_signal_emit(ei, "elm,state,center", "");
+       }
+}
+
+static Evas_Object *__msg_ui_setting_text_create_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       D_ENTER;
+
+       Evas_Object *text_genlist;
+       Elm_Object_Item *it = NULL;
+
+       int index = 0;
+
+       text_genlist = msg_ui_setting_common_create_genlist(parent);
+
+       settingData->list.text_msg.text_genlist = text_genlist;
+       evas_object_smart_callback_add(text_genlist, "realized", __msg_ui_setting_text_gl_realized, settingData);
+       msg_ui_setting_common_append_genlist_separator(text_genlist, settingData);
+
+       settingData->list.text_msg.text_2line_itc.item_style = "dialogue/2text.3";
+       settingData->list.text_msg.text_2line_itc.func.text_get = __msg_ui_setting_text_gl_text_get;
+       settingData->list.text_msg.text_2line_itc.func.content_get = NULL;
+       settingData->list.text_msg.text_2line_itc.func.state_get = NULL;
+       settingData->list.text_msg.text_2line_itc.func.del = NULL;
+
+       settingData->list.text_msg.text_2line_1icon_itc.item_style = "dialogue/2text.3/expandable";
+       settingData->list.text_msg.text_2line_1icon_itc.func.text_get = __msg_ui_setting_text_gl_text_get;
+       settingData->list.text_msg.text_2line_1icon_itc.func.content_get = NULL;
+       settingData->list.text_msg.text_2line_1icon_itc.func.state_get = NULL;
+       settingData->list.text_msg.text_2line_1icon_itc.func.del = NULL;
+
+       settingData->list.text_msg.text_1line_1icon_itc.item_style = "dialogue/1text.1icon";
+       settingData->list.text_msg.text_1line_1icon_itc.func.text_get = __msg_ui_setting_text_gl_text_get;
+       settingData->list.text_msg.text_1line_1icon_itc.func.content_get = __msg_ui_setting_text_gl_content_get;
+       settingData->list.text_msg.text_1line_1icon_itc.func.state_get = NULL;
+       settingData->list.text_msg.text_1line_1icon_itc.func.del = NULL;
+
+       for (index = 0; text_menu_its[index].name; index++) {
+               if (index == MSG_UI_SETTING_TEXT_MENU_SMSC) {
+                       it = elm_genlist_item_append(text_genlist, &settingData->list.text_msg.text_2line_itc,
+                                                                                       (void *)index, NULL, text_menu_its[index].type,
+                                                                                       __msg_ui_setting_text_gl_sel, (void *)index);
+                       settingData->list.text_msg.service_centre_item = it;
+               } else if (index == MSG_UI_SETTING_TEXT_MENU_INPUT_MODE) {
+                       it = elm_genlist_item_append(text_genlist, &settingData->list.text_msg.text_2line_1icon_itc,
+                                                                       (void *)index, NULL, ELM_GENLIST_ITEM_TREE,
+                                                                       __msg_ui_setting_text_gl_sel, (void *)index);
+                       settingData->list.text_msg.text_input_mode_item = it;
+               } else {
+                       elm_genlist_item_append(text_genlist, &settingData->list.text_msg.text_1line_1icon_itc, (void *)index,
+                               NULL, text_menu_its[index].type, __msg_ui_setting_text_gl_sel, (void *)index);
+               }
+       }
+
+       evas_object_smart_callback_add(text_genlist, "expanded", __msg_ui_setting_text_gl_exp, settingData);
+       evas_object_smart_callback_add(text_genlist, "contracted", __msg_ui_setting_text_gl_con, settingData);
+
+       D_LEAVE;
+
+       return text_genlist;
+}
+
+void msg_ui_setting_text_create_view(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *text_layout;
+       Evas_Object *text_genlist;
+
+       /* Initialize global variable. */
+       memset(&settingData->list.text_msg, 0x0, sizeof(settingData->list.text_msg));
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
+       msg_ui_setting_msg_get_config(settingData);
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_get_list_handle(settingData->msg_setting.smsc_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
+
+       text_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       text_genlist = __msg_ui_setting_text_create_genlist(settingData->navi_frame, settingData);
+       elm_object_part_content_set(text_layout, "elm.swallow.content", text_genlist);
+
+       elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_TEXT_MESSAGES"), NULL, NULL, text_layout, NULL);
+
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
+                       __msg_ui_setting_text_back_btn_cb, settingData);
+
+}
+
diff --git a/setting/src/text/msg-ui-setting-text-service-center.c b/setting/src/text/msg-ui-setting-text-service-center.c
new file mode 100755 (executable)
index 0000000..8e3051a
--- /dev/null
@@ -0,0 +1,523 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-text-message.h"
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static void __msg_ui_setting_smsc_trans_finished(void *data, Evas_Object *obj, void *event_info);
+static Eina_Bool __msg_ui_setting_smsc_is_changed(void *data);
+static void __msg_ui_setting_smsc_done_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_smsc_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
+static void __msg_ui_setting_text_save_service_centre(void *data);
+static char *__msg_ui_setting_text_service_centre_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_text_service_centre_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_service_centre_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_text_service_centre_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_text_service_centre_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_service_centre_gl_realized(void *data, Evas_Object *obj, void *ei);
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/******************
+ ***  SMSC  menu ***
+ *******************/
+
+static void
+__msg_ui_setting_smsc_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (elm_object_focus_get(layout)) {
+               if (elm_entry_is_empty(obj))
+                       elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+               else
+                       elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+       }
+
+       D_LEAVE;
+}
+
+static void
+__msg_ui_setting_smsc_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(layout, "elm,state,eraser,show", "elm");
+
+       D_LEAVE;
+}
+
+static void
+__msg_ui_setting_smsc_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm");
+
+       D_LEAVE;
+}
+
+static void
+__msg_ui_setting_smsc_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       D_ENTER;
+
+       Evas_Object *entry = (Evas_Object *)data;
+
+       elm_entry_entry_set(entry, "");
+
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_smsc_trans_finished(void *data, Evas_Object *obj, void *event_info)
+{
+       /* Enable pushing the prev button. */
+       elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
+
+       evas_object_smart_callback_del(obj, "transition,finished", __msg_ui_setting_smsc_trans_finished);
+}
+
+static Eina_Bool
+__msg_ui_setting_smsc_is_changed(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       char *addr_buf = NULL;
+       int index = 0;
+       char address[SMSC_NAME_MAX+1] = {0,};
+       int ret = 0;
+
+       index = settingData->list.text_msg.center_index;
+
+       addr_buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->list.text_msg.smsc_addr_entry));
+
+       msg_get_str_value(settingData->msg_setting.smsc_list->msg_struct_info[index], MSG_SMSC_ADDR_STR, address, SMSC_ADDR_MAX);
+
+       /* It will check whether value is changed or not. */
+       if (addr_buf) {
+               ret = strcmp(addr_buf, address);
+               free(addr_buf);
+               addr_buf = NULL;
+               if (ret != 0) {
+                       D_MSG("address is different.");
+                       return EINA_TRUE;
+               }
+       }
+
+       return EINA_FALSE;
+
+}
+
+static void
+__msg_ui_setting_smsc_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       char *addr_buf = NULL;
+       int index, ret;
+       char address[SMSC_NAME_MAX+1] = {0,};
+
+       index = settingData->list.text_msg.center_index;
+
+       addr_buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->list.text_msg.smsc_addr_entry));
+       if (!addr_buf || strlen(addr_buf) == 0) {
+               D_MSG("No value");
+               goto smsc_exit;
+       }
+
+       if (__msg_ui_setting_smsc_is_changed(settingData) != EINA_TRUE) {
+               D_MSG("Nothing is changed.");
+               goto smsc_exit;
+       }
+
+       strncpy(address, addr_buf, SMSC_ADDR_MAX);
+       D_MSG("SMSC Addr = %s", address);
+       msg_set_str_value(settingData->msg_setting.smsc_list->msg_struct_info[index], MSG_SMSC_ADDR_STR, address, strlen(address));
+
+       ret = msg_ui_setting_msg_set_config(settingData);
+
+       if (ret == 0) {
+               /* Update smsc_all_genlist */
+               elm_genlist_realized_items_update(settingData->list.text_msg.smsc_all_genlist);
+
+               /* Update text message genlist. */
+               elm_genlist_item_update(settingData->list.text_msg.service_centre_item);
+       }
+
+smsc_exit:
+       if (addr_buf != NULL)
+               free(addr_buf);
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       D_LEAVE;
+}
+
+static void
+__msg_ui_setting_smsc_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+}
+
+void msg_ui_setting_service_center_selected_main(void *data, int index)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *center_layout = NULL;
+       Evas_Object *title_left_btn = NULL;
+       Evas_Object *title_right_btn = NULL;
+       Elm_Object_Item *navi_it = NULL;
+       Evas_Object *box = NULL;
+       Evas_Object *scroller = NULL;
+       Evas_Object *entry_layout = NULL;
+       Evas_Object *entry = NULL;
+       char title[DEF_BUF_LEN_S] = {0, };
+       char address[SMSC_NAME_MAX+1] = {0,};
+       char *buf = NULL;
+       Elm_Entry_Filter_Limit_Size smsc_addr_limit_filter_data;
+       Elm_Entry_Filter_Accept_Set smsc_addr_accept_filter_data;
+
+       settingData->list.text_msg.center_index = index;
+       D_MSG("select index : %d", index);
+
+       scroller = msg_ui_setting_common_create_scroller(settingData->navi_frame);
+       elm_object_style_set(scroller, "dialogue");
+
+       box = msg_ui_setting_common_add_box(scroller);
+       elm_object_content_set(scroller, box);
+
+       center_layout = elm_layout_add(box);
+       elm_layout_theme_set(center_layout, "layout", "dialogue", "1icon");
+       evas_object_size_hint_weight_set(center_layout, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(center_layout, EVAS_HINT_FILL, 0.0);
+
+       entry_layout = elm_layout_add(center_layout);
+       elm_layout_theme_set(entry_layout, "layout", "editfield", "title");
+
+       entry = elm_entry_add(entry_layout);
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+       elm_entry_autocapital_type_set(entry, ELM_AUTOCAPITAL_TYPE_NONE);
+       elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_PHONENUMBER);
+
+       evas_object_smart_callback_add(entry, "changed", __msg_ui_setting_smsc_entry_changed_cb, (void *)entry_layout);
+       evas_object_smart_callback_add(entry, "focused", __msg_ui_setting_smsc_entry_focus_cb, (void *)entry_layout);
+       evas_object_smart_callback_add(entry, "unfocused", __msg_ui_setting_smsc_entry_unfocus_cb, (void *)entry_layout);
+
+       elm_object_signal_callback_add(entry_layout, "elm,eraser,clicked", "elm", __msg_ui_setting_smsc_eraser_clicked_cb, (void *)entry);
+       elm_object_part_content_set(entry_layout, "elm.swallow.content", entry);
+
+       elm_object_part_text_set(entry_layout, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_PUSHADDRESS"));
+       elm_object_part_content_set(center_layout, "elm.icon", entry_layout);
+       elm_box_pack_end(box, center_layout);
+       evas_object_show(center_layout);
+
+       /* Before giving focus to the entry object, the entry object should be shown. */
+       evas_object_show(entry);
+       settingData->list.text_msg.smsc_addr_entry= entry;
+
+       smsc_addr_limit_filter_data.max_char_count = 0;
+       smsc_addr_limit_filter_data.max_byte_count = MAX_SMSC_ADDR_LEN;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &smsc_addr_limit_filter_data);
+
+       /* If '*', '#', 'P' are inputted, it will be ignored. */
+       smsc_addr_accept_filter_data.accepted = "+0123456789";
+       smsc_addr_accept_filter_data.rejected = NULL;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_accept_set, &smsc_addr_accept_filter_data);
+       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+
+       msg_get_str_value(settingData->msg_setting.smsc_list->msg_struct_info[index], MSG_SMSC_ADDR_STR, address, SMSC_ADDR_MAX);
+       if (strlen(address) > 0) {
+               buf = elm_entry_utf8_to_markup(address);
+               elm_entry_entry_set(entry, buf);
+
+               if (buf != NULL)
+                       free(buf);
+       }
+
+       /* Disable pushing the prev button automatically. */
+       elm_naviframe_prev_btn_auto_pushed_set(settingData->navi_frame, EINA_FALSE);
+       evas_object_smart_callback_add(settingData->navi_frame, "transition,finished", __msg_ui_setting_smsc_trans_finished, NULL);
+
+       char *dgetbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD");
+       char *g_buf = g_strdup_printf(dgetbuf, index+1);
+       strncpy(title, g_buf, sizeof(title) - 1);
+       free(g_buf);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, title, NULL, NULL, scroller, NULL);
+
+       /* Create title button. */
+       title_left_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_DONE"), __msg_ui_setting_smsc_done_btn_cb, (void *)settingData);
+       elm_object_item_part_content_set(navi_it, "title_left_btn", title_left_btn);
+
+       title_right_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, dgettext("sys_string", "IDS_COM_SK_CANCEL"), __msg_ui_setting_smsc_cancel_btn_cb, (void *)settingData);
+       elm_object_item_part_content_set(navi_it, "title_right_btn", title_right_btn);
+
+       elm_object_focus_set(entry, EINA_TRUE);
+       elm_entry_cursor_end_set(entry);
+
+       D_LEAVE;
+}
+
+
+/***********************
+ ***  Service centre list  ***
+ ***********************/
+
+static void
+__msg_ui_setting_text_save_service_centre(void *data)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int selection;
+       msg_error_t     err = MSG_SUCCESS;
+
+       selection = elm_radio_value_get(settingData->list.text_msg.service_centre_radio_group);
+       D_MSG("selected value is %d", selection);
+
+       /* Save selected value. */
+       msg_set_int_value(settingData->msg_setting.smsc_opt, MSG_SMSC_SELECTED_ID_INT, selection);
+
+       err = msg_ui_setting_msg_set_config(settingData);
+       D_MSG("msg_ui_setting_msg_set_config(service centre) is %d", err);
+
+}
+
+static char *
+__msg_ui_setting_text_service_centre_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       int index = (int)data;
+       char smsc_name[MAX_SMSC_NAME_LEN + 1] = {0, };
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               char *dgetbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD");
+               char *g_buf = g_strdup_printf(dgetbuf, index+1);
+               strncpy(smsc_name, g_buf, sizeof(smsc_name) - 1);
+               free(g_buf);
+               return strdup(smsc_name);
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_text_service_centre_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_text_save_service_centre(data);
+
+       elm_genlist_item_update(settingData->list.text_msg.service_centre_item);
+}
+
+static void
+__msg_ui_setting_text_service_centre_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       D_MSG("index = %d", index);
+
+       msg_ui_setting_service_center_selected_main(settingData, index);
+
+}
+
+static Evas_Object *
+__msg_ui_setting_text_service_centre_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+
+       Evas_Object *radio;
+       Evas_Object *button;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       int selected = 0;
+
+       D_MSG("index = %d", index);
+
+       if (!strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               evas_object_propagate_events_set(radio, EINA_FALSE);
+               evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_text_service_centre_radio_cb, (void *)settingData);
+
+               if (index == 0)
+                       settingData->list.text_msg.service_centre_radio_group = radio;
+               else
+                       elm_radio_group_add(radio, settingData->list.text_msg.service_centre_radio_group);
+
+               /* Radio value should be updated when user back from service centre setting.
+                * If it is omitted, radio will be set to first item.
+                */
+               msg_get_int_value(settingData->msg_setting.smsc_opt, MSG_SMSC_SELECTED_ID_INT, &selected);
+               if (index == selected)
+                       elm_radio_value_set(settingData->list.text_msg.service_centre_radio_group, index);
+
+               return radio;
+       } else if (!strcmp(part, "elm.icon.2")) {
+               button = elm_button_add(obj);
+               settingData->list.text_msg.service_centre_btn_reveal = button;
+               elm_object_style_set(button, "reveal");
+
+               evas_object_propagate_events_set(button, EINA_FALSE);
+               evas_object_smart_callback_add(button, "clicked", __msg_ui_setting_text_service_centre_btn_clicked_cb, (void *)index);
+               return button;
+       } else {
+               D_EMSG("Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_text_service_centre_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       PMSG_SETTING_DATA settingData = NULL;
+       int index = (int)data;
+
+       settingData = msg_ui_setting_get_data();
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       /* Change radio selection. */
+       elm_radio_value_set(settingData->list.text_msg.service_centre_radio_group, index);
+
+       __msg_ui_setting_text_save_service_centre((void *)settingData);
+
+       elm_genlist_item_update(settingData->list.text_msg.service_centre_item);
+
+       D_LEAVE;
+       return;
+}
+
+static void __msg_ui_setting_text_service_centre_gl_realized(void *data, Evas_Object *obj, void *ei)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(!ei, "ei is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       if (settingData->msg_setting.smsc_list->nCount == 1)
+               return;
+
+       int index = (int)elm_object_item_data_get(ei);
+
+       if (index == 0)
+               elm_object_item_signal_emit(ei, "elm,state,top", "");
+       else if (index == settingData->msg_setting.smsc_list->nCount - 1)
+               elm_object_item_signal_emit(ei, "elm,state,bottom", "");
+       else
+               elm_object_item_signal_emit(ei, "elm,state,center", "");
+}
+
+void msg_ui_setting_create_service_center_list(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *smsc_layout;
+       Evas_Object *smsc_all_genlist;
+
+       int smsc_cnt;
+       int selected_smsc;
+
+       int index = 0;
+
+       /* SIM status check */
+       if(msg_common_is_sim_inserted() == FALSE) {
+               msg_ui_setting_common_show_notify(settingData, dgettext(MESSAGE_PKGNAME, "SIM not inserted"));
+               return;
+       }
+
+       smsc_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       smsc_all_genlist = msg_ui_setting_common_create_genlist(smsc_layout);
+       evas_object_smart_callback_add(smsc_all_genlist, "realized", __msg_ui_setting_text_service_centre_gl_realized, settingData);
+       settingData->list.text_msg.smsc_all_genlist = smsc_all_genlist;
+       elm_object_part_content_set(smsc_layout, "elm.swallow.content", smsc_all_genlist);
+
+       msg_ui_setting_common_append_genlist_separator(smsc_all_genlist, settingData);
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+
+       msg_get_int_value(settingData->msg_setting.smsc_opt, MSG_SMSC_SELECTED_ID_INT, &selected_smsc);
+       smsc_cnt = settingData->msg_setting.smsc_list->nCount;
+
+       D_MSG("smsc_cnt = %d, selected_smsc = %d", smsc_cnt, selected_smsc);
+
+       if (smsc_cnt <= 0 || smsc_cnt > MAX_SMSC_LIST)
+               smsc_cnt = MAX_SMSC_LIST;
+
+       settingData->list.text_msg.text_1line_2icon_itc.item_style = "dialogue/1text.2icon";
+       settingData->list.text_msg.text_1line_2icon_itc.func.text_get = __msg_ui_setting_text_service_centre_gl_text_get;
+       settingData->list.text_msg.text_1line_2icon_itc.func.content_get = __msg_ui_setting_text_service_centre_gl_content_get;
+       settingData->list.text_msg.text_1line_2icon_itc.func.state_get = NULL;
+       settingData->list.text_msg.text_1line_2icon_itc.func.del = NULL;
+
+       for (index = 0; index < smsc_cnt; index++) {
+               elm_genlist_item_append(settingData->list.text_msg.smsc_all_genlist,
+                                                                       &settingData->list.text_msg.text_1line_2icon_itc,
+                                                                       (void *)index, NULL, ELM_GENLIST_ITEM_NONE,
+                                                                       __msg_ui_setting_text_service_centre_gl_sel, (void *)index);
+       }
+
+       elm_radio_value_set(settingData->list.text_msg.service_centre_radio_group, selected_smsc);
+
+       elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SERVICECENTRE"), NULL, NULL, smsc_layout, NULL);
+
+       D_LEAVE;
+}
+
diff --git a/setting/theme/setting_theme.edc b/setting/theme/setting_theme.edc
new file mode 100755 (executable)
index 0000000..6b2bba9
--- /dev/null
@@ -0,0 +1,60 @@
+
+collections{
+
+       group
+       {
+               name: "editfield_layout_with_contact_button";
+               parts
+               {
+                       part {
+                               name: "base";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "ct_button";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 0.5;
+                                       fixed: 1 1;
+                                       max: 64 64;
+                                       rel1 { to: "base"; relative: 1.0 0.0; }
+                                       rel2 { to: "base"; relative: 1.0 1.0; }
+                                }
+                        }
+                       part {
+                               name: "mid_padding";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1 0;
+                                       fixed: 1 0;
+                                       min: 20 0;
+                                       rel1 { to_x: "ct_button"; to_y: "base"; relative: 0.0 0.0; }
+                                       rel2 { to_x: "ct_button"; to_y: "base"; relative: 0.0 1.0; }
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.content";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.5;
+                                       fixed: 0 0;
+                                       rel1 { to: "base"; relative: 0.0 0.0; }
+                                       rel2 { to: "mid_padding"; relative: 0.0 1.0; }
+                                }
+                        }
+               }
+       }
+}
+
diff --git a/thread/include/msg-ui-thread-main.h b/thread/include/msg-ui-thread-main.h
new file mode 100755 (executable)
index 0000000..7aad78e
--- /dev/null
@@ -0,0 +1,369 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __DEF_MSG_UI_THREAD_MAIN_H__
+#define __DEF_MSG_UI_THREAD_MAIN_H__
+
+#include <stdio.h>
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+
+#include <libintl.h>
+#include <bundle.h>
+#include <Ecore.h>
+#include <Ecore_IMF.h>
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+#include <utilX.h>
+#include <time.h>
+#include <contacts.h>
+
+#include "message.h"
+#include "msg-ui-util.h"
+#include "msg-ui-image-resource.h"
+#include "msg-ui-common-utility.h"
+
+#define MSG_THREAD_THEME       EDJDIR"/thread_genlist.edj"
+#define MSG_THREAD_DELETE_NOTI_TIME 1.5
+#define MSG_THREAD_LIST_MAX_COUNT 10
+#define MSG_THREAD_LIST_LAUNCH_LOAD_MAX_CNT 20
+#define MSG_THREAD_LIST_ADDR_POPUP_MAX_CNT 4
+#define MSG_THREAD_LIST_ADDR_POPUP_ITEM_HEIGHT 114
+
+
+
+typedef struct _MSG_THREAD_LIST_DATA MSG_THREAD_LIST_DATA, *PMSG_THREAD_LIST_DATA;
+typedef struct _MSG_THREAD_SPLIT_DATA MSG_THREAD_SPLIT_DATA, *PMSG_THREAD_SPLIT_DATA;
+typedef struct _MSG_APP_THREAD_DATA_S MSG_APP_THREAD_DATA_S, *PMSG_APP_THREAD_DATA_S;
+typedef struct _MSG_APP_THREAD_MSG_DATA_S MSG_APP_THREAD_MSG_DATA_S, *PMSG_APP_THREAD_MSG_DATA_S;
+typedef struct _MSG_APP_THREAD_DATELINE_DATA_S MSG_APP_THREAD_DATELINE_DATA_S, *PMSG_APP_THREAD_DATELINE_DATA_S;
+typedef struct _MSG_APP_THREAD_ADDR_INFO_S MSG_APP_THREAD_ADDR_INFO_S, *PMSG_APP_THREAD_ADDR_INFO_S;
+typedef struct _THREAD_MORE_VIEW_DATA THREAD_MORE_VIEW_DATA, *PTHREAD_MORE_VIEW_DATA;
+
+typedef enum {
+       THREAD_NORMAL_VIEW = 0,
+       THREAD_EDIT_VIEW,               /** Edit viw mode*/
+       THREAD_UNLOAD_VIEW, /* when it calls other gadgets or views. */
+} ThreadViewMode;
+
+typedef enum {
+       THREAD_NORMAL_LIST_TYPE,        /** Normal converstaion THREAD list */
+       THREAD_SPAM_LIST_TYPE,          /** <More - spam messages list> */
+       THREAD_SIM_LIST_TYPE,           /** <More -Sim messages list> */
+       THREAD_CBMSG_LIST_TYPE, /** <More -CB Message list> */
+} ThreadMsgListType;
+
+typedef enum {
+       THREAD_LIST_APP_DATA_THREAD = 0,
+       THREAD_LIST_APP_DATA_MSG,
+} ThreadMsgListAppDataType;
+
+typedef enum {
+       THREAD_SEARCH_OFF = 0,
+       THREAD_SEARCH_ON,
+} ThreadSearchMode;
+
+typedef enum {
+       THREAD_ITC_EMPTY = 0,
+       THREAD_ITC_SEARCH,
+       THREAD_ITC_BLANK,
+       THREAD_ITC_POPUP,
+       THREAD_ITC_DATE,
+} ThreadItcType;
+
+typedef enum {
+       THREAD_ACTION_NONE = 0,
+       THREAD_ACTION_DELETE,
+       THREAD_ACTION_RESTORE,
+       THREAD_ACTION_COPY_TO_PHONE,
+       THREAD_ACTION_BLOCK,
+       THREAD_ACTION_UNBLOCK,
+} ThreadActionType;
+
+enum {
+       THREAD_ROTATE_ANGLE_PORTRAIT = 0,
+       THREAD_ROTATE_ANGLE_PORTRAIT_UPSIDEDOWN = 180,
+       THREAD_ROTATE_ANGLE_LANDSCAPE = 270,
+       THREAD_ROTATE_ANGLE_LANDSCAPE_UPSIDEDOWN = 90,
+       THREAD_ROTATE_ANGLE_UNKNOWN = -1,
+};
+
+typedef struct _MSG_THREAD_DATA {
+
+       msg_handle_t msgHandle;
+       int app_state;
+
+       Elm_Theme *th;
+       Evas_Object *win_main;
+       Evas_Object *conform;
+       Evas_Object *panes;
+       Evas_Object *layout_main;
+       Evas_Object *navi_frame;
+       PMSG_THREAD_SPLIT_DATA split_data;
+       Evas_Object *detail_layout;
+       Elm_Object_Item *detail_nf_it;
+
+       Elm_Genlist_Item_Class itc_empty;
+       Elm_Genlist_Item_Class itc_search;
+       Elm_Genlist_Item_Class itc_blank;
+       Elm_Genlist_Item_Class itc_popup;
+       Elm_Genlist_Item_Class itc_date;
+
+       char *time_12h_ptn;
+       char *time_24h_ptn;
+       char *date_ptn_default;
+       char *date_ptn_year;
+       msg_time_format time_fmt;
+       char locale[DEF_BUF_LEN];
+
+       bool isRotate;                  /* Rotation state */
+       bool isIncomingMsg;     /* Check there is new incoming message when it back from edit mode to normal. */
+
+       PMSG_THREAD_LIST_DATA list_data[MSG_THREAD_LIST_MAX_COUNT];
+
+} MSG_THREAD_DATA, *PMSG_THREAD_DATA;
+
+typedef struct _MSG_THREAD_LIST_DATA {
+
+       Evas_Object *genlist;
+       Evas_Object *content_ly;
+       Evas_Object *noc_ly;
+       Elm_Object_Item *nf_it; //title, control bar naviframe item
+       Evas_Object *toolbar_btn[CONTROLBAR_ITEM_MAX];
+       Evas_Object *back_btn;
+       Evas_Object *search_btn;
+       Evas_Object *searchbar;
+       Ecore_Timer *search_timer;
+
+       Elm_Genlist_Item_Class itc_default;
+       Elm_Genlist_Item_Class itc_unread;
+
+       ThreadViewMode view_mode;
+       ThreadMsgListType list_type;
+       ThreadMsgListAppDataType app_data_type;
+       ThreadSearchMode search_mode;
+       ThreadActionType action_type;
+
+       Elm_Object_Item *sel_gen_item;
+       int sel_thread_id;
+       int sel_msg_id;
+
+       struct ug_cbs cbs;
+       ui_gadget_h loaded_ug;
+
+       Evas_Object *select_info;       //%d item selected
+       Evas_Object *selectioninfo_layout;
+
+       Evas_Object *sel_all_ly;
+       Evas_Object *sel_all_box;
+       Eina_Bool sel_all_checked;
+       Eina_List *chk_list;
+       Ecore_Thread *multi_action_thread;
+       int sel_index;
+       int item_cnt;
+       int check_cnt;
+
+       Evas_Object *popup;
+       Evas_Object *progressbar;
+       Ecore_Job *job_popup_end;
+       bool include_protected_msg;
+
+       Ecore_Idler *launch_idler;
+       int loaded_cnt;
+} _MSG_THREAD_LIST_DATA;
+
+typedef struct _MSG_THREAD_SPLIT_DATA {
+       Evas_Object *content_ly;
+       Evas_Object *navi_frame;
+       Elm_Object_Item *nf_it;
+       Evas_Object *title_layout;
+       Evas_Object *noc_ly;
+       Evas_Object *back_btn;
+       Evas_Object *composer_btn;
+} _MSG_THREAD_SPLIT_DATA;
+
+typedef struct _MSG_APP_THREAD_DATA_S {
+       msg_thread_id_t thread_id;
+       char thread_name[DEF_THREAD_NAME_LEN+1];
+       char thread_data[DEF_BUF_LEN_S+1];
+       time_t *thread_time;
+       msg_direction_type_t direction;
+       int unread_cnt;
+       int sms_cnt;
+       int mms_cnt;
+       int msg_type;
+
+       Evas_Object *chk;
+       Eina_Bool is_check;
+} _MSG_APP_THREAD_DATA_S;
+
+typedef struct _MSG_APP_THREAD_MSG_DATA_S {
+       int msg_id;
+       int msg_type;
+       bool is_read;
+       int direction;
+
+       PMSG_APP_THREAD_ADDR_INFO_S *addr_info;
+       int addr_cnt;
+       char msg_body[MAX_MSG_TEXT_LEN+1];
+       time_t *msg_time;
+
+       Evas_Object *chk;
+       Eina_Bool is_check;
+} _MSG_APP_THREAD_MSG_DATA_S;
+
+typedef struct _MSG_APP_THREAD_DATELINE_DATA_S {
+       Elm_Object_Item *date_it;
+       time_t *thread_time;
+       int subitem_cnt;
+} _MSG_APP_THREAD_DATELINE_DATA_S;
+
+typedef struct _MSG_APP_THREAD_ADDR_INFO_S {
+       int contact_id;
+       char display_name[DEF_THREAD_NAME_LEN+1];
+       char address[DEF_THREAD_ADDR_LEN+1];
+} _MSG_APP_THREAD_ADDR_INFO_S;
+
+
+
+#define MSG_THREAD_POPUP_DATA  "popup_data"
+#define MSG_THREAD_DEL_CONFIRM "del_confirm"
+
+
+PMSG_THREAD_DATA msg_ui_thread_get_data(void);
+msg_handle_t msg_ui_thread_get_data_handle(void);
+Elm_Genlist_Item_Class* msg_ui_thread_get_itc_type(ThreadItcType type);
+
+void *msg_ui_thread_init_thread_data(struct appdata *ad);
+void msg_ui_thread_deinit_thread_data(void *data);
+
+PMSG_THREAD_LIST_DATA msg_ui_thread_create_thread_list_data(ThreadMsgListType list_type, ThreadMsgListAppDataType app_data_type);
+PMSG_THREAD_SPLIT_DATA msg_ui_thread_create_split_data(void);
+void msg_ui_thread_destroy_thread_list_data(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_destroy_split_data(PMSG_THREAD_SPLIT_DATA pSplitData);
+PMSG_THREAD_LIST_DATA msg_ui_thread_get_default_list(void);
+PMSG_THREAD_LIST_DATA msg_ui_thread_get_current_list(void);
+PMSG_THREAD_LIST_DATA msg_ui_thread_get_prev_list(PMSG_THREAD_LIST_DATA pListData);
+
+void msg_ui_thread_load_thread_view(void *data, service_h service);
+void msg_ui_thread_load_message_box(int list_type);
+void msg_ui_thread_reset_thread_view(void *data, service_h service);
+
+void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DATA pSplitData);
+Evas_Object *msg_ui_thread_create_content_layout(Evas_Object *parent);
+Evas_Object *msg_ui_thread_create_nocontent_layout(Evas_Object *parent);
+Evas_Object *msg_ui_thread_create_layout_main(PMSG_THREAD_DATA pData);
+Evas_Object *msg_ui_thread_create_genlist(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData);
+Evas_Object *msg_ui_thread_create_searchbar_layout(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData);
+
+void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData);
+void msg_ui_thread_set_navi_toolbar_item(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_show_toolbar(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_hide_toolbar(PMSG_THREAD_LIST_DATA pListData, bool bDeleteBtn);
+void msg_ui_thread_rotation_set(void *data, int rot);
+bool msg_ui_thread_rotation_get(void);
+void msg_ui_thread_lang_changed(void *data);
+void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData);
+void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData);
+
+
+/* THREAD LIST */
+void msg_ui_thread_set_thread_data(PMSG_THREAD_LIST_DATA pListData, PMSG_APP_THREAD_DATA_S thread_data, msg_struct_t msgThreadInfo);
+void msg_ui_thread_set_msg_data(PMSG_APP_THREAD_MSG_DATA_S msg_data, msg_struct_t msgInfo);
+char *msg_ui_thread_msg_gl_text_get(void *data, Evas_Object *obj, const char *part);
+char *msg_ui_thread_search_msg_gl_text_get(void *data, Evas_Object *obj, const char *part);
+Evas_Object *msg_ui_thread_msg_gl_content_get(void *data, Evas_Object *obj, const char *part);
+void msg_ui_thread_msg_gl_del(void *data, Evas_Object *obj);
+void msg_ui_thread_msg_gl_sel(void *data, Evas_Object *obj, void *event_info);
+char *msg_ui_thread_gl_empty_get(void *data, Evas_Object *obj, const char *part);
+void msg_ui_thread_gl_empty_sel(void *data, Evas_Object *obj, void *event_info);
+char *msg_ui_thread_date_gl_text_get(void *data, Evas_Object *obj, const char *part);
+void msg_ui_thread_date_gl_del(void *data, Evas_Object *obj);
+PMSG_APP_THREAD_DATELINE_DATA_S msg_ui_thread_list_insert_dateline(PMSG_THREAD_LIST_DATA pListData, time_t* cur_time, time_t* prev_time);
+void  msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch);
+void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData);
+Eina_Bool msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id);
+void msg_ui_thread_list_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id);
+
+void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType);
+void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_list_msg_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id);
+Eina_Bool msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id);
+Eina_Bool  msg_ui_thread_search_msg_list_load(void *data);
+
+void msg_ui_thread_common_style_set(PMSG_THREAD_DATA pData);
+void msg_ui_thread_genlist_style_set(PMSG_THREAD_LIST_DATA pListData);
+
+/* THREAD CALLBACK */
+void msg_ui_thread_storage_change_cb(msg_handle_t handle, msg_storage_change_type_t storageChangeType, msg_id_list_s *pMsgIdList, void *user_param);
+void msg_ui_thread_ctlbar_multi_action_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_multi_action_thread_fn(void *data, Ecore_Thread *thread);
+void msg_ui_thread_multi_action_thread_feedback_fn(void *data, Ecore_Thread *thread, void *msg_data);
+void msg_ui_thread_ctlbar_checkbox_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_ctlbar_spam_setting_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_ctlbar_compose_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_ctlbar_message_box_cb(void *data, Evas_Object *obj, void *event_info);
+
+void msg_ui_thread_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_list_checked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_search_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_searchbar_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_searchbar_entry_change_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_searchbar_entry_click_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_searchbar_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+void msg_ui_thread_sweep_btn_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_timezone_change_cb(keynode_t *key, void *data);
+void msg_ui_thread_gl_mode_right(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_gl_mode_left(void *data, Evas_Object *obj, void *event_info);
+
+/* THREAD UTILS */
+int msg_ui_thread_launch_voice_call(const char *call_num);
+void msg_ui_thread_launch_video_call(const char *call_num);
+void msg_ui_thread_launch_spam_setting(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_launch_viewer_ug(PMSG_THREAD_LIST_DATA pListData, int nMsgId);
+void msg_ui_thread_launch_msg_detail_view(PMSG_THREAD_LIST_DATA pListData, PMSG_APP_THREAD_MSG_DATA_S item_data);
+void msg_ui_thread_update_msg_detail_view(PMSG_APP_THREAD_MSG_DATA_S item_data);
+
+void msg_ui_thread_get_time_format(PMSG_THREAD_DATA pData);
+void msg_ui_thread_get_locale(PMSG_THREAD_DATA pData);
+
+void msg_ui_thread_get_bubble_data(PMSG_APP_THREAD_DATA_S item_data, service_h svc_handle);
+void msg_ui_thread_get_composer_data(int msg_id, service_h svc_handle);
+void msg_ui_thread_cancel_edit_mode(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_show_normal_mode(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_select_item_by_thread_id(PMSG_THREAD_LIST_DATA pListData, int thread_id);
+void msg_ui_thread_select_item_by_msg_id(PMSG_THREAD_LIST_DATA pListData, int msg_id);
+void msg_ui_thread_show_notify(PMSG_THREAD_LIST_DATA pListData, const char *msg);
+void msg_ui_thread_show_action_popup(PMSG_THREAD_LIST_DATA pListData, int actionType, const char *msg);
+Evas_Object* msg_ui_thread_show_notify_with_progressbar(PMSG_THREAD_LIST_DATA pListData, int count);
+void msg_ui_thread_show_select_info(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_show_action_finish_info(PMSG_THREAD_LIST_DATA pListData, int actionType, void *pData);
+void msg_ui_thread_addr_select_popup(PMSG_THREAD_LIST_DATA pListData, const char *title, msg_struct_list_s *addrList);
+
+void msg_ui_thread_set_app_state(int app_state);
+int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData);
+void msg_ui_thread_cancel_search_mode(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_button_disabled_set(PMSG_THREAD_LIST_DATA pListData, Eina_Bool disabled, int controlbar_btn);
+void msg_ui_thread_get_title_text(PMSG_THREAD_LIST_DATA pListData, char *label, int label_len);
+
+const char *msg_ui_thread_make_search_result_string(const char *string, char *searchword, bool *result);
+void msg_ui_thread_make_time_string(time_t *msg_t, char *buf, int buf_len);
+#endif /* __DEF_MSG_UI_THREAD_MAIN_H__ */
diff --git a/thread/src/msg-ui-thread-callback.c b/thread/src/msg-ui-thread-callback.c
new file mode 100755 (executable)
index 0000000..5ac529c
--- /dev/null
@@ -0,0 +1,1118 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-thread-main.h"
+
+static void __msg_ui_thread_insert_and_select_gen_item(PMSG_THREAD_LIST_DATA pListData);
+static void __msg_ui_thread_add_navi_select_all_ly(PMSG_THREAD_LIST_DATA pListData);
+static void __msg_ui_thread_sel_all_ly_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_multi_action_finish(PMSG_THREAD_LIST_DATA pListData);
+static Eina_Bool __msg_ui_thread_searchbar_entry_timer_cb(void *data);
+
+static void __msg_ui_thread_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+void msg_ui_thread_storage_change_cb(msg_handle_t handle, msg_storage_change_type_t type, msg_id_list_s *pMsgIdList, void *user_param)
+{
+       MSG_UI_ENTER();
+
+       int list_idx = 0;
+       bool multiple_action = false;
+       if (!user_param || !pMsgIdList)
+               return;
+
+       PMSG_THREAD_DATA pData = user_param;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+
+       if (msg_ui_thread_get_app_state(pData) == MSG_UI_STATE_DESTROY)
+               return;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "type is %d", type);
+
+       for (list_idx = MSG_THREAD_LIST_MAX_COUNT-1; list_idx >= 0; list_idx--) {
+               if (pData->list_data[list_idx] != NULL) {
+                       pListData = pData->list_data[list_idx];
+                       if (pListData->multi_action_thread != NULL || multiple_action == true) {
+                               multiple_action = true;
+                               break;  //finish multi action, reload msg list
+                       }
+
+                       if (type == MSG_STORAGE_CHANGE_CONTACT) {
+                               if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD)
+                                       msg_ui_thread_list_update(pListData);
+                               else
+                                       msg_ui_thread_list_msg_list_update(pListData);
+                       } else if (type == MSG_STORAGE_CHANGE_INSERT) {
+                               if (pListData->view_mode == THREAD_EDIT_VIEW) {
+                                       pData->isIncomingMsg = true;
+                                       D_MSG("Current mode is EDIT.");
+                                       return;
+                               }
+                               __msg_ui_thread_insert_and_select_gen_item(pListData);
+                       } else if (type == MSG_STORAGE_CHANGE_DELETE) {
+                               if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG) {
+                                       int idx = 0;
+
+                                       for (idx = 0; idx < pMsgIdList->nCount; idx++) {
+                                               msg_ui_thread_list_msg_item_delete(pListData, pMsgIdList->msgIdList[idx]);
+                                       }
+                               } else {
+                                       Elm_Object_Item *gen_item = NULL;
+                                       PMSG_APP_THREAD_DATA_S item_data = NULL;
+                                       msg_struct_t threadInfo = msg_create_struct(MSG_STRUCT_THREAD_INFO);
+                                       int smsCnt = 0;
+                                       int mmsCnt = 0;
+                                       msg_error_t err =  MSG_SUCCESS;
+
+                                       gen_item = elm_genlist_first_item_get(pListData->genlist);
+                                       while (gen_item) {
+                                               if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                                                       gen_item = elm_genlist_item_next_get(gen_item);
+                                                       continue;
+                                               }
+
+                                               item_data = (PMSG_APP_THREAD_DATA_S) elm_object_item_data_get(gen_item);
+
+                                               err = msg_get_thread(msg_ui_thread_get_data_handle(), item_data->thread_id, threadInfo);
+                                               if (err != MSG_SUCCESS) {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_thread() is failed : err = %d", err);
+                                                       msg_ui_thread_list_item_delete(pListData, item_data->thread_id);
+                                                       break;
+                                               }
+
+                                               msg_get_int_value(threadInfo, MSG_THREAD_MMS_COUNT_INT, &mmsCnt);
+                                               msg_get_int_value(threadInfo, MSG_THREAD_SMS_COUNT_INT, &smsCnt);
+
+                                               if (smsCnt+mmsCnt == 0)
+                                                       msg_ui_thread_list_item_delete(pListData, item_data->thread_id);
+                                               else if ((item_data->sms_cnt + item_data->mms_cnt) != (smsCnt+mmsCnt))
+                                                       msg_ui_thread_list_item_update(pListData, item_data->thread_id);
+
+                                               gen_item = elm_genlist_item_next_get(gen_item);
+                                       }
+                                       msg_release_struct(&threadInfo);
+                               }
+                       } else if (type == MSG_STORAGE_CHANGE_UPDATE) {
+                               int idx = 0;
+
+                               for (idx = 0; idx < pMsgIdList->nCount; idx++) {
+                                       if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD) {
+                                               msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+                                               msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+                                               msg_error_t err = MSG_SUCCESS;
+                                               int thread_id = 0;
+
+                                               err = msg_get_message(pData->msgHandle, pMsgIdList->msgIdList[idx], msgInfo, sendOpt);
+
+                                               if (err != MSG_SUCCESS) {
+                                                       msg_release_struct(&msgInfo);
+                                                       msg_release_struct(&sendOpt);
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "error : msg_id : %d, error : %d", pMsgIdList->msgIdList[idx], err);
+                                                       return;
+                                               }
+
+                                               msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+
+                                               msg_release_struct(&msgInfo);
+                                               msg_release_struct(&sendOpt);
+
+                                               if (msg_ui_thread_list_item_update(pListData, thread_id) == EINA_FALSE)
+                                                       __msg_ui_thread_insert_and_select_gen_item(pListData);
+                                       } else {
+                                               if (msg_ui_thread_list_msg_item_update(pListData, pMsgIdList->msgIdList[idx]) == EINA_FALSE)
+                                                       __msg_ui_thread_insert_and_select_gen_item(pListData);
+                                       }
+                               }
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE();
+}
+
+static void __msg_ui_thread_insert_and_select_gen_item(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER();
+
+       int sel_thread_id = 0, sel_msg_id = 0;
+
+       if (pListData->sel_gen_item) {
+               sel_thread_id = pListData->sel_thread_id;
+               sel_msg_id = pListData->sel_msg_id;
+       }
+
+       if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG) {
+               if (pListData->search_mode == THREAD_SEARCH_ON)
+                       msg_ui_thread_search_msg_list_load(pListData);
+               else
+                       msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+               msg_ui_thread_select_item_by_msg_id(pListData, sel_msg_id);
+       } else {
+               msg_ui_thread_list_load(pListData, FALSE);
+               msg_ui_thread_select_item_by_thread_id(pListData, sel_thread_id);
+       }
+
+       if (pListData->sel_gen_item)
+               elm_genlist_item_selected_set(pListData->sel_gen_item, true);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_ctlbar_multi_action_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, pListData->multi_action_thread);
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       if (obj == pListData->toolbar_btn[CONTROLBAR_ITEM_1]) {
+               pListData->action_type = THREAD_ACTION_DELETE;
+               msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_DELETE, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
+       } else if (obj == pListData->toolbar_btn[CONTROLBAR_ITEM_2]) {
+               if (pListData->list_type == THREAD_SPAM_LIST_TYPE) {
+                       pListData->action_type = THREAD_ACTION_RESTORE;
+                       msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_RESTORE, dgettext(MESSAGE_PKGNAME, "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"));
+               } else if (pListData->list_type == THREAD_SIM_LIST_TYPE) {
+                       pListData->action_type = THREAD_ACTION_COPY_TO_PHONE;
+               }
+       }
+
+       if (pListData->popup == NULL) {
+               pListData->popup = msg_ui_thread_show_notify_with_progressbar(pListData, pListData->check_cnt);
+               pListData->multi_action_thread = ecore_thread_feedback_run(msg_ui_thread_multi_action_thread_fn, msg_ui_thread_multi_action_thread_feedback_fn, NULL, NULL, (void *)pListData, EINA_TRUE);
+       }
+}
+
+void msg_ui_thread_multi_action_thread_feedback_fn(void *data, Ecore_Thread *thread, void *msg_data)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !thread || !data || !msg_data);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       int *ret = msg_data;
+
+       if (*ret == MSG_SUCCESS) {
+               if (pListData->progressbar)
+                       elm_progressbar_value_set(pListData->progressbar, (double)(pListData->sel_index+1)/pListData->check_cnt);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "fail action. %d", *ret);
+
+               /** __msg_ui_thread_multi_action_finish function contains evas_object_del(thread_data->popup), */
+               /** so, call __msg_ui_thread_multi_action_finish() first, after that make "unable to delete" popup  */
+               __msg_ui_thread_multi_action_finish(pListData);
+
+               if (pListData->action_type == THREAD_ACTION_DELETE)
+                       msg_ui_thread_show_notify(pListData, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+               else if (pListData->action_type == THREAD_ACTION_COPY_TO_PHONE)
+                       msg_ui_thread_show_notify(pListData, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_COPY"));
+               else if (pListData->action_type == THREAD_ACTION_RESTORE)
+                       msg_ui_thread_show_notify(pListData, dgettext("sys_string", "IDS_COM_POP_MOVING_FAILED"));
+
+               pListData->action_type = THREAD_ACTION_NONE;
+               pListData->include_protected_msg = false;
+               if (ret)
+                       free(ret);
+               return;
+       }
+
+       if (pListData->sel_index + 1 == pListData->check_cnt)
+               __msg_ui_thread_multi_action_finish(pListData);
+       else
+               pListData->sel_index++;
+
+       if (ret)
+               free(ret);
+}
+
+void msg_ui_thread_multi_action_thread_fn(void *data, Ecore_Thread *thread)
+{
+       D_ENTER;
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Eina_List *list;
+
+       void* item_data = NULL;
+
+       EINA_LIST_FOREACH(pListData->chk_list, list, item_data) {
+               int *ret = calloc(1, sizeof(int));
+
+               if (item_data) {
+                       if (pListData->action_type == THREAD_ACTION_DELETE) {
+                               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+                                       PMSG_APP_THREAD_DATA_S data = (PMSG_APP_THREAD_DATA_S)item_data;
+                                       *ret = msg_delete_thread_message_list(msg_ui_thread_get_data_handle(), data->thread_id, pListData->include_protected_msg);
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pListData->include_protected_msg = %d", pListData->include_protected_msg);
+                               } else {
+                                       PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+
+                                       if (pListData->include_protected_msg == false) {
+                                               msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+                                               msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+                                               bool bProtect = false;
+                                               msg_error_t err =  MSG_SUCCESS;
+
+                                               err = msg_get_message(msg_ui_thread_get_data_handle(), (msg_message_id_t)data->msg_id, msgInfo, sendOpt);
+                                               if (err != MSG_SUCCESS) {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message() is failed : err = %d", err);
+                                                       msg_release_struct(&msgInfo);
+                                                       msg_release_struct(&sendOpt);
+                                                       goto MSG_FAIL;
+                                               }
+
+                                               msg_get_bool_value(msgInfo, MSG_MESSAGE_PROTECTED_BOOL, &bProtect);
+                                               if (bProtect == true) {
+                                                       msg_release_struct(&msgInfo);
+                                                       msg_release_struct(&sendOpt);
+                                                       *ret = MSG_SUCCESS;
+                                                       ecore_thread_feedback(thread, (void *)ret);
+                                                       continue;
+                                               }
+
+                                               *ret = msg_delete_message(msg_ui_thread_get_data_handle(), data->msg_id);
+
+                                               msg_release_struct(&msgInfo);
+                                               msg_release_struct(&sendOpt);
+                                       } else {
+                                               *ret = msg_delete_message(msg_ui_thread_get_data_handle(), data->msg_id);
+                                       }
+                               }
+                       } else if (pListData->action_type == THREAD_ACTION_RESTORE) {
+                               PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+                               *ret = msg_move_msg_to_folder(msg_ui_thread_get_data_handle(), data->msg_id, MSG_INBOX_ID);
+                       } else if (pListData->action_type == THREAD_ACTION_COPY_TO_PHONE) {
+                               PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+                               int msg_id = 0;
+                               msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+                               msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+                               *ret = msg_get_message(msg_ui_thread_get_data_handle(), (msg_message_id_t)data->msg_id, msgInfo, sendOpt);
+                               if (*ret != MSG_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message() is failed : err = %d, msgid = %d", *ret, data->msg_id);
+                                       msg_release_struct(&msgInfo);
+                                       msg_release_struct(&sendOpt);
+                                       goto MSG_FAIL;
+                               }
+
+                               msg_set_int_value(msgInfo, MSG_MESSAGE_STORAGE_ID_INT, MSG_STORAGE_PHONE);
+                               msg_id = msg_add_message(msg_ui_thread_get_data_handle(), msgInfo, sendOpt);
+
+                               msg_release_struct(&msgInfo);
+                               msg_release_struct(&sendOpt);
+                       }
+
+MSG_FAIL:
+                       ecore_thread_feedback(thread, (void *)ret);
+
+                       if (*ret != MSG_SUCCESS)
+                               return;
+               } else {
+                       *ret = MSG_ERR_NULL_POINTER;
+                       ecore_thread_feedback(thread, (void *)ret);
+                       return;
+               }
+       }
+}
+
+static void __msg_ui_thread_multi_action_finish(PMSG_THREAD_LIST_DATA pListData)
+{
+       D_ENTER;
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       msg_ui_thread_show_action_finish_info(pListData, pListData->action_type, NULL);
+
+       pListData->multi_action_thread = NULL;
+       pListData->action_type = THREAD_ACTION_NONE;
+       pListData->include_protected_msg = false;
+
+       msg_ui_thread_show_normal_mode(pListData);
+
+       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+               msg_ui_thread_list_load(pListData, FALSE);
+       } else {
+               PMSG_THREAD_LIST_DATA pDefaultListData = msg_ui_thread_get_default_list();
+
+               msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+
+               if (pDefaultListData)
+                       msg_ui_thread_list_load(pDefaultListData, FALSE); //might be changed
+       }
+}
+
+void msg_ui_thread_ctlbar_checkbox_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item* it_sweep = NULL;
+       char buf[DEF_BUF_LEN_S] = {0};
+
+       pListData->view_mode = THREAD_EDIT_VIEW;
+       pListData->check_cnt = 0;
+       pListData->sel_index = 0;
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+       if (it_sweep) {
+               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+               elm_genlist_item_update(it_sweep);
+       }
+
+       elm_genlist_decorate_mode_set(pListData->genlist, EINA_TRUE);
+       elm_genlist_select_mode_set(pListData->genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+       if (pListData->list_type == THREAD_SIM_LIST_TYPE || pListData->list_type == THREAD_SPAM_LIST_TYPE)
+               snprintf(buf, sizeof(buf), "%s",  dgettext("sys_string", "IDS_COM_SK_EDIT"));
+       else
+               snprintf(buf, sizeof(buf), "%s",  dgettext("sys_string", "IDS_COM_SK_DELETE"));
+
+       elm_object_item_text_set(pListData->nf_it, buf);
+
+       __msg_ui_thread_add_navi_select_all_ly(pListData);
+       msg_ui_thread_set_navi_toolbar_item(pListData);
+
+       evas_object_hide(pListData->search_btn);
+       elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
+
+       MSG_UI_LEAVE();
+}
+
+static void __msg_ui_thread_add_navi_select_all_ly(PMSG_THREAD_LIST_DATA pListData)
+{
+       if (!pListData) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT,"[ASSERT] pListData is NULL");
+               return;
+       }
+
+       if (!pListData->sel_all_ly) {
+               pListData->sel_all_ly = elm_layout_add(pListData->content_ly);
+               elm_layout_theme_set(pListData->sel_all_ly, "genlist", "item", "select_all/default");
+               evas_object_size_hint_weight_set(pListData->sel_all_ly, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+               evas_object_size_hint_align_set(pListData->sel_all_ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_event_callback_add(pListData->sel_all_ly, EVAS_CALLBACK_MOUSE_DOWN, __msg_ui_thread_sel_all_ly_mouse_down_cb, pListData);
+
+               pListData->sel_all_box = elm_check_add(pListData->sel_all_ly);
+               elm_check_state_pointer_set(pListData->sel_all_box, &pListData->sel_all_checked);
+               evas_object_propagate_events_set(pListData->sel_all_box, EINA_FALSE);
+               evas_object_smart_callback_add(pListData->sel_all_box, "changed", msg_ui_thread_sel_all_clicked_cb, pListData);
+               evas_object_show(pListData->sel_all_box);
+
+               elm_object_part_content_set(pListData->sel_all_ly, "elm.icon", pListData->sel_all_box);
+               elm_object_part_text_set(pListData->sel_all_ly, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+       }
+
+       if (msg_ui_thread_rotation_get() == true) {
+               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+               evas_object_hide(pListData->searchbar);
+       } else {
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+       }
+       evas_object_show(pListData->sel_all_ly);
+       elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->sel_all_ly);
+}
+
+static void __msg_ui_thread_sel_all_ly_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       pListData->sel_all_checked = !pListData->sel_all_checked;
+       elm_check_state_pointer_set(pListData->sel_all_box, &pListData->sel_all_checked);
+
+       msg_ui_thread_sel_all_clicked_cb(pListData, NULL, NULL);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_ctlbar_spam_setting_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item* it_sweep = NULL;
+
+       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+       if (it_sweep) {
+               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       msg_ui_thread_launch_spam_setting(pListData);
+}
+
+
+void msg_ui_thread_ctlbar_compose_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item* it_sweep = NULL;
+       service_h svc_handle = NULL;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return;
+       }
+
+       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+       if (it_sweep) {
+               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       if (msg_ui_load_composer_ug(svc_handle, MSG_COMPOSER_UG_TYPE_COMPOSER) == MSG_UI_RET_ERR)
+               D_MSG("Failed to load composer ug");
+
+       service_destroy(svc_handle);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_ctlbar_message_box_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       Elm_Object_Item* it_sweep = NULL;
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+       if (it_sweep) {
+               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       // Create pop-up (  Spam / SIM (it will be extended) )
+       Evas_Object *ctx_popup = NULL;
+       ctx_popup = elm_ctxpopup_add(pData->navi_frame);
+       evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_thread_ctxpopup_dismissed_cb, pListData);
+
+       if (pListData->item_cnt > 0)
+               elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_SK_DELETE"), NULL, msg_ui_thread_ctlbar_checkbox_cb, pListData);
+
+
+       elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData);
+       elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData);
+       elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData);
+
+       // move ctx popup
+       Evas_Coord x, y, w, h;
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       evas_object_move(ctx_popup, x , y);
+
+       evas_object_show(ctx_popup);
+       pListData->popup = ctx_popup;
+
+       MSG_UI_LEAVE();
+}
+
+static void __msg_ui_thread_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       MSG_UI_LEAVE();
+}
+
+static void __msg_ui_thread_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       ThreadMsgListType list_type = THREAD_NORMAL_LIST_TYPE;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       const char *label = elm_object_item_text_get((Elm_Object_Item *)event_info);
+
+       if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES")) == 0) {
+               list_type = THREAD_SPAM_LIST_TYPE;
+       } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES")) == 0) {
+               list_type = THREAD_SIM_LIST_TYPE;
+       } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES")) == 0) {
+               list_type = THREAD_CBMSG_LIST_TYPE;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[ERROR] invalid list type");
+               return;
+       }
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       msg_ui_thread_load_message_box(list_type);
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item *it;
+
+       void* item_data = NULL;
+
+       if (pListData->sel_all_checked) {
+               pListData->check_cnt = pListData->item_cnt;
+       } else {
+               pListData->check_cnt = 0;
+               pListData->chk_list = eina_list_free(pListData->chk_list);
+       }
+
+       it = elm_genlist_first_item_get(pListData->genlist);
+
+       while (it) {
+               if (elm_genlist_item_parent_get(it) == NULL) {
+                       it = elm_genlist_item_next_get(it);
+                       continue;
+               }
+
+               item_data = elm_object_item_data_get(it);
+               if (item_data) {
+                       if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD) {
+                               PMSG_APP_THREAD_DATA_S data = (PMSG_APP_THREAD_DATA_S)item_data;
+                               data->is_check = pListData->sel_all_checked;
+                       } else {
+                               PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+                               data->is_check = pListData->sel_all_checked;
+                       }
+               }
+
+               if (pListData->sel_all_checked && !eina_list_data_find(pListData->chk_list, item_data))
+                       pListData->chk_list = eina_list_append(pListData->chk_list, item_data);
+
+               it = elm_genlist_item_next_get(it);
+       }
+
+       elm_genlist_realized_items_update(pListData->genlist);
+       msg_ui_thread_show_select_info(pListData);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_list_checked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       void* item_data = NULL;
+       Eina_Bool is_check = EINA_FALSE;
+
+       item_data = evas_object_data_get(obj, "item_data");
+
+       if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD) {
+               PMSG_APP_THREAD_DATA_S data = (PMSG_APP_THREAD_DATA_S)item_data;
+               is_check = data->is_check;
+       } else {
+               PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+               is_check = data->is_check;
+       }
+
+       if (is_check) {
+               pListData->check_cnt++;
+               if (!eina_list_data_find(pListData->chk_list, item_data))
+                       pListData->chk_list = eina_list_append(pListData->chk_list, item_data);
+       } else {
+               pListData->check_cnt--;
+               pListData->chk_list = eina_list_remove(pListData->chk_list, item_data);
+       }
+
+       if (pListData->item_cnt == pListData->check_cnt)
+               elm_check_state_set(pListData->sel_all_box, EINA_TRUE);
+       else
+               elm_check_state_set(pListData->sel_all_box, EINA_FALSE);
+
+       msg_ui_thread_show_select_info(pListData);
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       if (!data)
+               return;
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (pData->detail_layout) {
+               if (pData->isRotate == true)
+                       elm_naviframe_item_pop(pData->split_data->navi_frame);
+               else
+                       elm_naviframe_item_pop(pData->navi_frame);
+               pData->detail_layout = NULL;
+
+               if (pListData->sel_msg_id) {
+                       msg_ui_thread_list_msg_item_update(pListData, pListData->sel_msg_id);
+
+                       pListData->sel_gen_item = NULL;
+                       pListData->sel_msg_id = 0;
+               }
+
+               if (pData->isRotate == false)
+                       return;
+       }
+
+       if (pListData->search_mode == THREAD_SEARCH_ON) {
+               msg_ui_thread_cancel_search_mode(pListData);
+               return;
+       }
+
+       if (pListData->view_mode == THREAD_EDIT_VIEW) {
+               if (pData->isIncomingMsg == true) {
+                       if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG)
+                               msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+                       else
+                               msg_ui_thread_list_load(pListData, FALSE);
+                       pData->isIncomingMsg = false;
+               }
+
+               msg_ui_thread_show_normal_mode(pListData);
+       } else {
+               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+                       elm_win_lower(pData->win_main);
+               } else {
+                       PMSG_THREAD_LIST_DATA pPrevList = msg_ui_thread_get_prev_list(pListData);
+                       msg_ui_thread_set_navi_toolbar_item(pPrevList);
+
+                       elm_naviframe_item_pop(pData->navi_frame);
+                       elm_genlist_clear(pListData->genlist);
+                       msg_ui_thread_destroy_thread_list_data(pListData);
+
+                       if (pData->isRotate == true) {
+                               msg_ui_thread_destroy_split_data(pData->split_data);
+                               msg_ui_thread_split_view_show(pData);
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_search_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       if (!data)
+               return;
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Evas_Object *entry = NULL;
+
+       if (pListData->item_cnt <= 0)
+               return;
+
+       edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+       elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+
+       entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
+       elm_object_focus_set(entry, EINA_TRUE);
+
+       evas_object_hide(pListData->search_btn);
+       elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
+       msg_ui_thread_set_navi_toolbar_item(pListData);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ASSERT, !data, "[ASSERT] data is NULL");
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item* it_sweep = NULL;
+
+       pListData->search_mode = THREAD_SEARCH_ON;
+       elm_genlist_mode_set(pListData->genlist, ELM_LIST_COMPRESS);
+
+       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+       if (it_sweep) {
+               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,show", "elm");
+
+       elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,hide", "elm");
+       elm_object_signal_emit(pListData->searchbar, "cancel,in", "");
+
+       evas_object_smart_callback_add(obj, "changed",  msg_ui_thread_searchbar_entry_change_cb, pListData);
+       evas_object_smart_callback_add(obj, "preedit,changed", msg_ui_thread_searchbar_entry_change_cb, pListData);
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_searchbar_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       evas_object_smart_callback_del(obj, "changed", msg_ui_thread_searchbar_entry_change_cb);
+
+       if (!data)
+               return;
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,hide", "elm");
+       msg_ui_thread_set_navi_toolbar_item(pListData);
+
+       if (elm_entry_is_empty(obj)) {
+               elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm");
+               elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_searchbar_entry_change_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       if (!data)
+               return;
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       /* Make timer for check user's input */
+       if (pListData->search_timer) {
+               ecore_timer_del(pListData->search_timer);
+               pListData->search_timer = NULL;
+       }
+
+       pListData->search_timer = ecore_timer_add(0.2, __msg_ui_thread_searchbar_entry_timer_cb, pListData);
+
+       if (elm_object_focus_get(obj)) {
+               if (elm_entry_is_empty(obj))
+                       elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,hide", "elm");
+               else
+                       elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,show", "elm");
+       }
+
+       D_LEAVE;
+}
+
+static Eina_Bool __msg_ui_thread_searchbar_entry_timer_cb(void *data)
+{
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       msg_ui_thread_search_msg_list_load(pListData);
+       if (pListData->search_timer) {
+               ecore_timer_del(pListData->search_timer);
+               pListData->search_timer = NULL;
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+
+       if (!data)
+               return;
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       if (pListData->search_timer) {
+               ecore_timer_del(pListData->search_timer);
+               pListData->search_timer = NULL;
+       }
+
+       evas_object_hide(obj);
+       msg_ui_thread_cancel_search_mode(pListData);
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_searchbar_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       D_ENTER;
+
+       if (!data)
+               return;
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Evas_Object *entry = NULL;
+
+       if (pListData->search_timer) {
+               ecore_timer_del(pListData->search_timer);
+               pListData->search_timer = NULL;
+       }
+
+       entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
+       elm_object_text_set(entry, "");
+
+       elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,hide", "elm");
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_sweep_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !obj || !data);
+
+       PMSG_THREAD_LIST_DATA pListData = data;
+       char address[DEF_THREAD_ADDR_LEN+1] = {0,};
+       Elm_Object_Item *it = NULL;
+
+       const char *label = elm_object_text_get(obj);
+       it = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+
+       if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_SK_DELETE")) == 0) {
+               msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_DELETE, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
+               return;
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE")) == 0) {
+               msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_RESTORE, dgettext(MESSAGE_PKGNAME, "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"));
+               return;
+       }
+
+       if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD) {
+               PMSG_APP_THREAD_DATA_S sel_peer_item  = NULL;
+               sel_peer_item = (PMSG_APP_THREAD_DATA_S)evas_object_data_get(obj, "sel_peer_data");
+
+               msg_struct_list_s addrList;
+
+               memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+               msg_get_address_list(msg_ui_thread_get_data_handle(), sel_peer_item->thread_id, &addrList);
+
+               if (addrList.nCount == 1) {
+                       char strNumber[DEF_THREAD_ADDR_LEN + 1] = {0,};
+
+                       msg_get_str_value(addrList.msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+                       strncpy(address, strNumber, DEF_THREAD_ADDR_LEN);
+
+                       if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_CALL")) == 0)
+                               msg_ui_thread_launch_voice_call(address);
+                       else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL")) == 0)
+                               msg_ui_thread_launch_video_call(address);
+                       else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK")) == 0) {
+                               char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
+                               char *text = g_strdup_printf(szbuf, strNumber);
+
+                               msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_BLOCK, text);
+                               free(text);
+                               return;
+                       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK")) == 0) {
+                               if(msg_common_delete_block_number(msg_ui_thread_get_data_handle(), address) == MSG_SUCCESS)
+                                       msg_ui_thread_show_action_finish_info(pListData, THREAD_ACTION_UNBLOCK, address);
+                       }
+               } else if (addrList.nCount > 1) {
+                       msg_ui_thread_addr_select_popup(pListData, label, &addrList);
+               }
+               msg_release_list_struct(&addrList);
+       } else {
+               PMSG_APP_THREAD_MSG_DATA_S sel_peer_item  = NULL;
+               sel_peer_item = (PMSG_APP_THREAD_MSG_DATA_S)evas_object_data_get(obj, "sel_peer_data");
+
+               msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+               msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+               msg_error_t err =  MSG_SUCCESS;
+
+               err = msg_get_message(msg_ui_thread_get_data_handle(), (msg_message_id_t)sel_peer_item->msg_id, msgInfo, sendOpt);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message() is failed : err = %d, msgid = %d", err, sel_peer_item->msg_id);
+                       msg_release_struct(&msgInfo);
+                       msg_release_struct(&sendOpt);
+                       return;
+               }
+
+               if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE")) == 0) {
+                          int msg_id = 0;
+
+                          msg_set_int_value(msgInfo, MSG_MESSAGE_STORAGE_ID_INT, MSG_STORAGE_PHONE);
+                          msg_id = msg_add_message(msg_ui_thread_get_data_handle(), msgInfo, sendOpt);
+                          if (msg_id >= 0)
+                               msg_ui_thread_show_action_finish_info(pListData, THREAD_ACTION_COPY_TO_PHONE, NULL);
+                  } else {
+                       char strNumber[DEF_THREAD_ADDR_LEN + 1] = {0,};
+                       msg_struct_list_s *addr_list = NULL;
+
+                       msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+                       msg_get_str_value(addr_list->msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+                       strncpy(address, strNumber, DEF_THREAD_ADDR_LEN);
+
+                       if (sel_peer_item->addr_cnt == 1) {
+                               if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_CALL")) == 0)
+                                       msg_ui_thread_launch_voice_call(address);
+                               else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL")) == 0)
+                                       msg_ui_thread_launch_video_call(address);
+                               else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK")) == 0) {
+                                       char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
+                                       char *text = g_strdup_printf(szbuf, strNumber);
+
+                                       msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_BLOCK, text);
+                                       free(text);
+                                       msg_release_struct(&msgInfo);
+                                       msg_release_struct(&sendOpt);
+                                       return;
+                               } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK")) == 0) {
+                                       if (msg_common_delete_block_number(msg_ui_thread_get_data_handle(), address) == MSG_SUCCESS)
+                                               msg_ui_thread_show_action_finish_info(pListData, THREAD_ACTION_UNBLOCK, address);
+                               }
+                       } else {
+                               msg_ui_thread_addr_select_popup(pListData, label, addr_list);
+                       }
+               }
+
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+       }
+
+       if (it) {
+               elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+}
+
+void msg_ui_thread_timezone_change_cb(keynode_t *key, void *data)
+{
+       D_ENTER;
+
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+
+       char *timezone_id = NULL;
+       UChar utimezone_id[DEF_BUF_LEN] = {0,};
+       UErrorCode status = U_ZERO_ERROR;
+       int i = 0;
+
+       timezone_id = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+
+       if (!timezone_id)
+               return;
+
+       u_uastrcpy(utimezone_id, timezone_id);
+
+       ucal_setDefaultTimeZone(utimezone_id, &status);
+
+       if (U_FAILURE(status))
+               return;
+
+       msg_ui_thread_get_locale(pData);
+       msg_ui_thread_get_time_format(pData);
+
+       if (pData->date_ptn_default) {
+               free(pData->date_ptn_default);
+               pData->date_ptn_default = NULL;
+       }
+
+       if (pData->date_ptn_year) {
+               free(pData->date_ptn_year);
+               pData->date_ptn_year = NULL;
+       }
+
+       if (pData->time_12h_ptn) {
+               free(pData->time_12h_ptn);
+               pData->time_12h_ptn = NULL;
+       }
+
+       if (pData->time_24h_ptn) {
+               free(pData->time_24h_ptn);
+               pData->time_24h_ptn = NULL;
+       }
+
+       pData->time_12h_ptn = msg_common_get_date_best_pattern(pData->locale, MSG_UI_TIME_PATTERN_12H);
+       pData->time_24h_ptn = msg_common_get_date_best_pattern(pData->locale, MSG_UI_TIME_PATTERN_24H);
+       pData->date_ptn_default = msg_common_get_date_best_pattern(pData->locale, MSG_UI_DATE_PATTERN_DEFAULT);
+       pData->date_ptn_year = msg_common_get_date_best_pattern(pData->locale, MSG_UI_DATE_PATTERN_YEAR);
+
+       for (i = 0; i < MSG_THREAD_LIST_MAX_COUNT; i++) {
+               if (pData->list_data[i] != NULL) {
+                       pListData = pData->list_data[i];
+                       elm_genlist_realized_items_update(pListData->genlist);
+               }
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_gl_mode_right(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !data || !event_info);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, pListData->view_mode != THREAD_NORMAL_VIEW);
+
+       Elm_Object_Item *it = (Elm_Object_Item *)elm_genlist_decorated_item_get(obj);
+       if (it) {
+               if (it == event_info)
+                       return;
+
+               elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       if (pListData->search_mode == THREAD_SEARCH_OFF) {
+               elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_TRUE);
+               elm_genlist_item_select_mode_set(event_info, ELM_OBJECT_SELECT_MODE_NONE);
+       }
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_gl_mode_left(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !data || !event_info);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, pListData->view_mode != THREAD_NORMAL_VIEW);
+
+       if (pListData->search_mode == THREAD_SEARCH_OFF) {
+               elm_genlist_item_decorate_mode_set(event_info, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(event_info, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       MSG_UI_LEAVE();
+}
diff --git a/thread/src/msg-ui-thread-list.c b/thread/src/msg-ui-thread-list.c
new file mode 100755 (executable)
index 0000000..5e1449b
--- /dev/null
@@ -0,0 +1,2019 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "msg-ui-thread-main.h"
+
+static int __msg_ui_thread_init_genlist(PMSG_THREAD_LIST_DATA pListData);
+static char *__msg_ui_thread_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_thread_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_thread_gl_del(void *data, Evas_Object *obj);
+static void __msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_info);
+Eina_Bool __msg_ui_thread_list_load_remain_item(void *data);
+void __msg_ui_thread_create_bubble_by_msgid(PMSG_THREAD_LIST_DATA pListData, PMSG_APP_THREAD_MSG_DATA_S item_data);
+
+
+static int __msg_ui_thread_init_genlist(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (pListData->genlist)
+               elm_genlist_clear(pListData->genlist);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+void msg_ui_thread_set_thread_data(PMSG_THREAD_LIST_DATA pListData, PMSG_APP_THREAD_DATA_S thread_data, msg_struct_t msgThreadInfo)
+{
+       if (thread_data == NULL || msgThreadInfo == NULL)
+               return;
+
+       int thread_id = 0, unreadCnt = 0, msgType = 0, direction = 0, smsCnt = 0, mmsCnt = 0;
+       char name[DEF_THREAD_NAME_LEN+1] = {0,};
+       char threadData[DEF_BUF_LEN_S+1] = {0,};
+
+       msg_get_int_value(msgThreadInfo, MSG_THREAD_ID_INT, &thread_id);
+       thread_data->thread_id = thread_id;
+
+       msg_get_str_value(msgThreadInfo, MSG_THREAD_NAME_STR, name, DEF_THREAD_NAME_LEN);
+       bzero(thread_data->thread_name, sizeof(thread_data->thread_name));
+       strncpy(thread_data->thread_name, name, DEF_THREAD_NAME_LEN);
+
+       msg_get_str_value(msgThreadInfo, MSG_THREAD_MSG_DATA_STR, threadData, DEF_BUF_LEN_S);
+       bzero(thread_data->thread_data, sizeof(thread_data->thread_data));
+       strncpy(thread_data->thread_data, threadData, DEF_BUF_LEN_S);
+
+       if (thread_data->thread_time == NULL)
+               thread_data->thread_time = (time_t *) calloc(1, sizeof(time_t));
+
+       if (thread_data->thread_time) {
+               int msgTime = 0;
+               msg_get_int_value(msgThreadInfo, MSG_THREAD_MSG_TIME_INT, &msgTime);
+               bzero(thread_data->thread_time, sizeof(time_t));
+               memcpy(thread_data->thread_time, &msgTime, sizeof(time_t));
+       }
+
+       msg_get_int_value(msgThreadInfo, MSG_THREAD_MSG_TYPE_INT, &msgType);
+       thread_data->msg_type =  msgType;
+       msg_get_int_value(msgThreadInfo, MSG_THREAD_MMS_COUNT_INT, &mmsCnt);
+       thread_data->mms_cnt = mmsCnt;
+       msg_get_int_value(msgThreadInfo, MSG_THREAD_SMS_COUNT_INT, &smsCnt);
+       thread_data->sms_cnt = smsCnt;
+       msg_get_int_value(msgThreadInfo, MSG_THREAD_DIRECTION_INT, &direction);
+       thread_data->direction = direction;
+
+       if (pListData && pListData->sel_thread_id == thread_data->thread_id) {
+               thread_data->unread_cnt = 0;
+       } else {
+               msg_get_int_value(msgThreadInfo, MSG_THREAD_UNREAD_COUNT_INT, &unreadCnt);
+               thread_data->unread_cnt = unreadCnt;
+       }
+}
+
+void msg_ui_thread_set_msg_data(PMSG_APP_THREAD_MSG_DATA_S msg_data, msg_struct_t msgInfo)
+{
+       if (msg_data == NULL || msgInfo == NULL)
+               return;
+
+       int msgId = 0;
+       int msgType = 0;
+       int direction = 0;
+       bool read_status = 0;
+       msg_struct_list_s *addr_list = NULL;
+       char strNumber[DEF_THREAD_ADDR_LEN+1] = {0,};
+       char strName[DEF_THREAD_NAME_LEN+1] = {0,};
+       int contact_id = 0;
+       int i = 0;
+
+       /* msg_id */
+       msg_get_int_value(msgInfo, MSG_MESSAGE_ID_INT, &msgId);
+       msg_data->msg_id = msgId;
+       /* msg_type */
+       msg_get_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, &msgType);
+       msg_data->msg_type = msgType;
+       /* read status */
+       msg_get_bool_value(msgInfo, MSG_MESSAGE_READ_BOOL, &read_status);
+       msg_data->is_read = read_status;
+
+       msg_get_int_value(msgInfo, MSG_MESSAGE_DIRECTION_INT, &direction);
+       msg_data->direction = direction;
+
+       /* contact ID, display name  */
+       msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+
+       msg_data->addr_info = (PMSG_APP_THREAD_ADDR_INFO_S *)calloc(1, sizeof(PMSG_APP_THREAD_ADDR_INFO_S) * addr_list->nCount);
+       msg_data->addr_cnt = addr_list->nCount;
+
+       for (i = 0; i < addr_list->nCount; i++) {
+               msg_data->addr_info[i] = (PMSG_APP_THREAD_ADDR_INFO_S)calloc(1, sizeof(MSG_APP_THREAD_ADDR_INFO_S));
+
+               msg_get_str_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+               msg_get_str_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, strName, DEF_THREAD_NAME_LEN);
+               msg_get_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+
+               msg_data->addr_info[i]->contact_id = contact_id;
+
+               if (strlen(strName) > 0)
+                       strncpy(msg_data->addr_info[i]->display_name, strName, sizeof(msg_data->addr_info[i]->display_name) -1);
+               else
+                       strncpy(msg_data->addr_info[i]->display_name, "", sizeof(msg_data->addr_info[i]->display_name)-1);
+
+               if (strlen(strNumber) > 0)
+                       strncpy(msg_data->addr_info[i]->address, strNumber, sizeof(msg_data->addr_info[i]->address)-1);
+               else
+                       strncpy(msg_data->addr_info[i]->address, "", sizeof(msg_data->addr_info[i]->address)-1);
+       }
+
+       /*body*/
+       const char *pContent = NULL;
+       int msgSize = 0;
+       msg_get_int_value(msgInfo, MSG_MESSAGE_DATA_SIZE_INT, &msgSize);
+       char msgText[msgSize + 1];
+       char subject[DEF_BUF_LEN_S+1] = {0,};
+       memset(msgText, 0, msgSize + 1);
+
+       msg_get_str_value(msgInfo, MSG_MESSAGE_SMS_DATA_STR, msgText, msgSize);
+       msg_get_str_value(msgInfo, MSG_MESSAGE_SUBJECT_STR, subject, DEF_BUF_LEN_S);
+
+       if (msg_data->msg_type >= MSG_TYPE_MMS && msg_data->msg_type <= MSG_TYPE_MMS_NOTI) {
+               if (strlen(subject) > 0)
+                       pContent = subject;
+               else
+                       pContent = msgText;
+       } else {
+               pContent = msgText;
+       }
+
+       if (strlen(pContent) > 0)
+               strncpy(msg_data->msg_body, pContent, sizeof(msg_data->msg_body)-1);
+       else
+               strncpy(msg_data->msg_body, "", sizeof(msg_data->msg_body)-1);
+
+       msg_data->msg_time = (time_t *)calloc(1, sizeof(time_t));
+       if (msg_data->msg_time != NULL) {
+               int msgTime = 0;
+               msg_get_int_value(msgInfo, MSG_MESSAGE_DISPLAY_TIME_INT, &msgTime);
+               memcpy(msg_data->msg_time, &msgTime, sizeof(time_t));
+       }
+}
+
+static char *__msg_ui_thread_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       PMSG_APP_THREAD_DATA_S item_data = (PMSG_APP_THREAD_DATA_S) data;
+       char buf[DEF_BUF_LEN] = { 0, };
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !item_data, NULL);
+
+       if (g_strcmp0(part, "elm.text.1") == 0) {
+               if (item_data->thread_name[0] != '\0')
+                       snprintf(buf, sizeof(buf), "%s", item_data->thread_name);
+               else
+                       snprintf(buf, sizeof(buf), dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+       } else if (g_strcmp0(part, "elm.text.2") == 0) {
+               msg_ui_thread_make_time_string(item_data->thread_time, buf, sizeof(buf));
+       } else if (g_strcmp0(part, "elm.text.3") == 0) {
+               int idx = 0;
+               char msg[DEF_BUF_LEN] = { 0, };
+
+               if (item_data->thread_data[0] != '\0') {
+                       strncpy(msg, item_data->thread_data, sizeof(msg) - 1);
+                       while (msg[idx]) {
+                               if (g_ascii_iscntrl(msg[idx]))
+                                       msg[idx] = ' ';
+                               idx++;
+                       }
+                       snprintf(buf, sizeof(buf), "%s", msg);
+               } else {
+                       if (item_data->msg_type >= MSG_TYPE_MMS && item_data->msg_type <= MSG_TYPE_MMS_NOTI)
+                               snprintf(buf, sizeof(buf), "(%s)", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_NO_SUBJECT"));
+               }
+       } else if (g_strcmp0(part, "elm.text.4") == 0) {
+               if (item_data->unread_cnt > 0) {
+                       if (item_data->unread_cnt > 999)
+                               snprintf(buf, sizeof(buf), "...");
+                       else
+                               snprintf(buf, sizeof(buf), "%d", item_data->unread_cnt);
+               } else {
+                       msg_struct_list_s draft_list;
+                       msg_error_t err = MSG_SUCCESS;
+
+                       err = msg_get_message_list(msg_ui_thread_get_data_handle(), MSG_DRAFT_ID, item_data->thread_id, 0, MSG_STORAGE_PHONE, &draft_list);
+
+                       if (err != MSG_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message_list() is failed = %d", err);
+                               return NULL;
+                       }
+
+                       if (draft_list.nCount > 0)
+                               snprintf(buf, sizeof(buf), "%s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_DRAFT_ABB"));
+
+                       msg_release_list_struct(&draft_list);
+               }
+       }
+
+       return strdup(buf);
+}
+
+static Evas_Object *__msg_ui_thread_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       PMSG_APP_THREAD_DATA_S item_data = (PMSG_APP_THREAD_DATA_S) data;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !item_data, NULL);
+
+       Evas_Object *ic = NULL;
+       bool bNumExist = false;
+       bool isBlock = true;
+
+       pListData = msg_ui_thread_get_current_list();
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !pListData, NULL);
+
+       if (g_strcmp0(part, "elm.slide.swallow.1") == 0 || g_strcmp0(part, "elm.slide.swallow.2") == 0 || g_strcmp0(part, "elm.slide.swallow.3") == 0) {
+               int i = 0;
+               msg_struct_list_s addrList;
+
+               memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+               msg_get_address_list(msg_ui_thread_get_data_handle(), item_data->thread_id, &addrList);
+
+               for (i=0; i<addrList.nCount; i++) {
+                       int addressType = 0;
+
+                       msg_get_int_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, &addressType);
+                       if (addressType == MSG_ADDRESS_TYPE_PLMN) {
+                               bNumExist = true;
+                               break;
+                       }
+               }
+
+               for (i=0; i<addrList.nCount; i++) {
+                       char address[DEF_THREAD_ADDR_LEN+1] = {0,};
+
+                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, address, DEF_THREAD_ADDR_LEN);
+                       msg_common_check_block_number(msg_ui_thread_get_data_handle(), address, &isBlock);
+                       if (isBlock == false)
+                               break;
+               }
+               msg_release_list_struct(&addrList);
+       }
+
+       if (g_strcmp0(part, "elm.icon.1") == 0) {
+               if (item_data->msg_type == MSG_TYPE_SMS_CB) {
+                       ic = elm_icon_add(obj);
+                       elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_CB_ICON);
+               } else if (item_data->msg_type == MSG_TYPE_SMS_WAPPUSH) {
+                       ic = elm_icon_add(obj);
+                       elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_PUSH_ICON);
+               } else if (item_data->msg_type == MSG_TYPE_SMS_SYNCML) {
+                       ic = elm_icon_add(obj);
+                       elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_OTA_ICON);
+               }
+
+               if (ic) {
+                       evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+                       evas_object_show(ic);
+               }
+       } else if (g_strcmp0(part, "elm.slide.swallow.1") == 0) {
+               ic = elm_button_add(obj);
+               elm_object_style_set(ic, "sweep/multiline");
+               elm_object_text_set(ic, dgettext("sys_string", "IDS_COM_BODY_CALL"));
+               evas_object_data_set(ic, "sel_peer_data", (void *) item_data);
+               evas_object_smart_callback_add(ic, "clicked", msg_ui_thread_sweep_btn_cb, (void *) pListData);
+
+               if (bNumExist == false)
+                       elm_object_disabled_set(ic, EINA_TRUE);
+       } else if (g_strcmp0(part, "elm.slide.swallow.2") == 0) {
+               ic = elm_button_add(obj);
+               elm_object_style_set(ic, "sweep/multiline");
+               elm_object_text_set(ic, dgettext("sys_string", "IDS_COM_SK_VIDEO_CALL"));
+               evas_object_data_set(ic, "sel_peer_data", (void *) item_data);
+               evas_object_smart_callback_add(ic, "clicked", msg_ui_thread_sweep_btn_cb, (void *) pListData);
+
+               if (bNumExist == false)
+                       elm_object_disabled_set(ic, EINA_TRUE);
+       } else if (g_strcmp0(part, "elm.slide.swallow.3") == 0) {
+               ic = elm_button_add(obj);
+               elm_object_style_set(ic, "sweep/multiline");
+
+               if (isBlock == false)
+                       elm_object_text_set(ic, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"));
+               else
+                       elm_object_text_set(ic, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"));
+
+               evas_object_data_set(ic, "sel_peer_data", (void *) item_data);
+               evas_object_smart_callback_add(ic, "clicked", msg_ui_thread_sweep_btn_cb, (void *) pListData);
+
+               if (bNumExist == false)
+                       elm_object_disabled_set(ic, EINA_TRUE);
+       } else if (g_strcmp0(part, "elm.slide.swallow.4") == 0) {
+               ic = elm_button_add(obj);
+               elm_object_style_set(ic, "sweep/delete");
+               elm_object_text_set(ic, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+               evas_object_data_set(ic, "sel_peer_data", (void *) item_data);
+               evas_object_smart_callback_add(ic, "clicked", msg_ui_thread_sweep_btn_cb, (void *) pListData);
+       }
+
+       if (elm_genlist_decorate_mode_get(obj)) {
+               if (!strcmp(part, "elm.edit.icon.1")) {
+                       ic = elm_check_add(obj);
+                       elm_check_state_pointer_set(ic, &item_data->is_check);
+                       evas_object_data_set(ic, "item_data", item_data);
+                       evas_object_smart_callback_add(ic, "changed", msg_ui_thread_list_checked_cb, pListData);
+                       item_data->chk = ic;
+               }
+       }
+
+       return ic;
+}
+
+static void __msg_ui_thread_gl_del(void *data, Evas_Object *obj)
+{
+       PMSG_APP_THREAD_DATA_S del_data = (PMSG_APP_THREAD_DATA_S) data;
+
+       if (del_data) {
+               if (del_data->thread_time) {
+                       free(del_data->thread_time);
+                       del_data->thread_time = NULL;
+               }
+               free(del_data);
+               del_data = NULL;
+       }
+}
+
+static void __msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA) data;
+       Elm_Object_Item *item = NULL;
+       Elm_Object_Item* it_sweep = NULL;
+       PMSG_APP_THREAD_DATA_S item_data = NULL;
+       service_h svc_handle = NULL;
+
+       item = (Elm_Object_Item *) event_info;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, !item, "Item is  NULL or Item is not Message item\n");
+
+       item_data = (PMSG_APP_THREAD_DATA_S) elm_object_item_data_get(item);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, item_data == NULL, "item_data is NULL");
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, pListData->sel_thread_id == item_data->thread_id, "Already selected item.");
+
+       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+       if (it_sweep) {
+               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       if (pListData->search_mode == THREAD_SEARCH_ON && msg_ui_thread_rotation_get() == FALSE)
+               msg_ui_thread_show_toolbar(pListData);
+
+       switch (pListData->view_mode) {
+               case THREAD_NORMAL_VIEW:
+               case THREAD_UNLOAD_VIEW:
+                       pListData->sel_gen_item = item;
+                       pListData->sel_thread_id = item_data->thread_id;
+
+                       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                               D_EMSG("service_create() is failed !!");
+                       } else {
+                               msg_struct_list_s draft_list;
+                               int draft_id = 0;
+                               msg_error_t err = MSG_SUCCESS;
+                               MessageComposerUgType ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+
+                               err = msg_get_message_list(msg_ui_thread_get_data_handle(), MSG_DRAFT_ID, item_data->thread_id, 0, MSG_STORAGE_PHONE, &draft_list);
+                               if (err != MSG_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message_list() is failed = %d", err);
+                                       service_destroy(svc_handle);
+                                       return;
+                               }
+
+                               if (draft_list.nCount > 0 && (item_data->sms_cnt + item_data->mms_cnt) == 1) {
+                                       msg_get_int_value(draft_list.msg_struct_info[0], MSG_MESSAGE_ID_INT, &draft_id);
+                                       msg_ui_thread_get_composer_data(draft_id, svc_handle);
+                                       ug_type = MSG_COMPOSER_UG_TYPE_COMPOSER;
+                               } else {
+                                       msg_ui_thread_get_bubble_data(item_data, svc_handle);
+                                       ug_type = MSG_COMPOSER_UG_TYPE_VIEWER;
+                               }
+
+                               msg_release_list_struct(&draft_list);
+
+                               if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR) {
+                                       D_MSG("Failed to load composer ug");
+
+                                       pListData->sel_gen_item = NULL;
+                                       pListData->sel_thread_id = 0;
+                               }
+
+                               service_destroy(svc_handle);
+                       }
+
+                       item_data->unread_cnt = 0;
+                       elm_genlist_item_item_class_update(item, &pListData->itc_default);
+                       elm_genlist_item_update(item);
+                       break;
+               case THREAD_EDIT_VIEW:
+                       elm_genlist_item_selected_set(item, false);
+                       item_data->is_check = !item_data->is_check;
+                       elm_genlist_item_fields_update(item, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+                       evas_object_smart_callback_call(item_data->chk, "changed", NULL);
+                       break;
+               default:
+                       break;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+char *msg_ui_thread_msg_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       PMSG_APP_THREAD_MSG_DATA_S item_data = (PMSG_APP_THREAD_MSG_DATA_S)data;
+       char buf[DEF_BUF_LEN+1] = { 0, };
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !item_data, NULL);
+
+       if (!strcmp(part, "elm.text.1")) {
+               int i = 0;
+               char str_name[DEF_BUF_LEN+1] = { 0, };
+               char temp[DEF_BUF_LEN+1] = { 0, };
+
+               for (i = 0; i < item_data->addr_cnt; i++) {
+                       if (item_data->addr_info[i]->contact_id > 0 && item_data->addr_info[i]->display_name[0] != '\0') {
+                               snprintf(str_name, sizeof(str_name), "%s", item_data->addr_info[i]->display_name);
+                       } else {
+                               if (item_data->addr_info[i]->address[0] != '\0')
+                                       snprintf(str_name, sizeof(str_name), "%s", item_data->addr_info[i]->address);
+                               else
+                                       snprintf(str_name, sizeof(str_name), dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+                       }
+
+                       snprintf(temp, sizeof(temp), "%s", buf);
+
+                       if (*temp)
+                               snprintf(buf, sizeof(buf), "%s, %s", temp, str_name);
+                       else
+                               snprintf(buf, sizeof(buf), "%s", str_name);
+               }
+       } else if (g_strcmp0(part, "elm.text.2") == 0) {
+               char msg[DEF_BUF_LEN] = { 0, };
+               int idx = 0;
+
+               if (item_data->msg_body[0] != '\0') {
+                       strncpy(msg, item_data->msg_body, sizeof(msg) - 1);
+                       while (msg[idx]) {
+                               if (g_ascii_iscntrl(msg[idx]))
+                                       msg[idx] = ' ';
+                               idx++;
+                       }
+               } else if ((item_data->msg_type >= MSG_TYPE_MMS && item_data->msg_type <= MSG_TYPE_MMS_NOTI)) {
+                       snprintf(msg, sizeof(msg), "(%s)", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_NO_SUBJECT"));
+               }
+               snprintf(buf, sizeof(buf), "%s", msg);
+       } else if (g_strcmp0(part, "elm.text.3") == 0) {
+               msg_ui_thread_make_time_string(item_data->msg_time, buf, sizeof(buf));
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+               return NULL;
+       }
+
+       return strdup(buf);
+}
+
+char *msg_ui_thread_search_msg_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       PMSG_APP_THREAD_MSG_DATA_S item_data = (PMSG_APP_THREAD_MSG_DATA_S)data;
+       char buf[DEF_BUF_LEN+1] = { 0, };
+       bool result = false;
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !item_data, NULL);
+
+       pListData = msg_ui_thread_get_current_list();
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !pListData, NULL);
+
+       if (!strcmp(part, "elm.text.1")) {
+               bool search = true;
+               if (item_data->addr_info[0]->contact_id > 0 && item_data->addr_info[0]->display_name[0] != '\0') {
+                       snprintf(buf, sizeof(buf), "%s", item_data->addr_info[0]->display_name);
+               } else {
+                       if (item_data->addr_info[0]->address[0] != '\0') {
+                               snprintf(buf, sizeof(buf), "%s", item_data->addr_info[0]->address);
+                       } else {
+                               snprintf(buf, sizeof(buf), dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+                               search =false;
+                       }
+               }
+
+               if (search == true) {
+                       Evas_Object *entry = elm_object_part_content_get( pListData->searchbar, "elm.swallow.content");
+                       char *search_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+                       if (search_str) {
+                               if (strlen(search_str) > 0) {
+                                       const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result);
+                                       free(search_str);
+                                       return strdup(str);
+                               }
+                               free(search_str);
+                       }
+               }
+       } else if (g_strcmp0(part, "elm.text.2") == 0) {
+               char msg[DEF_BUF_LEN] = { 0, };
+               int idx = 0;
+
+               if (item_data->msg_body[0] != '\0') {
+                       strncpy(msg, item_data->msg_body, sizeof(msg) - 1);
+                       while (msg[idx]) {
+                               if (g_ascii_iscntrl(msg[idx]))
+                                       msg[idx] = ' ';
+                               idx++;
+                       }
+               } else if ((item_data->msg_type >= MSG_TYPE_MMS && item_data->msg_type <= MSG_TYPE_MMS_NOTI)) {
+                       snprintf(msg, sizeof(msg), "(%s)", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_NO_SUBJECT"));
+               }
+               snprintf(buf, sizeof(buf), "%s", msg);
+
+               Evas_Object *entry = elm_object_part_content_get( pListData->searchbar, "elm.swallow.content");
+               char *search_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+               if (search_str) {
+                       if (strlen(search_str) > 0) {
+                               const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result);
+                               free(search_str);
+                               return strdup(str);
+                       }
+                       free(search_str);
+               }
+       } else if (g_strcmp0(part, "elm.text.3") == 0) {
+               msg_ui_thread_make_time_string(item_data->msg_time, buf, sizeof(buf));
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+               return NULL;
+       }
+
+       return strdup(buf);
+}
+
+Evas_Object *msg_ui_thread_msg_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+       PMSG_APP_THREAD_MSG_DATA_S item_data = (PMSG_APP_THREAD_MSG_DATA_S)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !item_data, NULL);
+
+       Evas_Object *ic = NULL;
+
+       if (g_strcmp0(part, "elm.icon") == 0) {
+               if (item_data->msg_type >= MSG_TYPE_MMS && item_data->msg_type <= MSG_TYPE_MMS_NOTI) {
+                       ic = elm_icon_add(obj);
+
+                       if (item_data->direction == MSG_DIRECTION_TYPE_MO)
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_SENT);
+                       else if (item_data->is_read == 0)
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD);
+                       else
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_READ);
+               } else {
+                       ic = elm_icon_add(obj);
+
+                       if (item_data->direction == MSG_DIRECTION_TYPE_MO)
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_SENT);
+                       else if (item_data->is_read == 0)
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD);
+                       else
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_READ);
+               }
+
+               if (ic) {
+                       evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+                       evas_object_show(ic);
+               }
+       }
+
+       if (pListData->search_mode == THREAD_SEARCH_OFF) {
+               if (pListData->list_type == THREAD_CBMSG_LIST_TYPE) {
+                       if (g_strcmp0(part, "elm.slide.swallow.1") == 0) {
+                               ic = elm_button_add(obj);
+                               elm_object_style_set(ic, "sweep/delete");
+                               elm_object_text_set(ic, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+                               evas_object_data_set(ic, "sel_peer_data", (void *) item_data);
+                               evas_object_smart_callback_add(ic, "clicked", msg_ui_thread_sweep_btn_cb, (void *) pListData);
+                       }
+               } else {
+                       if (g_strcmp0(part, "elm.slide.swallow.1") == 0) {
+                               ic = elm_button_add(obj);
+                               elm_object_style_set(ic, "sweep/multiline");
+                               if (pListData->list_type == THREAD_SIM_LIST_TYPE)
+                                       elm_object_text_set(ic, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE"));
+                               else if (pListData->list_type == THREAD_SPAM_LIST_TYPE)
+                                       elm_object_text_set(ic, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE"));
+
+                               evas_object_data_set(ic, "sel_peer_data", (void *) item_data);
+                               evas_object_smart_callback_add(ic, "clicked", msg_ui_thread_sweep_btn_cb, (void *) pListData);
+                       } else if (g_strcmp0(part, "elm.slide.swallow.2") == 0) {
+                               ic = elm_button_add(obj);
+                               elm_object_style_set(ic, "sweep/delete");
+                               elm_object_text_set(ic, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+                               evas_object_data_set(ic, "sel_peer_data", (void *) item_data);
+                               evas_object_smart_callback_add(ic, "clicked", msg_ui_thread_sweep_btn_cb, (void *) pListData);
+                       }
+               }
+       }
+
+       if (elm_genlist_decorate_mode_get(obj)) {
+               if (!strcmp(part, "elm.edit.icon.1")) {
+                       ic = elm_check_add(obj);
+                       elm_check_state_pointer_set(ic, &item_data->is_check);
+                       evas_object_data_set(ic, "item_data", item_data);
+                       evas_object_smart_callback_add(ic, "changed", msg_ui_thread_list_checked_cb, (void *) pListData);
+                       item_data->chk = ic;
+               }
+       }
+
+       return ic;
+}
+
+void msg_ui_thread_msg_gl_del(void *data, Evas_Object *obj)
+{
+       PMSG_APP_THREAD_MSG_DATA_S del_data = (PMSG_APP_THREAD_MSG_DATA_S) data;
+       if (del_data) {
+               if (del_data->msg_time) {
+                       free(del_data->msg_time);
+                       del_data->msg_time = NULL;
+               }
+
+               if (del_data->addr_info) {
+                       int i = 0;
+                       for (i = 0; i < del_data->addr_cnt; i++) {
+                               if (del_data->addr_info[i])
+                                       free(del_data->addr_info[i]);
+                       }
+                       free(del_data->addr_info);
+                       del_data->addr_info = NULL;
+               }
+
+               free(del_data);
+               del_data = NULL;
+       }
+}
+
+void msg_ui_thread_msg_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA) data;
+       Elm_Object_Item *item = NULL;
+       Elm_Object_Item* it_sweep = NULL;
+       PMSG_APP_THREAD_MSG_DATA_S item_data = NULL;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       item = (Elm_Object_Item *) event_info;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, !item, "Item is  NULL or Item is not Message item\n");
+
+       item_data = (PMSG_APP_THREAD_MSG_DATA_S) elm_object_item_data_get(item);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, item_data == NULL, "item_data is NULL");
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, pListData->sel_msg_id == item_data->msg_id, "Already selected item");
+
+       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+       if (it_sweep) {
+               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       if (pListData->search_mode == THREAD_SEARCH_ON && msg_ui_thread_rotation_get() == FALSE)
+               msg_ui_thread_show_toolbar(pListData);
+
+       switch (pListData->view_mode) {
+               case THREAD_NORMAL_VIEW:
+               case THREAD_UNLOAD_VIEW:
+                       if (pListData->list_type >= THREAD_SPAM_LIST_TYPE) {
+                               pListData->sel_gen_item = item;
+                               pListData->sel_msg_id = item_data->msg_id;
+
+                               if (item_data->msg_type == MSG_TYPE_MMS) {
+                                       /** in case of MMS launch MMS viewer UG */
+                                       msg_ui_thread_launch_viewer_ug(pListData, pListData->sel_msg_id);
+                                       if (pData->detail_layout)
+                                               pData->detail_layout = NULL;
+                               } else {
+                                       /** in case of sms, its own SMS viewer view */
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "type SMS");
+                                       if (pData->isRotate == true && pData->split_data == NULL) {
+                                               msg_ui_thread_create_split_data();
+                                               msg_ui_thread_splitview_launch(pData, pData->split_data);
+                                       }
+                                       if (pListData->loaded_ug) {
+                                               ug_destroy(pListData->loaded_ug);
+                                               pListData->loaded_ug = NULL;
+                                       }
+                                       msg_ui_thread_launch_msg_detail_view(pListData, item_data);
+                               }
+
+                               /** update read status */
+                               msg_update_read_status(msg_ui_thread_get_data_handle(), item_data->msg_id, true);
+                       } else {
+                               pListData->sel_gen_item = item;
+                               pListData->sel_msg_id = item_data->msg_id;
+
+                               __msg_ui_thread_create_bubble_by_msgid(pListData, item_data);
+                       }
+
+                       item_data->is_read = true;
+                       elm_genlist_item_item_class_update(item, &pListData->itc_default);
+                       elm_genlist_item_update(item);
+                       break;
+               case THREAD_EDIT_VIEW:
+                       elm_genlist_item_selected_set(item, false);
+                       item_data->is_check = !item_data->is_check;
+                       elm_genlist_item_fields_update(item, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+                       evas_object_smart_callback_call(item_data->chk, "changed", NULL);
+                       break;
+               default:
+                       break;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void __msg_ui_thread_create_bubble_by_msgid(PMSG_THREAD_LIST_DATA pListData, PMSG_APP_THREAD_MSG_DATA_S item_data)
+{
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       msg_struct_t threadInfo = NULL;
+       PMSG_APP_THREAD_DATA_S thread_data = NULL;
+       msg_error_t err =  MSG_SUCCESS;
+       int thread_id = 0;
+       service_h svc_handle = NULL;
+
+       err = msg_get_message(msg_ui_thread_get_data_handle(), (msg_message_id_t)item_data->msg_id, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message() is failed : err = %d", err);
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+       msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+
+       threadInfo = msg_create_struct(MSG_STRUCT_THREAD_INFO);
+       err = msg_get_thread(msg_ui_thread_get_data_handle(), thread_id, threadInfo);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message() is failed : err = %d", err);
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               msg_release_struct(&threadInfo);
+               return;
+       }
+
+       thread_data = (PMSG_APP_THREAD_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATA_S));
+       msg_ui_thread_set_thread_data(pListData, thread_data, threadInfo);
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               MessageComposerUgType ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+
+               msg_ui_thread_get_bubble_data(thread_data, svc_handle);
+               ug_type = MSG_COMPOSER_UG_TYPE_VIEWER;
+
+               if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR) {
+                       D_MSG("Failed to load composer ug");
+
+                       pListData->sel_gen_item = NULL;
+                       pListData->sel_msg_id = 0;
+               }
+
+               service_destroy(svc_handle);
+       }
+
+       if (thread_data)
+               free(thread_data);
+
+       msg_release_struct(&threadInfo);
+       msg_release_struct(&sendOpt);
+       msg_release_struct(&msgInfo);
+}
+
+char *msg_ui_thread_gl_empty_get(void *data, Evas_Object *obj, const char *part)
+{
+       char buf[DEF_BUF_LEN] = { '0', };
+
+       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+
+       if (pListData && pListData->search_mode == THREAD_SEARCH_ON)
+               snprintf(buf, sizeof(buf), "%s", dgettext("sys_string", "IDS_COM_BODY_NO_SEARCH_RESULTS"));
+       else
+               snprintf(buf, sizeof(buf), "%s", dgettext("sys_string", "IDS_COM_POP_EMPTY"));
+
+       return strdup(buf);
+}
+
+void msg_ui_thread_gl_empty_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Elm_Object_Item *item = NULL;
+
+       item = (Elm_Object_Item *) event_info;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, !item, "Item is  NULL or Item is not Message item\n");
+
+       elm_genlist_item_selected_set(item, false);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+char *msg_ui_thread_date_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_APP_THREAD_DATELINE_DATA_S item_data = (PMSG_APP_THREAD_DATELINE_DATA_S) data;
+       char *date_str = NULL;
+       char buf[DEF_BUF_LEN] = { 0, };
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !pData || !item_data, NULL);
+
+       if (0 == strcmp(part, "elm.text")) {
+               date_str = msg_common_get_display_date(pData->locale, pData->date_ptn_default, pData->date_ptn_year, item_data->thread_time);
+
+               if (date_str) {
+                       snprintf(buf, sizeof(buf), "%s", date_str);
+                       free(date_str);
+               }
+               return strdup(buf);
+       } else {
+               return NULL;
+       }
+}
+
+void msg_ui_thread_date_gl_del(void *data, Evas_Object *obj)
+{
+       PMSG_APP_THREAD_DATELINE_DATA_S del_data = (PMSG_APP_THREAD_DATELINE_DATA_S) data;
+
+       if (del_data) {
+               if (del_data->thread_time) {
+                       free(del_data->thread_time);
+                       del_data->thread_time = NULL;
+               }
+               free(del_data);
+               del_data = NULL;
+       }
+}
+
+PMSG_APP_THREAD_DATELINE_DATA_S msg_ui_thread_list_insert_dateline(PMSG_THREAD_LIST_DATA pListData, time_t* cur_time, time_t* prev_time)
+{
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+
+       char *date_str = NULL;
+       char cur_date_buf[DEF_BUF_LEN+1] = { 0, };
+       char prev_date_buf[DEF_BUF_LEN+1] = { 0, };
+
+       date_str = msg_common_get_display_date(pData->locale, pData->date_ptn_default, pData->date_ptn_year, cur_time);
+       if (date_str) {
+               snprintf(cur_date_buf, sizeof(cur_date_buf), " %s ", date_str);
+               free(date_str);
+               date_str = NULL;
+       }
+
+       if (prev_time != NULL) {
+               date_str = msg_common_get_display_date(pData->locale, pData->date_ptn_default, pData->date_ptn_year, prev_time);
+               if (date_str) {
+                       snprintf(prev_date_buf, sizeof(prev_date_buf), " %s ", date_str);
+                       free(date_str);
+                       date_str = NULL;
+               }
+       }
+
+       if (!prev_time ||g_strcmp0(cur_date_buf, prev_date_buf) != 0) {
+               dateline_data = (PMSG_APP_THREAD_DATELINE_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATELINE_DATA_S));
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !dateline_data, NULL);
+               bzero(dateline_data, sizeof(MSG_APP_THREAD_DATELINE_DATA_S));
+
+               dateline_data->thread_time = (time_t *) calloc(1, sizeof(time_t));
+               bzero(dateline_data->thread_time, sizeof(time_t));
+               memcpy(dateline_data->thread_time, cur_time, sizeof(time_t));
+
+               dateline_data->subitem_cnt = 0;
+               dateline_data->date_it = elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_DATE), dateline_data, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
+               elm_genlist_item_select_mode_set(dateline_data->date_it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+       }
+
+       return dateline_data;
+}
+
+void msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pListData){
+               D_MSG("[ERROR] pListData is NULL");
+               return;
+       }
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_t sort_rule_t = msg_create_struct(MSG_STRUCT_SORT_RULE);
+       msg_struct_list_s peerList;
+
+       __msg_ui_thread_init_genlist(pListData);
+
+       msg_set_int_value(sort_rule_t, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+       msg_set_bool_value(sort_rule_t, MSG_SORT_RULE_ACSCEND_BOOL, false);
+
+       err = msg_get_thread_view_list(pData->msgHandle, sort_rule_t, &peerList);
+       msg_release_struct(&sort_rule_t);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "peercount : %d, err : %d", peerList.nCount, err);
+       pListData->item_cnt = peerList.nCount;
+
+       Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list");
+
+       pListData->app_data_type = THREAD_LIST_APP_DATA_THREAD;
+       msg_ui_thread_genlist_style_set(pListData);
+
+       if (peerList.nCount <= 0 || err != MSG_SUCCESS) {
+               if (!pListData->noc_ly)
+                       pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
+
+               if (swl_ly != pListData->noc_ly) {
+                       evas_object_hide(swl_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly);
+               }
+
+               msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2);
+       } else {
+               if (swl_ly != pListData->genlist) {
+                       evas_object_hide(swl_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
+               }
+
+               msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2);
+
+               PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+               PMSG_APP_THREAD_DATA_S cur_thread = NULL;
+               PMSG_APP_THREAD_DATA_S prev_thread = NULL;
+               int row = 0;
+               int load_cnt = 0;
+
+               if (peerList.nCount > MSG_THREAD_LIST_LAUNCH_LOAD_MAX_CNT && bLaunch == TRUE) {
+                       pListData->loaded_cnt = MSG_THREAD_LIST_LAUNCH_LOAD_MAX_CNT;
+                       load_cnt = pListData->loaded_cnt;
+
+                       if (pListData->launch_idler == NULL)
+                               pListData->launch_idler = ecore_idler_add(__msg_ui_thread_list_load_remain_item, pListData);
+               } else {
+                       load_cnt = peerList.nCount;
+               }
+
+               for (row = 0; row < load_cnt; row++) {
+                       PMSG_APP_THREAD_DATELINE_DATA_S tmp_date_line = NULL;
+                       Elm_Object_Item *item = NULL;
+
+                       cur_thread = (PMSG_APP_THREAD_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATA_S));
+                       msg_ui_thread_set_thread_data(pListData, cur_thread, peerList.msg_struct_info[row]);
+
+                       if (prev_thread)
+                               tmp_date_line = msg_ui_thread_list_insert_dateline(pListData, cur_thread->thread_time, prev_thread->thread_time);
+                       else
+                               tmp_date_line = msg_ui_thread_list_insert_dateline(pListData, cur_thread->thread_time, NULL);
+
+                       if (tmp_date_line != NULL)
+                               dateline_data = tmp_date_line;
+
+                       if (dateline_data != NULL)
+                               item = dateline_data->date_it;
+
+                       if (cur_thread->unread_cnt > 0)
+                               elm_genlist_item_append(pListData->genlist, &pListData->itc_unread, cur_thread, item, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_gl_sel, pListData);
+                       else
+                               elm_genlist_item_append(pListData->genlist, &pListData->itc_default, cur_thread, item, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_gl_sel, pListData);
+
+                       if (dateline_data != NULL)
+                               dateline_data->subitem_cnt++;
+
+                       prev_thread = cur_thread;
+               }
+
+               msg_release_list_struct(&peerList);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pListData){
+               D_MSG("[ERROR] pListData is NULL");
+               return;
+       }
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_t sort_rule_t = msg_create_struct(MSG_STRUCT_SORT_RULE);
+       msg_struct_list_s peerList;
+       PMSG_APP_THREAD_DATA_S cur_sel_thread = NULL;
+       Elm_Object_Item *gen_item = NULL;
+       int row = 0;
+
+       Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list");
+
+       msg_set_int_value(sort_rule_t, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+       msg_set_bool_value(sort_rule_t, MSG_SORT_RULE_ACSCEND_BOOL, false);
+
+       err = msg_get_thread_view_list(pData->msgHandle, sort_rule_t, &peerList);
+       msg_release_struct(&sort_rule_t);
+
+       pListData->item_cnt = peerList.nCount;
+
+       if (peerList.nCount <= 0 || err != MSG_SUCCESS) {
+               msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2);
+
+               if (!pListData->noc_ly)
+                       pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
+
+               if (swl_ly != pListData->noc_ly) {
+                       evas_object_hide(swl_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly);
+               }
+
+       } else {
+               msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2);
+
+               if (swl_ly != pListData->genlist) {
+                       evas_object_hide(swl_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
+               }
+
+               gen_item = elm_genlist_first_item_get(pListData->genlist);
+
+               while (gen_item) {
+                       if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                               gen_item = elm_genlist_item_next_get(gen_item);
+                               continue;
+                       }
+
+                       cur_sel_thread = elm_object_item_data_get(gen_item);
+                       msg_ui_thread_set_thread_data(pListData, cur_sel_thread, peerList.msg_struct_info[row]);
+                       if (cur_sel_thread->unread_cnt > 0)
+                               elm_genlist_item_item_class_update(gen_item, &pListData->itc_unread);
+                       else
+                               elm_genlist_item_item_class_update(gen_item, &pListData->itc_default);
+                       elm_object_item_data_set(gen_item, cur_sel_thread);
+                       gen_item = elm_genlist_item_next_get(gen_item);
+                       row++;
+               }
+       }
+
+       msg_release_list_struct(&peerList);
+       elm_genlist_realized_items_update(pListData->genlist);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+Eina_Bool msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id)
+{
+       MSG_UI_ENTER();
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_t sort_rule_t = msg_create_struct(MSG_STRUCT_SORT_RULE);
+       msg_struct_list_s peerList;
+       PMSG_APP_THREAD_DATA_S old_data = NULL;
+       PMSG_APP_THREAD_DATA_S new_data = NULL;
+       int row = 0;
+       Elm_Object_Item *gen_item = NULL;
+
+       msg_set_int_value(sort_rule_t, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+       msg_set_bool_value(sort_rule_t, MSG_SORT_RULE_ACSCEND_BOOL, false);
+
+       err = msg_get_thread_view_list(msg_ui_thread_get_data_handle(), sort_rule_t, &peerList);
+       msg_release_struct(&sort_rule_t);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE);
+
+       gen_item = elm_genlist_first_item_get(pListData->genlist);
+
+       /* Update genlist item */
+       while (gen_item) {
+               if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                       gen_item = elm_genlist_item_next_get(gen_item);
+                       continue;
+               }
+
+               old_data = (PMSG_APP_THREAD_DATA_S) elm_object_item_data_get(gen_item);
+               if (old_data && thread_id == old_data->thread_id) {
+                       break;
+               }
+               gen_item = elm_genlist_item_next_get(gen_item);
+       }
+
+       if (!gen_item) {
+               D_EMSG("gen_item is NULL");
+               msg_release_list_struct(&peerList);
+               return EINA_FALSE;
+       }
+
+       if (!old_data) {
+               D_EMSG("old_data is NULL");
+               return EINA_FALSE;
+       }
+
+       for (row = 0; row < peerList.nCount; row++) {
+               int sel_thread_id = 0;
+               msg_get_int_value(peerList.msg_struct_info[row], MSG_THREAD_ID_INT, &sel_thread_id);
+               if (sel_thread_id == thread_id) {
+                       new_data = (PMSG_APP_THREAD_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATA_S));
+                       if (!new_data)
+                               break;
+
+                       msg_ui_thread_set_thread_data(pListData, new_data, peerList.msg_struct_info[row]);
+                       break;
+               }
+       }
+
+       msg_release_list_struct(&peerList);
+
+       if (!new_data) {
+               D_EMSG("new_data is NULL");
+               return EINA_FALSE;
+       }
+
+       if (new_data->thread_time && (*new_data->thread_time != *old_data->thread_time)){
+               msg_ui_thread_list_load(pListData, FALSE);
+               msg_ui_thread_select_item_by_thread_id(pListData, thread_id);
+
+               free(new_data->thread_time);
+               new_data->thread_time = NULL;
+
+               free(new_data);
+       } else {
+               new_data->chk = old_data->chk;
+               new_data->is_check = old_data->is_check;
+
+               if (new_data->unread_cnt > 0)
+                       elm_genlist_item_item_class_update(gen_item, &pListData->itc_unread);
+               else
+                       elm_genlist_item_item_class_update(gen_item, &pListData->itc_default);
+               elm_object_item_data_set(gen_item, new_data);
+               elm_genlist_item_update(gen_item);
+               elm_genlist_item_selected_set(gen_item, false);
+
+               if (pListData->view_mode == THREAD_EDIT_VIEW) {
+                       if (eina_list_data_find(pListData->chk_list, old_data)) {
+                               pListData->chk_list = eina_list_remove(pListData->chk_list, old_data);
+                               pListData->chk_list = eina_list_append(pListData->chk_list, new_data);
+                       }
+               }
+
+               if (old_data->thread_time) {
+                       free(old_data->thread_time);
+                       old_data->thread_time = NULL;
+               }
+               free(old_data);
+       }
+
+       MSG_UI_LEAVE();
+       return EINA_TRUE;
+}
+
+void msg_ui_thread_list_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id)
+{
+       MSG_UI_ENTER();
+
+       PMSG_APP_THREAD_DATA_S item_data = NULL;
+       Elm_Object_Item *gen_item = NULL;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "thread_id = [%d] ", thread_id);
+
+       gen_item = elm_genlist_first_item_get(pListData->genlist);
+
+       while (gen_item) {
+               if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                       gen_item = elm_genlist_item_next_get(gen_item);
+                       continue;
+               }
+
+               item_data = (PMSG_APP_THREAD_DATA_S) elm_object_item_data_get(gen_item);
+               if (item_data && thread_id == item_data->thread_id) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "thread_id == item_data->thread_id == [%d] ", thread_id);
+                       break;
+               }
+               gen_item = elm_genlist_item_next_get(gen_item);
+       }
+
+       if (!gen_item) {
+               D_EMSG("gen_item is NULL");
+               return;
+       }
+
+       Elm_Object_Item *it_dateline = NULL;
+       PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+
+       it_dateline = elm_genlist_item_parent_get(gen_item);
+       if (it_dateline) {
+               dateline_data = elm_object_item_data_get(it_dateline);
+
+               if (dateline_data) {
+                       dateline_data->subitem_cnt--;
+                       if (dateline_data->subitem_cnt == 0)
+                               elm_object_item_del((Elm_Object_Item *)it_dateline);
+               }
+       }
+       elm_object_item_del((Elm_Object_Item *)gen_item);
+       pListData->item_cnt--;
+
+       if (pListData->item_cnt <= 0) {
+               msg_ui_thread_list_load(pListData, FALSE);
+       }
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType)
+{
+       D_ENTER;
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_list_s msg_list;
+
+       if (!pListData){
+               D_MSG("[ERROR] pListData is NULL");
+               return;
+       }
+
+       __msg_ui_thread_init_genlist(pListData);
+
+       switch (listType) {
+               case THREAD_SPAM_LIST_TYPE:
+                       err = msg_get_message_list(pData->msgHandle, MSG_SPAMBOX_ID, 0, 0, 0, &msg_list);
+                       break;
+               case THREAD_SIM_LIST_TYPE:
+                       err = msg_get_message_list(pData->msgHandle, MSG_ALLBOX_ID, 0, MSG_TYPE_SMS, MSG_STORAGE_SIM, &msg_list);
+                       break;
+               case THREAD_CBMSG_LIST_TYPE:
+                       err = msg_get_message_list(pData->msgHandle, MSG_CBMSGBOX_ID, 0, 0, 0, &msg_list);
+                       break;
+               default:
+                       D_MSG("[WARNING] invalid view mode");
+                       return;
+       }
+
+       if (err != MSG_SUCCESS && err != MSG_ERR_DB_NORECORD) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message_list() is failed = %d", err);
+               return;
+       }
+       pListData->item_cnt = msg_list.nCount;
+
+       Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list");
+
+       if (pListData->item_cnt == 0) {
+               msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1);
+
+               // show non cotent
+               if (!pListData->noc_ly)
+                       pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
+
+               if (swl_ly != pListData->noc_ly) {
+                       evas_object_hide(swl_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly);
+               }
+       } else {
+               // fill the genlist
+               msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_1);
+
+               pListData->app_data_type = THREAD_LIST_APP_DATA_MSG;
+               msg_ui_thread_genlist_style_set(pListData);
+
+               if (swl_ly != pListData->genlist) {
+                       evas_object_hide(swl_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
+               }
+
+               PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+               PMSG_APP_THREAD_MSG_DATA_S cur_item = NULL;
+               PMSG_APP_THREAD_MSG_DATA_S prev_item = NULL;
+               int row = 0;
+
+               for (row = 0; row < msg_list.nCount; row++) {
+                       PMSG_APP_THREAD_DATELINE_DATA_S tmp_date_line = NULL;
+                       Elm_Object_Item *item = NULL;
+
+                       cur_item = (PMSG_APP_THREAD_MSG_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_MSG_DATA_S));
+                       msg_ui_thread_set_msg_data(cur_item, msg_list.msg_struct_info[row]);
+
+                       if (prev_item)
+                               tmp_date_line = msg_ui_thread_list_insert_dateline(pListData, cur_item->msg_time, prev_item->msg_time);
+                       else
+                               tmp_date_line = msg_ui_thread_list_insert_dateline(pListData, cur_item->msg_time, NULL);
+
+                       if (tmp_date_line != NULL)
+                               dateline_data = tmp_date_line;
+
+                       if (dateline_data != NULL)
+                               item = dateline_data->date_it;
+                       elm_genlist_item_append(pListData->genlist, &pListData->itc_default, cur_item, item, ELM_GENLIST_ITEM_NONE, msg_ui_thread_msg_gl_sel, (void *)pListData);
+
+                       if (dateline_data != NULL)
+                               dateline_data->subitem_cnt++;
+
+                       prev_item = cur_item;
+               }
+
+               if (pListData->item_cnt == 0) {
+                       msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1);
+
+                       // show non cotent
+                       if (!pListData->noc_ly)
+                               pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
+
+                       Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list");
+
+                       if (swl_ly != pListData->noc_ly) {
+                               evas_object_hide(swl_ly);
+                               elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                               elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly);
+                       }
+               }
+       }
+       msg_release_list_struct(&msg_list);
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER();
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pListData){
+               D_MSG("[ERROR] pListData is NULL");
+               return;
+       }
+
+       PMSG_APP_THREAD_MSG_DATA_S item_data = NULL;
+       int row = 0;
+       Elm_Object_Item *gen_item = NULL;
+       Evas_Object *entry = NULL;
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_list_s msg_list;
+
+       Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list");
+
+       if (pListData->search_mode == THREAD_SEARCH_ON) {
+               msg_struct_t search_s = msg_create_struct(MSG_STRUCT_SEARCH_CONDITION);
+               char *search_str = NULL;
+
+               if (pListData->searchbar) {
+                       entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
+                       search_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+               }
+
+               if (!search_str || strlen(search_str) == 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str");
+                       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
+                               msg_ui_thread_list_update(pListData);
+
+                       if (search_str) {
+                               free(search_str);
+                               search_str = NULL;
+                       }
+                       msg_release_struct(&search_s);
+                       return;
+               }
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Search string word = [%s] ", search_str);
+
+               switch (pListData->list_type) {
+                       case THREAD_NORMAL_LIST_TYPE:
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID);
+                               break;
+                       case THREAD_SPAM_LIST_TYPE:
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_SPAMBOX_ID);
+                               break;
+                       case THREAD_SIM_LIST_TYPE:
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID);
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_MSGTYPE_INT, MSG_TYPE_SMS);
+                               break;
+                       case THREAD_CBMSG_LIST_TYPE:
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_CBMSGBOX_ID);
+                               break;
+                       default:
+                               D_MSG("[WARNING] invalid view mode");
+                               if (search_str) {
+                                       free(search_str);
+                                       search_str = NULL;
+                               }
+                               msg_release_struct(&search_s);
+                               return;
+               }
+               msg_set_str_value(search_s, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, search_str, strlen(search_str));
+
+               err =  msg_search_message(pData->msgHandle, search_s, 0, 0, &msg_list);
+               free(search_str);
+               search_str = NULL;
+               msg_release_struct(&search_s);
+
+               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS);
+       } else {
+               switch (pListData->list_type) {
+                       case THREAD_SPAM_LIST_TYPE:
+                               err = msg_get_message_list(pData->msgHandle, MSG_SPAMBOX_ID, 0, 0, 0, &msg_list);
+                               break;
+                       case THREAD_SIM_LIST_TYPE:
+                               err = msg_get_message_list(pData->msgHandle, MSG_ALLBOX_ID, 0, MSG_TYPE_SMS, MSG_STORAGE_SIM, &msg_list);
+                               break;
+                       case THREAD_CBMSG_LIST_TYPE:
+                               err = msg_get_message_list(pData->msgHandle, MSG_CBMSGBOX_ID, 0, 0, 0, &msg_list);
+                               break;
+                       default:
+                               D_MSG("[WARNING] invalid view mode");
+                               return;
+               }
+               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS);
+       }
+       pListData->item_cnt = msg_list.nCount;
+
+       if (msg_list.nCount <= 0 || err != MSG_SUCCESS) {
+               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
+                       msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2);
+               else
+                       msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1);
+
+               if (!pListData->noc_ly)
+                       pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
+
+               if (swl_ly != pListData->noc_ly) {
+                       evas_object_hide(swl_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly);
+               }
+       } else {
+               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
+                       msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2);
+               else
+                       msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_1);
+
+               if (swl_ly != pListData->genlist) {
+                       evas_object_hide(swl_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
+               }
+
+               gen_item = elm_genlist_first_item_get(pListData->genlist);
+
+               while (gen_item) {
+                       if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                               gen_item = elm_genlist_item_next_get(gen_item);
+                               continue;
+                       }
+
+                       item_data = elm_object_item_data_get(gen_item);
+                       msg_ui_thread_set_msg_data(item_data, msg_list.msg_struct_info[row]);
+
+                       elm_object_item_data_set(gen_item, item_data);
+                       gen_item = elm_genlist_item_next_get(gen_item);
+                       row++;
+               }
+       }
+
+       msg_release_list_struct(&msg_list);
+       elm_genlist_realized_items_update(pListData->genlist);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+Eina_Bool msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id)
+{
+       MSG_UI_ENTER();
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_APP_THREAD_MSG_DATA_S old_data = NULL;
+       PMSG_APP_THREAD_MSG_DATA_S new_data = NULL;
+       int row = 0;
+       Elm_Object_Item *gen_item = NULL;
+       Evas_Object *entry = NULL;
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_list_s msg_list;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_id = [%d] ", msg_id);
+
+       if (pListData->search_mode == THREAD_SEARCH_ON) {
+               msg_struct_t search_s = msg_create_struct(MSG_STRUCT_SEARCH_CONDITION);
+               char *search_str = NULL;
+
+               if (pListData->searchbar) {
+                       entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
+                       search_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+               }
+
+               if (!search_str || strlen(search_str) == 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str");
+                       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+                               msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+                               msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+                               int thread_id = 0;
+
+                               err = msg_get_message(pData->msgHandle, msg_id, msgInfo, sendOpt);
+                               msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+                               msg_release_struct(&msgInfo);
+                               msg_release_struct(&sendOpt);
+
+                               msg_ui_thread_list_item_update(pListData, thread_id);
+                       }
+
+                       if (search_str) {
+                               free(search_str);
+                               search_str = NULL;
+                       }
+                       msg_release_struct(&search_s);
+                       return EINA_TRUE;
+               }
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Search string word = [%s] ", search_str);
+
+               switch (pListData->list_type) {
+                       case THREAD_NORMAL_LIST_TYPE:
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID);
+                               break;
+                       case THREAD_SPAM_LIST_TYPE:
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_SPAMBOX_ID);
+                               break;
+                       case THREAD_SIM_LIST_TYPE:
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID);
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_MSGTYPE_INT, MSG_TYPE_SMS);
+                               break;
+                       case THREAD_CBMSG_LIST_TYPE:
+                               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_CBMSGBOX_ID);
+                               break;
+                       default:
+                               D_MSG("[WARNING] invalid view mode");
+                               if (search_str) {
+                                       free(search_str);
+                                       search_str = NULL;
+                               }
+                               return EINA_FALSE;
+               }
+               msg_set_str_value(search_s, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, search_str, strlen(search_str));
+
+               err =  msg_search_message(pData->msgHandle, search_s, 0, 0, &msg_list);
+               free(search_str);
+               search_str = NULL;
+               msg_release_struct(&search_s);
+
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE);
+       } else {
+               switch (pListData->list_type) {
+                       case THREAD_SPAM_LIST_TYPE:
+                               err = msg_get_message_list(pData->msgHandle, MSG_SPAMBOX_ID, 0, 0, 0, &msg_list);
+                               break;
+                       case THREAD_SIM_LIST_TYPE:
+                               err = msg_get_message_list(pData->msgHandle, MSG_ALLBOX_ID, 0, MSG_TYPE_SMS, MSG_STORAGE_SIM, &msg_list);
+                               break;
+                       case THREAD_CBMSG_LIST_TYPE:
+                               err = msg_get_message_list(pData->msgHandle, MSG_CBMSGBOX_ID, 0, 0, 0, &msg_list);
+                               break;
+                       default:
+                               D_MSG("[WARNING] invalid view mode");
+                               return EINA_FALSE;
+               }
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE);
+       }
+
+       gen_item = elm_genlist_first_item_get(pListData->genlist);
+
+       /* Update genlist item */
+       while (gen_item) {
+               if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                       gen_item = elm_genlist_item_next_get(gen_item);
+                       continue;
+               }
+
+               old_data = (PMSG_APP_THREAD_MSG_DATA_S) elm_object_item_data_get(gen_item);
+               if (old_data && msg_id == old_data->msg_id) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_id == item_data->msg_id == [%d] ", msg_id);
+                       break;
+               }
+               gen_item = elm_genlist_item_next_get(gen_item);
+       }
+
+       if (!gen_item) {
+               D_EMSG("gen_item is NULL");
+               msg_release_list_struct(&msg_list);
+               return EINA_FALSE;
+       }
+
+       if (!old_data) {
+               D_EMSG("old_data is NULL");
+               return EINA_FALSE;
+       }
+
+       for (row = 0; row <msg_list.nCount; row++) {
+               int row_msg_id = 0;
+               msg_get_int_value(msg_list.msg_struct_info[row], MSG_MESSAGE_ID_INT, &row_msg_id);
+               if (row_msg_id == msg_id) {
+                       new_data = (PMSG_APP_THREAD_MSG_DATA_S)calloc(1, sizeof(MSG_APP_THREAD_MSG_DATA_S));
+                       if (!new_data)
+                               break;
+
+                       msg_ui_thread_set_msg_data(new_data, msg_list.msg_struct_info[row]);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "find row = %d ", row);
+                       break;
+               }
+       }
+       msg_release_list_struct(&msg_list);
+
+       if (!new_data) {
+               D_EMSG("new_data is NULL");
+               return EINA_FALSE;
+       }
+
+       new_data->chk = old_data->chk;
+       new_data->is_check = old_data->is_check;
+
+       elm_object_item_data_set(gen_item, new_data);
+       elm_genlist_item_update(gen_item);
+       elm_genlist_item_selected_set(gen_item, false);
+
+       if (pListData->view_mode == THREAD_EDIT_VIEW) {
+               if (eina_list_data_find(pListData->chk_list, old_data)) {
+                       pListData->chk_list = eina_list_remove(pListData->chk_list, old_data);
+                       pListData->chk_list = eina_list_append(pListData->chk_list, new_data);
+               }
+       }
+
+       if (old_data->msg_time) {
+               free(old_data->msg_time);
+               old_data->msg_time = NULL;
+       }
+       free(old_data);
+
+       MSG_UI_LEAVE();
+       return EINA_TRUE;
+}
+
+void msg_ui_thread_list_msg_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id)
+{
+       MSG_UI_ENTER();
+
+       PMSG_APP_THREAD_MSG_DATA_S item_data = NULL;
+       Elm_Object_Item *gen_item = NULL;
+       Elm_Object_Item *del_item = NULL;
+       Elm_Object_Item *it_dateline = NULL;
+       PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_id = [%d] ", msg_id);
+
+       gen_item = elm_genlist_first_item_get(pListData->genlist);
+
+       while (gen_item) {
+               if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                       gen_item = elm_genlist_item_next_get(gen_item);
+                       continue;
+               }
+
+               //120803 - can exist multiple message with the same address in search result list
+               item_data = (PMSG_APP_THREAD_MSG_DATA_S) elm_object_item_data_get(gen_item);
+               if (item_data && msg_id == item_data->msg_id) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_id == item_data->msg_id == [%d] ", msg_id);
+
+                       del_item = gen_item;
+
+                       it_dateline = elm_genlist_item_parent_get(gen_item);
+                       if (it_dateline) {
+                               dateline_data = elm_object_item_data_get(it_dateline);
+
+                               if (dateline_data) {
+                                       dateline_data->subitem_cnt--;
+                                       if (dateline_data->subitem_cnt == 0)
+                                               elm_object_item_del((Elm_Object_Item *)it_dateline);
+                               }
+                       }
+               }
+               gen_item = elm_genlist_item_next_get(gen_item);
+
+               if (del_item) {
+                       elm_object_item_del(del_item);
+                       pListData->item_cnt--;
+                       del_item = NULL;
+               }
+       }
+
+       if (pListData->item_cnt <= 0) {
+               if (pListData->search_mode == THREAD_SEARCH_ON) {
+                       elm_genlist_clear(pListData->genlist);
+                       elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_EMPTY), NULL, NULL, ELM_GENLIST_ITEM_NONE, msg_ui_thread_gl_empty_sel, NULL);
+               } else {
+                       msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+               }
+       }
+
+       MSG_UI_LEAVE();
+}
+
+Eina_Bool  msg_ui_thread_search_msg_list_load(void *data)
+{
+       MSG_UI_ENTER();
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !data, EINA_FALSE);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       Evas_Object *entry = NULL;
+       char *search_str = NULL;
+
+       msg_struct_list_s search_msg_list;
+       msg_struct_t search_s = msg_create_struct(MSG_STRUCT_SEARCH_CONDITION);
+       msg_error_t err = MSG_SUCCESS;
+       int idx = 0;
+
+       if (pListData->searchbar) {
+               entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
+               search_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+       }
+
+       if (pListData->search_timer) {
+               ecore_timer_del(pListData->search_timer);
+               pListData->search_timer = NULL;
+       }
+
+       if (!search_str || strlen(search_str) == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str");
+               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
+                       msg_ui_thread_list_load(pListData, FALSE);
+               else
+                       msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+               msg_release_struct(&search_s);
+               if (search_str)
+                       free(search_str);
+               return EINA_FALSE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Search string word = [%s] ", search_str);
+
+       switch (pListData->list_type) {
+               case THREAD_NORMAL_LIST_TYPE:
+                       msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID);
+                       break;
+               case THREAD_SPAM_LIST_TYPE:
+                       msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_SPAMBOX_ID);
+                       break;
+               case THREAD_SIM_LIST_TYPE:
+                       msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID);
+                       msg_set_int_value(search_s, MSG_SEARCH_CONDITION_MSGTYPE_INT, MSG_TYPE_SMS);
+                       break;
+               case THREAD_CBMSG_LIST_TYPE:
+                       msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_CBMSGBOX_ID);
+                       break;
+               default:
+                       D_MSG("[WARNING] invalid view mode");
+                       return EINA_FALSE;
+       }
+
+       msg_set_str_value(search_s, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, search_str, strlen(search_str));
+       err =  msg_search_message(msg_ui_thread_get_data_handle(), search_s, 0, 0, &search_msg_list);
+       pListData->item_cnt = search_msg_list.nCount;
+
+       free(search_str);
+       msg_release_struct(&search_s);
+
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_search_message failed!! [%d]", err);
+
+               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
+                       msg_ui_thread_list_load(pListData, FALSE);
+               else
+                       msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+
+               return EINA_FALSE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Search result [ count = %d ] ", search_msg_list.nCount);
+
+       Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list");
+
+       if (swl_ly != pListData->genlist) {
+               evas_object_hide(swl_ly);
+               elm_object_part_content_unset(pListData->content_ly, "thread_list");
+               elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
+       }
+
+       /** hide control bar */
+       elm_genlist_clear(pListData->genlist);
+
+       if (search_msg_list.nCount > 0) {
+               PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+               PMSG_APP_THREAD_MSG_DATA_S item_data = NULL;
+               PMSG_APP_THREAD_MSG_DATA_S prev_data = NULL;
+
+               pListData->app_data_type = THREAD_LIST_APP_DATA_MSG;
+               msg_ui_thread_genlist_style_set(pListData);
+
+               while (idx < search_msg_list.nCount) {
+                       PMSG_APP_THREAD_DATELINE_DATA_S tmp_date_line = NULL;
+                       Elm_Object_Item *item = NULL;
+
+                       if (pListData->list_type == THREAD_SIM_LIST_TYPE) {
+                               int storage_id = 0;
+                               msg_get_int_value(search_msg_list.msg_struct_info[idx], MSG_MESSAGE_STORAGE_ID_INT, &storage_id);
+
+                               if (storage_id != MSG_STORAGE_SIM) {
+                                       idx++;
+                                       pListData->item_cnt--;
+                                       continue;
+                               }
+                       }
+
+                       item_data = (PMSG_APP_THREAD_MSG_DATA_S)calloc(1, sizeof(MSG_APP_THREAD_MSG_DATA_S));
+                       msg_ui_thread_set_msg_data(item_data, search_msg_list.msg_struct_info[idx]);
+
+                       if (prev_data)
+                               tmp_date_line = msg_ui_thread_list_insert_dateline(pListData, item_data->msg_time, prev_data->msg_time);
+                       else
+                               tmp_date_line = msg_ui_thread_list_insert_dateline(pListData, item_data->msg_time, NULL);
+
+                       if (tmp_date_line != NULL)
+                               dateline_data = tmp_date_line;
+
+                       if (dateline_data != NULL)
+                               item = dateline_data->date_it;
+                       elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_SEARCH), item_data, item, ELM_GENLIST_ITEM_NONE, msg_ui_thread_msg_gl_sel, pListData);
+
+                       if (dateline_data != NULL)
+                               dateline_data->subitem_cnt++;
+
+                       prev_data = item_data;
+                       idx++;
+               }
+
+               if (pListData->item_cnt == 0)
+                       elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_EMPTY), NULL, NULL, ELM_GENLIST_ITEM_NONE, msg_ui_thread_gl_empty_sel, NULL);
+       } else {
+               elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_EMPTY), NULL, NULL, ELM_GENLIST_ITEM_NONE, msg_ui_thread_gl_empty_sel, NULL);
+       }
+
+       msg_release_list_struct(&search_msg_list);
+
+       return EINA_TRUE;
+}
+
+Eina_Bool __msg_ui_thread_list_load_remain_item(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG)
+               return FALSE;
+
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_t sort_rule_t = msg_create_struct(MSG_STRUCT_SORT_RULE);
+       msg_struct_list_s peerList;
+
+       msg_set_int_value(sort_rule_t, MSG_SORT_RULE_SORT_TYPE_INT, MSG_SORT_BY_THREAD_DATE);
+       msg_set_bool_value(sort_rule_t, MSG_SORT_RULE_ACSCEND_BOOL, false);
+
+       err = msg_get_thread_view_list(msg_ui_thread_get_data_handle(), sort_rule_t, &peerList);
+       msg_release_struct(&sort_rule_t);
+
+       PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+       PMSG_APP_THREAD_DATA_S cur_thread = NULL;
+       PMSG_APP_THREAD_DATA_S prev_thread = NULL;
+       Elm_Object_Item *gen_item = NULL;
+       Elm_Object_Item *it_dateline = NULL;
+       int row = 0, start = pListData->loaded_cnt;
+
+       gen_item = elm_genlist_last_item_get(pListData->genlist);
+       if (gen_item)
+               prev_thread = elm_object_item_data_get(gen_item);
+
+       for (row = start; row < peerList.nCount; row++) {
+               PMSG_APP_THREAD_DATELINE_DATA_S tmp_date_line = NULL;
+               Elm_Object_Item *item = NULL;
+
+               cur_thread = (PMSG_APP_THREAD_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATA_S));
+               msg_ui_thread_set_thread_data(pListData, cur_thread, peerList.msg_struct_info[row]);
+
+               if (prev_thread) {
+                       tmp_date_line = msg_ui_thread_list_insert_dateline(pListData, cur_thread->thread_time, prev_thread->thread_time);
+                       if (tmp_date_line == NULL) {
+                               it_dateline = elm_genlist_item_parent_get(gen_item);
+                               if (it_dateline)
+                                       tmp_date_line = elm_object_item_data_get(it_dateline);
+                       }
+               } else {
+                       tmp_date_line = msg_ui_thread_list_insert_dateline(pListData, cur_thread->thread_time, NULL);
+               }
+
+               if (tmp_date_line != NULL)
+                       dateline_data = tmp_date_line;
+
+               if (dateline_data != NULL)
+                       item = dateline_data->date_it;
+
+               if (cur_thread->unread_cnt > 0)
+                       elm_genlist_item_append(pListData->genlist, &pListData->itc_unread, cur_thread, item, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_gl_sel, pListData);
+               else
+                       elm_genlist_item_append(pListData->genlist, &pListData->itc_default, cur_thread, item, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_gl_sel, pListData);
+
+               if (dateline_data != NULL)
+                       dateline_data->subitem_cnt++;
+
+               prev_thread = cur_thread;
+               pListData->loaded_cnt++;
+
+               if (pListData->loaded_cnt == peerList.nCount) {
+                       ecore_idler_del(pListData->launch_idler);
+                       pListData->launch_idler = NULL;
+               }
+       }
+
+       msg_release_list_struct(&peerList);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return TRUE;
+}
+
+void msg_ui_thread_common_style_set(PMSG_THREAD_DATA pData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
+
+       pData->itc_empty.item_style = "1text";
+       pData->itc_empty.func.text_get = msg_ui_thread_gl_empty_get;
+       pData->itc_empty.func.content_get = NULL;
+       pData->itc_empty.func.state_get = NULL;
+       pData->itc_empty.func.del = NULL;
+
+       pData->itc_blank.item_style = "thread_list_blank";
+       pData->itc_blank.func.text_get = NULL;
+       pData->itc_blank.func.content_get = NULL;
+       pData->itc_blank.func.state_get = NULL;
+       pData->itc_blank.func.del = NULL;
+
+       pData->itc_date.item_style = "grouptitle";
+       pData->itc_date.func.text_get = msg_ui_thread_date_gl_text_get;
+       pData->itc_date.func.content_get = NULL;
+       pData->itc_date.func.state_get = NULL;
+       pData->itc_date.func.del = msg_ui_thread_date_gl_del;
+
+       pData->itc_search.item_style = "3text.1icon.tb";
+       pData->itc_search.func.text_get = msg_ui_thread_search_msg_gl_text_get;
+       pData->itc_search.func.content_get = msg_ui_thread_msg_gl_content_get;
+       pData->itc_search.func.state_get = NULL;
+       pData->itc_search.func.del = msg_ui_thread_msg_gl_del;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_thread_genlist_style_set(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pListData);
+
+       if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD) {
+               pListData->itc_default.item_style = "4text.1icon.2";
+               pListData->itc_default.decorate_item_style = "mode/slide4";
+               pListData->itc_default.func.text_get = __msg_ui_thread_gl_text_get;
+               pListData->itc_default.func.content_get = __msg_ui_thread_gl_content_get;
+               pListData->itc_default.func.state_get = NULL;
+               pListData->itc_default.func.del = __msg_ui_thread_gl_del;
+               pListData->itc_default.decorate_all_item_style = "edit_default";
+
+               pListData->itc_unread.item_style = "4text.1icon.1";
+               pListData->itc_unread.decorate_item_style = "mode/slide4";
+               pListData->itc_unread.func.text_get = __msg_ui_thread_gl_text_get;
+               pListData->itc_unread.func.content_get = __msg_ui_thread_gl_content_get;
+               pListData->itc_unread.func.state_get = NULL;
+               pListData->itc_unread.func.del = __msg_ui_thread_gl_del;
+               pListData->itc_unread.decorate_all_item_style = "edit_default";
+       } else {
+               pListData->itc_default.item_style = "3text.1icon";
+               pListData->itc_default.func.text_get = msg_ui_thread_msg_gl_text_get;
+               pListData->itc_default.func.content_get = msg_ui_thread_msg_gl_content_get;
+               pListData->itc_default.func.state_get = NULL;
+               pListData->itc_default.func.del = msg_ui_thread_msg_gl_del;
+               pListData->itc_default.decorate_all_item_style = "edit_default";
+
+               if (pListData->list_type == THREAD_CBMSG_LIST_TYPE)
+                       pListData->itc_default.decorate_item_style = "mode/slide";
+               else
+                       pListData->itc_default.decorate_item_style = "mode/slide2";
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
diff --git a/thread/src/msg-ui-thread-main.c b/thread/src/msg-ui-thread-main.c
new file mode 100755 (executable)
index 0000000..b786349
--- /dev/null
@@ -0,0 +1,1040 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-thread-main.h"
+
+PMSG_THREAD_DATA g_data = NULL;
+
+PMSG_THREAD_DATA msg_ui_thread_get_data(void)
+{
+       if (g_data)
+               return g_data;
+       else
+               return NULL;
+}
+
+msg_handle_t msg_ui_thread_get_data_handle(void)
+{
+       if (g_data)
+               return g_data->msgHandle;
+       else
+               return NULL;
+}
+
+Elm_Genlist_Item_Class* msg_ui_thread_get_itc_type(ThreadItcType type)
+{
+       if (g_data ==  NULL)
+               return NULL;
+
+       if (type == THREAD_ITC_EMPTY)
+               return &g_data->itc_empty;
+       else if (type == THREAD_ITC_SEARCH)
+               return &g_data->itc_search;
+       else if (type == THREAD_ITC_BLANK)
+               return &g_data->itc_blank;
+       else if (type == THREAD_ITC_POPUP)
+               return &g_data->itc_popup;
+       else if (type == THREAD_ITC_DATE)
+               return &g_data->itc_date;
+       else
+               return NULL;
+}
+
+
+/* Launching Time Check */
+static void __main_layout_flush_post_cb(void *data, Evas *e, void *event_info)
+{
+       evas_event_callback_del(e, EVAS_CALLBACK_RENDER_FLUSH_POST, __main_layout_flush_post_cb);
+}
+
+void *msg_ui_thread_init_thread_data(struct appdata *ad)
+{
+       PMSG_THREAD_DATA pData = NULL;
+
+       pData = (PMSG_THREAD_DATA)calloc(1, sizeof(MSG_THREAD_DATA));
+
+       if (!pData) {
+               D_MSG("calloc error");
+               return NULL;
+       }
+       bzero(pData, sizeof(MSG_THREAD_DATA));
+
+       g_data = pData;
+
+       pData->msgHandle = ad->msgHandle;
+       pData->win_main = ad->win_main;
+       pData->conform = ad->conform;
+       pData->th = elm_theme_new();
+       elm_theme_ref_set(pData->th, NULL);
+       elm_theme_extension_add(pData->th, MSG_THREAD_THEME);
+
+       msg_ui_thread_common_style_set(pData);
+       msg_ui_thread_reg_msg_cb_func(pData);
+       msg_ui_thread_get_locale(pData);
+       msg_ui_thread_get_time_format(pData);
+       pData->time_12h_ptn = msg_common_get_date_best_pattern(pData->locale, MSG_UI_TIME_PATTERN_12H);
+       pData->time_24h_ptn = msg_common_get_date_best_pattern(pData->locale, MSG_UI_TIME_PATTERN_24H);
+       pData->date_ptn_default = msg_common_get_date_best_pattern(pData->locale, MSG_UI_DATE_PATTERN_DEFAULT);
+       pData->date_ptn_year = msg_common_get_date_best_pattern(pData->locale, MSG_UI_DATE_PATTERN_YEAR);
+
+       /* Register callback to apply time change. */
+       if (vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, msg_ui_thread_timezone_change_cb, (void *)pData) < 0) {
+               D_EMSG("Fail to register vconf CB with [%s]", VCONFKEY_SYSTEM_TIME_CHANGED);
+       }
+
+       return (void *)pData;
+}
+
+void msg_ui_thread_deinit_thread_data(void *data)
+{
+       if (!data)
+               return;
+
+       PMSG_THREAD_DATA pData = data;
+       int i = 0;
+
+       for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+               if (pData->list_data[i] != NULL) {
+                       msg_ui_thread_destroy_thread_list_data(pData->list_data[i]);
+               }
+       }
+
+       if (pData->split_data) {
+               msg_ui_thread_destroy_split_data(pData->split_data);
+       }
+
+       if (pData->date_ptn_default) {
+               free(pData->date_ptn_default);
+               pData->date_ptn_default = NULL;
+       }
+
+       if (pData->date_ptn_year) {
+               free(pData->date_ptn_year);
+               pData->date_ptn_year = NULL;
+       }
+
+       if (pData->time_12h_ptn) {
+               free(pData->time_12h_ptn);
+               pData->time_12h_ptn = NULL;
+       }
+
+       if (pData->time_24h_ptn) {
+               free(pData->time_24h_ptn);
+               pData->time_24h_ptn = NULL;
+       }
+
+       if (pData->th) {
+               elm_theme_extension_del(pData->th, MSG_THREAD_THEME);
+               elm_theme_free(pData->th);
+               pData->th = NULL;
+       }
+
+       if (vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, msg_ui_thread_timezone_change_cb) < 0) {
+               D_EMSG("Fail to remove vconf CB with [%s]", VCONFKEY_SYSTEM_TIME_CHANGED);
+       }
+}
+
+PMSG_THREAD_LIST_DATA msg_ui_thread_create_thread_list_data(ThreadMsgListType list_type, ThreadMsgListAppDataType app_data_type)
+{
+       int i = 0;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)calloc(1, sizeof(MSG_THREAD_LIST_DATA));
+
+       if (!pListData) {
+               D_MSG("calloc error");
+               return NULL;
+       }
+       bzero(pListData, sizeof(MSG_THREAD_LIST_DATA));
+
+       pListData->view_mode = THREAD_NORMAL_VIEW;
+       pListData->list_type = list_type;
+       pListData->app_data_type = app_data_type;
+       pListData->search_mode = THREAD_SEARCH_OFF;
+       pListData->job_popup_end = NULL;
+       pListData->action_type = THREAD_ACTION_NONE;
+       pListData->include_protected_msg = false;
+
+       for (i = 0; i < MSG_THREAD_LIST_MAX_COUNT; i++) {
+               if (pData->list_data[i] == NULL) {
+                       pData->list_data[i] = pListData;
+                       break;
+               }
+       }
+       return pListData;
+}
+
+PMSG_THREAD_SPLIT_DATA msg_ui_thread_create_split_data(void)
+{
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_THREAD_SPLIT_DATA pSplitData = (PMSG_THREAD_SPLIT_DATA)calloc(1, sizeof(MSG_THREAD_SPLIT_DATA));
+
+       if (!pSplitData) {
+               D_MSG("calloc error");
+               return NULL;
+       }
+       bzero(pSplitData, sizeof(MSG_THREAD_SPLIT_DATA));
+       pData->split_data = pSplitData;
+
+       return pSplitData;
+}
+
+void msg_ui_thread_destroy_thread_list_data(PMSG_THREAD_LIST_DATA pListData)
+{
+       D_ENTER;
+       int i = 0, j = 0;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pListData)
+               return;
+
+       if (pListData->multi_action_thread) {
+               if (ecore_thread_cancel(pListData->multi_action_thread) == EINA_FALSE) {
+                       D_MSG("ecore_thread_cancel is done.");
+               } else {
+                       D_MSG("ecore_thread_cancel is failed.");
+               }
+               pListData->multi_action_thread = NULL;
+       }
+
+
+       if(pListData->job_popup_end) {
+               if (ecore_job_del(pListData->job_popup_end))
+                       D_MSG("ecore_job_del is done.");
+               pListData->job_popup_end = NULL;
+       }
+
+       for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) {
+               if (pListData->toolbar_btn[i]) {
+                       evas_object_del(pListData->toolbar_btn[i]);
+                       pListData->toolbar_btn[i] = NULL;
+               }
+       }
+
+       evas_object_del(pListData->back_btn);
+       pListData->back_btn = NULL;
+
+       for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+               if (pData->list_data[i] != NULL && pData->list_data[i] == pListData) {
+                       free(pListData);
+                       pData->list_data[i] = NULL;
+
+                       for (j = i; j < MSG_THREAD_LIST_MAX_COUNT-2; j++) {
+                               pData->list_data[j] = pData->list_data[j+1];
+                               pData->list_data[j+1] = NULL;
+                       }
+                       break;
+               }
+       }
+}
+
+void msg_ui_thread_destroy_split_data(PMSG_THREAD_SPLIT_DATA pSplitData)
+{
+       D_ENTER;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pSplitData)
+               return;
+
+       evas_object_hide(pSplitData->content_ly);
+       evas_object_del(pSplitData->content_ly);
+       pSplitData->content_ly = NULL;
+
+       free(pSplitData);
+       pData->split_data = NULL;
+}
+
+PMSG_THREAD_LIST_DATA msg_ui_thread_get_default_list(void)
+{
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       int i = 0;
+
+       if (pData == NULL)
+               return NULL;
+
+       for (i = 0; i < MSG_THREAD_LIST_MAX_COUNT; i++) {
+               if (pData->list_data[i] != NULL && pData->list_data[i]->list_type == THREAD_NORMAL_LIST_TYPE) {
+                       pListData = pData->list_data[i];
+                       break;
+               }
+       }
+
+       return pListData;
+}
+
+PMSG_THREAD_LIST_DATA msg_ui_thread_get_current_list(void)
+{
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       int i = 0;
+
+       if (pData == NULL)
+               return NULL;
+
+       for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+               if (pData->list_data[i] != NULL) {
+                       pListData = pData->list_data[i];
+                       break;
+               }
+       }
+
+       return pListData;
+}
+
+PMSG_THREAD_LIST_DATA msg_ui_thread_get_prev_list(PMSG_THREAD_LIST_DATA pListData)
+{
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_THREAD_LIST_DATA pPrevList = NULL;
+       int i = 0;
+
+       for (i = MSG_THREAD_LIST_MAX_COUNT-1; i > 0; i--) {
+               if (pData->list_data[i] == pListData) {
+                       pPrevList = pData->list_data[i-1];
+                       break;
+               }
+       }
+
+       return pPrevList;
+}
+
+Evas_Object *msg_ui_thread_create_layout_main(PMSG_THREAD_DATA pData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, pData == NULL || pData->win_main == NULL, NULL, "pData is NULL");
+
+       Evas_Object *bg;
+       Evas_Object *layout;
+
+       bg = elm_bg_add(pData->win_main);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(bg);
+
+       layout = elm_layout_add(pData->conform);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, layout == NULL, NULL, "Failed elm_layout_add.\n");
+
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(pData->win_main, bg);
+       elm_object_part_content_set(layout, "elm.swallow.bg", bg);
+       evas_object_show(layout);
+
+       evas_event_callback_add(evas_object_evas_get(layout), EVAS_CALLBACK_RENDER_FLUSH_POST, __main_layout_flush_post_cb, NULL);
+
+       pData->panes = elm_panes_add(layout);
+       elm_panes_fixed_set(pData->panes, EINA_FALSE);
+       evas_object_size_hint_weight_set(pData->panes, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(pData->panes, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(pData->panes);
+
+       elm_object_part_content_set(layout, "elm.swallow.content", pData->panes);
+
+       pData->layout_main = elm_layout_add(pData->panes);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, pData->layout_main == NULL, NULL, "Failed elm_layout_add.\n");
+
+       elm_layout_theme_set(pData->layout_main, "layout", "application", "noindicator");
+       evas_object_size_hint_weight_set(pData->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(pData->panes, "left", pData->layout_main);
+       evas_object_show(pData->layout_main);
+
+       pData->navi_frame = elm_naviframe_add(pData->layout_main);
+       elm_object_part_content_set(pData->layout_main, "elm.swallow.content", pData->navi_frame);
+       evas_object_show(pData->navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return layout;
+}
+
+void msg_ui_thread_load_thread_view(void *data, service_h service)
+{
+       if (!data)
+               return;
+
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+
+       pListData = msg_ui_thread_create_thread_list_data(THREAD_NORMAL_LIST_TYPE, THREAD_LIST_APP_DATA_THREAD);
+       msg_ui_thread_fullview_launch(pData, pListData);
+       msg_ui_thread_list_load(pListData, TRUE);
+
+       if (pData->isRotate == true) {
+               PMSG_THREAD_SPLIT_DATA pSplitData = NULL;
+               pSplitData = msg_ui_thread_create_split_data();
+               msg_ui_thread_splitview_launch(pData, pSplitData);
+       }
+
+       /* Search mode from live-box */
+       char *key_type = NULL;
+
+       service_get_extra_data(service, MSG_BUNDLE_KEY_TYPE, &key_type);
+       if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_SEARCH_MODE) == 0) {
+               if (pListData->searchbar)
+                       elm_object_focus_set(pListData->searchbar, EINA_TRUE);
+       }
+}
+
+void msg_ui_thread_load_message_box(int list_type)
+{
+       D_ENTER;
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+
+       pListData = msg_ui_thread_create_thread_list_data(list_type, THREAD_LIST_APP_DATA_MSG);
+       msg_ui_thread_fullview_launch(pData, pListData);
+       msg_ui_thread_msg_list_load(pListData, list_type);
+
+       if (pData->isRotate == true) {
+               PMSG_THREAD_SPLIT_DATA pSplitData = NULL;
+               msg_ui_thread_destroy_split_data(pData->split_data);
+               pSplitData = msg_ui_thread_create_split_data();
+               msg_ui_thread_splitview_launch(pData, pSplitData);
+       } else {
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+               evas_object_hide(pListData->searchbar);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA pListData)
+{
+       char label[DEF_BUF_LEN_S+1] = {0,};
+
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !pData || !pListData, "pData or pListData is NULL");
+
+       pListData->content_ly = msg_ui_thread_create_content_layout(pData->navi_frame);
+       pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
+
+       pListData->searchbar = msg_ui_thread_create_searchbar_layout(pListData->content_ly, pListData);
+       if (pData->isRotate == true)
+               elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+
+       pListData->genlist = msg_ui_thread_create_genlist(pListData->content_ly, pListData);
+       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
+       //evas_object_data_set(pListData->genlist, "pData", pListData);
+
+       if (msg_ui_thread_get_prev_list(pListData) == NULL)
+               elm_win_conformant_set(pData->win_main, 1);
+
+       pListData->back_btn = elm_button_add(pData->navi_frame);
+       elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
+
+       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+       pListData->nf_it = elm_naviframe_item_push(pData->navi_frame, label, pListData->back_btn, NULL, pListData->content_ly, NULL);
+       msg_ui_thread_set_navi_toolbar_item(pListData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DATA pSplitData)
+{
+       D_ENTER;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !pData || !pSplitData, "pData or pSplitData is NULL");
+
+       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+       char label[DEF_BUF_LEN_S+1] = {0,};
+
+       if (!pSplitData->content_ly)
+               pSplitData->content_ly= elm_layout_add(pData->panes);
+       elm_layout_theme_set(pSplitData->content_ly, "layout", "application", "noindicator");
+       evas_object_size_hint_weight_set(pSplitData->content_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(pSplitData->content_ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (!pSplitData->navi_frame)
+               pSplitData->navi_frame= elm_naviframe_add(pSplitData->content_ly);
+       elm_object_part_content_set(pSplitData->content_ly, "elm.swallow.content", pSplitData->navi_frame);
+
+       if (!pSplitData->noc_ly)
+               pSplitData->noc_ly= msg_ui_thread_create_nocontent_layout(pSplitData->navi_frame);
+       elm_object_part_content_set(pSplitData->content_ly, "thread_list", pSplitData->noc_ly);
+       evas_object_show(pSplitData->noc_ly);
+
+       /*Push content to navi frame*/
+       if (!pSplitData->back_btn)
+               pSplitData->back_btn = elm_button_add(pSplitData->navi_frame);
+       elm_object_style_set(pSplitData->back_btn, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(pSplitData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
+       evas_object_show(pSplitData->back_btn);
+
+       if (!pSplitData->nf_it)
+               pSplitData->nf_it = elm_naviframe_item_push(pSplitData->navi_frame, NULL, NULL, NULL, pSplitData->noc_ly, "empty");
+
+       /* create navi title layout */
+       if (!pSplitData->title_layout)
+               pSplitData->title_layout = elm_layout_add(pSplitData->navi_frame);
+       elm_layout_file_set(pSplitData->title_layout, MSG_COMMON_EDJ, "title");
+       evas_object_size_hint_weight_set(pSplitData->title_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(pSplitData->title_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(pSplitData->title_layout);
+
+       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+       elm_object_part_text_set(pSplitData->title_layout, "title_text", label);
+       elm_object_item_part_content_set(pSplitData->nf_it, "title", pSplitData->title_layout);
+
+       /*Create composer button*/
+       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+               if (!pSplitData->composer_btn)
+                       pSplitData->composer_btn = elm_button_add(pSplitData->navi_frame);
+               elm_object_style_set(pSplitData->composer_btn, "naviframe/title_icon");
+
+               Evas_Object *icon = elm_icon_add(pSplitData->composer_btn);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_COMPOSE);
+               elm_image_resizable_set(icon, 1, 1);
+               evas_object_image_smooth_scale_set(icon, 0);
+               elm_object_content_set(pSplitData->composer_btn, icon);
+
+               evas_object_smart_callback_add(pSplitData->composer_btn, "clicked", msg_ui_thread_ctlbar_compose_cb, (void *)pListData);
+               evas_object_show(pSplitData->composer_btn);
+
+               elm_object_part_content_set(pSplitData->title_layout, "compose_btn", pSplitData->composer_btn);
+       }
+       elm_object_part_content_set(pSplitData->title_layout, "prev_btn", pSplitData->back_btn);
+
+       elm_object_part_content_set(pData->panes, "right", pSplitData->content_ly);
+       evas_object_show(pSplitData->content_ly);
+
+       D_LEAVE;
+}
+
+Evas_Object *msg_ui_thread_create_searchbar_layout(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (!pListData)
+               return NULL;
+
+       Evas_Object *layout = NULL;
+       layout = elm_layout_add(parent);
+       elm_layout_theme_set(layout, "layout", "searchbar", "cancel_button");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       Evas_Object *entry = NULL;
+       entry = elm_entry_add(layout);
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+
+       elm_object_part_content_set(layout, "elm.swallow.content", entry);
+       elm_object_part_text_set(layout, "elm.guidetext", dgettext("sys_string", "IDS_COM_BODY_SEARCH"));
+
+       Evas_Object *cancel_button = NULL;
+       cancel_button = elm_button_add(layout);
+       elm_object_part_content_set(layout, "button_cancel", cancel_button);
+       elm_object_style_set(cancel_button, "searchbar/default");
+       elm_object_text_set(cancel_button, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+
+       static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+       limit_filter_data.max_char_count = 0;
+       limit_filter_data.max_byte_count = DEF_MAX_MSG_TEXT_LEN;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
+
+       evas_object_smart_callback_add(entry, "focused",  msg_ui_thread_searchbar_entry_focus_cb, (void *)pListData);
+       evas_object_smart_callback_add(entry, "unfocused",  msg_ui_thread_searchbar_entry_unfocus_cb, (void *)pListData);
+       evas_object_smart_callback_add(cancel_button, "clicked", msg_ui_thread_searchbar_cancel_click_cb, (void *)pListData);
+       elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", msg_ui_thread_searchbar_eraser_clicked_cb, (void *)pListData);
+
+       evas_object_show(layout);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return layout;
+}
+
+Evas_Object *msg_ui_thread_create_genlist(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData)
+{
+       D_ENTER;
+
+       if (!pListData)
+               return NULL;
+
+       Evas_Object *genlist = NULL;
+
+       genlist = elm_genlist_add(parent);
+       elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+
+       evas_object_smart_callback_add(genlist, "drag,start,right", msg_ui_thread_gl_mode_right, (void *)pListData);
+       evas_object_smart_callback_add(genlist, "drag,start,left", msg_ui_thread_gl_mode_left, (void *)pListData);
+
+       /** "3text.tb" style is only supported COMPRESS MODE */
+       /** "3text.1icon" and "1text" are suported COMPRESS MODE also */
+       elm_genlist_mode_set(genlist, ELM_LIST_SCROLL);
+       msg_ui_thread_genlist_style_set(pListData);
+
+       D_LEAVE;
+
+       return genlist;
+}
+
+Evas_Object *msg_ui_thread_create_content_layout(Evas_Object *parent)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       /* Content layout */
+       Evas_Object *layout;
+       layout = elm_layout_add(parent);
+       elm_layout_file_set(layout, MSG_THREAD_THEME, "thread_content");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return layout;
+}
+
+Evas_Object *msg_ui_thread_create_nocontent_layout(Evas_Object *parent)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *noc_layout = NULL;
+
+       noc_layout = elm_layout_add(parent);
+       elm_layout_theme_set(noc_layout, "layout", "nocontents", "text");
+       elm_object_part_text_set(noc_layout, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NOMESSAGES"));
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return noc_layout;
+}
+
+void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, pData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       msg_reg_storage_change_callback(pData->msgHandle, &msg_ui_thread_storage_change_cb, pData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_thread_reset_thread_view(void *data, service_h service)
+{
+       D_ENTER;
+
+       if (!data)
+               return;
+
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       int i = 0;
+
+       if (pData->detail_layout) {
+               if (pData->isRotate == true)
+                       elm_naviframe_item_pop(pData->split_data->navi_frame);
+               else
+                       elm_naviframe_item_pop(pData->navi_frame);
+               pData->detail_layout = NULL;
+       }
+
+       for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+               if (pData->list_data[i] != NULL && pData->list_data[i]->list_type != THREAD_NORMAL_LIST_TYPE) {
+                        if (pData->list_data[i]->loaded_ug) {
+                               ug_destroy(pData->list_data[i]->loaded_ug);
+                               pData->list_data[i]->loaded_ug = NULL;
+                       }
+                       elm_naviframe_item_pop(pData->navi_frame);
+                       elm_genlist_clear(pData->list_data[i]->genlist);
+                       msg_ui_thread_destroy_thread_list_data(pData->list_data[i]);
+               }
+       }
+
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+
+       pListData = msg_ui_thread_get_default_list();
+       if (pListData == NULL)
+               return;
+
+       if (pListData->view_mode == THREAD_EDIT_VIEW)
+               msg_ui_thread_show_normal_mode(pListData);
+
+       msg_ui_thread_cancel_search_mode(pListData);
+
+       if (pData->isRotate == true) {
+               msg_ui_thread_destroy_split_data(pData->split_data);
+               msg_ui_thread_split_view_show(pData);
+       } else {
+               msg_ui_thread_split_view_hide(pData);
+       }
+
+       pListData->sel_gen_item = NULL;
+       pListData->sel_thread_id = 0;
+       pListData->sel_msg_id = 0;
+       pListData->view_mode = THREAD_NORMAL_VIEW;
+
+       msg_ui_thread_list_load(pListData, FALSE);
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_set_navi_toolbar_item(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (!pListData)
+               return;
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       Evas_Object *btn = NULL;
+       Evas_Object *btn2 = NULL;
+       int i = 0;
+
+       for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) {
+               if (pListData->toolbar_btn[i])
+                       evas_object_del(pListData->toolbar_btn[i]);
+       }
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button1");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button2");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_more_btn");
+
+       if (pListData->search_mode == THREAD_SEARCH_ON)
+               return;
+
+       if (!pListData->search_btn) {
+               pListData->search_btn = elm_button_add(pData->navi_frame);
+               elm_object_style_set(pListData->search_btn, "naviframe/title_icon");
+
+               Evas_Object *icon = elm_icon_add(pListData->search_btn);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH);
+               elm_image_resizable_set(icon, 1, 1);
+               evas_object_image_smooth_scale_set(icon, 0);
+               elm_object_content_set(pListData->search_btn, icon);
+               evas_object_smart_callback_add(pListData->search_btn, "clicked", msg_ui_thread_search_btn_clicked_cb, (void *)pListData);
+       }
+
+       if (pListData->view_mode == THREAD_EDIT_VIEW) {
+               btn = elm_button_add(pData->navi_frame);
+               elm_object_style_set(btn, "naviframe/toolbar/default");
+               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_multi_action_cb, pListData);
+               elm_object_item_part_content_set(pListData->nf_it, "toolbar_button1", btn);
+               pListData->toolbar_btn[CONTROLBAR_ITEM_1] = btn;
+
+               switch (pListData->list_type) {
+                       case THREAD_SIM_LIST_TYPE:
+                       case THREAD_SPAM_LIST_TYPE:
+                               btn2 = elm_button_add(pData->navi_frame);
+                               elm_object_style_set(btn, "naviframe/toolbar/left");
+                               elm_object_style_set(btn2, "naviframe/toolbar/right");
+                               evas_object_smart_callback_add(btn2, "clicked", msg_ui_thread_ctlbar_multi_action_cb, pListData);
+                               elm_object_item_part_content_set(pListData->nf_it, "toolbar_button2", btn2);
+
+                               pListData->toolbar_btn[CONTROLBAR_ITEM_2] = btn2;
+
+                               if (pListData->list_type == THREAD_SIM_LIST_TYPE)
+                                       elm_object_text_set(btn2, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE"));
+                               else if (pListData->list_type == THREAD_SPAM_LIST_TYPE)
+                                       elm_object_text_set(btn2, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE"));
+                               break;
+
+                       case THREAD_CBMSG_LIST_TYPE:
+                       default:
+                               break;
+               }
+
+               if (pListData->check_cnt <= 0) {
+                       elm_object_disabled_set(btn, EINA_TRUE);
+                       if (btn2 != NULL)
+                               elm_object_disabled_set(btn2, EINA_TRUE);
+               }
+
+               evas_object_hide(pListData->search_btn);
+               elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
+       } else {
+               btn = elm_button_add(pData->navi_frame);
+               elm_object_style_set(btn, "naviframe/toolbar/default");
+               elm_object_item_part_content_set(pListData->nf_it, "toolbar_button1", btn);
+               pListData->toolbar_btn[CONTROLBAR_ITEM_1] = btn;
+
+               switch (pListData->list_type) {
+                       case THREAD_CBMSG_LIST_TYPE:
+                               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+                               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData);
+
+                               if (pListData->item_cnt <= 0)
+                                       elm_object_disabled_set(btn, EINA_TRUE);
+                               break;
+
+                       case THREAD_SIM_LIST_TYPE:
+                               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_EDIT"));
+                               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData);
+
+                               if (pListData->item_cnt <= 0)
+                                       elm_object_disabled_set(btn, EINA_TRUE);
+                               break;
+
+                       case THREAD_NORMAL_LIST_TYPE:
+                               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK3_COMPOSE"));
+                               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_compose_cb, pListData);
+
+                               Evas_Object *btn3 = elm_button_add(pData->navi_frame);
+                               elm_object_style_set(btn3, "naviframe/more/default");
+                               evas_object_smart_callback_add(btn3, "clicked", msg_ui_thread_ctlbar_message_box_cb, pListData);
+                               elm_object_item_part_content_set(pListData->nf_it, "toolbar_more_btn", btn3);
+                               pListData->toolbar_btn[CONTROLBAR_ITEM_3] = btn3;
+
+                               break;
+
+                       case THREAD_SPAM_LIST_TYPE:
+                               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_EDIT"));
+                               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData);
+
+                               btn2 = elm_button_add(pData->navi_frame);
+                               elm_object_style_set(btn, "naviframe/toolbar/left");
+                               elm_object_style_set(btn2, "naviframe/toolbar/right");
+                               elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_BODY_SETTINGS"));
+                               evas_object_smart_callback_add(btn2, "clicked", msg_ui_thread_ctlbar_spam_setting_cb, pListData);
+                               elm_object_item_part_content_set(pListData->nf_it, "toolbar_button2", btn2);
+                               pListData->toolbar_btn[CONTROLBAR_ITEM_2] = btn2;
+
+                               if (pListData->item_cnt <=0)
+                                       elm_object_disabled_set(btn, EINA_TRUE);
+                               break;
+
+                       default:
+                               D_MSG("[ERROR] invalid viewmode");
+                               return;
+               }
+
+               Evas_Object *search_icon = elm_object_content_get(pListData->search_btn);
+               if (pListData->item_cnt > 0)
+                       elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH);
+               else
+                       elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM);
+
+               if (pListData->search_mode == THREAD_SEARCH_OFF && msg_ui_thread_rotation_get() == false) {
+                       elm_object_item_part_content_set(pListData->nf_it, "title_right_btn", pListData->search_btn);
+               } else {
+                       evas_object_hide(pListData->search_btn);
+                       elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_thread_show_toolbar(PMSG_THREAD_LIST_DATA pListData)
+{
+       D_ENTER;
+
+       if (!pListData)
+               return;
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pListData->back_btn) {
+               pListData->back_btn = elm_button_add(pData->navi_frame);
+               evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
+               elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default");
+               elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn);
+       }
+       elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn);
+
+       msg_ui_thread_set_navi_toolbar_item(pListData);
+       elm_object_item_signal_emit(pListData->nf_it, "elm,state,toolbar,open", "");
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_hide_toolbar(PMSG_THREAD_LIST_DATA pListData, bool bDeleteBtn)
+{
+       D_ENTER;
+
+       if (!pListData)
+               return;
+
+       if (bDeleteBtn) {
+               int i = 0;
+
+               if (pListData->back_btn) {
+                       evas_object_del(pListData->back_btn);
+                       pListData->back_btn = NULL;
+               }
+
+               for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) {
+                       if (pListData->toolbar_btn[i]) {
+                               evas_object_del(pListData->toolbar_btn[i]);
+                               pListData->toolbar_btn[i] = NULL;
+                       }
+               }
+       }
+       elm_object_item_part_content_unset(pListData->nf_it, "prev_btn");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button1");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button2");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_more_btn");
+
+       elm_object_item_signal_emit(pListData->nf_it, "elm,state,toolbar,close", "");
+       D_LEAVE;
+}
+
+void msg_ui_thread_rotation_set(void *data, int rot)
+{
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+
+       if (!pData)
+               return;
+
+       if (rot == THREAD_ROTATE_ANGLE_LANDSCAPE || rot == THREAD_ROTATE_ANGLE_LANDSCAPE_UPSIDEDOWN) {
+               pData->isRotate = true;
+               msg_ui_thread_split_view_show(pData);
+       } else {
+               pData->isRotate = false;
+               msg_ui_thread_split_view_hide(pData);
+       }
+}
+
+bool msg_ui_thread_rotation_get(void)
+{
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pData)
+               return false;
+
+       return pData->isRotate;
+}
+
+void msg_ui_thread_lang_changed(void *data)
+{
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       int i = 0;
+
+       if (!pData)
+               return;
+
+       for (i = 0; i < MSG_THREAD_LIST_MAX_COUNT; i++) {
+               if (pData->list_data[i] != NULL) {
+                       char label[DEF_BUF_LEN_S+1] = {0,};
+
+                       pListData = pData->list_data[i];
+
+                       elm_genlist_realized_items_update(pListData->genlist);
+                       elm_object_part_text_set(pListData->noc_ly, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NOMESSAGES"));
+                       elm_object_part_text_set(pListData->searchbar, "elm.guidetext", dgettext("sys_string", "IDS_COM_BODY_SEARCH"));
+
+                       if (pListData->popup) {
+                               evas_object_del(pListData->popup);
+                               pListData->popup = NULL;
+                       }
+
+                       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+                       elm_object_item_text_set(pListData->nf_it, label);
+                       msg_ui_thread_set_navi_toolbar_item(pListData);
+               }
+       }
+
+       if (pData->split_data) {
+               char label[DEF_BUF_LEN_S+1] = {0,};
+               pListData = msg_ui_thread_get_current_list();
+
+               msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+               elm_object_part_text_set(pData->split_data->title_layout, "title_text", label);
+               elm_object_part_text_set(pData->split_data->noc_ly, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NOMESSAGES"));
+       }
+}
+
+void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData)
+{
+       D_ENTER;
+
+       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+
+       elm_panes_content_left_size_set(pData->panes, 0.4);
+
+       if (pListData) {
+               if (pListData->view_mode == THREAD_NORMAL_VIEW && pListData->item_cnt > 0) {
+                       edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+                       evas_object_show(pListData->searchbar);
+                       elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+               }
+
+               elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_FALSE);
+               msg_ui_thread_hide_toolbar(pListData, true);
+               if (pListData->search_btn) {
+                       evas_object_hide(pListData->search_btn);
+                       elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
+               }
+
+               elm_object_part_content_set(pData->panes, "left", pData->layout_main);
+               evas_object_show(pData->layout_main);
+               Evas_Object * layout = msg_ui_get_composer_ug_viewer_layout();
+               if (layout) {
+                       elm_object_part_content_set(pData->panes, "right", layout);
+                       evas_object_show(layout);
+                       if (pData->split_data)
+                               msg_ui_thread_destroy_split_data(pData->split_data);
+               } else {
+                       if (!pData->split_data) {
+                               msg_ui_thread_create_split_data();
+                               msg_ui_thread_splitview_launch(pData, pData->split_data);
+                       }
+
+                       if (pData->detail_layout) {
+                               elm_naviframe_item_pop(pData->navi_frame);
+                               pData->detail_layout = NULL;
+                               if (pListData->sel_gen_item > 0)
+                                       msg_ui_thread_launch_msg_detail_view(pListData, elm_object_item_data_get(pListData->sel_gen_item));
+                       }
+               }
+       }
+
+       elm_object_signal_emit(pData->panes, "elm,panes,pair", "");
+}
+
+void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData)
+{
+       D_ENTER;
+
+       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+
+       elm_object_part_content_set(pData->panes, "left", pData->layout_main);
+       elm_panes_content_left_size_set(pData->panes, 1.0);
+       if (pData->split_data) {
+               elm_object_part_content_unset(pData->panes, "right");
+               msg_ui_thread_destroy_split_data(pData->split_data);
+       }
+
+       if (pListData) {
+               if (pListData->search_mode == THREAD_SEARCH_OFF) {
+                       msg_ui_thread_show_toolbar(pListData);
+
+                       if (pListData->view_mode == THREAD_NORMAL_VIEW) {
+                               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+                               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+                               evas_object_hide(pListData->searchbar);
+                       }
+               }
+               elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_TRUE);
+
+               Evas_Object * layout = msg_ui_get_composer_ug_viewer_layout();
+               if (layout) {
+                       elm_object_part_content_set(pData->panes, "right", layout);
+                       elm_object_part_content_unset(pData->panes, "left");
+                       elm_panes_content_left_size_set(pData->panes, 0.0);
+                       evas_object_hide(pData->layout_main);
+               } else if (pData->detail_layout) {
+                       pData->detail_layout = NULL;
+                       if (pListData->sel_gen_item > 0)
+                               msg_ui_thread_launch_msg_detail_view(pListData, elm_object_item_data_get(pListData->sel_gen_item));
+               }
+       }
+       elm_object_signal_emit(pData->panes, "elm,panes,unpair", "");
+}
diff --git a/thread/src/msg-ui-thread-util.c b/thread/src/msg-ui-thread-util.c
new file mode 100755 (executable)
index 0000000..4eae014
--- /dev/null
@@ -0,0 +1,1633 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "msg-ui-thread-main.h"
+#include "appsvc.h"
+#include <status.h>
+
+static void __msg_ui_thread_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void __msg_ui_thread_ug_destroy_cb(ui_gadget_h ug, void *priv);
+static Evas_Object *__msg_ui_thread_create_msg_detail_layout(Evas_Object* parent);
+static void __msg_ui_thread_create_msg_detail_content(Evas_Object *parent, void *data, int msg_id);
+static void __msg_ui_thread_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_action_popup_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_action_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_action_popup_checked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_addr_select_popup_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_addr_select_popup_destroy(void *data);
+static void __msg_ui_thread_addr_select_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_addr_select_popup_gl_del(void *data, Evas_Object *obj);
+static char *__msg_ui_thread_addr_select_popup_gl_text_get(void *data, Evas_Object *obj, const char *part);
+
+
+int msg_ui_thread_launch_voice_call(const char *call_num)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int ret = -1; /* negative values are error value */
+       service_h svc_handle;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               char telnum[255] = {0,};
+               service_set_operation(svc_handle, APPSVC_OPERATION_CALL);
+               snprintf(telnum, sizeof(telnum), "tel:%s", call_num);    /* Number to make a call */
+               service_set_uri(svc_handle, telnum);
+               ret = service_send_launch_request(svc_handle, NULL, NULL);
+
+               service_destroy(svc_handle);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return ret;
+}
+
+void msg_ui_thread_launch_video_call(const char *call_num)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !call_num);
+
+       service_h svc_handle = NULL;
+       char tel_num[DEF_BUF_LEN] = {0,};
+       char contact_id[DEF_BUF_LEN_D] = {0,};
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/vt");
+
+               if (call_num) {
+                       snprintf(tel_num, sizeof(tel_num), "tel:%s", call_num);
+                       service_set_uri(svc_handle, tel_num);
+               }
+               snprintf(contact_id, sizeof(contact_id), "%d", -1);
+               service_add_extra_data(svc_handle, "ctindex", contact_id);
+
+               service_send_launch_request(svc_handle, NULL, NULL);
+               service_destroy(svc_handle);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_thread_launch_spam_setting(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, pListData == NULL);
+
+       pListData->cbs.layout_cb = __msg_ui_thread_ug_layout_cb;
+       pListData->cbs.result_cb = NULL;
+       pListData->cbs.destroy_cb = __msg_ui_thread_ug_destroy_cb;
+       pListData->cbs.priv = (void *)pListData;
+
+       service_h svc_handle = NULL;
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_SPAM_SETTING);
+               pListData->loaded_ug = ug_create(NULL, MSG_SETTING_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &pListData->cbs);
+               service_destroy(svc_handle);
+       }
+}
+
+void msg_ui_thread_launch_viewer_ug(PMSG_THREAD_LIST_DATA pListData, int nMsgId)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, pListData == NULL);
+
+       pListData->cbs.layout_cb = __msg_ui_thread_ug_layout_cb;
+       pListData->cbs.result_cb = NULL;
+       pListData->cbs.destroy_cb = __msg_ui_thread_ug_destroy_cb;
+       pListData->cbs.priv = (void *)pListData;
+
+       service_h svc_handle = NULL;
+       char msgid[10] = {0,};
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+       } else {
+               snprintf(msgid, sizeof(msgid), "%d", nMsgId);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, msgid);
+
+               if (pListData->loaded_ug) {
+                       ug_send_message(pListData->loaded_ug, svc_handle);
+               } else {
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MESSAGE_BOX, MSG_BUNDLE_VALUE_MSGBOX_PROTECTED);
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_INDICATOR_MODE, MSG_BUNDLE_VALUE_NO_INDICATOR);
+                       pListData->loaded_ug = ug_create(NULL, MSG_VIEWER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &pListData->cbs);
+               }
+               service_destroy(svc_handle);
+       }
+
+       if (!pListData->loaded_ug) {
+               msg_ui_thread_show_notify(pListData, "Unable to open message");
+               return;
+       }
+
+       D_LEAVE;
+       return;
+}
+
+static void __msg_ui_thread_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       D_ENTER;
+
+       if (!ug || !priv)
+               return;
+
+       Evas_Object *base, *win;
+
+       base = ug_get_layout(ug);
+       if (!base){
+               ug_destroy(ug);
+               return;
+       }
+
+       win = ug_get_window();
+
+       switch (mode) {
+               case UG_MODE_FULLVIEW:
+                       evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_show(base);
+                       break;
+               case UG_MODE_FRAMEVIEW:
+               default:
+                       break;
+       }
+}
+
+static void __msg_ui_thread_ug_destroy_cb(ui_gadget_h ug, void *priv)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !ug || !priv);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)priv;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (ug == pListData->loaded_ug) {
+               ug_destroy(ug);
+               pListData->loaded_ug = NULL;
+
+               if (pData->isRotate == false) {
+                       elm_object_part_content_set(pData->panes, "left", pData->layout_main);
+                       elm_object_part_content_unset(pData->panes, "right");
+                       elm_panes_content_left_size_set(pData->panes, 1.0);
+               } else {
+                       char label[DEF_BUF_LEN_S+1] = {0,};
+
+                       if (!pData->split_data) {
+                               msg_ui_thread_create_split_data();
+                               msg_ui_thread_splitview_launch(pData, pData->split_data);
+                       }
+                       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+
+                       if (pData->split_data)
+                               elm_object_part_text_set(pData->split_data->title_layout, "title_text", label);
+               }
+       }
+
+       if (pListData->search_mode == THREAD_SEARCH_ON)
+               elm_object_focus_set(pListData->searchbar, EINA_TRUE);
+
+       if (pListData->sel_msg_id) {
+               msg_ui_thread_list_msg_item_update(pListData, pListData->sel_msg_id);
+
+               pListData->sel_gen_item = NULL;
+               pListData->sel_msg_id = 0;
+       }
+}
+
+void msg_ui_thread_launch_msg_detail_view(PMSG_THREAD_LIST_DATA pListData, PMSG_APP_THREAD_MSG_DATA_S item_data)
+{
+       D_ENTER;
+
+       if (!pListData || !item_data) {
+               D_EMSG("[ERROR] pListData or item_data is NULL");
+               return;
+       }
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       Evas_Object *detail_layout = NULL;
+       Evas_Object *navi_frame = NULL;
+
+       if (pData->isRotate == true)
+               navi_frame = pData->split_data->navi_frame;
+       else
+               navi_frame = pData->navi_frame;
+
+       if (pData->detail_layout) {
+               msg_ui_thread_update_msg_detail_view(item_data);
+               return;
+       }
+
+       // create layout
+       detail_layout = __msg_ui_thread_create_msg_detail_layout(navi_frame);
+
+       // create content layout
+       Evas_Object *scroller = NULL;
+       Evas_Object *entry = NULL;
+
+       /** create scroller */
+       scroller = elm_scroller_add(detail_layout);
+       elm_scroller_bounce_set(scroller, EINA_FALSE, EINA_TRUE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+       evas_object_show(scroller);
+
+       /** create entry */
+       entry = elm_entry_add(scroller);
+       evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, 0.0);
+       evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0);
+       elm_entry_editable_set(entry, EINA_FALSE);
+       elm_object_content_set(scroller, entry);
+       evas_object_show(entry);
+
+       __msg_ui_thread_create_msg_detail_content(entry, pData, item_data->msg_id);
+       elm_object_part_content_set(detail_layout, "elm.swallow.content", scroller);
+
+       //push navi item
+       Elm_Object_Item *nf_it = NULL;
+       char title[DEF_BUF_LEN+1] = {0,};
+       char str_name[DEF_BUF_LEN+1] = {0,};
+       char temp[DEF_BUF_LEN+1] = {0,};
+       int i = 0;
+
+       for (i = 0; i < item_data->addr_cnt; i++) {
+               if (item_data->addr_info[i]->contact_id > 0 && item_data->addr_info[i]->display_name[0] != '\0') {
+                       snprintf(str_name, sizeof(str_name), "%s", item_data->addr_info[i]->display_name);
+               } else {
+                       if (item_data->addr_info[i]->address[0] != '\0')
+                               snprintf(str_name, sizeof(str_name), "%s", item_data->addr_info[i]->address);
+                       else
+                               snprintf(str_name, sizeof(str_name), dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+               }
+
+               snprintf(temp, sizeof(temp), "%s", title);
+
+               if (*temp)
+                       snprintf(title, sizeof(title), "%s, %s", temp, str_name);
+               else
+                       snprintf(title, sizeof(title), "%s", str_name);
+       }
+
+       if (pData->isRotate == true) {
+               Evas_Object *back_btn = NULL;
+               Evas_Object *title_layout = NULL;
+
+               back_btn = elm_button_add(navi_frame);
+               elm_object_style_set(back_btn, "naviframe/title/icon/previous");
+               evas_object_smart_callback_add(back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
+               evas_object_show(back_btn);
+
+               title_layout = elm_layout_add(navi_frame);
+               elm_layout_file_set(title_layout, MSG_COMMON_EDJ, "title");
+               evas_object_size_hint_weight_set(title_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(title_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_show(title_layout);
+
+               nf_it = elm_naviframe_item_push(navi_frame, NULL, NULL, NULL, detail_layout, "empty");
+
+               elm_object_part_text_set(title_layout, "title_text", title);
+               elm_object_item_part_content_set(nf_it, "title", title_layout);
+               elm_object_part_content_set(title_layout, "prev_btn", back_btn);
+
+               elm_object_item_part_content_unset(nf_it, "prev_btn");
+               elm_object_item_signal_emit(nf_it, "elm,state,toolbar,close", "");
+       } else {
+               Evas_Object *back_btn = NULL;
+
+               back_btn = elm_button_add(navi_frame);
+               elm_object_style_set(back_btn, "naviframe/back_btn/default");
+               evas_object_smart_callback_add(back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
+
+               nf_it = elm_naviframe_item_push(navi_frame, title, back_btn, NULL, detail_layout, NULL);
+       }
+       pData->detail_layout = detail_layout;
+       pData->detail_nf_it = nf_it;
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_update_msg_detail_view(PMSG_APP_THREAD_MSG_DATA_S item_data)
+{
+       D_ENTER;
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !item_data, "item_data is NULL");
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       Evas_Object *title_layout = NULL;
+       Evas_Object *scroller = NULL;
+       Evas_Object *entry = NULL;
+
+       //push navi item
+       char title[DEF_BUF_LEN+1] = {0,};
+       char str_name[DEF_BUF_LEN+1] = {0,};
+       char temp[DEF_BUF_LEN+1] = {0,};
+       int i = 0;
+
+       for (i = 0; i < item_data->addr_cnt; i++) {
+               if (item_data->addr_info[i]->contact_id > 0 && item_data->addr_info[i]->display_name[0] != '\0') {
+                       snprintf(str_name, sizeof(str_name), "%s", item_data->addr_info[i]->display_name);
+               } else {
+                       if (item_data->addr_info[i]->address[0] != '\0')
+                               snprintf(str_name, sizeof(str_name), "%s", item_data->addr_info[i]->address);
+                       else
+                               snprintf(str_name, sizeof(str_name), dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+               }
+
+               snprintf(temp, sizeof(temp), "%s", title);
+
+               if (*temp)
+                       snprintf(title, sizeof(title), "%s, %s", temp, str_name);
+               else
+                       snprintf(title, sizeof(title), "%s", str_name);
+       }
+
+       title_layout = elm_object_item_part_content_get(pData->detail_nf_it, "title");
+       if (title_layout)
+               elm_object_part_text_set(title_layout, "title_text", title);
+
+       scroller = elm_object_part_content_get(pData->detail_layout, "elm.swallow.content");
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !scroller, "scroller is NULL");
+
+       entry = elm_object_content_get(scroller);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !entry, "entry is NULL");
+
+       __msg_ui_thread_create_msg_detail_content(entry, pData, item_data->msg_id);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__msg_ui_thread_create_msg_detail_layout(Evas_Object* parent)
+{
+       D_ENTER;
+
+       Evas_Object *layout = NULL;
+
+       layout = elm_layout_add(parent);
+
+       elm_layout_theme_set(layout, "layout", "application", "noindicator");
+       elm_layout_file_set(layout, MSG_THREAD_THEME, "thread_detail_layout");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       return layout;
+}
+
+static void __msg_ui_thread_create_msg_detail_content(Evas_Object *parent, void *data, int msg_id)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !data, "data is NULL");
+
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       char buf[MAX_MSG_TEXT_LEN+1] = {0, };
+       char *str = NULL;
+       msg_error_t err =  MSG_SUCCESS;
+       int msgSize = 0;
+
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       if (msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_create_struct(MSG_STRUCT_MESSAGE_INFO) is failed!");
+               return;
+       }
+
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       if (sendOpt == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_create_struct(MSG_STRUCT_SENDOPT) is failed!");
+               msg_release_struct(&msgInfo);
+               return;
+       }
+
+       err = msg_get_message(pData->msgHandle, (msg_message_id_t)msg_id, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message() is failed : err = %d", err);
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+
+       msg_get_int_value(msgInfo, MSG_MESSAGE_DATA_SIZE_INT, &msgSize);
+       if (msgSize > 0) {
+               int msgType = 0;
+               msg_get_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, &msgType);
+
+               if (msgType == MSG_TYPE_MMS_NOTI) {
+                       char subject[DEF_BUF_LEN_S+1] = {0,};
+
+                       msg_get_str_value(msgInfo, MSG_MESSAGE_SUBJECT_STR, subject, DEF_BUF_LEN_S);
+                       if (strlen(subject) > 0) {
+                               snprintf(buf, sizeof(buf), "%s", subject);
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_str_value(MSG_MESSAGE_SUBJECT_STR) is failed !!");
+                               snprintf(buf, sizeof(buf), "Message subject is empty !!");
+                       }
+               } else {
+                       char msgText[msgSize + 1];
+                       memset(msgText, 0, msgSize + 1);
+
+                       msg_get_str_value(msgInfo, MSG_MESSAGE_SMS_DATA_STR, msgText, msgSize);
+                       if (strlen(msgText) > 0) {
+                               snprintf(buf, sizeof(buf), "%s", msgText);
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_str_value(MSG_MESSAGE_SMS_DATA_STR) is failed !!");
+                               snprintf(buf, sizeof(buf), "Message is empty !!");
+                       }
+               }
+       } else
+               snprintf(buf, sizeof(buf), "Message is empty !!");
+
+       buf[MAX_MSG_TEXT_LEN] = '\n';
+       str = elm_entry_utf8_to_markup(buf);
+       elm_object_text_set(parent, str);
+
+       if (str != NULL) {
+               free(str);
+               str = NULL;
+       }
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       return;
+}
+
+void msg_ui_thread_get_time_format(PMSG_THREAD_DATA pData)
+{
+       int timeformat = msg_common_get_timeformat();
+
+       if (timeformat == MSG_TIME_FORMAT_UNKNOWN)
+               pData->time_fmt = MSG_TIME_FORMAT_12H;
+       else
+               pData->time_fmt = timeformat;
+
+       D_MSG("%s", pData->time_fmt == MSG_TIME_FORMAT_24H ? "TIME FORMAT = 24h" : "TIME FORMAT = 12h");
+}
+
+void msg_ui_thread_get_locale(PMSG_THREAD_DATA pData)
+{
+       const char *locale;
+
+       locale = msg_common_get_default_locale();
+
+       if (locale) {
+               strncpy(pData->locale, locale, sizeof(pData->locale)-1);
+       }
+
+       D_MSG("Locale = %s", pData->locale);
+}
+
+void msg_ui_thread_get_bubble_data(PMSG_APP_THREAD_DATA_S item_data, service_h svc_handle)
+{
+       MSG_UI_ENTER();
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !item_data || !svc_handle);
+
+       char buf[DEF_BUF_LEN_S] = {'0',};
+       char buf_contact[DEF_BUF_LEN_S] = {'0',};
+
+       snprintf(buf, DEF_BUF_LEN_S, "%d", item_data->thread_id);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, buf);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_NAME, item_data->thread_name);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_CONTACT_ID, buf_contact);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_INDICATOR_MODE, MSG_BUNDLE_VALUE_NO_INDICATOR);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_get_composer_data(int msg_id, service_h svc_handle)
+{
+       MSG_UI_ENTER();
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !svc_handle);
+
+       char buf[DEF_BUF_LEN_S+1] = {0,};
+
+       snprintf(buf, DEF_BUF_LEN_S, "%d", msg_id);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, buf);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_EDIT);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
+
+       MSG_UI_LEAVE();
+}
+
+void msg_ui_thread_cancel_edit_mode(PMSG_THREAD_LIST_DATA pListData)
+{
+       D_ENTER;
+       Elm_Object_Item *it;
+
+       elm_check_state_set(pListData->sel_all_box, EINA_FALSE);
+
+       it = elm_genlist_first_item_get(pListData->genlist);
+       while (it) {
+               if (elm_genlist_item_parent_get(it) == NULL) {
+                       it = elm_genlist_item_next_get(it);
+                       continue;
+               }
+
+               if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD) {
+                       PMSG_APP_THREAD_DATA_S item_data = NULL;
+
+                       item_data = (PMSG_APP_THREAD_DATA_S)elm_object_item_data_get(it);
+                       if (item_data)
+                               item_data->is_check = EINA_FALSE;
+               } else {
+                       PMSG_APP_THREAD_MSG_DATA_S item_data = NULL;
+
+                       item_data = (PMSG_APP_THREAD_MSG_DATA_S)elm_object_item_data_get(it);
+                       if (item_data)
+                               item_data->is_check = EINA_FALSE;
+               }
+
+               it = elm_genlist_item_next_get(it);
+       }
+
+       pListData->chk_list = eina_list_free(pListData->chk_list);
+
+       elm_object_part_content_unset(pListData->content_ly, "sel_all");
+       evas_object_hide(pListData->sel_all_ly);
+       elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+       if (msg_ui_thread_rotation_get() == false)
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+       else
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+
+       elm_genlist_decorate_mode_set(pListData->genlist, EINA_FALSE);
+       elm_genlist_select_mode_set(pListData->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+       pListData->view_mode = THREAD_NORMAL_VIEW;
+}
+
+void msg_ui_thread_show_normal_mode(PMSG_THREAD_LIST_DATA pListData)
+{
+       D_ENTER;
+
+       if (pListData->view_mode == THREAD_EDIT_VIEW)
+               msg_ui_thread_cancel_edit_mode(pListData);
+
+       if (pListData->selectioninfo_layout) {
+               evas_object_del(pListData->selectioninfo_layout);
+               pListData->selectioninfo_layout = NULL;
+       }
+
+       if (pListData->select_info) {
+               evas_object_del(pListData->select_info);
+               pListData->select_info = NULL;
+       }
+
+       msg_ui_thread_set_navi_toolbar_item(pListData);
+
+       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
+               elm_object_item_text_set(pListData->nf_it, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"));
+       else if (pListData->list_type == THREAD_SPAM_LIST_TYPE)
+               elm_object_item_text_set(pListData->nf_it, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"));
+       else if (pListData->list_type == THREAD_SIM_LIST_TYPE)
+               elm_object_item_text_set(pListData->nf_it, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"));
+       else if (pListData->list_type == THREAD_CBMSG_LIST_TYPE)
+               elm_object_item_text_set(pListData->nf_it, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"));
+
+       if (msg_ui_thread_rotation_get() == false) {
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+               evas_object_hide(pListData->searchbar);
+
+               elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_TRUE);
+               msg_ui_thread_show_toolbar(pListData);
+       } else {
+               elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_FALSE);
+               msg_ui_thread_hide_toolbar(pListData, true);
+       }
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_select_item_by_thread_id(PMSG_THREAD_LIST_DATA pListData, int thread_id)
+{
+       if (thread_id <= 0)
+               return;
+
+       Elm_Object_Item *gen_item = NULL;
+
+       gen_item = elm_genlist_first_item_get(pListData->genlist);
+
+       while (gen_item) {
+               if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                       gen_item = elm_genlist_item_next_get(gen_item);
+                       continue;
+               }
+
+               PMSG_APP_THREAD_DATA_S item_data = (PMSG_APP_THREAD_DATA_S)elm_object_item_data_get(gen_item);
+               if (thread_id == item_data->thread_id) {
+                       pListData->sel_gen_item = gen_item;
+                       break;
+               }
+
+               gen_item = elm_genlist_item_next_get(gen_item);
+       }
+
+       elm_genlist_item_show(gen_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+void msg_ui_thread_select_item_by_msg_id(PMSG_THREAD_LIST_DATA pListData, int msg_id)
+{
+       if (msg_id <= 0)
+               return;
+
+       Elm_Object_Item *gen_item = NULL;
+       gen_item = elm_genlist_first_item_get(pListData->genlist);
+
+       while (gen_item) {
+               if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                       gen_item = elm_genlist_item_next_get(gen_item);
+                       continue;
+               }
+
+               PMSG_APP_THREAD_MSG_DATA_S item_data = (PMSG_APP_THREAD_MSG_DATA_S)elm_object_item_data_get(gen_item);
+               if (msg_id == item_data->msg_id) {
+                       pListData->sel_gen_item = gen_item;
+                       break;
+               }
+
+               gen_item = elm_genlist_item_next_get(gen_item);
+       }
+
+       elm_genlist_item_show(gen_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
+}
+
+void msg_ui_thread_show_notify(PMSG_THREAD_LIST_DATA pListData, const char *msg)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pListData);
+
+       Evas_Object *popup;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       popup = elm_popup_add(pData->win_main);
+
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(popup, msg);
+
+       evas_object_smart_callback_add(popup, "timeout", __msg_ui_thread_popup_response_cb, pListData);
+       elm_popup_timeout_set(popup, 0.8);
+       evas_object_show(popup);
+
+       pListData->popup = popup;
+}
+
+static void __msg_ui_thread_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !data);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       if ((int)event_info != 5 && obj) {
+               evas_object_del(obj);
+               pListData->popup = NULL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_thread_show_action_popup(PMSG_THREAD_LIST_DATA pListData, int actionType, const char *msg)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pListData);
+
+       Evas_Object *popup;
+       Evas_Object *btn_ok;
+       Evas_Object *btn_cancel;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       popup = elm_popup_add(pData->win_main);
+
+       btn_ok = elm_button_add(popup);
+       elm_object_style_set(btn_ok, "popup_button/default");
+       elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+       elm_object_part_content_set(popup, "button1", btn_ok);
+       evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_thread_action_popup_ok_clicked_cb, pListData);
+
+       btn_cancel = elm_button_add(popup);
+       elm_object_style_set(btn_cancel, "popup_button/default");
+       elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", btn_cancel);
+       evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_thread_action_popup_cancel_clicked_cb, pListData);
+
+       if (actionType == THREAD_ACTION_DELETE) {
+               bool bProtect = false;
+               Eina_List *list;
+               void* item_data = NULL;
+               msg_error_t err =  MSG_SUCCESS;
+
+               msg_struct_t threadInfo = msg_create_struct(MSG_STRUCT_THREAD_INFO);
+               msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+               msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+               if (pListData->view_mode == THREAD_EDIT_VIEW) {
+                       EINA_LIST_FOREACH(pListData->chk_list, list, item_data) {
+                               if (item_data) {
+                                       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+                                               PMSG_APP_THREAD_DATA_S data = (PMSG_APP_THREAD_DATA_S)item_data;
+
+                                               err = msg_get_thread(msg_ui_thread_get_data_handle(), data->thread_id, threadInfo);
+                                               if (err != MSG_SUCCESS) {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_thread() is failed : err = %d", err);
+                                                       break;
+                                               }
+                                               msg_get_bool_value(threadInfo, MSG_THREAD_PROTECTED_BOOL, &bProtect);
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "bProtect = %d", bProtect);
+                                       } else {
+                                               PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+
+                                               err = msg_get_message(msg_ui_thread_get_data_handle(), (msg_message_id_t)data->msg_id, msgInfo, sendOpt);
+                                               if (err != MSG_SUCCESS) {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message() is failed : err = %d", err);
+                                                       break;
+                                               }
+                                               msg_get_bool_value(msgInfo, MSG_MESSAGE_PROTECTED_BOOL, &bProtect);
+                                       }
+
+                                       if (bProtect == true)
+                                               break;
+                               }
+                       }
+               } else {
+                       Elm_Object_Item* it_sweep = NULL;
+                       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+                       item_data = elm_object_item_data_get(it_sweep);
+
+                       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+                               PMSG_APP_THREAD_DATA_S data = (PMSG_APP_THREAD_DATA_S)item_data;
+
+                               err = msg_get_thread(msg_ui_thread_get_data_handle(), data->thread_id, threadInfo);
+                               if (err == MSG_SUCCESS)
+                                       msg_get_bool_value(threadInfo, MSG_THREAD_PROTECTED_BOOL, &bProtect);
+
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "bProtect = %d", bProtect);
+                       } else {
+                               PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+
+                               err = msg_get_message(msg_ui_thread_get_data_handle(), (msg_message_id_t)data->msg_id, msgInfo, sendOpt);
+                               if (err == MSG_SUCCESS)
+                                       msg_get_bool_value(msgInfo, MSG_MESSAGE_PROTECTED_BOOL, &bProtect);
+                       }
+               }
+               msg_release_struct(&threadInfo);
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+
+               if (bProtect == true) {
+                       Evas_Object *check;
+                       Evas_Object *label_text;
+                       Evas_Object *layout;
+
+                       label_text = elm_label_add(popup);
+                       elm_layout_file_set(label_text, MSG_COMMON_EDJ, "popup_with_checkbox");
+                       elm_object_text_set(label_text, msg);
+                       evas_object_size_hint_weight_set(label_text, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_size_hint_align_set(label_text, EVAS_HINT_FILL, EVAS_HINT_FILL);
+                       evas_object_show(label_text);
+
+                       layout = elm_layout_add(popup);
+                       elm_layout_file_set(layout, MSG_COMMON_EDJ, "popup_with_checkbox");
+                       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+                       check = elm_check_add(popup);
+                       evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+                       evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_thread_action_popup_checked_cb, pListData);
+                       evas_object_show(check);
+
+                       elm_object_part_text_set(layout, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"));
+                       elm_object_part_content_set(layout, "elm.swallow.check", check);
+                       elm_object_part_content_set(layout, "elm.swallow.content", label_text);
+                       evas_object_show(layout);
+                       elm_object_content_set(popup, layout);
+               } else {
+                       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       elm_object_text_set(popup, msg);
+               }
+       } else {
+               evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_object_text_set(popup, msg);
+       }
+
+       evas_object_data_set(popup, MSG_THREAD_POPUP_DATA, MSG_THREAD_DEL_CONFIRM);
+       evas_object_show(popup);
+
+       pListData->popup = popup;
+       pListData->action_type = actionType;
+}
+
+static void __msg_ui_thread_action_popup_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       char address[DEF_THREAD_ADDR_LEN+1] = {0,};
+       bool remove_it = false;
+       bool remove_ug = false;
+       void *addr_data = NULL;
+
+       msg_error_t err =  MSG_SUCCESS;
+       Elm_Object_Item *it = NULL;
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       if (pListData->view_mode == THREAD_EDIT_VIEW) {
+               pListData->popup = msg_ui_thread_show_notify_with_progressbar(pListData, pListData->check_cnt);
+               pListData->multi_action_thread = ecore_thread_feedback_run(msg_ui_thread_multi_action_thread_fn, msg_ui_thread_multi_action_thread_feedback_fn, NULL, NULL, (void *)pListData, EINA_TRUE);
+       } else {
+               it = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+               if (!it)
+                       goto __UNABLE_TO_DELETE;
+
+               elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+               if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD) {
+                       PMSG_APP_THREAD_DATA_S item_data = elm_object_item_data_get(it);
+                       if (!item_data)
+                               goto __UNABLE_TO_DELETE;
+
+                       if (pListData->action_type == THREAD_ACTION_DELETE) {
+                               err = msg_delete_thread_message_list(msg_ui_thread_get_data_handle(), item_data->thread_id, pListData->include_protected_msg);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pListData->include_protected_msg = %d", pListData->include_protected_msg);
+                               remove_it = true;
+
+                               if (pListData->sel_thread_id == item_data->thread_id)
+                                       remove_ug = true;
+
+                               pListData->include_protected_msg = false;
+                       } else if (pListData->action_type == THREAD_ACTION_BLOCK) {
+                               msg_struct_list_s addrList;
+
+                               memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+                               msg_get_address_list(msg_ui_thread_get_data_handle(), item_data->thread_id, &addrList);
+
+                               char strNumber[DEF_THREAD_ADDR_LEN + 1] = {0,};
+
+                               msg_get_str_value(addrList.msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+                               strncpy(address, strNumber, DEF_THREAD_ADDR_LEN);
+
+                               if (msg_common_add_block_number(msg_ui_thread_get_data_handle(), address) != MSG_SUCCESS){
+                                       msg_release_list_struct(&addrList);
+                                       goto __UNABLE_TO_DELETE;
+                               }
+                               addr_data = &address;
+                               msg_release_list_struct(&addrList);
+                       }
+               } else {
+                       PMSG_APP_THREAD_MSG_DATA_S item_data = elm_object_item_data_get(it);
+                       if (!item_data)
+                               goto __UNABLE_TO_DELETE;
+
+                       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+                       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+                       err = msg_get_message(msg_ui_thread_get_data_handle(), (msg_message_id_t)item_data->msg_id, msgInfo, sendOpt);
+                       if (err != MSG_SUCCESS) {
+                               msg_release_struct(&msgInfo);
+                               msg_release_struct(&sendOpt);
+                               return;
+                       }
+
+                       if (pListData->action_type == THREAD_ACTION_DELETE) {
+                               bool bProtect = false;
+
+                               msg_get_bool_value(msgInfo, MSG_MESSAGE_PROTECTED_BOOL, &bProtect);
+                               if (pListData->include_protected_msg == false && bProtect == true) {
+                                       msg_release_struct(&msgInfo);
+                                       msg_release_struct(&sendOpt);
+                                       goto __UNABLE_TO_DELETE;
+                               }
+                               err = msg_delete_message(msg_ui_thread_get_data_handle(), item_data->msg_id);
+                               remove_it = true;
+
+                               if (pListData->sel_msg_id == item_data->msg_id)
+                                       remove_ug = true;
+                       } else if (pListData->action_type == THREAD_ACTION_BLOCK) {
+                               char strNumber[DEF_THREAD_ADDR_LEN + 1] = {0,};
+                               msg_struct_list_s *addr_list = NULL;
+
+                               msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+                               msg_get_str_value(addr_list->msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+                               strncpy(address, strNumber, DEF_THREAD_ADDR_LEN);
+
+                               if (msg_common_add_block_number(msg_ui_thread_get_data_handle(), address) != MSG_SUCCESS) {
+                                       msg_release_struct(&msgInfo);
+                                       msg_release_struct(&sendOpt);
+                                       goto __UNABLE_TO_DELETE;
+                               }
+                               addr_data = &address;
+                       } else if (pListData->action_type == THREAD_ACTION_RESTORE) {
+                               err = msg_move_msg_to_folder(msg_ui_thread_get_data_handle(), item_data->msg_id, MSG_INBOX_ID);
+                               remove_it = true;
+                               if (pListData->sel_msg_id == item_data->msg_id)
+                                       remove_ug = true;
+                       }
+
+                       msg_release_struct(&msgInfo);
+                       msg_release_struct(&sendOpt);
+               }
+
+               if (err != MSG_SUCCESS)
+                       goto __UNABLE_TO_DELETE;
+
+               msg_ui_thread_show_action_finish_info(pListData, pListData->action_type, addr_data);
+
+               if (remove_it == true) {
+                       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+                       if (pData->isRotate == true && remove_ug == true) {
+                               if (pListData->loaded_ug) {
+                                       ug_destroy(pListData->loaded_ug);
+                                       pListData->loaded_ug = NULL;
+                                       pListData->sel_gen_item = NULL;
+                                       pListData->sel_msg_id = 0;
+                               } else if (pData->detail_layout) {
+                                       elm_naviframe_item_pop(pData->split_data->navi_frame);
+                                       pData->detail_layout = NULL;
+                                       pListData->sel_gen_item = NULL;
+                                       pListData->sel_msg_id = 0;
+                               } else {
+                                       msg_ui_destroy_composer_ug();
+                               }
+
+                               if (!pData->split_data) {
+                                       msg_ui_thread_create_split_data();
+                                       msg_ui_thread_splitview_launch(pData, pData->split_data);
+                               }
+                               if (pData->split_data) {
+                                       char label[DEF_BUF_LEN_S+1] = {0,};
+
+                                       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+                                       elm_object_part_text_set(pData->split_data->title_layout, "title_text", label);
+                               }
+                       }
+
+                       Elm_Object_Item *it_dateline = NULL;
+                       PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+
+                       it_dateline = elm_genlist_item_parent_get((Elm_Object_Item *)it);
+                       if (it_dateline) {
+                               dateline_data = elm_object_item_data_get(it_dateline);
+
+                               if (dateline_data) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "subitem_cnt : %d", dateline_data->subitem_cnt);
+                                       dateline_data->subitem_cnt--;
+                                       if (dateline_data->subitem_cnt == 0)
+                                               elm_object_item_del((Elm_Object_Item *)it_dateline);
+                               }
+                       }
+                       elm_object_item_del((Elm_Object_Item *)it);
+                       pListData->item_cnt--;
+
+                       if (pListData->item_cnt == 0) {
+                               if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD)
+                                       msg_ui_thread_list_load(pListData, FALSE);
+                               else
+                                       msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+                       }
+               }
+
+               pListData->include_protected_msg = false;
+               pListData->action_type = THREAD_ACTION_NONE;
+       }
+
+       return;
+
+__UNABLE_TO_DELETE:
+
+       pListData->include_protected_msg = false;
+       pListData->action_type = THREAD_ACTION_NONE;
+       msg_ui_thread_show_notify(pListData, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+       return;
+}
+
+static void __msg_ui_thread_action_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       bool show_info = false;
+       Elm_Object_Item *it = NULL;
+
+
+       it = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+
+       if (it) {
+               elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
+               elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
+       }
+
+       if (pListData->view_mode == THREAD_EDIT_VIEW) {
+               if (pListData->multi_action_thread) {
+                       if (ecore_thread_cancel(pListData->multi_action_thread) == EINA_FALSE) {
+                               D_MSG("ecore_thread_cancel is done.");
+                               pListData->multi_action_thread = NULL;
+                       } else {
+                               D_MSG("ecore_thread_cancel is failed.");
+                               return;
+                       }
+                       show_info = true;
+               }
+
+               if (pListData->popup) {
+                       evas_object_del(pListData->popup);
+                       pListData->popup = NULL;
+               }
+
+               if (show_info == true)
+                       msg_ui_thread_show_action_finish_info(pListData, pListData->action_type, NULL);
+               msg_ui_thread_show_normal_mode(pListData);
+
+               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
+                       msg_ui_thread_list_load(pListData, FALSE);
+               else
+                       msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+       } else {
+               if (pListData->popup) {
+                       evas_object_del(pListData->popup);
+                       pListData->popup = NULL;
+               }
+       }
+
+       pListData->action_type = THREAD_ACTION_NONE;
+       pListData->include_protected_msg = false;
+}
+
+static void __msg_ui_thread_action_popup_checked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       bool is_check = pListData->include_protected_msg;
+
+       if (is_check)
+               pListData->include_protected_msg = false;
+       else
+               pListData->include_protected_msg = true;
+
+       MSG_UI_LEAVE();
+}
+
+Evas_Object* msg_ui_thread_show_notify_with_progressbar(PMSG_THREAD_LIST_DATA pListData, int count)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !pListData, NULL);
+
+       char buf[DEF_BUF_LEN_S] = {0,};
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       Evas_Object *popup = NULL;
+       Evas_Object *progressbar = NULL;
+       Evas_Object  *box = NULL;
+       Evas_Object  *label = NULL;
+       Evas_Object  *btn_cancel = NULL;
+
+       popup = elm_popup_add(pData->win_main);
+
+       label = elm_label_add(popup);
+
+       if (pListData->action_type == THREAD_ACTION_DELETE)
+               snprintf(buf, sizeof(buf), "%s", dgettext("sys_string", "IDS_COM_POP_DELETING"));
+       else if (pListData->action_type == THREAD_ACTION_RESTORE)
+               snprintf(buf, sizeof(buf), "%s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_RESTORING_ING"));
+       else if (pListData->action_type == THREAD_ACTION_COPY_TO_PHONE)
+               snprintf(buf, sizeof(buf), "%s", dgettext("sys_string", "IDS_COM_POP_COPYING_ING"));
+
+       elm_object_text_set(label, buf);
+// ToDo: Check More
+//     elm_label_text_align_set(label, "center");
+       evas_object_show(label);
+
+       progressbar = elm_progressbar_add(popup);
+       elm_object_style_set(progressbar, "list_progress");
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_value_set(progressbar, 0.0);
+       evas_object_show(progressbar);
+
+       box = elm_box_add(popup);
+       elm_box_pack_end(box, label);
+       elm_box_pack_end(box, progressbar);
+       evas_object_show(box);
+
+       elm_object_content_set(popup, box);
+
+       btn_cancel = elm_button_add(popup);
+       elm_object_style_set(btn_cancel, "popup_button/default");
+       elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button1", btn_cancel);
+       evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_thread_action_popup_cancel_clicked_cb, pListData);
+
+       evas_object_show(popup);
+
+       pListData->progressbar = progressbar;
+
+       return popup;
+}
+
+void msg_ui_thread_show_select_info(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pListData);
+
+       if (!pListData->select_info) {
+               pListData->select_info = elm_notify_add(pListData->content_ly);
+               elm_notify_align_set(pListData->select_info, ELM_NOTIFY_ALIGN_FILL, 1.0);
+
+               pListData->selectioninfo_layout = elm_layout_add(pListData->content_ly);
+               elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "center_text");
+               elm_object_content_set(pListData->select_info, pListData->selectioninfo_layout);
+       }
+
+       if (pListData->check_cnt == 0) {
+               evas_object_hide(pListData->select_info);
+               elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_1], EINA_TRUE);
+               elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_2], EINA_TRUE);
+       } else {
+               char text[DEF_BUF_LEN_S] =  {'0',};
+
+               snprintf(text, sizeof(text), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), pListData->check_cnt);
+               edje_object_part_text_set(_EDJ(pListData->selectioninfo_layout), "elm.text", text);
+               evas_object_show(pListData->select_info);
+
+               elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_1], EINA_FALSE);
+               if (pListData->toolbar_btn[CONTROLBAR_ITEM_2] != NULL)
+                       elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_2], EINA_FALSE);
+       }
+}
+
+void msg_ui_thread_show_action_finish_info(PMSG_THREAD_LIST_DATA pListData, int actionType, void *pData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pListData);
+
+       switch (actionType) {
+               case THREAD_ACTION_DELETE:
+                       status_message_post(dgettext("sys_string", "IDS_COM_POP_DELETED"));
+                       break;
+               case THREAD_ACTION_RESTORE:
+                       status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_RESTORED"));
+                       break;
+               case THREAD_ACTION_COPY_TO_PHONE:
+                       status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"));
+                       break;
+               case THREAD_ACTION_BLOCK:
+                       {
+                               char *address = pData;
+                               char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_BLOCKED");
+                               char *text = g_strdup_printf(szbuf, address);
+
+                               status_message_post(text);
+                               free(text);
+                       }
+                       break;
+               case THREAD_ACTION_UNBLOCK:
+                       {
+                               char *address = pData;
+                               char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_UNBLOCKED");
+                               char *text = g_strdup_printf(szbuf, address);
+
+                               status_message_post(text);
+                               free(text);
+                       }
+                       break;
+               default:
+                       break;
+       }
+}
+
+void msg_ui_thread_addr_select_popup(PMSG_THREAD_LIST_DATA pListData, const char *title, msg_struct_list_s *addrList)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pListData || !title);
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       Evas_Object *popup = NULL;
+       Evas_Object *genlist = NULL;
+       int i = 0;
+       char *popup_title = NULL;
+       int list_cnt = 0;
+
+       /** create popup */
+       popup = elm_popup_add(pData->win_main);
+       if (!popup) {
+               D_EMSG("elm_popup_add returns NULL");
+               return;
+       }
+       elm_object_style_set(popup, "min_menustyle");
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       /** close button */
+       Evas_Object * btn1 = elm_button_add(popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       evas_object_smart_callback_add(btn1, "clicked", __msg_ui_thread_addr_select_popup_close_clicked_cb, pListData);
+       elm_object_part_content_set(popup, "button1", btn1);
+
+       /** create menu genlist */
+       genlist = elm_genlist_add(popup);
+       if (!genlist) {
+               D_EMSG("elm_genlist_add failed");
+               return;
+       }
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       popup_title = (char *) calloc(1, strlen(title) + 1);
+       if (strlen(title) > 0)
+               strncpy(popup_title, title, sizeof(char)* strlen(title));
+
+       evas_object_data_set(genlist, "title", popup_title);
+       memset(&pData->itc_popup, 0x00, sizeof(Elm_Genlist_Item_Class));
+
+       pData->itc_popup.item_style = "1text";
+       pData->itc_popup.func.text_get = __msg_ui_thread_addr_select_popup_gl_text_get;
+       pData->itc_popup.func.content_get = NULL;
+       pData->itc_popup.func.state_get = NULL;
+       pData->itc_popup.func.del = __msg_ui_thread_addr_select_popup_gl_del;
+
+       /** append addresses to genlist */
+       for (i = 0; i < addrList->nCount; i++) {
+               PMSG_APP_THREAD_ADDR_INFO_S addr_info = NULL;
+               char strNumber[DEF_THREAD_ADDR_LEN+1] = {0,};
+               char strName[DEF_THREAD_NAME_LEN+1] = {0,};
+               int contact_id = 0;
+               bool isBlock = false;
+
+               addr_info = (PMSG_APP_THREAD_ADDR_INFO_S) calloc(1, sizeof(MSG_APP_THREAD_ADDR_INFO_S));
+
+               msg_get_str_value(addrList->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+               msg_get_str_value(addrList->msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, strName, DEF_THREAD_NAME_LEN);
+               msg_get_int_value(addrList->msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+
+               bzero(addr_info->display_name, sizeof(addr_info->display_name));
+               if (strlen(strName) > 0)
+                       strncpy(addr_info->display_name, strName, DEF_THREAD_NAME_LEN);
+
+               bzero(addr_info->address, sizeof(addr_info->address));
+               if (strlen(strNumber) > 0)
+                       strncpy(addr_info->address, strNumber, DEF_THREAD_NAME_LEN);
+
+               addr_info->contact_id = contact_id;
+
+               msg_common_check_block_number(msg_ui_thread_get_data_handle(), addr_info->address, &isBlock);
+
+               if (strncmp(title, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"), strlen(title)) == 0 && isBlock == true) {
+                       free(addr_info);
+                       continue;
+               } else if (strncmp(title, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), strlen(title)) == 0 && isBlock == false) {
+                       free(addr_info);
+                       continue;
+               }
+
+               elm_genlist_item_append(genlist, &pData->itc_popup, addr_info, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_addr_select_popup_gl_sel, pListData);
+               list_cnt++;
+       }
+
+       if (list_cnt > MSG_THREAD_LIST_ADDR_POPUP_MAX_CNT)
+               list_cnt = MSG_THREAD_LIST_ADDR_POPUP_MAX_CNT;
+
+       elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSG_HEADER_SELECT_RECIPIENT"));
+
+       Evas_Object *box = elm_box_add(popup);
+       evas_object_size_hint_min_set(box, 0, MSG_THREAD_LIST_ADDR_POPUP_ITEM_HEIGHT * elm_config_scale_get() * list_cnt);
+       evas_object_show(genlist);
+       elm_box_pack_end(box, genlist);
+       elm_object_content_set(popup, box);
+       evas_object_show(popup);
+
+       pListData->popup = popup;
+}
+
+static char *__msg_ui_thread_addr_select_popup_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       D_ENTER;
+       PMSG_APP_THREAD_ADDR_INFO_S addr_info = (PMSG_APP_THREAD_ADDR_INFO_S)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !data, NULL);
+
+       if (addr_info->contact_id > 0 && strlen(addr_info->display_name) > 0) {
+               return strdup(addr_info->display_name);
+       } else {
+               if (strlen(addr_info->address) > 0)
+                       return strdup(addr_info->address);
+               else
+                       return strdup(dgettext("sys_string","IDS_COM_BODY_UNKNOWN"));
+       }
+}
+
+static void __msg_ui_thread_addr_select_popup_gl_del(void *data, Evas_Object *obj)
+{
+       D_ENTER;
+
+       PMSG_APP_THREAD_ADDR_INFO_S del_data = (PMSG_APP_THREAD_ADDR_INFO_S)data;
+       if (del_data) {
+               free(del_data);
+               del_data = NULL;
+       }
+}
+
+static void __msg_ui_thread_addr_select_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       char *title = (char *)evas_object_data_get(obj, "title");
+
+       if (title != NULL)
+               free(title);
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+}
+
+void __msg_ui_thread_addr_select_popup_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj || !event_info);
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       PMSG_APP_THREAD_ADDR_INFO_S addr_info = (PMSG_APP_THREAD_ADDR_INFO_S)elm_object_item_data_get(item);
+       char *title = (char *)evas_object_data_get(obj, "title");
+
+       if (!title) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] title is NULL");
+               return;
+       }
+
+       if (strncmp(title, dgettext("sys_string", "IDS_COM_BODY_CALL"), strlen(title)) == 0) {
+               msg_ui_thread_launch_voice_call(addr_info->address);
+       } else if (strncmp(title, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"), strlen(title)) == 0) {
+               msg_ui_thread_launch_video_call(addr_info->address);
+       } else if (strncmp(title, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"), strlen(title)) == 0) {
+               if (msg_common_add_block_number(msg_ui_thread_get_data_handle(), addr_info->address) == MSG_SUCCESS)
+                       msg_ui_thread_show_action_finish_info(pListData, THREAD_ACTION_BLOCK, addr_info->address);
+       } else if (strncmp(title, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), strlen(title)) == 0) {
+               if (msg_common_delete_block_number(msg_ui_thread_get_data_handle(), addr_info->address) == MSG_SUCCESS)
+                       msg_ui_thread_show_action_finish_info(pListData, THREAD_ACTION_UNBLOCK, addr_info->address);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] invalid title");
+       }
+
+       free(title);
+
+       if (pListData->job_popup_end)
+               ecore_job_del(pListData->job_popup_end);
+
+       pListData->job_popup_end = ecore_job_add(__msg_ui_thread_addr_select_popup_destroy, pListData);
+}
+
+static void __msg_ui_thread_addr_select_popup_destroy(void *data)
+{
+       D_ENTER;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       if (pListData && pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+}
+
+void msg_ui_thread_set_app_state(int app_state)
+{
+       D_ENTER;
+
+       if (app_state <= MSG_UI_STATE_NONE || app_state >= MSG_UI_STATE_MAX)
+               return;
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pData)
+               return;
+
+       if (app_state == MSG_UI_STATE_PAUSE) {
+               PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+
+               if (pListData) {
+                       Elm_Object_Item* it_sweep = NULL;
+
+                       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+                       if (it_sweep) {
+                               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+                               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+                       }
+               }
+       }
+
+       pData->app_state = app_state;
+       D_LEAVE;
+}
+
+int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData)
+{
+       if (!pData)
+               return MSG_UI_STATE_NONE;
+
+       return pData->app_state;
+}
+
+void msg_ui_thread_cancel_search_mode(PMSG_THREAD_LIST_DATA pListData)
+{
+       if (pListData == NULL || pListData->search_mode == THREAD_SEARCH_OFF)
+               return;
+
+       pListData->search_mode = THREAD_SEARCH_OFF;
+       elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
+
+       if (pListData->search_timer) {
+               ecore_timer_del(pListData->search_timer);
+               pListData->search_timer = NULL;
+       }
+
+       Evas_Object *entry = NULL;
+
+       elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm");
+       entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
+       elm_object_text_set(entry, "");
+       elm_object_signal_emit(pListData->searchbar, "cancel,out", "");
+
+       if (msg_ui_thread_rotation_get() == false) {
+               evas_object_show(pListData->search_btn);
+               elm_object_item_part_content_set(pListData->nf_it, "title_right_btn", pListData->search_btn);
+
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+               evas_object_hide(pListData->searchbar);
+
+               msg_ui_thread_show_toolbar(pListData);
+       }
+
+       if (pListData->list_type== THREAD_NORMAL_LIST_TYPE)
+               msg_ui_thread_list_load(pListData, FALSE);
+       else
+               msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+}
+
+void msg_ui_thread_button_disabled_set(PMSG_THREAD_LIST_DATA pListData, Eina_Bool disabled, int controlbar_btn)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pListData);
+
+       if (disabled == EINA_TRUE) {
+               if (pListData->view_mode == THREAD_NORMAL_VIEW) {
+                       if (pListData->toolbar_btn[controlbar_btn])
+                               elm_object_disabled_set(pListData->toolbar_btn[controlbar_btn], EINA_TRUE);
+
+                       if (msg_ui_thread_rotation_get() == true) {
+                               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+                               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+                               evas_object_hide(pListData->searchbar);
+                       } else {
+                               if (pListData->search_btn) {
+                                       Evas_Object *search_icon = elm_object_content_get(pListData->search_btn);
+                                       elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM);
+                               }
+                       }
+               }
+       } else {
+               if (pListData->view_mode == THREAD_NORMAL_VIEW) {
+                       if (pListData->toolbar_btn[controlbar_btn])
+                               elm_object_disabled_set(pListData->toolbar_btn[controlbar_btn], EINA_FALSE);
+
+                       if (msg_ui_thread_rotation_get() == true) {
+                               edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+                               evas_object_show(pListData->searchbar);
+                               elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+                       } else {
+                               if (pListData->search_btn) {
+                                       Evas_Object *search_icon = elm_object_content_get(pListData->search_btn);
+                                       elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH);
+                               }
+                       }
+               }
+       }
+}
+
+void msg_ui_thread_get_title_text(PMSG_THREAD_LIST_DATA pListData, char *label, int label_len)
+{
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !label || !pListData, "label or pListData is NULL");
+
+       if (pListData) {
+               switch (pListData->list_type) {
+               case THREAD_NORMAL_LIST_TYPE:
+                       strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(char)*label_len);
+                       break;
+               case THREAD_SPAM_LIST_TYPE:
+                       strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), sizeof(char)*label_len);
+                       break;
+               case THREAD_SIM_LIST_TYPE:
+                       strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), sizeof(char)*label_len);
+                       break;
+               case THREAD_CBMSG_LIST_TYPE:
+                       strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), sizeof(char)*label_len);
+                       break;
+               default:
+                       D_MSG("[ERROR] invalid viewmode");
+                       return;
+               }
+       } else {
+               strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(char)*label_len);
+       }
+}
+
+
+const char *msg_ui_thread_make_search_result_string(const char *string, char *searchword, bool *result)
+{
+       char pstr[DEF_BUF_LEN + 1] = {0,};
+       static char return_string[DEF_BUF_LEN + 1] = { 0, };
+       int word_len = 0;
+       int search_len = 0;
+       int i = 0;
+       bool found = false;
+       gchar* markup_text_start;
+       gchar* markup_text_end;
+       gchar* markup_text;
+
+       if (!searchword) return string;
+
+       if (g_utf8_validate(string,-1,NULL)) {
+
+               strncpy(pstr, string, DEF_BUF_LEN);
+
+               word_len = strlen(pstr);
+               search_len = strlen(searchword);
+
+               for (i = 0; i < word_len; i++) {
+                       if (!strncasecmp(searchword, &pstr[i], search_len)) {
+                               found = true;
+                               break;
+                       }
+               }
+
+               *result = found;
+               memset(return_string, 0x00, DEF_BUF_LEN);
+
+               if (found) {
+                       if (i == 0) {
+                               markup_text =  g_markup_escape_text(&pstr[i], search_len);
+                               markup_text_end = g_markup_escape_text(&pstr[search_len], word_len-search_len);
+                               snprintf(return_string,
+                                                       DEF_BUF_LEN,
+                                                       "<match>%s</match>%s",
+                                                       (char*)markup_text,
+                                                       (char*)markup_text_end);
+                               g_free(markup_text);
+                               g_free(markup_text_end);
+                       } else {
+                               markup_text_start = g_markup_escape_text(&pstr[0], i);
+                               markup_text =  g_markup_escape_text(&pstr[i], search_len);
+                               markup_text_end =  g_markup_escape_text(&pstr[i+search_len], word_len-(i+search_len));
+                               snprintf(return_string,
+                                                       DEF_BUF_LEN,
+                                                       "%s<match>%s</match>%s",
+                                                       (char*)markup_text_start,
+                                                       (char*)markup_text,
+                                                       (char*)markup_text_end);
+                               g_free(markup_text_start);
+                               g_free(markup_text);
+                               g_free(markup_text_end);
+                       }
+               } else {
+                       snprintf(return_string, DEF_BUF_LEN, "%s", pstr);
+               }
+       }
+
+       return return_string;
+}
+
+
+void msg_ui_thread_make_time_string(time_t *msg_t, char *buf, int buf_len)
+{
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       char *time_str = NULL;
+
+       if (pData->time_fmt == MSG_TIME_FORMAT_24H) {
+               time_str = msg_common_get_formatted_date(pData->locale, pData->time_24h_ptn, msg_t);
+               snprintf(buf, buf_len, " %s ", time_str);
+       } else { /* MSG_TIME_FORMAT_12H */
+               time_str = msg_common_get_formatted_date(pData->locale, pData->time_12h_ptn, msg_t);
+               snprintf(buf, buf_len, " %s ", time_str);
+       }
+
+       if (time_str)
+               free(time_str);
+}
diff --git a/thread/theme/thread_genlist.edc b/thread/theme/thread_genlist.edc
new file mode 100755 (executable)
index 0000000..bd83bea
--- /dev/null
@@ -0,0 +1,188 @@
+#define MSG_UI_SEL_ALL_H       90
+
+#define BEAT_GENLIST_PART_BASE(param_item_height) \
+       part \
+       { \
+               name : "base"; \
+               type : RECT; \
+               repeat_events : 1; \
+               scale : 1; \
+               description \
+               { \
+                       state : "default" 0.0; \
+                       min : 0 param_item_height; \
+                       color: 249 249 249 255; \
+               } \
+       }
+
+collections{
+
+       group{
+               name : "thread_content";
+
+               parts{
+                       part{
+                               name : "base";
+                               type : RECT;
+                               scale : 1;
+                               description{
+                                       state :  "default" 0.0;
+                                       color : 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name : "sel_all";
+                               type : SWALLOW;
+                               scale : 1;
+                               description{
+                                       state: "default" 0.0;
+                                       fixed : 1 1;
+                                       min : 0 MSG_UI_SEL_ALL_H;
+                                       align : 0.0 0.0;
+                                       visible : 1;
+                                       rel1 {to: "base"; relative:0.0 0.0;}
+                                       rel2 {to: "base"; relative:1.0 0.0;}
+                               }
+                               description
+                               {
+                                       state : "hide" 0.0;
+                                       inherit : "default" 0.0;
+                                       min : 0 0;
+                                       visible : 0;
+                               }
+                       }
+                       part{
+                               name: "genlist_body";
+                               type: SWALLOW;
+                               scale: 1;
+                               description
+                               {
+                                       state: "default" 0.0;
+                                       fixed :1 1;
+                                       min : 0 1;
+                                       align: 0.0 1.0;
+                                       rel1{to: "base"; relative: 0.0 1.0;}
+                                       rel2{to: "base"; relative: 1.0 1.0;}
+                               }
+                       }
+                       part{
+                               name : "thread_list";
+                               type : SWALLOW;
+                               scale : 1;
+                               description{
+                                       state: "default" 0.0;
+                                       fixed : 1 1;
+                                       min : 0 1;
+                                       align : 0.0 0.0;
+                                       rel1 {to: "sel_all"; relative:0.0 1.0;}
+                                       rel2 {to: "genlist_body"; relative:1.0 0.0;}
+                               }
+                       }
+               }
+
+               programs {
+                       program {
+                                       name: "searchbar_show";
+                                       signal: "show_searchbar";
+                                       source: "sel_all";
+                                       action: STATE_SET "default" 0.0;
+                                       target: "sel_all";
+                                       transition: LINEAR 0.1;
+                       }
+                       program {
+                                       name: "searchbar_hide";
+                                       signal: "hide_searchbar";
+                                       source: "sel_all";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "sel_all";
+                                       transition: LINEAR 0.1;
+                       }
+               }
+       }
+       group{
+               name : "thread_detail_layout";
+
+               parts{
+                       part {
+                               name: "pad_left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min : 70 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "pad_right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min : 70 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "pad_top";
+                               type: RECT;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 0.0; to_x: "pad_left"; }
+                                       rel2 { relative: 0.0 0.0; to_x: "pad_right"; }
+                               }
+                       }
+                       part {
+                               name: "pad_bottom";
+                               type: RECT;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 1.0; to_x: "pad_left"; }
+                                       rel2 { relative: 0.0 1.0; to_x: "pad_right"; }
+                               }
+                       }
+                       part{
+                               name:"elm.swallow.content";
+                               type: SWALLOW;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       align: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 0.0 1.0;       to: "pad_top"; }
+                                       rel2 { relative: 1.0 1.0;       to: "pad_bottom"; }
+                               }
+                       }
+               }
+       }
+       group
+       {
+               name : "elm/genlist/item/thread_list_blank/default";
+               alias : "elm/genlist/item_odd/thread_list_blank/default";
+               alias : "elm/genlist/tem_compress/thread_list_blank/default";
+               alias : "elm/genlist/tem_compress_odd/thread_list_blank/default";
+
+               data.item : "stacking" "above";
+               data.item: "treesize" "20";
+
+               parts {
+                       BEAT_GENLIST_PART_BASE(90)
+               }
+       }
+}
+
diff --git a/viewer/CMakeLists.txt b/viewer/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..ee3def3
--- /dev/null
@@ -0,0 +1,64 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-msg-viewer-efl C)
+
+SET (MSG_VIEWER  msg_viewer)
+
+#################################
+#      Message Viewer  #
+#################################
+
+SET(VIEWER_SRCS
+       ./src/msg-ui-viewer-gadget.c
+    ./src/msg-ui-viewer-main.c
+       ./src/msg-ui-viewer-callback.c
+       ./src/msg-ui-viewer-drm-list.c
+       ./src/msg-ui-viewer-drm-utility.c
+       ./src/msg-ui-viewer-play-view.c
+       ./src/msg-ui-viewer-play-view-callback.c
+       ./src/msg-ui-viewer-utility.c
+       ./smil-player/src/msg-smil-player.c
+       ./smil-player/src/msg-smil-content-manager.c
+       ./smil-player/src/msg-smil-event-manager.c
+       ./smil-player/src/msg-smil-player-interface.c
+       ./smil-player/src/msg-smil-render.c
+       ./smil-player/src/msg-smil-text-render.c
+       ./smil-player/src/msg-smil-media-render.c
+       ./smil-player/src/msg-smil-util.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_VIEWER_DIR}/include
+               ${CMAKE_SOURCE_MAIN_DIR}
+               ${CMAKE_SOURCE_COMMON_DIR}
+               /usr/include/msg-service/
+               ${CMAKE_SOURCE_VIEWER_DIR}/smil-player/include
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+
+ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{PREFIX}\"")
+ADD_DEFINITIONS("-DDATAFS=\"$ENV{DATADIR}\"")
+ADD_DEFINITIONS("-DTARGET")
+ADD_DEFINITIONS("-DSLP_PROF")
+
+ADD_CUSTOM_TARGET(${MSG_VIEWER}.edj
+                               COMMAND edje_cc -id
+                               ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+                               ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER}.edc ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER}.edj
+                               DEPENDS ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER}.edc
+)
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${VIEWER_SRCS})
+ADD_DEPENDENCIES(${PROJECT_NAME} ${MSG_VIEWER}.edj)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} -L${CMAKE_SOURCE_COMMON_DIR} -lmsg-common)
+
+# Install executable and .edj files.
+#INSTALL(DIRECTORY ${CMAKE_SOURCE_VIEWER_DIR}/data/images/ DESTINATION ${IMGDIR} FILES_MATCHING PATTERN "*.png")
+INSTALL(FILES ${CMAKE_SOURCE_VIEWER_DIR}/theme/${MSG_VIEWER}.edj DESTINATION ${EDJDIR})
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR})
+
+#i18n
+#ADD_SUBDIRECTORY(po)
diff --git a/viewer/include/msg-ui-viewer-drm-list.h b/viewer/include/msg-ui-viewer-drm-list.h
new file mode 100755 (executable)
index 0000000..7763220
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_VIEWER_DRM_LIST_H__
+#define __MSG_VIEWER_DRM_LIST_H__
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include <msg.h>
+#include "msg-ui-viewer-types.h"
+#include <Ecore.h>
+#include <Elementary.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_VIEWER_MAX_ICON_WIDTH      40
+#define MSG_VIEWER_MAX_ICON_HEIGHT     40
+
+/*==================================================================================================
+ *                                                                             ENUMERATIONS
+ *==================================================================================================*/
+typedef enum {
+       MSG_VIEWER_DRM_LIST_CMD_NONE = 0,
+       MSG_VIEWER_DRM_LIST_CMD_LAUNCH_BROWSER,
+} MSG_VIEWER_DRM_LIST_CMD_E;
+
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+
+typedef struct {
+       char pfile_name[MSG_VIEWER_FILENAME_MAX_LEN + 1];
+       char pfile_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1];
+       MmsSmilMediaType media_type;
+} MSG_VIEWER_MEDIA_INFO_S;
+
+typedef struct {
+       void    *viewer_main;
+       Evas_Object     *main_window;
+       Evas_Object     *navi_frame;
+       Evas_Object     *genlist;
+
+       msg_message_id_t        msgID;
+       msg_handle_t    msgHandle;
+       msg_struct_t    mms_t;
+
+       MSG_VIEWER_DRM_LIST_CMD_E       drm_list_cmd;
+       Elm_Object_Item *selected_item;         /*selected item of drm list*/
+       MSG_VIEWER_MEDIA_INFO_S *selected_file_info;/*selected file info.*/
+       Eina_List       *drm_list;
+} MSG_DRM_LIST_DATA_S;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+void msg_ui_viewer_drm_list_init(void *data);
+MSG_BOOL msg_ui_viewer_create_drm_list_view(void *data);
+void msg_ui_viewer_destroy_drm_list_view(void *data);
+
+/*
+ *@fn  msg_ui_viewer_drm_list_delete_current_list(void *data);
+ *@brief       this function is used to delete selected list
+ * @param[in] data MSG_DRM_LIST_DATA_S structure
+ */
+void msg_ui_viewer_drm_list_delete_current_list(void *data);
+
+/*
+ *@fn  msg_ui_viewer_drm_list_check_current_ro_valid(void *data);
+ *@brief       this function is used to check whether current selected list's ro is valid or not
+ * @param[in] data MSG_DRM_LIST_DATA_S structure
+ * @return     return TRUE if ro is valid, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_drm_list_check_current_ro_valid(void *data);
+
+/*
+ *@fn  msg_ui_viewer_get_invalid_ro_drm_list(msg_struct_t mms_t, Eina_List *drm_list);
+ *@brief       this function is used to get invalid drm list(inavlid ro sd typed)
+ *@param[in]   data    MMS_MESSAGE_DATA_S structure pointer
+ *@param[out]  drm_list        invalid drm list will be added
+ *@return      return TRUE if invalid drm_list is added, else retrun FALSE
+ */
+MSG_BOOL msg_ui_viewer_get_invalid_ro_drm_list(msg_struct_t mms_t, Eina_List **drm_list);
+
+#endif
+
diff --git a/viewer/include/msg-ui-viewer-drm-utility.h b/viewer/include/msg-ui-viewer-drm-utility.h
new file mode 100755 (executable)
index 0000000..b045686
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_VIEWER_DRM_UTILITY_H__
+#define __MSG_VIEWER_DRM_UTILITY_H__
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-types.h"
+#include <drm_client.h>
+
+/*==================================================================================================
+ *                                                                             ENUMERATIONS
+ *==================================================================================================*/
+typedef enum {
+       MSG_UI_DRM_UNDEFINED = DRM_METHOD_TYPE_UNDEFINED,
+       MSG_UI_DRM_TYPE_FL = DRM_METHOD_TYPE_FORWARD_LOCK,
+       MSG_UI_DRM_TYPE_CD = DRM_METHOD_TYPE_COMBINED_DELIVERY,
+       MSG_UI_DRM_TYPE_SD = DRM_METHOD_TYPE_SEPARATE_DELIVERY,
+} MSG_UI_DRM_TYPE_E;
+
+typedef enum {
+       MSG_UI_DRM_RIGHT_PLAY,                  /*video*/
+       MSG_UI_DRM_RIGHT_DISPLAY,               /*image*/
+} MSG_UI_DRM_RIGHT_TYPE_E;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+MSG_BOOL msg_ui_viewer_is_drm_file(const char *filepath);
+
+/*
+ *@fn          msg_ui_viewer_get_drm_type(const char *filepath);
+ *@brief               This function is used to get drm type, msg_ui_viewer_is_drm_file should be called before calling this api to check whether filepath is drm file or not
+ * @param[in] filepath filepath
+ * @return     return TRUE if ro is valid, else FALSE
+ */
+MSG_UI_DRM_TYPE_E msg_ui_viewer_get_drm_type(const char *filepath);
+
+/*
+ *@fn          msg_ui_viewer_check_drm_ro_valid(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type);
+ *@brief               This function is used to check ro is valid or not, msg_ui_viewer_is_drm_file should be called before calling this api to check whether filepath is drm file or not
+ * @param[in] filepath filepath
+ * @param[in] permission_type permission type to be shown/played
+ * @return     return TRUE if ro is valid, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_check_drm_ro_valid(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type);
+
+/*
+ *@fn          msg_ui_viewer_get_drm_url(const char *filepath, char *szurl, int szurl_len);
+ *@brief               This function is used to check ro is valid or not
+ * @param[in] filepath filepath
+ * @param[in] szurl_len buffer size of szrul
+ * @param[out] szurl will be got url address of ro
+ * @return     return TRUE if caller get url address well, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_get_drm_url(const char *filepath, char *szurl, int szurl_len);
+#endif
diff --git a/viewer/include/msg-ui-viewer-main.h b/viewer/include/msg-ui-viewer-main.h
new file mode 100755 (executable)
index 0000000..e75d8d8
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_UI_VIEWER_MAIN_H__
+#define __MSG_UI_VIEWER_MAIN_H__
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include <msg.h>
+#include "msg-ui-viewer-types.h"
+#include "msg-ui-util.h"
+
+#include "msg-ui-viewer-drm-list.h"
+#include "msg-ui-viewer-play-view.h"
+
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+#include <Ecore_X.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+/*View control CMD defines*/
+#define MSG_VIEWER_VIEW_CMD_NONE       0
+#define MSG_VIEWER_VIEW_CMD_PLAY       0x01
+
+/*==================================================================================================
+ *                                                                             ENUMERATIONS
+ *==================================================================================================*/
+typedef enum {
+       MSG_VIEWER_PLAYER_VIEW,
+       MSG_VIEWER_DRM_LIST_VIEW,
+} MSG_VIEWER_VIEW_MODE_E;
+
+typedef enum {
+       MSG_UG_MODE_FULLVIEW,
+       MSG_UG_MODE_FRAMVIEW,
+       MSG_INVALID_UG_MODE,
+} MSG_UG_LAUNCH_MODE_E;
+
+typedef enum {
+       MSG_VIEWER_FULLVIEW_MODE = 0,   /*full view mode*/
+       MSG_VIEWER_PREVIEW_MODE,                /*preview mode from composer*/
+       MSG_VIEWER_INVALID_MODE,
+} MSG_VIEWER_LAUNCH_VIEW_MODE_E;
+
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef struct _MSG_VIEWER_MAIN_DATA {
+       ui_gadget_h     viewer_ug;
+       struct ug_cbs   cbs;
+       ui_gadget_h     loaded_ug;      /*if each view call other ug, then set this loaded_ug by using msg_ui_viewer_set_loaded_ug*/
+
+       Evas_Object     *main_window;
+       Evas_Object     *layout_main;
+       Evas_Object     *bg;
+       Evas_Object     *navi_frame;    /*if navi_frame is created from which view, then navi_frame should be set by using msg_ui_viewer_set_navi_frame*/
+
+       msg_handle_t    msgHandle;      /*ipc handler between viewer and MF*/
+       int     msgID;
+
+       MSG_VIEWER_LAUNCH_VIEW_MODE_E   launchmode;     /*preview mode or full view mode */
+       void    *SmilHandle;    /*smilplayer handler*/
+       msg_struct_t msg_t;     /* msg info struct */
+       msg_struct_t mms_t;     /* mms struct */
+
+       MSG_UG_LAUNCH_MODE_E    ug_launch_mode; /*This is a launching ug-mode of viewer, frameview or fullview*/
+
+       MSG_VIEWER_VIEW_MODE_E  view_mode;
+       MSG_DRM_LIST_DATA_S     *drm_list_view;
+       MSG_PLAY_DATA_S *player_view;
+
+       bool msg_box_viewer;    /* TRUE if viewer is launched from message box */
+
+       Ecore_Idler     *del_idler;
+       Eina_List* drm_list;/*set invalid ro drm content*/
+} MSG_VIEWER_MAIN_DATA_S;
+
+/*==================================================================================================
+ *                                                             FUNCTION DECLARATIONS
+ *==================================================================================================*/
+void msg_ui_viewer_main_init(void *data);
+MSG_BOOL msg_ui_viewer_launch(void *data);
+void msg_ui_viewer_show_view_by_mode(void *data, MSG_VIEWER_VIEW_MODE_E viewMode, unsigned int commandType);
+
+/*
+ *@fn  msg_ui_viewer_set_loaded_ug(void *data, ui_gadget_h loaded_ug);
+ *@brief       this function is used to set loaded ug pointer to MSG_VIEWER_MAIN_DATA_S
+ *@param[in] data MSG_VIEWER_MAIN_DATA_S structure
+ *@param[in] loaded_ug  loaded ug pointer
+ */
+void msg_ui_viewer_set_loaded_ug(void *data, ui_gadget_h loaded_ug);
+
+/*
+ *@fn  msg_ui_viewer_set_navi_frame(void *data, Evas_Object *navi_frame);
+ *@brief this function is used to set navi_frame to MSG_VIEWER_MAIN_DATA_S
+ *@param[in] data MSG_VIEWER_MAIN_DATA_S structure
+ *@param[in] navi_frame  naviframe pointer
+ */
+void msg_ui_viewer_set_navi_frame(void *data, Evas_Object *navi_frame);
+
+/*
+ *@fn  msg_ui_viewer_set_smilhandle(void *data, void *smilhandle);
+ *@brief this function is used to set smilhandle to MSG_VIEWER_MAIN_DATA_S
+ *@param[in] data MSG_VIEWER_MAIN_DATA_S structure
+ *@param[in] smilhandle  smilhandle
+ */
+void msg_ui_viewer_set_smilhandle(void *data, void *smilhandle);
+
+/*
+ *@fn  msg_ui_viewer_get_viewer_launchmode(void *data, MSG_VIEWER_LAUNCH_VIEW_MODE_E *launchmode);
+ *@brief this function is used to get viewer launch mode(preview/fullview)
+ *@param[in] data MSG_VIEWER_MAIN_DATA_S structure
+ *@param[out] launchmode  MSG_VIEWER_LAUNCH_VIEW_MODE_E mode (preview/fullview)
+ *@return      return TRUE if it has launchmode, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_get_viewer_launchmode(void *data, MSG_VIEWER_LAUNCH_VIEW_MODE_E *launchmode);
+
+/*
+ *@fn  msg_ui_viewer_get_viewer_ug_mode(void *data, MSG_UG_LAUNCH_MODE_E *ug_mode);
+ *@brief this function is used to get viewer ug launched mode
+ *@param[in] data MSG_VIEWER_MAIN_DATA_S structure
+ *@param[out] ug_mode  MSG_UG_LAUNCH_MODE_E mode (framview mode/fullview mode)
+ *@return      return TRUE if it has viewer ug launchmode, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_get_viewer_ug_mode(void *data, MSG_UG_LAUNCH_MODE_E *ug_mode);
+
+/*
+ *@fn  msg_ui_viewer_get_viewer_ug(void *data);
+ *@brief this function is used to get viewer ug pointer
+ *@param[in] data MSG_VIEWER_MAIN_DATA_S structure
+ *@return      return viewer ug pointer, else NULL
+ */
+ui_gadget_h msg_ui_viewer_get_viewer_ug(void *data);
+
+/*
+ *@fn  msg_ui_viewer_get_main_layout(void *data);
+ *@brief this function is used to get layout_main of viewer
+ *@param[in] data MSG_VIEWER_MAIN_DATA_S structure
+ *@return      return layout_main pointer, else NULL
+ */
+Evas_Object *msg_ui_viewer_get_main_layout(void *data);
+
+/*
+ *@fn  msg_ui_viewer_get_bg_layout(void *data);
+ *@brief this function is used to get bg_layout of viewer
+ *@param[in] data MSG_VIEWER_MAIN_DATA_S structure
+ *@return      return bg_layout pointer, else NULL
+ */
+Evas_Object *msg_ui_viewer_get_bg_layout(void *data);
+
+Evas_Object *msg_ui_viewer_create_bg(void *data, Evas_Object *parent);
+Evas_Object *msg_ui_viewer_create_layout_main(Evas_Object *parent, bool indicator);
+
+void msg_ui_viewer_change_language(void *data);
+
+/* VIEWER  CALLBACK */
+Eina_Bool msg_ui_viewer_ug_quit(void *data);
+void msg_ui_viewer_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+void msg_ui_viewer_result_cb(ui_gadget_h ug, service_h svc_result_h, void *priv);
+void msg_ui_viewer_destroy_cb(ui_gadget_h ug, void *priv);
+#endif /* __MSG_UI_VIEWER_MAIN_H__*/
diff --git a/viewer/include/msg-ui-viewer-play-view.h b/viewer/include/msg-ui-viewer-play-view.h
new file mode 100755 (executable)
index 0000000..27a421c
--- /dev/null
@@ -0,0 +1,367 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_UI_VIEWER_PLAY_VIEW_H__
+#define __MSG_UI_VIEWER_PLAY_VIEW_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include <msg.h>
+
+#include "msg-smil-player-interface.h"
+#include "msg-ui-viewer-types.h"
+
+#include <Ecore_X.h>
+#include <Ecore.h>
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+/*==================================================================================================
+ *                                                                     DEFINITIONS
+ *==================================================================================================*/
+#define VIEWER_BUFFER_SIZE_64 64
+#define VIEWER_TITLE_MENU_GENLIST_MAX_ITEM 3
+#define VIEWER_TITLE_MENU_LINE_HEIGHT 129
+#define VIEWER_ATTACH_GL_ITEM_HEIGHT 112
+#define VIEWER_TITLE_FONT_LEN 100
+#define VIEWER_NAVI_FRAME_HEIGHT 98
+#define VIEWER_NAVIFRAME_BOTTOM_H 114
+
+
+#define VIEWER_PLAY_CONTROLLER_LIFETIME (3.0)
+#define VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME (1.0)
+#define VIEWER_PLAY_CONTROLLER_HEIGHT 218
+
+#define VIEWER_VOLUMEBAR_LIFETIME (3.0)
+#define VIEWER_VOLUME_KEY_FONT_LONG_PRESS_TIME (0.3)
+#define VIEWER_VOLUME_KEY_VOLUME_LONG_PRESS_TIME (0.1)
+
+#define VIEWER_DETAILS_TEXT_SPACE " "
+#define VIEWER_DETAILS_TEXT_LEFT_BRACE "("
+#define VIEWER_DETAILS_TEXT_RIGHT_BRACE ")"
+#define VIEWER_DETAILS_TEXT_MSG_SIZE_KB 1024
+
+#define MSG_VIEWER_EDJ EDJDIR"/msg_viewer.edj"
+/*==================================================================================================
+ *                                                                             ENUMERATIONS
+ *==================================================================================================*/
+typedef enum {
+       MSG_VIEWER_PLAY = 0,
+       MSG_VIEWER_PAUSE,
+       MSG_VIEWER_STOP,
+       MSG_VIEWER_CLOSE,
+       MSG_VIEWER_UNKOWN,
+} MSG_VIEWER_PLAY_STATUS_E;
+
+typedef enum {
+       MSG_VIEWER_ACTION_NONE = 0,
+       MSG_VIEWER_ACTION_TOOLBAR_PLAY,         /* action tapping play button in play toolbar */
+       MSG_VIEWER_ACTION_TOOLBAR_PAUSE,        /* action tapping pause button in play toolbar */
+       MSG_VIEWER_ACTION_AUTO_PLAY,            /* action auto play by related UX flow */
+       MSG_VIEWER_ACTION_AUTO_PAUSE,           /* action auto pause by related UX flow */
+} MSG_VIEWER_ACTION_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_DEFAULT_MODE = 0,
+       MSG_VIEWER_LOAD_OTHER_UG_MODE,  /*launch other ug mode like calling contact ug*/
+       MSG_VIEWER_LOAD_OTHER_APP_MODE, /*launch other application mode like calling voice call*/
+} MSG_VIEWER_LAUNCH_CMD_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_CMD_NONE = 0,
+       MSG_VIEWER_CMD_LOAD_CONTACT,
+       MSG_VIEWER_CMD_LOAD_EMAIL_COMPOSER,
+       MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER,
+       MSG_VIEWER_CMD_LOAD_CALL,
+       MSG_VIEWER_CMD_LOAD_VIDEO_CALL,
+       MSG_VIEWER_CMD_LOAD_BROWSER
+} MSG_VIEWER_CMD_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_FILE_SAVE_SUCCESS = 0,
+       MSG_VIEWER_FILE_SAVE_FAILED,
+       MSG_VIEWER_FILE_SAVE_INVALID_ERROR,
+} MSG_VIEWER_FILE_SAVE_STATUS_E;
+
+typedef enum {
+       MSG_VIEWER_POPUP_NONE = 0,
+       MSG_VIEWER_NORMAL_POPUP,
+       MSG_VIEWER_DELETE_POPUP,
+       MSG_VIEWER_ATTACHMENTS_POPUP,
+       MSG_VIEWER_DETAILS_POPUP,
+       MSG_VIEWER_MENU_CTX_POPUP,
+       MSG_VIEWER_CUTLINK_POPUP,
+       MSG_VIEWER_TITLE_MENU_POPUP,
+       MSG_VIEWER_BLOCK_POPOP,
+} MSG_VIEWER_POPUP_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_MEDIA_INVALID = 0,
+       MSG_VIEWER_MEDIA_IMG,
+       MSG_VIEWER_MEDIA_AUDIO,
+       MSG_VIEWER_MEDIA_VIDEO,
+       MSG_VIEWER_MEDIA_TEXT,
+       MSG_VIEWER_MEDIA_ANIMATE,
+       MSG_VIEWER_MEDIA_IMG_OR_VIDEO,
+       MSG_VIEWER_MEDIA_ATTACH,
+       MSG_VIEWER_MEDIA_DRM,
+} MSG_VIEWER_MEDIA_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_OPTION_CONTACT = 0,
+       MSG_VIEWER_OPTION_BLOCK,
+} MSG_VIEWER_OPTION_CHANGE_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_FONT_SIZE_NONE,
+       MSG_VIEWER_ACCESSIBILITY_FONT_SIZE,
+       MSG_VIEWER_MSG_FONT_SIZE
+} MSG_VIEWER_FONT_SIZE_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_FONT_CHANGE_LOAD_SETTING,
+       MSG_VIEWER_FONT_CHANGE_LATEST_UPDATE,
+} MSG_VIEWER_FONT_CHANGE_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_ENTRY_NORMAL_TEXT,
+       MSG_VIEWER_ENTRY_HELP_TEXT,
+} MSG_VIEWER_ENTRY_TYPE_E;
+
+typedef enum {
+       MSG_VIEWER_VOLUME_EVENT_DRAG_START,
+       MSG_VIEWER_VOLUME_EVENT_DRAG_STOP,
+} MSG_VIEWER_VOLUME_BAR_EVENT_E;
+
+typedef void (*MSG_VIEWER_VOLUMEBAR_CB)(void *user_data, Evas_Object *obj, MSG_VIEWER_VOLUME_BAR_EVENT_E event);
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef struct _MSG_VIEWER_ADDR_INFO_S{
+       int contact_id;
+       char address[MAX_ADDRESS_VAL_LEN+1];
+       char name[MAX_DISPLAY_NAME_LEN+1];
+} MSG_VIEWER_ADDR_INFO;
+
+typedef struct _MSG_VIEWER_ADDR_LIST_S{
+       int addr_cnt;
+       MSG_VIEWER_ADDR_INFO addr_info[MAX_TO_ADDRESS_CNT];
+} MSG_VIEWER_ADDR_LIST;
+
+typedef struct _MSG_PLAY_DATA_S {
+       struct ug_cbs cbs;
+       void *viewer_main;
+       Evas_Object *main_window;
+       Evas_Object *navi_frame;
+       Evas_Object *navi_title_layout;         /* navi title area layout */
+       Evas_Object *title_button;                              /* navi title button */
+       Evas_Object *attach_button;                             /* attachment button */
+       Evas_Object *more_btn;                          /* control toolbar */
+       Evas_Object *title_box_layout;                  /* title box layout for genlist */
+       Evas_Object *play_layout;                               /* play viewer main layout */
+       Evas_Object *subject_index_layout;      /* subject / page index */
+       Evas_Object *play_controller;                   /* play controller */
+       Evas_Object *progressbar;                               /* progressbar of play controller */
+       Evas_Object *volumebar;                         /* volumebar */
+       Evas_Object *volume_slider;             /* volumebar_slider */
+
+       Evas_Object *help_page_gl;                      /* help page genlist */
+       Evas_Object *save_attachment_gl;                /* save attachments genlist(controlbar menu) */
+       Evas_Object *render_entry;                      /* entry handle of SMIL render */
+
+       Evas_Object *save_button;                       /* save attachment's popup button */
+       Evas_Object *sa_check;                          /* select all check object in save attachment popup */
+       Eina_Bool isSelectAll;                                  /* check if save attachments select all mode is enable */
+
+       Elm_Object_Item *navi_item;                     /* naviframe item */
+
+       Evas_Object *popup;                                     /*simple popup*/
+       MSG_VIEWER_POPUP_TYPE_E popup_type;
+       SMIL_SLIDE_CLIENT_CB_PARAM_S *smil_eventStatus;
+
+       int m_x;
+       int m_y;
+       int window_width;
+       int window_height;
+
+       Ecore_Event_Handler *mouse_down_event_handler;
+       Ecore_Event_Handler *mouse_up_event_handler;
+
+       msg_handle_t msgHandle; /*ipc handler between viewer and MF*/
+       msg_struct_t msg_t;
+       msg_struct_t mms_t;
+       int     msgID;
+       MSG_VIEWER_LAUNCH_CMD_TYPE_E launch_cmd;
+       void *SmilHandle;
+       MSG_VIEWER_PLAY_STATUS_E status;
+       MSG_VIEWER_PLAY_STATUS_E previous_status;
+       MSG_VIEWER_CMD_TYPE_E cmd_type;
+       int font_size;
+
+       Ecore_Idler *del_idler;
+       Ecore_Timer *play_controller_timer;
+       Ecore_Timer *play_controller_progressbar_timer;
+       Ecore_Timer *volumebar_timer;
+
+       MSG_VIEWER_VOLUMEBAR_CB volumebar_event_cb;
+
+       int ctrl_start_x;               /* play controller mouse pointer */
+       int ctrl_start_y;               /* play controller mouse pointer */
+       int ctrl_end_x;                 /* play controller mouse pointer */
+       int ctrl_end_y;                 /* play controller mouse pointer */
+
+       int insert_count;       /*inserted contents count, except text file*/
+       int attach_count;       /*attached contents count*/
+
+       Eina_List *insert_list; /*inserted content list */
+       Eina_List *attach_list; /*attached contents list */
+
+       bool title_menu_opened; /* check if title button option is opened*/
+       bool playcontroller_opened;             /*check play controller is shown or not */
+       bool auto_resume_state;         /* check state of auto resume availablity */
+       bool msg_box_viewer;    /* TRUE is viewer is launched from message box */
+       bool drag_volume_slider; /* check do not navigate multiple page when volume bar is displayed */
+
+       int totalProgressTime;          /* total progress time for all slide*/
+       int elapsedProgressTime;                /*progress time from 1st slide to current slide*/
+
+       Elm_Genlist_Item_Class itc_title_single;        /* title button single recipient item */
+       Elm_Genlist_Item_Class itc_title;       /* title button multi recipient item */
+       Elm_Genlist_Item_Class hp_sa_class;     /* help page attach list save all item */
+       Elm_Genlist_Item_Class hp_class;        /* help page attach list item */
+       Elm_Genlist_Item_Class attach_sa_class; /*attachments select all item */
+       Elm_Genlist_Item_Class attach_item_class;       /*attachments each item */
+
+       Elm_Theme *title_th;    /* title theme */
+       Elm_Theme *progress_th;         /* progressbar theme*/
+
+       /* for use volume key setting */
+       Ecore_Event_Handler *volkey_release_handler;
+       Ecore_Event_Handler *volkey_press_handler;
+
+       Ecore_Timer *vol_up_key_longpress;
+       Ecore_Timer *vol_down_key_longpress;
+
+       Ecore_X_Display *xdisplay;
+} MSG_PLAY_DATA_S;
+
+typedef struct {
+       char pfile_name[MSG_VIEWER_FILENAME_MAX_LEN + 1];
+       char pfile_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1];
+       int pfile_size;
+       bool isSaveAll;                 /* for select all item */
+       Eina_Bool isChecked;            /* check object status of save attachment genlist */
+       Evas_Object *check_item;        /* check object for save attachments genlist */
+       MSG_VIEWER_MEDIA_TYPE_E media_type;
+       MSG_PLAY_DATA_S *viewer_play_data;
+} MSG_VIEWER_ATTACH_MEDIA_INFO_S;
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+MSG_BOOL msg_ui_viewer_create_player_view(MSG_PLAY_DATA_S *data);
+
+/*
+ *@fn          msg_ui_viewer_show_player_view(MSG_PLAY_DATA_S *data);
+ *@brief               This function is used to show player view again when player view is already ready.
+ * @param[in] data MSG_PLAY_DATA_S structure
+ * @return     return TRUE if player view is playing, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_show_player_view(MSG_PLAY_DATA_S *data);
+
+void msg_ui_viewer_play_view_init(void *data);
+void msg_ui_viewer_destroy_play_view(void *data);
+void msg_ui_viewer_connect_handler(void *data);
+void msg_ui_viewer_disconnect_handler(void *data);
+
+/*
+ *@fn          msg_ui_viewer_update_play_controller(void *data, MSG_VIEWER_PLAY_STATUS_E status);
+ *@brief               This function is used to enable/disable prev & next button
+ * @param[in] data MSG_PLAY_DATA_S structure
+ * @param[in] status viewer play status.
+ */
+void msg_ui_viewer_update_play_controller(void *data, MSG_VIEWER_PLAY_STATUS_E status);
+Evas_Object *msg_ui_viewer_create_navigation_layout(Evas_Object *parent);
+Evas_Object    *msg_ui_viewer_create_navi_title_layout(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_set_navi_title_layout(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_open_title_menu_genlist(void *data);
+void msg_ui_viewer_close_title_menu_genlist(void *data);
+void msg_ui_viewer_show_popup(void *data, Evas_Object *parent, char *pcontent);
+void msg_ui_viewer_create_msg_detail_popup(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_create_play_controller_timer(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_create_progressbar(MSG_PLAY_DATA_S *data, int slideIdx);
+void msg_ui_viewer_destroy_play_controller_progressbar_timer(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_destroy_play_controller_timer(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_copy_message_text_to_clipboard(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_create_volume_bar(void *data);
+void msg_ui_viewer_destroy_volume_bar(void *data);
+
+/* ========================VIEWER  CALLBACK========================*/
+/*
+ *@fn          msg_ui_viewer_smil_cb(SMIL_SLIDE_EVENT_PARAM_S *eventStatus, void *appUserData);
+ *@brief               This function is SMIL callback function
+ * @param[in] eventStatus  this is the slide info to be used by the application.
+ * @param[in] appUserData appdata structure
+ * @return MSG_SMIL_ERROR_E
+ */
+MSG_SMIL_ERROR_E msg_ui_viewer_smil_cb(SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus, void *appUserData);
+MSG_SMIL_ERROR_E msg_ui_viewer_set_entry_handle_cb(MSG_PLAY_DATA_S *data, void *entry);
+
+Eina_Bool msg_ui_viewer_mouse_down_cb(void *data, int type, void *event);
+Eina_Bool msg_ui_viewer_mouse_up_cb(void *data, int type, void *event);
+void msg_ui_viewer_play_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_play_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_play_layout_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+void msg_ui_viewer_title_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_save_button_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_delete_button_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_forward_button_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_resend_button_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_reply_button_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_more_button_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_back_button_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_toolbar_email_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_toolbar_call_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_toolbar_vcall_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_toolbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_toolbar_view_contact_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_toolbar_block_address_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_toolbar_unblock_address_cb(void *data, Evas_Object *obj, void *event_info);
+
+/* Play controller */
+void msg_ui_viewer_volume_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void msg_ui_viewer_prev_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void msg_ui_viewer_play_pause_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+void msg_ui_viewer_next_button_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+Eina_Bool  msg_ui_viewer_play_controller_progressbar_timer_cb(void *data);
+Eina_Bool msg_ui_viewer_play_controller_timer_cb(void *data);
+MSG_BOOL msg_ui_viewer_command_play_pause(void *data, MSG_VIEWER_ACTION_TYPE_E action_type);
+
+/* help page create cb - called from SMIL renderer */
+MSG_SMIL_ERROR_E msg_ui_viewer_help_page_smilrenderer_cb(MSG_PLAY_DATA_S *data, void **attach_list, void *box);
+void msg_ui_viewer_help_page_save_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+/* popup */
+void msg_ui_viewer_create_save_attachments_popup(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_viewer_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
+
+/* message info */
+int msg_ui_viewer_get_thread_address_count(MSG_PLAY_DATA_S *data);
+void msg_ui_viewer_get_thread_address_nth_address(MSG_PLAY_DATA_S *data, int number, char **address, int *contact_id);
+void msg_ui_viewer_title_update(MSG_PLAY_DATA_S *data, MSG_VIEWER_OPTION_CHANGE_TYPE_E option_type);
+MSG_BOOL msg_ui_viewer_check_address_is_blocked(void *data, char *address, int *filter_id);
+void msg_ui_viewer_set_font_size(MSG_PLAY_DATA_S *data, MSG_VIEWER_ENTRY_TYPE_E entry_type, MSG_VIEWER_FONT_CHANGE_TYPE_E change_type);
+#endif /* __MSG_UI_VIEWER_PLAY_VIEW_H__*/
diff --git a/viewer/include/msg-ui-viewer-types.h b/viewer/include/msg-ui-viewer-types.h
new file mode 100755 (executable)
index 0000000..54a52d8
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_UI_VIEWER_TYPE_H__
+#define __MSG_UI_VIEWER_TYPE_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include <msg.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#ifndef TRUE
+#define TRUE   1
+#endif
+#ifndef FALSE
+#define FALSE  0
+#endif
+
+#ifndef MSG_BOOL
+#define MSG_BOOL char
+#endif
+
+#define MSG_VIEWER_CONTENT_PATH        "/opt/usr/media"
+#define MSG_VIEWER_DOWNLOAD_PATH       MSG_VIEWER_CONTENT_PATH"/Downloads"
+#define MSG_VIEWER_FILENAME_MAX_LEN    MSG_FILENAME_LEN_MAX    /*255*/
+#define MSG_VIEWER_FILEPATH_MAX_LEN    MSG_FILEPATH_LEN_MAX    /*1024*/
+#define MSG_VIEWER_FILE_EXT_MAX_LEN    8
+
+#define UG_CONTACTS_DETAILS    "contacts-details-efl"
+#define UG_CONTACTS_LIST       "contacts-list-efl"
+
+#endif /*__MSG_UI_VIEWER_TYPE_H__*/
+
diff --git a/viewer/include/msg-ui-viewer-utility.h b/viewer/include/msg-ui-viewer-utility.h
new file mode 100755 (executable)
index 0000000..93e1083
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_VIEWER_UTILITY_H__
+#define __MSG_VIEWER_UTILITY_H__
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-types.h"
+#include <vconf.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_VIEWER_COLOR_HEXA_BUFFER_LEN       2
+#define MSG_VIEWER_HEXA_SIZE   16
+#define MSG_VIEWER_RGB_COLOR_BUF       7
+#define MSG_VIEWER_DEFAULT_FILE_NUMBER 1
+#define MSG_VIEWER_INVALID_FILE_NUMBER -1
+
+#define MSG_VIEWER_THEME       EDJDIR"/msg_viewer.edj"
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef unsigned int MSG_VIEWER_COLORREF;
+
+typedef struct _MSG_VIEWER_RGBQUAD {
+       unsigned char    rgbBlue;
+       unsigned char    rgbGreen;
+       unsigned char    rgbRed;
+       unsigned char    rgbReserved;
+} MSG_VIEWER_RGBQUAD;
+
+typedef union {
+       MSG_VIEWER_RGBQUAD rgbQuad;
+       MSG_VIEWER_COLORREF rgbColor;
+} MSG_VIEWER_RGB_UNION;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+
+/*
+ *@fn  msg_viewer_util_get_display_name_by_index(int index);
+ *@brief       this function is used to get display name from contact index
+ *@param[in] index contact_index
+ *@return      return display name of contact, Caller must free returned string after using it
+ */
+char *msg_viewer_util_get_display_name_by_index(int index);
+
+/*
+ *@fn  msg_viewer_util_get_file_ext(const char *filepath, char *file_ext, int ext_len);
+ *@brief       this function is used to get extension of file
+ *@param[in] address string pointer of filepath and file_ext
+ *@return      return TRUE on success, else FALSE
+ */
+MSG_BOOL msg_viewer_util_get_file_ext(const char *filepath, char *file_ext, int ext_len);
+
+/*
+ *@fn  msg_viewer_util_get_next_number(char *file_name_without_ext);
+ *@brief       this function is used to get the next number to rename the file
+ *@param[in] address string pointer of file_name_without_ext
+ *@return      return the number(int)
+ */
+int msg_viewer_util_get_next_number(char *file_name_without_ext);
+
+/*
+ *@fn  msg_viewer_util_get_color_as_string(char *szcolor, int szcolor_len, int r, int g, int b);
+ *@brief       this function is used to get rgb string from int to string like "ffffff". Buffer(szcolor) length should be longer than 7.
+ *@param[in]   r       Red color value
+ *@param[in]   g       Green color value
+ *@param[in]   b       Blue color value
+ *@param[in]   szcolor_len     buffer length of szcolor.
+ *@param[out]  szcolor RGB value will be get as string type.
+ */
+void msg_viewer_util_get_color_as_string(char *szcolor, int szcolor_len, int r, int g, int b);
+
+/*
+ *@fn  msg_viewer_util_get_default_path(char *dir_path, int dir_path_len);
+ *@brief       this function is used to get default file path
+ *@param[in]   dir_path_len    length of dir_path buffer
+ *@param[out]  dir_path        destination file_path of content to be saved
+ */
+MSG_BOOL msg_viewer_util_get_default_path(char *dir_path, int dir_path_len);
+
+/*
+ *@fn          msg_ui_viewer_get_buffer_from_file(const char *filepath, const char *opt, unsigned int *buffer_size)
+ *@brief               this function is used to get raw data of filepath
+ *@param[in] filepath src file path
+ *@param[in] opt open mode
+ *@param[out] buffer_size buffer size
+  *@return     return allocated raw file data, else NULL
+ *@Caution     Caller should free return raw file data after using it.
+ */
+unsigned char *msg_ui_viewer_get_buffer_from_file(const char *filepath, const char *opt, unsigned int *buffer_size);
+
+/*
+ *@fn          msg_ui_viewer_util_copy_file(const char *src_path, char *dst_path)
+ *@brief               Copy file from src to dest, if there is file at dest path, then save it with renamed one
+ *@param[in] src_path src file path
+ *@param[in] dst_path dest file path to be saved
+  *@return     return allocated copied file path, else NULL
+ *@Caution     Caller should free return copied file path after using data.
+ */
+char *msg_ui_viewer_util_copy_file(const char *src_path, char *dst_path);
+
+/*
+ *@fn          msg_ui_viewer_util_create_working_dir(void)
+ *@brief               create temp directroy to save a temp file for viewer
+  *@return     return created temp path, else NULL
+ *@Caution     Caller should free returned temp path after using it.
+ */
+char *msg_ui_viewer_util_create_working_dir(void);
+#endif
diff --git a/viewer/smil-player/include/msg-smil-content-manager.h b/viewer/smil-player/include/msg-smil-content-manager.h
new file mode 100755 (executable)
index 0000000..59894e6
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_CONTENT_MANAGER_SMIL_PLAYER_H__
+#define __MSG_CONTENT_MANAGER_SMIL_PLAYER_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-types.h"
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_MMS_SLIDE_INVALID  -1
+
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef struct _SMIL_CONTENT_MGR_HANDLE_S {
+       int     curSlideIdx;
+       msg_struct_t    msg_info_t;             /*MSG MMS data struct handle */
+       SMIL_SLIDE_INFO_S       *smilContent;   /*slide info of the message*/
+} SMIL_CONTENT_MGR_HANDLE_S;   /*Content Manager Handler.*/
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/**
+*@fn                   _msg_smil_create_content_mgr(msg_struct_t msg_info_t, SMIL_CONTENT_MGR_HANDLE_S **smilContMgrHndle);
+*@brief                        This API shall facilitate the the SMIL Player interface initialize the Content Manager Handler.
+*@return                       MSG_SMIL_SUCCESS on success , else failure return code
+*@param[in]            smilMsg    This is the message that the SMILPlayerInterface sends for page information extraction.
+*@param[out]   *smilContMgrHndle    The Content Manager Handler.
+*/
+MSG_SMIL_ERROR_E _msg_smil_create_content_mgr(msg_struct_t msg_info_t, SMIL_CONTENT_MGR_HANDLE_S **smilContMgrHndle);
+
+/**
+*@fn                   _msg_smil_destroy_content_mgr(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+*@brief                        This method will allow destroying the Content Manager handler and the complete slide queue for the MMS.
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[out]   None.
+*/
+void _msg_smil_destroy_content_mgr(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+
+/**
+*@fn                   _msg_smil_cont_mgr_set_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, SMIL_PLAYER_STATUS_E event);
+*@brief                        This function will allow updating the slideIdx's slide status to the Content Manager.
+*@return                       TRUE on success , else return FALSE
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[in]            curSlideIdx        This is current slide index to be updated.
+*@param[in]            event              This is the event to which the status of the Handlerand the Slide in the Queue has to be updated
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_cont_mgr_set_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx, SMIL_PLAYER_STATUS_E event);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx);
+*@brief                        This function will allow getting the slideIdx's slide status to the Content Manager.
+*@return                       current slide's status.
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[in]            slideIdx           This is slide index to get
+*@param[out]   None.
+*/
+SMIL_PLAYER_STATUS_E _msg_smil_cont_mgr_get_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_cur_slide_idx(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+*@brief                        This function returns the Current Slide index.
+*@return                       The Current Slide index on success , else failure return code
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[out]   None.
+*/
+int _msg_smil_cont_mgr_get_cur_slide_idx(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+
+/**
+*@fn                   _msg_smil_cont_mgr_set_cur_slide_idx(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx);
+*@brief                        This function set Current Slide index.
+*@return                       TRUE on success , else return FALSE
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[in]            slideIdx        This will be set as current slide index.
+*/
+MSG_BOOL _msg_smil_cont_mgr_set_cur_slide_idx(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_cur_slide(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+*@brief                        This function returns the Current Slide Detailed Information.
+*@return                       Slide's detailed information on Success , else failure return code
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[out]   None.
+*/
+SMIL_SLIDE_INFO_S *_msg_smil_cont_mgr_get_cur_slide(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_slide(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int  slideIdx);
+*@brief                        This function returns the requested Slide Detailed Information.
+*@return                       The requested Slide Detailed Information on success , else failure return code
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[in]            slideIdx           This is the handler to the SMILMessage sent back to UI while creating SMIL Player.
+*@param[out]   commonData   This is the data common to all the slides.
+*/
+SMIL_SLIDE_INFO_S *_msg_smil_cont_mgr_get_slide(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_cur_slide_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+*@brief                        This function returns the Current Slide Status.
+*@return                       current slide's status.
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[out]   None.
+*/
+SMIL_PLAYER_STATUS_E _msg_smil_cont_mgr_get_cur_slide_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+
+int _msg_smil_cont_mgr_get_total_slide_count(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+
+/**
+*@fn                   _msg_smil_cont_mgr_set_cur_slide_help_page(SMIL_SLIDE_INFO_S *singleSlideInfo, MSG_BOOL bSet);
+*@brief                        This function set current page for help page
+*@param[in]            singleSlideInfo         Slide information about currne page
+*@param[in]            bSet    The value of setting help page
+*@param[out]   None.
+*/
+void _msg_smil_cont_mgr_set_cur_slide_help_page(SMIL_SLIDE_INFO_S *singleSlideInfo, MSG_BOOL bSet);
+
+/**
+*@fn                   _msg_smil_cont_mgr_is_cur_slide_help_page(SMIL_SLIDE_INFO_S *singleSlideInfo);
+*@brief                        This function returns the result of current page is help page or not
+*@return                       whether current slide is help page or not
+*@param[in]            singleSlideInfo         Slide information about currne page
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_cont_mgr_is_cur_slide_help_page(SMIL_SLIDE_INFO_S *singleSlideInfo);
+
+/**
+*@fn                   _msg_smil_cont_mgr_delete_help_page(msg_message_t msg_message, SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+*@brief                        This function delete help page for preview mode viewer and return the result
+*@return                       the result of deleting help page
+*@param[in]            smilContMgrHndle        This is the handler to the SMILMessage Content Manager
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_cont_mgr_delete_help_page(msg_struct_t  msg_info_t, SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_page_list_handle(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+*@brief                        This function returns msg_list_handle_t for current msg
+*@return                       msg_list_handle_t handler of page list
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[out]   None.
+*/
+msg_list_handle_t _msg_smil_cont_mgr_get_page_list_handle(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_nth_page_struct_handle(msg_list_handle_t pagelist_info_t, int pageIdx);
+*@brief                        This function returns page struct handle with given page index
+*@return                       msg_struct_t handler of page
+*@param[in]            pagelist_info_t    page list handle
+*@param[in]            pageIdx    page index
+*@param[out]   None.
+*/
+msg_struct_t _msg_smil_cont_mgr_get_nth_page_struct_handle(msg_list_handle_t pagelist_info_t, int pageIdx);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_page_time_value(msg_struct_t pageInfo_t, int field);
+*@brief                        This function returns page duration time for singleSlideInfo
+*@return                       duration time
+*@param[in]            pageInfo_t         page structure handle.
+*@param[in]            field      page field value.
+*@param[out]   None.
+*/
+int _msg_smil_cont_mgr_get_page_time_value(msg_struct_t pageInfo_t, int field);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_page_media_list_handle(msg_struct_t pageInfo_t);
+*@brief                        This function returns msg_list_handle_t for media of current page
+*@return                       msg_list_handle_t handler of page list
+*@param[in]            pageInfo_t         page struct handler
+*@param[out]   None.
+*/
+msg_list_handle_t _msg_smil_cont_mgr_get_page_media_list_handle(msg_struct_t pageInfo_t);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_page_nth_media_struct_handle(msg_list_handle_t medialist_info_t, int mediaIdx);
+*@brief                        This function returns media struct handle with given page index
+*@return                       msg_struct_t handler of page
+*@param[in]            medialist_info_t           media list handle
+*@param[in]            mediaIdx           media index
+*@param[out]   None.
+*/
+msg_struct_t _msg_smil_cont_mgr_get_page_nth_media_struct_handle(msg_list_handle_t medialist_info_t, int mediaIdx);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_media_str_value(msg_struct_t media_info_t, int strfield, char *rtnStr);
+*@brief                        This function get STR value with given field for media
+*@return                       void
+*@param[in]            media_info_t       media list handle
+*@param[in]            strfield           field value
+*@param[out]           rtnStr     return value
+*/
+void _msg_smil_cont_mgr_get_media_str_value(msg_struct_t media_info_t, int strfield, char *rtnStr);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_media_int_value(msg_struct_t media_info_t, int intfield, int* rtnVal);
+*@brief                        This function get INT value with given field for media
+*@return                       void
+*@param[in]            media_info_t       media list handle
+*@param[in]            intfield           field value
+*@param[out]           rtnVal     return value
+*/
+void _msg_smil_cont_mgr_get_media_int_value(msg_struct_t media_info_t, int intfield, int* rtnVal);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_mms_body_struct_handle(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+*@brief                        This function returns msg mms data struct handle
+*@return                       mms data struct of current msg.
+*@param[in]            smilContMgrHndle           This is the handler to the SMILMessage Content Manager.
+*@param[out]   None.
+*/
+msg_struct_t   _msg_smil_cont_mgr_get_mms_body_struct_handle(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle);
+
+/**
+*@fn                   _msg_smil_cont_mgr_get_slide_time(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx, double *time);
+*@brief                        This API returns total slide duration after given slide index
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            slideIdx        start slide index to get remain time
+*@param[in]            bExcludeHp      whether help page will be excluded from total slide time or not
+*@param[out]           time calculated remain time
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_cont_mgr_get_slide_time(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx, MSG_BOOL bExcludeHp, double *time);
+#endif /*__MSG_CONTENT_MANAGER_SMIL_PLAYER_H__*/
+
diff --git a/viewer/smil-player/include/msg-smil-event-manager.h b/viewer/smil-player/include/msg-smil-event-manager.h
new file mode 100755 (executable)
index 0000000..eff5290
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_EVENT_MANAGER_SMIL_PLAYER_H__
+#define __MSG_EVENT_MANAGER_SMIL_PLAYER_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-types.h"
+#include <Ecore.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_MMS_SMIL_MAX_TIMER_IDX     (MSG_MMS_SMIL_MEDIA_TYPES * 2) /* + 2  6 for the media (max 3 types of Media Begin/End)  and 2 for the Page Begin/End. */
+#define MSG_MMS_SMIL_PAGE_MEDIA_IDX_ACTION 3
+#define MSG_MMS_SMIL_TIMER_CONVERT             1000
+#define MSG_MMS_SMIL_HELP_PAGE_DURATION        5000
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef struct _SMIL_TIMER_DATA_S {
+       int     mediaTimerDur[MSG_MMS_SMIL_MAX_TIMER_IDX][MSG_MMS_SMIL_PAGE_MEDIA_IDX_ACTION];
+       SMIL_PLAYER_PAGE_EVENT_E        actionTypeOnPage;
+} SMIL_TIMER_DATA_S;
+
+typedef struct _SMIL_TIMER_CALLBACK_DATA_S {
+       int     elementIdx;     /*mediaIdx;     This will carry the index to the elemnt (media/Page) whose timer is registered. -1 for Page, other values for Media.*/
+       SMIL_TIMER_DATA_S       slideTimerInfo;
+       void    *appUserData;
+       pfnSMILPlayerCb appSmilCb;
+       Ecore_Timer     *timerHandle;
+       SMIL_SLIDE_EVENT_PARAM_S        *curSlideParam;
+} SMIL_TIMER_CALLBACK_DATA_S;
+
+typedef struct _SMIL_EVENT_MGR_HANDLE_S {
+       SMIL_TIMER_CALLBACK_DATA_S      *slideTimerCbData;
+       void    *smilhandle;
+} SMIL_EVENT_MGR_HANDLE_S;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/**
+*@fn                   _msg_smil_create_event_mgr(void *cb, void *data , SMIL_EVENT_MGR_HANDLE_S **smilEvntMgrHndle);
+*@brief                        This function Initializes the Event Manager Handler.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            cb              This is the call back to the Client.
+*@param[in]            data            This is the Client Instance Related data.
+*@param[in]            smilEvntMgrHndle                This is the handler to the SMIL Event Manager.
+*/
+MSG_SMIL_ERROR_E _msg_smil_create_event_mgr(void *cb, void *data, SMIL_EVENT_MGR_HANDLE_S **smilEvntMgrHndle);
+
+/**
+*@fn                   _msg_smil_destroy_event_mgr(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+*@brief                        This function destroys the handler and all the Event Manager related data.
+*@param[in]            smilEvntMgrHndle           This is the handler to the SMILEvent Manager.
+*@param[out]   None.
+*/
+void _msg_smil_destroy_event_mgr(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+
+/**
+*@fn                   _msg_smil_event_mgr_play_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int curSlideIdx);
+*@brief                        This function fetches the slide info from the  Content Manager,sends to the Call Back from the Client
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            smilEvntMgrHndle           This is the handler to the SMILEvent Manager.
+*@param[in]            curSlideIdx              This represents the Slide Number to be Played.
+*@param[out]   None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_play_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int curSlideIdx);
+
+/**
+*@fn                   _msg_smil_event_mgr_stop_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+*@brief                        This function stops the smil timer.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            smilEvntMgrHndle           This is the handler to the SMILEvent Manager.
+*@param[out]   None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_stop_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+
+/**
+*@fn                   _msg_smil_event_mgr_pause_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle );
+*@brief                        This function kills the timer and calculates the remaining duration of the paused slide.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            smilEvntMgrHndle           This is the handler to the SMILEvent Manager.
+*@param[out]   None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_pause_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+
+/**
+*@fn                   MSG_SMIL_ERROR_E _msg_smil_event_mgr_resume_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int curSlideIdx );
+*@brief                        This function resumes the the paused slide and starts the timer with the remaining duration.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            smilEvntMgrHndle                This is the handler to the SMILEvent Manager.
+*@param[in]            curSlideIdx             This is the Current Slide Index.
+*@param[out]   None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_resume_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int curSlideIdx);
+
+/**
+*@fn                   _msg_smil_event_mgr_move_to_next_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+*@brief                        Facilitates the moving to next slide from the current if next slide is present.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            smilEvntMgrHndle           This is the handler to the SMILEvent Manager.
+*@param[out]   None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_move_to_next_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+
+/**
+*@fn                   _msg_smil_event_mgr_slide_timer_cb(void* data);
+*@brief                        This function is the callback for the smil timer.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            data       This is the data that is returned by the timer for use by the call back function.
+*@param[out]   None.
+*/
+Eina_Bool _msg_smil_event_mgr_slide_timer_cb(void *data);
+
+/**
+*@fn                   _msg_smil_event_mgr_is_slide_active(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+*@brief                        This function is check if event slide is set or not
+*@return                       TRUE on success, else return FALSE
+*@param[in]            smilEvntMgrHndle           This is the handler to the SMILEvent Manager.
+*/
+MSG_BOOL _msg_smil_event_mgr_is_slide_active(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+
+SMIL_TIMER_CALLBACK_DATA_S *_msg_smil_event_mgr_get_timer_cb_data(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+SMIL_SLIDE_EVENT_PARAM_S *_msg_smil_event_mgr_get_slide_event_param_data(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+
+SMIL_SLIDE_INFO_S *_msg_smil_event_mgr_get_current_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+MSG_BOOL _msg_smil_event_mgr_set_current_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_SLIDE_INFO_S *singleSlide);
+
+double _msg_smil_event_mgr_get_slide_time(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+MSG_BOOL _msg_smil_event_mgr_set_slide_time(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, double duration);
+
+MSG_BOOL _msg_smil_event_mgr_get_video_endofstream(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+MSG_BOOL _msg_smil_event_mgr_set_video_endofstream(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL iseos);
+
+SMIL_PLAYER_PAGE_EVENT_E _msg_smil_event_mgr_get_page_action_type(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+MSG_BOOL _msg_smil_event_mgr_set_page_action_type(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_PLAYER_PAGE_EVENT_E page_event);
+
+MSG_BOOL _msg_smil_event_mgr_get_is_video_media(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+MSG_BOOL _msg_smil_event_mgr_set_is_video_media(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL isvideo);
+
+MSG_BOOL _msg_smil_event_mgr_get_unsupported_content(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+MSG_BOOL _msg_smil_event_mgr_set_unsupported_content(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL isunsupported);
+
+MSG_BOOL _msg_smil_event_mgr_get_invalid_video_ro(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle);
+MSG_BOOL _msg_smil_event_mgr_set_invalid_video_ro(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL isinvalid_ro);
+
+MSG_BOOL _msg_smil_event_mgr_set_last_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL islast_slide);
+MSG_BOOL _msg_smil_event_mgr_set_last_slide_is_help_page(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL ishelp_page);
+MSG_BOOL _msg_smil_event_mgr_set_render_event(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_PLAYER_RENDER_EVENT_E render_event);
+
+#endif
diff --git a/viewer/smil-player/include/msg-smil-player-interface.h b/viewer/smil-player/include/msg-smil-player-interface.h
new file mode 100755 (executable)
index 0000000..d2cd60b
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_SMIL_PLAYER_INTERFACE_H__
+#define __MSG_SMIL_PLAYER_INTERFACE_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-types.h"
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+ /**
+*@fn                   msg_smil_create_smil_player(msg_struct_t message, void *callBack, void *userData ,void **instance);
+*@brief                        This wrapper API shall facilitate the client to intitialize the process of the SMIL Player Creation.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            message This is the message details structure
+*@param[in]            callBack        This is the callBack function that the Application registers with the SMIL Player for communication from the Player's side.
+*@param[in]            userData        This is the application handler.
+*@param[out]   instance        This will have a void* to the instance created by the API.
+*/
+MSG_SMIL_ERROR_E msg_smil_create_smil_player(msg_struct_t message, void *callBack, void *userData , void **instance);
+
+/**
+*@fn                   msg_smil_destroy_smil_player(void *smilhandle);
+*@brief                        This wrapper API shall destroy smil player
+*@param[in]            smilhandle      Smil player handle.
+*/
+void msg_smil_destroy_smil_player(void *smilhandle);
+
+/**
+*@fn                   msg_smil_get_current_slide_idx(void *hSmilHandle);
+*@brief                        This wrapper API shall facilitate the client to fetch the current slide index.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage sent back to UI while creating SMIL Player.
+*@param[out]   None.
+*/
+int msg_smil_get_current_slide_idx(void *hSmilHandle);
+
+/**
+*@fn                   msg_smil_get_current_slide_status(void *hSmilHandle);
+*@brief                        This wrapper API shall facilitate the client to get the current Slide Status.
+*@return                       SMIL_PLAYER_STATUS_E on success.
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[out]   None.
+*/
+SMIL_PLAYER_STATUS_E msg_smil_get_current_slide_status(void *hSmilHandle);
+
+/**
+*@fn                   msg_smil_on_slide_event_handler(void **hSmilHandle, SMIL_PLAYER_EVENT_E playerEvent);
+*@brief                        This wrapper API shall give the client one gate way for all types of actions performed on the Slide.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            playerEvent     This is the event that needs to be perfomed on the MMS message.
+*@param[out]   None.
+*/
+MSG_SMIL_ERROR_E msg_smil_on_slide_event_handler(void **hSmilHandle, SMIL_PLAYER_EVENT_E playerEvent);
+
+/**
+*@fn                   msg_smil_create_smil_player_layout(void *hSmilHandle, void *layout);
+*@brief                        This wrapper API shall create layout of SMILPlayer
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            layout  This is layout window to be set to SMILPlayer.
+*@param[out]   None.
+*/
+MSG_BOOL msg_smil_create_smil_player_layout(void *hSmilHandle, void *layout);
+
+/**
+*@fn                   msg_smil_set_smil_player_layout_size(void *hSmilHandle, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
+*@brief                        This wrapper API shall set layout size of SMILPlayer. It must be called after calling msg_smil_create_smil_player_layout.
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            left_top        x,y point info. of let-top position.
+*@param[in]            right_bottom    x,y point info. of right-bottom position.
+*@param[out]   None.
+*/
+MSG_BOOL msg_smil_set_smil_player_layout_size(void *hSmilHandle, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
+
+/*
+*@fn                   msg_smil_set_smil_player_help_page_cb(void *hSmilHandle, void *callBack, void *userData)
+*@brief                        This API shall change to render help page with player view
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            callBack        This is the callBack function that the Application registers with the SMIL Player for help page.
+*@param[in]            userData        This is the application handler.
+*@param[out]   None.
+*/
+MSG_BOOL msg_smil_set_smil_player_help_page_cb(void *hSmilHandle, void *callBack, void *userData);
+
+/*
+*@fn                   msg_smil_set_smil_player_entry_handle_cb(void *hSmilHandle, void *callBack)
+*@brief                This API shall pass entry handle to player view
+*@return               TRUE on success , else FALSE return
+*@param[in]    hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]    callBack        This is the callBack function that the Application registers with the SMIL Player.
+*@param[out]   None.
+*/
+MSG_BOOL msg_smil_set_smil_player_entry_handle_cb(void *hSmilHandle, void* callBack);
+
+/**
+*@fn                   msg_smil_get_current_slide_info(void *hSmilHandle);
+*@brief                        This API shall facilitate the client to get the current Slide info.
+*@return                       SMIL_SLIDE_INFO_S on success.
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[out]   None.
+*/
+SMIL_SLIDE_INFO_S *msg_smil_get_current_slide_info(void *hSmilHandle);
+
+/**
+*@fn                   msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, double *slideTime);
+*@brief                        This API returns total slide duration after given slide index
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            slideIdx        start slide index to get remain time
+*@param[in]            bExcludeHp      whether help page will be excluded from total slide time or not
+*@param[out]           slideTime calculated remain time
+*@param[out]   None.
+*/
+MSG_BOOL msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, MSG_BOOL bExcludeHp, double *slideTime);
+#endif
diff --git a/viewer/smil-player/include/msg-smil-player.h b/viewer/smil-player/include/msg-smil-player.h
new file mode 100755 (executable)
index 0000000..4ef5ee6
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_SMIL_PLAYER_H__
+#define __MSG_SMIL_PLAYER_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-content-manager.h"
+#include "msg-smil-event-manager.h"
+#include "msg-smil-render.h"
+#include <glib.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_MMS_SMIL_SLIDEIDX_INCREMENT  1
+#define MSG_MMS_SMIL_SLIDEIDX_DECREMENT  1
+
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef struct _SMIL_HANDLER_S {
+       SMIL_CONTENT_MGR_HANDLE_S       *smilContMgrHndle;      /* cont mgr handler*/
+       SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle;      /* evnt mgr handler*/
+       SMIL_RENDERER_DATA_S    *smilRenderer;  /* smil render */
+} SMIL_HANDLER_S;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/**
+*@fn                   _msg_smil_create_smil_player(msg_struct_t message, void *callBack, void *userData ,void **instance);
+*@brief                        This API shall facilitate the client to intitialize the process of the SMIL Player Creation.
+*@return                       MSG_SMIL_SUCCESS on success , else failure return code
+*@param[in]            message         This is the message details structure
+*@param[in]            callBack                This is the callBack function that the Application registers with the SMIL Player for communication from the Player's side.
+*@param[in]            userData                This is the application handler.
+*@param[out]    instance               This will have a void* to the instance created by the SMIL Player.
+*/
+MSG_SMIL_ERROR_E _msg_smil_create_smil_player(msg_struct_t message, void *callBack, void *userData, void **instance);
+
+/**
+*@fn                   _msg_smil_destroy_smil_player(void *smilhandle);
+*@brief                        This API destroy smil player
+*@param[out]    smilhandle             SMIL player handle.
+*/
+void _msg_smil_destroy_smil_player(void *smilhandle);
+
+/**
+*@fn                   _msg_smil_get_content_mgr(void *hSmilHandle);
+*@brief                        This API shall fetch content manager handle.
+*@return                       returns content manager handle on Success, else return NULL.
+*@param[in]            hSmilHandle        This is the handler to the SMILMessage..
+*/
+SMIL_CONTENT_MGR_HANDLE_S *_msg_smil_get_content_mgr(void *hSmilHandle);
+
+/**
+*@fn                   _msg_smil_get_event_mgr(void *hSmilHandle);
+*@brief                        This API shall fetch event manager handle.
+*@return                       returns event manager handle on Success, else return NULL.
+*@param[in]            hSmilHandle        This is the handler to the SMILMessage..
+*/
+SMIL_EVENT_MGR_HANDLE_S *_msg_smil_get_event_mgr(void *hSmilHandle);
+
+/**
+*@fn                   _msg_smil_get_renderder(void *hSmilHandle);
+*@brief                        This API shall fetch renderer handle.
+*@return                       returns renderer handle on Success, else return NULL.
+*@param[in]            hSmilHandle        This is the handler to the SMILMessage..
+*/
+SMIL_RENDERER_DATA_S *_msg_smil_get_renderder(void *hSmilHandle);
+
+/**
+*@fn                   _msg_smil_get_current_slide_idx(void *hSmilHandle);
+*@brief                        This API shall fetch the current slide index.
+*@return                       returns the current Slide index.
+*@param[in]            hSmilHandle        This is the handler to the SMILMessage..
+*/
+int _msg_smil_get_current_slide_idx(void *hSmilHandle);
+
+/**
+*@fn                   _msg_smil_get_current_slide_status(void *hSmilHandle);
+*@brief                        This API shall facilitate the client to get the current Slide Status.
+*@return                       SMIL_PLAYER_STATUS_E on success.
+*@param[in]            hSmilHandle        This is the handler to the SMILMessage.
+*@param[out]   None.
+*/
+SMIL_PLAYER_STATUS_E _msg_smil_get_current_slide_status(void *hSmilHandle);
+
+/**
+*@fn                   _msg_smil_player_on_slide_event_handler(void **hSmilHandle, SMIL_PLAYER_EVENT_E playerEvent);
+*@brief                        This API shall give the client one gate way for all types of actions performed on the Slide.
+*@return                       MSG_SMIL_SUCCESS on success, else failure return code
+*@param[in             SmilHandle      This is the handler to the SMILMessage.
+*@param[in]            playerEvent     This is the action that needs to be performed on the current slide.
+*@param[out]   None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_player_on_slide_event_handler(void **hSmilHandle, SMIL_PLAYER_EVENT_E playerEvent);
+
+/**
+*@fn                   _msg_smil_create_smil_player_layout(void *hSmilHandle, void *layout);
+*@brief                        This API shall create layout of SMILPlayer.
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            layout  This is layout window to be set to SMILPlayer
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_create_smil_player_layout(void *hSmilHandle, void *layout);
+
+/**
+*@fn                   _msg_smil_set_smil_player_layout_size(void *hSmilHandle, SMIL_POSITION_S* left_top, SMIL_POSITION_S* right_bottom);
+*@brief                        This API shall set layout window to SMILPlayer.
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            left_top        x,y point info. of let-top position.
+*@param[in]            right_bottom    x,y point info. of right-bottom position.
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_set_smil_player_layout_size(void *hSmilHandle, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
+
+/*
+*@fn                   _msg_smil_set_smil_player_help_page_cb(void *hSmilHandle, void *callBack, void *userData)
+*@brief                        This API let player viewer able to render help page with renderer handle
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            callBack        This is the callBack function that the Application registers with the SMIL Player for help page.
+*@param[in]            userData        This is the application handler.
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_set_smil_player_help_page_cb(void *hSmilHandle, void *callBack, void *userData);
+
+/*
+*@fn                   _msg_smil_set_smil_player_entry_handle_cb(void *hSmilHandle, void *callBack)
+*@brief                This API shall pass entry handle to player view
+*@return               TRUE on success , else FALSE return
+*@param[in]    hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]    callBack        This is the callBack function that the Application registers with the SMIL Player.
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_set_smil_player_entry_handle_cb(void *hSmilHandle, void *callBack);
+
+/**
+*@fn                   _msg_smil_get_current_slide_info(void *hSmilHandle);
+*@brief                        This API shall facilitate the client to get the current Slide info.
+*@return                       SMIL_SLIDE_INFO_S on success.
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[out]   None.
+*/
+SMIL_SLIDE_INFO_S *_msg_smil_get_current_slide_info(void *hSmilHandle);
+
+/**
+*@fn                   _msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, double *slideTime);
+*@brief                        This API returns total slide duration after given slide index
+*@return                       TRUE on success , else FALSE return
+*@param[in]            hSmilHandle     This is the handler to the SMILMessage.
+*@param[in]            slideIdx        start slide index to get remain time
+*@param[in]            bExcludeHp      whether help page will be excluded from total slide time or not
+*@param[out]   slideTime       calculated remain time
+*@param[out]   None.
+*/
+MSG_BOOL _msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, MSG_BOOL bExcludeHp, double *slideTime);
+
+#endif
diff --git a/viewer/smil-player/include/msg-smil-render.h b/viewer/smil-player/include/msg-smil-render.h
new file mode 100755 (executable)
index 0000000..9a2fcb7
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_SMIL_RENDER_H__
+#define __MSG_SMIL_RENDER_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-types.h"
+#include "msg-smil-util.h"
+#include <msg.h>
+#include <stdio.h>
+#include <Ecore_X.h>
+#include <Ethumb.h>
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+#include "msg-ui-viewer-drm-utility.h"
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define VIEWER_W       (480.0)
+#define VIEWER_XPAD_RATIO      (0.02)
+#define VIEWER_VIDEO_WIDTH     176
+#define VIEWER_VIDEO_HEIGHT    144
+#define VIEWER_TEXT_FONT_LEN   1024
+
+#define VIEWER_FONT_STYLE_BUF_LEN      10
+
+typedef unsigned char  VIEWER_BYTE;
+typedef unsigned short VIEWER_WORD;
+typedef unsigned long  VIEWER_DWORD;
+typedef unsigned long  VIEWER_COLORREF;
+#define VIEWER_RGB(r, g, b)    ((VIEWER_COLORREF)(((VIEWER_BYTE)(r) | ((VIEWER_WORD)((VIEWER_BYTE)(g)) << 8)) | (((VIEWER_DWORD)(VIEWER_BYTE)(b)) << 16)))
+
+/*==================================================================================================
+ *                                                                             ENUMERATIONS
+ *==================================================================================================*/
+enum viewer_media_player_state {
+       MEDIA_PLAYER_STATE_NONE = 0X00,
+       MEDIA_PLAYER_STATE_INIT,
+       MEDIA_PLAYER_STATE_READY,
+       MEDIA_PLAYER_STATE_PLAYING,
+       MEDIA_PLAYER_STATE_PAUSED,
+       MEDIA_PLAYER_STATE_STOP
+};
+
+typedef enum {
+       VIEWER_IMAGE_TYPE_NONE = 0,
+       VIEWER_IMAGE_TYPE_NORMAL,
+       VIEWER_IMAGE_TYPE_DRM_IMAGE,
+       VIEWER_IMAGE_TYPE_DRM_IMAGE_RAW_DATA,
+       VIEWER_IMAGE_TYPE_DRM_VIDEO,
+       VIEWER_IMAGE_TYPE_DRM_SOUND,
+       VIEWER_IMAGE_TYPE_UNSUPPORTED,
+} SMIL_RENDER_IMAGE_TYPE_E;
+
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef struct viewer_tagRGBQUAD {
+       VIEWER_BYTE     rgbBlue;
+       VIEWER_BYTE     rgbGreen;
+       VIEWER_BYTE     rgbRed;
+       VIEWER_BYTE     rgbReserved;
+} SMIL_RGBQUAD;
+
+typedef union {
+       SMIL_RGBQUAD    rgbQuad;
+       VIEWER_COLORREF rgbColor;
+} SMIL_RGB_UNION;
+
+typedef struct _SMIL_FONT_SYTLE_S {
+       char font_color[VIEWER_RGB_COLOR_BUF_LEN + 1];  /*"#ffffff"*/
+       char font_style[VIEWER_FONT_STYLE_BUF_LEN + 1]; /*"link", "em", etc.*/
+} SMIL_FONT_SYTLE_S;
+
+typedef struct _SMIL_RENDERER_DATA_S {
+       void *smilhandle;
+       msg_struct_t msg_info_t;
+       Evas_Object *main_window;
+       Evas_Object *layout_main;
+       Evas_Object *viewer_scroller;
+       Evas_Object *viewer_content_box;                /*it contans text(entry) and image*/
+       Evas_Object *viewer_bg_rect;                    /* bg color */
+       Evas_Object *viewer_body;                               /* it shows text , entry*/
+       Evas_Object *viewer_audio_name_rect;    /* rect area for displaying audio file name */
+       Evas_Object *viewer_body_top_padding;   /* padding rect area for top of content box */
+       Evas_Object *viewer_body_mid_padding;   /* padding rect area between image and text */
+       Evas_Object *viewer_body_bottom_padding;        /* padding rect area for bottom of content box */
+
+       char *viewer_body_text;         /*set page text*/
+       Evas_Object *insert_image;
+       Evas_Object *insert_sound_icon; /*display invalid drm sound icon*/
+       Evas_Object *insert_unsupported_icon;   /*display unsupported icon*/
+       Evas_Object *video_image;
+       Evas_Object *attach_list;       /* attach list for help page */
+       unsigned char *video_image_buffer;      /*Evas Object Image buffer*/
+       Ecore_Timer *video_update_timer;
+       MSG_BOOL is_skip_frame; /*it is used to skip 1 frame of videostream cb*/
+       int video_width;
+       int video_height;
+       int video_duration;     /*video content's duration*/
+
+       int resized_width;
+       int resized_height;
+
+       Ecore_Idler *video_resize_idle;
+       Ecore_Idler *video_duration_idle;
+       Ecore_Idler *video_eos_idle;
+
+       int player_state;
+       int viewer_width;
+       int viewer_height;
+       int viewer_landscape_width;
+       int viewer_landscape_height;
+       int button_height;
+       int main_win_rotate;    /*current rotation value of main window*/
+
+       pfnSMILHelpPageCb appSmilHelpPageCb;
+       pfnSMILFontSizeCb appSmilFontSizeCb;
+
+       void *appUserData;
+
+       VIEWER_COLORREF bgcolor;
+       MSG_BOOL ismute;        /*sound, video mute mode when silent mode*/
+
+       char *working_path;
+} SMIL_RENDERER_DATA_S;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+MSG_SMIL_ERROR_E _msg_smil_create_render(SMIL_RENDERER_DATA_S **viewerRenderData);
+void _msg_smil_destroy_render(SMIL_RENDERER_DATA_S *viewerRenderData);
+MSG_BOOL _msg_smil_init_render(SMIL_RENDERER_DATA_S *viewerRenderData);
+
+/*Create and set layout to display viewer*/
+MSG_BOOL _msg_smil_render_create_layout(SMIL_RENDERER_DATA_S *viewerRenderData, Evas_Object *layout);
+MSG_BOOL _msg_smil_render_set_layout_size(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
+MSG_BOOL _msg_smil_render_set_mute(SMIL_RENDERER_DATA_S *viewerRenderData, MSG_BOOL ismute);
+MSG_BOOL _msg_smil_render_set_help_page_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack, void *userData);
+MSG_BOOL _msg_smil_render_set_entry_handle_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack);
+
+/**
+*@fn                   _msg_smil_render_on_slide_render_handler(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
+*@brief                        This API shall handle render event to display mms contents
+*@return                       MSG_SMIL_SUCCESS on success, else failure return code
+*@param[in]            viewerRenderData        This is the handler of SMIL_RENDERER_DATA_S.
+*@param[in]            eventStatus     This is the eventstatus of a current slide.
+*@param[out] None.
+*/
+MSG_SMIL_ERROR_E _msg_smil_render_on_slide_render_handler(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
+MSG_BOOL _msg_smil_render_reload_mms(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus);
+
+
+/*==================================================================================================
+ *                                                                             Text related functions
+ *==================================================================================================*/
+MSG_BOOL _msg_smil_render_show_inserted_text(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path);
+void _msg_smil_render_show_help_page_attach_list(SMIL_RENDERER_DATA_S *viewerRenderData);
+void _msg_smil_render_set_entry_handle(SMIL_RENDERER_DATA_S *viewerRenderData);
+
+/*==================================================================================================
+ *                                                                             Media related functions
+ *==================================================================================================*/
+MSG_BOOL _msg_smil_render_show_inserted_audio(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status);
+MSG_BOOL _msg_smil_render_show_inserted_image(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path);
+MSG_BOOL _msg_smil_render_show_inserted_video(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status);
+
+/*smil player sound and video related functions*/
+MSG_BOOL _msg_smil_render_pause(void *data, int mediaType);
+MSG_BOOL _msg_smil_render_resume(void *data, int mediaType);
+
+/**
+*@fn                   _msg_smil_render_stop_playing_file(void *data)
+*@brief                        This API shall stop and destroy mm player
+*@return                       TRUE on success , else FALSE return code
+*@param[in]            data    This is the smil render structure
+*/
+MSG_BOOL _msg_smil_render_stop_playing_file(void *data);
+
+/**
+*@fn                   _msg_smil_render_rotate_video_window(void *data)
+*@brief                        This API shall rotate video window according to rotated status of viewer's main window
+*@param[in]            data    This is the smil render structure
+*/
+void _msg_smil_render_rotate_video_window(void *data);
+
+#endif
diff --git a/viewer/smil-player/include/msg-smil-types.h b/viewer/smil-player/include/msg-smil-types.h
new file mode 100755 (executable)
index 0000000..25d4b16
--- /dev/null
@@ -0,0 +1,181 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_SMIL_TYPES_H__
+#define __MSG_SMIL_TYPES_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+#include "msg-ui-util.h"
+#include "msg-ui-viewer-types.h"
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_INVALID_INDEX      0
+#define MSG_MMS_SMIL_MEDIA_TYPES       3
+
+/*==================================================================================================
+ *                                                                             ENUMERATIONS
+ *==================================================================================================*/
+typedef enum _MSG_SMIL_ERROR_E {
+       MSG_SMIL_SUCCESS = 0,
+       MSG_ERR_SMIL_UNKNOWN,
+       MSG_ERR_SMIL_NULL_MESSAGE,
+       MSG_ERR_SMIL_EVENT_NONE,
+       MSG_ERR_SMIL_INVALID_STORAGE,
+       MSG_ERR_SMIL_PAUSE_SLIDE_EVENT_FAILURE,
+       MSG_ERR_SMIL_PAUSE_SLIDE_CONTENT_FAILURE,
+       MSG_ERR_SMIL_PAUSE_SLIDE_RENDER_FAILURE,        /*smil render pause control*/
+       MSG_ERR_SMIL_RESUME_SLIDE_RENDER_FAILURE,       /*smil render resume control*/
+       MSG_ERR_SMIL_STOP_SLIDE_RENDER_FAILURE,         /*smil render stop control*/
+       MSG_ERR_SMIL_UPDATE_CONTENT_MGR_FAILURE,
+       MSG_ERR_SMIL_INVALID_PARAMETER,
+       MSG_ERR_SMIL_INVALID_SLIDE,
+       MSG_ERR_SMIL_INVALID_MEDIA_TIMESTAMPS,/*All media in the slide have invalid timestamps*/
+       MSG_ERR_SMIL_TIMER_FAILURE,
+       MSG_ERR_SMIL_DATA_RETREIVAL_FAILURE,
+       MSG_ERR_SMIL_UI_DISPLAY_FAIURE,
+} MSG_SMIL_ERROR_E;
+
+typedef enum _SMIL_PLAYER_EVENT_E {
+       PLAYER_EVENT_NONE = 0,
+       PLAYER_EVENT_INIT,
+       PLAYER_EVENT_PLAY,
+       PLAYER_EVENT_PREVIEW_PLAY,
+       PLAYER_EVENT_STOP,
+       PLAYER_EVENT_PAUSE,
+       PLAYER_EVENT_RESUME,
+       PLAYER_EVENT_NEXT_SLIDE,
+       PLAYER_EVENT_PREV_SLIDE,
+       PLAYER_EVENT_MUTE,
+       PLAYER_EVENT_ROTATE_WINDOW,
+       PLAYER_EVENT_DESTROY_SCREEN,
+} SMIL_PLAYER_EVENT_E;
+
+typedef enum _SMIL_PLAYER_STATUS_E {
+       PLAYER_STATUS_NONE = 0,
+       PLAYER_STATUS_PLAYING,
+       PLAYER_STATUS_PLAY_END,         /* End status while playing */
+       PLAYER_STATUS_PAUSED_END,       /* End status while paused */
+       PLAYER_STATUS_STOPPED,
+       PLAYER_STATUS_PAUSED,
+       PLAYER_STATUS_INVALID,
+} SMIL_PLAYER_STATUS_E;
+
+typedef enum _SMIL_PLAYER_MEDIA_EVENT_E {
+       MEDIA_EVENT_NONE = 0,
+       MEDIA_EVENT_BEGIN,
+       MEDIA_EVENT_END,
+} SMIL_PLAYER_MEDIA_EVENT_E;
+
+typedef enum _SMIL_PLAYER_PAGE_EVENT_E {
+       PAGE_EVENT_PLAY = 0,
+       PAGE_EVENT_END,
+       PAGE_EVENT_INTERNAL_MEDIA,
+       PAGE_EVENT_MOVE_TO_NEXT,
+       PAGE_EVENT_MOVE_TO_PREV,
+       PAGE_EVENT_NONE,
+} SMIL_PLAYER_PAGE_EVENT_E;
+
+typedef enum _SMIL_PLAYER_RENDER_EVENT_E {
+       SMIL_RENDER_EVENT_NONE = -1,
+       SMIL_RENDER_EVENT_PAGE_PLAY_START = 0,  /* Start playing the Page */
+       SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START,        /* Start Playing both Page and  Media at the same time*/
+       SMIL_RENDER_EVENT_PAUSE_CURRENT_PAGE,   /*Pause player by interrupted earjack off*/
+       SMIL_RENDER_EVENT_MOVE_PAGE_AFTER_PAUSED,       /*Pause player automatically after moving to prev or next page to keep up with prevous player status(paused)*/
+       SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE,      /* For notifying the Client about the last slide */
+       SMIL_RENDER_EVENT_DESTROY_SCREEN,       /*This Event is called to destroy current screen*/
+       SMIL_RENDER_EVENT_ERROR,        /* Stop playing because of Error*/
+} SMIL_PLAYER_RENDER_EVENT_E;
+
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+/*Common Data for the Slide.*/
+typedef struct _SMIL_PAGE_INFO_S {
+       MSG_BOOL        hasText;
+       MSG_BOOL        hasImage;
+       MSG_BOOL        hasVideo;
+       MSG_BOOL        hasAudio;
+       MSG_BOOL        isTexttop;
+       MSG_BOOL        isHelpPage;
+       int pageDuration;
+       int mediaCnt;
+} SMIL_PAGE_INFO_S;
+
+/*Common Data for the Slide.*/
+typedef struct _SMIL_MASTER_SLIDE_INFO_S {
+       int     pageCnt;        /*total no of pages.*/
+       int     regionCnt;
+       int     attachCnt;
+       int     transitionCnt;
+       int     metaCnt;
+} SMIL_MASTER_SLIDE_INFO_S;
+
+/*Structure for Per Slide Information Queue Implementation.*/
+typedef struct _SMIL_SLIDE_INFO_S {
+       int     pageIdx;        /*Index of the Current page.*/
+       SMIL_PAGE_INFO_S        *pageInfo;
+       SMIL_MASTER_SLIDE_INFO_S        *commonData;    /*Data common to ll the Slides.*/
+       SMIL_PLAYER_STATUS_E    slideStatus;    /*Slide's Current Status.*/
+
+       struct _SMIL_SLIDE_INFO_S       *nextSlide;     /*Address of the next Slide in the Queue.NULL if its the last slide.*/
+       struct _SMIL_SLIDE_INFO_S       *prevSlide;     /*Address of the next Slide in the Queue.NULL if its the first slide.*/
+} SMIL_SLIDE_INFO_S;
+
+typedef struct _SMIL_MEDIA_TIMER_S {
+       int     mediaIdx;
+       SMIL_PLAYER_MEDIA_EVENT_E       actionTypeOnMedia;      /* This will define what action needs to be performed by the Client on the particular meida.*/
+} SMIL_MEDIA_TIMER_S;
+
+/* This is the structure that is sent to the client in its callback */
+typedef struct _SMIL_SLIDE_CLIENT_CB_PARAM_S {
+       int pageIdx;
+       int pageCnt;
+       SMIL_PLAYER_RENDER_EVENT_E clientCbEvent;
+       MSG_BOOL isLastSlide;
+       MSG_BOOL isHelpSlide;
+} SMIL_SLIDE_CLIENT_CB_PARAM_S;
+
+typedef struct _SMIL_SLIDE_EVENT_PARAM_S {
+       SMIL_SLIDE_INFO_S *singleSlideInfo;
+       SMIL_PLAYER_RENDER_EVENT_E renderEvent;
+       SMIL_MEDIA_TIMER_S timerDataMedia[MSG_MMS_SMIL_MEDIA_TYPES];    /* Media Related Action - Start/End  */
+       MSG_BOOL isHelpSlide;
+       MSG_BOOL isLastSlide;
+       MSG_BOOL isVideoMedia;
+       MSG_BOOL isVideoRoInvalid;      /*This is set if video content has valid drm ro or not*/
+       MSG_BOOL iseos; /*This is set when end of stream of sound or video is passed*/
+       MSG_BOOL isUnsupportedContent;  /*This is set, if unsupported content is inserted on current page*/
+       double timerDur;        /*This is set, page timer duration*/
+       SMIL_SLIDE_CLIENT_CB_PARAM_S clientCbParam;
+} SMIL_SLIDE_EVENT_PARAM_S;
+
+typedef struct SMIL_POSITION_S {
+       int     x;
+       int     y;
+} SMIL_POSITION_S;
+
+typedef MSG_SMIL_ERROR_E(*pfnSMILPlayerCb)(SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus, void *appUserData);
+typedef MSG_SMIL_ERROR_E(*pfnSMILEventCb)(void *data, void *obj, void *event_info);
+typedef MSG_SMIL_ERROR_E(*pfnSMILHelpPageCb)(void *appUserData, void **attach_list, void *box);
+typedef MSG_SMIL_ERROR_E(*pfnSMILFontSizeCb)(void *appUserData, void *entry);
+
+#endif
diff --git a/viewer/smil-player/include/msg-smil-util.h b/viewer/smil-player/include/msg-smil-util.h
new file mode 100755 (executable)
index 0000000..cabe64b
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_SMIL_UTIL_H__
+#define __MSG_SMIL_UTIL_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-types.h"
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define VIEWER_COLOR_HEXA_BUFFER_LEN   2
+#define VIEWER_HEXA_SIZE       16
+#define VIEWER_RGB_COLOR_BUF_LEN       7
+
+/*==================================================================================================
+ *                                                                             ENUMERATIONS
+ *==================================================================================================*/
+
+typedef enum {
+       VIEWER_SMIL_REGION_IMAGE,
+       VIEWER_SMIL_REGION_TEXT,
+       VIEWER_SMIL_REGION_MAX
+} VIEWER_SMIL_REGION_TYPE_E;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+
+void _msg_smil_util_get_color_string(char *pszBuffer, int pszBuffer_len, int r, int g, int b);
+
+int _msg_smil_util_find_smallest(int num1, int num2);
+#endif
diff --git a/viewer/smil-player/src/msg-smil-content-manager.c b/viewer/smil-player/src/msg-smil-content-manager.c
new file mode 100755 (executable)
index 0000000..da88910
--- /dev/null
@@ -0,0 +1,1212 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include <metadata_extractor.h>
+#include "msg-smil-content-manager.h"
+#include "msg-smil-player.h"
+
+/*==================================================================================================
+ *                                                             FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/**
+*@fn                   __msg_smil_content_mgr_create_page_content(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, msg_struct_t *msgData);
+*@brief                        This function creates the Slide Page Queue which is further passed to the UI for display.
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            msgData    This is the message data
+*@param[in]            smilContMgrHndle    The Content Manager Handler
+*@param[out] None.
+*/
+static MSG_SMIL_ERROR_E __msg_smil_content_mgr_create_page_content(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, msg_struct_t msg_info_t);
+static SMIL_SLIDE_INFO_S *__msg_smil_content_mgr_create_mixed_message(msg_struct_t msg_info_t);
+static SMIL_SLIDE_INFO_S *__msg_smil_content_mgr_create_related_message(msg_struct_t msg_info_t);
+static SMIL_MASTER_SLIDE_INFO_S *__msg_smil_content_mgr_create_master_slide(msg_struct_t msg_info_t);
+static void __msg_smil_content_mgr_free_slide_list(SMIL_SLIDE_INFO_S *deleteSlide);
+static MSG_BOOL __msg_smil_cont_mgr_is_valid_slide(SMIL_MASTER_SLIDE_INFO_S *commonData, int curSlideIdx);
+
+/*==================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_SMIL_ERROR_E _msg_smil_create_content_mgr(msg_struct_t msg_info_t, SMIL_CONTENT_MGR_HANDLE_S **smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, msg_info_t == NULL, MSG_ERR_SMIL_NULL_MESSAGE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+
+       /*allocate memory for the content mgr handler*/
+       *smilContMgrHndle = (SMIL_CONTENT_MGR_HANDLE_S *)calloc(1, sizeof(SMIL_CONTENT_MGR_HANDLE_S));
+       if (*smilContMgrHndle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+               return MSG_ERR_SMIL_INVALID_STORAGE;
+       }
+
+       /*create and set page content info.*/
+       err = __msg_smil_content_mgr_create_page_content(*smilContMgrHndle, msg_info_t);
+       if (err != MSG_SMIL_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_content_mgr_create_page_content is failed");
+               if (*smilContMgrHndle != NULL) {
+                       free(*smilContMgrHndle);
+                       *smilContMgrHndle = NULL;
+               }
+
+               return err;
+       }
+
+       //store mmsdata struct handler
+       (*smilContMgrHndle)->msg_info_t = msg_info_t;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+static SMIL_MASTER_SLIDE_INFO_S *__msg_smil_content_mgr_create_master_slide(msg_struct_t msg_info_t)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, msg_info_t == NULL, NULL);
+       SMIL_MASTER_SLIDE_INFO_S *commonData = NULL;
+
+       /*allocate master slide*/
+       commonData = (SMIL_MASTER_SLIDE_INFO_S *)calloc(1, sizeof(SMIL_MASTER_SLIDE_INFO_S));
+       if (commonData == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+               return NULL;
+       }
+
+       msg_list_handle_t pagelist_info = NULL;
+       msg_get_list_handle(msg_info_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+
+       /*Get page count */
+       commonData->pageCnt = msg_list_length(pagelist_info);
+
+       /*Get Attachment List*/
+       msg_list_handle_t attachlist_info = NULL;
+       msg_get_list_handle(msg_info_t, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist_info);
+       commonData->attachCnt = msg_list_length(attachlist_info);
+
+       /*Get MetaData List*/
+       msg_list_handle_t metalist_info = NULL;
+       msg_get_list_handle(msg_info_t, MSG_MMS_META_LIST_HND, (void **)&metalist_info);
+       commonData->metaCnt = msg_list_length(metalist_info);
+
+       /*Get Region List */
+       msg_list_handle_t regionlist_info = NULL;
+       msg_get_list_handle(msg_info_t, MSG_MMS_REGION_LIST_HND, (void **)&regionlist_info);
+       commonData->regionCnt = msg_list_length(regionlist_info);
+
+       /*Get Transition List */
+       msg_list_handle_t translist_info = NULL;
+       msg_get_list_handle(msg_info_t, MSG_MMS_TRANSITION_LIST_HND, (void **)&translist_info);
+       commonData->transitionCnt = msg_list_length(translist_info);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return commonData;
+}
+
+
+static SMIL_SLIDE_INFO_S *__msg_smil_content_mgr_create_mixed_message(msg_struct_t msg_info_t)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, msg_info_t == NULL, NULL);
+       SMIL_SLIDE_INFO_S *newSlideContent = NULL;
+       int pageCnt = 0;
+       int attachCnt = 0;
+       MSG_BOOL isMixedMsg = FALSE;
+       msg_list_handle_t pagelist_info = NULL;
+       msg_list_handle_t attachlist_info = NULL;
+
+       msg_get_list_handle(msg_info_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+       pageCnt = msg_list_length(pagelist_info);
+
+       msg_get_list_handle(msg_info_t, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist_info);
+       attachCnt = msg_list_length(attachlist_info);
+
+       isMixedMsg = (pageCnt == 0) ? TRUE : FALSE;
+
+       if (isMixedMsg) {
+               newSlideContent = (SMIL_SLIDE_INFO_S *)calloc(1, sizeof(SMIL_SLIDE_INFO_S));
+               if (newSlideContent == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                       return NULL;
+               }
+
+               newSlideContent->pageIdx = pageCnt;
+               newSlideContent->slideStatus = PLAYER_STATUS_NONE;
+               newSlideContent->nextSlide = NULL;
+               newSlideContent->prevSlide = NULL;
+
+               /* set pageinfo with no data*/
+               newSlideContent->pageInfo = (SMIL_PAGE_INFO_S *)calloc(1, sizeof(SMIL_PAGE_INFO_S));
+               if (newSlideContent->pageInfo == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                       free(newSlideContent);
+                       newSlideContent = NULL;
+                       return NULL;
+               }
+
+               // Init
+               newSlideContent->pageInfo->mediaCnt = 0;
+               newSlideContent->pageInfo->isTexttop = FALSE;
+               newSlideContent->pageInfo->hasText = FALSE;
+               newSlideContent->pageInfo->hasImage = FALSE;
+               newSlideContent->pageInfo->hasVideo = FALSE;
+               newSlideContent->pageInfo->hasAudio = FALSE;
+               newSlideContent->pageInfo->pageDuration = MSG_MMS_SMIL_HELP_PAGE_DURATION;
+               _msg_smil_cont_mgr_set_cur_slide_help_page(newSlideContent, ((attachCnt > 0) ? TRUE : FALSE));
+
+               /*create master slide*/
+               newSlideContent->commonData = __msg_smil_content_mgr_create_master_slide(msg_info_t);
+               if (newSlideContent->commonData == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_content_mgr_create_master_slide is failed");
+                       if (newSlideContent) {
+                               free(newSlideContent);
+                               newSlideContent = NULL;
+                       }
+                       return NULL;
+               }
+       }  else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "This is not mixed message");
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return newSlideContent;
+}
+
+static SMIL_SLIDE_INFO_S *__msg_smil_content_mgr_create_related_message(msg_struct_t msg_info_t)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, msg_info_t == NULL, NULL);
+       SMIL_SLIDE_INFO_S *firstSlide = NULL;   /*first slide pointer to be returned*/
+       SMIL_SLIDE_INFO_S *newSlideContent = NULL;
+       int pageCnt = 0;
+       int attachCnt = 0;
+       MSG_BOOL bSkipEmptyPage = FALSE;
+       msg_list_handle_t pagelist_info = NULL;
+       msg_struct_t page_info = NULL;
+       msg_list_handle_t medialist_info = NULL;
+       msg_list_handle_t attachlist_info = NULL;
+
+       //Get page info and count
+       msg_get_list_handle(msg_info_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+       pageCnt = msg_list_length(pagelist_info);
+
+       //Get attach info and count
+       msg_get_list_handle(msg_info_t, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist_info);
+       attachCnt = msg_list_length(attachlist_info);
+
+       if (pageCnt > 0) {
+               SMIL_SLIDE_INFO_S *prev = NULL;
+               int pageIndex = 0;
+               int mediaCnt = 0;
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msgData->pageCnt = %d", pageCnt);
+
+               while (pageIndex < pageCnt) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pgCount = %d", pageIndex);
+
+                       page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, pageIndex);
+                       medialist_info = _msg_smil_cont_mgr_get_page_media_list_handle(page_info);
+                       mediaCnt = msg_list_length(medialist_info);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mediaCnt = %d", mediaCnt);
+
+                       /* For empty page, if there's only 1 page and help page is exist, then skip composing 1st empty page. */
+                       if (pageCnt == 1 && pageIndex == 0 && mediaCnt == 0 && attachCnt > 0) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "There's 1 empty page, but attachment is exist, skip composing empty 1 page!");
+                               bSkipEmptyPage = TRUE;
+                               break;
+                       }
+
+                       newSlideContent = (SMIL_SLIDE_INFO_S *)calloc(1, sizeof(SMIL_SLIDE_INFO_S));
+                       if (newSlideContent == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                               if (firstSlide == NULL) {
+                                       return NULL;
+                               } else
+                                       goto FREE_SLIDE_LIST;
+                       }
+
+                       /*init silde info data*/
+                       newSlideContent->pageIdx = pageIndex;
+                       newSlideContent->slideStatus = PLAYER_STATUS_NONE;
+                       newSlideContent->nextSlide = NULL;
+                       newSlideContent->prevSlide = NULL;
+
+                       /*set master(commonData) slide*/
+                       if (pageIndex == 0) {
+                               /*set smilContent of content mgr as first slide pointer */
+                               firstSlide = newSlideContent;
+
+                               newSlideContent->commonData = __msg_smil_content_mgr_create_master_slide(msg_info_t);
+                               if (newSlideContent->commonData == NULL) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_content_mgr_create_master_slide is failed");
+                                       goto FREE_SLIDE_LIST;
+                               }
+                       } else {
+                               /* Keeping one copy of commonData and makig all pointers to point to that copy */
+                               newSlideContent->commonData = firstSlide->commonData;
+                       }
+
+                       /*set pageinfo */
+                       newSlideContent->pageInfo = (SMIL_PAGE_INFO_S *)calloc(1, sizeof(SMIL_PAGE_INFO_S));
+                       if (newSlideContent->pageInfo == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                               goto FREE_SLIDE_LIST;
+                       }
+
+                       // Init
+                       newSlideContent->pageInfo->mediaCnt = mediaCnt;
+                       newSlideContent->pageInfo->isTexttop = FALSE;
+                       newSlideContent->pageInfo->hasText = FALSE;
+                       newSlideContent->pageInfo->hasImage = FALSE;
+                       newSlideContent->pageInfo->hasVideo = FALSE;
+                       newSlideContent->pageInfo->hasAudio = FALSE;
+
+                       msg_get_int_value(page_info, MSG_MMS_PAGE_PAGE_DURATION_INT, &(newSlideContent->pageInfo->pageDuration));
+
+                       int index = 0;
+                       while (index < mediaCnt) {
+                               msg_struct_t media_info = _msg_smil_cont_mgr_get_page_nth_media_struct_handle(medialist_info, index);
+                               int mediaType = 0;
+                               _msg_smil_cont_mgr_get_media_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+                               if (mediaType == MMS_SMIL_MEDIA_TEXT) {
+                                       newSlideContent->pageInfo->hasText = TRUE;
+                                       index++;
+                                       continue;
+                               } else if (mediaType == MMS_SMIL_MEDIA_AUDIO) {
+                                       newSlideContent->pageInfo->hasAudio = TRUE;
+                                       index++;
+                                       continue;
+                               } else if (mediaType == MMS_SMIL_MEDIA_VIDEO || mediaType == MMS_SMIL_MEDIA_IMG_OR_VIDEO) {
+                                       newSlideContent->pageInfo->hasVideo = TRUE;
+                                       index++;
+                                       continue;
+                               } else if (mediaType == MMS_SMIL_MEDIA_IMG || mediaType == MMS_SMIL_MEDIA_ANIMATE) {
+                                       newSlideContent->pageInfo->hasImage = TRUE;
+                                       index++;
+                                       continue;
+                               } else {
+                                       index++;
+                               }
+                       }
+
+                       //check isTexttop
+                       if (newSlideContent->pageInfo->hasText &&
+                               (newSlideContent->pageInfo->hasVideo || newSlideContent->pageInfo->hasImage)) {
+                               int nTop_0 = 0;
+                               int nTop_1 = 0;
+                               int nHeight_0 = 0;
+                               int nHeight_1 = 0;
+                               char szID_0[MAX_SMIL_REGION_ID] = {0,};
+                               char szID_1[MAX_SMIL_REGION_ID] = {0,};
+
+                               msg_list_handle_t region_list = NULL;
+                               msg_get_list_handle(msg_info_t, MSG_MMS_REGION_LIST_HND, (void **)&region_list);
+
+                               /* Get 0th region */
+                               msg_struct_t region_info_0 = (msg_struct_t)msg_list_nth_data(region_list, 0);
+                               msg_get_str_value(region_info_0, MSG_MMS_REGION_ID_STR, szID_0, sizeof(szID_0));
+                               msg_get_int_value(region_info_0, MSG_MMS_REGION_LENGTH_TOP_INT, &nTop_0);
+                               msg_get_int_value(region_info_0, MSG_MMS_REGION_LENGTH_HEIGHT_INT, &nHeight_0);
+
+                               /* Get 1th region */
+                               msg_struct_t region_info_1 = (msg_struct_t)msg_list_nth_data(region_list, 1);
+                               msg_get_str_value(region_info_1, MSG_MMS_REGION_ID_STR, szID_1, sizeof(szID_1));
+                               msg_get_int_value(region_info_1, MSG_MMS_REGION_LENGTH_TOP_INT, &nTop_1);
+                               msg_get_int_value(region_info_1, MSG_MMS_REGION_LENGTH_HEIGHT_INT, &nHeight_1);
+
+                               /*check text top
+                                *      if (text's top == 0 & image's top != 0)
+                                *              text top
+                                *      else if (text's top < image's top)
+                                *              text top
+                                *      else if (text's top == 0 & image's top == 0) {
+                                *              if (text' height < image's height )
+                                *                      text top
+                                *      }
+                                */
+
+                               /*find and set image, text region*/
+                               if (!strcasecmp(szID_0, "Image")) {     /*Image top region_info_0 is IMAGE REGION*/
+                                       if (nTop_1 == 0 && nTop_0 != 0) {
+                                               newSlideContent->pageInfo->isTexttop = TRUE;
+                                       } else if (nTop_1 < nTop_0) {
+                                               newSlideContent->pageInfo->isTexttop = TRUE;
+                                       } else if (nTop_1 == 0 && nTop_0 == 0) {
+                                               if (nHeight_1 < nHeight_0) {
+                                                       newSlideContent->pageInfo->isTexttop = TRUE;
+                                               }
+                                       }
+
+                               } else if (!strcasecmp(szID_1, "Image")) { /* region_info_1 is IMAGE_REGION */
+                                       if (nTop_0 == 0 && nTop_1 != 0) {
+                                               newSlideContent->pageInfo->isTexttop = TRUE;
+                                       } else if (nTop_0 < nTop_1) {
+                                               newSlideContent->pageInfo->isTexttop = TRUE;
+                                       } else if (nTop_0 == 0 && nTop_1 == 0) {
+                                               if (nHeight_0 < nHeight_1) {
+                                                       newSlideContent->pageInfo->isTexttop = TRUE;
+                                               }
+                                       }
+                               }
+                       }
+
+                       /*set prev, next slide pointer*/
+                       newSlideContent->prevSlide = prev;
+                       if (prev != NULL) {
+                               prev->nextSlide = newSlideContent;
+                       }
+
+                       prev = newSlideContent;
+                       pageIndex++;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "This is not related message");
+       }
+
+       if (attachCnt > 0) {
+               SMIL_SLIDE_INFO_S *lastSlide = NULL;    /*last slide pointer to ref for help page */
+               newSlideContent = (SMIL_SLIDE_INFO_S *)calloc(1, sizeof(SMIL_SLIDE_INFO_S));
+               if (newSlideContent == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                               return NULL;
+               }
+
+               newSlideContent->pageIdx = (bSkipEmptyPage) ? pageCnt-1 : pageCnt;              //set last page
+               newSlideContent->slideStatus = PLAYER_STATUS_NONE;
+               newSlideContent->nextSlide = NULL;
+
+               if (firstSlide)
+                       newSlideContent->commonData = firstSlide->commonData;
+               else
+                       newSlideContent->commonData = __msg_smil_content_mgr_create_master_slide(msg_info_t);
+
+               /*set pageinfo */
+               newSlideContent->pageInfo = (SMIL_PAGE_INFO_S *)calloc(1, sizeof(SMIL_PAGE_INFO_S));
+               if (newSlideContent->pageInfo == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                       if (firstSlide == NULL) {
+                               return NULL;
+                       } else
+                       goto FREE_SLIDE_LIST;
+               }
+
+               // Init
+               newSlideContent->pageInfo->mediaCnt = 0;
+               newSlideContent->pageInfo->isTexttop = FALSE;
+               newSlideContent->pageInfo->hasText = FALSE;
+               newSlideContent->pageInfo->hasImage = FALSE;
+               newSlideContent->pageInfo->hasVideo = FALSE;
+               newSlideContent->pageInfo->hasAudio = FALSE;
+               newSlideContent->pageInfo->pageDuration = MSG_MMS_SMIL_HELP_PAGE_DURATION;
+               _msg_smil_cont_mgr_set_cur_slide_help_page(newSlideContent, TRUE);
+
+               /* set no media contents */
+
+               if (firstSlide) {
+                       lastSlide = firstSlide;         //set first slide for searching last slide
+
+                       for (; lastSlide->nextSlide != NULL ;)
+                               lastSlide = lastSlide->nextSlide;
+
+                       newSlideContent->prevSlide = lastSlide;
+                       lastSlide->nextSlide = newSlideContent;
+
+                       firstSlide->commonData->pageCnt += 1;
+               } else {
+                       newSlideContent->prevSlide = NULL;
+                       newSlideContent->nextSlide = NULL;
+
+                       firstSlide = newSlideContent;
+               }
+       }
+
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return firstSlide;
+
+FREE_SLIDE_LIST:
+       /*free current slide data*/
+       if (newSlideContent) {
+               if (newSlideContent->pageInfo) {
+                       free(newSlideContent->pageInfo);
+                       newSlideContent->pageInfo = NULL;
+               }
+               free(newSlideContent);
+               newSlideContent = NULL;
+       }
+
+       __msg_smil_content_mgr_free_slide_list(firstSlide);
+
+       return NULL;
+}
+
+
+
+/*********************************************************************************************
+*This method allocates memory and does a deep copy of the message details received from the FW.
+*********************************************************************************************/
+static MSG_SMIL_ERROR_E __msg_smil_content_mgr_create_page_content(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, msg_struct_t msg_info_t)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, msg_info_t == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+
+       MSG_BOOL isMixedMsg = FALSE;
+       int pageCnt = 0;
+       msg_list_handle_t pagelist_info = NULL;
+       msg_get_list_handle(msg_info_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+       pageCnt = msg_list_length(pagelist_info);
+
+       isMixedMsg = (pageCnt == 0) ? TRUE : FALSE;
+
+       if (isMixedMsg) {       /*multipart mixed mms*/
+               smilContMgrHndle->smilContent = __msg_smil_content_mgr_create_mixed_message(msg_info_t);
+               if (smilContMgrHndle->smilContent == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_content_mgr_create_mixed_message is failed");
+                       return MSG_ERR_SMIL_INVALID_STORAGE;
+               }
+       } else {        /*multipart related mms*/
+               smilContMgrHndle->smilContent = __msg_smil_content_mgr_create_related_message(msg_info_t);
+               if (smilContMgrHndle->smilContent == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_content_mgr_create_mixed_message is failed");
+                       return MSG_ERR_SMIL_INVALID_STORAGE;
+               }
+       }
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return MSG_SMIL_SUCCESS;
+}
+
+
+
+static void __msg_smil_content_mgr_free_slide_list(SMIL_SLIDE_INFO_S *deleteSlide)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, deleteSlide == NULL);
+
+       if (deleteSlide->nextSlide == NULL) {   /*Single Slide message*/
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Freeing smilContent if MMS has one page");
+               /*free commonData*/
+               if (deleteSlide->commonData != NULL) {
+                       free(deleteSlide->commonData);
+                       deleteSlide->commonData = NULL;
+               }
+               /*free page data*/
+               if (deleteSlide->pageInfo != NULL) {
+                       free(deleteSlide->pageInfo);
+                       deleteSlide->pageInfo = NULL;
+               }
+               free(deleteSlide);
+
+               return;
+       } else {        /*Multiple Slides message*/
+               SMIL_SLIDE_INFO_S *nextSlide = NULL;
+               while (deleteSlide->nextSlide != NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Freeing smilContent: page = %d ", deleteSlide->pageIdx);
+                       nextSlide = deleteSlide->nextSlide;
+                       /*free commonData*/
+                       if (deleteSlide->pageIdx == 0) {
+                               if (deleteSlide->commonData != NULL) {
+                                       free(deleteSlide->commonData);
+                                       deleteSlide->commonData = NULL;
+                               }
+                       }
+
+                       free(deleteSlide);
+
+                       deleteSlide = nextSlide;
+               }
+
+               /*free the last slide data*/
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Freeing smilContent last page");
+               /*free page data*/
+               if (deleteSlide->pageInfo != NULL) {
+                       free(deleteSlide->pageInfo);
+                       deleteSlide->pageInfo = NULL;
+               }
+               free(deleteSlide);
+
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+void _msg_smil_destroy_content_mgr(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL);
+       SMIL_SLIDE_INFO_S *deleteSlide = smilContMgrHndle->smilContent;
+
+       __msg_smil_content_mgr_free_slide_list(deleteSlide);
+       smilContMgrHndle->smilContent = NULL;
+
+       free(smilContMgrHndle);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+static MSG_BOOL __msg_smil_cont_mgr_is_valid_slide(SMIL_MASTER_SLIDE_INFO_S *commonData, int curSlideIdx)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, commonData == NULL, FALSE);
+
+       if (commonData->pageCnt > 0) {  /*Multipart Related message*/
+               if (curSlideIdx > (commonData->pageCnt - 1) || curSlideIdx < 0)
+                       return  FALSE;
+       } else if (commonData->pageCnt == 0) {  /*Multipart Mixed message*/
+               if (curSlideIdx > (commonData->pageCnt) || curSlideIdx < 0)
+                       return  FALSE;
+       } else {
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_cont_mgr_set_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx, SMIL_PLAYER_STATUS_E event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent->commonData == NULL, FALSE);
+       SMIL_SLIDE_INFO_S *findSlide = smilContMgrHndle->smilContent;
+       int count = 0;
+
+       if (__msg_smil_cont_mgr_is_valid_slide(findSlide->commonData, slideIdx) == FALSE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Slide index is invalid");
+               return FALSE;
+       }
+
+       while (count < slideIdx) {
+               findSlide = findSlide->nextSlide;
+               count++;
+       }
+       findSlide->slideStatus = event;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Slide number = %d", findSlide->pageIdx);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Slide Status = %d", findSlide->slideStatus);
+
+       return TRUE;
+}
+
+SMIL_PLAYER_STATUS_E _msg_smil_cont_mgr_get_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, PLAYER_STATUS_INVALID);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, PLAYER_STATUS_INVALID);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent->commonData == NULL, PLAYER_STATUS_INVALID);
+       SMIL_SLIDE_INFO_S *findSlide = smilContMgrHndle->smilContent;
+       int count = 0;
+
+       if (__msg_smil_cont_mgr_is_valid_slide(findSlide->commonData, slideIdx) == FALSE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Slide index is invalid");
+               return PLAYER_STATUS_INVALID;
+       }
+
+       while (count < slideIdx) {
+               findSlide = findSlide->nextSlide;
+               count++;
+       }
+
+       return findSlide->slideStatus;
+}
+
+
+
+SMIL_PLAYER_STATUS_E _msg_smil_cont_mgr_get_cur_slide_status(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, PLAYER_STATUS_INVALID);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, PLAYER_STATUS_INVALID);
+       SMIL_SLIDE_INFO_S *findSlide = smilContMgrHndle->smilContent;
+       int count = 0;
+
+       while (count < smilContMgrHndle->curSlideIdx) {
+               findSlide = findSlide->nextSlide;
+               count++;
+
+               if (findSlide == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "smilContMgrHndle->smilContent is NULL");
+                       return PLAYER_STATUS_INVALID;
+               }
+       }
+
+       return (findSlide->slideStatus);
+}
+
+
+int _msg_smil_cont_mgr_get_cur_slide_idx(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, MSG_MMS_SLIDE_INVALID);
+
+       return smilContMgrHndle->curSlideIdx;
+}
+
+
+MSG_BOOL _msg_smil_cont_mgr_set_cur_slide_idx(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, FALSE);
+       SMIL_SLIDE_INFO_S *firstSlide = smilContMgrHndle->smilContent;
+
+       if (firstSlide->commonData) {
+               if (__msg_smil_cont_mgr_is_valid_slide(firstSlide->commonData, slideIdx) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Slide index is invalid");
+                       return FALSE;
+               }
+
+               smilContMgrHndle->curSlideIdx = slideIdx;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Slide index is invalid");
+               return FALSE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+
+int _msg_smil_cont_mgr_get_total_slide_count(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, MSG_MMS_SLIDE_INVALID);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, MSG_MMS_SLIDE_INVALID);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent->commonData == NULL, MSG_MMS_SLIDE_INVALID);
+
+       return smilContMgrHndle->smilContent->commonData->pageCnt;
+}
+
+
+SMIL_SLIDE_INFO_S *_msg_smil_cont_mgr_get_cur_slide(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent->commonData == NULL, NULL);
+       SMIL_SLIDE_INFO_S *findSlide = smilContMgrHndle->smilContent;
+       int pageCnt = findSlide->commonData->pageCnt;
+       int count = 0;
+
+       while (count < pageCnt) {
+               if (count == smilContMgrHndle->curSlideIdx) {
+                       return findSlide;
+               }
+               findSlide = findSlide->nextSlide;
+               count++;
+       }
+
+       //Adjust Mixed type msg, first slide should be set as cur slide
+       if (pageCnt == 0) {
+               msg_list_handle_t page_list_t = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+               if (!page_list_t) {
+                       return findSlide;
+               }
+       }
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return NULL;
+}
+
+
+SMIL_SLIDE_INFO_S *_msg_smil_cont_mgr_get_slide(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, NULL);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "slide Index = %d", slideIdx);
+       SMIL_SLIDE_INFO_S *findSlide = smilContMgrHndle->smilContent;
+
+       if (findSlide->commonData) {
+               if (__msg_smil_cont_mgr_is_valid_slide(findSlide->commonData, slideIdx) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Slide index is invalid");
+                       return NULL;
+               }
+
+               while (findSlide->pageIdx < slideIdx)   {
+                       findSlide = findSlide->nextSlide;
+                       if (findSlide == NULL)
+                               break;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return findSlide;
+}
+
+void _msg_smil_cont_mgr_set_cur_slide_help_page(SMIL_SLIDE_INFO_S *singleSlideInfo, MSG_BOOL bSet)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, singleSlideInfo == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, singleSlideInfo->pageInfo == NULL);
+
+       singleSlideInfo->pageInfo->isHelpPage = bSet;
+
+       if (bSet) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Current page set as help page!");
+       } else  {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Current page set as normal page!");
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+MSG_BOOL _msg_smil_cont_mgr_is_cur_slide_help_page(SMIL_SLIDE_INFO_S *singleSlideInfo)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, singleSlideInfo == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, singleSlideInfo->pageInfo == NULL, FALSE);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "The result of checking help page = %d", singleSlideInfo->pageInfo->isHelpPage);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return singleSlideInfo->pageInfo->isHelpPage;
+}
+
+MSG_BOOL _msg_smil_cont_mgr_delete_help_page(msg_struct_t msg_info_t, SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, msg_info_t == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, FALSE);
+
+       MSG_BOOL isMixedMsg = FALSE;
+       msg_list_handle_t pagelist_info = NULL;
+       msg_struct_t    page_info = NULL;
+       msg_list_handle_t medialist_info = NULL;
+       msg_list_handle_t attachlist_info = NULL;
+       int pageCnt = 0;
+       int mediaCnt = 0;
+       int attachCnt = 0;
+
+       SMIL_SLIDE_INFO_S *curSlide = smilContMgrHndle->smilContent;
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlide == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlide->commonData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlide->pageInfo == NULL, FALSE);
+
+       /* get page list info */
+       msg_get_list_handle(msg_info_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+       pageCnt = msg_list_length(pagelist_info);
+
+       isMixedMsg = (pageCnt == 0) ? TRUE : FALSE;
+
+       if (isMixedMsg) {
+               /* change current slide page tag */
+               _msg_smil_cont_mgr_set_cur_slide_help_page(curSlide, FALSE);
+
+               /*set prev, next slide pointer*/
+               curSlide->prevSlide = NULL;
+               curSlide->nextSlide = NULL;
+       } else {                // related msg
+
+               msg_get_list_handle(msg_info_t, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist_info);
+               attachCnt = msg_list_length(attachlist_info);
+
+               //Check 1st page media info, media count
+               page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, 0);
+               medialist_info = _msg_smil_cont_mgr_get_page_media_list_handle(page_info);
+               mediaCnt = msg_list_length(medialist_info);
+
+               if (attachCnt > 0) {
+                       if (pageCnt == 1 && mediaCnt == 0) {    // condition for skip and show Help page direct
+                               /* change current slide page tag */
+                               _msg_smil_cont_mgr_set_cur_slide_help_page(curSlide, FALSE);
+
+                               /*set prev, next slide pointer*/
+                               curSlide->prevSlide = NULL;
+                               curSlide->nextSlide = NULL;
+                       } else {
+                               SMIL_SLIDE_INFO_S *firstSlide = NULL;   /*first slide */
+                               SMIL_SLIDE_INFO_S *lastSlide = NULL;    /*last slide pointer to ref for help page */
+                               SMIL_SLIDE_INFO_S *lastaheadSlide = NULL;       /*last ahead slide pointer */
+
+                               firstSlide = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, 0);
+                               if (firstSlide == NULL) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "failed in getting firstSlide");
+                                       return FALSE;
+                               }
+                               lastSlide = firstSlide;         //copy pointer to last slide
+
+                               for(; lastSlide->nextSlide; )
+                                       lastSlide = lastSlide->nextSlide;
+
+                               lastaheadSlide = lastSlide->prevSlide;
+
+                               firstSlide->commonData->pageCnt -= 1;
+                               lastaheadSlide->nextSlide = NULL;
+
+                               if (lastSlide->pageInfo) {
+                                       free(lastSlide->pageInfo);
+                                       lastSlide->pageInfo = NULL;
+                               }
+
+                               free(lastSlide);
+                               lastSlide = NULL;
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+/*
+ *     functions for page/media struct handle with FW managed api
+ */
+msg_list_handle_t _msg_smil_cont_mgr_get_page_list_handle(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, NULL);
+       msg_struct_t msg_info_t = _msg_smil_cont_mgr_get_mms_body_struct_handle(smilContMgrHndle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, msg_info_t == NULL, NULL);
+
+       int pageCnt = 0;
+
+       /*Get struct handle of current page */
+       msg_list_handle_t pagelist_info = NULL;
+       msg_get_list_handle(msg_info_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+
+       pageCnt = msg_list_length(pagelist_info);
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, pageCnt == 0, NULL);
+
+       return pagelist_info;
+}
+
+msg_struct_t _msg_smil_cont_mgr_get_nth_page_struct_handle(msg_list_handle_t pagelist_info_t, int pageIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, pagelist_info_t == NULL, NULL);
+
+       int pageCnt = msg_list_length(pagelist_info_t);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, pageCnt == 0, NULL, "page length is 0, no page is exist");
+
+       /*Get page*/
+       msg_struct_t page_info = NULL;
+       page_info = (msg_struct_t)msg_list_nth_data(pagelist_info_t, pageIdx);
+
+       return page_info;
+}
+
+int _msg_smil_cont_mgr_get_page_time_value(msg_struct_t pageInfo_t, int field)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, pageInfo_t == NULL, MSG_MMS_SLIDE_INVALID);
+       int time = 0;
+
+       /*Get page nDur */
+       if (field == MSG_MMS_PAGE_PAGE_DURATION_INT) {
+               msg_get_int_value(pageInfo_t, MSG_MMS_PAGE_PAGE_DURATION_INT, &time);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page duration time = %d", time);
+       } else if (field == MSG_MMS_PAGE_BEGIN_TIME_INT) {
+               msg_get_int_value(pageInfo_t, MSG_MMS_PAGE_BEGIN_TIME_INT, &time);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page begin time = %d", time);
+       } else if (field == MSG_MMS_PAGE_END_TIME_INT) {
+               msg_get_int_value(pageInfo_t, MSG_MMS_PAGE_END_TIME_INT, &time);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page end time = %d", time);
+       } else if (field == MSG_MMS_PAGE_MIN_INT) {
+               msg_get_int_value(pageInfo_t, MSG_MMS_PAGE_MIN_INT, &time);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page min time = %d", time);
+       } else if (field == MSG_MMS_PAGE_MAX_INT) {
+               msg_get_int_value(pageInfo_t, MSG_MMS_PAGE_MAX_INT, &time);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page max time = %d", time);
+       } else if (field == MSG_MMS_PAGE_REPEAT_INT) {
+               msg_get_int_value(pageInfo_t, MSG_MMS_PAGE_REPEAT_INT, &time);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page repeat time = %d", time);
+       }
+
+       return time;
+}
+
+msg_list_handle_t _msg_smil_cont_mgr_get_page_media_list_handle(msg_struct_t pageInfo_t)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, pageInfo_t == NULL, NULL);
+
+       int mediaCnt = 0;
+       /*Get media list handler */
+       msg_list_handle_t medialist_info = NULL;
+       msg_get_list_handle(pageInfo_t, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
+       mediaCnt = msg_list_length(medialist_info);
+
+       if (mediaCnt == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media count is 0, no medias in page");
+               return NULL;
+       }
+
+       return medialist_info;
+}
+
+msg_struct_t _msg_smil_cont_mgr_get_page_nth_media_struct_handle(msg_list_handle_t medialist_info_t, int mediaIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, medialist_info_t == NULL, NULL);
+
+       int mediaCnt = msg_list_length(medialist_info_t);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, mediaCnt == 0, NULL, "media count is 0, no medias in page");
+
+       /*Get media*/
+       msg_struct_t media_info = NULL;
+       media_info = (msg_struct_t)msg_list_nth_data(medialist_info_t, mediaIdx);
+
+       return media_info;
+}
+
+void _msg_smil_cont_mgr_get_media_str_value(msg_struct_t media_info_t, int strfield, char *rtnStr)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, media_info_t == NULL);
+
+       if (strfield == MSG_MMS_MEDIA_TYPE_INT ||
+               strfield == MSG_MMS_MEDIA_DRM_TYPE_INT ||
+               strfield == MSG_MMS_MEDIA_SMIL_TEXT_HND ||
+               strfield == MSG_MMS_MEDIA_SMIL_AVI_HND ) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "field value(%d) is not STRING type", strfield);
+               return;
+       }
+
+       char strbuf[2048] = {0,};
+
+       if (strfield == MSG_MMS_MEDIA_SRC_STR)
+               msg_get_str_value(media_info_t, MSG_MMS_MEDIA_SRC_STR, strbuf, sizeof(strbuf));
+       else if (strfield == MSG_MMS_MEDIA_FILENAME_STR)
+               msg_get_str_value(media_info_t, MSG_MMS_MEDIA_FILENAME_STR, strbuf, sizeof(strbuf));
+       else if (strfield == MSG_MMS_MEDIA_FILEPATH_STR)
+               msg_get_str_value(media_info_t, MSG_MMS_MEDIA_FILEPATH_STR, strbuf, sizeof(strbuf));
+       else if (strfield == MSG_MMS_MEDIA_CONTENT_ID_STR)
+               msg_get_str_value(media_info_t, MSG_MMS_MEDIA_CONTENT_ID_STR, strbuf, sizeof(strbuf));
+       else if (strfield == MSG_MMS_MEDIA_REGION_ID_STR)
+               msg_get_str_value(media_info_t, MSG_MMS_MEDIA_REGION_ID_STR, strbuf, sizeof(strbuf));
+       else if (strfield == MSG_MMS_MEDIA_ALTERNATIVE_STR)
+               msg_get_str_value(media_info_t, MSG_MMS_MEDIA_ALTERNATIVE_STR, strbuf, sizeof(strbuf));
+       else if (strfield == MSG_MMS_MEDIA_DRM_FULLPATH_STR)
+               msg_get_str_value(media_info_t, MSG_MMS_MEDIA_DRM_FULLPATH_STR, strbuf, sizeof(strbuf));
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "STRING field value(%d) is %s", strfield, strbuf);
+       strncpy(rtnStr, strbuf, strlen(strbuf));
+}
+
+void _msg_smil_cont_mgr_get_media_int_value(msg_struct_t media_info_t, int intfield, int* rtnVal)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, media_info_t == NULL);
+
+       if (intfield != MSG_MMS_MEDIA_TYPE_INT && intfield != MSG_MMS_MEDIA_DRM_TYPE_INT) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "field value(%d) is not INT type", intfield);
+               return;
+       }
+
+       if (intfield == MSG_MMS_MEDIA_TYPE_INT)
+               msg_get_int_value(media_info_t, MSG_MMS_MEDIA_TYPE_INT, rtnVal);
+       else if (intfield == MSG_MMS_MEDIA_DRM_TYPE_INT)
+               msg_get_int_value(media_info_t, MSG_MMS_MEDIA_DRM_TYPE_INT, rtnVal);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "field value(%d) is %d", intfield, *rtnVal);
+}
+
+msg_struct_t   _msg_smil_cont_mgr_get_mms_body_struct_handle(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, NULL);
+       return smilContMgrHndle->msg_info_t;
+}
+
+MSG_BOOL _msg_smil_cont_mgr_get_slide_time(SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle, int slideIdx, MSG_BOOL bExcludeHp, double *time)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle->smilContent == NULL, FALSE);
+
+       SMIL_SLIDE_INFO_S *curSlide = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, 0);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlide == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlide->commonData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlide->pageInfo == NULL, FALSE);
+
+       MSG_BOOL is_mixed_msg = FALSE;
+       double total_time = 0;
+       char szFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+       msg_list_handle_t page_list_info = NULL;
+       msg_struct_t page_info = NULL;
+
+       is_mixed_msg = (curSlide->commonData->pageCnt == 0) ? TRUE : FALSE;
+
+       //check validity input page index
+       if ((curSlide =_msg_smil_cont_mgr_get_slide(smilContMgrHndle, slideIdx)) == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Current msg is Multipart related msg, but there's no page with given index (%d)!", slideIdx);
+               return FALSE;
+       }
+
+       if (is_mixed_msg) {
+               if (slideIdx != 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Mixed msg cannot have 1 more page!");
+                       return FALSE;
+               }
+               total_time = (double)MSG_MMS_SMIL_HELP_PAGE_DURATION;
+       } else {
+               while (slideIdx < curSlide->commonData->pageCnt) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "slideIdx = %d", slideIdx);
+                       double pagetime = 0.0;
+                       char *value = NULL;
+                       int duration = 0;
+                       double maximum_time = 0.0;
+
+                       curSlide =_msg_smil_cont_mgr_get_slide(smilContMgrHndle, slideIdx);
+                       if (curSlide->pageInfo == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "page of current slide is NULL!");
+                               return FALSE;
+                       }
+
+                       if (bExcludeHp && curSlide->pageInfo->isHelpPage) {
+                               if (slideIdx == 0 && curSlide->commonData->pageCnt == 1) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Total page count = 1, And if there's only 1 help page, set default time for duration.");
+                                       total_time = (double)MSG_MMS_SMIL_HELP_PAGE_DURATION;
+                                       break;
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "current page(%d) is Help page and bExcludeHp flag is %d, skip calculating this page", curSlide->pageIdx, bExcludeHp);
+                                       slideIdx++;
+                                       continue;
+                               }
+                       }
+                       //set pagetime as duration time
+                       pagetime = (double)(curSlide->pageInfo->pageDuration);
+
+                       // get media time value for pagetime is not valid
+                       if (pagetime < 0) {
+                               /*Get Media List.*/
+                               page_list_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+                               if (page_list_info)
+                                       page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(page_list_info, curSlide->pageIdx);
+
+                               if (page_info && curSlide->pageInfo->mediaCnt > 0) {
+                                       int index = 0;
+                                       int mediaCnt = 0;
+                                       msg_list_handle_t media_list_info = _msg_smil_cont_mgr_get_page_media_list_handle(page_info);
+                                       mediaCnt = msg_list_length(media_list_info);
+
+                                       while (index < mediaCnt) {
+                                               int mediaType = 0;
+                                               msg_struct_t media_info = _msg_smil_cont_mgr_get_page_nth_media_struct_handle(media_list_info, index);
+
+                                               if (media_info == NULL) {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_info is Null");
+                                                       return FALSE;
+                                               }
+
+                                               bzero(szFilePath, sizeof(szFilePath));
+                                               _msg_smil_cont_mgr_get_media_str_value(media_info, MSG_MMS_MEDIA_FILEPATH_STR, szFilePath);
+                                               _msg_smil_cont_mgr_get_media_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+                                               if (mediaType == MMS_SMIL_MEDIA_VIDEO ||
+                                                       mediaType == MMS_SMIL_MEDIA_AUDIO ||
+                                                       mediaType == MMS_SMIL_MEDIA_IMG_OR_VIDEO) {
+                                                       bool is_drm = FALSE;
+                                                       bool is_available_play = FALSE;
+
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mediaType = %d", mediaType);
+
+                                                       //check DRM
+                                                       drm_bool_type_e is_drm_file = DRM_UNKNOWN;
+                                                       int ret = DRM_RETURN_SUCCESS;
+
+                                                       ret = drm_is_drm_file(szFilePath, &is_drm_file);
+                                                       is_drm = (ret == DRM_RETURN_SUCCESS && is_drm_file == DRM_TRUE) ? TRUE : FALSE;
+                                                       if (is_drm) {
+                                                               int ret = DRM_RETURN_SUCCESS;
+                                                               drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;
+                                                               ret = drm_get_license_status(szFilePath, DRM_PERMISSION_TYPE_PLAY, &license_status);
+                                                               if (ret != DRM_RETURN_SUCCESS) {
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_get_license_status is failed ret = %d", ret);
+                                                                       is_available_play = FALSE;
+                                                               }
+
+                                                               if (license_status != DRM_LICENSE_STATUS_VALID) {
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "license_status = %d", license_status);
+                                                                       is_available_play = FALSE;
+                                                               } else {
+                                                                       is_available_play = TRUE;
+                                                               }
+                                                       } else {
+                                                               is_available_play = TRUE;
+                                                       }
+
+                                                       if (is_available_play) {
+                                                               int ret = 0;
+                                                               metadata_extractor_h handle = NULL;
+                                                               ret = metadata_extractor_create(&handle);
+
+                                                               if (ret == METADATA_EXTRACTOR_ERROR_NONE) {
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "tempMedia->szFilePath is %s", szFilePath);
+                                                                       ret = metadata_extractor_set_path(handle, szFilePath);
+                                                                       if (ret != METADATA_EXTRACTOR_ERROR_NONE) {
+                                                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "metadata_extractor_set_path is failed, %d", ret);
+                                                                               metadata_extractor_destroy(handle);
+                                                                               return FALSE;
+                                                                       }
+
+                                                                       ret = metadata_extractor_get_metadata(handle, METADATA_DURATION, &value);
+
+                                                                       if (ret == METADATA_EXTRACTOR_ERROR_NONE) {
+                                                                               if (value) {
+                                                                                       duration = atoi(value);
+                                                                                       free(value);
+                                                                               }
+                                                                       } else {
+                                                                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "metadata_extractor_get_metadata is failed - ret(%x)", ret);
+                                                                               metadata_extractor_destroy(handle);
+                                                                               return FALSE;
+                                                                       }
+
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "file : %s, duration : %f", szFilePath, (double)duration);
+
+                                                                       metadata_extractor_destroy(handle);
+                                                               } else {
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "metadata_extractor_create is failed - ret(%x)", ret);
+                                                               }
+                                                       }
+
+                                                       //ceiling duration time
+                                                       double ceilvalue = ceil((double)duration/1000)*1000;
+                                                       if (maximum_time <= ceilvalue)
+                                                               maximum_time = ceilvalue;
+                                               }
+
+                                               index++;
+                                       }
+                               }
+
+                               pagetime = maximum_time;
+                       }
+
+                       total_time += pagetime;
+
+                       slideIdx++;
+               }
+       }
+
+       *time = total_time;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "total slide time is %f", *time);
+
+       return TRUE;
+}
diff --git a/viewer/smil-player/src/msg-smil-event-manager.c b/viewer/smil-player/src/msg-smil-event-manager.c
new file mode 100755 (executable)
index 0000000..8d56815
--- /dev/null
@@ -0,0 +1,1348 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-event-manager.h"
+#include "msg-smil-content-manager.h"
+#include "msg-smil-player.h"
+#include "msg-smil-util.h"
+
+/*For Multimedia element duration calculation.*/
+#include "mm_file.h"
+#include <mm_player.h>
+#include <mm_error.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_MMS_SMIL_TIMER_DEFAULT_DUR 5000
+#define MSG_MMS_SMIL_TIMER_DUR_INDEFINITE      -1
+#define MSG_MMS_SMIL_TIMER_DEFAULT_BEGIN       0
+#define MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE       (0.0)
+/*==================================================================================================
+ *                                                             FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/*
+*@fn                   __msg_smil_event_mgr_fill_media_time_data(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_TIMER_CALLBACK_DATA_S *callbackData);
+*@brief                        Fill the Media elements timer related data for UI usage and return the timer duration required for timer registry.
+*@return                       timerDuration value. Zero if no timer value.
+*@param[in]            smilEvntMgrHndle        This is the handler to the SMILEvent Manager.
+*@param[in]            callbackData
+*/
+static double __msg_smil_event_mgr_fill_media_time_data(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_TIMER_CALLBACK_DATA_S *callbackData);
+
+/*
+*@fn                   __msg_smil_event_mgr_set_media_time_info(SMIL_TIMER_CALLBACK_DATA_S *callbackData);
+*@brief                        set Media timer related data and create and sort the data.
+*@param[in]            callbackData
+*/
+static void __msg_smil_event_mgr_set_media_time_info(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_TIMER_CALLBACK_DATA_S *callbackData);
+
+/*
+*@fn                   __msg_smil_event_mgr_set_page_time(SMIL_SLIDE_INFO_S *pageData);
+*@brief                        set page time info(begin, dur, end) of MMS_PAGE_S
+*@param[in]            smilEvntMgrHndle        This is the handler to the SMILEvent Manager.
+*@param[in]            pageData        page time info. of MMS_PAGE_S will be set
+*/
+static void __msg_smil_event_mgr_set_page_time(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_SLIDE_INFO_S *pageData);
+
+/*
+*@fn                   __msg_smil_event_mgr_check_media_type(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_TIMER_CALLBACK_DATA_S *callbackData);
+*@brief                        check specific media type(video or invalid type)
+*@param[out]   callbackData    video or invalid type will be set if there is the media
+*/
+static void __msg_smil_event_mgr_check_media_type(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_TIMER_CALLBACK_DATA_S *callbackData);
+
+/*
+*@fn                   __msg_smil_event_mgr_change_media_time(msg_struct_t media_info, MmsSmilMediaType mediaType);
+*@brief                        Change media time(begin, dur, end) to process invalid receiving media time datas
+*@param[in]            mediaType       media type info.
+*@param[out]   mediaList       changed media time will be set
+*/
+static void __msg_smil_event_mgr_change_media_time(msg_struct_t media_info, MmsSmilMediaType mediaType);
+
+/*
+*@fn                   __msg_smil_event_mgr_register_timer(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, void *cb, double duration);
+*@brief                        Register call timer
+*@return                       MSG_SUCCESS on success , else failure return code
+*@param[in]            smilEvntMgrHndle        This is the handler to the SMILEvent Manager.
+*@param[in]            cb      Timer callback function
+*@param[in]            duration        Timer duration
+*@param[out]   callbackData.
+*/
+static MSG_SMIL_ERROR_E __msg_smil_event_mgr_register_timer(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, void *cb, double duration);
+
+MSG_BOOL __msg_smil_event_mgr_set_client_cb_page_idx(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int slideIdx);
+MSG_BOOL __msg_smil_event_mgr_set_client_cb_page_count(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int pageCnt);
+
+
+/*================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_SMIL_ERROR_E _msg_smil_create_event_mgr(void *cb, void *data, SMIL_EVENT_MGR_HANDLE_S **smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, cb == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+
+       /*allocate memory to handler*/
+       *smilEvntMgrHndle = (SMIL_EVENT_MGR_HANDLE_S *)calloc(1, sizeof(SMIL_EVENT_MGR_HANDLE_S));
+       if (*smilEvntMgrHndle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+               return MSG_ERR_SMIL_INVALID_STORAGE;
+       }
+
+       (*smilEvntMgrHndle)->slideTimerCbData = (SMIL_TIMER_CALLBACK_DATA_S *)calloc(1, sizeof(SMIL_TIMER_CALLBACK_DATA_S));
+       if ((*smilEvntMgrHndle)->slideTimerCbData == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+               if (*smilEvntMgrHndle != NULL) {
+                       free(*smilEvntMgrHndle);
+                       *smilEvntMgrHndle = NULL;
+               }
+               return MSG_ERR_SMIL_INVALID_STORAGE;
+       }
+
+       (*smilEvntMgrHndle)->slideTimerCbData->appSmilCb = (pfnSMILPlayerCb)cb;
+       (*smilEvntMgrHndle)->slideTimerCbData->appUserData = data;
+       (*smilEvntMgrHndle)->slideTimerCbData->curSlideParam = (SMIL_SLIDE_EVENT_PARAM_S *)calloc(1, sizeof(SMIL_SLIDE_EVENT_PARAM_S));
+       if ((*smilEvntMgrHndle)->slideTimerCbData->curSlideParam == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+               if ((*smilEvntMgrHndle)->slideTimerCbData != NULL) {
+                       free((*smilEvntMgrHndle)->slideTimerCbData);
+                       (*smilEvntMgrHndle)->slideTimerCbData = NULL;
+               }
+
+               if (*smilEvntMgrHndle != NULL) {
+                       free(*smilEvntMgrHndle);
+                       *smilEvntMgrHndle = NULL;
+               }
+               return MSG_ERR_SMIL_INVALID_STORAGE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+
+void _msg_smil_destroy_event_mgr(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL);
+
+       if (smilEvntMgrHndle->slideTimerCbData != NULL) {
+               if (smilEvntMgrHndle->slideTimerCbData->timerHandle != NULL) {
+                       void *timerRet = ecore_timer_del(smilEvntMgrHndle->slideTimerCbData->timerHandle);
+                       if (timerRet == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Timer Registry Failed");
+                       }
+               }
+
+               if (smilEvntMgrHndle->slideTimerCbData->curSlideParam != NULL) {
+                       free(smilEvntMgrHndle->slideTimerCbData->curSlideParam);
+                       smilEvntMgrHndle->slideTimerCbData->curSlideParam = NULL;
+               }
+
+               free(smilEvntMgrHndle->slideTimerCbData);
+               smilEvntMgrHndle->slideTimerCbData = NULL;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "smilEvntMgrHndle->slideTimerCbData is NULL");
+       }
+
+       free(smilEvntMgrHndle);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_play_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int curSlideIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, MSG_ERR_SMIL_INVALID_SLIDE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->smilhandle == NULL, MSG_ERR_SMIL_INVALID_SLIDE);
+
+       double timerDuration = 0;
+       MSG_BOOL haspageinfo = TRUE;
+       SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = smilEvntMgrHndle->slideTimerCbData;
+       SMIL_SLIDE_INFO_S *singleSlideInfo = _msg_smil_event_mgr_get_current_slide(smilEvntMgrHndle);
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, MSG_ERR_SMIL_INVALID_SLIDE);
+       SMIL_PLAYER_STATUS_E prev_slide_status = PLAYER_STATUS_NONE;
+
+       if (curSlideIdx < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid slide index = %d", curSlideIdx);
+               return MSG_ERR_SMIL_INVALID_SLIDE;
+       }
+
+       /*fetching the slide data for the first slide*/
+       if (singleSlideInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Getting Slide info from content mgr");
+               SMIL_SLIDE_INFO_S *slideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, curSlideIdx);
+               if (slideInfo == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Slide info fetch failed.");
+                       return MSG_ERR_SMIL_INVALID_SLIDE;
+               }
+               _msg_smil_event_mgr_set_current_slide(smilEvntMgrHndle, slideInfo);
+               singleSlideInfo = _msg_smil_event_mgr_get_current_slide(smilEvntMgrHndle);
+       }
+
+       if (_msg_smil_cont_mgr_set_cur_slide_idx(smilContMgrHndle, curSlideIdx) == FALSE)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_cont_mgr_set_cur_slide_idx is failed");
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "current slide idx = %d", _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle));
+
+       int pageCnt = _msg_smil_cont_mgr_get_total_slide_count(smilContMgrHndle);
+       __msg_smil_event_mgr_set_client_cb_page_idx(smilEvntMgrHndle, curSlideIdx);
+       __msg_smil_event_mgr_set_client_cb_page_count(smilEvntMgrHndle, pageCnt);
+
+/********CallBack for Timer is needed only for Multipart Related MMS -
+ *Currently implementing for Only Three Media types  as there are only two regions supported********/
+       if (pageCnt > 0) {
+               while (1) {
+                       if (singleSlideInfo && singleSlideInfo->pageInfo) {
+                               int durTime = 0;
+                               int endTime = 0;
+                               SMIL_PLAYER_PAGE_EVENT_E actionTypeOnPage = _msg_smil_event_mgr_get_page_action_type(smilEvntMgrHndle);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "actionTypeOnPage = %d", slideTimerCbData->slideTimerInfo.actionTypeOnPage);
+                               switch (actionTypeOnPage) {
+                               case PAGE_EVENT_PLAY:
+                                       /* Check for validity of Page Timer Values and Assign Default Values if required */
+                                       __msg_smil_event_mgr_set_page_time(smilEvntMgrHndle, singleSlideInfo);
+                                       _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_PAGE_PLAY_START);
+
+                                       /* check current page is help page and skip internal media play */
+                                       if (_msg_smil_cont_mgr_is_cur_slide_help_page(singleSlideInfo)) {
+                                               /* set last page to play */
+                                               _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+                                               _msg_smil_event_mgr_set_last_slide_is_help_page(smilEvntMgrHndle, TRUE);
+                                               haspageinfo = FALSE;
+                                               break;
+                                       }
+
+                                       _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_INTERNAL_MEDIA);
+                                       continue;
+                               case PAGE_EVENT_INTERNAL_MEDIA:
+                                       /*Populate and sort Media Timer Info into the slideTimerInfo Array*/
+                                       __msg_smil_event_mgr_set_media_time_info(smilEvntMgrHndle, slideTimerCbData);
+                                       _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START);
+                                       /*Considering the fact that there can be less than three media, we need to perform a check for
+                                       *  if there is any media related information in the array for the sake of a boundary condition check.
+                                       *  Also we need to take the Begin and End time of the Page into consideration*/
+                                       _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_NONE);
+                                       __msg_smil_event_mgr_check_media_type(smilEvntMgrHndle, slideTimerCbData);
+                                       timerDuration = __msg_smil_event_mgr_fill_media_time_data(smilEvntMgrHndle, slideTimerCbData);
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "timerDuration =  %lf", timerDuration);
+
+                                       /*Get page handle - Do not null check, it is not needed from here*/
+                                       msg_list_handle_t pagelist_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+                                       msg_struct_t page_info =_msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, singleSlideInfo->pageIdx);
+
+                                       durTime = _msg_smil_cont_mgr_get_page_time_value(page_info, MSG_MMS_PAGE_PAGE_DURATION_INT);
+                                       if (timerDuration == 0) {
+                                               /* If there is no media Handle - Show the blank slide for the duration of the slide and then move to the next slide if the page->nDur is Valid. */
+                                               if (durTime != MSG_MMS_SMIL_TIMER_DUR_INDEFINITE) {
+                                                       timerDuration = durTime;
+                                               } else {
+                                               /* if the  page->nDur is Invalid do no timer interacton and wait for user action.*/
+                                               }
+                                       }
+
+                                       /* Calculation of timerDuration basing on the End Time/Duration of the page - This case arises if there is no media or in case the end time of all media > the end time of the slide. */
+                                       endTime = _msg_smil_cont_mgr_get_page_time_value(page_info, MSG_MMS_PAGE_END_TIME_INT);
+                                       if (endTime > 0) {
+                                               if (timerDuration > durTime) {
+                                                       timerDuration = durTime;
+                                               }
+                                       }
+
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "timerDuration =  %lf", timerDuration);
+
+                                       if (singleSlideInfo->nextSlide == NULL)/* If the current slide is the last slide */
+                                               _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+
+                                       _msg_smil_event_mgr_set_slide_time(smilEvntMgrHndle, timerDuration);
+                                       _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_END);
+                                       break;
+                               case PAGE_EVENT_END:
+                                       break;
+                               case PAGE_EVENT_MOVE_TO_NEXT:
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PAGE_EVENT_MOVE_TO_NEXT");
+                                       if (singleSlideInfo->nextSlide != NULL) {
+                                               /* check previouts slide status */
+                                               int slideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle);
+                                               SMIL_SLIDE_INFO_S *prev_slideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, slideIdx-1);
+                                               if (prev_slideInfo)
+                                                       prev_slide_status = prev_slideInfo->slideStatus;
+
+                                               /* Move to next slide*/
+                                               _msg_smil_event_mgr_set_current_slide(smilEvntMgrHndle, singleSlideInfo->nextSlide);
+                                               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_PLAY);
+                                               singleSlideInfo = _msg_smil_event_mgr_get_current_slide(smilEvntMgrHndle);
+                                               if (singleSlideInfo && singleSlideInfo->nextSlide == NULL)
+                                                       _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+                                       } else {
+                                               /* Last Slide*/
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Last Slide - so do nothing");
+                                               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_NONE);
+                                               break;
+                                       }
+                                       continue;
+                               case PAGE_EVENT_MOVE_TO_PREV:
+                                       if (singleSlideInfo->prevSlide != NULL) {
+                                               /* check previouts slide status */
+                                               int slideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle);
+                                               SMIL_SLIDE_INFO_S *prev_slideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, slideIdx+1);
+                                               if (prev_slideInfo)
+                                                       prev_slide_status = prev_slideInfo->slideStatus;
+
+                                               /* Move to prev slide*/
+                                               _msg_smil_event_mgr_set_current_slide(smilEvntMgrHndle, singleSlideInfo->prevSlide);
+                                               singleSlideInfo = _msg_smil_event_mgr_get_current_slide(smilEvntMgrHndle);
+                                               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_PLAY);
+                                               _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, FALSE);
+                                       } else {
+                                               /*First Slide*/
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "First Slide");
+                                               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_NONE);
+                                               break;
+                                       }
+                                       continue;
+                               default:
+                                       break;
+                               }
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "slide page is NULL");
+                       }
+                       break;
+               }
+       } else {
+               /*invalide message without page info or multipart.mixed message*/
+               _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_PAGE_PLAY_START);
+               _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+               _msg_smil_event_mgr_set_last_slide_is_help_page(smilEvntMgrHndle, TRUE);
+               haspageinfo = FALSE;
+       }
+
+       if (slideTimerCbData->slideTimerInfo.actionTypeOnPage != PAGE_EVENT_NONE) {
+               MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+               int slideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle);
+
+               if (prev_slide_status == PLAYER_STATUS_PAUSED_END)
+                       _msg_smil_cont_mgr_set_status(smilContMgrHndle, slideIdx, PLAYER_STATUS_PAUSED);
+               else
+                       _msg_smil_cont_mgr_set_status(smilContMgrHndle, slideIdx, PLAYER_STATUS_PLAYING);
+
+               /*calling renderhandler to draw content*/
+               MSG_BOOL rendering_failed = FALSE;
+               SMIL_RENDERER_DATA_S *smilRenderer = _msg_smil_get_renderder(smilEvntMgrHndle->smilhandle);
+               if (smilRenderer) {
+                       err = _msg_smil_render_on_slide_render_handler(smilRenderer, slideTimerCbData->curSlideParam);
+                       if (err != MSG_SMIL_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_on_slide_render_handler failed err = %d", err);
+                               rendering_failed = TRUE;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "smilRenderer is NULL");
+                       rendering_failed = TRUE;
+               }
+
+               SMIL_SLIDE_INFO_S *curSlideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, slideIdx);
+               if (curSlideInfo->slideStatus == PLAYER_STATUS_PAUSED)
+                       _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_MOVE_PAGE_AFTER_PAUSED);
+
+               /*Calling the callback function of Client.*/
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Calling the Client callback");
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "RENDEREVENT = %d", slideTimerCbData->curSlideParam->renderEvent);
+               err = slideTimerCbData->appSmilCb(&(slideTimerCbData->curSlideParam->clientCbParam), slideTimerCbData->appUserData);
+               _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_NONE);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Client CB failed with error = %d", err);
+                       _msg_smil_cont_mgr_set_status(smilContMgrHndle, slideIdx, PLAYER_STATUS_NONE);
+                       return MSG_ERR_SMIL_UI_DISPLAY_FAIURE;
+               }
+
+               /*Timer Registration -- needed for Multipart Related MMS only.*/
+               MSG_BOOL is_video_media = _msg_smil_event_mgr_get_is_video_media(smilEvntMgrHndle);
+               MSG_BOOL binvalid_ro = _msg_smil_event_mgr_get_invalid_video_ro(smilEvntMgrHndle);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "binvalid_ro = %d", binvalid_ro);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "isVideoMedia = %d", is_video_media);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "timerDuration = %lf", timerDuration);
+
+               //for UI progressbar. ceiling duration time to second
+               double ceiled_duration = ceil(timerDuration/1000)*1000;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ceiling timerDuration = %lf", ceiled_duration);
+
+               if (is_video_media) {   /*video*/
+                       if (rendering_failed) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "create timer for invalid case of video content or etc");
+                               if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, ceiled_duration)) != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+                                       return err;
+                               }
+                       } else if (binvalid_ro == TRUE) {       /*video is an invalid ro drm content*/
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "create timer for invalid ro drm video content");
+                               double time_dur = _msg_smil_event_mgr_get_slide_time(smilEvntMgrHndle);
+                               double ceiled_duration = ceil(time_dur/1000)*1000;
+                               if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, ceiled_duration)) != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+                                       return err;
+                               }
+                       } else {                //valid ro video file. now we insure page duration for at least video duration
+                               double remain_current_slide = 0.0;
+                               double remain_next_Slide = 0.0;
+                               double current_slide_time = 0.0;
+                               if (_msg_smil_cont_mgr_get_slide_time(smilContMgrHndle, slideIdx, FALSE, &remain_current_slide)) {
+                                       if (_msg_smil_cont_mgr_get_slide_time(smilContMgrHndle, slideIdx+1, FALSE, &remain_next_Slide))
+                                               current_slide_time = remain_current_slide - remain_next_Slide;
+                                       else
+                                               current_slide_time = remain_current_slide;
+                               }
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "current slide(include video) time is %f", current_slide_time);
+
+                               double duration_time = (current_slide_time >= ceiled_duration) ? current_slide_time : ceiled_duration;
+
+                               if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, duration_time)) != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+                                       return err;
+                               }
+                       }
+               } else if (timerDuration > 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "create timer for normal case");
+                       if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, ceiled_duration)) != MSG_SMIL_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+                               return err;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "timer is not created. PLAYSLIDEEVENT : timerDuration = %lf", timerDuration);
+                       if (haspageinfo == FALSE) {     /*for invalid page info message or multipart.mixed message*/
+                               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_END);
+                               timerDuration = MSG_MMS_SMIL_TIMER_DEFAULT_DUR;
+                               if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, timerDuration)) != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+                                       return err;
+                               }
+                       } else if (_msg_smil_event_mgr_get_unsupported_content(smilEvntMgrHndle)) {     /*if unsupported content has no duration time*/
+                               timerDuration = MSG_MMS_SMIL_TIMER_DEFAULT_DUR;
+                               if ((err = __msg_smil_event_mgr_register_timer(smilEvntMgrHndle, _msg_smil_event_mgr_slide_timer_cb, timerDuration)) != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_event_mgr_register_timer Failed err = %d", err);
+                                       return err;
+                               }
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "timer is not registerd actionTypeOnPage = %d", slideTimerCbData->slideTimerInfo.actionTypeOnPage);
+                       }
+               }
+
+               // set play timer pause to synchronize UI timer
+               if (curSlideInfo->slideStatus == PLAYER_STATUS_PAUSED && slideTimerCbData->timerHandle)
+                       ecore_timer_freeze(slideTimerCbData->timerHandle);
+
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Page event is error actionTypeOnPage = %d", slideTimerCbData->slideTimerInfo.actionTypeOnPage);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+
+static MSG_SMIL_ERROR_E __msg_smil_event_mgr_register_timer(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, void *cb, double duration)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = smilEvntMgrHndle->slideTimerCbData;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PLAYSLIDEEVENT : timerDuration = %lf", duration);
+       /*Start Timer.*/
+       duration = duration / MSG_MMS_SMIL_TIMER_CONVERT;
+       slideTimerCbData->timerHandle = ecore_timer_add(duration, cb, (void *)smilEvntMgrHndle);
+       if (slideTimerCbData->timerHandle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Timer Registry Failed");
+               return MSG_ERR_SMIL_TIMER_FAILURE;
+       }
+       return MSG_SMIL_SUCCESS;
+}
+
+
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_stop_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = smilEvntMgrHndle->slideTimerCbData;
+       void *timerRet = NULL;
+
+       /*Delete the Timer.*/
+       if (slideTimerCbData->timerHandle != NULL) {
+               timerRet = ecore_timer_del(slideTimerCbData->timerHandle);
+               if (timerRet == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Timer Deletion Failed");
+                       return MSG_ERR_SMIL_TIMER_FAILURE;
+               }
+               slideTimerCbData->timerHandle = NULL;
+       }
+
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+       int curSlideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle);
+
+       if (_msg_smil_cont_mgr_get_status(smilContMgrHndle, curSlideIdx) == PLAYER_STATUS_PAUSED) {
+               /* Update status as PLAYER_STATUS_PAUSED_END */
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "CALL UPDATE AT PAUSED -> END : PLAYER_STATUS_PAUSED_END");
+
+               if (_msg_smil_cont_mgr_set_status(smilContMgrHndle, curSlideIdx, PLAYER_STATUS_PAUSED_END) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_cont_mgr_set_status is failed");
+                       return MSG_ERR_SMIL_NULL_MESSAGE;
+               }
+       } else {
+               /* Update status as PLAYER_STATUS_PLAY_END */
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "CALL UPDATE AT PLAYING -> END : PLAYER_STATUS_PLAY_END");
+
+               if (_msg_smil_cont_mgr_set_status(smilContMgrHndle, curSlideIdx, PLAYER_STATUS_PLAY_END) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_cont_mgr_set_status is failed");
+                       return MSG_ERR_SMIL_NULL_MESSAGE;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_pause_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = smilEvntMgrHndle->slideTimerCbData;
+
+       if (slideTimerCbData->timerHandle != NULL)
+               ecore_timer_freeze(slideTimerCbData->timerHandle);
+
+       /* Update status as PLAYER_EVENT_PAUSED */
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "CALL UPDATE AT PLAY PAUSE");
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+       int curSlideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle);
+       if (_msg_smil_cont_mgr_set_status(smilContMgrHndle, curSlideIdx, PLAYER_STATUS_PAUSED) == FALSE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_cont_mgr_set_status is failed");
+               return MSG_ERR_SMIL_NULL_MESSAGE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_resume_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int curSlideIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_BOOL isVideoMedia = _msg_smil_event_mgr_get_is_video_media(smilEvntMgrHndle);
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "isVideoMedia = %d", isVideoMedia);
+
+       if (smilEvntMgrHndle->slideTimerCbData->timerHandle) {
+               ecore_timer_thaw(smilEvntMgrHndle->slideTimerCbData->timerHandle);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "CALL UPDATE AT PLAY RESUME");
+               if (_msg_smil_cont_mgr_set_status(smilContMgrHndle, curSlideIdx, PLAYER_STATUS_PLAYING) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_cont_mgr_set_status is failed");
+                       return MSG_ERR_SMIL_NULL_MESSAGE;
+               }
+       } else {
+               MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+               if (_msg_smil_cont_mgr_set_status(smilContMgrHndle, curSlideIdx, PLAYER_STATUS_PLAYING) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_cont_mgr_set_status is failed");
+                       return MSG_ERR_SMIL_NULL_MESSAGE;
+               }
+
+               curSlideIdx += MSG_MMS_SMIL_SLIDEIDX_INCREMENT;
+               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_MOVE_TO_NEXT);
+
+               // Call Event Manager for playing the slide and starting the timer.
+               err = _msg_smil_event_mgr_play_slide(smilEvntMgrHndle, curSlideIdx);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed :PLAYER_EVENT_NEXT_SLIDE");
+                       return err;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+
+Eina_Bool _msg_smil_event_mgr_slide_timer_cb(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, EINA_FALSE);
+       MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+       MSG_SMIL_ERROR_E error = MSG_ERR_SMIL_UNKNOWN;
+       SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle = (SMIL_EVENT_MGR_HANDLE_S *)data;
+       SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = smilEvntMgrHndle->slideTimerCbData;
+       SMIL_SLIDE_INFO_S *singleSlideInfo = NULL;
+       void *timerRet = NULL;
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, slideTimerCbData == NULL, EINA_FALSE);
+
+       /*Delete the Current timer and then start a fresh timer.*/
+       if (slideTimerCbData->timerHandle != NULL) {
+               timerRet = ecore_timer_del(slideTimerCbData->timerHandle);
+               if (timerRet == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Timer Deletion Failed");
+                       return EINA_FALSE;
+               }
+               slideTimerCbData->timerHandle = NULL;
+       }
+
+       int cur_slide = _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle);
+
+       singleSlideInfo = _msg_smil_event_mgr_get_current_slide(smilEvntMgrHndle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, singleSlideInfo == NULL, EINA_FALSE);
+       while (1) {
+               switch (slideTimerCbData->slideTimerInfo.actionTypeOnPage) {
+               case PAGE_EVENT_END:
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "actionTypeOnPage = PAGE_EVENT_END");
+                       slideTimerCbData->elementIdx = -1;
+                       if (singleSlideInfo->nextSlide != NULL) {       /*  Not the last slide*/
+                               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_MOVE_TO_NEXT);
+                               continue;
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LAST SLIDE CASE");
+                               /* If Delayed client cb only after timer expiry. */
+                               _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE);
+                               _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, TRUE);
+                               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_NONE);
+                               _msg_smil_cont_mgr_set_status(smilContMgrHndle, cur_slide, PLAYER_STATUS_PLAY_END);
+
+                               /*call renderhandler to draw content*/
+                               SMIL_RENDERER_DATA_S *smilRenderer = _msg_smil_get_renderder(smilEvntMgrHndle->smilhandle);
+                               error = _msg_smil_render_on_slide_render_handler(smilRenderer, slideTimerCbData->curSlideParam);
+                               if (error != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_on_slide_render_handler failed err = %d", err);
+                                       _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_ERROR);
+                               }
+
+                               /*Calling the callback of Client.*/
+                               err = slideTimerCbData->appSmilCb(&(slideTimerCbData->curSlideParam->clientCbParam), slideTimerCbData->appUserData);
+                               _msg_smil_event_mgr_set_last_slide(smilEvntMgrHndle, FALSE);
+
+                               if (err != MSG_SMIL_SUCCESS || error != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Client CB failed");
+                                       return EINA_FALSE;
+                               }
+                               break;
+                       }
+               case PAGE_EVENT_MOVE_TO_NEXT:
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "actionTypeOnPage = PAGE_EVENT_MOVE_TO_NEXT");
+                       _msg_smil_cont_mgr_set_status(smilContMgrHndle, cur_slide, PLAYER_STATUS_PLAY_END);
+                       err = _msg_smil_event_mgr_move_to_next_slide(smilEvntMgrHndle);
+                       if (err != MSG_SMIL_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_move_to_next_slide is failed = %d", err);
+                       }
+                       break;
+               default:
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "actionTypeOnPage = %d", slideTimerCbData->slideTimerInfo.actionTypeOnPage);
+                       break;
+               }
+               break;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SLIDE IDX = %d", _msg_smil_cont_mgr_get_cur_slide_idx(smilContMgrHndle));
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SLIDE STATUS = %d", _msg_smil_cont_mgr_get_cur_slide_status(smilContMgrHndle));
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return EINA_FALSE;
+}
+
+
+static double __msg_smil_event_mgr_fill_media_time_data(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_TIMER_CALLBACK_DATA_S *callbackData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, callbackData == NULL, MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, callbackData->curSlideParam == NULL, MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, callbackData->curSlideParam->singleSlideInfo == NULL, MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE);
+       int mediaCnt = 0;
+       int pageCnt = 0;
+       int count = 0;
+       double timerDuration = 0;
+       int value = 0;
+       int mediaIdxCnt = 0;
+
+       /*Get contentMgr */
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+
+       /*Get page list handler of current page of callbackData*/
+       msg_list_handle_t pagelist_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+       pageCnt = msg_list_length(pagelist_info);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, pageCnt == 0, MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE);
+
+       /*Get page handler */
+       msg_struct_t page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, callbackData->curSlideParam->singleSlideInfo->pageIdx);
+
+       /*Get media list handler */
+       msg_list_handle_t medialist_info = _msg_smil_cont_mgr_get_page_media_list_handle(page_info);
+       mediaCnt = msg_list_length(medialist_info);
+
+       while (count < MSG_MMS_SMIL_MEDIA_TYPES) {
+               callbackData->curSlideParam->timerDataMedia[count].mediaIdx = 0;
+               callbackData->curSlideParam->timerDataMedia[count].actionTypeOnMedia = MEDIA_EVENT_NONE;
+               count++;
+       }
+       count = 0;
+       if (callbackData->slideTimerInfo.actionTypeOnPage != PAGE_EVENT_INTERNAL_MEDIA) {
+               /* If it is not an internal media timer expiry, then the loop should start from 0 */
+               count = 0;
+               value = 0;
+       } else {
+               /* else the loop may start from the index pointed to by elementIdx. */
+               count = callbackData->elementIdx;
+               value = callbackData->slideTimerInfo.mediaTimerDur[callbackData->elementIdx][0];
+       }
+
+       while (count < mediaCnt * 2) {
+               if (callbackData->slideTimerInfo.mediaTimerDur[count][2] == MEDIA_EVENT_NONE) {
+                       break;
+               } else {
+                       /*only MEDIA_EVENT_BEGIN will be set to timerDatamedia, because begin = 0, dur and end = -1*/
+                       if (callbackData->slideTimerInfo.mediaTimerDur[count][0] != MSG_MMS_SMIL_TIMER_DUR_INDEFINITE) {
+                               if (callbackData->slideTimerInfo.mediaTimerDur[count][0] == value) {
+                                       callbackData->curSlideParam->timerDataMedia[mediaIdxCnt].mediaIdx = callbackData->slideTimerInfo.mediaTimerDur[count][1];
+                                       callbackData->curSlideParam->timerDataMedia[mediaIdxCnt].actionTypeOnMedia = callbackData->slideTimerInfo.mediaTimerDur[count][2];
+                                       count++;
+                                       mediaIdxCnt++;
+                               } else if (count == 0) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "count = %d, value = %d", count, value);
+                                       timerDuration = callbackData->slideTimerInfo.mediaTimerDur[count][0];
+                                       break;
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "count2 = %d, value = %d", count, value);
+                                       timerDuration = (callbackData->slideTimerInfo.mediaTimerDur[count][0]) - (callbackData->slideTimerInfo.mediaTimerDur[count-1][0]);
+                                       break;
+                               }
+                       } else {
+                               count++;
+                       }
+               }
+       }
+
+       if ((count < (mediaCnt * 2)) && (callbackData->slideTimerInfo.mediaTimerDur[count][2] != MEDIA_EVENT_NONE))
+               callbackData->elementIdx = count;
+
+       return timerDuration;
+}
+
+
+static void __msg_smil_event_mgr_check_media_type(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_TIMER_CALLBACK_DATA_S *callbackData)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, callbackData == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, callbackData->curSlideParam == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, callbackData->curSlideParam->singleSlideInfo == NULL);
+
+       int mediaIdx = 0;
+       int mediaCnt = 0;
+       int pageCnt = 0;
+
+       /*Get contentMgr */
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+
+       /*Get page list handler of current page of callbackData*/
+       msg_list_handle_t pagelist_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+       pageCnt = msg_list_length(pagelist_info);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, pageCnt == 0, "page list is null, no pages in current message");
+
+       /*Get page handler */
+       msg_struct_t page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, callbackData->curSlideParam->singleSlideInfo->pageIdx);
+       if (page_info == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed in getting page(%d)", callbackData->curSlideParam->singleSlideInfo->pageIdx);
+               return;
+       }
+
+       /*Get media list handler */
+       msg_list_handle_t medialist_info = _msg_smil_cont_mgr_get_page_media_list_handle(page_info);
+       mediaCnt = msg_list_length(medialist_info);
+
+       while (mediaIdx < mediaCnt) {
+               int mediaType = 0;
+               msg_struct_t media_info = (msg_struct_t)msg_list_nth_data(medialist_info, mediaIdx);
+               msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+               if (mediaType == MMS_SMIL_MEDIA_VIDEO) {
+                       callbackData->curSlideParam->isVideoMedia = TRUE;
+               } else if (mediaType == MMS_SMIL_MEDIA_INVALID) {       /*unsupported contents*/
+                       callbackData->curSlideParam->isUnsupportedContent = TRUE;
+               }
+               mediaIdx++;
+       }
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "callbackData->curSlideParam->isVideoMedia = %d", callbackData->curSlideParam->isVideoMedia);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "callbackData->curSlideParam->isUnsupportedContent = %d", callbackData->curSlideParam->isUnsupportedContent);
+}
+
+
+static void __msg_smil_event_mgr_set_media_time_info(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_TIMER_CALLBACK_DATA_S *callbackData)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, callbackData == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, callbackData->curSlideParam == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, callbackData->curSlideParam->singleSlideInfo == NULL);
+
+       int pageCnt = 0;
+       int count = 0;
+       int holder = 0;
+       int subCount = 0;
+       int swapCount = 0;
+       int mediaCnt = 0;
+
+       /*Get contentMgr */
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+
+       /*Get page list handler of current page of callbackData*/
+       msg_list_handle_t pagelist_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+       pageCnt = msg_list_length(pagelist_info) ;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, pageCnt== 0, "page count is 0, no pages in current message");
+
+       /*Get page handler */
+       msg_struct_t page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, callbackData->curSlideParam->singleSlideInfo->pageIdx);
+
+       /*Get media list handler */
+       msg_list_handle_t medialist_info = _msg_smil_cont_mgr_get_page_media_list_handle(page_info);
+       int len = msg_list_length(medialist_info);
+
+       mediaCnt = len * 2;/* 2 is multiplied considering that at max for every media we may have two timers- 1. Begin, 2. End. */
+
+       memset(callbackData->slideTimerInfo.mediaTimerDur, 0, (MSG_MMS_SMIL_MAX_TIMER_IDX * MSG_MMS_SMIL_PAGE_MEDIA_IDX_ACTION) * sizeof(int));
+       /*Populate Media Timer Info into the slideTimerInfo Array*/
+       while (count < mediaCnt) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "count = %d, mediaCnt = %d", count, mediaCnt);
+               int mediaType = 0;
+               int timeBegin;
+               int timeEnd;
+               msg_struct_t media_info = (msg_struct_t)msg_list_nth_data(medialist_info, count/2);
+               msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "media type  = %d", mediaType);
+
+               __msg_smil_event_mgr_change_media_time(media_info, mediaType);
+
+               /*Media Index in the array will be filled as 0,1,2,3*/
+               if (mediaType == MMS_SMIL_MEDIA_TEXT) {
+                       msg_struct_t sText;
+                       msg_get_struct_handle(media_info, MSG_MMS_MEDIA_SMIL_TEXT_HND, &sText);
+
+                       msg_get_int_value(sText, MSG_MMS_SMIL_TEXT_BEGIN_INT, &timeBegin);
+                       callbackData->slideTimerInfo.mediaTimerDur[count][0] = timeBegin;
+                       callbackData->slideTimerInfo.mediaTimerDur[count][1] = count / 2;/*This division by 2 is done to keep the media count value in the array appropriate*/
+                       callbackData->slideTimerInfo.mediaTimerDur[count][2] = MEDIA_EVENT_BEGIN;
+
+                       count++;
+
+                       msg_get_int_value(sText, MSG_MMS_SMIL_TEXT_END_INT, &timeEnd);
+                       callbackData->slideTimerInfo.mediaTimerDur[count][0] = timeEnd;
+                       callbackData->slideTimerInfo.mediaTimerDur[count][1] = (count - 1) / 2;/*This subtraction and division by 2 is done to keep the media count value in the array appropriate*/
+                       callbackData->slideTimerInfo.mediaTimerDur[count][2] = MEDIA_EVENT_END;
+               } else if (mediaType != MMS_SMIL_MEDIA_INVALID) {
+                       msg_struct_t sAvi;
+                       msg_get_struct_handle(media_info, MSG_MMS_MEDIA_SMIL_AVI_HND, &sAvi);
+
+                       msg_get_int_value(sAvi, MSG_MMS_SMIL_AVI_BEGIN_INT, &timeBegin);
+                       callbackData->slideTimerInfo.mediaTimerDur[count][0] = timeBegin;
+                       callbackData->slideTimerInfo.mediaTimerDur[count][1] = count / 2;/*This division by 2 is done to keep the media count value in the array appropriate*/
+                       callbackData->slideTimerInfo.mediaTimerDur[count][2] = MEDIA_EVENT_BEGIN;
+
+                       count++;
+
+                       msg_get_int_value(sAvi, MSG_MMS_SMIL_AVI_END_INT, &timeEnd);
+                       callbackData->slideTimerInfo.mediaTimerDur[count][0] = timeEnd;
+                       callbackData->slideTimerInfo.mediaTimerDur[count][1] = (count - 1) / 2; /*This subtraction and division by 2 is done to keep the media count value in the array appropriate*/
+                       callbackData->slideTimerInfo.mediaTimerDur[count][2] = MEDIA_EVENT_END;
+               } else if (mediaType == MMS_SMIL_MEDIA_INVALID) {       /*unsupported contents*/
+                       callbackData->slideTimerInfo.mediaTimerDur[count][0] = 0;
+                       callbackData->slideTimerInfo.mediaTimerDur[count][1] = count / 2;/*This division by 2 is done to keep the media count value in the array appropriate*/
+                       callbackData->slideTimerInfo.mediaTimerDur[count][2] = MEDIA_EVENT_BEGIN;
+
+                       count++;
+
+                       callbackData->slideTimerInfo.mediaTimerDur[count][0] = 0;
+                       callbackData->slideTimerInfo.mediaTimerDur[count][1] = (count - 1) / 2; /*This subtraction and division by 2 is done to keep the media count value in the array appropriate*/
+                       callbackData->slideTimerInfo.mediaTimerDur[count][2] = MEDIA_EVENT_END;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalide mediaType Error = %d", mediaType);
+               }
+
+               count++;
+       }
+
+       /*Sort timer Data*/
+       count = 0;
+       for (count = 1 ; count < mediaCnt ; count++) {
+               for (subCount = 0; subCount < (mediaCnt - count); subCount++) {
+                       if (callbackData->slideTimerInfo.mediaTimerDur[subCount][0] > callbackData->slideTimerInfo.mediaTimerDur[subCount + 1][0]) {
+                               swapCount = 0;
+                               while (swapCount < MSG_MMS_SMIL_PAGE_MEDIA_IDX_ACTION) {
+                                       holder = callbackData->slideTimerInfo.mediaTimerDur[subCount + 1][swapCount];
+                                       callbackData->slideTimerInfo.mediaTimerDur[subCount + 1][swapCount] = callbackData->slideTimerInfo.mediaTimerDur[subCount][swapCount];
+                                       callbackData->slideTimerInfo.mediaTimerDur[subCount][swapCount] = holder;
+                                       swapCount++;
+                               }
+                       }
+               }
+       }
+}
+
+
+static void __msg_smil_event_mgr_set_page_time(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_SLIDE_INFO_S *pageData)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, pageData == NULL);
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL);
+       int duration = 0 ;
+       int end = 0;
+       int pageCnt = 0;
+
+       /*Get struct handle of current page */
+       msg_list_handle_t pagelist_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+       pageCnt = msg_list_length(pagelist_info);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, pageCnt == 0, "page count is 0, no pages in current message");
+
+       /*Get page*/
+       msg_struct_t page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, pageData->pageIdx);
+
+       /*Get page nDur */
+       msg_get_int_value(page_info, MSG_MMS_PAGE_PAGE_DURATION_INT, &duration);
+
+       if (duration > 0) {
+               msg_set_int_value(page_info, MSG_MMS_PAGE_END_TIME_INT, duration);
+       } else {
+               /* Assigining Default Value */
+               msg_set_int_value(page_info, MSG_MMS_PAGE_PAGE_DURATION_INT, MSG_MMS_SMIL_TIMER_DUR_INDEFINITE);
+               msg_set_int_value(page_info, MSG_MMS_PAGE_END_TIME_INT, MSG_MMS_SMIL_TIMER_DUR_INDEFINITE);
+       }
+
+       msg_get_int_value(page_info, MSG_MMS_PAGE_PAGE_DURATION_INT, &duration);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PAGE----nDur = %d", duration);
+
+       msg_get_int_value(page_info, MSG_MMS_PAGE_END_TIME_INT, &end);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PAGE----nEnd = %d", end);
+}
+
+
+static void __msg_smil_event_mgr_change_media_time(msg_struct_t media_info, MmsSmilMediaType mediaType)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, media_info == NULL);
+       int timeBegin = 0;
+       int timeEnd = 0;
+       int timeDur = 0;
+
+#ifdef SMIL_MEDIA_TIMER
+       /*get media time*/
+       switch (mediaType) {
+       case MMS_SMIL_MEDIA_TEXT:
+       case MMS_SMIL_MEDIA_IMG:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Inside TXT/IMG Case");
+               msg_struct_t sText;
+               msg_get_struct_handle(media_info, MSG_MMS_MEDIA_SMIL_TEXT_HND, (void**)&sText);
+               msg_get_int_value(sText, MSG_MMS_SMIL_TEXT_BEGIN_INT, &timeBegin);
+               msg_get_int_value(sText, MSG_MMS_SMIL_TEXT_END_INT, &timeEnd);
+               msg_get_int_value(sText, MSG_MMS_SMIL_TEXT_DURTIME_INT, &timeDur);
+
+               if (timeDur <= 0) {
+                       timeDur = MSG_MMS_SMIL_TIMER_DUR_INDEFINITE;
+               }
+               break;
+       case MMS_SMIL_MEDIA_AUDIO:
+       case MMS_SMIL_MEDIA_VIDEO:
+       case MMS_SMIL_MEDIA_ANIMATE:
+       case MMS_SMIL_MEDIA_IMG_OR_VIDEO:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Inside AUDIO/VIDEO/ANIMATE Case");
+               msg_struct_t sAvi;
+               msg_get_struct_handle(media_info, MSG_MMS_MEDIA_SMIL_AVI_HND, (void**)&sAvi);
+               msg_get_int_value(sAvi, MSG_MMS_SMIL_AVI_BEGIN_INT, &timeBegin);
+               msg_get_int_value(sAvi, MSG_MMS_SMIL_AVI_END_INT, &timeEnd);
+               msg_get_int_value(sAvi, MSG_MMS_SMIL_AVI_DURTIME_INT, &timeDur);
+
+               /* Calculating media Duration if nDurTime is not specified */
+               if (!timeDur)
+                       timeDur = MSG_MMS_SMIL_TIMER_DUR_INDEFINITE;
+               break;
+       default:
+               break;
+       }
+
+       /*change media time*/
+       if ((timeBegin > 0) && (timeEnd > 0)) {
+               if (timeDur > 0) {
+                       int tempDur = 0;
+                       /* If End time as well as Duration is available then consider the smallest of them. */
+                       tempDur = timeEnd - timeBegin;
+                       tempDur = _msg_smil_util_find_smallest(tempDur, timeDur);
+                       timeEnd = timeBegin + tempDur;
+                       timeDur = tempDur;
+               } else {
+                       timeDur = timeEnd - timeBegin;
+               }
+       } else if ((timeBegin > 0) && (timeDur > 0)) {
+               timeEnd = timeBegin + timeDur;
+       } else if ((timeEnd > 0) && (timeDur > 0)) {
+               timeBegin = MSG_MMS_SMIL_TIMER_DEFAULT_BEGIN;
+               timeDur = _msg_smil_util_find_smallest(timeDur, timeEnd);
+               timeEnd = timeBegin + timeDur;
+       } else if (timeDur > 0) {
+               timeBegin = MSG_MMS_SMIL_TIMER_DEFAULT_BEGIN;
+               timeEnd = timeDur;
+       } else if (timeBegin > 0) {
+               /*set media timerBegin as 0. Media will be display at first time*/
+               timeBegin = MSG_MMS_SMIL_TIMER_DEFAULT_BEGIN;
+               timeDur = MSG_MMS_SMIL_TIMER_DUR_INDEFINITE;
+               timeEnd = MSG_MMS_SMIL_TIMER_DUR_INDEFINITE;
+       } else if (timeEnd > 0) {
+               timeBegin = MSG_MMS_SMIL_TIMER_DEFAULT_BEGIN;
+               timeDur = timeEnd;
+       } else {
+               timeBegin = MSG_MMS_SMIL_TIMER_DEFAULT_BEGIN;
+               timeDur = MSG_MMS_SMIL_TIMER_DUR_INDEFINITE;
+               timeEnd = MSG_MMS_SMIL_TIMER_DUR_INDEFINITE;
+       }
+#else
+       /*set begin of media as 0, begin time is important */
+       timeBegin = MSG_MMS_SMIL_TIMER_DEFAULT_BEGIN;
+       timeDur = MSG_MMS_SMIL_TIMER_DUR_INDEFINITE;
+       timeEnd = MSG_MMS_SMIL_TIMER_DUR_INDEFINITE;
+#endif
+       msg_struct_t sText;
+       msg_struct_t sAvi;
+
+       /*set changed media time*/
+       switch (mediaType) {
+       case MMS_SMIL_MEDIA_TEXT:
+               msg_get_struct_handle(media_info, MSG_MMS_MEDIA_SMIL_TEXT_HND, &sText);
+               msg_set_int_value(sText, MSG_MMS_SMIL_TEXT_BEGIN_INT, timeBegin);
+               msg_set_int_value(sText, MSG_MMS_SMIL_TEXT_END_INT, timeEnd);
+               msg_set_int_value(sText, MSG_MMS_SMIL_TEXT_DURTIME_INT, timeDur);
+               break;
+       case MMS_SMIL_MEDIA_IMG:
+       case MMS_SMIL_MEDIA_AUDIO:
+       case MMS_SMIL_MEDIA_VIDEO:
+       case MMS_SMIL_MEDIA_ANIMATE:
+       case MMS_SMIL_MEDIA_IMG_OR_VIDEO:
+               msg_get_struct_handle(media_info, MSG_MMS_MEDIA_SMIL_AVI_HND, &sAvi);
+               msg_set_int_value(sAvi, MSG_MMS_SMIL_AVI_BEGIN_INT, timeBegin);
+               msg_set_int_value(sAvi, MSG_MMS_SMIL_AVI_END_INT, timeEnd);
+               msg_set_int_value(sAvi, MSG_MMS_SMIL_AVI_DURTIME_INT, timeDur);
+               break;
+       default:
+               break;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Media timeBegin = %d", timeBegin);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Media timeDur = %d", timeDur);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Media timeEnd = %d", timeEnd);
+}
+
+
+MSG_SMIL_ERROR_E _msg_smil_event_mgr_move_to_next_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       int slideIdx = 0;
+       MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+       SMIL_SLIDE_INFO_S *singleSlideInfo = _msg_smil_event_mgr_get_current_slide(smilEvntMgrHndle);
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilEvntMgrHndle->smilhandle);
+
+       if (singleSlideInfo != NULL) {
+               /*Call the Event Manager to Stop the timer.*/
+               if (_msg_smil_cont_mgr_get_cur_slide_status(smilContMgrHndle) != PLAYER_STATUS_PLAY_END) {
+                       err = _msg_smil_event_mgr_stop_slide(smilEvntMgrHndle);
+                       if (err != MSG_SMIL_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed: PLAYER_EVENT_NEXT_SLIDE");
+                               return err;
+                       }
+               }
+
+               /*Incrementing the slide index in order to move to the next slide*/
+               slideIdx = singleSlideInfo->pageIdx + 1;
+               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_MOVE_TO_NEXT);
+               _msg_smil_event_mgr_set_is_video_media(smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_unsupported_content(smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_invalid_video_ro(smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_video_endofstream(smilEvntMgrHndle, FALSE);
+       } else {
+               _msg_smil_event_mgr_set_page_action_type(smilEvntMgrHndle, PAGE_EVENT_PLAY);
+       }
+
+       err = _msg_smil_event_mgr_play_slide(smilEvntMgrHndle, slideIdx);
+       if (err != MSG_SMIL_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed %d", err);
+               return err;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_is_slide_active(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       return smilEvntMgrHndle->slideTimerCbData->curSlideParam->singleSlideInfo ? TRUE : FALSE;
+}
+
+
+SMIL_TIMER_CALLBACK_DATA_S *_msg_smil_event_mgr_get_timer_cb_data(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, NULL);
+
+       return smilEvntMgrHndle->slideTimerCbData;
+}
+
+
+SMIL_SLIDE_EVENT_PARAM_S *_msg_smil_event_mgr_get_slide_event_param_data(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, NULL);
+
+       return smilEvntMgrHndle->slideTimerCbData->curSlideParam;
+}
+
+
+double _msg_smil_event_mgr_get_slide_time(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, MSG_MMS_SMIL_MEDIA_DEFAULT_VALUE);
+
+       return smilEvntMgrHndle->slideTimerCbData->curSlideParam->timerDur;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_set_slide_time(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, double duration)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->timerDur = duration;
+       return TRUE;
+}
+
+
+SMIL_PLAYER_PAGE_EVENT_E _msg_smil_event_mgr_get_page_action_type(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+
+       return smilEvntMgrHndle->slideTimerCbData->slideTimerInfo.actionTypeOnPage;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_set_page_action_type(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_PLAYER_PAGE_EVENT_E page_event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->slideTimerInfo.actionTypeOnPage = page_event;
+       return TRUE;
+}
+
+
+SMIL_SLIDE_INFO_S *_msg_smil_event_mgr_get_current_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, NULL);
+
+       return smilEvntMgrHndle->slideTimerCbData->curSlideParam->singleSlideInfo;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_set_current_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_SLIDE_INFO_S *singleSlide)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->singleSlideInfo = singleSlide;
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_get_video_endofstream(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       return smilEvntMgrHndle->slideTimerCbData->curSlideParam->iseos;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_set_video_endofstream(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL iseos)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->iseos = iseos;
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_get_is_video_media(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       return smilEvntMgrHndle->slideTimerCbData->curSlideParam->isVideoMedia;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_set_is_video_media(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL isvideo)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->isVideoMedia = isvideo;
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_get_unsupported_content(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       return smilEvntMgrHndle->slideTimerCbData->curSlideParam->isUnsupportedContent;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_set_unsupported_content(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL isunsupported)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->isUnsupportedContent = isunsupported;
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_get_invalid_video_ro(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       return smilEvntMgrHndle->slideTimerCbData->curSlideParam->isVideoRoInvalid;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_set_invalid_video_ro(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL isinvalid_ro)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->isVideoRoInvalid = isinvalid_ro;
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_event_mgr_set_last_slide(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL islast_slide)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->isLastSlide = islast_slide;
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->clientCbParam.isLastSlide = islast_slide;
+       return TRUE;
+}
+
+MSG_BOOL _msg_smil_event_mgr_set_last_slide_is_help_page(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, MSG_BOOL ishelp_page)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->isHelpSlide = ishelp_page;
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->clientCbParam.isHelpSlide = ishelp_page;
+       return TRUE;
+}
+
+MSG_BOOL _msg_smil_event_mgr_set_render_event(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, SMIL_PLAYER_RENDER_EVENT_E render_event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->renderEvent = render_event;
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->clientCbParam.clientCbEvent = render_event;
+       return TRUE;
+}
+
+
+MSG_BOOL __msg_smil_event_mgr_set_client_cb_page_idx(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int slideIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->clientCbParam.pageIdx = slideIdx;
+       return TRUE;
+}
+
+
+MSG_BOOL __msg_smil_event_mgr_set_client_cb_page_count(SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle, int pageCnt)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilEvntMgrHndle->slideTimerCbData->curSlideParam == NULL, FALSE);
+
+       smilEvntMgrHndle->slideTimerCbData->curSlideParam->clientCbParam.pageCnt = pageCnt;
+       return TRUE;
+}
+
diff --git a/viewer/smil-player/src/msg-smil-media-render.c b/viewer/smil-player/src/msg-smil-media-render.c
new file mode 100755 (executable)
index 0000000..748d305
--- /dev/null
@@ -0,0 +1,1392 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-types.h"
+#include "msg-smil-player.h"
+#include "msg-smil-render.h"
+#include "msg-smil-util.h"
+#include "msg-ui-viewer-drm-utility.h"
+#include "msg-ui-image-resource.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-viewer-utility.h"
+#include "msg-ui-common-utility.h"
+
+#include <mm_error.h>
+#include <player.h>
+#include <metadata_extractor.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include <E_DBus.h>
+
+/*==================================================================================================
+ *                                                             FUNCTION DECLARATIONS
+ *==================================================================================================*/
+ /*smil player sound and video related functions*/
+static MSG_BOOL __msg_smil_render_is_player_active(void);
+static MSG_BOOL __msg_smil_render_player_mgr_create(void *data);
+static MSG_BOOL __msg_smil_render_player_mgr_destroy(void *data);
+static MSG_BOOL __msg_smil_render_player_mgr_play(void *data);
+static MSG_BOOL __msg_smil_render_player_mgr_stop(void *data);
+static MSG_BOOL __msg_smil_render_player_mgr_realize(void *data);
+static MSG_BOOL __msg_smil_render_player_mgr_unrealize(void);
+static MSG_BOOL __msg_smil_render_player_mgr_pause(void *data);
+static MSG_BOOL __msg_smil_render_player_mgr_resume(void *data, int mediaType);
+static MSG_BOOL __msg_smil_render_player_mgr_mute(void *data);
+static MSG_BOOL __msg_smil_render_player_mgr_set_player_cb(void *user_data);
+static MSG_BOOL __msg_smil_render_player_mgr_set_video_stream_cb(void *cb, void *user_data);
+static MSG_BOOL __msg_smil_render_player_mgr_set_attribute(void *data, const char *path, int mediaType);
+
+static MSG_BOOL __msg_smil_render_check_file_validity(SMIL_RENDERER_DATA_S *viewerRenderData, const char *file_path);
+static MSG_BOOL __msg_smil_render_get_video_size(SMIL_RENDERER_DATA_S *viewerRenderData, const char *file_path, int *width, int *height);
+static void __msg_smil_render_show_image_file(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_RENDER_IMAGE_TYPE_E imageType);
+static MSG_BOOL __msg_smil_render_play_audio_file(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status);
+static MSG_BOOL __msg_smil_render_play_video_file(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status);
+static MSG_BOOL __msg_smil_render_get_resized_content_size(void *data, int content_w, int content_h, int *w, int *h);
+static void __msg_smil_render_create_video_image(void *data);
+static void __msg_smil_render_start_video_timer(void *data);
+
+/*idle functions*/
+static Eina_Bool __msg_smil_render_player_mgr_get_content_duration(void *data);
+static Eina_Bool __msg_smil_render_end_of_stream(void *data);
+static Eina_Bool __msg_smil_render_resize_mm_video(void *data);
+static Eina_Bool __msg_smil_render_update_video_screen(void *data);
+
+/*cb functions*/
+static int __msg_smil_render_video_stream_cb(unsigned char *data, int width, int height, unsigned int size, void *user_data);
+static void __msg_smil_render_error_cb(int error_code, void *user_param);
+static void __msg_smil_render_complete_cb(void *user_param);
+static void __msg_smil_render_interrupted_cb(player_interrupted_code_e code, void *user_param);
+
+/*================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+static player_h _player = 0;
+
+static MSG_BOOL __msg_smil_render_is_player_active(void)
+{
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "_player : %x", _player);
+       return _player ? TRUE : FALSE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_create(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       int err = PLAYER_ERROR_NONE;
+
+       if (__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = player_create(&_player)) != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_create is failed err = %x", err);
+               return FALSE;
+       }
+
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_INIT;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_realize(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = player_prepare(_player)) != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_prepare Error = %d", err);
+               return FALSE;
+       }
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_READY;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_unrealize(void)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = player_unprepare(_player)) != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_unprepare Error = %d", err);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_destroy(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if (player_destroy(_player) != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_destroy is failed");
+               return FALSE;
+       }
+       _player = 0;
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_NONE;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_play(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = player_start(_player)) != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_start is failed err = %d", err);
+               return FALSE;
+       }
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_PLAYING;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_pause(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = player_pause(_player)) != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_pause is failed err = %d", err);
+               return FALSE;
+       }
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_PAUSED;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_resume(void *data, int mediaType)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if (viewerRenderData->player_state == MEDIA_PLAYER_STATE_INIT) {        //not ready status, in other words, page is started with paused state
+               if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData))
+                       return FALSE;
+
+               if (__msg_smil_render_player_mgr_play((void *)viewerRenderData)) {
+                       if (mediaType == MMS_SMIL_MEDIA_VIDEO) {
+                               SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
+                               SMIL_SLIDE_INFO_S *current_slide_data = _msg_smil_cont_mgr_get_cur_slide(smilContMgrHndle);
+
+                               if (current_slide_data->pageInfo && current_slide_data->pageInfo->hasVideo)
+                                       __msg_smil_render_start_video_timer(viewerRenderData);
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_play is failed");
+                       return FALSE;
+               }
+       } else {
+               if ((err = player_start(_player)) != PLAYER_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_start is failed err = %d", err);
+                       return FALSE;
+               }
+       }
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_PLAYING;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_mute(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = player_set_mute(_player, TRUE)) != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_mute is failed err = %d", err);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_stop(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       /*stop media player*/
+       if (__msg_smil_render_is_player_active() && viewerRenderData->player_state == MEDIA_PLAYER_STATE_PLAYING) {
+               int err = PLAYER_ERROR_NONE;
+               if ((err = player_stop(_player)) != PLAYER_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_stop is failed err = %d", err);
+                       return FALSE;
+               }
+       }
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_STOP;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_set_player_cb(void *user_data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       /* set error cb */
+       err = player_set_error_cb(_player, __msg_smil_render_error_cb, user_data);
+       if (err != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_error_cb is failed err = %d", err);
+               return FALSE;
+       }
+
+       /* set complete cb */
+       err = player_set_completed_cb(_player, __msg_smil_render_complete_cb, user_data);
+       if (err != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_completed_cb is failed err = %d", err);
+               return FALSE;
+       }
+
+       /* set interrupted cb */
+       err = player_set_interrupted_cb(_player, __msg_smil_render_interrupted_cb, user_data);
+       if (err != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_interrupted_cb is failed err = %d", err);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_set_video_stream_cb(void *cb, void *user_data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = player_set_video_frame_decoded_cb(_player, cb, user_data)) != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_video_frame_decoded_cb is failed err = %d", err);
+               return FALSE;
+       }
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_set_attribute(void *data, const char *path, int mediaType)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, path == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       /*  set sound type */
+       err = player_set_sound_type(_player, SOUND_TYPE_MEDIA);
+       if (err != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_sound_type is failed. err = %d ", err)
+               return FALSE;
+       }
+
+       err = player_set_uri(_player, path);
+       if (err != PLAYER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_uri is failed. err = %d", err);
+               return FALSE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mediaType = %d", mediaType);
+
+       if (mediaType == MMS_SMIL_MEDIA_VIDEO) {
+               err = player_set_x11_display_rotation(_player, PLAYER_DISPLAY_ROTATION_NONE);
+               if (err != PLAYER_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_x11_display_rotation is failed. err = %d", err);
+                       return FALSE;
+               }
+
+               err = player_set_display(_player, PLAYER_DISPLAY_TYPE_EVAS, (void *)viewerRenderData->video_image);
+               if (err != PLAYER_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_set_display is failed. err = %d", err);
+                       return FALSE;
+               }
+
+               err = player_enable_evas_display_scaling(_player, false);
+               if(err != PLAYER_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_enable_evas_display_scaling is failed. err = %d", err);
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+
+static Eina_Bool __msg_smil_render_player_mgr_get_content_duration(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, ECORE_CALLBACK_CANCEL);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       int duration = 0;
+       int err = PLAYER_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active()) {
+               viewerRenderData->video_duration_idle = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       err = player_get_duration(_player, &duration);
+       if (err != PLAYER_ERROR_NONE)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player_get_duration is failed err = %d", err);
+
+       viewerRenderData->video_duration = duration;
+       viewerRenderData->video_duration_idle = NULL;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "video content duration = %d", viewerRenderData->video_duration);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+MSG_BOOL _msg_smil_render_pause(void *data, int mediaType)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       if (viewerRenderData->video_update_timer)
+               ecore_timer_freeze(viewerRenderData->video_update_timer);
+
+       if (viewerRenderData->insert_image && elm_image_animated_available_get(viewerRenderData->insert_image))
+               elm_image_animated_play_set(viewerRenderData->insert_image, EINA_FALSE);
+
+       /* enable copy and paste popup */
+       if (viewerRenderData->viewer_body) {
+               elm_entry_context_menu_disabled_set(viewerRenderData->viewer_body, EINA_FALSE);
+               elm_entry_magnifier_disabled_set(viewerRenderData->viewer_body, EINA_FALSE);
+       }
+
+       if (mediaType == MMS_SMIL_MEDIA_VIDEO || mediaType == MMS_SMIL_MEDIA_AUDIO) {
+               SMIL_HANDLER_S *smil_handler = (SMIL_HANDLER_S *)viewerRenderData->smilhandle;
+               if (smil_handler->smilEvntMgrHndle->slideTimerCbData->curSlideParam->iseos == FALSE)
+                       return __msg_smil_render_player_mgr_pause(viewerRenderData);
+       }
+
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_render_resume(void *data, int mediaType)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       if (viewerRenderData->video_update_timer)
+               ecore_timer_thaw(viewerRenderData->video_update_timer);
+
+       if (viewerRenderData->insert_image && elm_image_animated_available_get(viewerRenderData->insert_image))
+               elm_image_animated_play_set(viewerRenderData->insert_image, EINA_TRUE);
+
+       /* disable copy and paste popup */
+       if (viewerRenderData->viewer_body) {
+               elm_entry_context_menu_disabled_set(viewerRenderData->viewer_body, EINA_TRUE);
+               elm_entry_magnifier_disabled_set(viewerRenderData->viewer_body, EINA_TRUE);
+               elm_entry_select_none(viewerRenderData->viewer_body);
+       }
+
+       if (mediaType == MMS_SMIL_MEDIA_VIDEO || mediaType == MMS_SMIL_MEDIA_AUDIO) {
+               SMIL_HANDLER_S *smil_handler = (SMIL_HANDLER_S *)viewerRenderData->smilhandle;
+               if (_msg_smil_event_mgr_get_video_endofstream(smil_handler->smilEvntMgrHndle) == FALSE)
+                       return __msg_smil_render_player_mgr_resume(viewerRenderData, mediaType);
+       }
+
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_render_stop_playing_file(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       if (viewerRenderData->video_update_timer) {
+               ecore_timer_del(viewerRenderData->video_update_timer);
+               viewerRenderData->video_update_timer = NULL;
+       }
+
+       if (viewerRenderData->insert_image && elm_image_animated_available_get(viewerRenderData->insert_image))
+               elm_image_animated_play_set(viewerRenderData->insert_image, EINA_FALSE);
+
+       /* enable copy and paste popup */
+       if (viewerRenderData->viewer_body) {
+               elm_entry_context_menu_disabled_set(viewerRenderData->viewer_body, EINA_FALSE);
+               elm_entry_magnifier_disabled_set(viewerRenderData->viewer_body, EINA_FALSE);
+       }
+
+       __msg_smil_render_player_mgr_stop(data);
+       __msg_smil_render_player_mgr_unrealize();
+       __msg_smil_render_player_mgr_destroy(data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+
+static Eina_Bool __msg_smil_render_update_video_screen(void *data)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, EINA_FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       if (viewerRenderData->video_image) {
+               if (viewerRenderData->video_image_buffer) {
+                       int video_width = 0;
+                       int video_height = 0;
+                       evas_object_image_size_get(viewerRenderData->video_image, &video_width, &video_height);
+                       evas_object_image_data_update_add(viewerRenderData->video_image, 0, 0, video_width, video_height);
+               }
+               return EINA_TRUE;
+       }
+
+       viewerRenderData->video_update_timer = NULL;
+       return EINA_FALSE;
+}
+
+
+static void __msg_smil_render_start_video_timer(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       if (viewerRenderData->video_update_timer == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "add timer");
+               viewerRenderData->video_update_timer = ecore_timer_add(0.03, __msg_smil_render_update_video_screen, viewerRenderData);  /* more than 30 frames/sec*/
+       } else {
+               ecore_timer_thaw(viewerRenderData->video_update_timer);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ecore_timer_thaw");
+       }
+
+       return;
+}
+
+
+static Eina_Bool __msg_smil_render_resize_mm_video(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, ECORE_CALLBACK_CANCEL);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       if (viewerRenderData->video_image) {
+               evas_object_image_size_set(viewerRenderData->video_image, viewerRenderData->resized_width, viewerRenderData->resized_height);
+               evas_object_resize(viewerRenderData->video_image, viewerRenderData->resized_width, viewerRenderData->resized_height);
+               evas_object_image_fill_set(viewerRenderData->video_image, 0, 0, viewerRenderData->resized_width, viewerRenderData->resized_height);
+
+               // set image buffer null
+               viewerRenderData->video_image_buffer = NULL;
+               viewerRenderData->video_image_buffer = evas_object_image_data_get(viewerRenderData->video_image, EINA_TRUE);
+               evas_object_image_data_set(viewerRenderData->video_image, viewerRenderData->video_image_buffer);
+
+               /* update resized image screen */
+               __msg_smil_render_update_video_screen(viewerRenderData);
+       }
+
+       viewerRenderData->video_resize_idle = NULL;
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+static int __msg_smil_render_video_stream_cb(unsigned char *data, int width, int height, unsigned int size, void *user_data)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL || size <= 0, MSG_UI_RET_ERR);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, user_data == NULL, MSG_UI_RET_ERR);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)user_data;
+       int video_width = 0;
+       int video_height = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "stream_size = %d, width = %d, height = %d", size, width, height);
+       evas_object_image_size_get(viewerRenderData->video_image, &video_width, &video_height);
+
+       if (viewerRenderData->is_skip_frame) {  /*skip 1 frame*/
+               viewerRenderData->is_skip_frame = FALSE;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Skip 1 frame");
+               return MSG_UI_RET_SUCCESS;
+       }
+
+       if (width != video_width || height != video_height) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "size is different video_width = %d, video height = %d", video_width, video_height);
+               if (viewerRenderData->video_resize_idle) {
+                       ecore_idler_del(viewerRenderData->video_resize_idle);
+                       viewerRenderData->video_resize_idle = NULL;
+               }
+
+               evas_object_image_size_set(viewerRenderData->video_image, width, height);
+               viewerRenderData->video_image_buffer = NULL;
+               evas_object_image_data_set(viewerRenderData->video_image, (void *)data);
+
+               viewerRenderData->video_resize_idle = ecore_idler_add(__msg_smil_render_resize_mm_video, (void *)viewerRenderData);
+               return MSG_UI_RET_SUCCESS;
+       }
+
+       if (viewerRenderData->video_image_buffer == NULL) {
+               viewerRenderData->video_image_buffer = evas_object_image_data_get(viewerRenderData->video_image, EINA_TRUE);
+               evas_object_image_data_set(viewerRenderData->video_image, viewerRenderData->video_image_buffer);
+       }
+
+       /*update evas image buffer*/
+       if (viewerRenderData->video_image_buffer)
+               memcpy(viewerRenderData->video_image_buffer, data, size);
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+
+static Eina_Bool __msg_smil_render_end_of_stream(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, ECORE_CALLBACK_CANCEL);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       SMIL_SLIDE_INFO_S *current_slide_data = NULL;
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
+       SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle = _msg_smil_get_event_mgr(viewerRenderData->smilhandle);
+
+       current_slide_data = _msg_smil_cont_mgr_get_cur_slide(smilContMgrHndle);
+       _msg_smil_event_mgr_set_video_endofstream(smilEvntMgrHndle, TRUE);
+       _msg_smil_render_stop_playing_file(data);
+
+       if (current_slide_data->pageInfo && current_slide_data->pageInfo->hasVideo) {
+               _msg_smil_event_mgr_set_is_video_media(smilEvntMgrHndle, FALSE);
+               viewerRenderData->video_duration = 0;
+       }
+
+       viewerRenderData->video_eos_idle = NULL;
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __msg_smil_render_error_cb(int error_code, void *user_param)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, user_param == NULL);
+
+       if (!__msg_smil_render_is_player_active())
+               return;
+
+       /*case MM_MESSAGE_ERROR */
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "receive MM_MESSAGE_ERROR, %d", error_code);
+}
+
+static void __msg_smil_render_complete_cb(void *user_param)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, user_param == NULL);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)user_param;
+
+       if (!__msg_smil_render_is_player_active())
+               return;
+
+       /*case MM_MESSAGE_END_OF_STREAM */
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "receive MM_MESSAGE_END_OF_STREAM");
+
+       if (viewerRenderData->video_eos_idle) {
+               ecore_idler_del(viewerRenderData->video_eos_idle);
+               viewerRenderData->video_eos_idle = NULL;
+       }
+       viewerRenderData->video_eos_idle = ecore_idler_add(__msg_smil_render_end_of_stream, (void *)viewerRenderData);
+}
+
+
+static void __msg_smil_render_interrupted_cb(player_interrupted_code_e code, void *user_param)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, user_param == NULL);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)user_param;
+
+       if (!__msg_smil_render_is_player_active())
+               return;
+
+       /*case MM_MESSAGE_END_OF_STREAM */
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "receive MM_MESSAGE_STATE_INTERRUPTED");
+
+       switch (code) {
+               case PLAYER_INTERRUPTED_BY_MEDIA:
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_ERROR_PLAYER_BT_CONNECTION");
+                       break;
+
+               case PLAYER_INTERRUPTED_BY_CALL:
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_MSG_CODE_INTERRUPTED_BY_CALL_END");
+                       break;
+
+               case PLAYER_INTERRUPTED_BY_EARJACK_UNPLUG:
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_MSG_CODE_INTERRUPTED_BY_EARJACK_UNPLUG");
+
+                       SMIL_HANDLER_S *smil_handler = (SMIL_HANDLER_S *)viewerRenderData->smilhandle;
+                       SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle = _msg_smil_get_event_mgr(viewerRenderData->smilhandle);
+                       SMIL_SLIDE_EVENT_PARAM_S *curSlideParam = _msg_smil_event_mgr_get_slide_event_param_data(smilEvntMgrHndle);;
+                       SMIL_TIMER_CALLBACK_DATA_S *timer_cb_data = _msg_smil_event_mgr_get_timer_cb_data(smilEvntMgrHndle);
+
+                       _msg_smil_player_on_slide_event_handler((void **)&smil_handler, PLAYER_EVENT_PAUSE);
+                       if (curSlideParam && timer_cb_data) {
+                               _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_PAUSE_CURRENT_PAGE);
+                               timer_cb_data->appSmilCb(&(curSlideParam->clientCbParam), timer_cb_data->appUserData);
+                       }
+                       break;
+
+               case PLAYER_INTERRUPTED_BY_RESOURCE_CONFLICT:
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_MSG_CODE_INTERRUPTED_BY_RESOURCE_CONFLICT");
+                       /*It is called when vtcall is receiving during video play*/
+                       break;
+
+               case PLAYER_INTERRUPTED_BY_ALARM:
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_MSG_CODE_INTERRUPTED_BY_ALARM_START");
+                       break;
+
+               default:
+                       break;
+    }
+}
+
+static MSG_BOOL __msg_smil_render_play_audio_file(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, path == NULL, FALSE);
+
+       if (__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if (!__msg_smil_render_player_mgr_create((void *)viewerRenderData))
+               return FALSE;
+
+       if (!__msg_smil_render_player_mgr_set_attribute(viewerRenderData, path, MMS_SMIL_MEDIA_AUDIO))
+               return FALSE;
+
+       if (!__msg_smil_render_player_mgr_set_player_cb((void *)viewerRenderData))
+               return FALSE;
+
+       if (status == PLAYER_STATUS_PLAYING) {
+               if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData))
+                       return FALSE;
+
+               if (!__msg_smil_render_player_mgr_play((void *)viewerRenderData))
+                       return FALSE;
+
+               /*if silent and mute mode*/
+               if (viewerRenderData->ismute) {
+                       if (!__msg_smil_render_player_mgr_mute((void *)viewerRenderData))
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_mute is Fail");
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_render_show_inserted_audio(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, path == NULL, FALSE);
+
+       if (msg_common_is_connected_call()) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Unable to play during call");
+               return FALSE;
+       }
+
+       if (!ecore_file_exists(path)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media file is not exist!");
+               return FALSE;
+       }
+
+       if (msg_ui_viewer_is_drm_file(path)) {
+               if (msg_ui_viewer_check_drm_ro_valid(path, MSG_UI_DRM_RIGHT_PLAY)) {
+                       //copy drm file temporarily, because drm file is created by MF with read right and drm_svc try to open file with append mode.
+                       char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1]= {0,};
+                       const char *filename = (const char *)ecore_file_file_get(path);
+
+                       snprintf(dst_path, sizeof(dst_path),"%s%s", viewerRenderData->working_path, filename);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dst_path = %s", dst_path);
+
+                       char *app_drm_path = msg_ui_viewer_util_copy_file(path, dst_path);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "app_drm_path = %s", app_drm_path);
+                       //copy drm content to app path end
+
+                       /*play original sound(drm)*/
+                       if (__msg_smil_render_play_audio_file(viewerRenderData, app_drm_path, status) == FALSE) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_play_audio_file is failed");
+                               _msg_smil_render_stop_playing_file((void *)viewerRenderData);
+
+                               if (app_drm_path) {
+                                       g_free(app_drm_path);
+                                       app_drm_path = NULL;
+                               }
+
+                               return FALSE;
+                       }
+
+                       if (app_drm_path) {
+                               g_free(app_drm_path);
+                               app_drm_path = NULL;
+                       }
+               } else {        /*there is no valid ro case*/
+                       /*display drm icon*/
+                       __msg_smil_render_show_image_file(viewerRenderData, MSG_VIEWER_IMAGE_DRM_ICON, VIEWER_IMAGE_TYPE_DRM_SOUND);
+               }
+       } else {
+               /*normal case -- no drm*/
+               if (__msg_smil_render_play_audio_file(viewerRenderData, path, status) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_play_audio_file is failed");
+                       _msg_smil_render_stop_playing_file((void *)viewerRenderData);
+                       return FALSE;
+               }
+       }
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+
+void _msg_smil_render_rotate_video_window(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+
+       viewerRenderData->main_win_rotate = elm_win_rotation_get(viewerRenderData->main_window);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "main_win_rotate = %d", viewerRenderData->main_win_rotate);
+}
+
+
+static MSG_BOOL __msg_smil_render_check_file_validity(SMIL_RENDERER_DATA_S *viewerRenderData, const char *file_path)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, file_path == NULL, FALSE);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "file_path = (%s)", file_path);
+
+       int err = 0;
+       metadata_extractor_h handle = NULL;
+
+       err = metadata_extractor_create(&handle);
+
+       if (err == METADATA_EXTRACTOR_ERROR_NONE) {
+               err = metadata_extractor_set_path(handle, file_path);
+
+               if (err != METADATA_EXTRACTOR_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "metadata_extractor_set_path is failed, %d", err);
+                       metadata_extractor_destroy(handle);
+                       return FALSE;
+               }
+
+               err = metadata_extractor_destroy(handle);
+               if (err != METADATA_EXTRACTOR_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "metadata_extractor_destroy FAILED err = %x", err);
+                       return FALSE;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "metadata_extractor_create FAILED err = %x", err);
+               return FALSE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_get_video_size(SMIL_RENDERER_DATA_S *viewerRenderData, const char *file_path, int *width, int *height)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, file_path == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, width == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, height == NULL, FALSE);
+       int err = 0;
+       metadata_extractor_h handle = NULL;
+
+       err = metadata_extractor_create(&handle);
+
+       if (err == METADATA_EXTRACTOR_ERROR_NONE) {
+               char *value = NULL;
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "file_path = (%s)", file_path);
+
+               err = metadata_extractor_set_path(handle, file_path);
+
+               if (err != METADATA_EXTRACTOR_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "metadata_extractor_set_path is failed, %d", err);
+                       metadata_extractor_destroy(handle);
+                       return FALSE;
+               }
+
+               err = metadata_extractor_get_metadata(handle, METADATA_VIDEO_WIDTH, &value);
+
+               if (err == METADATA_EXTRACTOR_ERROR_NONE) {
+                       if (value) {
+                               *width = atoi(value);
+                               free(value);
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "metadata_extractor_get_metadata(METADATA_VIDEO_WIDTH) is failed - err(%x)", err);
+                       metadata_extractor_destroy(handle);
+                       return FALSE;
+               }
+
+               err = metadata_extractor_get_metadata(handle, METADATA_VIDEO_HEIGHT, &value);
+
+               if (err == METADATA_EXTRACTOR_ERROR_NONE) {
+                       if (value) {
+                               *height = atoi(value);
+                               free(value);
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "metadata_extractor_get_metadata(METADATA_VIDEO_HEIGHT) is failed - err(%x)", err);
+                       metadata_extractor_destroy(handle);
+                       return FALSE;
+               }
+
+               metadata_extractor_destroy(handle);
+
+               return TRUE;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "metadata_extractor_create FAILED err = %x", err);
+       }
+
+       return FALSE;
+}
+
+
+static MSG_BOOL __msg_smil_render_get_resized_content_size(void *data, int content_w, int content_h, int *w, int *h)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, w == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, h == NULL, FALSE);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       int viewer_width = viewerRenderData->viewer_width > viewerRenderData->viewer_landscape_width ? viewerRenderData->viewer_landscape_width : viewerRenderData->viewer_width;
+       int viewer_height = viewerRenderData->viewer_height > viewerRenderData->viewer_landscape_height ? viewerRenderData->viewer_landscape_height : viewerRenderData->viewer_height;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_width = %d, height = %d", viewer_width, viewer_height);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "content_w = %d, content_h = %d", content_w, content_h);
+
+       /*check image size*/
+       if (content_w > viewer_width) {
+               *w = viewer_width;
+               *h = content_h * viewer_width / content_w;
+
+               if (*h > viewer_height) {
+                       *w = content_w * viewer_height / content_h;
+                       *h = viewer_height;
+               }
+       } else if (content_h > viewer_height) {
+               *w = content_w * viewer_height / content_h;
+               *h = viewer_height;
+
+               if (*w > viewer_width) {
+                       *w = viewer_width;
+                       *h = content_h * viewer_width / content_w;
+               }
+       } else if (content_w <= viewer_width && content_h <= viewer_height) {
+               *w = content_w;
+               *h = content_h;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid case");
+               *w = content_w;
+               *h = content_h;
+       }
+
+       /*make size as even number becasue of hardware limitation*/
+       if (*w % 2)
+        *w = *w - 1;
+
+       if (*h % 2)
+        *h = *h - 1;
+
+       /*make size as multiples of 16 because of hardware limitation, C110*/
+       int remained = 0;
+       if ((remained = *w % 16))
+               *w = *w - remained;
+
+       if ((remained = *h % 16))
+               *h = *h - remained;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Result content width = %d, height = %d", *w, *h);
+       return TRUE;
+}
+
+
+static void __msg_smil_render_create_video_image(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)data;
+       Evas_Object *ic = NULL;
+       int resized_width = 0;
+       int resized_height = 0;
+
+       if (!__msg_smil_render_get_resized_content_size(viewerRenderData, viewerRenderData->video_width, viewerRenderData->video_height, &resized_width, &resized_height)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_get_resized_content_size is failed");
+               resized_width = viewerRenderData->viewer_width;
+               resized_height = viewerRenderData->viewer_landscape_height;
+       }
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Image resized_width = %d, resized_height = %d", resized_width, resized_height);
+
+       viewerRenderData->resized_width = resized_width;
+       viewerRenderData->resized_height = resized_height;
+
+       /*create image object for video image*/
+       Evas *evas = NULL;
+       evas = evas_object_evas_get(viewerRenderData->main_window);
+       ic = evas_object_image_add(evas);
+       viewerRenderData->video_image = ic;
+
+       evas_object_image_colorspace_set(ic, EVAS_COLORSPACE_ARGB8888);
+       evas_object_image_size_set(ic, resized_width, resized_height);
+       evas_object_image_fill_set(ic, 0, 0, resized_width, resized_height);
+       evas_object_image_smooth_scale_set(ic, EINA_TRUE);
+       evas_object_resize(ic, resized_width, resized_height);
+       evas_object_move(ic, 0, 0);
+       evas_object_size_hint_min_set(ic, resized_width, resized_height);
+
+       /*set video image buffer to display as black screen*/
+       viewerRenderData->video_image_buffer = evas_object_image_data_get(ic, EINA_TRUE);
+       if (viewerRenderData->video_image_buffer) {
+               memset(viewerRenderData->video_image_buffer, 0, (resized_width * resized_height * 4));
+               evas_object_image_data_set(ic, viewerRenderData->video_image_buffer);
+       }
+
+       /*video top*/
+       elm_box_pack_start(viewerRenderData->viewer_content_box, ic);
+
+       if (viewerRenderData->viewer_body_top_padding) {
+               elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_top_padding);
+               elm_box_pack_start(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_top_padding);
+       }
+
+#ifdef MSG_VIEWER_ENABLE_VIDEO_TOP_AND_BOTTOM /*Set image top as defalt region in case of video*/
+       SMIL_SLIDE_INFO_S *curSlideInfo = NULL;
+       MSG_BOOL istexttop = FALSE;
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
+
+       curSlideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, 0);
+       if (curSlideInfo && curSlideInfo->pageInfo)
+               istexttop = curSlideInfo->pageInfo->isTexttop;
+
+       if (istexttop) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Text top message");
+               elm_box_unpack(viewerRenderData->viewer_content_box, ic);
+               elm_box_pack_end(viewerRenderData->viewer_content_box, ic); /*Text top*/
+       } else
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Image top message");
+#endif
+       evas_object_show(ic);
+}
+
+
+static MSG_BOOL __msg_smil_render_play_video_file(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, path == NULL, FALSE);
+       int video_width = 0;
+       int video_height = 0;
+
+       /*get width, height size of video content*/
+       if (!__msg_smil_render_get_video_size(viewerRenderData, path, &video_width, &video_height))
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_get_video_size is failed");
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "video_width = %d, video_height = %d", video_width, video_height);
+       if (video_width == 0 || video_height == 0) {
+               video_width = VIEWER_VIDEO_WIDTH;
+               video_height = VIEWER_VIDEO_HEIGHT;
+       }
+
+       /*set original video content size.*/
+       viewerRenderData->video_width = video_width;
+       viewerRenderData->video_height = video_height;
+
+       /*create Evas object image for video*/
+       if (!viewerRenderData->video_image)
+               __msg_smil_render_create_video_image(viewerRenderData);
+
+       if (!__msg_smil_render_player_mgr_create(viewerRenderData)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_create is failed");
+               return FALSE;
+       }
+
+       if (!__msg_smil_render_player_mgr_set_attribute(viewerRenderData, path, MMS_SMIL_MEDIA_VIDEO)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_set_attribute is failed");
+               return FALSE;
+       }
+       if (!__msg_smil_render_player_mgr_set_player_cb((void *)viewerRenderData)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_set_player_cb is failed");
+               return FALSE;
+       }
+
+       /* add getting content duration idler */
+       if (viewerRenderData->video_duration_idle) {
+               ecore_idler_del(viewerRenderData->video_duration_idle);
+               viewerRenderData->video_duration_idle = NULL;
+       }
+       viewerRenderData->video_duration_idle = ecore_idler_add(__msg_smil_render_player_mgr_get_content_duration, (void *)viewerRenderData);
+       viewerRenderData->is_skip_frame = TRUE;
+
+       /* set video stream cb */
+       if (!__msg_smil_render_player_mgr_set_video_stream_cb(__msg_smil_render_video_stream_cb, (void *)viewerRenderData)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_set_video_stream_cb is failed");
+               return FALSE;
+       }
+
+       if (status == PLAYER_STATUS_PLAYING) {
+               if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_realize is failed");
+                       return FALSE;
+               }
+
+               if (__msg_smil_render_player_mgr_play((void *)viewerRenderData)) {
+                       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
+                       SMIL_SLIDE_INFO_S *current_slide_data = _msg_smil_cont_mgr_get_cur_slide(smilContMgrHndle);
+
+                       if (current_slide_data->pageInfo && current_slide_data->pageInfo->hasVideo)
+                               __msg_smil_render_start_video_timer(viewerRenderData);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_player_mgr_play is failed");
+                       return FALSE;
+               }
+       }
+
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_render_show_inserted_video(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_PLAYER_STATUS_E status)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, path == NULL, FALSE);
+       SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle = _msg_smil_get_event_mgr(viewerRenderData->smilhandle);
+
+       if (msg_common_is_connected_call()) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Unable to play during call");
+               return FALSE;
+       }
+
+       if (!ecore_file_exists(path)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media file is not exist!");
+               return FALSE;
+       }
+
+       if (!__msg_smil_render_check_file_validity(viewerRenderData, path)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_check_file_validity is failed");
+               return FALSE;
+       }
+
+       _msg_smil_event_mgr_set_invalid_video_ro(smilEvntMgrHndle, FALSE);
+
+       if (msg_ui_viewer_is_drm_file(path)) {
+               if (msg_ui_viewer_check_drm_ro_valid(path, MSG_UI_DRM_RIGHT_PLAY)) {
+                       //copy drm file temporarily, because drm file is created by MF with read right and drm_svc try to open file with append property.
+                       char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1]= {0,};
+                       const char *filename = (const char *)ecore_file_file_get(path);
+
+                       snprintf(dst_path, sizeof(dst_path),"%s%s", viewerRenderData->working_path, filename);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dst_path = %s", dst_path);
+
+                       char *app_drm_path = msg_ui_viewer_util_copy_file(path, dst_path);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "app_drm_path = %s", app_drm_path);
+                       //copy drm content to app path end
+
+                       /*play drm video file*/
+                       if (__msg_smil_render_play_video_file(viewerRenderData, app_drm_path, status) == FALSE) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_play_video_file is failed");
+                               _msg_smil_render_stop_playing_file((void *)viewerRenderData);
+
+                               if (app_drm_path) {
+                                       g_free(app_drm_path);
+                                       app_drm_path = NULL;
+                               }
+
+                               return FALSE;
+                       }
+
+                       if (app_drm_path) {
+                               g_free(app_drm_path);
+                               app_drm_path = NULL;
+                       }
+               } else {        /*drm, but no ro case*/
+                       _msg_smil_event_mgr_set_invalid_video_ro(smilEvntMgrHndle, TRUE);
+                       /*display drm icon*/
+                       __msg_smil_render_show_image_file(viewerRenderData, MSG_VIEWER_IMAGE_DRM_ICON, VIEWER_IMAGE_TYPE_DRM_VIDEO);
+               }
+       } else {
+               /*normal case -- no drm*/
+               if (__msg_smil_render_play_video_file(viewerRenderData, path, status) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_play_video_file is failed");
+                       if (viewerRenderData->video_image) {
+                               evas_object_del(viewerRenderData->video_image);
+                               viewerRenderData->video_image = NULL;
+                               viewerRenderData->video_image_buffer = NULL;
+                       }
+                       _msg_smil_render_stop_playing_file((void *)viewerRenderData);
+                       __msg_smil_render_show_image_file(viewerRenderData, path, VIEWER_IMAGE_TYPE_UNSUPPORTED);
+                       return FALSE;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+
+static void __msg_smil_render_show_image_file(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path, SMIL_RENDER_IMAGE_TYPE_E imageType)
+{
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, "viewerRenderData is NULL");
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, path == NULL, "path is NULL");
+       Evas_Object *ic = NULL;
+       int contnet_w = 0;
+       int contnet_h = 0;
+       int tmp_w = 0;
+       int tmp_h = 0;
+       int layout_width = viewerRenderData->viewer_width - (2 * (viewerRenderData->viewer_width * VIEWER_XPAD_RATIO));
+       int layout_height = viewerRenderData->viewer_height;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "path = %s", path);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "imageType = %d", imageType);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "layout_width = %d, layout_height = %d", layout_width, layout_height);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, viewerRenderData->viewer_content_box == NULL, "Invalid argument: viewer_content_box is NULL");
+       /*get image's content size*/
+       Evas *evas = evas_object_evas_get(viewerRenderData->main_window);
+       Evas_Object *img = evas_object_image_add(evas);
+       evas_object_image_file_set(img, path, NULL);
+       evas_object_image_size_get(img, &contnet_w, &contnet_h);
+       evas_object_del(img);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "image_width = %d, image_height = %d", contnet_w, contnet_h);
+
+       /*create icon above image_layout*/
+       ic = elm_icon_add(viewerRenderData->layout_main);
+
+       if (imageType == VIEWER_IMAGE_TYPE_DRM_IMAGE_RAW_DATA) {        // rendering drm image by raw data
+               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_ICON);
+       } else if (imageType == VIEWER_IMAGE_TYPE_UNSUPPORTED) {
+               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_UNSUPPORT_ICON);
+       } else {
+               if (!strcmp(path, MSG_VIEWER_IMAGE_DRM_ICON))
+                       elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_ICON);
+               else
+                       elm_image_file_set(ic, path, NULL);
+       }
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, ic == NULL, "attached image add failed");
+
+       if (elm_image_animated_available_get(ic)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Animated image");
+               elm_image_animated_set(ic, EINA_TRUE);
+               elm_image_animated_play_set(ic, EINA_TRUE);
+       }
+
+       /*check and set image size*/
+       if (contnet_w > layout_width) {
+               tmp_w = layout_width;
+               tmp_h = contnet_h * layout_width / contnet_w;
+
+               if (tmp_h > layout_height) {
+                       tmp_w = contnet_w * layout_height / contnet_h;
+                       tmp_h = layout_height;
+               }
+               evas_object_size_hint_min_set(ic, tmp_w, tmp_h);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "tmp_w = %d, tmp_h = %d", tmp_w, tmp_h);
+       } else if (contnet_h > layout_height) {
+               tmp_w = contnet_w * layout_height / contnet_h;
+               tmp_h = layout_height;
+
+               if (tmp_w > layout_width) {
+                       tmp_w = layout_width;
+                       tmp_h = contnet_h * layout_width / contnet_w;
+               }
+               evas_object_size_hint_min_set(ic, tmp_w, tmp_h);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "tmp_w = %d, tmp_h = %d", tmp_w, tmp_h);
+       } else if (contnet_w <= layout_width && contnet_h <= layout_height) {
+               if (imageType == VIEWER_IMAGE_TYPE_DRM_IMAGE_RAW_DATA || imageType == VIEWER_IMAGE_TYPE_NORMAL)
+                       evas_object_size_hint_min_set(ic, contnet_w , contnet_h);
+               else
+                       evas_object_size_hint_min_set(ic, 88 , 88);             //DRM, Unsupported ICON size
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid case");
+       }
+
+       elm_object_part_content_set(viewerRenderData->viewer_content_box, "viewer.body.content", ic);
+
+       if (imageType == VIEWER_IMAGE_TYPE_DRM_SOUND) {
+               if (!viewerRenderData->insert_sound_icon) {
+                       elm_box_pack_end(viewerRenderData->viewer_content_box, ic);     /*sound drm icon*/
+                       viewerRenderData->insert_sound_icon = ic;
+                       evas_object_show(ic);
+               } else {
+                       evas_object_del(ic);
+               }
+       } else if (imageType == VIEWER_IMAGE_TYPE_UNSUPPORTED) {
+               if (!viewerRenderData->insert_unsupported_icon) {
+                       elm_box_pack_end(viewerRenderData->viewer_content_box, ic);     /*unsupported file icon*/
+                       viewerRenderData->insert_unsupported_icon = ic;
+                       evas_object_show(ic);
+               } else {
+                       evas_object_del(ic);
+               }
+       } else {
+               elm_box_pack_start(viewerRenderData->viewer_content_box, ic);/*image top*/
+               viewerRenderData->insert_image = ic;
+
+               if (viewerRenderData->viewer_body_top_padding) {
+                       elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_top_padding);
+                       elm_box_pack_start(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_top_padding);
+               }
+
+               /*display region area according to Region info*/
+               MSG_BOOL istexttop = FALSE;
+               SMIL_SLIDE_INFO_S *curSlideInfo = NULL;
+               SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
+
+               curSlideInfo = _msg_smil_cont_mgr_get_slide(smilContMgrHndle, 0);
+
+               if (curSlideInfo && curSlideInfo->pageInfo)
+                       istexttop = curSlideInfo->pageInfo->isTexttop;
+
+               if (istexttop && viewerRenderData->viewer_body) {
+                       if (viewerRenderData->insert_sound_icon || viewerRenderData->insert_unsupported_icon) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Text top message. And there is a drm sound or unsupported icon");
+                               elm_box_unpack(viewerRenderData->viewer_content_box, ic);
+
+                               if (viewerRenderData->viewer_body_mid_padding) {
+                                       elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding);
+                                       elm_box_pack_after(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding, viewerRenderData->viewer_body);
+                                       elm_box_pack_after(viewerRenderData->viewer_content_box, ic, viewerRenderData->viewer_body_mid_padding);
+                               } else {
+                                       elm_box_pack_after(viewerRenderData->viewer_content_box, ic, viewerRenderData->viewer_body);
+                               }
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Text top message");
+                               elm_box_unpack(viewerRenderData->viewer_content_box, ic);
+                               elm_box_pack_end(viewerRenderData->viewer_content_box, ic);
+
+                               if (viewerRenderData->viewer_body_mid_padding) {
+                                       elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding);
+                                       elm_box_pack_after(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding, viewerRenderData->viewer_body);
+                               }
+
+                               if (viewerRenderData->viewer_body_bottom_padding) {
+                                       elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+                                       elm_box_pack_end(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+                               }
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Image top message");
+               }
+
+               evas_object_show(ic);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+MSG_BOOL _msg_smil_render_show_inserted_image(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, path == NULL, FALSE);
+
+       if (access(path, R_OK) == 0) {
+               if (msg_ui_viewer_is_drm_file(path)) {
+                       if (msg_ui_viewer_check_drm_ro_valid(path, MSG_UI_DRM_RIGHT_DISPLAY)) {
+                               //copy drm file temporarily, because drm file is created by MF with read right and drm_svc try to open file with append property.
+                               char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1]= {0,};
+                               const char *filename = (const char *)ecore_file_file_get(path);
+
+                               snprintf(dst_path, sizeof(dst_path),"%s%s", viewerRenderData->working_path, filename);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dst_path = %s", dst_path);
+
+                               char *app_drm_path = msg_ui_viewer_util_copy_file(path, dst_path);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "app_drm_path = %s", app_drm_path);
+                               //copy drm content to app path end
+
+                               /*display original image*/
+                               __msg_smil_render_show_image_file(viewerRenderData, app_drm_path, VIEWER_IMAGE_TYPE_DRM_IMAGE_RAW_DATA);
+
+                               if (app_drm_path) {
+                                       free(app_drm_path);
+                                       app_drm_path = NULL;
+                               }
+                       } else {
+                               /*there is no valid ro case*/
+                               /*display drm icon*/
+                               __msg_smil_render_show_image_file(viewerRenderData, MSG_VIEWER_IMAGE_DRM_ICON, VIEWER_IMAGE_TYPE_DRM_IMAGE);
+                       }
+               } else {        /*no drm case*/
+                       MSG_BOOL unsupported_image = FALSE;
+                       if (!strcmp(path, MSG_VIEWER_IMAGE_UNSUPPORT_ICON))
+                               unsupported_image = TRUE;
+
+                       if (unsupported_image)
+                               __msg_smil_render_show_image_file(viewerRenderData, path, VIEWER_IMAGE_TYPE_UNSUPPORTED);
+                       else
+                               __msg_smil_render_show_image_file(viewerRenderData, path, VIEWER_IMAGE_TYPE_NORMAL);
+               }
+       } else
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "access is failed");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
diff --git a/viewer/smil-player/src/msg-smil-player-interface.c b/viewer/smil-player/src/msg-smil-player-interface.c
new file mode 100755 (executable)
index 0000000..d0ce9f3
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-player-interface.h"
+#include "msg-smil-player.h"
+#include "msg-smil-util.h"
+
+/*================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_SMIL_ERROR_E msg_smil_create_smil_player(msg_struct_t msg_info_t, void *callBack, void *userData , void **instance)
+{
+       return _msg_smil_create_smil_player(msg_info_t, callBack, userData, instance);
+}
+
+void msg_smil_destroy_smil_player(void *smilhandle)
+{
+       _msg_smil_destroy_smil_player(smilhandle);
+}
+
+int msg_smil_get_current_slide_idx(void *hSmilHandle)
+{
+       return _msg_smil_get_current_slide_idx(hSmilHandle);
+}
+
+SMIL_PLAYER_STATUS_E msg_smil_get_current_slide_status(void *hSmilHandle)
+{
+       return _msg_smil_get_current_slide_status(hSmilHandle);
+}
+
+MSG_SMIL_ERROR_E msg_smil_on_slide_event_handler(void **hSmilHandle, SMIL_PLAYER_EVENT_E playerEvent)
+{
+       return _msg_smil_player_on_slide_event_handler(hSmilHandle, playerEvent);
+}
+
+MSG_BOOL msg_smil_create_smil_player_layout(void *hSmilHandle, void* layout)
+{
+       return _msg_smil_create_smil_player_layout(hSmilHandle, layout);
+}
+
+MSG_BOOL msg_smil_set_smil_player_layout_size(void *hSmilHandle, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom)
+{
+       return _msg_smil_set_smil_player_layout_size(hSmilHandle, left_top, right_bottom);
+}
+
+MSG_BOOL msg_smil_set_smil_player_help_page_cb(void *hSmilHandle, void* callBack, void *userData)
+{
+       return _msg_smil_set_smil_player_help_page_cb(hSmilHandle, callBack, userData);
+}
+
+MSG_BOOL msg_smil_set_smil_player_entry_handle_cb(void *hSmilHandle, void* callBack)
+{
+       return _msg_smil_set_smil_player_entry_handle_cb(hSmilHandle, callBack);
+}
+
+SMIL_SLIDE_INFO_S *msg_smil_get_current_slide_info(void *hSmilHandle)
+{
+       return _msg_smil_get_current_slide_info(hSmilHandle);
+}
+
+MSG_BOOL msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, MSG_BOOL bExcludeHp, double *slideTime)
+{
+       return _msg_smil_get_slide_time(hSmilHandle, slideIdx, bExcludeHp, slideTime);
+}
diff --git a/viewer/smil-player/src/msg-smil-player.c b/viewer/smil-player/src/msg-smil-player.c
new file mode 100755 (executable)
index 0000000..d192839
--- /dev/null
@@ -0,0 +1,460 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-types.h"
+#include "msg-smil-player.h"
+#include "msg-smil-util.h"
+
+/*================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_SMIL_ERROR_E _msg_smil_create_smil_player(msg_struct_t msg_info_t, void *callBack, void *userData, void **instance)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, msg_info_t == NULL, MSG_ERR_SMIL_NULL_MESSAGE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, callBack == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, userData == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, instance == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+       SMIL_HANDLER_S *smilPlayerHndle = NULL;
+
+       /*Allocate memory for smilPlayerHandler*/
+       smilPlayerHndle = (SMIL_HANDLER_S *)calloc(1, sizeof(SMIL_HANDLER_S));
+       if (smilPlayerHndle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+               *instance = NULL;
+               return MSG_ERR_SMIL_INVALID_STORAGE;
+       }
+
+       /*Create Content Manager Handler*/
+       err = _msg_smil_create_content_mgr(msg_info_t, &smilPlayerHndle->smilContMgrHndle);
+       if (err != MSG_SMIL_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_create_content_mgr is failed");
+               if (smilPlayerHndle) {
+                       free(smilPlayerHndle);
+                       smilPlayerHndle = NULL;
+               }
+               *instance = NULL;
+               return err;
+       }
+
+       /*Create Event Manager Handler*/
+       err = _msg_smil_create_event_mgr(callBack, userData, &smilPlayerHndle->smilEvntMgrHndle);
+       if (err != MSG_SMIL_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_create_event_mgr is failed");
+               _msg_smil_destroy_content_mgr(smilPlayerHndle->smilContMgrHndle);
+               smilPlayerHndle->smilContMgrHndle = NULL;
+
+               if (smilPlayerHndle) {
+                       free(smilPlayerHndle);
+                       smilPlayerHndle = NULL;
+               }
+               *instance = NULL;
+               return err;
+       }
+       smilPlayerHndle->smilEvntMgrHndle->smilhandle = smilPlayerHndle;
+
+       /*Create & Initialize Reder handle*/
+       err = _msg_smil_create_render(&smilPlayerHndle->smilRenderer);
+       if (err != MSG_SMIL_SUCCESS) {
+               _msg_smil_destroy_content_mgr(smilPlayerHndle->smilContMgrHndle);
+               smilPlayerHndle->smilContMgrHndle = NULL;
+
+               _msg_smil_destroy_event_mgr(smilPlayerHndle->smilEvntMgrHndle);
+               smilPlayerHndle->smilEvntMgrHndle = NULL;
+
+               if (smilPlayerHndle) {
+                       free(smilPlayerHndle);
+                       smilPlayerHndle = NULL;
+               }
+               *instance = NULL;
+               return err;
+       }
+       _msg_smil_init_render(smilPlayerHndle->smilRenderer);
+       smilPlayerHndle->smilRenderer->msg_info_t = msg_info_t;
+       smilPlayerHndle->smilRenderer->smilhandle = smilPlayerHndle;
+
+       *instance = (void *)smilPlayerHndle;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+
+void _msg_smil_destroy_smil_player(void *smilhandle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)smilhandle;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilPlayerHndle == NULL);
+
+       _msg_smil_destroy_content_mgr(smilPlayerHndle->smilContMgrHndle);
+       smilPlayerHndle->smilContMgrHndle = NULL;
+
+       _msg_smil_destroy_event_mgr(smilPlayerHndle->smilEvntMgrHndle);
+       smilPlayerHndle->smilEvntMgrHndle = NULL;
+
+       _msg_smil_destroy_render(smilPlayerHndle->smilRenderer);
+       smilPlayerHndle->smilRenderer = NULL;
+
+       free(smilPlayerHndle);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+SMIL_CONTENT_MGR_HANDLE_S *_msg_smil_get_content_mgr(void *hSmilHandle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, PLAYER_STATUS_NONE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return smilPlayerHndle->smilContMgrHndle;
+}
+
+
+SMIL_EVENT_MGR_HANDLE_S *_msg_smil_get_event_mgr(void *hSmilHandle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, NULL);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return smilPlayerHndle->smilEvntMgrHndle;
+}
+
+
+SMIL_RENDERER_DATA_S *_msg_smil_get_renderder(void *hSmilHandle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, NULL);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return smilPlayerHndle->smilRenderer;
+}
+
+
+int _msg_smil_get_current_slide_idx(void *hSmilHandle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, MSG_MMS_SLIDE_INVALID);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return _msg_smil_cont_mgr_get_cur_slide_idx(smilPlayerHndle->smilContMgrHndle);
+}
+
+
+SMIL_PLAYER_STATUS_E _msg_smil_get_current_slide_status(void *hSmilHandle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, PLAYER_STATUS_NONE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return _msg_smil_cont_mgr_get_cur_slide_status(smilPlayerHndle->smilContMgrHndle);
+}
+
+
+SMIL_SLIDE_INFO_S *_msg_smil_get_current_slide_info(void *hSmilHandle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, PLAYER_STATUS_NONE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return _msg_smil_cont_mgr_get_cur_slide(smilPlayerHndle->smilContMgrHndle);
+}
+
+
+MSG_SMIL_ERROR_E _msg_smil_player_on_slide_event_handler(void **hSmilHandle, SMIL_PLAYER_EVENT_E playerEvent)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, playerEvent == PLAYER_EVENT_NONE, MSG_ERR_SMIL_EVENT_NONE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)(*hSmilHandle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilPlayerHndle == NULL, MSG_ERR_SMIL_NULL_MESSAGE);
+       int slideIdx = 0;
+       int mediaType = MMS_SMIL_MEDIA_INVALID;
+       MSG_SMIL_ERROR_E err = MSG_ERR_SMIL_UNKNOWN;
+       SMIL_TIMER_CALLBACK_DATA_S *slideTimerCbData = _msg_smil_event_mgr_get_timer_cb_data(smilPlayerHndle->smilEvntMgrHndle);
+       SMIL_SLIDE_EVENT_PARAM_S *curSlideParam = _msg_smil_event_mgr_get_slide_event_param_data(smilPlayerHndle->smilEvntMgrHndle);
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, slideTimerCbData == NULL, MSG_ERR_SMIL_NULL_MESSAGE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlideParam == NULL, MSG_ERR_SMIL_NULL_MESSAGE);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "playerEvent = %d", playerEvent);
+
+       if (_msg_smil_event_mgr_is_slide_active(smilPlayerHndle->smilEvntMgrHndle)) {
+               SMIL_SLIDE_INFO_S *curSlide = _msg_smil_cont_mgr_get_cur_slide(smilPlayerHndle->smilContMgrHndle);
+               if (curSlide->pageInfo) {
+                       // if page has audio or video, image and text is not needed to checked.
+                       if (curSlide->pageInfo->hasAudio )
+                               mediaType = MMS_SMIL_MEDIA_AUDIO;
+                       else if (curSlide->pageInfo->hasVideo)
+                               mediaType = MMS_SMIL_MEDIA_VIDEO;
+                       else if (curSlide->pageInfo->hasImage)
+                               mediaType = MMS_SMIL_MEDIA_IMG;
+                       else if (curSlide->pageInfo->hasText)
+                               mediaType = MMS_SMIL_MEDIA_TEXT;
+               }
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mediaType = %d", mediaType);
+       }
+
+       /* PREV/NEXT EVENT skip condition*/
+       if (playerEvent == PLAYER_EVENT_PREV_SLIDE) {
+               if (_msg_smil_event_mgr_is_slide_active(smilPlayerHndle->smilEvntMgrHndle)) {
+                       int current_slide = _msg_smil_cont_mgr_get_cur_slide_idx(smilPlayerHndle->smilContMgrHndle);
+                       int total_page_count = _msg_smil_cont_mgr_get_total_slide_count(smilPlayerHndle->smilContMgrHndle);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "current_slide = %d, total_page_count = %d", current_slide, total_page_count);
+
+                       /*if first page or multipart.mixed message, then return err*/
+                       if (current_slide == 0 || total_page_count == 0) {
+                               return MSG_ERR_SMIL_INVALID_SLIDE;
+                       }
+               }
+       } else if (playerEvent == PLAYER_EVENT_NEXT_SLIDE) {
+               if (_msg_smil_event_mgr_is_slide_active(smilPlayerHndle->smilEvntMgrHndle)) {
+                       MSG_BOOL isLastSlide = curSlideParam->isLastSlide;
+                       int total_page_count = _msg_smil_cont_mgr_get_total_slide_count(smilPlayerHndle->smilContMgrHndle);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "isLastSlide = %d, total_page_count = %d", isLastSlide, total_page_count);
+
+                       /*if last page or multipart.mixed message, then return err*/
+                       if (isLastSlide || total_page_count == 0) {
+                               return MSG_ERR_SMIL_INVALID_SLIDE;
+                       }
+               }
+       }
+
+       switch (playerEvent) {
+       case PLAYER_EVENT_ROTATE_WINDOW:
+               _msg_smil_render_rotate_video_window(smilPlayerHndle->smilRenderer);
+               err = MSG_SMIL_SUCCESS;
+               break;
+       case PLAYER_EVENT_PLAY:
+               _msg_smil_event_mgr_set_video_endofstream(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               if (slideTimerCbData->timerHandle) {
+                       err = _msg_smil_event_mgr_stop_slide(smilPlayerHndle->smilEvntMgrHndle);
+                       if (err != MSG_SMIL_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed: PLAYER_EVENT_PLAY_SLIDE");
+                               return err;
+                       }
+
+                       _msg_smil_render_stop_playing_file(smilPlayerHndle->smilRenderer);
+               }
+
+               _msg_smil_event_mgr_set_current_slide(smilPlayerHndle->smilEvntMgrHndle, NULL);
+               _msg_smil_event_mgr_set_page_action_type(smilPlayerHndle->smilEvntMgrHndle, PAGE_EVENT_PLAY);
+               err = _msg_smil_event_mgr_play_slide(smilPlayerHndle->smilEvntMgrHndle, slideIdx);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed: PLAYER_EVENT_PLAY");
+                       return err;
+               }
+               break;
+       case PLAYER_EVENT_PREVIEW_PLAY:
+               _msg_smil_event_mgr_set_video_endofstream(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               if (slideTimerCbData->timerHandle) {
+                       err = _msg_smil_event_mgr_stop_slide(smilPlayerHndle->smilEvntMgrHndle);
+                       if (err != MSG_SMIL_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed: PLAYER_EVENT_PLAY_SLIDE");
+                               return err;
+                       }
+
+                       _msg_smil_render_stop_playing_file(smilPlayerHndle->smilRenderer);
+               }
+
+               _msg_smil_cont_mgr_delete_help_page(smilPlayerHndle->smilRenderer->msg_info_t, smilPlayerHndle->smilContMgrHndle);      //delete help page
+               _msg_smil_event_mgr_set_current_slide(smilPlayerHndle->smilEvntMgrHndle, NULL);
+               _msg_smil_event_mgr_set_page_action_type(smilPlayerHndle->smilEvntMgrHndle, PAGE_EVENT_PLAY);
+               err = _msg_smil_event_mgr_play_slide(smilPlayerHndle->smilEvntMgrHndle, slideIdx);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed: PLAYER_EVENT_PREVIEW_PLAY");
+                       return err;
+               }
+               break;
+       case PLAYER_EVENT_PAUSE:
+               err = _msg_smil_event_mgr_pause_slide(smilPlayerHndle->smilEvntMgrHndle);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_pause_slide is failed: PLAYER_EVENT_PAUSE");
+                       if (slideTimerCbData->timerHandle == NULL) {
+                               int pageIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilPlayerHndle->smilContMgrHndle);
+                               _msg_smil_event_mgr_resume_slide(smilPlayerHndle->smilEvntMgrHndle, pageIdx);
+                       }
+
+                       return err;
+               }
+
+               if (_msg_smil_render_pause(smilPlayerHndle->smilRenderer, mediaType) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_pause is failed: PLAYER_EVENT_PAUSE");
+                       int pageIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilPlayerHndle->smilContMgrHndle);
+                       _msg_smil_event_mgr_resume_slide(smilPlayerHndle->smilEvntMgrHndle, pageIdx);
+
+                       return MSG_ERR_SMIL_PAUSE_SLIDE_RENDER_FAILURE;
+               }
+               break;
+       case PLAYER_EVENT_STOP:
+               /*reset event media info*/
+               _msg_smil_event_mgr_set_is_video_media(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_unsupported_content(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_invalid_video_ro(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_video_endofstream(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_last_slide(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_last_slide_is_help_page(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+
+               err = _msg_smil_event_mgr_stop_slide(smilPlayerHndle->smilEvntMgrHndle);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed: PLAYER_EVENT_STOP");
+                       return err;
+               }
+               _msg_smil_render_stop_playing_file(smilPlayerHndle->smilRenderer);
+               break;
+       case PLAYER_EVENT_RESUME:
+               err = _msg_smil_event_mgr_resume_slide(smilPlayerHndle->smilEvntMgrHndle, _msg_smil_cont_mgr_get_cur_slide_idx(smilPlayerHndle->smilContMgrHndle));
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_resume_slide is failed; PLAYER_EVENT_RESUME");
+                       return err;
+               }
+
+               if (_msg_smil_render_resume(smilPlayerHndle->smilRenderer, mediaType) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_resume is failed: PLAYER_EVENT_RESUME");
+                       return MSG_ERR_SMIL_RESUME_SLIDE_RENDER_FAILURE;
+               }
+               break;
+       case PLAYER_EVENT_NEXT_SLIDE:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PLAYER_EVENT_NEXT_SLIDE");
+               err = _msg_smil_event_mgr_stop_slide(smilPlayerHndle->smilEvntMgrHndle);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed: PLAYER_EVENT_NEXT_SLIDE");
+                       return err;
+               }
+               _msg_smil_render_stop_playing_file(smilPlayerHndle->smilRenderer);
+
+               _msg_smil_event_mgr_set_is_video_media(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_unsupported_content(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_invalid_video_ro(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_video_endofstream(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_page_action_type(smilPlayerHndle->smilEvntMgrHndle, PAGE_EVENT_MOVE_TO_NEXT);
+
+               /*Incrementing the slide index in order to move to the next slide*/
+               slideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilPlayerHndle->smilContMgrHndle);
+               slideIdx += MSG_MMS_SMIL_SLIDEIDX_INCREMENT;
+               _msg_smil_cont_mgr_set_cur_slide_idx(smilPlayerHndle->smilContMgrHndle, slideIdx);
+
+               err = _msg_smil_event_mgr_play_slide(smilPlayerHndle->smilEvntMgrHndle, slideIdx);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed : PLAYER_EVENT_NEXT_SLIDE");
+                       slideIdx -= MSG_MMS_SMIL_SLIDEIDX_INCREMENT;
+                       _msg_smil_cont_mgr_set_cur_slide_idx(smilPlayerHndle->smilContMgrHndle, slideIdx);
+                       return err;
+               }
+               break;
+       case PLAYER_EVENT_PREV_SLIDE:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PLAYER_EVENT_PREV_SLIDE");
+               err = _msg_smil_event_mgr_stop_slide(smilPlayerHndle->smilEvntMgrHndle);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_stop_slide is failed : PLAYER_EVENT_PREV_SLIDE");
+                       return err;
+               }
+               _msg_smil_render_stop_playing_file(smilPlayerHndle->smilRenderer);
+
+               _msg_smil_event_mgr_set_is_video_media(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_unsupported_content(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_invalid_video_ro(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_video_endofstream(smilPlayerHndle->smilEvntMgrHndle, FALSE);
+               _msg_smil_event_mgr_set_page_action_type(smilPlayerHndle->smilEvntMgrHndle, PAGE_EVENT_MOVE_TO_PREV);
+
+               /*Decrement the Slide Index for fetching the appropriate slide content.*/
+               slideIdx = _msg_smil_cont_mgr_get_cur_slide_idx(smilPlayerHndle->smilContMgrHndle);
+               slideIdx -= MSG_MMS_SMIL_SLIDEIDX_DECREMENT;
+               _msg_smil_cont_mgr_set_cur_slide_idx(smilPlayerHndle->smilContMgrHndle, slideIdx);
+
+               err = _msg_smil_event_mgr_play_slide(smilPlayerHndle->smilEvntMgrHndle, slideIdx);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_event_mgr_play_slide is failed : PLAYER_EVENT_PREV_SLIDE");
+                       slideIdx += MSG_MMS_SMIL_SLIDEIDX_DECREMENT;
+                       _msg_smil_cont_mgr_set_cur_slide_idx(smilPlayerHndle->smilContMgrHndle, slideIdx);
+                       return err;
+               }
+               break;
+       case PLAYER_EVENT_DESTROY_SCREEN:
+               _msg_smil_event_mgr_set_render_event(smilPlayerHndle->smilEvntMgrHndle, SMIL_RENDER_EVENT_DESTROY_SCREEN);
+               err = _msg_smil_render_on_slide_render_handler(smilPlayerHndle->smilRenderer, curSlideParam);
+               if (err != MSG_SMIL_SUCCESS)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_on_slide_render_handler failed err = %d", err);
+               break;
+       case PLAYER_EVENT_MUTE:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PLAYER_EVENT_MUTE");
+               _msg_smil_render_set_mute(smilPlayerHndle->smilRenderer, TRUE);
+               err = MSG_SMIL_SUCCESS;
+               break;
+       default:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "In default");
+               err = MSG_ERR_SMIL_UNKNOWN;
+               break;
+       }
+
+       if (err != MSG_SMIL_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_player_on_slide_event_handler is failed %d", err);
+               return err;
+       }
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+
+MSG_BOOL _msg_smil_create_smil_player_layout(void *hSmilHandle, void *layout)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, layout == NULL, FALSE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return _msg_smil_render_create_layout(smilPlayerHndle->smilRenderer, (Evas_Object *)layout);
+}
+
+
+MSG_BOOL _msg_smil_set_smil_player_layout_size(void *hSmilHandle, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, FALSE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return _msg_smil_render_set_layout_size(smilPlayerHndle->smilRenderer, left_top, right_bottom);
+}
+
+MSG_BOOL _msg_smil_set_smil_player_help_page_cb(void *hSmilHandle, void *callBack, void *userData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, callBack == NULL, FALSE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return _msg_smil_render_set_help_page_cb(smilPlayerHndle->smilRenderer, callBack, userData);
+}
+
+MSG_BOOL _msg_smil_set_smil_player_entry_handle_cb(void *hSmilHandle, void *callBack)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, callBack == NULL, FALSE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return _msg_smil_render_set_entry_handle_cb(smilPlayerHndle->smilRenderer, callBack);
+}
+
+MSG_BOOL _msg_smil_get_slide_time(void *hSmilHandle, int slideIdx, MSG_BOOL bExcludeHp, double *slideTime)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, hSmilHandle == NULL, PLAYER_STATUS_NONE);
+       SMIL_HANDLER_S *smilPlayerHndle = (SMIL_HANDLER_S *)hSmilHandle;
+
+       return _msg_smil_cont_mgr_get_slide_time(smilPlayerHndle->smilContMgrHndle, slideIdx, bExcludeHp, slideTime);
+}
\ No newline at end of file
diff --git a/viewer/smil-player/src/msg-smil-render.c b/viewer/smil-player/src/msg-smil-render.c
new file mode 100755 (executable)
index 0000000..df218de
--- /dev/null
@@ -0,0 +1,883 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-render.h"
+#include "msg-smil-player.h"
+#include "msg-smil-content-manager.h"
+#include "msg-smil-util.h"
+#include "msg-ui-image-resource.h"
+#include "msg-ui-viewer-utility.h"
+#include <Elementary.h>
+
+/*==================================================================================================
+ *                                                             FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static void __msg_smil_render_set_bg_color(SMIL_RENDERER_DATA_S *viewerRenderData);
+static char *__msg_smil_render_get_cur_page_media_file_name(SMIL_RENDERER_DATA_S *viewerRenderData, int media_type);
+/*================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_SMIL_ERROR_E _msg_smil_create_render(SMIL_RENDERER_DATA_S **viewerRenderData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+
+       *viewerRenderData = (SMIL_RENDERER_DATA_S *)calloc(1, sizeof(SMIL_RENDERER_DATA_S));
+       if (*viewerRenderData == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+               return MSG_ERR_SMIL_INVALID_STORAGE;
+       }
+
+       (*viewerRenderData)->working_path = msg_ui_viewer_util_create_working_dir();
+       if (!(*viewerRenderData)->working_path) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_create_working_dir is failed");
+               return MSG_ERR_SMIL_INVALID_STORAGE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "*viewerRenderData->working_path= %s", (*viewerRenderData)->working_path);
+
+       return MSG_SMIL_SUCCESS;
+}
+
+
+void _msg_smil_destroy_render(SMIL_RENDERER_DATA_S *viewerRenderData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL);
+
+       if (viewerRenderData->viewer_body_text) {
+               free(viewerRenderData->viewer_body_text);
+               viewerRenderData->viewer_body_text = NULL;
+       }
+
+       if (viewerRenderData->video_image) {
+               evas_object_del(viewerRenderData->video_image);
+               viewerRenderData->video_image = NULL;
+       }
+
+       if (viewerRenderData->attach_list) {
+               evas_object_del(viewerRenderData->attach_list);
+               viewerRenderData->attach_list = NULL;
+       }
+
+       if (viewerRenderData->viewer_bg_rect) {
+               evas_object_del(viewerRenderData->viewer_bg_rect);
+               viewerRenderData->viewer_bg_rect = NULL;
+       }
+
+       if (viewerRenderData->video_update_timer) {
+               ecore_timer_del(viewerRenderData->video_update_timer);
+               viewerRenderData->video_update_timer = NULL;
+       }
+
+       if (viewerRenderData->video_resize_idle) {
+               ecore_idler_del(viewerRenderData->video_resize_idle);
+               viewerRenderData->video_resize_idle = NULL;
+       }
+
+       if (viewerRenderData->video_duration_idle) {
+               ecore_idler_del(viewerRenderData->video_duration_idle);
+               viewerRenderData->video_duration_idle = NULL;
+       }
+
+       if (viewerRenderData->video_eos_idle) {
+               ecore_idler_del(viewerRenderData->video_eos_idle);
+               viewerRenderData->video_eos_idle = NULL;
+       }
+
+       if (viewerRenderData->working_path) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "remove temp path");
+               ecore_file_recursive_rm(viewerRenderData->working_path);
+               g_free(viewerRenderData->working_path);
+               viewerRenderData->working_path = NULL;
+       }
+
+       free(viewerRenderData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+MSG_BOOL _msg_smil_init_render(SMIL_RENDERER_DATA_S *viewerRenderData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+
+       viewerRenderData->viewer_bg_rect = NULL;
+       viewerRenderData->msg_info_t = NULL;
+       viewerRenderData->viewer_body_text = NULL;
+       viewerRenderData->viewer_content_box = NULL;
+       viewerRenderData->insert_image = NULL;
+       viewerRenderData->viewer_scroller = NULL;
+       viewerRenderData->viewer_body = NULL;
+       viewerRenderData->smilhandle = NULL;
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_NONE;
+       viewerRenderData->viewer_height = 0;
+       viewerRenderData->viewer_width = 0;
+       viewerRenderData->viewer_landscape_width = 0;
+       viewerRenderData->viewer_landscape_height = 0;
+       viewerRenderData->button_height = 0;
+       viewerRenderData->video_width = 0;
+       viewerRenderData->video_height = 0;
+       viewerRenderData->video_duration = 0;
+       viewerRenderData->video_resize_idle = NULL;
+       viewerRenderData->video_duration_idle = NULL;
+       viewerRenderData->video_eos_idle = NULL;
+       viewerRenderData->bgcolor = 0;
+       viewerRenderData->ismute = FALSE;
+       viewerRenderData->insert_sound_icon = NULL;
+       viewerRenderData->insert_unsupported_icon = NULL;
+       viewerRenderData->main_window = ug_get_window();
+       viewerRenderData->main_win_rotate = 0;
+       viewerRenderData->video_image = NULL;
+       viewerRenderData->video_image_buffer = NULL;
+       viewerRenderData->is_skip_frame = FALSE;
+
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_render_set_layout_size(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, left_top == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, right_bottom == NULL, FALSE);
+       int window_width = 0;
+       int window_height = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "left_top (%d, %d)", left_top->x, left_top->y);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "right_bottom (%d, %d)", right_bottom->x, right_bottom->y);
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &window_width, &window_height);
+
+       viewerRenderData->viewer_width = window_width;
+       viewerRenderData->viewer_height = right_bottom->y - left_top->y;
+       viewerRenderData->viewer_landscape_width = window_height;
+       viewerRenderData->viewer_landscape_height = window_width - left_top->y;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_width = %d, viewer_height = %d", viewerRenderData->viewer_width, viewerRenderData->viewer_height);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "landscape viewer_width = %d, landscape viewer_height = %d", viewerRenderData->viewer_landscape_width, viewerRenderData->viewer_landscape_height);
+
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_render_create_layout(SMIL_RENDERER_DATA_S *viewerRenderData, Evas_Object *layout)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, layout == NULL, FALSE);
+       Evas_Object *eo = NULL;
+       Evas_Object *entry = NULL;
+
+       /* clean up all object */
+       if (viewerRenderData->viewer_scroller) {
+               evas_object_del(viewerRenderData->viewer_scroller);
+               viewerRenderData->viewer_scroller = NULL;
+       }
+
+       if (viewerRenderData->viewer_content_box) {
+               evas_object_del(viewerRenderData->viewer_content_box);
+               viewerRenderData->viewer_content_box = NULL;
+       }
+
+       if (viewerRenderData->viewer_body_top_padding) {
+               evas_object_del(viewerRenderData->viewer_body_top_padding);
+               viewerRenderData->viewer_body_top_padding = NULL;
+       }
+
+       if (viewerRenderData->viewer_body_mid_padding) {
+               evas_object_del(viewerRenderData->viewer_body_mid_padding);
+               viewerRenderData->viewer_body_mid_padding = NULL;
+       }
+
+       if (viewerRenderData->viewer_body) {
+               evas_object_del(viewerRenderData->viewer_body);
+               viewerRenderData->viewer_body = NULL;
+       }
+
+       if (viewerRenderData->viewer_body_bottom_padding) {
+               evas_object_del(viewerRenderData->viewer_body_bottom_padding);
+               viewerRenderData->viewer_body_bottom_padding = NULL;
+       }
+
+       if (viewerRenderData->viewer_audio_name_rect) {
+               evas_object_del(viewerRenderData->viewer_audio_name_rect);
+               viewerRenderData->viewer_audio_name_rect = NULL;
+       }
+
+       if (viewerRenderData->viewer_bg_rect) {
+               evas_object_del(viewerRenderData->viewer_bg_rect);
+               viewerRenderData->viewer_bg_rect = NULL;
+       }
+
+       viewerRenderData->layout_main = layout;
+
+       /* get current slide */
+       SMIL_SLIDE_INFO_S *cur_slide = _msg_smil_get_current_slide_info(viewerRenderData->smilhandle);
+       if (!cur_slide || !cur_slide->pageInfo) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_get_current_slide_info is failed");
+               return FALSE;
+       }
+
+       /*create scroller*/
+       eo = elm_scroller_add(layout);
+       evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(eo, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_scroller_bounce_set(eo, FALSE, TRUE);
+       elm_scroller_policy_set(eo, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+       elm_object_part_content_set(layout, "viewer.body", eo);
+       evas_object_show(eo);
+       viewerRenderData->viewer_scroller = eo;
+
+       /* create content box */
+       viewerRenderData->viewer_content_box = eo = elm_box_add(layout);
+       evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(eo, EVAS_HINT_FILL, 0.0);
+       elm_box_homogeneous_set(eo, EINA_FALSE);
+       evas_object_show(eo);
+       elm_object_content_set(viewerRenderData->viewer_scroller, viewerRenderData->viewer_content_box);
+
+       /* create body top padding */
+       viewerRenderData->viewer_body_top_padding = eo = elm_layout_add(layout);
+       elm_layout_file_set(viewerRenderData->viewer_body_top_padding, MSG_VIEWER_THEME, "viewer_body_outer_margin");
+       evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(eo, EVAS_HINT_FILL, 0.0);
+       elm_box_pack_start(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_top_padding);
+       evas_object_show(eo);
+
+       /* create body mid padding - check the condition for mid padding area should be created or not */
+       if ((cur_slide->pageInfo->hasText || cur_slide->pageInfo->isHelpPage) && (cur_slide->pageInfo->hasImage || cur_slide->pageInfo->hasVideo)) {
+               viewerRenderData->viewer_body_mid_padding = eo = elm_layout_add(layout);
+               elm_layout_file_set(viewerRenderData->viewer_body_mid_padding, MSG_VIEWER_THEME, "viewer_body_inner_margin");
+               evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, 0.0);
+               evas_object_size_hint_align_set(eo, EVAS_HINT_FILL, 0.0);
+               elm_box_pack_after(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding, viewerRenderData->viewer_body_top_padding);
+               evas_object_show(eo);
+       }
+
+       /* create entry */
+       if (cur_slide->pageInfo->hasText || cur_slide->pageInfo->isHelpPage) {
+               entry = elm_entry_add(layout);
+               elm_entry_entry_set(entry, "");
+               elm_entry_editable_set(entry, 0);
+               elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+               elm_entry_magnifier_disabled_set(entry, EINA_TRUE);
+               evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               elm_box_pack_end(viewerRenderData->viewer_content_box, entry);
+               evas_object_show(entry);
+               viewerRenderData->viewer_body = entry;
+       }
+
+       /* create body bottom padding */
+       viewerRenderData->viewer_body_bottom_padding = eo = elm_layout_add(layout);
+       elm_layout_file_set(viewerRenderData->viewer_body_bottom_padding, MSG_VIEWER_THEME, "viewer_body_outer_margin");
+       evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(eo, EVAS_HINT_FILL, 0.0);
+       elm_box_pack_end(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+       evas_object_show(eo);
+
+       /* create audio name panel */
+       if (cur_slide->pageInfo->hasAudio) {
+               char *file_name = NULL;
+               Evas_Object *layout = elm_layout_add(viewerRenderData->layout_main);
+               elm_layout_file_set(layout, MSG_VIEWER_THEME, "audio/panel");
+               evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(layout);
+               viewerRenderData->viewer_audio_name_rect = layout;
+
+               file_name = __msg_smil_render_get_cur_page_media_file_name(viewerRenderData, MMS_SMIL_MEDIA_AUDIO);
+               if (file_name[0] != '\0') {
+                       edje_object_part_text_set(_EDJ(viewerRenderData->viewer_audio_name_rect), "audio.text.filename", file_name);
+                       free(file_name);
+               }
+
+               elm_object_part_content_set(viewerRenderData->layout_main, "viewer.swallow.audio.panel", viewerRenderData->viewer_audio_name_rect);
+               evas_object_show(viewerRenderData->viewer_audio_name_rect);
+       }
+
+       /* bg color rectangular */
+       eo = evas_object_rectangle_add(evas_object_evas_get(layout));
+       evas_object_color_set(eo, 255, 0, 0, 255);
+       elm_object_part_content_set(layout,  "viewer.body.bg", eo);
+       evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(eo, EVAS_HINT_FILL, 0.0);
+       evas_object_show(eo);
+       viewerRenderData->viewer_bg_rect = eo;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+MSG_BOOL _msg_smil_render_set_help_page_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack, void *userData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, callBack == NULL, FALSE);
+
+       viewerRenderData->appUserData = userData;
+       viewerRenderData->appSmilHelpPageCb = (pfnSMILHelpPageCb)callBack;
+
+       return TRUE;
+}
+
+MSG_BOOL _msg_smil_render_set_entry_handle_cb(SMIL_RENDERER_DATA_S *viewerRenderData, void *callBack)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, callBack == NULL, FALSE);
+
+       viewerRenderData->appSmilFontSizeCb = (pfnSMILFontSizeCb)callBack;
+
+       return TRUE;
+}
+
+MSG_SMIL_ERROR_E _msg_smil_render_on_slide_render_handler(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, eventStatus == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+
+       switch (eventStatus->renderEvent) {
+       case SMIL_RENDER_EVENT_PAGE_PLAY_START:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMIL_RENDER_EVENT_PAGE_PLAY_START");
+
+               /*create smil rendering layout again*/
+               if (_msg_smil_render_create_layout(viewerRenderData, viewerRenderData->layout_main) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_create_layout is failed");
+                       return MSG_ERR_SMIL_UI_DISPLAY_FAIURE;
+               }
+
+               if (viewerRenderData->insert_image) {
+                       evas_object_del(viewerRenderData->insert_image);
+                       viewerRenderData->insert_image = NULL;
+               }
+
+               if (viewerRenderData->video_image) {
+                       evas_object_del(viewerRenderData->video_image);
+                       viewerRenderData->video_image = NULL;
+                       viewerRenderData->video_image_buffer = NULL;
+               }
+
+               if (viewerRenderData->insert_sound_icon) {
+                       evas_object_del(viewerRenderData->insert_sound_icon);
+                       viewerRenderData->insert_sound_icon = NULL;
+               }
+
+               if (viewerRenderData->insert_unsupported_icon) {
+                       evas_object_del(viewerRenderData->insert_unsupported_icon);
+                       viewerRenderData->insert_unsupported_icon = NULL;
+               }
+
+               if (viewerRenderData->attach_list) {
+                       evas_object_del(viewerRenderData->attach_list);
+                       viewerRenderData->attach_list = NULL;
+               }
+
+               _msg_smil_render_stop_playing_file((void *)viewerRenderData);
+
+               if (viewerRenderData->viewer_body) {
+                       elm_entry_entry_set(viewerRenderData->viewer_body, "");
+
+                       /* disable copy and paste popup */
+                       elm_entry_context_menu_disabled_set(viewerRenderData->viewer_body, EINA_TRUE);
+                       elm_entry_magnifier_disabled_set(viewerRenderData->viewer_body, EINA_TRUE);
+                       elm_entry_select_none(viewerRenderData->viewer_body);
+               }
+
+               /* set viewer bg color */
+               __msg_smil_render_set_bg_color(viewerRenderData);
+               break;
+
+       case SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START");
+
+               /*create smil rendering layout again*/
+               if (_msg_smil_render_create_layout(viewerRenderData, viewerRenderData->layout_main) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_create_layout is failed");
+                       return MSG_ERR_SMIL_UI_DISPLAY_FAIURE;
+               }
+
+               if (viewerRenderData->insert_image) {
+                       evas_object_del(viewerRenderData->insert_image);
+                       viewerRenderData->insert_image = NULL;
+               }
+
+               if (viewerRenderData->video_image) {
+                       evas_object_del(viewerRenderData->video_image);
+                       viewerRenderData->video_image = NULL;
+                       viewerRenderData->video_image_buffer = NULL;
+               }
+
+               if (viewerRenderData->insert_sound_icon) {
+                       evas_object_del(viewerRenderData->insert_sound_icon);
+                       viewerRenderData->insert_sound_icon = NULL;
+               }
+
+               if (viewerRenderData->insert_unsupported_icon) {
+                       evas_object_del(viewerRenderData->insert_unsupported_icon);
+                       viewerRenderData->insert_unsupported_icon = NULL;
+               }
+
+               if (viewerRenderData->attach_list) {
+                       evas_object_del(viewerRenderData->attach_list);
+                       viewerRenderData->attach_list = NULL;
+               }
+
+               _msg_smil_render_stop_playing_file((void *)viewerRenderData);
+
+               if (viewerRenderData->viewer_body) {
+                       elm_entry_entry_set(viewerRenderData->viewer_body, "");
+
+                       /* disable copy and paste popup */
+                       elm_entry_context_menu_disabled_set(viewerRenderData->viewer_body, EINA_TRUE);
+                       elm_entry_magnifier_disabled_set(viewerRenderData->viewer_body, EINA_TRUE);
+                       elm_entry_select_none(viewerRenderData->viewer_body);
+               }
+
+               /* set viewer bg color */
+               __msg_smil_render_set_bg_color(viewerRenderData);
+               /*move scroll to top*/
+               elm_scroller_region_show(viewerRenderData->viewer_scroller, 0, 0, 0, 0);
+               break;
+
+       case SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE");
+               _msg_smil_render_stop_playing_file((void *)viewerRenderData);
+               return MSG_SMIL_SUCCESS;
+
+       case SMIL_RENDER_EVENT_PAUSE_CURRENT_PAGE:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMIL_RENDER_EVENT_PAUSE_CURRENT_PAGE");
+               return MSG_SMIL_SUCCESS;
+
+       case SMIL_RENDER_EVENT_DESTROY_SCREEN:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMIL_RENDER_EVENT_DESTROY_SCREEN");
+               if (viewerRenderData->viewer_body)
+                       elm_entry_entry_set(viewerRenderData->viewer_body, "");
+
+               if (viewerRenderData->insert_image) {
+                       evas_object_del(viewerRenderData->insert_image);
+                       viewerRenderData->insert_image = NULL;
+               }
+
+               if (viewerRenderData->video_image) {
+                       evas_object_del(viewerRenderData->video_image);
+                       viewerRenderData->video_image = NULL;
+                       viewerRenderData->video_image_buffer = NULL;
+               }
+
+               if (viewerRenderData->insert_sound_icon) {
+                       evas_object_del(viewerRenderData->insert_sound_icon);
+                       viewerRenderData->insert_sound_icon = NULL;
+               }
+
+               if (viewerRenderData->insert_unsupported_icon) {
+                       evas_object_del(viewerRenderData->insert_unsupported_icon);
+                       viewerRenderData->insert_unsupported_icon = NULL;
+               }
+               return MSG_SMIL_SUCCESS;
+
+       default:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "abnormal renderEvent : %d", eventStatus->renderEvent);
+               return MSG_ERR_SMIL_EVENT_NONE;
+       }
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, eventStatus->singleSlideInfo == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, eventStatus->singleSlideInfo->commonData == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
+       int pageCnt = _msg_smil_cont_mgr_get_total_slide_count(smilContMgrHndle);
+       msg_list_handle_t attachlist_info = NULL;
+       msg_struct_t attach_info = NULL;
+       int nAttachCnt = 0;
+       msg_struct_t mmsData_h = _msg_smil_cont_mgr_get_mms_body_struct_handle(smilContMgrHndle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, mmsData_h == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+
+       msg_get_list_handle(mmsData_h, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist_info);
+       nAttachCnt = msg_list_length(attachlist_info);
+
+       if (pageCnt > 0) {                      //Multipart related
+               if (_msg_smil_cont_mgr_is_cur_slide_help_page(eventStatus->singleSlideInfo)) {
+                       char buf_font[VIEWER_TEXT_FONT_LEN + 1] = {0, };
+                       snprintf(buf_font, sizeof(buf_font), "<color=#6ca8c7>%s",
+                                                               ((nAttachCnt > 1) ? dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE") : dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE")));
+
+                       _msg_smil_render_set_entry_handle(viewerRenderData);
+
+                       if (viewerRenderData->viewer_body)
+                               elm_entry_entry_set(viewerRenderData->viewer_body, buf_font);
+
+                       _msg_smil_render_show_help_page_attach_list(viewerRenderData);
+
+                       if (viewerRenderData->viewer_body_mid_padding) {
+                               elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding);
+                               elm_box_pack_after(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding, viewerRenderData->viewer_body);
+                       }
+
+                       if (viewerRenderData->viewer_body_bottom_padding) {
+                               elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+                               elm_box_pack_end(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+                       }
+
+               } else {
+                       if (_msg_smil_render_reload_mms(viewerRenderData, eventStatus) == FALSE) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_reload_mms is failed");
+                               return MSG_ERR_SMIL_UI_DISPLAY_FAIURE;
+                       }
+               }
+       } else {        //Multipart mixed
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "eventStatus->singleSlideInfo->commonData->attachCnt : %d", eventStatus->singleSlideInfo->commonData->attachCnt);
+
+               if (_msg_smil_cont_mgr_is_cur_slide_help_page(eventStatus->singleSlideInfo)) {
+                       int mediaType = 0;
+
+                       if (nAttachCnt == 1) {
+                               attach_info = (msg_struct_t)msg_list_nth_data(attachlist_info, 0);
+
+                               msg_get_int_value(attach_info, MSG_MMS_ATTACH_MIME_TYPE_INT, &mediaType);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "attachment mediatype : 0x%x", mediaType);
+
+                               if (mediaType == MIME_TEXT_TXT || mediaType == MIME_TEXT_PLAIN) {
+                                       char strFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+                                       msg_get_str_value(attach_info, MSG_MMS_ATTACH_FILEPATH_STR, strFilePath, sizeof(strFilePath));
+                                       _msg_smil_render_show_inserted_text(viewerRenderData, strFilePath);
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Attachment is not TEXT type, Display help page");
+
+                                       char buf_font[VIEWER_TEXT_FONT_LEN + 1] = {0, };
+                                       snprintf(buf_font, sizeof(buf_font), "<color=#6ca8c7>%s",
+                                                                               dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"));
+
+                                       _msg_smil_render_set_entry_handle(viewerRenderData);
+
+                                       if (viewerRenderData->viewer_body)
+                                               elm_entry_entry_set(viewerRenderData->viewer_body, buf_font);
+
+                                       _msg_smil_render_show_help_page_attach_list(viewerRenderData);
+
+                                       if (viewerRenderData->viewer_body_mid_padding) {
+                                               elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding);
+                                               elm_box_pack_after(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding, viewerRenderData->viewer_body);
+                                       }
+
+                                       if (viewerRenderData->viewer_body_bottom_padding) {
+                                               elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+                                               elm_box_pack_end(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+                                       }
+                               }
+                       } else {                //nAttachCnt > 1
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Attachment count is over than 1, Display help page");
+
+                               char buf_font[VIEWER_TEXT_FONT_LEN + 1] = {0, };
+                               snprintf(buf_font, sizeof(buf_font), "<font_size=%d color=#6ca8c7>%s",
+                                                                       MMS_SMIL_FONT_SIZE_NORMAL,
+                                                                       dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE"));
+
+                               _msg_smil_render_set_entry_handle(viewerRenderData);
+
+                               if (viewerRenderData->viewer_body)
+                                       elm_entry_entry_set(viewerRenderData->viewer_body, buf_font);
+
+                               _msg_smil_render_show_help_page_attach_list(viewerRenderData);
+
+                               if (viewerRenderData->viewer_body_mid_padding) {
+                                       elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding);
+                                       elm_box_pack_after(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_mid_padding, viewerRenderData->viewer_body);
+                               }
+
+                               if (viewerRenderData->viewer_body_bottom_padding) {
+                                       elm_box_unpack(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+                                       elm_box_pack_end(viewerRenderData->viewer_content_box, viewerRenderData->viewer_body_bottom_padding);
+                               }
+                       }
+               } else {
+                       if (viewerRenderData->viewer_body)
+                               elm_entry_entry_set(viewerRenderData->viewer_body, "");
+               }
+       }
+
+       return MSG_SMIL_SUCCESS;
+}
+
+
+MSG_BOOL _msg_smil_render_reload_mms(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_SLIDE_EVENT_PARAM_S *eventStatus)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, eventStatus->singleSlideInfo == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, eventStatus->singleSlideInfo->commonData == NULL, FALSE);
+
+       int i = 0;
+       int bgColor;
+       int width;
+       int height;
+       int pageCnt;
+       int mediaCnt;
+       int mediaType;
+
+       MSG_BOOL isTextUsed = FALSE;
+       MSG_BOOL isImageUsed = FALSE;
+       MSG_BOOL isSoundUsed = FALSE;
+       bool widthPercent;
+       bool heightPercent;
+
+       char szFileName[MSG_FILENAME_LEN_MAX] = {0,};
+       char szFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+       char regionId[MAX_SMIL_REGION_ID] = {0,};
+
+       /*Get smil handler*/
+       SMIL_HANDLER_S *smilHandle = (SMIL_HANDLER_S *)viewerRenderData->smilhandle;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilHandle == NULL, FALSE);
+
+       /*Get contentMgr */
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilHandle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, FALSE);
+
+       /*Get Mms body data */
+       msg_struct_t msgMmsBody = _msg_smil_cont_mgr_get_mms_body_struct_handle(smilContMgrHndle);
+
+       msg_get_int_value(msgMmsBody, MSG_MMS_ROOTLAYOUT_WIDTH_INT, &width);
+       msg_get_bool_value(msgMmsBody, MSG_MMS_ROOTLAYOUT_WIDTH_PERCENT_BOOL, &widthPercent);
+       msg_get_int_value(msgMmsBody, MSG_MMS_ROOTLAYOUT_HEIGHT_INT, &height);
+       msg_get_bool_value(msgMmsBody, MSG_MMS_ROOTLAYOUT_HEIGHT_PERCENT_BOOL, &heightPercent);
+       msg_get_int_value(msgMmsBody, MSG_MMS_ROOTLAYOUT_BGCOLOR_INT, &bgColor);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ROOT LAYOUT INFO width: %d %s height: %d %s bgColor:0x%x",
+                width,
+                widthPercent ? "%" : "",
+                height,
+                heightPercent ? "%" : "",
+                bgColor);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page : %d/%d",
+               eventStatus->singleSlideInfo->pageIdx + 1, eventStatus->singleSlideInfo->commonData->pageCnt);
+
+       /*Get page list handler of current page of callbackData*/
+       msg_list_handle_t pagelist_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+       pageCnt = msg_list_length(pagelist_info);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, pageCnt == 0, FALSE, "page length is 0, no pages is current message");
+
+       /*Get page handler */
+       msg_struct_t page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, eventStatus->singleSlideInfo->pageIdx);
+
+       /*Get media list handler */
+       msg_list_handle_t medialist_info = _msg_smil_cont_mgr_get_page_media_list_handle(page_info);
+       mediaCnt = msg_list_length(medialist_info);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "%d page's media count: %d",
+               eventStatus->singleSlideInfo->pageIdx + 1, mediaCnt);
+
+       for (i = 0 ; i < mediaCnt ; ++i) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "eventStatus->timerDataMedia[%d].actionTypeOnMedia = %d", i, eventStatus->timerDataMedia[i].actionTypeOnMedia);
+               if (eventStatus->timerDataMedia[i].actionTypeOnMedia == MEDIA_EVENT_BEGIN) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MEDIA_EVENT_BEGIN : ");
+                       msg_struct_t media_info = _msg_smil_cont_mgr_get_page_nth_media_struct_handle(medialist_info, eventStatus->timerDataMedia[i].mediaIdx);
+
+                       if (media_info) {
+                               bzero(szFileName, sizeof(szFileName));
+                               bzero(szFilePath, sizeof(szFilePath));
+
+                               _msg_smil_cont_mgr_get_media_str_value(media_info, MSG_MMS_MEDIA_FILENAME_STR, szFileName);
+                               _msg_smil_cont_mgr_get_media_str_value(media_info, MSG_MMS_MEDIA_FILEPATH_STR, szFilePath);
+                               _msg_smil_cont_mgr_get_media_str_value(media_info, MSG_MMS_MEDIA_REGION_ID_STR, regionId);
+                               _msg_smil_cont_mgr_get_media_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "\n%d media's filename: %s\n%d media's filepath: %s\n%d media's regionId: %s\n%d media's mediatype: 0x%04X",
+                                                                       eventStatus->timerDataMedia[i].mediaIdx,
+                                                                       szFileName,
+                                                                       eventStatus->timerDataMedia[i].mediaIdx,
+                                                                       szFilePath,
+                                                                       eventStatus->timerDataMedia[i].mediaIdx,
+                                                                       regionId,
+                                                                       eventStatus->timerDataMedia[i].mediaIdx,
+                                                                       mediaType);
+
+                               switch (mediaType) {
+                               case MMS_SMIL_MEDIA_IMG:
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MMS_SMIL_MEDIA_IMG");
+                                       if (isImageUsed) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Image media is already added");
+                                               break;
+                                       } else
+                                               isImageUsed = TRUE;
+
+                                       if (_msg_smil_render_show_inserted_image(viewerRenderData, szFilePath) == FALSE)
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_show_inserted_image is failed");
+
+                                       break;
+                               case MMS_SMIL_MEDIA_TEXT:
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MMS_SMIL_MEDIA_TEXT");
+                                       if (isTextUsed) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Text media is already added");
+                                               break;
+                                       } else
+                                               isTextUsed = TRUE;
+
+                                       if (_msg_smil_render_show_inserted_text(viewerRenderData, szFilePath) == FALSE)
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_show_inserted_text is failed");
+
+                                       break;
+                               case MMS_SMIL_MEDIA_AUDIO:
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MMS_SMIL_MEDIA_AUDIO");
+                                       if (isSoundUsed) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Sound media is already added");
+                                               break;
+                                       } else
+                                               isSoundUsed = TRUE;
+
+                                       if (_msg_smil_render_show_inserted_audio(viewerRenderData, szFilePath, eventStatus->singleSlideInfo->slideStatus) == FALSE) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_show_inserted_audio is failed");
+                                               return FALSE;
+                                       }
+
+                                       break;
+                               case MMS_SMIL_MEDIA_VIDEO:
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MMS_SMIL_MEDIA_VIDEO");
+                                       if (isSoundUsed || isImageUsed) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Image or sound media is already added");
+                                               break;
+                                       } else {
+                                               isSoundUsed = TRUE;
+                                               isImageUsed = TRUE;
+                                       }
+
+                                       if (_msg_smil_render_show_inserted_video(viewerRenderData, szFilePath, eventStatus->singleSlideInfo->slideStatus) == FALSE) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_show_inserted_video is failed");
+                                               return FALSE;   /*returning FALSE is required to register timer in case of failed video play*/
+                                       }
+
+                                       break;
+                               case MMS_SMIL_MEDIA_INVALID:    /*unsupported content*/
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MMS_SMIL_MEDIA_INVALID");
+                                       if (_msg_smil_render_show_inserted_image(viewerRenderData, MSG_VIEWER_IMAGE_UNSUPPORT_ICON) == FALSE)
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "_msg_smil_render_show_inserted_image is failed");
+
+                                       break;
+                               default:
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+
+static void __msg_smil_render_set_bg_color(SMIL_RENDERER_DATA_S *viewerRenderData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL);
+
+       /*Get smil handler*/
+       SMIL_HANDLER_S *smilHandle = (SMIL_HANDLER_S *)viewerRenderData->smilhandle;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilHandle == NULL);
+
+       /*Get contentMgr */
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(smilHandle);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL);
+
+       /*Get Mms body data */
+       msg_struct_t msgMmsBody = _msg_smil_cont_mgr_get_mms_body_struct_handle(smilContMgrHndle);
+       int bgColor = 0;
+
+       msg_list_handle_t page_list_t = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+
+       if (page_list_t)
+               msg_get_int_value(msgMmsBody, MSG_MMS_ROOTLAYOUT_BGCOLOR_INT, &bgColor);
+       else    //Mixed msg
+               bgColor = 0xffffff;             // set WHITE directly
+
+       SMIL_RGB_UNION rgbUnion;
+
+       memset(&rgbUnion, 0x00, sizeof(SMIL_RGB_UNION));
+       rgbUnion.rgbColor = bgColor;
+
+       memset(&viewerRenderData->bgcolor, 0x00, sizeof(VIEWER_COLORREF));
+       viewerRenderData->bgcolor = bgColor;
+
+       evas_object_color_set(viewerRenderData->viewer_bg_rect, rgbUnion.rgbQuad.rgbRed, rgbUnion.rgbQuad.rgbGreen, rgbUnion.rgbQuad.rgbBlue, 255);
+       evas_object_show(viewerRenderData->viewer_bg_rect);
+}
+
+
+MSG_BOOL _msg_smil_render_set_mute(SMIL_RENDERER_DATA_S *viewerRenderData, MSG_BOOL ismute)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+
+       viewerRenderData->ismute = ismute;
+       return TRUE;
+}
+
+static char *__msg_smil_render_get_cur_page_media_file_name(SMIL_RENDERER_DATA_S *viewerRenderData, int media_type)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, NULL);
+       SMIL_SLIDE_INFO_S *cur_slide = NULL;
+       char *return_str = NULL;
+       char file_name[MSG_FILENAME_LEN_MAX] = {0};
+
+       cur_slide = _msg_smil_get_current_slide_info(viewerRenderData->smilhandle);
+       if (!cur_slide || !cur_slide->pageInfo) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_get_current_slide_info is failed");
+               return NULL;
+       }
+
+       /* get page list handle */
+       msg_list_handle_t pagelist_info = NULL;
+       msg_get_list_handle(viewerRenderData->msg_info_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+
+       /*Get page*/
+       msg_struct_t page_info = NULL;
+       page_info = msg_list_nth_data(pagelist_info, cur_slide->pageIdx);
+
+       /* get media list handle */
+       msg_list_handle_t media_list_info = NULL;
+       msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&media_list_info);
+
+       int media_cnt = 0;
+       media_cnt = msg_list_length(media_list_info);
+
+       int index = 0;
+       for (index = 0; index < media_cnt; index++) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+               int mediaType = 0;
+
+               /* get media handle */
+               msg_struct_t media_info = NULL;
+               media_info = msg_list_nth_data(media_list_info, index);
+
+               if (media_info == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_info is Null");
+                       return NULL;
+               }
+
+               msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+               if (mediaType == media_type) {
+                       msg_get_str_value(media_info, MSG_MMS_MEDIA_FILENAME_STR, file_name, sizeof(file_name));
+                       return_str = g_strdup(file_name);
+                       break;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return return_str;              //it should be freed after use
+}
\ No newline at end of file
diff --git a/viewer/smil-player/src/msg-smil-text-render.c b/viewer/smil-player/src/msg-smil-text-render.c
new file mode 100755 (executable)
index 0000000..a80a80f
--- /dev/null
@@ -0,0 +1,262 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-types.h"
+#include "msg-smil-player.h"
+#include "msg-smil-render.h"
+#include "msg-smil-util.h"
+
+#include "msg-ui-common-utility.h"
+#include <Elementary.h>
+
+/*==================================================================================================
+ *                                                             FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static MSG_BOOL __msg_smil_render_get_font_style(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_FONT_SYTLE_S *pfont_style);
+
+/*================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_BOOL _msg_smil_render_show_inserted_text(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData->viewer_body == NULL, FALSE);
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, path == NULL, FALSE);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "path : (%s)", path);
+       FILE *fp = NULL;
+
+       fp = fopen(path, "r");
+       if (fp) {
+               struct stat stat_buf;
+               if (stat(path, &stat_buf) != 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Getting file information Error");
+                       fclose(fp);
+                       return FALSE;
+               }
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "FileSize : %d", (int)stat_buf.st_size);
+               if (stat_buf.st_size > 0) {
+                       if (viewerRenderData->viewer_body_text) {
+                               free(viewerRenderData->viewer_body_text);
+                               viewerRenderData->viewer_body_text = NULL;
+                       }
+
+                       viewerRenderData->viewer_body_text = (void *)calloc(1, (size_t)stat_buf.st_size + 1);
+
+                       if (viewerRenderData->viewer_body_text == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                               fclose(fp);
+                               return FALSE;
+                       } else {
+                               int result = fread(viewerRenderData->viewer_body_text, sizeof(char), stat_buf.st_size, fp);
+                               if (result != stat_buf.st_size) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "fread is failed result : %d", result);
+                               }
+                       }
+
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_body_text : (%s)", (char *)viewerRenderData->viewer_body_text);
+
+                       if (viewerRenderData->viewer_body_text[0] != '\0') {
+                               /*get font color and style*/
+                               SMIL_FONT_SYTLE_S text_style = {{0},};
+                               if (__msg_smil_render_get_font_style(viewerRenderData, &text_style) == FALSE) {
+                                       snprintf(text_style.font_color, sizeof(text_style.font_color), "%s", "#000000");
+                               }
+
+                               /* get marked up text */
+                               Eina_Strbuf *markup_text = NULL;
+                               markup_text = msg_common_get_markup_text((const char *)viewerRenderData->viewer_body_text, text_style.font_color, text_style.font_style);
+
+                               _msg_smil_render_set_entry_handle(viewerRenderData);
+
+                               if (markup_text) {
+                                       elm_entry_entry_set(viewerRenderData->viewer_body, eina_strbuf_string_get(markup_text));
+                                       eina_strbuf_free(markup_text);
+                               } else {
+                                       elm_entry_entry_set(viewerRenderData->viewer_body, "");
+                               }
+                       }
+
+                       /*free message text after displaying*/
+                       if (viewerRenderData->viewer_body_text) {
+                               free(viewerRenderData->viewer_body_text);
+                               viewerRenderData->viewer_body_text = NULL;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid file size");
+               }
+
+               fclose(fp);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "File Open Error");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_get_font_style(SMIL_RENDERER_DATA_S *viewerRenderData, SMIL_FONT_SYTLE_S *pfont_style)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, pfont_style == NULL, FALSE);
+       int pageCnt = 0;
+       int mediaCnt = 0;
+       int mediaTotalCnt = 0;
+       int font_size = 0;
+       char szColor[VIEWER_RGB_COLOR_BUF_LEN] = {0x00, };
+       char font_style[VIEWER_FONT_STYLE_BUF_LEN + 1] = {0, };
+       SMIL_RGB_UNION rgbUnion;
+       SMIL_SLIDE_INFO_S *curSlide = NULL;
+       SMIL_EVENT_MGR_HANDLE_S *smilEvntMgrHndle = _msg_smil_get_event_mgr(viewerRenderData->smilhandle);
+
+       curSlide = _msg_smil_event_mgr_get_current_slide(smilEvntMgrHndle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlide == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, curSlide->commonData == NULL, FALSE);
+
+       memset(&rgbUnion, 0x00, sizeof(SMIL_RGB_UNION));
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "curSlide->commonData->pageCnt : %d", curSlide->commonData->pageCnt);
+
+       /*Get contentMgr */
+       SMIL_CONTENT_MGR_HANDLE_S *smilContMgrHndle = _msg_smil_get_content_mgr(viewerRenderData->smilhandle);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, smilContMgrHndle == NULL, FALSE);
+
+       /*Get page list handler of current page of callbackData*/
+       msg_list_handle_t pagelist_info = _msg_smil_cont_mgr_get_page_list_handle(smilContMgrHndle);
+       pageCnt = msg_list_length(pagelist_info);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, pageCnt == 0, FALSE);
+
+       /*Get page handler */
+       msg_struct_t page_info = _msg_smil_cont_mgr_get_nth_page_struct_handle(pagelist_info, curSlide->pageIdx);
+
+       /*Get media list handler */
+       msg_list_handle_t medialist_info = _msg_smil_cont_mgr_get_page_media_list_handle(page_info);
+       mediaTotalCnt = msg_list_length(medialist_info);
+
+       /*get font size, color and style*/
+       if (curSlide->commonData->pageCnt != 0) {       /*multipart.related*/
+               mediaCnt = 0;
+
+               while (mediaCnt < mediaTotalCnt) {
+                       msg_struct_t media_info = _msg_smil_cont_mgr_get_page_nth_media_struct_handle(medialist_info, mediaCnt);
+                       int mediaType = 0;
+                       //msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+                       _msg_smil_cont_mgr_get_media_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+                       if (mediaType == MMS_SMIL_MEDIA_TEXT) {
+                               msg_struct_t sText;
+                               int fontSize = 0;
+                               int fontColor = 0;
+                               msg_get_struct_handle(media_info, MSG_MMS_MEDIA_SMIL_TEXT_HND, &sText);
+
+                               msg_get_int_value(sText, MSG_MMS_SMIL_TEXT_SIZE_INT, &fontSize);
+
+                               if (fontSize == 0)
+                                       msg_set_int_value(sText, MSG_MMS_SMIL_TEXT_SIZE_INT, MMS_SMIL_FONT_SIZE_NORMAL);
+
+                               msg_get_int_value(sText, MSG_MMS_SMIL_TEXT_SIZE_INT, &fontSize);
+                               font_size = fontSize;
+
+                               msg_get_int_value(sText, MSG_MMS_SMIL_TEXT_COLOR_INT, &fontColor);
+                               rgbUnion.rgbColor = fontColor;
+
+                               /*change font color when both bgcolor and font color are same(black or white case)*/
+                               if ((viewerRenderData->bgcolor == fontColor) &&
+                                       (viewerRenderData->bgcolor == 0xffffff)) {
+                                       rgbUnion.rgbColor = 0x000000;   /*chagne font color as black*/
+                               } else if ((viewerRenderData->bgcolor == fontColor) &&
+                                                       (viewerRenderData->bgcolor == 0x000000)) {
+                                       rgbUnion.rgbColor = 0xffffff;   /*chagne font color as white*/
+                               }
+
+                               _msg_smil_util_get_color_string(szColor, sizeof(szColor), rgbUnion.rgbQuad.rgbRed, rgbUnion.rgbQuad.rgbGreen, rgbUnion.rgbQuad.rgbBlue);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sMedia.sText.nSize = %d", fontSize);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font color : #%s", szColor);
+
+                               bool bBold;
+                               bool bUnderline;
+                               bool bItalic;
+
+                               msg_get_bool_value(sText, MSG_MMS_SMIL_TEXT_BOLD_BOOL, &bBold);
+                               msg_get_bool_value(sText, MSG_MMS_SMIL_TEXT_UNDERLINE_BOOL, &bUnderline);
+                               msg_get_bool_value(sText, MSG_MMS_SMIL_TEXT_ITALIC_BOOL, &bItalic);
+
+                               if (bBold) {
+                                       snprintf(font_style, sizeof(font_style), "hilight");
+                               } else if (bUnderline) {
+                                       snprintf(font_style, sizeof(font_style), "link");
+                               } else if (bItalic) {
+                                       snprintf(font_style, sizeof(font_style), "em");
+                               }
+
+                               break;
+                       }
+
+                       mediaCnt++;
+               }
+
+               /*rollback mediaList pointer*/
+               //curSlide->page->mediaList = tmpmedia;
+       } else {        /*invalide message without page info or multipart.mixed message*/
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid message or multipart.related message");
+               font_size = MMS_SMIL_FONT_SIZE_NORMAL;
+
+               if (viewerRenderData->bgcolor == 0xffffff) {
+                       rgbUnion.rgbColor = 0x000000;   /*set font color as black(0x000000)*/
+               } else {
+                       rgbUnion.rgbColor = 0xffffff;   /*set font color as white(0xffffff)*/
+               }
+               _msg_smil_util_get_color_string(szColor, sizeof(szColor), rgbUnion.rgbQuad.rgbRed, rgbUnion.rgbQuad.rgbGreen, rgbUnion.rgbQuad.rgbBlue);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font color : #%s", szColor);
+       }
+
+       if (font_size == 0)
+               font_size = MMS_SMIL_FONT_SIZE_NORMAL;
+
+       /*get pfont_style*/
+       snprintf(pfont_style->font_color, sizeof(pfont_style->font_color), "#%s", szColor);
+
+       if (font_style[0] != '\0')
+               snprintf(pfont_style->font_style, sizeof(pfont_style->font_style), "%s", font_style);
+
+       return TRUE;
+}
+
+void _msg_smil_render_show_help_page_attach_list(SMIL_RENDERER_DATA_S *viewerRenderData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, viewerRenderData->viewer_content_box == NULL, "Invalid argument: viewer_content_box is NULL");
+
+       if (viewerRenderData->appSmilHelpPageCb)
+               viewerRenderData->appSmilHelpPageCb(viewerRenderData->appUserData, (void**)&(viewerRenderData->attach_list), viewerRenderData->viewer_content_box);
+}
+
+void _msg_smil_render_set_entry_handle(SMIL_RENDERER_DATA_S *viewerRenderData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, viewerRenderData->viewer_body == NULL, "Invalid argument: viewer_body is NULL");
+
+       if (viewerRenderData->appSmilFontSizeCb)
+               viewerRenderData->appSmilFontSizeCb(viewerRenderData->appUserData, viewerRenderData->viewer_body);
+}
diff --git a/viewer/smil-player/src/msg-smil-util.c b/viewer/smil-player/src/msg-smil-util.c
new file mode 100755 (executable)
index 0000000..2787b7c
--- /dev/null
@@ -0,0 +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://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-smil-util.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/*==================================================================================================
+ *                                                             FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static void __msg_smil_util_get_color_code(int color_dec);
+
+/*================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+char hexa[VIEWER_COLOR_HEXA_BUFFER_LEN];
+char colorMap[VIEWER_HEXA_SIZE] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+static void __msg_smil_util_get_color_code(int color_dec)
+{
+       int col = color_dec;
+       int rem = 0;
+
+       memset(hexa, 0x00, sizeof(hexa));
+       rem = col % VIEWER_HEXA_SIZE;
+       col = col / VIEWER_HEXA_SIZE;
+       hexa[0] = colorMap[col];
+       hexa[1] = colorMap[rem];
+}
+
+
+void _msg_smil_util_get_color_string(char *pszBuffer, int pszBuffer_len, int r, int g, int b)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, pszBuffer == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, pszBuffer_len < VIEWER_RGB_COLOR_BUF_LEN);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "r : %x, g : %x, b : %x", r, g, b);
+       char col_hex[VIEWER_RGB_COLOR_BUF_LEN] = {0x0, };
+
+       __msg_smil_util_get_color_code(r);
+       col_hex[0] = hexa[0];
+       col_hex[1] = hexa[1];
+       __msg_smil_util_get_color_code(g);
+       col_hex[2] = hexa[0];
+       col_hex[3] = hexa[1];
+       __msg_smil_util_get_color_code(b);
+       col_hex[4] = hexa[0];
+       col_hex[5] = hexa[1];
+       col_hex[6] = '\0';
+
+       strncpy(pszBuffer, col_hex, strlen(col_hex));
+}
+
+
+int _msg_smil_util_find_smallest(int num1, int num2)
+{
+       return num1 > num2 ? num2 : num1;
+}
+
+
diff --git a/viewer/src/msg-ui-viewer-callback.c b/viewer/src/msg-ui-viewer-callback.c
new file mode 100755 (executable)
index 0000000..34421e7
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                             INCLUDE HEADERS
+*==================================================================================================*/
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-common-utility.h"
+
+/*==================================================================================================
+ *                                                                     FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+void msg_ui_viewer_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       Evas_Object *base = NULL;
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+
+       base = ug_get_layout(ug);
+       if (!base) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "base is NULL");
+               ug_destroy(ug);
+               return;
+       }
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(base);
+
+               break;
+       case UG_MODE_FRAMEVIEW:
+               elm_object_part_content_set(viewer_main_data->layout_main, "content", base);
+               break;
+    default:
+               break;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+void msg_ui_viewer_result_cb(ui_gadget_h ug, service_h service, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+}
+
+
+Eina_Bool msg_ui_viewer_ug_quit(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, ECORE_CALLBACK_CANCEL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       if (viewer_main_data != NULL) {
+               /*destroy captured image and resource.*/
+               if (viewer_main_data->SmilHandle) {
+                       msg_smil_destroy_smil_player(viewer_main_data->SmilHandle);
+                       msg_ui_viewer_set_smilhandle(viewer_main_data, NULL);
+
+                       if (viewer_main_data->player_view)
+                               viewer_main_data->player_view->SmilHandle = NULL;
+               }
+
+               if (viewer_main_data->viewer_ug) {
+                       msg_common_reset_font_size("entry");
+                       ug_destroy_me(viewer_main_data->viewer_ug);
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "viewer_main_data is NULL");
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+void msg_ui_viewer_destroy_cb(ui_gadget_h ug, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+
+       if (viewer_main_data->loaded_ug) {
+               ug_destroy(viewer_main_data->loaded_ug);
+               viewer_main_data->loaded_ug = NULL;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
+       if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
+               if (viewer_main_data->player_view) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PLAYER launch_cmd : %d, cmd_type : %d", viewer_main_data->player_view->launch_cmd, viewer_main_data->player_view->cmd_type);
+                       if (viewer_main_data->player_view->launch_cmd == MSG_VIEWER_LOAD_OTHER_UG_MODE &&
+                                       (viewer_main_data->player_view->cmd_type == MSG_VIEWER_CMD_LOAD_CONTACT)) {
+
+                               /*update title button text after contact sync */
+                               msg_ui_viewer_title_update(viewer_main_data->player_view, MSG_VIEWER_OPTION_CONTACT);
+                       }
+
+                       bool isHelpText = (!viewer_main_data->player_view->smil_eventStatus) ? false : ((viewer_main_data->player_view->smil_eventStatus->isHelpSlide) ? true : false);
+                       MSG_VIEWER_ENTRY_TYPE_E entry_type = (isHelpText) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+                       msg_ui_viewer_set_font_size(viewer_main_data->player_view, entry_type, MSG_VIEWER_FONT_CHANGE_LATEST_UPDATE);
+
+                       /*connect handler again*/
+                       msg_ui_viewer_connect_handler(viewer_main_data->player_view);
+
+                       viewer_main_data->player_view->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_main_data->player_view->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
diff --git a/viewer/src/msg-ui-viewer-drm-list.c b/viewer/src/msg-ui-viewer-drm-list.c
new file mode 100755 (executable)
index 0000000..c2922f8
--- /dev/null
@@ -0,0 +1,515 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ * ==================================================================================================*/
+#include <msg.h>
+#include <msg_storage.h>
+
+#include "msg-ui-viewer-drm-list.h"
+#include "msg-ui-viewer-drm-utility.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-common-utility.h"
+#include "msg-ui-image-resource.h"
+
+#include <bundle.h>
+
+/*==================================================================================================
+ *                                                                     DEFINITIONS
+ *==================================================================================================*/
+#define DRM_LIST_DATA_KEY      "drm_list_view_data"
+
+static Elm_Genlist_Item_Class gdrm_list_itc;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static void __drm_list_back_button_cb(void *data, Evas_Object *obj, void *event_info);
+static void __drm_list_play_button_cb(void *data, Evas_Object *obj, void *event_info);
+static char *__drm_list_genlist_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__drm_list_genlist_content_get(void *data, Evas_Object *obj, const char *part);
+static void __drm_list_genlist_del(void *data, Evas_Object *obj);
+static MSG_BOOL __msg_ui_viewer_drm_list_get_message(void *data);
+static Evas_Object *__msg_ui_viewer_drm_list_create_navibar(Evas_Object *parent);
+static void __drm_list_genlist_sel_cb(void *data, Evas_Object *obj, void *event_info);
+static MSG_BOOL __msg_ui_viewer_drm_list_create_view(void *data);
+
+/*==================================================================================================
+*                                                              FUNCTION IMPLEMENTATIONS
+*==================================================================================================*/
+void msg_ui_viewer_destroy_drm_list_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+
+       if (drm_list_data->genlist) {
+               evas_object_data_del(drm_list_data->genlist, DRM_LIST_DATA_KEY);
+               evas_object_del(drm_list_data->genlist);
+               drm_list_data->genlist = NULL;
+       }
+
+
+       /*free the list*/
+       int index = 0;
+       if (drm_list_data->drm_list) {
+               MSG_VIEWER_MEDIA_INFO_S *pmedia_info = NULL;
+               int ntotal = eina_list_count(drm_list_data->drm_list);
+
+               for (index = 0; index < ntotal; index++) {
+                       pmedia_info = eina_list_nth(drm_list_data->drm_list, index);
+                       if (pmedia_info) {
+                               free(pmedia_info);
+                               pmedia_info = NULL;
+                       }
+               }
+               eina_list_free(drm_list_data->drm_list);
+               drm_list_data->drm_list = NULL;
+       }
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __drm_list_back_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+
+       msg_common_reset_font_size("entry");
+       ug_destroy_me(msg_ui_viewer_get_viewer_ug(drm_list_data->viewer_main));
+       elm_object_disabled_set(obj, TRUE);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __drm_list_play_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+
+       msg_ui_viewer_show_view_by_mode(drm_list_data->viewer_main, MSG_VIEWER_PLAYER_VIEW, MSG_VIEWER_VIEW_CMD_NONE);
+       elm_object_disabled_set(obj, TRUE);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static char *__drm_list_genlist_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_VIEWER_MEDIA_INFO_S *pmedia_info = (MSG_VIEWER_MEDIA_INFO_S *)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_name [%s]", pmedia_info->pfile_name);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_path [%s]", pmedia_info->pfile_path);
+
+       if (strcmp(part, "elm.text") == 0) {
+
+               if (strlen(pmedia_info->pfile_name)) {
+                       return strdup(pmedia_info->pfile_name);
+               }
+       }
+       return NULL;
+}
+
+static Evas_Object *__drm_list_genlist_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_VIEWER_MEDIA_INFO_S *pmedia_info = (MSG_VIEWER_MEDIA_INFO_S *)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_name [%s]", pmedia_info->pfile_name);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_path [%s]", pmedia_info->pfile_path);
+
+       if (strcmp(part, "elm.icon") == 0) {
+               Evas_Object *image = elm_icon_add(obj);
+
+               elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_SMALL_ICON);
+               evas_object_size_hint_aspect_set(image, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+               return image;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part : %s", part);
+       }
+
+       return NULL;
+}
+
+static void __drm_list_genlist_del(void *data, Evas_Object *obj)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+}
+
+MSG_BOOL msg_ui_viewer_get_invalid_ro_drm_list(msg_struct_t mms_t, Eina_List **drm_list)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, mms_t == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, drm_list == NULL, FALSE);
+
+       msg_list_handle_t pagelist_info = NULL;
+       msg_struct_t page_info = NULL;
+       msg_list_handle_t medialist_info = NULL;
+       msg_struct_t media_info = NULL;
+
+       int nPageCnt = 0;
+       int nmedia_count = 0;
+
+       msg_get_list_handle(mms_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+
+       nPageCnt = msg_list_length(pagelist_info);
+
+       if (nPageCnt) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Multipart Related");
+               int page_idx = 0;
+               char strFileName[MSG_FILENAME_LEN_MAX] = {0,};
+               char strFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+
+               for (page_idx = 0; page_idx < nPageCnt; ++page_idx) {
+                       page_info = (msg_struct_t)msg_list_nth_data(pagelist_info, page_idx);
+
+                       msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
+
+                       int mediaCnt = msg_list_length(medialist_info);
+
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page = %d, page media count = %d", page_idx, mediaCnt);
+
+                       int media_idx = 0;
+                       for (media_idx = 0; media_idx < mediaCnt; ++media_idx) {
+                               int mediaType = 0;
+                               int drmType = 0;
+                               media_info = (msg_struct_t)msg_list_nth_data(medialist_info, media_idx);
+
+                               if (!media_info) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_info is NULL");
+                                       return FALSE;
+                               }
+
+                               bzero(strFileName, sizeof(strFileName));
+                               bzero(strFilePath, sizeof(strFilePath));
+
+                               msg_get_str_value(media_info, MSG_MMS_MEDIA_FILENAME_STR, strFileName, sizeof(strFileName));
+                               msg_get_str_value(media_info, MSG_MMS_MEDIA_FILEPATH_STR, strFilePath, sizeof(strFilePath));
+
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "media filename = [%s], media filepath = [%s]", strFileName, strFilePath);
+
+                               msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+                               /*skip the text file*/
+                               if (mediaType == MMS_SMIL_MEDIA_TEXT)
+                                       continue;
+
+                               msg_get_int_value(media_info, MSG_MMS_MEDIA_DRM_TYPE_INT, &drmType);
+
+                               if (drmType != MSG_DRM_TYPE_NONE) {
+                                       char szDrmFullPath[MSG_FILEPATH_LEN_MAX] = {0,};
+                                       bzero(szDrmFullPath, sizeof(szDrmFullPath));
+                                       msg_get_str_value(media_info, MSG_MMS_MEDIA_DRM_FULLPATH_STR, szDrmFullPath, sizeof(szDrmFullPath));
+
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "drmtype: %d drmpath: %s", drmType, szDrmFullPath);
+
+                                       /*TODO : actually pMedia->szDrm2FullPath should be used to get drm type, if it works correctly*/
+                                       MSG_UI_DRM_TYPE_E drm_type = msg_ui_viewer_get_drm_type(strFilePath);
+                                       if (drm_type == MSG_UI_DRM_TYPE_SD) {
+                                               MSG_UI_DRM_RIGHT_TYPE_E permission_type;
+
+                                               if (mediaType == MMS_SMIL_MEDIA_IMG)
+                                                       permission_type = MSG_UI_DRM_RIGHT_DISPLAY;
+                                               else
+                                                       permission_type = MSG_UI_DRM_RIGHT_PLAY;
+
+                                               if (!msg_ui_viewer_check_drm_ro_valid(strFilePath, permission_type)) {
+                                                       /*append drm list*/
+                                                       MSG_VIEWER_MEDIA_INFO_S *pmedia_info = (MSG_VIEWER_MEDIA_INFO_S *)calloc(1, sizeof(MSG_VIEWER_MEDIA_INFO_S));
+                                                       if (!pmedia_info) {
+                                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                                                               return FALSE;
+                                                       }
+
+                                                       if (strlen(strFileName)) {
+                                                               strncpy(pmedia_info->pfile_name, strFileName, MSG_VIEWER_FILENAME_MAX_LEN);
+                                                       } else {
+                                                               const char *file_name = NULL;
+                                                               file_name = ecore_file_file_get(strFilePath);
+                                                               if (file_name)
+                                                                       strncpy(pmedia_info->pfile_name, file_name, MSG_VIEWER_FILENAME_MAX_LEN);
+                                                               else
+                                                                       strncpy(pmedia_info->pfile_name, strFilePath, MSG_VIEWER_FILENAME_MAX_LEN);
+                                                       }
+                                                       strncpy(pmedia_info->pfile_path, strFilePath, MSG_VIEWER_FILEPATH_MAX_LEN);
+                                                       pmedia_info->media_type = mediaType;
+
+                                                       *drm_list = eina_list_append(*drm_list, pmedia_info);
+                                                       nmedia_count++;
+                                               } else {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "valid ro content");
+                                               }
+                                       }
+                               }
+                       }
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Multipart Mixed");
+               return FALSE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "nmedia_count [%d]", nmedia_count);
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       if (nmedia_count)
+               return TRUE;
+       else
+               return FALSE;
+}
+
+static MSG_BOOL __msg_ui_viewer_drm_list_get_message(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE, "data is NULL");
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+
+       if (!drm_list_data->mms_t) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_list_data->mms_t is null");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static Evas_Object *__msg_ui_viewer_drm_list_create_navibar(Evas_Object *parent)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, parent == NULL, NULL, "parent object is NULL");
+       Evas_Object *navi_frame = NULL;
+
+       navi_frame = elm_naviframe_add(parent);
+
+       elm_object_part_content_set(parent, "elm.swallow.content", navi_frame);
+       evas_object_show(navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return navi_frame;
+}
+
+static void __drm_list_genlist_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, event_info == NULL);
+       MSG_VIEWER_MEDIA_INFO_S *pmedia_info = (MSG_VIEWER_MEDIA_INFO_S *)data;
+       Elm_Object_Item *selected_item = (Elm_Object_Item *)event_info;
+       char szurl[MSG_UI_URL_MAX_LEN + 1] = {0x00};
+       MSG_DRM_LIST_DATA_S *drm_list_data = NULL;
+       service_h svc_handle = NULL;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "media_type [%d]", pmedia_info->media_type);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_name [%s]", pmedia_info->pfile_name);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_path [%s]", pmedia_info->pfile_path);
+
+       elm_genlist_item_selected_set(selected_item, FALSE);
+       drm_list_data = (MSG_DRM_LIST_DATA_S *)evas_object_data_get(obj, DRM_LIST_DATA_KEY);
+
+       if (msg_ui_viewer_get_drm_url(pmedia_info->pfile_path, szurl, sizeof(szurl)-1)) {
+               if (drm_list_data) {
+                       drm_list_data->drm_list_cmd = MSG_VIEWER_DRM_LIST_CMD_LAUNCH_BROWSER;
+                       drm_list_data->selected_item = selected_item;
+                       drm_list_data->selected_file_info = pmedia_info;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_list_data is NULL");
+               }
+
+               /*launch browser to buy ro*/
+               if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed !!");
+               } else {
+                       service_set_operation(svc_handle, SERVICE_OPERATION_VIEW);
+                       service_set_uri(svc_handle, szurl);
+
+                       if (service_send_launch_request(svc_handle, NULL, NULL) != SERVICE_ERROR_NONE)
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed");
+
+                       service_destroy(svc_handle);
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_get_drm_url is failed");
+       }
+
+       return;
+}
+
+static MSG_BOOL __msg_ui_viewer_drm_list_create_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+       Evas_Object *genlist = NULL;
+       Evas_Object *back_button = NULL;
+       Evas_Object *toolbar = NULL;
+       int index = 0;
+       int ntotal_cnt = 0;
+       MSG_VIEWER_MEDIA_INFO_S *pmedia_info = NULL;
+       Elm_Object_Item *toolbar_item = NULL;
+
+       /*create genlist*/
+       genlist = elm_genlist_add(drm_list_data->navi_frame);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       drm_list_data->genlist = genlist;
+
+       /*set drm_list_data*/
+       evas_object_data_set(genlist, DRM_LIST_DATA_KEY, drm_list_data);
+
+       /*set items style*/
+       gdrm_list_itc.item_style  = "1text.1icon.2";
+       gdrm_list_itc.func.text_get = __drm_list_genlist_text_get;
+       gdrm_list_itc.func.content_get  = __drm_list_genlist_content_get;
+       gdrm_list_itc.func.del  = __drm_list_genlist_del;
+
+       /*add items*/
+       if (drm_list_data->drm_list) {
+               ntotal_cnt = eina_list_count(drm_list_data->drm_list);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ntotal_cnt [%d]", ntotal_cnt);
+
+               for (index = 0; index < ntotal_cnt; index++) {
+                       pmedia_info = eina_list_nth(drm_list_data->drm_list, index);
+                       elm_genlist_item_append(genlist, &gdrm_list_itc, (void *)pmedia_info, NULL, ELM_GENLIST_ITEM_NONE, __drm_list_genlist_sel_cb, (void *)pmedia_info);
+                       pmedia_info = NULL;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "There is no drm content. drm_list_data->drm_list is NULL");
+       }
+
+       /*create controlbar*/
+       toolbar = elm_toolbar_add(drm_list_data->navi_frame);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, toolbar == NULL, FALSE);
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+       toolbar_item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+       elm_object_item_disabled_set(toolbar_item, EINA_TRUE);
+       toolbar_item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+       elm_object_item_disabled_set(toolbar_item, EINA_TRUE);
+       toolbar_item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+       elm_object_item_disabled_set(toolbar_item, EINA_TRUE);
+
+       elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_PLAY, NULL, __drm_list_play_button_cb, drm_list_data);
+
+       /*create back button*/
+       back_button = elm_button_add(drm_list_data->navi_frame);
+       elm_object_style_set(back_button, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_button, "clicked", __drm_list_back_button_cb, (void *)drm_list_data);
+
+       Elm_Object_Item *navi_it = elm_naviframe_item_push(drm_list_data->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_DRM_CONTENT"), back_button, NULL, genlist, NULL);
+       elm_object_item_part_content_set(navi_it, "controlbar", toolbar);
+
+       return TRUE;
+}
+
+void msg_ui_viewer_drm_list_init(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+
+       drm_list_data->viewer_main = NULL;
+       drm_list_data->main_window = NULL;
+       drm_list_data->navi_frame = NULL;
+       drm_list_data->genlist = NULL;
+       drm_list_data->msgID = -1;
+       drm_list_data->mms_t= NULL;
+       drm_list_data->drm_list_cmd = MSG_VIEWER_DRM_LIST_CMD_NONE;
+       drm_list_data->drm_list = NULL;
+}
+
+MSG_BOOL msg_ui_viewer_create_drm_list_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+       Evas_Object *layout = NULL;
+
+       layout = msg_ui_viewer_get_main_layout(drm_list_data->viewer_main);
+       if (layout == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "layout is NULL");
+               return FALSE;
+       } else {
+               /*create Navigation Bar */
+               if (!drm_list_data->navi_frame) {
+                       drm_list_data->navi_frame = __msg_ui_viewer_drm_list_create_navibar(layout);
+                       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, drm_list_data->navi_frame == NULL, FALSE);
+                       msg_ui_viewer_set_navi_frame(drm_list_data->viewer_main, drm_list_data->navi_frame);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "navi_frame is already created");
+               }
+
+               /*get invlaid ro drm list */
+               if (!drm_list_data->drm_list) {
+                       /*get the message content*/
+                       if (__msg_ui_viewer_drm_list_get_message(drm_list_data) == FALSE) {
+                               msg_ui_viewer_destroy_drm_list_view(drm_list_data);
+                               return FALSE;
+                       }
+
+                       if (msg_ui_viewer_get_invalid_ro_drm_list(drm_list_data->mms_t, &drm_list_data->drm_list) == FALSE) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "there is no invalid drm list");
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "drm_list is already created");
+               }
+
+               /*create view layout like list, button and controlbar*/
+               if (__msg_ui_viewer_drm_list_create_view(drm_list_data) == FALSE)
+                       return FALSE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+void msg_ui_viewer_drm_list_delete_current_list(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+
+       if (drm_list_data->selected_item) {
+               elm_object_item_del(drm_list_data->selected_item);
+               drm_list_data->selected_item = NULL;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "There is no selected_item");
+       }
+}
+
+MSG_BOOL msg_ui_viewer_drm_list_check_current_ro_valid(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE, "data is NULL");
+       MSG_DRM_LIST_DATA_S *drm_list_data = (MSG_DRM_LIST_DATA_S *)data;
+
+       if (drm_list_data->selected_file_info) {
+               MSG_UI_DRM_RIGHT_TYPE_E permission_type;
+
+               if (drm_list_data->selected_file_info->media_type == MMS_SMIL_MEDIA_IMG)
+                       permission_type = MSG_UI_DRM_RIGHT_DISPLAY;
+               else
+                       permission_type = MSG_UI_DRM_RIGHT_PLAY;
+
+               if (msg_ui_viewer_check_drm_ro_valid(drm_list_data->selected_file_info->pfile_path, permission_type))
+                       return TRUE;
+               else
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_ui_viewer_check_drm_ro_valid is failed");
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "selected_file_info is NULL");
+       }
+
+       return FALSE;
+}
diff --git a/viewer/src/msg-ui-viewer-drm-utility.c b/viewer/src/msg-ui-viewer-drm-utility.c
new file mode 100755 (executable)
index 0000000..ad1205f
--- /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://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+                                                                  INCLUDE HEADERS
+* ==================================================================================================*/
+#include "msg-ui-viewer-drm-utility.h"
+#include "msg-ui-viewer-utility.h"
+#include <msg-ui-util.h>
+#include <memory.h>
+
+/*==================================================================================================
+ *                                                             FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static drm_permission_type_e __get_permission_type(MSG_UI_DRM_RIGHT_TYPE_E permission_type);
+static MSG_BOOL __get_drm_license_status(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type);
+
+/*==================================================================================================
+ *                                     FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_BOOL msg_ui_viewer_is_drm_file(const char *filepath)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       drm_bool_type_e is_drm_file = DRM_UNKNOWN;
+       int ret = DRM_RETURN_SUCCESS;
+
+       ret = drm_is_drm_file(filepath, &is_drm_file);
+
+       if (ret == DRM_RETURN_SUCCESS && is_drm_file == DRM_TRUE) {
+               return TRUE;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ret = %d", ret);
+               return FALSE;
+       }
+}
+
+static MSG_BOOL __get_drm_license_status(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, filepath == NULL, FALSE);
+
+       int ret = DRM_RETURN_SUCCESS;
+       drm_permission_type_e permission = DRM_PERMISSION_TYPE_ANY;
+       drm_license_status_e license_status = DRM_LICENSE_STATUS_UNDEFINED;
+
+       permission = __get_permission_type(permission_type);
+
+       ret = drm_get_license_status(filepath, permission, &license_status);
+       if (ret != DRM_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_get_license_status is failed ret = %d", ret);
+               return FALSE;
+       }
+
+       if (license_status != DRM_LICENSE_STATUS_VALID) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "license_status = %d", license_status);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+MSG_UI_DRM_TYPE_E msg_ui_viewer_get_drm_type(const char *filepath)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, filepath == NULL, MSG_UI_DRM_UNDEFINED);
+       MSG_UI_DRM_TYPE_E drm_type = MSG_UI_DRM_UNDEFINED;
+       drm_file_type_e file_type = DRM_TYPE_UNDEFINED;
+       int ret = DRM_RETURN_SUCCESS;
+
+       ret = drm_get_file_type(filepath, &file_type);
+       if (ret != DRM_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ret = %d", ret);
+               return drm_type;
+       }
+
+       if (file_type == DRM_TYPE_OMA_V1) {
+               drm_file_info_s drmInfo;
+               memset(&drmInfo, 0x0, sizeof(drm_file_info_s));
+
+               ret = drm_get_file_info(filepath, &drmInfo);
+               if (ret != DRM_RETURN_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ret = %d", ret);
+                       return drm_type;
+               }
+
+               switch (drmInfo.oma_info.method) {
+               case DRM_METHOD_TYPE_FORWARD_LOCK:
+                       drm_type = MSG_UI_DRM_TYPE_FL;
+                       break;
+               case DRM_METHOD_TYPE_COMBINED_DELIVERY:
+                       drm_type = MSG_UI_DRM_TYPE_CD;
+                       break;
+               case DRM_METHOD_TYPE_SEPARATE_DELIVERY:
+                       drm_type = MSG_UI_DRM_TYPE_SD;
+                       break;
+               default:
+                       drm_type = MSG_UI_DRM_UNDEFINED;
+                       break;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "This is not a DRM_TYPE_OMA_V1 type");
+       }
+
+       return drm_type;
+}
+
+MSG_BOOL msg_ui_viewer_check_drm_ro_valid(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type)
+{
+       return __get_drm_license_status(filepath, permission_type);
+}
+
+MSG_BOOL msg_ui_viewer_get_drm_url(const char *filepath, char *szurl, int szurl_len)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, filepath == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, szurl == NULL, FALSE);
+
+       int ret = DRM_RETURN_SUCCESS;
+       drm_content_info_s content_info;
+       memset(&content_info, 0x0, sizeof(drm_content_info_s));
+
+       ret = drm_get_content_info(filepath, &content_info);
+       if (ret != DRM_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_get_content_info is failed ret = %d", ret);
+               return FALSE;
+       }
+
+       strncpy(szurl, content_info.rights_url, szurl_len);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "szurl = [%s]", szurl);
+
+       return TRUE;
+}
+
+static drm_permission_type_e __get_permission_type(MSG_UI_DRM_RIGHT_TYPE_E permission_type)
+{
+       drm_permission_type_e drm_permission_type = DRM_PERMISSION_TYPE_ANY;
+
+       switch (permission_type) {
+       case MSG_UI_DRM_RIGHT_PLAY:
+               drm_permission_type = DRM_PERMISSION_TYPE_PLAY;
+               break;
+       case MSG_UI_DRM_RIGHT_DISPLAY:
+               drm_permission_type = DRM_PERMISSION_TYPE_DISPLAY;
+               break;
+       default:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid drm type");
+       }
+
+       return drm_permission_type;
+}
diff --git a/viewer/src/msg-ui-viewer-gadget.c b/viewer/src/msg-ui-viewer-gadget.c
new file mode 100755 (executable)
index 0000000..1f51b33
--- /dev/null
@@ -0,0 +1,636 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+/*==================================================================================================
+ *                                                                             INCLUDE HEADERS
+*==================================================================================================*/
+#include <msg.h>
+#include "msg-smil-player-interface.h"
+#include "msg-ui-common-utility.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-image-resource.h"
+#include <glib.h>
+#include <vconf.h>
+#include "msg-ui-common-utility.h"
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static void *__msg_ui_viewer_on_create(ui_gadget_h ug, enum ug_mode mode, service_h svc_handle, void *priv);
+static void __msg_ui_viewer_on_start(ui_gadget_h ug, service_h svc_handle, void *priv);
+static void __msg_ui_viewer_on_pause(ui_gadget_h ug, service_h svc_handle, void *priv);
+static void __msg_ui_viewer_on_resume(ui_gadget_h ug, service_h svc_handle, void *priv);
+static void __msg_ui_viewer_on_destroy(ui_gadget_h ug, service_h svc_handle, void *priv);
+static void __msg_ui_viewer_on_message(ui_gadget_h ug, service_h svc_msg_h, service_h svc_data_h, void *priv);
+static void __msg_ui_viewer_on_event(ui_gadget_h ug, enum ug_event event, service_h svc_handle, void *priv);
+static void __msg_ui_viewer_on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h svc_handle, void *priv);
+
+static void __msg_ui_viewer_reload_viewer_ug(void *data, service_h svc_handle);
+static void __msg_ui_viewer_destroy_viewer_ug(void *data);
+static unsigned int __msg_ui_viewer_convert_atoh(const char *string);
+static void __msg_ui_viewer_rotate_play_window(void *data, int rotate);
+
+/*==================================================================================================
+ *                                                                     FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+static unsigned int __msg_ui_viewer_convert_atoh(const char *string)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, string == NULL, 0);
+       unsigned int value = 0;
+       unsigned int digit = 0;
+       char c;
+
+       while ((c = *string++) != '\0') {
+               if (c >= '0' && c <= '9')
+                       digit = (unsigned int) (c - '0');
+               else if (c >= 'a' && c <= 'f')
+                       digit = (unsigned int) (c - 'a') + 10;
+               else if (c >= 'A' && c <= 'F')
+                       digit = (unsigned int) (c - 'A') + 10;
+               else
+                       break;
+
+               value = (value << 4) + digit;
+       }
+
+       return value;
+}
+
+static void __msg_ui_viewer_rotate_play_window(void *data, int rotate)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, data == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
+
+       if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
+               if (viewer_main_data->player_view) {
+                       MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
+
+                       if ((Error = msg_smil_on_slide_event_handler(&(viewer_main_data->SmilHandle), PLAYER_EVENT_ROTATE_WINDOW)) != MSG_SMIL_SUCCESS)
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "PLAYER_EVENT_ROTATE_WINDOW failed : %d", Error);
+               }
+       }
+}
+
+static void *__msg_ui_viewer_on_create(ui_gadget_h ug, enum ug_mode mode, service_h svc_handle, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, ug == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, svc_handle == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, priv == NULL, NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+       msg_error_t err = MSG_SUCCESS;
+       msg_handle_t msgHandle = NULL;
+       Evas_Object *layout = NULL;
+
+       /*Set Message Handler*/
+       err = msg_open_msg_handle(&msgHandle);
+
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_open_msg_handle failed, Error = %d", err);
+               ug_destroy_me(ug);
+               return NULL;
+       }
+
+       msg_ui_viewer_main_init(viewer_main_data);
+
+       viewer_main_data->viewer_ug = ug;
+       viewer_main_data->cbs.layout_cb = msg_ui_viewer_layout_cb;
+       viewer_main_data->cbs.result_cb = msg_ui_viewer_result_cb;
+       viewer_main_data->cbs.destroy_cb = msg_ui_viewer_destroy_cb;
+       viewer_main_data->cbs.priv = (void *)viewer_main_data;
+       viewer_main_data->msgHandle = msgHandle;
+       viewer_main_data->main_window = ug_get_window();
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_main_data->main_window == NULL, NULL);
+
+       if (svc_handle) {
+               char *mode_value = NULL;
+               /* get mode value */
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, &mode_value);
+
+               /*preview mode*/
+               if (!g_strcmp0(mode_value, MSG_BUNDLE_VALUE_PREVIEW_MODE)) {
+                       unsigned int msg_t_pointer = 0;
+                       char *preview_data = NULL;
+
+                       viewer_main_data->launchmode = MSG_VIEWER_PREVIEW_MODE;
+
+                       /* get data value */
+                       service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_PREVIEW_DATA, &preview_data);
+
+                       if (preview_data) {
+                               /* get msg_t */
+                               msg_t_pointer = __msg_ui_viewer_convert_atoh((const char*)preview_data);
+                               viewer_main_data->msg_t = (msg_struct_t)msg_t_pointer;
+
+                               /*create mms_t*/
+                               viewer_main_data->mms_t = msg_create_struct(MSG_STRUCT_MMS);
+                               err = msg_get_mms_struct(viewer_main_data->msg_t, viewer_main_data->mms_t);
+
+                               if (err != MSG_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed in get mms data handler");
+                                       return NULL;
+                               }
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "preview_data is NULL");
+                               return NULL;
+                       }
+               } else { /*normal view mode*/
+                       char *msgid = NULL;
+                       service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, &msgid);
+                       if (msgid) {
+                               viewer_main_data->msgID = (int)atoi(msgid);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msgID = %d", viewer_main_data->msgID);
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "There is no msgID");
+                               return NULL;
+                       }
+
+                       /*get msg info struct handle */
+                       viewer_main_data->msg_t = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+                       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+                       if (viewer_main_data->msgID != -1) {
+                               err = msg_get_message(viewer_main_data->msgHandle, viewer_main_data->msgID, viewer_main_data->msg_t, sendOpt);
+                               if (err != MSG_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+                                       msg_release_struct(&viewer_main_data->msg_t);
+                                       msg_release_struct(&sendOpt);
+                                       return NULL;
+                               }
+                       }
+
+                       msg_release_struct(&sendOpt);
+
+                       /*create mms_t*/
+                       viewer_main_data->mms_t = msg_create_struct(MSG_STRUCT_MMS);
+                       err = msg_get_mms_struct(viewer_main_data->msg_t, viewer_main_data->mms_t);
+
+                       if (err != MSG_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed in get mms data handler");
+                               return NULL;
+                       }
+
+                       char *msg_box_mode = NULL;
+                       /* get mode if viewer should be displayed from message box */
+                       service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MESSAGE_BOX, &msg_box_mode);
+
+                       if (msg_box_mode) {
+                               if (!g_strcmp0(msg_box_mode, MSG_BUNDLE_VALUE_MSGBOX_PROTECTED) || !g_strcmp0(msg_box_mode, MSG_BUNDLE_VALUE_MSGBOX_SPAM))
+                                       viewer_main_data->msg_box_viewer = true;
+                       }
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "data is NULL");
+               return NULL;
+       }
+
+       if (mode == UG_MODE_FULLVIEW) {
+               viewer_main_data->ug_launch_mode = MSG_UG_MODE_FULLVIEW;
+               /*create layout*/
+               Evas_Object *bg = msg_ui_viewer_create_bg(viewer_main_data, viewer_main_data->main_window);
+
+               bool show_indicator = true;
+               char *indicator_mode = NULL;
+
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_INDICATOR_MODE, &indicator_mode);
+               if (indicator_mode) {
+                       if (!g_strcmp0(indicator_mode, MSG_BUNDLE_VALUE_NO_INDICATOR))
+                               show_indicator = false;
+               }
+
+               layout = msg_ui_viewer_create_layout_main(viewer_main_data->main_window, show_indicator);
+               viewer_main_data->layout_main = layout;
+
+               if (bg)
+                       elm_object_part_content_set(layout, "elm.swallow.bg", bg);
+               else
+                       return NULL;
+       } else {
+               viewer_main_data->ug_launch_mode = MSG_UG_MODE_FRAMVIEW;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "framview is not supported");
+               return NULL;
+       }
+
+       return layout;
+}
+
+static void __msg_ui_viewer_on_start(ui_gadget_h ug, service_h svc_handle, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+
+       if (msg_ui_viewer_launch(viewer_main_data) == FALSE)
+               ug_destroy_me(viewer_main_data->viewer_ug);
+}
+
+static void __msg_ui_viewer_on_pause(ui_gadget_h ug, service_h svc_handle, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
+
+       if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
+               if (viewer_main_data->player_view) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Player view launch_cmd : %d, cmd_type : %d", viewer_main_data->player_view->launch_cmd, viewer_main_data->player_view->cmd_type);
+                       /* viewer will be paused */
+                       MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
+                       msg_ui_viewer_disconnect_handler(viewer_main_data->player_view);
+
+                       if (viewer_main_data->player_view->status == MSG_VIEWER_PLAY) {
+                               Error = msg_smil_on_slide_event_handler(&(viewer_main_data->player_view->SmilHandle), PLAYER_EVENT_PAUSE);
+                               if (Error != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", Error);
+                               }
+
+                               viewer_main_data->player_view->status = MSG_VIEWER_PAUSE;
+
+                               if (viewer_main_data->player_view->play_controller) {
+                                       edje_object_signal_emit(_EDJ(viewer_main_data->player_view->play_controller), "play", "*");
+
+                                       if (viewer_main_data->player_view->play_controller_progressbar_timer)
+                                               ecore_timer_freeze(viewer_main_data->player_view->play_controller_progressbar_timer);
+                               }
+                       }
+               }
+       }
+}
+
+static void __msg_ui_viewer_on_resume(ui_gadget_h ug, service_h svc_handle, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
+
+       if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
+               if (viewer_main_data->player_view) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Player view launch_cmd : %d, cmd_type : %d", viewer_main_data->player_view->launch_cmd, viewer_main_data->player_view->cmd_type);
+
+                       bool isHelpText = (!viewer_main_data->player_view->smil_eventStatus) ? false : ((viewer_main_data->player_view->smil_eventStatus->isHelpSlide) ? true : false);
+                       MSG_VIEWER_ENTRY_TYPE_E entry_type = (isHelpText) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+                       msg_ui_viewer_set_font_size(viewer_main_data->player_view, entry_type, MSG_VIEWER_FONT_CHANGE_LATEST_UPDATE);
+
+                       if (!viewer_main_data->player_view->popup) {
+                               /*connect handler again*/
+                               msg_ui_viewer_connect_handler(viewer_main_data->player_view);
+                       }
+
+                       if (viewer_main_data->player_view->launch_cmd == MSG_VIEWER_LOAD_OTHER_APP_MODE) {
+                               /*reset launch_cmd and cmd_type*/
+                               viewer_main_data->player_view->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                               viewer_main_data->player_view->cmd_type = MSG_VIEWER_CMD_NONE;
+                       }
+               }
+       } else if (viewer_main_data->view_mode == MSG_VIEWER_DRM_LIST_VIEW) {
+               if (viewer_main_data->drm_list_view) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "drm list view drm_list_cmd : %d", viewer_main_data->drm_list_view->drm_list_cmd);
+                       if (viewer_main_data->drm_list_view->drm_list_cmd == MSG_VIEWER_DRM_LIST_CMD_LAUNCH_BROWSER) {
+                               if (msg_ui_viewer_drm_list_check_current_ro_valid(viewer_main_data->drm_list_view))
+                                       msg_ui_viewer_drm_list_delete_current_list(viewer_main_data->drm_list_view);
+
+                               viewer_main_data->drm_list_view->drm_list_cmd = MSG_VIEWER_DRM_LIST_CMD_NONE;
+                               viewer_main_data->drm_list_view->selected_file_info = NULL;
+                       }
+               }
+       }
+}
+
+static void __msg_ui_viewer_on_destroy(ui_gadget_h ug, service_h svc_handle, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+       msg_error_t err;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->SmilHandle : %x", viewer_main_data->SmilHandle);
+
+       if (viewer_main_data->player_view) {
+               msg_ui_viewer_destroy_play_view(viewer_main_data->player_view);
+               free(viewer_main_data->player_view);
+               viewer_main_data->player_view = NULL;
+       }
+
+       if (viewer_main_data->drm_list_view) {
+               msg_ui_viewer_destroy_drm_list_view(viewer_main_data->drm_list_view);
+               free(viewer_main_data->drm_list_view);
+               viewer_main_data->drm_list_view = NULL;
+       }
+
+       if (viewer_main_data->bg) {
+               evas_object_del(viewer_main_data->bg);
+               viewer_main_data->bg = NULL;
+       }
+
+       if (viewer_main_data->layout_main) {
+               evas_object_del(viewer_main_data->layout_main);
+               viewer_main_data->layout_main = NULL;
+       }
+
+       /*destroy viewer_main data*/
+       /*free the drm list*/
+       if (viewer_main_data->drm_list) {
+               MSG_VIEWER_MEDIA_INFO_S *pmedia_info = NULL;
+               int ntotal = eina_list_count(viewer_main_data->drm_list);
+               int index = 0;
+
+               for (index = 0; index < ntotal; index++) {
+                       pmedia_info = eina_list_nth(viewer_main_data->drm_list, index);
+                       if (pmedia_info) {
+                               free(pmedia_info);
+                               pmedia_info = NULL;
+                       }
+               }
+               eina_list_free(viewer_main_data->drm_list);
+               viewer_main_data->drm_list = NULL;
+       }
+
+       if (viewer_main_data->SmilHandle) {
+               msg_smil_destroy_smil_player(viewer_main_data->SmilHandle);
+               msg_ui_viewer_set_smilhandle(viewer_main_data, NULL);
+       }
+
+       /* release msg info struct handle */
+       if (viewer_main_data->msg_t) {
+               msg_release_struct(&viewer_main_data->msg_t);
+               viewer_main_data->msg_t = NULL;
+       }
+
+       /* release mms struct handle */
+       if (viewer_main_data->mms_t) {
+               msg_release_struct(&viewer_main_data->mms_t);
+               viewer_main_data->mms_t = NULL;
+       }
+
+       if ((err = msg_close_msg_handle(&viewer_main_data->msgHandle)) != MSG_SUCCESS)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_close_msg_handle, err=[%d]", err);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_on_message(ui_gadget_h ug, service_h svc_msg_h, service_h svc_data_h, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+
+       __msg_ui_viewer_reload_viewer_ug(viewer_main_data, svc_msg_h);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_on_event(ui_gadget_h ug, enum ug_event event, service_h svc_handle, void *priv)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "event : %d", event);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+
+       switch (event) {
+       case UG_EVENT_LOW_MEMORY:
+               break;
+       case UG_EVENT_LOW_BATTERY:
+       {
+               int battey_level = 0;
+               vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW , &battey_level);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "battey_level = %d", battey_level);
+               if (battey_level == VCONFKEY_SYSMAN_BAT_POWER_OFF) {
+                       int charger_status = -1;
+                       vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &charger_status);
+
+                       if (!charger_status)
+                               __msg_ui_viewer_destroy_viewer_ug(priv);
+               }
+
+               break;
+       }
+       case UG_EVENT_LANG_CHANGE:
+               msg_ui_viewer_change_language(viewer_main_data);
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "UG_EVENT_ROTATE_PORTRAIT");
+               __msg_ui_viewer_rotate_play_window(viewer_main_data, 0);
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN");
+               __msg_ui_viewer_rotate_play_window(viewer_main_data, 180);
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "UG_EVENT_ROTATE_LANDSCAPE");
+               __msg_ui_viewer_rotate_play_window(viewer_main_data, 270);
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN");
+               __msg_ui_viewer_rotate_play_window(viewer_main_data, 90);
+               break;
+       case UG_EVENT_REGION_CHANGE:
+               break;
+       default:
+               break;
+       }
+}
+
+static void __msg_ui_viewer_on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h svc_handle, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, ug == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, priv == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)priv;
+       MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
+       int     ispopup = FALSE;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->view_mode : %d", viewer_main_data->view_mode);
+
+       switch (event) {
+       case UG_KEY_EVENT_END:
+               if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
+                       if (viewer_main_data->player_view) {
+                               if (viewer_main_data->player_view->popup) {
+                                       evas_object_del(viewer_main_data->player_view->popup);
+                                       viewer_main_data->player_view->popup = NULL;
+                                       viewer_main_data->player_view->popup_type = MSG_VIEWER_POPUP_NONE;
+                                       ispopup = TRUE;
+                               }
+
+                               if (viewer_main_data->player_view->status == MSG_VIEWER_PLAY ||
+                                       viewer_main_data->player_view->status == MSG_VIEWER_PAUSE) {
+                                       Error = msg_smil_on_slide_event_handler(&(viewer_main_data->player_view->SmilHandle), PLAYER_EVENT_STOP);
+                                       if (Error != MSG_SMIL_SUCCESS) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", Error);
+                                       }
+
+                                       viewer_main_data->player_view->status = MSG_VIEWER_STOP;
+                                       msg_ui_viewer_update_play_controller(viewer_main_data->player_view, MSG_VIEWER_STOP);
+                               }
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Not required case");
+               }
+
+               if (ispopup == FALSE) {
+                       if (!viewer_main_data->del_idler)
+                               viewer_main_data->del_idler = ecore_idler_add(msg_ui_viewer_ug_quit, viewer_main_data);
+               }
+
+               break;
+       default:
+               break;
+       }
+}
+
+static void __msg_ui_viewer_reload_viewer_ug(void *data, service_h svc_handle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       if (viewer_main_data->msg_t) {
+               msg_release_struct(&viewer_main_data->msg_t);
+               viewer_main_data->msg_t = NULL;
+       }
+
+       if (viewer_main_data->mms_t) {
+               msg_release_struct(&viewer_main_data->mms_t);
+               viewer_main_data->mms_t = NULL;
+       }
+
+       if (svc_handle) {
+               char *msgid = NULL;
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, &msgid);
+               if (msgid) {
+                       viewer_main_data->msgID = (int)atoi(msgid);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msgID = %d", viewer_main_data->msgID);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "There is no msgid");
+                       return;
+               }
+       }
+
+       if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Reset play view mode");
+
+               if (viewer_main_data->player_view) {
+                       msg_ui_viewer_destroy_play_view(viewer_main_data->player_view);
+                       free(viewer_main_data->player_view);
+                       viewer_main_data->player_view = NULL;
+               }
+
+               if (viewer_main_data->SmilHandle) {
+                       msg_smil_destroy_smil_player(viewer_main_data->SmilHandle);
+                       msg_ui_viewer_set_smilhandle(viewer_main_data, NULL);
+               }
+
+               if (msg_ui_viewer_launch(viewer_main_data) == FALSE) {
+                       msg_common_reset_font_size("entry");
+                       ug_destroy_me(viewer_main_data->viewer_ug);
+               }
+       } else if (viewer_main_data->view_mode == MSG_VIEWER_DRM_LIST_VIEW) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "DRM list view mode, come here to implement");
+               if (viewer_main_data->drm_list_view) {
+                       msg_ui_viewer_destroy_drm_list_view(viewer_main_data->drm_list_view);
+                       free(viewer_main_data->drm_list_view);
+                       viewer_main_data->drm_list_view = NULL;
+               }
+
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "%d mode is not required anything", viewer_main_data->view_mode);
+       }
+}
+
+
+static void __msg_ui_viewer_destroy_viewer_ug(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
+
+       if (viewer_main_data->view_mode == MSG_VIEWER_PLAYER_VIEW) {
+               if (viewer_main_data->player_view) {
+                       if (viewer_main_data->player_view->popup) {
+                               evas_object_del(viewer_main_data->player_view->popup);
+                               viewer_main_data->player_view->popup = NULL;
+                               viewer_main_data->player_view->popup_type = MSG_VIEWER_POPUP_NONE;
+                       }
+
+                       if (viewer_main_data->player_view->status == MSG_VIEWER_PLAY ||
+                               viewer_main_data->player_view->status == MSG_VIEWER_PAUSE) {
+                               Error = msg_smil_on_slide_event_handler(&(viewer_main_data->player_view->SmilHandle), PLAYER_EVENT_STOP);
+                               if (Error != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", Error);
+                               } else {
+                                       viewer_main_data->player_view->status = MSG_VIEWER_STOP;
+                               }
+                       }
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "%d mode is not required anything", viewer_main_data->view_mode);
+       }
+
+       if (!viewer_main_data->del_idler)
+               viewer_main_data->del_idler = ecore_idler_add(msg_ui_viewer_ug_quit, viewer_main_data);
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = NULL;
+
+       if (!ops)
+               return MSG_UI_RET_ERR;
+
+       viewer_main_data = calloc(1, sizeof(MSG_VIEWER_MAIN_DATA_S));
+       if (!viewer_main_data)
+               return MSG_UI_RET_ERR;
+
+       ops->create = __msg_ui_viewer_on_create;
+       ops->start = __msg_ui_viewer_on_start;
+       ops->pause = __msg_ui_viewer_on_pause;
+       ops->resume = __msg_ui_viewer_on_resume;
+       ops->destroy = __msg_ui_viewer_on_destroy;
+       ops->message = __msg_ui_viewer_on_message;
+       ops->event = __msg_ui_viewer_on_event;
+       ops->key_event = __msg_ui_viewer_on_key_event;
+       ops->priv = (void *)viewer_main_data;
+       ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = NULL;
+
+       if (!ops)
+               return;
+
+       viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)ops->priv;
+
+       if (viewer_main_data)
+               free(viewer_main_data);
+}
diff --git a/viewer/src/msg-ui-viewer-main.c b/viewer/src/msg-ui-viewer-main.c
new file mode 100755 (executable)
index 0000000..e0ffbd9
--- /dev/null
@@ -0,0 +1,461 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+                                                                         INCLUDE HEADERS
+*==================================================================================================*/
+#include <msg.h>
+#include <msg_storage.h>
+
+#include "msg-smil-player-interface.h"
+#include "msg-ui-common-utility.h"
+
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-viewer-drm-utility.h"
+
+/*==================================================================================================
+ *                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static MSG_BOOL __msg_ui_viewer_check_drm_content(void *data);
+static MSG_SMIL_ERROR_E __msg_ui_viewer_main_smil_cb(SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus, void *data);
+static MSG_BOOL __msg_ui_vewer_get_smil_handle(void *data);
+static MSG_BOOL __msg_ui_viewer_launch_drm_list(void *data);
+static MSG_BOOL __msg_ui_viewer_launch_play_view(void *data);
+static MSG_BOOL __msg_ui_viewer_show_play_view(void *data);
+
+/*==================================================================================================
+ *                                                     FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+void msg_ui_viewer_main_init(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       viewer_main_data->main_window = NULL;
+       viewer_main_data->layout_main = NULL;
+       viewer_main_data->bg = NULL;
+       viewer_main_data->msgHandle = NULL;
+       viewer_main_data->msgID = -1;
+       viewer_main_data->launchmode = MSG_VIEWER_FULLVIEW_MODE;
+       viewer_main_data->SmilHandle = NULL;
+       viewer_main_data->msg_t = NULL;
+       viewer_main_data->mms_t = NULL;
+       viewer_main_data->ug_launch_mode = MSG_UG_MODE_FULLVIEW;
+       viewer_main_data->navi_frame = NULL;
+       viewer_main_data->player_view = NULL;
+       viewer_main_data->drm_list_view = NULL;
+       viewer_main_data->del_idler = NULL;
+}
+
+MSG_BOOL msg_ui_viewer_launch(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_BOOL ret = TRUE;
+
+       if (!__msg_ui_vewer_get_smil_handle(viewer_main_data)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_ui_vewer_get_smil_handle is failed");
+               return FALSE;
+       }
+
+       if (viewer_main_data->launchmode == MSG_VIEWER_FULLVIEW_MODE) {
+               if (__msg_ui_viewer_check_drm_content(viewer_main_data)) {
+                       ret = __msg_ui_viewer_launch_drm_list(viewer_main_data);
+                       viewer_main_data->view_mode = MSG_VIEWER_DRM_LIST_VIEW;
+               } else {
+                       ret = __msg_ui_viewer_launch_play_view(viewer_main_data);
+                       viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
+               }
+       } else {
+               ret = __msg_ui_viewer_launch_play_view(viewer_main_data);
+               viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
+       }
+
+       return ret;
+}
+
+void msg_ui_viewer_show_view_by_mode(void *data, MSG_VIEWER_VIEW_MODE_E viewMode, unsigned int commandType)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewMode = %d", viewMode);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->player_view = 0x%x", viewer_main_data->player_view);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->drm_list_view = 0x%x", viewer_main_data->drm_list_view);
+
+       if (viewMode == MSG_VIEWER_PLAYER_VIEW) {
+               if (commandType == MSG_VIEWER_VIEW_CMD_PLAY) {
+                       if (__msg_ui_viewer_show_play_view(viewer_main_data))
+                               viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
+               } else {
+                       __msg_ui_viewer_launch_play_view(viewer_main_data);
+                       viewer_main_data->view_mode = MSG_VIEWER_PLAYER_VIEW;
+               }
+       } else if (viewMode == MSG_VIEWER_DRM_LIST_VIEW) {
+               __msg_ui_viewer_launch_drm_list(viewer_main_data);
+               viewer_main_data->view_mode = MSG_VIEWER_DRM_LIST_VIEW;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid viewMode!!");
+       }
+}
+
+static MSG_BOOL __msg_ui_viewer_launch_drm_list(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_DRM_LIST_DATA_S *pdrm_list_data = NULL;
+
+       /*allocate drm_list_view*/
+       if (!viewer_main_data->drm_list_view) {
+               pdrm_list_data = (MSG_DRM_LIST_DATA_S *)calloc(1, sizeof(MSG_DRM_LIST_DATA_S));
+               if (!pdrm_list_data) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                       return FALSE;
+               } else
+                       viewer_main_data->drm_list_view = pdrm_list_data;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "drm list view is already created");
+               pdrm_list_data = viewer_main_data->drm_list_view;
+       }
+
+       msg_ui_viewer_drm_list_init(pdrm_list_data);
+       /*set drm list view data from viewer_main_data*/
+       pdrm_list_data->mms_t = viewer_main_data->mms_t;
+       pdrm_list_data->msgID = viewer_main_data->msgID;
+       pdrm_list_data->main_window = viewer_main_data->main_window;
+       if (viewer_main_data->navi_frame)
+               pdrm_list_data->navi_frame = viewer_main_data->navi_frame;
+
+       if (viewer_main_data->drm_list) {
+               MSG_VIEWER_MEDIA_INFO_S *pmedia_info = NULL;
+               int ntotal = eina_list_count(viewer_main_data->drm_list);
+               int index = 0;
+
+               /*copy drm list*/
+               for (index = 0; index < ntotal; index++) {
+                       pmedia_info = eina_list_nth(viewer_main_data->drm_list, index);
+                       if (pmedia_info) {
+                               MSG_VIEWER_MEDIA_INFO_S *ptmp_media_info = (MSG_VIEWER_MEDIA_INFO_S *)calloc(1, sizeof(MSG_VIEWER_MEDIA_INFO_S));
+                               if (ptmp_media_info) {
+                                       memcpy(ptmp_media_info, pmedia_info, sizeof(MSG_VIEWER_MEDIA_INFO_S));
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                                       break;
+                               }
+
+                               pdrm_list_data->drm_list = eina_list_append(pdrm_list_data->drm_list, ptmp_media_info);
+                       }
+               }
+
+               /*free the drm list*/
+               if (viewer_main_data->drm_list) {
+                       MSG_VIEWER_MEDIA_INFO_S *pmedia_info = NULL;
+                       int ntotal = eina_list_count(viewer_main_data->drm_list);
+                       int index = 0;
+
+                       for (index = 0; index < ntotal; index++) {
+                               pmedia_info = eina_list_nth(viewer_main_data->drm_list, index);
+                               if (pmedia_info) {
+                                       free(pmedia_info);
+                                       pmedia_info = NULL;
+                               }
+                       }
+                       eina_list_free(viewer_main_data->drm_list);
+                       viewer_main_data->drm_list = NULL;
+               }
+       }
+       pdrm_list_data->viewer_main = viewer_main_data;
+
+       return msg_ui_viewer_create_drm_list_view(pdrm_list_data);
+}
+
+static MSG_BOOL __msg_ui_viewer_show_play_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_PLAY_DATA_S *viewer_play_data = NULL;
+
+       if (!viewer_main_data->player_view) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "player view is not created");
+               return FALSE;
+       } else
+               viewer_play_data = viewer_main_data->player_view;
+
+       return msg_ui_viewer_show_player_view(viewer_play_data);
+}
+
+static MSG_BOOL __msg_ui_viewer_launch_play_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_PLAY_DATA_S *viewer_play_data = NULL;
+
+       if (!viewer_main_data->player_view) {
+               viewer_play_data = (MSG_PLAY_DATA_S *)calloc(1, sizeof(MSG_PLAY_DATA_S));
+               if (!viewer_play_data) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                       return FALSE;
+               }
+               viewer_main_data->player_view = viewer_play_data;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play view is already created");
+               viewer_play_data = viewer_main_data->player_view;
+       }
+
+       msg_ui_viewer_play_view_init(viewer_play_data);
+
+       viewer_play_data->msgID = viewer_main_data->msgID;
+       viewer_play_data->msgHandle = viewer_main_data->msgHandle;
+       viewer_play_data->SmilHandle = viewer_main_data->SmilHandle;
+       viewer_play_data->msg_t = viewer_main_data->msg_t;
+       viewer_play_data->mms_t = viewer_main_data->mms_t;
+       viewer_play_data->main_window = viewer_main_data->main_window;
+       viewer_play_data->msg_box_viewer = viewer_main_data->msg_box_viewer;
+
+       if (viewer_main_data->navi_frame)
+               viewer_play_data->navi_frame = viewer_main_data->navi_frame;
+
+       viewer_play_data->cbs = viewer_main_data->cbs;
+       viewer_play_data->viewer_main = viewer_main_data;
+
+       return msg_ui_viewer_create_player_view(viewer_play_data);
+}
+
+static MSG_SMIL_ERROR_E __msg_ui_viewer_main_smil_cb(SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus, void *data)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, eventStatus == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, MSG_ERR_SMIL_INVALID_PARAMETER);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_PLAY_DATA_S *viewer_data = viewer_main_data->player_view;
+
+       return msg_ui_viewer_smil_cb(eventStatus, viewer_data);
+}
+
+static MSG_BOOL __msg_ui_vewer_get_smil_handle(void *data)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
+
+       if (viewer_main_data->launchmode == MSG_VIEWER_FULLVIEW_MODE) {
+               if (!viewer_main_data->mms_t) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "viewer_main_data->mms_t is null");
+                       return FALSE;
+               }
+       }
+
+       /*Create smilplayer handler*/
+       Error = msg_smil_create_smil_player(viewer_main_data->mms_t, __msg_ui_viewer_main_smil_cb, (void *)viewer_main_data, &(viewer_main_data->SmilHandle));
+       if (Error != MSG_SMIL_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_create_smil_player is failed! Error = %d", Error);
+               service_h svc_handle = NULL;
+               service_create(&svc_handle);
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL, FALSE);
+
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_VIEWER_MESSAGE, MSG_BUNDLE_VALUE_ERROR);
+               ug_send_result(viewer_main_data->viewer_ug, svc_handle);
+               service_destroy(svc_handle);
+
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+static MSG_BOOL __msg_ui_viewer_check_drm_content(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_main_data->mms_t == NULL, FALSE);
+
+       MSG_BOOL isdrm_content = FALSE;
+
+       /*check invalid sd, ssd type drm file*/
+       if (msg_ui_viewer_get_invalid_ro_drm_list(viewer_main_data->mms_t, &viewer_main_data->drm_list)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "RO is required");
+               isdrm_content = TRUE;
+       } else
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Ro is not required");
+
+       return isdrm_content;
+}
+
+Evas_Object *msg_ui_viewer_create_bg(void *data, Evas_Object *parent)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, parent == NULL, NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       Evas_Object *bg = NULL;
+
+       if (viewer_main_data->bg == NULL) {
+               bg = elm_bg_add(parent);
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, bg == NULL, NULL);
+               evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(parent, bg);
+               evas_object_show(bg);
+               viewer_main_data->bg = bg;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "bg is already created");
+               return NULL;
+       }
+
+       return bg;
+}
+
+Evas_Object *msg_ui_viewer_create_layout_main(Evas_Object *parent, bool indicator)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, parent == NULL, NULL);
+       Evas_Object *layout = NULL;
+
+       layout = elm_layout_add(parent);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, layout == NULL, NULL);
+
+       if (indicator)
+               elm_layout_theme_set(layout, "layout", "application", "default");
+       else
+               elm_layout_theme_set(layout, "layout", "application", "noindicator");
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(layout);
+
+       return layout;
+}
+
+void msg_ui_viewer_set_loaded_ug(void *data, ui_gadget_h loaded_ug)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, loaded_ug == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       viewer_main_data->loaded_ug = loaded_ug;
+}
+
+void msg_ui_viewer_set_navi_frame(void *data, Evas_Object *navi_frame)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, navi_frame == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       viewer_main_data->navi_frame = navi_frame;
+}
+
+void msg_ui_viewer_set_smilhandle(void *data, void *smilhandle)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       if (!smilhandle)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "smilhandle is set as NULL");
+
+       viewer_main_data->SmilHandle = smilhandle;
+}
+
+MSG_BOOL msg_ui_viewer_get_viewer_launchmode(void *data, MSG_VIEWER_LAUNCH_VIEW_MODE_E *launchmode)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, launchmode == NULL, FALSE);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       *launchmode = viewer_main_data->launchmode;
+
+       return TRUE;
+}
+
+MSG_BOOL msg_ui_viewer_get_viewer_ug_mode(void *data, MSG_UG_LAUNCH_MODE_E *ug_mode)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, ug_mode == NULL, FALSE);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+       *ug_mode = viewer_main_data->ug_launch_mode;
+
+       return TRUE;
+}
+
+ui_gadget_h msg_ui_viewer_get_viewer_ug(void *data)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       return viewer_main_data->viewer_ug;
+}
+
+Evas_Object *msg_ui_viewer_get_main_layout(void *data)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       return viewer_main_data->layout_main;
+}
+
+Evas_Object *msg_ui_viewer_get_bg_layout(void *data)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       return viewer_main_data->bg;
+}
+
+void msg_ui_viewer_change_language(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)data;
+
+       if (viewer_main_data->player_view) {
+               MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)viewer_main_data->player_view;
+
+               if (viewer_play_data->popup) {
+                       switch (viewer_play_data->popup_type) {
+                               case MSG_VIEWER_DELETE_POPUP:
+                                       msg_ui_viewer_delete_button_cb(viewer_play_data, NULL, NULL);
+                                       break;
+                               case MSG_VIEWER_ATTACHMENTS_POPUP:
+                                       msg_ui_viewer_create_save_attachments_popup(viewer_play_data);
+                                       break;
+                               case MSG_VIEWER_DETAILS_POPUP:
+                                       msg_ui_viewer_create_msg_detail_popup(viewer_play_data);
+                                       break;
+                               case MSG_VIEWER_MENU_CTX_POPUP:
+                                       msg_ui_viewer_more_button_cb(viewer_play_data, NULL, NULL);
+                                       break;
+                               case MSG_VIEWER_CUTLINK_POPUP:
+                               case MSG_VIEWER_TITLE_MENU_POPUP:
+                               case MSG_VIEWER_BLOCK_POPOP:
+                                       /* fall through */
+                               default:
+                                       evas_object_del(viewer_play_data->popup);
+                                       viewer_play_data->popup = NULL;
+                                       viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+                                       break;
+                       }
+               }
+
+               if (viewer_play_data->title_menu_opened) {
+                       /* close and open again */
+                       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+                       msg_ui_viewer_open_title_menu_genlist(viewer_play_data);
+               }
+
+               if (viewer_play_data->render_entry && viewer_play_data->smil_eventStatus->isHelpSlide) {
+                       char buf_helptext[DEF_BUF_LEN+1] = {0,};
+                       snprintf(buf_helptext, sizeof(buf_helptext), "<color=#6ca8c7>%s", ((viewer_play_data->attach_count > 1) ? dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE") : dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE")));
+                       elm_entry_entry_set(viewer_play_data->render_entry, buf_helptext);
+               }
+       }
+}
diff --git a/viewer/src/msg-ui-viewer-play-view-callback.c b/viewer/src/msg-ui-viewer-play-view-callback.c
new file mode 100755 (executable)
index 0000000..c519d3c
--- /dev/null
@@ -0,0 +1,2812 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "msg-ui-viewer-play-view.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-viewer-utility.h"
+#include "msg-ui-common-utility.h"
+#include "msg-ui-image-resource.h"
+
+#include <contacts.h>
+#include "appsvc.h"
+#include <utilX.h>
+#include <app_service.h>
+#include <syspopup_caller.h>
+#include <status.h>
+
+/*==================================================================================================
+ *                                                                     DEFINITIONS
+ *==================================================================================================*/
+Elm_Genlist_Item_Class itc_popup = {0,};       /** itc for list style popup */
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/* genlist for multirecipients in title button */
+static char *__msg_ui_viewer_title_menu_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object * __msg_ui_viewer_title_menu_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_viewer_title_menu_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_title_menu_del(void *data, Evas_Object *obj);
+static void __msg_ui_viewer_title_menu_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_title_menu_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+/*attachment list for help page */
+static void __msg_ui_viewer_help_page_save_all_item(MSG_PLAY_DATA_S *viewer_play_data);
+
+/* controllbar toolbar option */
+static void __msg_ui_viewer_more_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_more_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
+
+/* save attachment popup */
+static void __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_save_attachments_popup_save_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static char *__msg_ui_viewer_save_attachments_sa_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_viewer_save_attachments_sa_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_viewer_save_attachments_sa_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_save_attachments_sa_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static char *__msg_ui_viewer_save_attachments_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_viewer_save_attachments_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_viewer_save_attachments_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_delete_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_protection_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+/*==================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+Eina_Bool msg_ui_viewer_mouse_up_cb(void *data, int type, void *event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Ecore_Event_Mouse_Button *ev = (Ecore_Event_Mouse_Button *)event;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+       SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
+       int start_point = 0;
+       int end_point = 0;
+       int screen_width = 0;
+       int rotate = 0;
+
+       if (viewer_play_data->drag_volume_slider) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "volume slider is dragging, do not navigate page!");
+               return FALSE;
+       }
+
+       play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
+
+       /*get start and end point according to rotation*/
+       rotate = elm_win_rotation_get(viewer_play_data->main_window);
+       if (rotate == 0) {      /*PORTRAIT mode*/
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PORTRAIT mode");
+               start_point = viewer_play_data->m_x;
+               end_point = ev->x;
+               screen_width = viewer_play_data->window_width;
+       } else if (rotate == 180) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "PORTRAIT reverse mode");
+               start_point = ev->x;
+               end_point = viewer_play_data->m_x;
+               screen_width = viewer_play_data->window_width;
+       } else if (rotate == 90) {      /*LANDSCAPE mode*/
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LANDSCAPE mode");
+               start_point = ev->y;
+               end_point = viewer_play_data->m_y;
+               screen_width = viewer_play_data->window_height;
+       } else if (rotate == 270) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "LANDSCAPE reverse mode");
+               start_point = viewer_play_data->m_y;
+               end_point = ev->y;
+               screen_width = viewer_play_data->window_height;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
+               return FALSE;
+       }
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "start_point = %d, end_point = %d, screen_width = %d", start_point, end_point, screen_width);
+
+       if (end_point - start_point > screen_width / 4) {
+               /* prev*/
+               int pageIdx = viewer_play_data->smil_eventStatus->pageIdx;
+               if (pageIdx >= 0) {
+                       if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
+                               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREV_SLIDE);
+                               if (err != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                               } else {
+                                       /* hide menu title genlist if player status is changed to play */
+                                       if (viewer_play_data->title_menu_opened) {
+                                               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+                                               /* play viewer again if previous status was PLAY */
+                                               if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+                                                       if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                                                               return EINA_FALSE;
+                                                       }
+                                               }
+                                       }
+                                       /* show play controller */
+                                       if (viewer_play_data->play_controller) {
+                                               elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+                                               evas_object_show(viewer_play_data->play_controller);
+                                               viewer_play_data->playcontroller_opened = true;
+                                               elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+
+                                               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+                                       }
+                                       /* set progressbar and progress text sync */
+                                       if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
+                                               msg_ui_viewer_create_progressbar(viewer_play_data, pageIdx-1);
+                               }
+                       }
+               }
+       } else if (start_point - end_point > screen_width / 4) {
+               /*next*/
+               int pageIdx = viewer_play_data->smil_eventStatus->pageIdx + 1;
+               int total_page = viewer_play_data->smil_eventStatus->pageCnt;
+               if (total_page >= pageIdx) {
+                       if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
+                               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_NEXT_SLIDE);
+                               if (err != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                               } else {
+                                       /* hide menu title genlist if player status is changed to play */
+                                       if (viewer_play_data->title_menu_opened) {
+                                               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+                                               /* play viewer again if previous status was PLAY */
+                                               if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+                                                       if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                                                               return EINA_FALSE;
+                                                       }
+                                               }
+                                       }
+                                       /* show play controller */
+                                       if (viewer_play_data->play_controller) {
+                                               elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+                                               evas_object_show(viewer_play_data->play_controller);
+                                               viewer_play_data->playcontroller_opened = true;
+                                               elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+
+                                               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+                                       }
+                                       /* set progressbar and progress text sync */
+                                       if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
+                                               msg_ui_viewer_create_progressbar(viewer_play_data, pageIdx);
+                               }
+                       }
+               }
+       }
+
+       return EINA_TRUE;
+}
+
+Eina_Bool msg_ui_viewer_mouse_down_cb(void *data, int type, void *event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Ecore_Event_Mouse_Button *ev = (Ecore_Event_Mouse_Button *)event;
+
+       viewer_play_data->m_x = ev->x;
+       viewer_play_data->m_y = ev->y;
+
+       if (viewer_play_data->mouse_up_event_handler) {
+               ecore_event_handler_del(viewer_play_data->mouse_up_event_handler);
+               viewer_play_data->mouse_up_event_handler = NULL;
+       }
+       viewer_play_data->mouse_up_event_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_UP, msg_ui_viewer_mouse_up_cb, (void *) viewer_play_data);
+
+       return EINA_TRUE;
+}
+
+void msg_ui_viewer_play_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, event_info == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Evas_Event_Mouse_Down *ev = event_info;
+
+       viewer_play_data->ctrl_start_x = ev->canvas.x;
+       viewer_play_data->ctrl_start_y = ev->canvas.y;
+}
+
+void msg_ui_viewer_play_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ASSERT, event_info == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Evas_Event_Mouse_Up *ev = event_info;
+
+       viewer_play_data->ctrl_end_x = ev->canvas.x;
+       viewer_play_data->ctrl_end_y = ev->canvas.y;
+
+       int screen_width = 0;
+       int screen_height = 0;
+       int rotate = 0;
+
+       //get screen size
+       rotate = elm_win_rotation_get(viewer_play_data->main_window);
+       if (rotate == 0 || rotate == 180) {
+               screen_width = viewer_play_data->window_width;
+               screen_height = viewer_play_data->window_height;
+       } else if (rotate == 90 || rotate == 270) {
+               screen_width = viewer_play_data->window_height;
+               screen_height = viewer_play_data->window_width;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
+               return;
+       }
+
+       //check only case for playcontroller is not opened, the other case is checked within msg_ui_viewer_play_layout_clicked_cb
+       if (!viewer_play_data->playcontroller_opened && !viewer_play_data->title_menu_opened) {
+               if (abs(viewer_play_data->ctrl_start_x-viewer_play_data->ctrl_end_x) < screen_width / 10 && abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) < screen_height / 10 ) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play layout is tapped and play controller should be displayed");
+
+                       if (viewer_play_data->play_controller) {
+                               elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+                               evas_object_show(viewer_play_data->play_controller);
+                               viewer_play_data->playcontroller_opened = true;
+                               elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+                               //create play controller timer
+                               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+                       }
+               }
+       } else if (viewer_play_data->playcontroller_opened) {
+               /* up/down drag condition - close play controller */
+               if (abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) > screen_height / 5) {
+                       elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
+                       evas_object_hide(viewer_play_data->play_controller);
+                       viewer_play_data->playcontroller_opened = false;
+                       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
+
+                       msg_ui_viewer_destroy_play_controller_timer(viewer_play_data);
+               }
+       }
+}
+
+void msg_ui_viewer_play_layout_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
+
+       if (viewer_play_data->title_menu_opened) {
+               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+               /* play viewer again if previous status was PLAY */
+               if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+                       if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                               return;
+                       }
+               }
+       } else if (viewer_play_data->playcontroller_opened) {
+               int screen_width = 0;
+               int screen_height = 0;
+               int rotate = 0;
+
+               //get screen size
+               rotate = elm_win_rotation_get(viewer_play_data->main_window);
+               if (rotate == 0 || rotate == 180) {
+                       screen_width = viewer_play_data->window_width;
+                       screen_height = viewer_play_data->window_height;
+               } else if (rotate == 90 || rotate == 270) {
+                       screen_width = viewer_play_data->window_height;
+                       screen_height = viewer_play_data->window_width;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid ratation value");
+                       return;
+               }
+
+               if (abs(viewer_play_data->ctrl_start_x-viewer_play_data->ctrl_end_x) < screen_width / 10 &&
+                       abs(viewer_play_data->ctrl_start_y-viewer_play_data->ctrl_end_y) < screen_height / 10 &&
+                       viewer_play_data->ctrl_end_y < screen_height-(VIEWER_NAVIFRAME_BOTTOM_H+VIEWER_PLAY_CONTROLLER_HEIGHT)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play layout is now displayed and play controller should be hided");
+
+                       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
+                       elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
+                       evas_object_hide(viewer_play_data->play_controller);
+                       viewer_play_data->playcontroller_opened = false;
+                       //destroy play controller timer
+                       msg_ui_viewer_destroy_play_controller_timer(viewer_play_data);
+               }
+       }
+}
+
+MSG_SMIL_ERROR_E msg_ui_viewer_set_entry_handle_cb(MSG_PLAY_DATA_S *data, void *entry)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ASSERT, data == NULL, MSG_ERR_SMIL_UNKNOWN);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       bool isHelpText = false;
+
+       viewer_play_data->render_entry = (Evas_Object *)entry;
+
+       if (viewer_play_data->render_entry) {
+               if (viewer_play_data->smil_eventStatus) {
+                       isHelpText = (viewer_play_data->smil_eventStatus->isHelpSlide) ? true : false;
+               } else {
+                       SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+                       isHelpText = (!slide || !slide->commonData) ? false : ((slide->commonData->pageCnt == 0) ? true : false);
+               }
+               MSG_VIEWER_ENTRY_TYPE_E entry_type = (isHelpText) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+               msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LATEST_UPDATE);
+       }
+
+       return MSG_SMIL_SUCCESS;
+}
+
+void msg_ui_viewer_back_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->launch_cmd : %d", viewer_play_data->launch_cmd);
+
+       /*prevent invalid double pressing button event after launching ug or app(like call, vtcall)*/
+       if (viewer_play_data->launch_cmd != MSG_VIEWER_DEFAULT_MODE)
+               return;
+
+       if (viewer_play_data->title_menu_opened)
+               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       if (viewer_play_data->status == MSG_VIEWER_PLAY || viewer_play_data->status == MSG_VIEWER_PAUSE) {
+               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_STOP);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+               }
+
+               viewer_play_data->status = MSG_VIEWER_STOP;
+               msg_ui_viewer_update_play_controller(viewer_play_data, MSG_VIEWER_STOP);
+       }
+
+       msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+       if (!viewer_play_data->del_idler)
+               viewer_play_data->del_idler = ecore_idler_add(msg_ui_viewer_ug_quit, viewer_play_data->viewer_main);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_title_button_clicked_cb(void * data, Evas_Object * obj, void * event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->title_menu_opened) {
+               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+               /* play viewer again if previous status was PLAY */
+               if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+                       if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                               return;
+                       }
+               }
+       } else {
+               msg_ui_viewer_open_title_menu_genlist(viewer_play_data);
+
+               viewer_play_data->previous_status = viewer_play_data->status;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
+
+               /* set player state to pause and update icon */
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_save_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->status : %d", viewer_play_data->status);
+
+       /* check media count */
+       if (viewer_play_data->insert_count + viewer_play_data->attach_count == 0) {
+               msg_ui_viewer_show_popup(viewer_play_data, viewer_play_data->main_window, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NO_ATTACHMENTS"));
+               return;
+       }
+
+       /* close title menu list if exist, else pause SMIL and save previous status */
+       if (viewer_play_data->title_menu_opened) {
+               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+       } else {
+               viewer_play_data->previous_status = viewer_play_data->status;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
+
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) { // pause
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+
+       /* create popup for save attachments and insert items */
+       msg_ui_viewer_create_save_attachments_popup(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_delete_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL);
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       /* Add protection on/off menu */
+       bool is_protected = false;
+       msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
+       elm_object_text_set(popup, (is_protected) ? dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELETE_THIS_PROTECTED_MESSAGE_Q") : dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
+
+       Evas_Object *btn_ok = elm_button_add(popup);
+       elm_object_style_set(btn_ok, "popup_button/default");
+       elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+       elm_object_part_content_set(popup, "button1", btn_ok);
+       evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_delete_ok_clicked_cb, viewer_play_data);
+
+       Evas_Object *btn_cancel = elm_button_add(popup);
+       elm_object_style_set(btn_cancel, "popup_button/default");
+       elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", btn_cancel);
+       evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_delete_cancel_clicked_cb, viewer_play_data);
+
+       evas_object_show(popup);
+       viewer_play_data->popup = popup;
+       viewer_play_data->popup_type = MSG_VIEWER_DELETE_POPUP;
+
+       /*disconnect mouse handler*/
+       msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+       char str_id[DEF_BUF_LEN] = {0,};
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete msg-id is %d", viewer_play_data->msgID);
+
+       if (viewer_play_data->msg_box_viewer) {
+               if (msg_delete_message(viewer_play_data->msgHandle, viewer_play_data->msgID) == MSG_SUCCESS) {
+                       status_message_post(dgettext("sys_string", "IDS_COM_POP_DELETED"));
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_message is failed");
+                       status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+                       return;
+               }
+
+       } else {
+               service_h svc_handle = NULL;
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_DELETE_MSG);
+
+               snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
+
+               ug_send_result(viewer_main_data->viewer_ug, svc_handle);
+               service_destroy(svc_handle);
+       }
+
+       /*destroy viewer*/
+       ug_destroy_me(viewer_main_data->viewer_ug);
+
+       return;
+}
+
+static void __msg_ui_viewer_delete_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* connect handler again*/
+       msg_ui_viewer_connect_handler(viewer_play_data);
+
+       /* play viewer again if previous status was PLAY */
+       if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+}
+
+void msg_ui_viewer_forward_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       char buf[DEF_BUF_LEN_S] = { 0, };
+       service_h svc_handle;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* create and call composer-ug */
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed !!");
+       } else {
+               snprintf(buf, sizeof(buf), "%d", viewer_play_data->msgID);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, buf);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_FORWARD);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
+               ui_gadget_h loaded_ug;
+
+               loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+               if (loaded_ug) {
+                       msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER;
+               }
+
+               service_destroy(svc_handle);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_resend_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+       char str_id[DEF_BUF_LEN] = {0,};
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed msg-id is %d", viewer_play_data->msgID);
+
+       service_h svc_handle = NULL;
+       service_create(&svc_handle);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_RESEND);
+
+       snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
+
+       ug_send_result(viewer_main_data->viewer_ug, svc_handle);
+       service_destroy(svc_handle);
+
+       msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+       /*destroy viewer*/
+       ug_destroy_me(viewer_main_data->viewer_ug);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_reply_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+
+       int thread_id;
+       msg_error_t err = MSG_SUCCESS;
+       service_h svc_handle;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* get thread id value to check whether viewer is launched from bubble-composer or other external app(ug) */
+       err = msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+
+       /* back to bubble-composer and request to show keypad */
+       if (err == MSG_SUCCESS && thread_id > 0) {
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_REPLY);
+               ug_send_result(viewer_main_data->viewer_ug, svc_handle);
+
+               service_destroy(svc_handle);
+
+               msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+               /*destroy viewer*/
+               ug_destroy_me(viewer_main_data->viewer_ug);
+       } else {        /* create new composer with reply number */
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               char *reply_addr = NULL;
+               int contact_id = 0;
+               msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &reply_addr, &contact_id);
+
+               if (reply_addr) {
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, reply_addr);
+                       free(reply_addr);
+               }
+
+               ui_gadget_h loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+               if (loaded_ug) {
+                       msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER;
+               }
+
+               service_destroy(svc_handle);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_more_button_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL);
+
+       MSG_BOOL hasText = FALSE;
+       int page_count = 0;
+       int media_count = 0;
+       int folder_id = MSG_MAX_FOLDER_ID;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* set current status to previous status */
+       viewer_play_data->previous_status = viewer_play_data->status;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status = %d", viewer_play_data->previous_status);
+
+       /* set player state to pause*/
+       if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+               return;
+       }
+
+       Evas_Object *ctx_popup = NULL;
+       ctx_popup = elm_ctxpopup_add(viewer_play_data->navi_frame);
+       evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_viewer_more_ctxpopup_dismissed_cb, (void *)viewer_play_data);
+
+       /* add delete menu */
+       elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_OPT_DELETE"), NULL, msg_ui_viewer_delete_button_cb, (void *)viewer_play_data);
+
+       /* Get folder ID and Add Resend / Reply menu */
+       msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);
+
+       if (folder_id == MSG_OUTBOX_ID)
+               elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESEND"), NULL, msg_ui_viewer_resend_button_cb, (void *)viewer_play_data);
+       else if (folder_id == MSG_INBOX_ID)
+               elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_SK_REPLY"), NULL, msg_ui_viewer_reply_button_cb, (void *)viewer_play_data);
+
+       /* Add FORWARD menu */
+       elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_BODY_FORWARD"), NULL, msg_ui_viewer_forward_button_cb, (void *)viewer_play_data);
+
+       /* Add protection on/off menu */
+       bool is_protected = false;
+       msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Lock status of current message %d", is_protected);
+
+       if (is_protected)
+               elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_PROTECTION_OFF"), NULL, __msg_ui_viewer_protection_cb, (void *)viewer_play_data);
+       else
+               elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_PROTECTION_ON"), NULL, __msg_ui_viewer_protection_cb, (void *)viewer_play_data);
+
+       /* Add Copy Message text menu */
+       if (viewer_play_data->smil_eventStatus != NULL) {
+               /* get msg body */
+               msg_list_handle_t pagelist_info = NULL;
+               msg_get_list_handle(viewer_play_data->mms_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+               page_count = msg_list_length(pagelist_info);
+
+               msg_struct_t page_info = NULL;
+               page_info = (msg_struct_t)msg_list_nth_data(pagelist_info, viewer_play_data->smil_eventStatus->pageIdx);
+               if (page_info) {
+                       int i = 0;
+                       msg_list_handle_t medialist_info = NULL;
+                       msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
+                       media_count = msg_list_length(medialist_info);
+
+                       for (i = 0; i < media_count; i++) {
+                               int mediaType;
+                               msg_struct_t media_info = NULL;
+                               media_info = (msg_struct_t)msg_list_nth_data(medialist_info, i);
+
+                               if (media_info == NULL) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "getting media has failed");
+                                       continue;
+                               }
+
+                               msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+                               if (mediaType != MMS_SMIL_MEDIA_TEXT)
+                                       continue;
+
+                               hasText = TRUE;
+                       }
+               }
+       }
+
+       if (hasText)
+               elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"), NULL, __msg_ui_viewer_more_ctxpopup_clicked_cb, (void *)viewer_play_data);
+
+       /* Add view message details menu */
+       elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"), NULL, __msg_ui_viewer_more_ctxpopup_clicked_cb, (void *)viewer_play_data);
+
+       // move ctx popup
+       Evas_Coord x, y, w, h;
+       evas_object_geometry_get(viewer_play_data->more_btn, &x, &y, &w, &h);
+       evas_object_move(ctx_popup, x, y);
+       evas_object_show(ctx_popup);
+
+       viewer_play_data->popup = ctx_popup;
+       viewer_play_data->popup_type = MSG_VIEWER_MENU_CTX_POPUP;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_volume_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (!viewer_play_data->volumebar)
+               msg_ui_viewer_create_volume_bar((void *)viewer_play_data);
+       else
+               msg_ui_viewer_destroy_volume_bar((void *)viewer_play_data);
+
+       //create play controller timer repeatedly
+       msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+}
+
+void msg_ui_viewer_prev_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
+
+       play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->smil_eventStatus == NULL);
+
+       if (!strcmp(emission, "prev_clicked")) {
+               /* prev*/
+               int pageIdx = viewer_play_data->smil_eventStatus->pageIdx;
+               if (pageIdx >= 0) {
+                       if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
+                               MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+                               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREV_SLIDE);
+                               if (err != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                               } else {
+                                       //set progressbar and progress text sync
+                                       if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
+                                               msg_ui_viewer_create_progressbar(viewer_play_data, pageIdx-1);
+                               }
+                       }
+               }
+
+               //create play controller timer repeatedly
+               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+
+               /* close title menu list if current viewer status has changed to MSG_VIEWER_PLAY */
+               if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+                       if (viewer_play_data->title_menu_opened)
+                               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_play_pause_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (!msg_ui_viewer_command_play_pause(viewer_play_data, (viewer_play_data->status == MSG_VIEWER_PLAY) ? MSG_VIEWER_ACTION_TOOLBAR_PAUSE : MSG_VIEWER_ACTION_TOOLBAR_PLAY))
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_next_button_cb(void *data, Evas_Object * o, const char *emission, const char *source)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (!strcmp(emission, "next_clicked"))
+       {
+               SMIL_PLAYER_STATUS_E play_status = PLAYER_STATUS_NONE;
+               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
+
+               play_status = msg_smil_get_current_slide_status(viewer_play_data->SmilHandle);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "play_status : %d", play_status);
+
+               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->smil_eventStatus == NULL);
+               /*next*/
+               int pageIdx = viewer_play_data->smil_eventStatus->pageIdx + 1;
+               int total_page = viewer_play_data->smil_eventStatus->pageCnt;
+               if (total_page >= pageIdx) {
+                       if (play_status != PLAYER_STATUS_PLAY_END && play_status != PLAYER_STATUS_STOPPED) {
+                               MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+                               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_NEXT_SLIDE);
+                               if (err != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                               } else {
+                                       //set progressbar and progress text sync
+                                       if (viewer_play_data->progressbar && viewer_play_data->play_controller_progressbar_timer)
+                                               msg_ui_viewer_create_progressbar(viewer_play_data, pageIdx);
+                               }
+                       }
+               }
+
+               //create play controller timer repeatedly
+               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+
+               /* close title menu list if current viewer status has changed to MSG_VIEWER_PLAY */
+               if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+                       if (viewer_play_data->title_menu_opened)
+                               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+               }
+       }
+}
+
+void msg_ui_viewer_toolbar_email_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL);
+
+       service_error_e svc_err = SERVICE_ERROR_NONE;
+
+       msg_struct_list_s *addr_list = NULL;
+       msg_get_list_handle(viewer_play_data->msg_t, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+
+       int addr_count = addr_list->nCount;     //get address count
+
+       if (addr_count == 1) {
+               service_h svc_handle = NULL;
+               msg_struct_t addr_info = NULL;
+               char szAddress[MAX_ADDRESS_VAL_LEN + 1] = {0,};
+               addr_info = addr_list->msg_struct_info[0];
+               msg_get_str_value(addr_info, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, szAddress, MAX_ADDRESS_VAL_LEN);
+
+               char *address = (char*)calloc(1, strlen(szAddress)+1);
+               if (address == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                       return;
+               }
+
+               memcpy(address, szAddress, strlen(szAddress));
+
+               svc_err = service_create(&svc_handle);
+               if (svc_err != SERVICE_ERROR_NONE || svc_handle == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create is failed");
+                       free(address);
+                       return;
+               }
+
+               service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
+               service_set_app_id(svc_handle, "email-composer-efl");
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
+               service_add_extra_data(svc_handle, SERVICE_DATA_TO, address);
+
+               Ecore_X_Window win_id = elm_win_xwindow_get(viewer_play_data->main_window);
+               service_set_window(svc_handle, win_id);
+
+               svc_err = service_send_launch_request(svc_handle, NULL, NULL);
+
+               if (svc_err == SERVICE_ERROR_NONE) {
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_EMAIL_COMPOSER;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] service_send_launch_request is failed : %d", svc_err);
+               }
+
+               free(address);
+               service_destroy(svc_handle);
+       }
+
+       /* close title menu list */
+       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_toolbar_call_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+       int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+       if (addr_count == 1) {
+               char telnum[255] = {0,};
+               int ret = 0;
+               service_h svc_handle = NULL;
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               service_set_operation(svc_handle, SERVICE_OPERATION_CALL);
+
+               char *address = NULL;
+               int contactid = 0;
+
+               msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+               if (address) {
+                       snprintf(telnum, sizeof(telnum), "tel:%s", address);     /* Number to make a call */
+                       service_set_uri(svc_handle, telnum);
+                       free(address);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+                       service_destroy(svc_handle);
+                       return;
+               }
+
+               if ((ret = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "service_send_launch_request failed ret : %d", ret);
+               } else {
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CALL;
+               }
+               service_destroy(svc_handle);
+       }
+
+       /* close title menu list */
+       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_toolbar_vcall_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+       int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+       if (addr_count == 1) {
+               service_error_e err = SERVICE_ERROR_NONE;
+               service_h svc_handle = NULL;
+               char telnum[MAX_ADDRESS_VAL_LEN+5] = {0,};
+               char contact_id[VIEWER_BUFFER_SIZE_64] = {0,};
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+               char *address = NULL;
+               int contactid = 0;
+
+               msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+               if (address) {
+                       snprintf(telnum, sizeof(telnum), "tel:%s", address);
+                       snprintf(contact_id, sizeof(contact_id), "%d", contactid);
+                       free(address);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL");
+                       service_destroy(svc_handle);
+                       return;
+               }
+
+               service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/vt");
+               service_set_uri(svc_handle, telnum);
+               service_add_extra_data(svc_handle, "ctindex", contact_id);
+               err = service_send_launch_request(svc_handle, NULL, NULL);
+
+               if (err == SERVICE_ERROR_NONE) {
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_VIDEO_CALL;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] service_send_launch_request is failed : %d", err);
+               }
+
+               service_destroy(svc_handle);
+       }
+
+       /* close title menu list */
+       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_toolbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+       int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+       if (addr_count == 1) {
+               ui_gadget_h loaded_ug = NULL;
+               char buf[DEF_BUF_LEN_D] = { 0, };
+
+               service_h svc_handle = NULL;
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               char *address = NULL;
+               int contactid = 0;
+
+               msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+               if (address) {
+                       if (strstr(address, "@")) {
+                               snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL);
+                               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+                               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_EMAIL, address);
+                       } else {
+                               snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_NUM);
+                               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+                               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_NUM, address);
+                       }
+                       free(address);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL");
+                       service_destroy(svc_handle);
+                       return;
+               }
+
+               loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+               if (loaded_ug) {
+                       msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CONTACT;
+               }
+
+               service_destroy(svc_handle);
+       }
+
+       /* close title menu list */
+       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_toolbar_view_contact_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+       int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+       if (addr_count == 1) {
+               ui_gadget_h loaded_ug = NULL;
+               char contactId[DEF_BUF_LEN_S] = { 0, };
+               char buf[DEF_BUF_LEN_D] = { 0, };
+               char *address = NULL;
+               int contact_id = 0;
+
+               msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
+
+               if (contact_id > 0 ) {
+                       service_h svc_handle = NULL;
+                       service_create(&svc_handle);
+                       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+                       snprintf(contactId, sizeof(contactId), "%d", contact_id);
+                       snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_DETAIL);
+
+                       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+                       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_ID, contactId);
+
+                       loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+                       if (loaded_ug) {
+                               msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
+                               msg_ui_viewer_disconnect_handler(viewer_play_data);
+                               viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+                               viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CONTACT;
+                       }
+
+                       service_destroy(svc_handle);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid contact_id = %d", contact_id);
+               }
+
+               if (address)
+                       free(address);
+       }
+
+       /* close title menu list */
+       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_toolbar_block_address_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+
+       Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       char *popup_text = NULL;
+       char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
+       char *address = NULL;
+       int contactid = 0;
+
+       msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+       if (address) {
+               popup_text = g_strdup_printf(szbuf, address);
+               free(address);
+               if (!popup_text) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "popup_text is null");
+                       return;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+               return;
+       }
+
+       elm_object_text_set(popup, popup_text);
+       free(popup_text);
+
+       Evas_Object *btn_ok = elm_button_add(popup);
+       elm_object_style_set(btn_ok, "popup_button/default");
+       elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+       elm_object_part_content_set(popup, "button1", btn_ok);
+       evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_block_ok_clicked_cb, viewer_play_data);
+
+       Evas_Object *btn_cancel = elm_button_add(popup);
+       elm_object_style_set(btn_cancel, "popup_button/default");
+       elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", btn_cancel);
+       /* use same cb function with delete cancel button */
+       evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_delete_cancel_clicked_cb, viewer_play_data);
+
+       evas_object_show(popup);
+       viewer_play_data->popup = popup;
+       viewer_play_data->popup_type = MSG_VIEWER_BLOCK_POPOP;
+
+       /*disconnect mouse handler*/
+       msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+       /* close title menu list */
+       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_toolbar_unblock_address_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !viewer_play_data);
+       int filter_id = 0;
+       char *address = NULL;
+       int contactid = 0;
+
+       msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+       if (address) {
+               if (msg_ui_viewer_check_address_is_blocked(viewer_play_data, address, &filter_id)) {
+                       msg_error_t err =  MSG_SUCCESS;
+                       err = msg_delete_filter(viewer_play_data->msgHandle, (msg_filter_id_t)filter_id);
+                       if (err != MSG_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_filter is failed err : %d", err);
+                               free(address);
+                               return;
+                       }
+
+                       char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_UNBLOCKED");
+                       char *message_text = g_strdup_printf(szbuf, address);
+                       if (!message_text) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
+                               free(address);
+                               return;
+                       }
+                       status_message_post(message_text);
+                       free(message_text);
+
+                       msg_ui_viewer_title_update(viewer_play_data, MSG_VIEWER_OPTION_BLOCK);
+               }
+               free(address);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+               return;
+       }
+
+       /* close title menu list */
+       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       /* play viewer again if previous status was PLAY */
+       if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+       if (addr_count == 1) {
+               msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+               msg_error_t err =  MSG_SUCCESS;
+
+               err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_ADDRESS_SAME);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_int_value failed err : %d", err);
+                       msg_release_struct(&filter);
+                       return;
+               }
+
+               char *address = NULL;
+               int contactid = 0;
+
+               msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contactid);
+
+               if (address) {
+                       err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, address, strlen(address));
+                       if (err != MSG_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_str_value failed err : %d", err);
+                               msg_release_struct(&filter);
+                               free(address);
+                               return;
+                       }
+
+                       err = msg_add_filter(viewer_play_data->msgHandle, filter);
+                       if (err != MSG_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_add_filter failed err : %d", err);
+                               msg_release_struct(&filter);
+                               free(address);
+                               return;
+                       }
+
+                       char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_BLOCKED");
+                       char *message_text = g_strdup_printf(szbuf, address);
+                       if (!message_text) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
+                               msg_release_struct(&filter);
+                               free(address);
+                               return;
+                       }
+
+                       status_message_post(message_text);
+                       free(message_text);
+                       free(address);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL");
+                       msg_release_struct(&filter);
+                       return;
+               }
+
+               msg_release_struct(&filter);
+       }
+
+       /* play viewer again if previous status was PLAY */
+       if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+
+       return;
+}
+
+
+void msg_ui_viewer_open_title_menu_genlist(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
+       MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
+       int i = 0;
+
+       /* create box (for setting min size of genlist)*/
+       Evas_Object *box = elm_box_add(viewer_play_data->play_layout);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(box);
+
+       elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.title.menu", box);
+
+       /* create genlist */
+       Evas_Object *genlist = elm_genlist_add(box);
+       elm_object_theme_set(genlist, viewer_play_data->title_th);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+       evas_object_data_set(genlist, "viewer_play_data", viewer_play_data);
+       evas_object_show(genlist);
+
+       elm_box_pack_end(box, genlist);
+
+       viewer_play_data->title_box_layout = box;
+
+       int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+       if (addr_count == 1) {
+               /* set genlist styles */
+               viewer_play_data->itc_title_single.item_style = "1text.custom";
+               viewer_play_data->itc_title_single.func.text_get = __msg_ui_viewer_title_menu_gl_text_get;
+               viewer_play_data->itc_title_single.func.content_get = NULL;
+               viewer_play_data->itc_title_single.func.state_get = NULL;
+               viewer_play_data->itc_title_single.func.del = NULL;
+
+               /* genlist list load */
+               char *address = NULL;
+               int contact_id = 0;
+
+               msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
+
+               if (!address) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+                       return;
+               }
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address = %s, contact_id = %d", address, contact_id);
+
+               if (msg_common_is_valid_phone_number(address)) {
+                       elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext("sys_string", "IDS_COM_BODY_CALL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_call_cb, viewer_play_data);
+                       elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_vcall_cb, viewer_play_data);
+               } else if (msg_common_is_valid_email_addr(address)) {
+                       elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_email_cb, viewer_play_data);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address is invalid type");
+               }
+
+               if (contact_id > 0)
+                       elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_view_contact_cb, viewer_play_data);
+               else
+                       elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_add_to_contact_cb, viewer_play_data);
+
+               if (msg_common_is_valid_phone_number(address)) {
+                       int filter_id = 0;
+                       if (msg_ui_viewer_check_address_is_blocked(viewer_play_data, address, &filter_id))
+                               elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_unblock_address_cb, viewer_play_data);
+                       else
+                               elm_genlist_item_append(genlist, &(viewer_play_data->itc_title_single), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"), NULL, ELM_GENLIST_ITEM_NONE, msg_ui_viewer_toolbar_block_address_cb, viewer_play_data);
+               }
+
+               evas_object_size_hint_min_set(box, 0, VIEWER_ATTACH_GL_ITEM_HEIGHT * elm_genlist_items_count(genlist));
+               free(address);
+       } else {
+               /* set genlist styles */
+               viewer_play_data->itc_title.item_style = "2text.1icon.2.custom";
+               viewer_play_data->itc_title.func.text_get = __msg_ui_viewer_title_menu_gl_text_get;
+               viewer_play_data->itc_title.func.content_get = __msg_ui_viewer_title_menu_gl_content_get;
+               viewer_play_data->itc_title.func.state_get = NULL;
+               viewer_play_data->itc_title.func.del = __msg_ui_viewer_title_menu_del;
+
+               /* genlist list load */
+               for (i = 0; i < addr_count; i++) {
+                       addrInfo = (MSG_VIEWER_ADDR_INFO *)calloc(1, sizeof(MSG_VIEWER_ADDR_INFO));
+                       if (!addrInfo) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "addrInfo calloc failed");
+                               return;
+                       }
+
+                       char *address = NULL;
+                       int contact_id = 0;
+
+                       msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, i, &address, &contact_id);
+
+                       if (!address) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is null");
+                               free(addrInfo);
+                               return;
+                       }
+                       strncpy(addrInfo->address, address, MAX_ADDRESS_VAL_LEN);
+                       free(address);
+
+                       char *display_name = msg_viewer_util_get_display_name_by_index(contact_id);
+                       if (display_name) {
+                               strncpy(addrInfo->name, display_name, MAX_DISPLAY_NAME_LEN);
+                               free(display_name);
+                       }
+
+                       addrInfo->contact_id = contact_id;
+
+                       elm_genlist_item_append(genlist, &(viewer_play_data->itc_title), addrInfo, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_title_menu_gl_sel, viewer_play_data);
+               }
+
+               /* set genlist size */
+               if (addr_count >= VIEWER_TITLE_MENU_GENLIST_MAX_ITEM)
+                       evas_object_size_hint_min_set(box, 0, VIEWER_TITLE_MENU_LINE_HEIGHT * VIEWER_TITLE_MENU_GENLIST_MAX_ITEM * elm_config_scale_get());
+               else
+                       evas_object_size_hint_min_set(box, 0, VIEWER_TITLE_MENU_LINE_HEIGHT * addr_count * elm_config_scale_get());
+       }
+
+       /** emit signal for changing state of title menu list to open */
+       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,titlemenu,open", "");
+       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+
+       viewer_play_data->title_menu_opened = true;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_close_title_menu_genlist(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
+
+       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,titlemenu,close", "");
+
+       if (!viewer_play_data->playcontroller_opened)
+               elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
+
+       Evas_Object *layout = elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.title.menu");
+       if (layout) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete box layout");
+               evas_object_del(layout);
+       }
+
+       viewer_play_data->title_menu_opened = false;
+       viewer_play_data->title_box_layout = NULL;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static char *__msg_ui_viewer_title_menu_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !addrInfo, NULL);
+
+       if (g_strcmp0(part, "elm.text") == 0) {
+               return strdup((char *)data);
+       } else if (g_strcmp0(part, "elm.text.1") == 0) {
+               if (addrInfo->contact_id > 0 && addrInfo->name[0] != '\0')
+                       return strdup(addrInfo->name);
+               else if (addrInfo->address[0] != '\0')
+                       return strdup (addrInfo->address);
+               else
+                       return strdup(dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+       } else if (g_strcmp0(part, "elm.text.2") == 0) {
+               if (addrInfo->address[0] != '\0')
+                       return strdup(addrInfo->address);
+               else
+                       return strdup(dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return NULL;
+}
+
+
+static Evas_Object * __msg_ui_viewer_title_menu_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       // Currently, this function do nothing, caller_id concept is not determined
+       return NULL;
+}
+
+static void __msg_ui_viewer_title_menu_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL!");
+
+       Elm_Object_Item *item = NULL;
+       MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
+
+       item = (Elm_Object_Item *)event_info;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !item, "Item is  NULL or Item is not Message item\n");
+
+       addrInfo = (MSG_VIEWER_ADDR_INFO *)elm_object_item_data_get(item);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, addrInfo == NULL, "item_data is NULL");
+
+       elm_genlist_item_selected_set(item, 0);
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       Evas_Object *popup = NULL;
+       Evas_Object *list = NULL;
+       Evas_Object *btn_close = NULL;
+
+       popup = elm_popup_add(viewer_play_data->main_window);
+       elm_object_style_set(popup, "min_menustyle");
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       btn_close = elm_button_add(popup);
+       elm_object_style_set(btn_close, "popup_button/default");
+       elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       elm_object_part_content_set(popup, "button1", btn_close);
+       evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_title_menu_popup_close_clicked_cb, viewer_play_data);
+
+       list = elm_list_add(popup);
+       elm_list_mode_set(list, ELM_LIST_EXPAND);
+
+       evas_object_data_set(list, "viewer_play_data", viewer_play_data);
+
+       if (msg_common_is_valid_phone_number(addrInfo->address)) {
+               elm_list_item_append(list, dgettext("sys_string", "IDS_COM_BODY_CALL"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
+               elm_list_item_append(list, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
+       } else if (msg_common_is_valid_email_addr(addrInfo->address)) {
+               elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"address is invalid type");
+       }
+
+       if (addrInfo->contact_id> 0) {
+               elm_object_part_text_set(popup, "title,text", addrInfo->name);
+               elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
+       } else {
+               elm_object_part_text_set(popup, "title,text", addrInfo->address);
+               elm_list_item_append(list, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
+       }
+
+       if (msg_common_is_valid_phone_number(addrInfo->address)) {
+               int filter_id = 0;
+               if (msg_ui_viewer_check_address_is_blocked(viewer_play_data, addrInfo->address, &filter_id))
+                       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
+               else
+                       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK"), NULL, NULL, __msg_ui_viewer_title_menu_popup_selected_cb, (void *)addrInfo);
+       }
+
+       elm_list_go(list);
+       elm_object_content_set(popup, list);
+       evas_object_show(popup);
+
+       viewer_play_data->popup = popup;
+       viewer_play_data->popup_type = MSG_VIEWER_TITLE_MENU_POPUP;
+
+       /*disconnect mouse handler*/
+       msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void  __msg_ui_viewer_title_menu_del(void *data, Evas_Object *obj)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !addrInfo, "addrInfo is NULL!");
+
+       if (addrInfo)
+               free(addrInfo);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_title_menu_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* connect handler again*/
+       msg_ui_viewer_connect_handler(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_title_menu_popup_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !viewer_play_data, "viewer_play_data is NULL");
+       MSG_VIEWER_ADDR_INFO *addrInfo = NULL;
+       addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !addrInfo, "addrInfo is NULL");
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       const char *label = elm_object_item_text_get((Elm_Object_Item *) event_info);
+
+       if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_CALL")) == 0) {
+               char telnum[255] = {0,};
+               int ret = 0;
+               service_h svc_handle = NULL;
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               service_set_operation(svc_handle, SERVICE_OPERATION_CALL);
+               snprintf(telnum, sizeof(telnum), "tel:%s", addrInfo->address);   /* Number to make a call */
+               service_set_uri(svc_handle, telnum);
+               if ((ret = service_send_launch_request(svc_handle, NULL, NULL)) != SERVICE_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "appsvc_run_service failed ret : %d", ret);
+               } else {
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CALL;
+               }
+
+               service_destroy(svc_handle);
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL")) == 0) {
+               service_error_e err = SERVICE_ERROR_NONE;
+               service_h svc_handle = NULL;
+               char telnum[MAX_ADDRESS_VAL_LEN+5] = {0,};
+               char contact_id[VIEWER_BUFFER_SIZE_64] = {0,};
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               snprintf(telnum, sizeof(telnum), "tel:%s", addrInfo->address);
+               snprintf(contact_id, sizeof(contact_id), "%d", addrInfo->contact_id);
+
+               service_set_operation(svc_handle, "http://tizen.org/appcontrol/operation/vt");
+               service_set_uri(svc_handle, telnum);
+               service_add_extra_data(svc_handle, "ctindex", contact_id);
+               err = service_send_launch_request(svc_handle, NULL, NULL);
+
+               if (err == SERVICE_ERROR_NONE) {
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_VIDEO_CALL;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] service_send_launch_request is failed : %d", err);
+               }
+
+               service_destroy(svc_handle);
+       } else if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS")) == 0) { /* Add to contact with phone number string... */
+               ui_gadget_h loaded_ug = NULL;
+               char buf[DEF_BUF_LEN_D] = { 0, };
+               service_h svc_handle = NULL;
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               if (strstr(addrInfo->address, "@")) {
+                       snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL);
+                       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+                       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_EMAIL, addrInfo->address);
+               } else {
+                       snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_UPDATE_WITH_NUM);
+                       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+                       service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_NUM, addrInfo->address);
+               }
+
+               loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+               if (loaded_ug) {
+                       msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CONTACT;
+               }
+
+               service_destroy(svc_handle);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_VIEW_CONTACT")) == 0) {
+               ui_gadget_h loaded_ug = NULL;
+               char contactId[DEF_BUF_LEN_S] = { 0, };
+               char buf[DEF_BUF_LEN_D] = { 0, };
+               service_h svc_handle = NULL;
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               snprintf(contactId, sizeof(contactId), "%d", addrInfo->contact_id);
+               snprintf(buf, sizeof(buf), "%d", MSG_CT_UG_REQUEST_DETAIL);
+
+               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_TYPE, buf);
+               service_add_extra_data(svc_handle, MSG_CT_UG_BUNDLE_ID, contactId);
+
+               loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, svc_handle, &viewer_play_data->cbs);
+
+               if (loaded_ug) {
+                       msg_ui_viewer_set_loaded_ug(viewer_play_data->viewer_main, loaded_ug);
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_CONTACT;
+               }
+
+               service_destroy(svc_handle);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL")) == 0) {
+               service_h svc_handle = NULL;
+               service_error_e svc_err = SERVICE_ERROR_NONE;
+
+               service_create(&svc_handle);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, svc_handle < 0 || svc_handle == NULL);
+
+               service_set_operation(svc_handle, SERVICE_OPERATION_SEND);
+               service_set_app_id(svc_handle, "email-composer-efl");
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
+               service_add_extra_data(svc_handle, SERVICE_DATA_TO, addrInfo->address);
+
+               Ecore_X_Window win_id = elm_win_xwindow_get(viewer_play_data->main_window);
+               service_set_window(svc_handle, win_id);
+
+               svc_err = service_send_launch_request(svc_handle, NULL, NULL);
+
+               if (svc_err == SERVICE_ERROR_NONE) {
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_APP_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_EMAIL_COMPOSER;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] service_send_launch_request is failed : %d", svc_err);
+               }
+
+               service_destroy(svc_handle);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_UNBLOCK")) == 0) {
+               int filter_id = 0;
+               if (msg_ui_viewer_check_address_is_blocked(viewer_play_data, addrInfo->address, &filter_id)) {
+                       msg_error_t err =  MSG_SUCCESS;
+                       err = msg_delete_filter(viewer_play_data->msgHandle, (msg_filter_id_t)filter_id);
+                       if (err != MSG_SUCCESS) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_filter is failed err : %d", err);
+                               return;
+                       }
+
+                       char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_UNBLOCKED");
+
+                       char *message_text = g_strdup_printf(szbuf, addrInfo->address);
+                       if (!message_text) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
+                               return;
+                       }
+
+                       status_message_post(message_text);
+                       free(message_text);
+               }
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_BLOCK")) == 0) {
+               Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
+               evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+               char *popup_text = NULL;
+               char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_BLOCK_PS_Q");
+
+               popup_text = g_strdup_printf(szbuf, addrInfo->address);
+               if (!popup_text) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "popup_text is null");
+                       return;
+               }
+               elm_object_text_set(popup, popup_text);
+               free(popup_text);
+
+               Evas_Object *btn_ok = elm_button_add(popup);
+               elm_object_style_set(btn_ok, "popup_button/default");
+               elm_object_text_set(btn_ok, dgettext("sys_string", "IDS_COM_SK_OK"));
+               elm_object_part_content_set(popup, "button1", btn_ok);
+               evas_object_smart_callback_add(btn_ok, "clicked", __msg_ui_viewer_title_menu_block_ok_clicked_cb, viewer_play_data);
+               evas_object_data_set(btn_ok, "addrInfo", addrInfo);
+
+               Evas_Object *btn_cancel = elm_button_add(popup);
+               elm_object_style_set(btn_cancel, "popup_button/default");
+               elm_object_text_set(btn_cancel, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+               elm_object_part_content_set(popup, "button2", btn_cancel);
+               evas_object_smart_callback_add(btn_cancel, "clicked", __msg_ui_viewer_delete_cancel_clicked_cb, viewer_play_data);
+
+               evas_object_show(popup);
+               viewer_play_data->popup = popup;
+               viewer_play_data->popup_type = MSG_VIEWER_BLOCK_POPOP;
+
+               /* disconnect mouse handler */
+               msg_ui_viewer_disconnect_handler(viewer_play_data);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_title_menu_block_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)evas_object_data_get(obj, "addrInfo");
+       msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+       msg_error_t err =  MSG_SUCCESS;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_ADDRESS_SAME);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_int_value failed err : %d", err);
+               msg_release_struct(&filter);
+               return;
+       }
+
+       err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, addrInfo->address, strlen(addrInfo->address));
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_str_value failed err : %d", err);
+               msg_release_struct(&filter);
+               return;
+       }
+
+       err = msg_add_filter(viewer_play_data->msgHandle, filter);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_add_filter failed err : %d", err);
+               msg_release_struct(&filter);
+               return;
+       }
+
+       char *szbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_PS_BLOCKED");
+       char *message_text = g_strdup_printf(szbuf, addrInfo->address);
+       if (!message_text) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "message_text is null");
+               msg_release_struct(&filter);
+               return;
+       }
+
+       status_message_post(message_text);
+       free(message_text);
+
+       msg_release_struct(&filter);
+
+       /* close title menu popup */
+       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+       return;
+}
+
+void msg_ui_viewer_create_save_attachments_popup(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Evas_Object *popup = NULL;
+       Evas_Object *box = NULL;
+       Evas_Object *genlist = NULL;
+       Evas_Object *btn_save = NULL;
+       Evas_Object *btn_close = NULL;
+       int index = 0;
+       int total_media_count = 0;
+       int popup_height = 0;
+
+       /* destroy previous popup */
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       total_media_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
+
+       /* create popup */
+       popup = elm_popup_add(viewer_play_data->main_window);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (total_media_count > 3 )
+               elm_object_style_set(popup, "menustyle");
+       else
+               elm_object_style_set(popup, "min_menustyle");
+
+       /* set popup title */
+       elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_ATTACHMENTS"));
+
+       /* set select all genlist item style */
+       viewer_play_data->attach_sa_class.item_style = "1text.1icon.2";
+       viewer_play_data->attach_sa_class.func.text_get = __msg_ui_viewer_save_attachments_sa_gl_text_get;
+       viewer_play_data->attach_sa_class.func.content_get = __msg_ui_viewer_save_attachments_sa_gl_content_get;
+       viewer_play_data->attach_sa_class.func.state_get = NULL;
+       viewer_play_data->attach_sa_class.func.del = NULL;
+
+       /* set genlist style */
+       viewer_play_data->attach_item_class.item_style = "1text.2icon.2";
+       viewer_play_data->attach_item_class.func.text_get = __msg_ui_viewer_save_attachments_gl_text_get;
+       viewer_play_data->attach_item_class.func.content_get = __msg_ui_viewer_save_attachments_gl_content_get;
+       viewer_play_data->attach_item_class.func.state_get = NULL;
+       viewer_play_data->attach_item_class.func.del = NULL;
+
+       /* create genlist */
+       genlist = elm_genlist_add(viewer_play_data->main_window);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_data_set(genlist, "viewer_play_data", viewer_play_data);
+
+       /* add genlist item based on media count, if item's count is over 1 then 'select all' item should be inserted*/
+       if (total_media_count > 1) {
+               /* add Select all item */
+               elm_genlist_item_append(genlist, &viewer_play_data->attach_sa_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_sa_gl_sel, NULL);
+
+               /* add each item (order is inserted + attached) */
+               for (index = 1; index < total_media_count+1; index++) {
+                       elm_genlist_item_append(genlist, &viewer_play_data->attach_item_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_gl_sel, NULL);
+               }
+       } else {
+               /* add each item (order is inserted + attached) */
+               for (index = 0; index < total_media_count; index++) {
+                       elm_genlist_item_append(genlist, &viewer_play_data->attach_item_class, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_save_attachments_gl_sel, NULL);
+               }
+       }
+
+       /* add save button */
+       btn_save = elm_button_add(popup);
+       elm_object_style_set(btn_save, "popup_button/default");
+       elm_object_text_set(btn_save, dgettext("sys_string", "IDS_COM_SK_SAVE"));
+       elm_object_part_content_set(popup, "button1", btn_save);
+       evas_object_smart_callback_add(btn_save, "clicked", __msg_ui_viewer_save_attachments_popup_save_clicked_cb, viewer_play_data);
+       viewer_play_data->save_button = btn_save;
+       elm_object_disabled_set(viewer_play_data->save_button, EINA_TRUE);
+
+       /* add close button */
+       btn_close = elm_button_add(popup);
+       elm_object_style_set(btn_close, "popup_button/default");
+       elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_SK_CANCEL"));
+       elm_object_part_content_set(popup, "button2", btn_close);
+       evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb, viewer_play_data);
+
+       /* set popup style */
+       box = elm_box_add(viewer_play_data->main_window);
+       popup_height = VIEWER_ATTACH_GL_ITEM_HEIGHT * ((total_media_count > 3) ? 4 : ((total_media_count > 1) ? total_media_count + 1 : total_media_count));
+       evas_object_size_hint_min_set(box, 0, popup_height * elm_config_scale_get());
+       evas_object_show(genlist);
+       elm_box_pack_end(box, genlist);
+       elm_object_content_set(popup, box);
+
+       /* show popup */
+       evas_object_show(popup);
+       viewer_play_data->save_attachment_gl= genlist;
+       viewer_play_data->popup = popup;
+       viewer_play_data->popup_type = MSG_VIEWER_ATTACHMENTS_POPUP;
+
+       /*disconnect mouse handler*/
+       msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_save_attachments_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       int index = 0;
+       int total_count = 0;
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->save_button);
+               viewer_play_data->save_button = NULL;
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+               viewer_play_data->popup = NULL;
+               viewer_play_data->sa_check = NULL;
+       }
+
+       total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
+
+       while (index < total_count) {
+               if (index < viewer_play_data->insert_count)
+                       media_info = eina_list_nth(viewer_play_data->insert_list, index);
+               else if (index < total_count)
+                       media_info = eina_list_nth(viewer_play_data->attach_list, index-viewer_play_data->insert_count);
+               else
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!", index);
+
+               if (media_info ) // disable check status
+                       media_info->isChecked = FALSE;
+
+               index++;
+       }
+
+       viewer_play_data->isSelectAll = FALSE;
+
+       /* connect handler again*/
+       msg_ui_viewer_connect_handler(viewer_play_data);
+
+       /* play viewer again if previous status was PLAY */
+       if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_save_attachments_popup_save_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
+
+       int attach_count = 0;
+       int insert_count = 0;
+       int total_count = 0;
+       int selected_count = 0;
+
+       int index = 0;
+       int insert_index = 0;
+       int attach_index = 0;
+       int failed_count = 0;
+       int saved_count = 0;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->save_button);
+               viewer_play_data->save_button = NULL;
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+               viewer_play_data->popup = NULL;
+               viewer_play_data->sa_check = NULL;
+       }
+
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_Info = NULL;
+
+       insert_count = eina_list_count(viewer_play_data->insert_list);
+       attach_count = eina_list_count(viewer_play_data->attach_list);
+       total_count = insert_count + attach_count;
+
+       while (index < total_count) {
+               if (index < insert_count)
+                       media_Info = eina_list_nth(viewer_play_data->insert_list , insert_index++);
+               else if (index < total_count)
+                       media_Info = eina_list_nth(viewer_play_data->attach_list , attach_index++);
+
+               if (media_Info) {
+                       bool saveCondition = (viewer_play_data->isSelectAll) ? TRUE : (media_Info->isChecked ? TRUE : FALSE);
+
+                       if (saveCondition) {
+                               selected_count++;
+
+                               /*get default file path*/
+                               MSG_BOOL result = FALSE;
+                               char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
+
+                               result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
+                               if (result) {
+                                       char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
+                                       snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, media_Info->pfile_name);
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dest pfile_path [%s]", dst_path);
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "src pfile_path [%s]", media_Info->pfile_path);
+
+                                       char *result_path = msg_ui_viewer_util_copy_file(media_Info->pfile_path, dst_path);
+                                       if (result_path) {
+                                               saved_count++;
+                                               free(result_path);
+                                       } else {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed index = %d", index);
+                                               failed_count++;
+                                       }
+                               } else {
+                                       failed_count++;
+                               }
+
+                               //release check status
+                               media_Info->isChecked = FALSE;
+                               if (viewer_play_data->isSelectAll)
+                                       viewer_play_data->isSelectAll = FALSE;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL index = %d", index);
+               }
+
+               media_Info = NULL;
+
+               index++;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Selected(%d) / Total(%d) [inserted(%d),attached(%d)]", selected_count, total_count, insert_count, attach_count);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Saved(%d), Failed(%d)", saved_count, failed_count);
+
+       /* show indicator status text */
+       if (failed_count == selected_count) {
+               status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+       } else {
+               if (selected_count == 1 && saved_count == 1) {
+                       status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
+               } else {
+                       char buf[DEF_BUF_LEN_S + 1] = {0, };
+                       snprintf(buf, sizeof(buf), "%s (%d/%d)", dgettext("sys_string", "IDS_COM_POP_SAVED"), saved_count, selected_count);
+                       status_message_post(buf);
+               }
+       }
+
+       /* connect handler again*/
+       msg_ui_viewer_connect_handler(viewer_play_data);
+
+       /* play viewer again if previous status was PLAY */
+       if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static char *__msg_ui_viewer_save_attachments_sa_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.text")) {
+               if (index == 0) {
+                       return strdup(dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Invalid index of select all(%d)", index);
+                       return NULL;
+               }
+       }
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_viewer_save_attachments_sa_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+       int index = (int)data;
+       Evas_Object *check;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) {
+               check = elm_check_add(obj);
+               elm_check_state_pointer_set(check, &(viewer_play_data->isSelectAll));
+               evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_smart_callback_add(check, "changed", __msg_ui_viewer_save_attachments_sa_check_changed_cb, viewer_play_data);
+               viewer_play_data->sa_check = check;
+
+               return check;
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_viewer_save_attachments_sa_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       int i = 0;
+       Eina_List * realized_list;
+       Elm_Object_Item *it;
+       Eina_List *l;
+       Eina_Bool checked;
+
+       int total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "total Count = %d", total_count);
+       checked = elm_check_state_get(obj);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "checked status = %d", checked);
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+
+       for (i = 0; i < total_count; i++) {
+               if (i < viewer_play_data->insert_count) {
+                       media_info = eina_list_nth(viewer_play_data->insert_list, i);
+                       media_info->isChecked = checked;
+               } else if (i < total_count) {
+                       media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
+                       media_info->isChecked = checked;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
+               }
+       }
+
+       // Update realized items only
+       realized_list = elm_genlist_realized_items_get(viewer_play_data->save_attachment_gl);
+       EINA_LIST_FOREACH(realized_list, l, it) {
+                elm_genlist_item_update(it);
+       }
+
+}
+
+static void __msg_ui_viewer_save_attachments_sa_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
+       int index = 0;
+       int i = 0;
+       int total_count = viewer_play_data->insert_count + viewer_play_data->attach_count;
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *tmp_media_info = NULL;
+
+       if (item != NULL) {
+               index = (int)elm_object_item_data_get(item);
+               elm_genlist_item_selected_set(item, EINA_FALSE);
+
+               viewer_play_data->isSelectAll = !viewer_play_data->isSelectAll;
+
+               //check state changed cb will be called
+               elm_check_state_set(viewer_play_data->sa_check, viewer_play_data->isSelectAll);
+               elm_genlist_item_update(item);
+
+               if (total_count > 1) {
+                       for (i = 0; i < total_count; i++) {
+                               if (i < viewer_play_data->insert_count) {
+                                       tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
+
+                               } else if (i < total_count) {
+                                       tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
+                                       continue;
+                               }
+                               elm_check_state_set(tmp_media_info->check_item, (viewer_play_data->isSelectAll) ? EINA_TRUE : EINA_FALSE);
+                               tmp_media_info->isChecked = (viewer_play_data->isSelectAll) ? EINA_TRUE : EINA_FALSE;
+                       }
+               }
+               elm_object_disabled_set(viewer_play_data->save_button, (viewer_play_data->isSelectAll) ? EINA_FALSE : EINA_TRUE);
+       }
+}
+
+static char *__msg_ui_viewer_save_attachments_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, NULL);
+
+       int index = (int) data;
+       int realIndex = 0;
+       int insert_count = viewer_play_data->insert_count;
+       int attach_count = viewer_play_data->attach_count;
+       int total_count = insert_count + attach_count;
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       realIndex = (total_count > 1) ? index-1 : index;        // calculate item index considering 'select all' item
+
+       // check boundary
+       if (realIndex < 0 ) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.text")) {
+               if (realIndex < insert_count) {
+                       media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[INSERT MEDIA] name is  = %s", media_info->pfile_name);
+               } else if (realIndex < insert_count+attach_count) {
+                       media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[ATTACH MEDIA] name is  = %s", media_info->pfile_name);
+               }
+
+               return strdup(media_info->pfile_name);
+       }
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_viewer_save_attachments_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, NULL);
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+       int index = (int)data;
+       Evas_Object *check;
+       int realIndex = index-1;
+       int insert_count = viewer_play_data->insert_count;
+       int attach_count = viewer_play_data->attach_count;
+       int total_count = insert_count + attach_count;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       realIndex = (total_count > 1) ? index-1 : index;        // calculate item index considering 'select all' item
+
+       // check boundary
+       if (realIndex < 0 ) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
+               return NULL;
+       }
+
+       if (realIndex < insert_count) {
+               media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [INSERT MEDIA] index of %d", realIndex);
+       } else if (realIndex < total_count) {
+               media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [ATTACH MEDIA] index of %d", realIndex-insert_count);
+       }
+
+       if (strcmp(part, "elm.icon.1") == 0) {
+               check = elm_check_add(obj);
+               //set the State pointer to keep the current UI state of Checkbox.
+               elm_check_state_pointer_set(check, &media_info->isChecked);
+               evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               media_info->check_item = check;
+
+               return check;
+       } else  if (strcmp(part, "elm.icon.2") == 0) {
+               Evas_Object *image = NULL;
+
+               image = elm_icon_add(obj);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_info->pfile_path = %s", media_info->pfile_path);
+
+               /*set attach file icon*/
+               if (media_info->media_type == MSG_VIEWER_MEDIA_IMG ||
+                               media_info->media_type == MSG_VIEWER_MEDIA_ANIMATE) {
+                       elm_image_file_set(image, media_info->pfile_path, NULL);
+               } else if (media_info->media_type == MSG_VIEWER_MEDIA_DRM) {
+                       elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_SMALL_ICON);
+               } else {
+                       if (strlen(media_info->pfile_path)) {
+                               const char *icon_path = NULL;
+
+                               icon_path = msg_common_get_file_icon(media_info->pfile_path);
+                               if (icon_path) {
+                                       elm_image_file_set(image, MSG_IMAGES_EDJ, icon_path);
+                               } else {
+                                       D_EMSG("icon_path is NULL");
+                                       elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_ICON);
+                               }
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "filepath is NULL");
+                               return NULL;
+                       }
+               }
+
+               if (image)
+                       evas_object_size_hint_aspect_set(image, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+               return image;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part : %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_viewer_save_attachments_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)evas_object_data_get(obj, "viewer_play_data");
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
+
+       int i = 0;
+       int index = 0;
+       int realIndex = 0;
+       int insert_count = viewer_play_data->insert_count;
+       int attach_count = viewer_play_data->attach_count;
+       int total_count = insert_count + attach_count;
+       bool isAllSelected = TRUE;
+       bool isNoneSelected = TRUE;
+
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *sel_media_info = NULL;
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *tmp_media_info = NULL;
+
+       if (item != NULL) {
+               index = (int)elm_object_item_data_get(item);
+               realIndex = (total_count > 1) ? index-1 : index;                // calculate item index considering 'select all' item
+
+               // check boundary
+               if (realIndex < 0 ) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index!!index = %d", index);
+                       return;
+               }
+
+               elm_genlist_item_selected_set(item, EINA_FALSE);
+
+               if (realIndex < insert_count) {
+                       sel_media_info = eina_list_nth(viewer_play_data->insert_list, realIndex);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [INSERT MEDIA] index of %d", realIndex);
+               } else {
+                       sel_media_info = eina_list_nth(viewer_play_data->attach_list, realIndex-insert_count);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected media is [ATTACH MEDIA] index of %d", realIndex-insert_count);
+               }
+
+               // toggle check status
+               sel_media_info->isChecked = !sel_media_info->isChecked;
+
+               elm_genlist_item_update(item);
+
+               //check condition for set select all item
+               if (total_count > 1 && sel_media_info->isChecked) {
+                       i =0;
+                       for (i = 0; i < total_count; i++) {
+                               if (i < viewer_play_data->insert_count) {
+                                       tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
+                                       if (!tmp_media_info->isChecked) {
+                                               isAllSelected = FALSE;
+                                               break;
+                                       }
+                               } else if (i < total_count) {
+                                       tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
+                                       if (!tmp_media_info->isChecked) {
+                                               isAllSelected = FALSE;
+                                               break;
+                                       }
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
+                               }
+                       }
+
+                       if (isAllSelected) {
+                               elm_check_state_set(viewer_play_data->sa_check, EINA_TRUE);
+                               viewer_play_data->isSelectAll = EINA_TRUE;
+                       }
+               }
+
+               // check condition for release select all item
+               if (total_count > 1 && !sel_media_info->isChecked && viewer_play_data->isSelectAll) {
+                       elm_check_state_set(viewer_play_data->sa_check, EINA_FALSE);
+                       viewer_play_data->isSelectAll = EINA_FALSE;
+               }
+
+               // check condition for enable save button item
+               for (i = 0; i < total_count; i++) {
+                       if (i < viewer_play_data->insert_count) {
+                               tmp_media_info = eina_list_nth(viewer_play_data->insert_list, i);
+                               if (tmp_media_info->isChecked) {
+                                       isNoneSelected = FALSE;
+                                       break;
+                               }
+                       } else if (i < total_count) {
+                               tmp_media_info = eina_list_nth(viewer_play_data->attach_list, i-viewer_play_data->insert_count);
+                               if (tmp_media_info->isChecked) {
+                                       isNoneSelected = FALSE;
+                                       break;
+                               }
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!");
+                       }
+               }
+               elm_object_disabled_set(viewer_play_data->save_button, (isNoneSelected) ? EINA_TRUE : EINA_FALSE);
+       }
+}
+
+static void __msg_ui_viewer_help_page_save_all_item(MSG_PLAY_DATA_S *viewer_play_data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->attach_list == NULL);
+
+       int attach_count = eina_list_count(viewer_play_data->attach_list);
+       int index = 0;
+       int attach_index = 0;
+       int failed_count = 0;
+       int saved_count = 0;
+
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttachInfo = NULL;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "attach_cnt = %d", attach_count);
+
+       while (index < attach_count) {
+               pAttachInfo = eina_list_nth(viewer_play_data->attach_list , attach_index++);
+
+               if (pAttachInfo) {
+                       /*get default file path*/
+                       MSG_BOOL result = FALSE;
+                       char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
+
+                       result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
+                       if (result) {
+                               char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
+                               snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, pAttachInfo->pfile_name);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dest pfile_path [%s]", dst_path);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "src pfile_path [%s]", pAttachInfo->pfile_path);
+
+                               char *result_path = msg_ui_viewer_util_copy_file(pAttachInfo->pfile_path, dst_path);
+                               if (result_path) {
+                                       saved_count++;
+                                       free(result_path);
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed index = %d", index);
+                                       failed_count++;
+                               }
+                       } else {
+                               failed_count++;
+                       }
+
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL index = %d", index);
+                       failed_count++;
+               }
+
+               pAttachInfo = NULL;
+
+               index++;
+       }
+
+       /* show indicator status text */
+       if (failed_count == attach_count) {
+               status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+       } else {
+               if (attach_count == 1 && failed_count == 0) {
+                       status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
+               } else {
+                       char buf[DEF_BUF_LEN_S + 1] = {0, };
+                       snprintf(buf, sizeof(buf), "%s (%d/%d)", dgettext("sys_string", "IDS_COM_POP_SAVED"), saved_count, attach_count);
+                       status_message_post(buf);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_help_page_save_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
+       MSG_PLAY_DATA_S *viewer_play_data = pAttach_info->viewer_play_data;
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, viewer_play_data == NULL, "viewer_play_data is NULL");
+
+       if (strlen(pAttach_info->pfile_path) == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pfile_path is NULL");
+               if (pAttach_info->isSaveAll == FALSE) {
+                       status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+               } else {                //Save all
+                       __msg_ui_viewer_help_page_save_all_item(viewer_play_data);
+               }
+               return;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "source pfile_path = [%s]", pAttach_info->pfile_path);
+               MSG_BOOL result = 0;
+               MSG_BOOL issave = TRUE;
+               char dir_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0};
+
+               /*get default file path*/
+               result = msg_viewer_util_get_default_path(dir_path, sizeof(dir_path));
+               if (result) {
+                       char dst_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1] = {0,};
+                       snprintf(dst_path, sizeof(dst_path), "%s/%s", dir_path, pAttach_info->pfile_name);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dst_path = [%s]", dst_path);
+
+                       char *result_path = msg_ui_viewer_util_copy_file(pAttach_info->pfile_path, dst_path);
+                       if (result_path) {
+                               free(result_path);
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_util_copy_file is failed, [src] = %s, [dst] = %s", pAttach_info->pfile_path, dst_path);
+                               issave = FALSE;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_viewer_util_get_default_path is failed");
+                       status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+                       return;
+               }
+
+               if (issave)
+                       status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_SAVED_IN_MY_FILES"));
+               else
+                       status_message_post(dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_more_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       const char *label = elm_object_item_text_get((Elm_Object_Item *)event_info);
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB")) == 0) {
+               msg_ui_viewer_copy_message_text_to_clipboard(viewer_play_data);
+
+               /* play viewer again if previous status was PLAY */
+               if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+                       if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                               return;
+                       }
+               }
+       } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB")) == 0) {
+               msg_ui_viewer_create_msg_detail_popup(viewer_play_data);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid list type");
+               return;
+       }
+
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_more_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* play viewer again if previous status was PLAY */
+       if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_protection_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL);
+
+       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_main_data == NULL);
+
+       msg_error_t err = MSG_SUCCESS;
+       bool is_protected = false;
+
+       msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &is_protected);
+
+       /* get lock status and change status */
+       err = msg_update_protected_status(viewer_play_data->msgHandle, viewer_play_data->msgID, ((is_protected) ? false : true));
+
+       /* update message info */
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_update_protected_status is failed");
+               return;
+       }
+
+       msg_set_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, !is_protected);
+
+       /* delete ctx popup */
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* signal emit for showing/hiding lock icon */
+       if (is_protected)
+               edje_object_signal_emit(_EDJ(viewer_play_data->subject_index_layout), "lock/icon/hide", "*");
+       else
+               edje_object_signal_emit(_EDJ(viewer_play_data->subject_index_layout), "lock/icon/show", "*");
+
+       /* play viewer again if previous status was PLAY */
+       if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+
+       /* send refresh conversation result to bubble-composer ug */
+       char str_id[DEF_BUF_LEN] = {0,};
+       service_h svc_handle = NULL;
+
+       service_create(&svc_handle);
+       if (svc_handle < 0 || svc_handle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create is failed");
+               return;
+       }
+
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MODE, MSG_BUNDLE_VALUE_REFRESH_CONV);
+
+       snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, str_id);
+
+       ug_send_result(viewer_main_data->viewer_ug, svc_handle);
+
+       service_destroy(svc_handle);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+}
diff --git a/viewer/src/msg-ui-viewer-play-view.c b/viewer/src/msg-ui-viewer-play-view.c
new file mode 100755 (executable)
index 0000000..1d197a0
--- /dev/null
@@ -0,0 +1,2909 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-play-view.h"
+#include "msg-ui-viewer-main.h"
+#include "msg-ui-image-resource.h"
+#include "msg-ui-viewer-utility.h"
+#include "msg-ui-common-utility.h"
+
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+
+#include <Ecore_X.h>
+#include <utilX.h>
+#include <glib.h>
+#include <contacts.h>
+#include "appsvc.h"
+#include <sound_manager.h>
+#include <status.h>
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+/* message */
+static MSG_BOOL __msg_ui_viewer_play_view_get_message_info(void *data);
+static Eina_List* __msg_ui_viewer_get_inserted_item_list(MSG_PLAY_DATA_S *data);
+static Eina_List* __msg_ui_viewer_get_attach_list(MSG_PLAY_DATA_S *data);
+static void __msg_ui_viewer_init_font_size(MSG_PLAY_DATA_S *data);
+static void __msg_ui_viewer_vconf_changed_cb(keynode_t *key, void *data);
+
+/* create layout */
+static void __msg_ui_viewer_create_subject_index_layout(MSG_PLAY_DATA_S *data);
+static MSG_BOOL __msg_ui_viewer_create_content_layout(MSG_PLAY_DATA_S *data);
+static void __msg_ui_viewer_create_play_controller(MSG_PLAY_DATA_S *data);
+static void __msg_ui_viewer_create_control_toolbar(MSG_PLAY_DATA_S *data);
+static void __msg_ui_viewer_get_layout_size(MSG_PLAY_DATA_S *data, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom);
+
+/* help page genlist */
+static char *__msg_ui_viewer_help_page_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_viewer_help_page_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_viewer_help_page_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_help_page_gl_del(void *data, Evas_Object *obj);
+
+/* message details */
+static void __msg_ui_viewer_message_details_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+/* volume key action related with volume bar */
+static void __msg_ui_viewer_grab_volume_key(void *data);
+static void __msg_ui_viewer_ungrab_volume_key(void *data);
+static void __msg_ui_viewer_volumebar_volume_up(Evas_Object *obj);
+static void __msg_ui_viewer_volumebar_volume_down(Evas_Object *obj);
+
+/* volume action with volume key and slide callback */
+static Eina_Bool __msg_ui_viewer_volume_key_release_cb(void *data, int type, void *event);
+static Eina_Bool __msg_ui_viewer_volume_key_press_cb(void *data, int type, void *event);
+static Eina_Bool __msg_ui_viewer_up_key_long_press_cb(void *data);
+static Eina_Bool __msg_ui_viewer_down_key_long_press_cb(void *data);
+static Eina_Bool __msg_ui_viewer_volumebar_timer_cb(void *data);
+
+/* volume action related with volumebar slider */
+static void __msg_ui_viewer_volumebar_drag_start_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_volumebar_drag_stop_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_volumebar_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_volumebar_event_cb(void *user_data, Evas_Object *obj, MSG_VIEWER_VOLUME_BAR_EVENT_E event);
+static void __msg_ui_viewer_volumebar_event_callback_add(Evas_Object *obj, MSG_VIEWER_VOLUMEBAR_CB event_cb);
+
+/* volume action related with SOUNDMANAGER */
+static int __msg_ui_viewer_get_max_volume(void);
+static int __msg_ui_viewer_get_current_volume(void);
+static bool __msg_ui_viewer_set_volume(int volume);
+
+/*==================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+MSG_SMIL_ERROR_E msg_ui_viewer_smil_cb(SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus, void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, eventStatus == NULL, MSG_ERR_SMIL_UI_DISPLAY_FAIURE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, MSG_ERR_SMIL_UI_DISPLAY_FAIURE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       char title_string[VIEWER_TITLE_FONT_LEN + 1] = {0, };
+       int total_page = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "clientCbEvent : %d", eventStatus->clientCbEvent);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "isLastSlide : %d", eventStatus->isLastSlide);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "isHelpSlide : %d", eventStatus->isHelpSlide);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pageIdx : %d", eventStatus->pageIdx);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pageCnt : %d", eventStatus->pageCnt);
+
+       viewer_play_data->smil_eventStatus = eventStatus;
+       /*update prev/next button*/
+       msg_ui_viewer_update_play_controller(viewer_play_data, MSG_VIEWER_UNKOWN);
+
+       /*for Multipart.Mixed "Slide" count info.*/
+       if (eventStatus->pageCnt == 0 && eventStatus->clientCbEvent != SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START)
+               total_page = eventStatus->pageCnt + 1;
+       else
+               total_page = eventStatus->pageCnt;
+
+       /*update page index*/
+       snprintf(title_string, sizeof(title_string), "%d/%d ", eventStatus->pageIdx + 1, total_page);
+       edje_object_part_text_set(_EDJ(viewer_play_data->subject_index_layout), "page/text", title_string);
+
+       if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE && eventStatus->isLastSlide == TRUE) {
+               MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+               msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "launchmode : %d", launchmode);
+
+               if (launchmode == MSG_VIEWER_PREVIEW_MODE) {
+                       viewer_play_data->status = MSG_VIEWER_STOP;
+                       if (viewer_play_data->play_controller)
+                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "play", "*");
+                       //do not delete progressbar timer, it will be removed automatically in timer callback with return value ECORE_CALLBACK_CANCEL
+               } else if (launchmode == MSG_VIEWER_FULLVIEW_MODE) {
+                       viewer_play_data->status = MSG_VIEWER_STOP;
+                       if (viewer_play_data->play_controller)
+                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "play", "*");
+                               //do not delete progressbar timer, it will be removed automatically in timer callback with return value ECORE_CALLBACK_CANCEL
+                       if (viewer_play_data->popup) {
+                               evas_object_del(viewer_play_data->popup);
+                               viewer_play_data->popup = NULL;
+                               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid launchmode");
+               }
+       } else if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_PAGE_MEDIA_PLAY_START ||
+                               eventStatus->clientCbEvent == SMIL_RENDER_EVENT_PAGE_PLAY_START) {      /*slide is playing*/
+               double current_slide_time = 0.0;
+               double remain_slide_time = 0.0;
+               double remain_next_slide_time = 0.0;
+               if (msg_smil_get_slide_time(viewer_play_data->SmilHandle, eventStatus->pageIdx, FALSE, &remain_slide_time)) {
+                       if (msg_smil_get_slide_time(viewer_play_data->SmilHandle, eventStatus->pageIdx+1, FALSE, &remain_next_slide_time))
+                               current_slide_time = remain_slide_time - remain_next_slide_time;
+                       else
+                               current_slide_time = remain_slide_time;
+               }
+
+               if (current_slide_time <= 0) {          //for infinite duration slide, duration <= 0
+                       if (viewer_play_data->play_controller_progressbar_timer)
+                               ecore_timer_freeze(viewer_play_data->play_controller_progressbar_timer);
+               } else {
+                       if (viewer_play_data->play_controller_progressbar_timer)
+                               ecore_timer_thaw(viewer_play_data->play_controller_progressbar_timer);
+               }
+
+               //set pause icon in play controller
+               if (viewer_play_data->play_controller)
+                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "pause", "*");
+
+               viewer_play_data->status = MSG_VIEWER_PLAY;
+       } else if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_PAUSE_CURRENT_PAGE || eventStatus->clientCbEvent == SMIL_RENDER_EVENT_MOVE_PAGE_AFTER_PAUSED) {
+               if (viewer_play_data->play_controller)
+                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "play", "*");
+
+               viewer_play_data->status = MSG_VIEWER_PAUSE;
+
+               if (viewer_play_data->play_controller_progressbar_timer)
+                       ecore_timer_freeze(viewer_play_data->play_controller_progressbar_timer);
+       } else if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_ERROR) {
+               /*stop smil player*/
+               if (msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_STOP) == MSG_SMIL_SUCCESS) {
+                       if (viewer_play_data->play_controller)
+                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "play", "*");
+                               //do not delete progressbar timer, it will be removed automatically in timer callback with return value ECORE_CALLBACK_CANCEL
+                       viewer_play_data->status = MSG_VIEWER_STOP;
+                       msg_ui_viewer_update_play_controller(viewer_play_data, MSG_VIEWER_STOP);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler is failed");
+               }
+
+               /* show popup */
+               if (msg_common_is_connected_call()) {
+                       viewer_play_data->popup_type = MSG_VIEWER_NORMAL_POPUP;
+                       msg_ui_viewer_show_popup(viewer_play_data, viewer_play_data->main_window, dgettext(MESSAGE_PKGNAME, "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"));
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return MSG_SMIL_SUCCESS;
+}
+
+void msg_ui_viewer_update_play_controller(void *data, MSG_VIEWER_PLAY_STATUS_E status)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_BOOL bfisrt_page = FALSE;
+       MSG_BOOL blast_page = FALSE;
+       SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus = viewer_play_data->smil_eventStatus;
+       SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+
+       if (status == MSG_VIEWER_STOP) {
+               if (viewer_play_data->play_controller) {
+                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+               }
+       } else {
+               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, eventStatus == NULL);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, slide == NULL);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, slide->commonData == NULL);
+               if (slide->commonData->pageCnt > 0) {
+                       if (slide->pageIdx == 0)
+                               bfisrt_page = TRUE;
+
+                       if (slide->pageIdx + 1 == slide->commonData->pageCnt)
+                               blast_page = TRUE;
+
+                       if (bfisrt_page) {      /*first page*/
+                               if (viewer_play_data->play_controller) {
+                                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+                               }
+                       } else {
+                               if (viewer_play_data->play_controller) {
+                                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_enable", "*");
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Enable prev_button");
+                               }
+                       }
+
+                       if (blast_page) {        /*lastpage*/
+                               if (viewer_play_data->play_controller) {
+                                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+                               }
+                       } else {
+                               if (viewer_play_data->play_controller) {
+                                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_enable", "*");
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Enable next_button");
+                               }
+                       }
+
+                       /*smil player is finished*/
+                       if (eventStatus->clientCbEvent == SMIL_RENDER_EVENT_LAST_PAGE_PLAY_COMPLETE &&
+                                       eventStatus->isLastSlide == TRUE) {
+                               if (viewer_play_data->play_controller) {
+                                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+                                       edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+                               }
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Multipart.mixed message");
+                       if (viewer_play_data->play_controller) {
+                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "next_disable", "*");
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "prev_disable", "*");
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+MSG_BOOL msg_ui_viewer_command_play_pause(void *data, MSG_VIEWER_ACTION_TYPE_E action)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->status : %d", viewer_play_data->status);
+
+       /*prevent invalid double pressing button event after launching ug or app( call, vtcall)*/
+       if (viewer_play_data->launch_cmd != MSG_VIEWER_DEFAULT_MODE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "launch_cmd is not MSG_VIEWER_DEFAULT_MODE (%d)", viewer_play_data->launch_cmd);
+               return FALSE;
+       }
+
+       switch(action) {
+               case MSG_VIEWER_ACTION_TOOLBAR_PAUSE :
+                       /* fall through */
+               case MSG_VIEWER_ACTION_AUTO_PAUSE :
+                       /* Do pause action only if current status is PLAY */
+                       if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+                               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PAUSE);
+                               if (err != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                                       return FALSE;
+                               } else {
+                                       if (viewer_play_data->play_controller)
+                                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "play", "*");
+                                       viewer_play_data->status = MSG_VIEWER_PAUSE;
+
+                                       if (viewer_play_data->play_controller_progressbar_timer)
+                                               ecore_timer_freeze(viewer_play_data->play_controller_progressbar_timer);
+                               }
+                       }
+                       break;
+               case MSG_VIEWER_ACTION_TOOLBAR_PLAY :
+                       /* fall through */
+               case MSG_VIEWER_ACTION_AUTO_PLAY :
+                       /* Do play action when play status is STOP & PAUSE */
+                       if (viewer_play_data->status == MSG_VIEWER_STOP) {
+                               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PLAY);
+                               if (err != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                                       return FALSE;
+                               } else {
+                                       if (viewer_play_data->play_controller) {
+                                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "pause", "*");
+                                               msg_ui_viewer_create_progressbar(viewer_play_data, 0);
+                                       }
+                                       viewer_play_data->status = MSG_VIEWER_PLAY;
+                               }
+                       } else if (viewer_play_data->status == MSG_VIEWER_PAUSE) {
+                               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_RESUME);
+                               if (err != MSG_SMIL_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                                       return FALSE;
+                               } else {
+                                       if (viewer_play_data->play_controller)
+                                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "pause", "*");
+                                       viewer_play_data->status = MSG_VIEWER_PLAY;
+
+                                       if (viewer_play_data->play_controller_progressbar_timer)
+                                               ecore_timer_thaw(viewer_play_data->play_controller_progressbar_timer);
+                               }
+                       }
+                       break;
+               default :
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid play status case");
+                       return FALSE;
+       }
+
+       /* refreshing play controller timer by button action */
+       if (action == MSG_VIEWER_ACTION_TOOLBAR_PLAY) {
+               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+               if (viewer_play_data->title_menu_opened)
+                       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+               viewer_play_data->auto_resume_state = true;
+       } else if (action == MSG_VIEWER_ACTION_TOOLBAR_PAUSE) {
+               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+               viewer_play_data->auto_resume_state = false;
+       } else {
+               /* case for not button action */
+               if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+                       if (viewer_play_data->title_menu_opened)
+                               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+
+                       /* show play controller again to notify SMIL is resumed */
+                       if (viewer_play_data->play_controller && !viewer_play_data->playcontroller_opened) {
+                               elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+                               evas_object_show(viewer_play_data->play_controller);
+                               viewer_play_data->playcontroller_opened = true;
+                               elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+                               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+                       }
+               } else if (viewer_play_data->status == MSG_VIEWER_PAUSE) {
+                       if (viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+                               /* show play controller again to notify SMIL is paused */
+                               if (viewer_play_data->play_controller && !viewer_play_data->playcontroller_opened) {
+                                       elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+                                       evas_object_show(viewer_play_data->play_controller);
+                                       viewer_play_data->playcontroller_opened = true;
+                                       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+                                       msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+                               }
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return TRUE;
+}
+
+void msg_ui_viewer_play_view_init(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       viewer_play_data->main_window = NULL;
+       viewer_play_data->navi_frame = NULL;
+       viewer_play_data->navi_item = NULL;
+       viewer_play_data->navi_title_layout= NULL;
+       viewer_play_data->title_button = NULL;
+       viewer_play_data->attach_button = NULL;
+       viewer_play_data->title_box_layout = NULL;
+       viewer_play_data->subject_index_layout = NULL;
+       viewer_play_data->play_controller = NULL;
+       viewer_play_data->play_layout = NULL;
+       viewer_play_data->help_page_gl = NULL;
+       viewer_play_data->save_attachment_gl = NULL;
+       viewer_play_data->render_entry = NULL;
+       viewer_play_data->save_button = NULL;
+       viewer_play_data->sa_check = NULL;
+       viewer_play_data->m_x = 0;
+       viewer_play_data->m_y = 0;
+       viewer_play_data->mouse_down_event_handler = NULL;
+       viewer_play_data->mouse_up_event_handler = NULL;
+       viewer_play_data->msgHandle = NULL;
+       viewer_play_data->msgID = -1;
+       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+       viewer_play_data->status = MSG_VIEWER_UNKOWN;
+       viewer_play_data->msg_t = NULL;
+       viewer_play_data->mms_t = NULL;
+       viewer_play_data->smil_eventStatus = NULL;
+       viewer_play_data->popup = NULL;
+       viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+       viewer_play_data->del_idler = NULL;
+       viewer_play_data->play_controller_timer = NULL;
+       viewer_play_data->ctrl_start_x = 0;
+       viewer_play_data->ctrl_start_y = 0;
+       viewer_play_data->insert_count = 0;
+       viewer_play_data->attach_count = 0;
+       viewer_play_data->insert_list = NULL;
+       viewer_play_data->attach_list = NULL;
+       viewer_play_data->title_menu_opened = 0;
+       viewer_play_data->playcontroller_opened = 0;
+       viewer_play_data->auto_resume_state = true;
+       viewer_play_data->drag_volume_slider = false;
+       viewer_play_data->volkey_release_handler = NULL;
+       viewer_play_data->volkey_press_handler = NULL;
+       viewer_play_data->vol_up_key_longpress = NULL;
+       viewer_play_data->vol_down_key_longpress = NULL;
+       viewer_play_data->xdisplay = NULL;
+
+       viewer_play_data->title_th = elm_theme_new();
+       elm_theme_ref_set(viewer_play_data->title_th, NULL);
+       elm_theme_extension_add(viewer_play_data->title_th, MSG_CUSTOM_WINSET_EDJ);
+
+       viewer_play_data->progress_th = elm_theme_new();
+       elm_theme_ref_set(viewer_play_data->progress_th, NULL);
+       elm_theme_extension_add(viewer_play_data->progress_th, MSG_VIEWER_EDJ);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_destroy_play_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+
+       if (viewer_play_data->status == MSG_VIEWER_PLAY || viewer_play_data->status == MSG_VIEWER_PAUSE) {
+               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_STOP);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+               } else {
+                       viewer_play_data->status = MSG_VIEWER_STOP;
+               }
+       }
+
+       if (vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, __msg_ui_viewer_vconf_changed_cb) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "unregister failed in vconf_notify_key_changed with key[%s]", VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE);
+       }
+       if (vconf_ignore_key_changed(VCONFKEY_MSG_APP_FONT_SIZE, __msg_ui_viewer_vconf_changed_cb) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "unregister failed in vconf_notify_key_changed with key[%s]", VCONFKEY_MSG_APP_FONT_SIZE);
+       }
+
+       if (viewer_play_data->insert_list) {
+               int index = 0;
+               int ntotal = 0;
+               ntotal = eina_list_count(viewer_play_data->insert_list);
+               for (index = 0; index < ntotal; index++) {
+                       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pMedia_info = eina_list_nth(viewer_play_data->insert_list, index);
+                       if (pMedia_info) {
+                               free(pMedia_info);
+                               pMedia_info = NULL;
+                       }
+               }
+               eina_list_free(viewer_play_data->insert_list);
+               viewer_play_data->insert_list = NULL;
+       }
+
+       if (viewer_play_data->attach_list) {
+               int index = 0;
+               int ntotal = 0;
+               ntotal = eina_list_count(viewer_play_data->attach_list);
+               for (index = 0; index < ntotal; index++) {
+                       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = eina_list_nth(viewer_play_data->attach_list, index);
+                       if (pAttach_info) {
+                               free(pAttach_info);
+                               pAttach_info = NULL;
+                       }
+               }
+               eina_list_free(viewer_play_data->attach_list);
+               viewer_play_data->attach_list = NULL;
+       }
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       if (viewer_play_data->del_idler) {
+               ecore_idler_del(viewer_play_data->del_idler);
+               viewer_play_data->del_idler = NULL;
+       }
+
+       if (viewer_play_data->help_page_gl) {
+               evas_object_del(viewer_play_data->help_page_gl);
+               viewer_play_data->help_page_gl = NULL;
+       }
+
+       if (viewer_play_data->play_controller_timer) {
+               ecore_timer_del(viewer_play_data->play_controller_timer);
+               viewer_play_data->play_controller_timer = NULL;
+       }
+
+       if (viewer_play_data->play_controller_progressbar_timer) {
+               ecore_timer_del(viewer_play_data->play_controller_progressbar_timer);
+               viewer_play_data->play_controller_progressbar_timer = NULL;
+       }
+
+       if (viewer_play_data->title_th) {
+               elm_theme_extension_del(viewer_play_data->title_th, MSG_CUSTOM_WINSET_EDJ);
+               elm_theme_free(viewer_play_data->title_th);
+               viewer_play_data->title_th = NULL;
+       }
+
+       if (viewer_play_data->progress_th) {
+               elm_theme_extension_del(viewer_play_data->progress_th, EDJDIR"/msg_viewer.edj");
+               elm_theme_free(viewer_play_data->progress_th);
+               viewer_play_data->progress_th = NULL;
+       }
+
+       if (viewer_play_data->volumebar_timer) {
+               ecore_timer_del(viewer_play_data->volumebar_timer);
+               viewer_play_data->volumebar_timer = NULL;
+       }
+
+       if (viewer_play_data->volkey_release_handler) {
+               ecore_event_handler_del(viewer_play_data->volkey_release_handler);
+               viewer_play_data->volkey_release_handler = NULL;
+       }
+
+       if (viewer_play_data->vol_up_key_longpress) {
+               ecore_timer_del(viewer_play_data->vol_up_key_longpress);
+               viewer_play_data->vol_up_key_longpress = NULL;
+       }
+
+       if (viewer_play_data->volkey_press_handler) {
+               ecore_event_handler_del(viewer_play_data->volkey_press_handler);
+               viewer_play_data->volkey_press_handler = NULL;
+       }
+
+       if (viewer_play_data->vol_down_key_longpress) {
+               ecore_timer_del(viewer_play_data->vol_down_key_longpress);
+               viewer_play_data->vol_down_key_longpress = NULL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_connect_handler(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       /* connect mouse handler for flick event */
+       if (!viewer_play_data->mouse_down_event_handler)
+               viewer_play_data->mouse_down_event_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, msg_ui_viewer_mouse_down_cb, (void *)viewer_play_data);
+
+       __msg_ui_viewer_grab_volume_key(viewer_play_data);
+
+       /* connect key handler for volume up/down */
+       if (!viewer_play_data->volkey_release_handler)
+               viewer_play_data->volkey_release_handler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, __msg_ui_viewer_volume_key_release_cb, (void *)viewer_play_data);
+
+       if (!viewer_play_data->volkey_press_handler)
+               viewer_play_data->volkey_press_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __msg_ui_viewer_volume_key_press_cb, (void *)viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_disconnect_handler(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->mouse_up_event_handler) {
+               ecore_event_handler_del(viewer_play_data->mouse_up_event_handler);
+               viewer_play_data->mouse_up_event_handler = NULL;
+       }
+
+       if (viewer_play_data->mouse_down_event_handler) {
+               ecore_event_handler_del(viewer_play_data->mouse_down_event_handler);
+               viewer_play_data->mouse_down_event_handler = NULL;
+       }
+
+       if (viewer_play_data->volkey_release_handler) {
+               ecore_event_handler_del(viewer_play_data->volkey_release_handler);
+               viewer_play_data->volkey_release_handler = NULL;
+       }
+
+       if (viewer_play_data->vol_up_key_longpress) {
+               ecore_timer_del(viewer_play_data->vol_up_key_longpress);
+               viewer_play_data->vol_up_key_longpress = NULL;
+       }
+
+       if (viewer_play_data->volkey_press_handler) {
+               ecore_event_handler_del(viewer_play_data->volkey_press_handler);
+               viewer_play_data->volkey_press_handler = NULL;
+       }
+
+       if (viewer_play_data->vol_down_key_longpress) {
+               ecore_timer_del(viewer_play_data->vol_down_key_longpress);
+               viewer_play_data->vol_down_key_longpress = NULL;
+       }
+
+       __msg_ui_viewer_ungrab_volume_key(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+MSG_BOOL msg_ui_viewer_create_player_view(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL, FALSE);
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+       Evas_Object *layout = NULL;
+       MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+
+       viewer_play_data->xdisplay = ecore_x_display_get();
+       if (viewer_play_data->xdisplay == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ecore_x_display_get() is failed");
+               return FALSE;
+       }
+
+       /*get message information like bgcolor, insert and attach count
+         *it should be called before __msg_ui_viewer_create_control_toolbar*/
+       if (__msg_ui_viewer_play_view_get_message_info(viewer_play_data) == FALSE)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_ui_viewer_play_view_get_content_count is failed");
+
+       layout = msg_ui_viewer_get_main_layout(viewer_play_data->viewer_main);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, layout == NULL, FALSE);
+
+       /* create naviframe */
+       if (!viewer_play_data->navi_frame) {
+               viewer_play_data->navi_frame = msg_ui_viewer_create_navigation_layout(layout);
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data->navi_frame == NULL, FALSE);
+               msg_ui_viewer_set_navi_frame(viewer_play_data->viewer_main, viewer_play_data->navi_frame);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "navi_frame is already created");
+       }
+
+       /*create play layout*/
+       if (__msg_ui_viewer_create_content_layout(viewer_play_data) == FALSE)
+               return FALSE;
+
+       msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
+
+       /* create back button */
+       Evas_Object     *back_btn = elm_button_add(viewer_play_data->navi_frame);
+       elm_object_style_set(back_btn, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_btn, "clicked", msg_ui_viewer_back_button_cb, (void*)viewer_play_data);
+
+       /* set title text & title button */
+       if (launchmode == MSG_VIEWER_PREVIEW_MODE) {
+               /* create naviframe item and push */
+               viewer_play_data->navi_item = elm_naviframe_item_push(viewer_play_data->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_HEADER_PREVIEW"), back_btn, NULL, viewer_play_data->play_layout, NULL);
+       } else {
+               /* create naviframe item and push */
+               viewer_play_data->navi_item = elm_naviframe_item_push(viewer_play_data->navi_frame, NULL, back_btn, NULL, viewer_play_data->play_layout, "empty");
+
+               /* create naviframe title layout and set */
+               viewer_play_data->navi_title_layout = msg_ui_viewer_create_navi_title_layout(viewer_play_data);
+               elm_object_item_part_content_set(viewer_play_data->navi_item, "title", viewer_play_data->navi_title_layout);
+               msg_ui_viewer_set_navi_title_layout(viewer_play_data);
+       }
+
+       /* register vconf notify */
+       if (vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, __msg_ui_viewer_vconf_changed_cb, viewer_play_data) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "register failed in vconf_notify_key_changed with key[%s]", VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE);
+       }
+       if (vconf_notify_key_changed(VCONFKEY_MSG_APP_FONT_SIZE, __msg_ui_viewer_vconf_changed_cb, viewer_play_data) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "register failed in vconf_notify_key_changed with key[%s]", VCONFKEY_MSG_APP_FONT_SIZE);
+       }
+
+       /* font size set */
+       __msg_ui_viewer_init_font_size(viewer_play_data);
+       /* create subject & index layout */
+       __msg_ui_viewer_create_subject_index_layout(viewer_play_data);
+       /* create page navigator */
+       __msg_ui_viewer_create_play_controller(viewer_play_data);
+       /* create control toolbar */
+       __msg_ui_viewer_create_control_toolbar(viewer_play_data);
+       /* connect handlers */
+       msg_ui_viewer_connect_handler(viewer_play_data);
+
+       /* create smil rendering layout */
+       if (msg_smil_create_smil_player_layout(viewer_play_data->SmilHandle, viewer_play_data->play_layout) == FALSE)
+               return FALSE;
+
+       SMIL_POSITION_S left_top = {0,};
+       SMIL_POSITION_S right_bottom = {0,};
+       __msg_ui_viewer_get_layout_size(viewer_play_data, &left_top, &right_bottom);
+
+       if (msg_smil_set_smil_player_layout_size(viewer_play_data->SmilHandle, &left_top, &right_bottom) == FALSE)
+               return FALSE;
+
+       /*register help page show callback to renderer */
+       if (msg_smil_set_smil_player_help_page_cb(viewer_play_data->SmilHandle, msg_ui_viewer_help_page_smilrenderer_cb, (void *)viewer_play_data) == FALSE)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_set_smil_player_help_page_cb is failed");
+
+       /*register change font size callback to render */
+       if (msg_smil_set_smil_player_entry_handle_cb(viewer_play_data->SmilHandle, msg_ui_viewer_set_entry_handle_cb) == FALSE)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_set_smil_player_cutlink_cb is failed");
+
+       if (launchmode == MSG_VIEWER_PREVIEW_MODE) {
+               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PREVIEW_PLAY);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                       if (err != MSG_ERR_SMIL_UI_DISPLAY_FAIURE)
+                               return FALSE;
+               }
+       } else {
+               err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PLAY);
+               if (err != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+                       if (err != MSG_ERR_SMIL_UI_DISPLAY_FAIURE)
+                               return FALSE;
+               }
+       }
+
+       if (launchmode == MSG_VIEWER_FULLVIEW_MODE) {
+               /*set read status*/
+               bool readStatus = FALSE;
+               msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_READ_BOOL, &readStatus);
+
+               if (!readStatus)
+                       msg_update_read_status(viewer_play_data->msgHandle, viewer_play_data->msgID, TRUE);
+
+               /* send read report*/
+               int folder_id = MSG_MAX_FOLDER_ID;
+               msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);
+               if (folder_id == MSG_INBOX_ID) {
+                       msg_error_t err = MSG_SUCCESS;
+
+                       msg_struct_t rcvSetting_info = msg_create_struct(MSG_STRUCT_SETTING_MMS_RECV_OPT);
+                       err = msg_get_mms_recv_opt(viewer_play_data->msgHandle, rcvSetting_info);
+
+                       if (err == MSG_SUCCESS) {
+                               bool bReadReport;
+                               msg_get_bool_value(rcvSetting_info, MSG_MMS_RECVOPT_READ_REPORT_BOOL, &bReadReport);
+
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "bsend_read_report = %d", bReadReport);
+                               /*read report request status and sent read report result of current message will be checked by MF after calling msg_mms_send_read_report.
+                                 *So, currently ui always call msg_mms_send_read_report when setting value of send read report is on*/
+                               if (bReadReport)
+                                       msg_mms_send_read_report(viewer_play_data->msgHandle, viewer_play_data->msgID, MSG_READ_REPORT_IS_READ);
+
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_config is failed!");
+                       }
+                       msg_release_struct(&rcvSetting_info);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+
+MSG_BOOL msg_ui_viewer_show_player_view(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+
+       /* connect handler again*/
+       msg_ui_viewer_connect_handler(viewer_play_data);
+
+       /*change command bar*/
+       if (viewer_play_data->play_controller) {
+               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "pause", "*");
+               msg_ui_viewer_create_progressbar(viewer_play_data, 0);
+       }
+
+       /*Set title string*/
+       if (!viewer_play_data->navi_title_layout)
+               viewer_play_data->navi_title_layout = msg_ui_viewer_create_navi_title_layout(viewer_play_data);
+
+       msg_ui_viewer_set_navi_title_layout(viewer_play_data);
+
+       /*play player view*/
+       err = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PLAY);
+       if (err != MSG_SMIL_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", err);
+               return FALSE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+Evas_Object *msg_ui_viewer_create_navigation_layout(Evas_Object *parent)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, parent == NULL, NULL);
+       Evas_Object *navi_frame = NULL;
+
+       navi_frame = elm_naviframe_add(parent);
+       elm_object_part_content_set(parent, "elm.swallow.content", navi_frame);
+       evas_object_show(navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return navi_frame;
+}
+
+static void __msg_ui_viewer_init_font_size(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       int index = 0;
+       int font_size = 0;
+       int access_font_index = 0;
+       int msg_access_font_index = 0;
+
+
+       /* get msg accessibility font index */
+       if (msg_common_get_access_font_size(&msg_access_font_index) == FALSE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_get_access_font_size is failed !!");
+               msg_access_font_index = MSG_APP_FONT_SIZE_INDEX_NORMAL; /* 1 */
+       }
+
+       /* get accessibility font index */
+       if (vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &access_font_index) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE) is failed !!");
+               access_font_index = MSG_SYS_FONT_SIZE_INDEX_NORMAL;     /* 1 */
+       }
+
+       if (msg_common_get_font_size(&index) == FALSE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_get_font_size() is failed");
+               return;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected font_size index = %d", index);
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "VCONFKEY_MSG_APP_ACCESS_FONT_SIZE = %d", msg_access_font_index);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE = %d", access_font_index);
+
+       if (msg_access_font_index != access_font_index) {
+               font_size = msg_common_get_font_size_from_index(access_font_index);
+
+               /* sync current font size as accessibility font index */
+               if (msg_common_set_font_size(access_font_index) == FALSE)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_set_font_size(index = %d) is failed !!", access_font_index);
+
+               /* sync msg accessibility font size with accessibility font index */
+               if (msg_common_set_access_font_size(access_font_index) == FALSE)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_set_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE) is failed !!, [%d]", access_font_index);
+       } else {
+               font_size = msg_common_get_font_size_from_index(index);
+       }
+
+       viewer_play_data->font_size = font_size;
+}
+
+void msg_ui_viewer_set_font_size(MSG_PLAY_DATA_S *data, MSG_VIEWER_ENTRY_TYPE_E entry_type, MSG_VIEWER_FONT_CHANGE_TYPE_E change_type)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       int index = 0;
+       if (change_type == MSG_VIEWER_FONT_CHANGE_LOAD_SETTING) {
+               if (msg_common_get_font_size(&index) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_get_font_size() is failed");
+                       return;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected font_size index = %d", index);
+               }
+               viewer_play_data->font_size = msg_common_get_font_size_from_index(index);
+       } else {
+               index = msg_common_get_index_from_font_size(viewer_play_data->font_size);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "use latest updated font, index = %d, size = %d", index, viewer_play_data->font_size);
+       }
+
+       if (viewer_play_data->render_entry) {
+               char font_size_str[DEF_BUF_LEN_S + 1] = {0,};
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "entry type = %d", entry_type);
+
+               if (entry_type == MSG_VIEWER_ENTRY_NORMAL_TEXT)
+                       snprintf(font_size_str, sizeof(font_size_str), "DEFAULT='font_size=%d'", viewer_play_data->font_size);
+               else
+                       snprintf(font_size_str, sizeof(font_size_str), "DEFAULT='font_size=%d'", (viewer_play_data->font_size*4)/5);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font_size_str = (%s)", font_size_str);
+               elm_entry_text_style_user_push(viewer_play_data->render_entry, font_size_str);
+       }
+}
+
+static void __msg_ui_viewer_vconf_changed_cb(keynode_t *key, void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       int index = 0;
+       int font_size = 0;
+       char *key_name = NULL;
+
+       if ((key_name = vconf_keynode_get_name(key)) == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "key_name is NULL");
+               return;
+       }
+
+       if (!strcmp(key_name, VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE)) {
+               index = vconf_keynode_get_int(key);
+               font_size = msg_common_get_font_size_from_index(index);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font size updated with ACCESSIBILITY TYPE, index = %d, font size = %d", index, font_size);
+
+               viewer_play_data->font_size = font_size;
+
+               /* sync current font size as accessibility font index */
+               if (msg_common_set_font_size(index) == FALSE)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_set_font_size(index = %d) is failed !!", index);
+
+               /* sync msg accessibility font size with accessibility font index */
+               if (msg_common_set_access_font_size(index) == FALSE)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_set_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE) is failed !!, [%d]", index);
+
+       } else if (!strcmp(key_name, VCONFKEY_MSG_APP_FONT_SIZE)) {
+               index = vconf_keynode_get_int(key);
+               font_size = msg_common_get_font_size_from_index(index);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font size updated with MSG TYPE, index = %d, font size = %d", index, font_size);
+
+               viewer_play_data->font_size = font_size;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid key name");
+       }
+}
+
+static MSG_BOOL __msg_ui_viewer_create_content_layout(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (!viewer_play_data->play_layout) {
+               viewer_play_data->play_layout = elm_layout_add(viewer_play_data->navi_frame);
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data->play_layout == NULL, FALSE);
+               elm_layout_file_set(viewer_play_data->play_layout, MSG_VIEWER_THEME, "viewer_main");
+               evas_object_size_hint_weight_set(viewer_play_data->play_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(viewer_play_data->play_layout);
+
+               evas_object_event_callback_add(viewer_play_data->play_layout, EVAS_CALLBACK_MOUSE_DOWN, msg_ui_viewer_play_layout_mouse_down_cb, (void *)viewer_play_data);
+               evas_object_event_callback_add(viewer_play_data->play_layout, EVAS_CALLBACK_MOUSE_UP, msg_ui_viewer_play_layout_mouse_up_cb, (void *)viewer_play_data);
+               elm_object_signal_callback_add(viewer_play_data->play_layout, "action,clicked", "", msg_ui_viewer_play_layout_clicked_cb, (void *)viewer_play_data);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+static void __msg_ui_viewer_create_subject_index_layout(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL);
+       char strSubject[MAX_SUBJECT_LEN] = {0};
+
+       Evas_Object *layout = elm_layout_add(viewer_play_data->navi_frame);
+       elm_layout_file_set(layout, MSG_VIEWER_THEME, "subject/pageindex");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(layout);
+       viewer_play_data->subject_index_layout = layout;
+
+       /* set bg */
+       Evas_Object *bg = evas_object_rectangle_add(evas_object_evas_get(layout));
+       evas_object_color_set(bg, 248, 246, 239, 255);
+       elm_object_part_content_set(layout,  "rect/bg", bg);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(bg);
+
+       /* get subject str */
+       msg_get_str_value(viewer_play_data->msg_t, MSG_MESSAGE_SUBJECT_STR, strSubject, MAX_SUBJECT_LEN);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "subject text is %s", strSubject);
+
+       if (strSubject[0] != '\0')
+               edje_object_part_text_set(_EDJ(viewer_play_data->subject_index_layout), "subject/text", strSubject);
+
+       elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.subject", viewer_play_data->subject_index_layout);
+
+       /* set LOCK icon if available */
+       bool bProtected = false;
+       msg_get_bool_value(viewer_play_data->msg_t, MSG_MESSAGE_PROTECTED_BOOL, &bProtected);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Lock status of current message %d", bProtected);
+       edje_object_signal_emit(_EDJ(viewer_play_data->subject_index_layout), ((bProtected) ? "lock/icon/show" : "lock/icon/hide"), "*");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_create_play_controller(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       Evas_Object *layout = elm_layout_add(viewer_play_data->navi_frame);
+       elm_layout_file_set(layout, MSG_VIEWER_THEME, "play_controller");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(layout);
+
+       elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", layout);
+       viewer_play_data->play_controller = layout;
+       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+
+       //add signal callbacks
+       edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "volume_clicked", "", msg_ui_viewer_volume_button_cb, (void *)viewer_play_data);
+       edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "prev_clicked", "", msg_ui_viewer_prev_button_cb, (void *)viewer_play_data);
+       edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "play_clicked", "", msg_ui_viewer_play_pause_button_cb, (void *)viewer_play_data);
+       edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "pause_clicked", "", msg_ui_viewer_play_pause_button_cb, (void *)viewer_play_data);
+       edje_object_signal_callback_add(_EDJ(viewer_play_data->play_controller), "next_clicked", "", msg_ui_viewer_next_button_cb, (void *)viewer_play_data);
+
+       viewer_play_data->playcontroller_opened = true;
+
+       //register timer
+       msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+
+       //create progressbar
+       msg_ui_viewer_create_progressbar(viewer_play_data, 0);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_create_control_toolbar(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL);
+
+       Evas_Object *btn = NULL;
+       MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+
+       msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
+
+       if (launchmode == MSG_VIEWER_PREVIEW_MODE) {
+               // TODO : EMPTY, needs to add item?
+       } else if (launchmode == MSG_VIEWER_FULLVIEW_MODE) {
+               // unset and delete btn objects(init)
+               if (viewer_play_data->more_btn)
+                       evas_object_del(viewer_play_data->more_btn);
+               elm_object_item_part_content_unset(viewer_play_data->navi_item, "toolbar_more_btn");
+
+               // More button
+               btn = elm_button_add(viewer_play_data->navi_frame);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, btn == NULL);
+               elm_object_style_set(btn, "naviframe/more/default");
+               elm_object_item_part_content_set(viewer_play_data->navi_item, "toolbar_more_btn", btn);
+               viewer_play_data->more_btn = btn;
+
+               evas_object_smart_callback_add(btn, "clicked", msg_ui_viewer_more_button_cb, data);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid launch mode");
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+Evas_Object *msg_ui_viewer_create_navi_title_layout(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       Evas_Object     *title_layout = elm_layout_add(viewer_play_data->navi_frame);
+       elm_layout_file_set(title_layout, MSG_VIEWER_THEME, "title");
+
+       evas_object_size_hint_weight_set(title_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(title_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(title_layout);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return title_layout;
+}
+
+void msg_ui_viewer_set_navi_title_layout(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL);
+
+       int folder_id = MSG_MAX_FOLDER_ID;
+       char *display_name = NULL;
+       char title_address[MAX_ADDRESS_VAL_LEN + 1] = {0,};
+       MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+
+       msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);      //get msg folder type
+       msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
+
+       if (launchmode == MSG_VIEWER_PREVIEW_MODE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "launchmode is not applicable, current mode is %d", launchmode);
+               return;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "folder_id = [%d]", folder_id);
+
+               if (folder_id == MSG_INBOX_ID) {
+                       viewer_play_data->title_button = elm_button_add(viewer_play_data->navi_frame);
+                       evas_object_size_hint_weight_set(viewer_play_data->title_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_size_hint_align_set(viewer_play_data->title_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+                       elm_object_focus_allow_set(viewer_play_data->title_button, EINA_FALSE);
+                       elm_object_theme_set(viewer_play_data->title_button, viewer_play_data->title_th);
+                       elm_object_style_set(viewer_play_data->title_button, "title_button");
+
+                       char *address = NULL;
+                       int contact_id = 0;
+
+                       msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
+
+                       if (contact_id > 0) {
+                               display_name = msg_viewer_util_get_display_name_by_index(contact_id);
+
+                               if (display_name) {
+                                       snprintf(title_address, sizeof(title_address), "%s", display_name);
+                                       free(display_name);
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Contact added, But there is no display name");
+                                       snprintf(title_address, sizeof(title_address), "%s", dgettext("sys_string", "IDS_COM_BODY_NO_NAME"));
+                               }
+
+                               if (address)
+                                       free(address);
+                       } else {
+                               if (address) {
+                                       snprintf(title_address, sizeof(title_address), "%s", address);
+                                       free(address);
+                               }
+                       }
+
+                       elm_object_text_set(viewer_play_data->title_button, title_address);
+
+                       evas_object_show(viewer_play_data->title_button);
+                       elm_object_part_content_set(viewer_play_data->navi_title_layout, "title_btn", viewer_play_data->title_button);
+                       evas_object_smart_callback_add(viewer_play_data->title_button, "clicked", msg_ui_viewer_title_button_clicked_cb, (void *)viewer_play_data);
+               } else if (folder_id == MSG_OUTBOX_ID || folder_id == MSG_SENTBOX_ID) {
+                       viewer_play_data->title_button = elm_button_add(viewer_play_data->navi_frame);
+                       evas_object_size_hint_weight_set(viewer_play_data->title_button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+                       evas_object_size_hint_align_set(viewer_play_data->title_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+                       elm_object_focus_allow_set(viewer_play_data->title_button, EINA_FALSE);
+                       elm_object_theme_set(viewer_play_data->title_button, viewer_play_data->title_th);
+                       elm_object_style_set(viewer_play_data->title_button, "title_button");
+
+                       char *address = NULL;
+                       int contact_id = 0;
+
+                       msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
+
+                       if (contact_id > 0) {
+                               display_name = msg_viewer_util_get_display_name_by_index(contact_id);
+
+                               if (display_name) {
+                                       snprintf(title_address, sizeof(title_address), "%s", display_name);
+                                       free(display_name);
+                               } else {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Contact added, But there is no display name");
+                                       snprintf(title_address, sizeof(title_address), "%s", dgettext("sys_string", "IDS_COM_BODY_NO_NAME"));
+                               }
+
+                               if (address)
+                                       free(address);
+                       } else {
+                               if (address) {
+                                       snprintf(title_address, sizeof(title_address), "%s", address);
+                                       free(address);
+                               }
+                       }
+
+                       int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+
+                       if (addr_count == 1) {
+                               elm_object_text_set(viewer_play_data->title_button, title_address);
+                       } else if (addr_count  > 1) {
+                               char title_text[DEF_BUF_LEN+1] = {0,};
+                               snprintf(title_text, sizeof(title_text), "%s +%d", title_address, addr_count-1);
+                               elm_object_text_set(viewer_play_data->title_button, title_text);
+                       } else {
+                               elm_object_text_set(viewer_play_data->title_button, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+                       }
+
+                       evas_object_show(viewer_play_data->title_button);
+                       elm_object_part_content_set(viewer_play_data->navi_title_layout, "title_btn", viewer_play_data->title_button);
+                       evas_object_smart_callback_add(viewer_play_data->title_button, "clicked", msg_ui_viewer_title_button_clicked_cb, (void *)viewer_play_data);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Invalid type of message folder id = [%d]", folder_id);
+               }
+
+               /* create attach button */
+               Evas_Object *button = elm_button_add(viewer_play_data->navi_frame);
+               elm_object_style_set(button, "naviframe/title_icon");
+
+               Evas_Object *icon = elm_icon_add(viewer_play_data->navi_frame);
+
+               if (viewer_play_data->insert_count + viewer_play_data->attach_count != 0) {
+                       elm_object_disabled_set(button, EINA_FALSE);
+                       elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_LIST_ICON);
+               } else {
+                       elm_object_disabled_set(button, EINA_TRUE);
+                       elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_LIST_DIM_ICON);
+               }
+
+               elm_object_content_set(button, icon);
+               evas_object_smart_callback_add(button, "clicked", msg_ui_viewer_save_button_cb, viewer_play_data);
+
+               evas_object_show(button);
+               elm_object_part_content_set(viewer_play_data->navi_title_layout, "attach_btn", button);
+
+               viewer_play_data->attach_button = button;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_get_layout_size(MSG_PLAY_DATA_S *data, SMIL_POSITION_S *left_top, SMIL_POSITION_S *right_bottom)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, left_top == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, right_bottom == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       int navi_frame_height = 0;
+       int window_width = 0;
+       int window_height = 0;
+
+       /*get window size*/
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &window_width, &window_height);
+       viewer_play_data->window_width = window_width;
+       viewer_play_data->window_height = window_height;
+
+       /*get navi_frame height*/
+       double scale = elm_config_scale_get();
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "scale = %lf", scale);
+
+       navi_frame_height = (int)(scale * VIEWER_NAVI_FRAME_HEIGHT);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "navi_frame_height = %d", navi_frame_height);
+
+       left_top->x = 0;
+       left_top->y = navi_frame_height;
+       right_bottom->x = window_width;
+       right_bottom->y = window_height;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static MSG_BOOL __msg_ui_viewer_play_view_get_message_info(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       int page_count = 0;
+       int media_count = 0;
+       int nmedia_count = 0;
+       int bgColor = 0;
+
+       /*get the SMIL content*/
+       if (!viewer_play_data->mms_t) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mms data struct is null");
+               return FALSE;
+       }
+
+       /*get bgcolor*/
+       msg_get_int_value(viewer_play_data->mms_t, MSG_MMS_ROOTLAYOUT_BGCOLOR_INT, &bgColor);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->bgcolor = 0x%x", bgColor);
+
+       /*get attach count*/
+       msg_list_handle_t attachlist_info = NULL;
+       msg_get_list_handle(viewer_play_data->mms_t, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist_info);
+       viewer_play_data->attach_count= msg_list_length(attachlist_info);
+
+       /*get attach list */
+       viewer_play_data->attach_list = __msg_ui_viewer_get_attach_list(viewer_play_data);
+
+       /*get insert count*/
+       msg_list_handle_t pagelist_info = NULL;
+       msg_get_list_handle(viewer_play_data->mms_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+       page_count = msg_list_length(pagelist_info);
+
+       if (page_count) {
+               int page_idx = 0;
+               for (page_idx = 0; page_idx < page_count; ++page_idx) {
+                       msg_struct_t page_info = NULL;
+                       page_info = (msg_struct_t)msg_list_nth_data(pagelist_info, page_idx);
+
+                       if (!page_info) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "page_info is NULL");
+                               return FALSE;
+                       }
+
+                       msg_list_handle_t medialist_info = NULL;
+                       msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
+                       media_count = msg_list_length(medialist_info);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page = %d, page media count = %d", page_idx, media_count);
+
+                       int media_idx = 0;
+                       for (media_idx = 0; media_idx < media_count; ++media_idx) {
+                               int mediaType;
+                               msg_struct_t media_info = NULL;
+                               media_info = (msg_struct_t)msg_list_nth_data(medialist_info, media_idx);
+
+                               if (!media_info) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "%d pMedia is NULL", media_idx);
+                                       continue;
+                               }
+
+                               msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+                               if (mediaType == MMS_SMIL_MEDIA_TEXT)
+                                       continue;
+
+                               nmedia_count++;
+                       }
+               }
+       }
+       viewer_play_data->insert_count = nmedia_count;
+
+       /* get insert item list */
+       viewer_play_data->insert_list = __msg_ui_viewer_get_inserted_item_list(viewer_play_data);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "insert count : %d, attach count : %d", viewer_play_data->insert_count, viewer_play_data->attach_count);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return TRUE;
+}
+
+int msg_ui_viewer_get_thread_address_count(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, -1);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL, -1);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewer_play_data->mms_t == NULL, -1);
+       msg_struct_list_s addrList;
+       int thread_id;
+       msg_error_t err = MSG_SUCCESS;
+       int count = 0;
+
+       /* get address list(thread) */
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+       msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+
+       err = msg_get_address_list(viewer_play_data->msgHandle, thread_id, &addrList);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_address_list has failed");
+               return -1;
+       }
+
+       count = addrList.nCount;
+
+       msg_release_list_struct(&addrList);
+
+       return count;
+}
+
+void msg_ui_viewer_get_thread_address_nth_address(MSG_PLAY_DATA_S *data, int number, char **address, int *contact_id)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, viewer_play_data->msg_t == NULL);
+       msg_struct_list_s addrList;
+       int thread_id;
+       msg_error_t err = MSG_SUCCESS;
+       char buf_address[MAX_ADDRESS_VAL_LEN+1] = {0,};
+
+       /* get address list(thread) */
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+       msg_get_int_value(viewer_play_data->msg_t, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+
+       err = msg_get_address_list(viewer_play_data->msgHandle, thread_id, &addrList);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_address_list has failed");
+               return;
+       }
+
+       /* get Nth address */
+       if (addrList.msg_struct_info[number]) {
+               err = msg_get_str_value(addrList.msg_struct_info[number], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, buf_address, MAX_ADDRESS_VAL_LEN);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_str_value() is failed");
+                       msg_release_list_struct(&addrList);
+                       return;
+               }
+
+               err = msg_get_int_value(addrList.msg_struct_info[number], MSG_ADDRESS_INFO_CONTACT_ID_INT, contact_id);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_int_value() is failed");
+                       msg_release_list_struct(&addrList);
+                       return;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "addrList.msg_struct_info[%d] is NULL", number);
+               msg_release_list_struct(&addrList);
+               return;
+       }
+
+       msg_release_list_struct(&addrList);
+
+       *address = (char *)calloc(1, strlen(buf_address) + 1);
+       if (*address == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "*address is NULL");
+               return;
+       }
+
+       strncpy(*address, buf_address, strlen(buf_address));
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is %s", *address);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "contact_id is %d", *contact_id);
+}
+
+static Eina_List* __msg_ui_viewer_get_inserted_item_list(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       int page_idx = 0;
+       int page_count = 0;
+       int media_count = 0;
+       int insertCnt = 0;
+       int drmType = 0;
+       Eina_List *insert_list = NULL;
+
+       char strFileName[MSG_FILENAME_LEN_MAX] = {0,};
+       char strFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+
+       /*get insert count*/
+       msg_list_handle_t pagelist_info = NULL;
+       msg_get_list_handle(viewer_play_data->mms_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+       page_count = msg_list_length(pagelist_info);
+
+       for (page_idx = 0; page_idx < page_count; ++page_idx) {
+               msg_struct_t page_info = NULL;
+               page_info = (msg_struct_t)msg_list_nth_data(pagelist_info, page_idx);
+               if (!page_info) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "page_info is NULL");
+                       continue;
+               }
+
+               msg_list_handle_t medialist_info = NULL;
+               msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
+               media_count = msg_list_length(medialist_info);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page = %d, page media count = %d", page_idx, media_count);
+
+               int media_idx = 0;
+               for (media_idx = 0; media_idx < media_count; ++media_idx) {
+                       int mediaType;
+                       msg_struct_t media_info = NULL;
+                       media_info = (msg_struct_t)msg_list_nth_data(medialist_info, media_idx);
+
+                       if (!media_info) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "%d media_info is NULL", media_idx);
+                               continue;
+                       }
+
+                       msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+                       if (mediaType == MMS_SMIL_MEDIA_TEXT) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "%d pMedia is TEXT type, skip adding", media_idx);
+                               continue;
+                       }
+
+                       bzero(strFileName, sizeof(strFileName));
+                       bzero(strFilePath, sizeof(strFilePath));
+
+                       msg_get_str_value(media_info, MSG_MMS_MEDIA_FILENAME_STR, strFileName, sizeof(strFileName));
+                       msg_get_str_value(media_info, MSG_MMS_MEDIA_FILEPATH_STR, strFilePath, sizeof(strFilePath));
+
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "insert media file name: %s", strFileName);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "attachment file path: %s", strFilePath);
+
+                       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pInsert_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)calloc(1, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
+                       if (pInsert_info == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                               if (insert_list)
+                                       goto FREE_LIST;
+                               else
+                                       return NULL;
+                       } else {
+                               if (strlen(strFileName)) {
+                                       strncpy(pInsert_info->pfile_name, strFileName, MSG_VIEWER_FILENAME_MAX_LEN);
+                               } else {
+                                       const char *file_name = NULL;
+                                       file_name = ecore_file_file_get(strFilePath);
+                                       if (file_name)
+                                               strncpy(pInsert_info->pfile_name, file_name, MSG_VIEWER_FILENAME_MAX_LEN);
+                                       else
+                                               strncpy(pInsert_info->pfile_name, strFilePath, MSG_VIEWER_FILENAME_MAX_LEN);
+                               }
+
+                               strncpy(pInsert_info->pfile_path, strFilePath, MSG_VIEWER_FILEPATH_MAX_LEN);
+
+                               pInsert_info->pfile_size = ecore_file_size(strFilePath);
+
+                               msg_get_int_value(media_info, MSG_MMS_MEDIA_DRM_TYPE_INT, &drmType);
+
+                               if (drmType != MSG_DRM_TYPE_NONE) {
+                                       pInsert_info->media_type = MSG_VIEWER_MEDIA_DRM;
+                               } else {
+                                       switch (mediaType) {
+                                               case MMS_SMIL_MEDIA_IMG:
+                                                       pInsert_info->media_type = MSG_VIEWER_MEDIA_IMG;
+                                                       break;
+                                               case MMS_SMIL_MEDIA_AUDIO:
+                                                       pInsert_info->media_type = MSG_VIEWER_MEDIA_AUDIO;
+                                                       break;
+                                               case MMS_SMIL_MEDIA_VIDEO:
+                                                       pInsert_info->media_type = MSG_VIEWER_MEDIA_VIDEO;
+                                                       break;
+                                               case MMS_SMIL_MEDIA_ANIMATE:
+                                                       pInsert_info->media_type = MSG_VIEWER_MEDIA_ANIMATE;
+                                                       break;
+                                               case MMS_SMIL_MEDIA_IMG_OR_VIDEO:
+                                                       pInsert_info->media_type = MSG_VIEWER_MEDIA_IMG_OR_VIDEO;
+                                                       break;
+                                               default:
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "%d type is not handled in switch!");
+                                                       pInsert_info->media_type = MSG_VIEWER_MEDIA_ATTACH;             // set attach type, it's better to set attach type, not to set invalid type
+                                                       break;
+                                       }
+                               }
+                               pInsert_info->viewer_play_data = viewer_play_data;
+
+                               /*append insert item list*/
+                               insert_list = eina_list_append(insert_list, pInsert_info);
+                               insertCnt++;
+                       }
+               }
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Total %d insert item(s) added", insertCnt);
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return insert_list;
+FREE_LIST:
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Free insert item list");
+       if (insert_list) {
+               int index = 0;
+               int ntotal = 0;
+               ntotal = eina_list_count(insert_list);
+               for (index = 0; index < ntotal; index++) {
+                       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pMedia_info = eina_list_nth(insert_list, index);
+                       if (pMedia_info) {
+                               free(pMedia_info);
+                               pMedia_info = NULL;
+                       }
+               }
+               eina_list_free(insert_list);
+               insert_list = NULL;
+       }
+       return NULL;
+}
+
+static Eina_List* __msg_ui_viewer_get_attach_list(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       /*get attached content list*/
+       int attach_idx = 0;
+       int attach_count = 0;
+       Eina_List *attach_list = NULL;
+       char strFileName[MSG_FILENAME_LEN_MAX] = {0,};
+       char strFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+
+       /*get attach count*/
+       msg_list_handle_t attachlist_info = NULL;
+       msg_get_list_handle(viewer_play_data->mms_t, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist_info);
+       attach_count = msg_list_length(attachlist_info);
+
+       for (attach_idx = 0; attach_idx < attach_count; ++attach_idx) {
+               msg_struct_t attach_info = NULL;
+
+               attach_info = (msg_struct_t)msg_list_nth_data(attachlist_info, attach_idx);
+
+               if (attach_info == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pAttach is NULL");
+                       continue;
+               }  else {
+                       bzero(strFileName, sizeof(strFileName));
+                       bzero(strFilePath, sizeof(strFilePath));
+
+                       msg_get_str_value(attach_info, MSG_MMS_ATTACH_FILENAME_STR, strFileName, sizeof(strFileName));
+                       msg_get_str_value(attach_info, MSG_MMS_ATTACH_FILEPATH_STR, strFilePath, sizeof(strFilePath));
+
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "attachment file name: %s", strFileName);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "attachment file path: %s", strFilePath);
+
+                       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)calloc(1, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
+                       if (pAttach_info == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                               if (attach_list)
+                                       goto FREE_LIST;
+                               else
+                                       return NULL;
+                       } else {
+                               if (strlen(strFileName)) {
+                                       strncpy(pAttach_info->pfile_name, strFileName, MSG_VIEWER_FILENAME_MAX_LEN);
+                               } else {
+                                       const char *file_name = NULL;
+                                       file_name = ecore_file_file_get(strFilePath);
+                                       if (file_name)
+                                               strncpy(pAttach_info->pfile_name, file_name, MSG_VIEWER_FILENAME_MAX_LEN);
+                                       else
+                                               strncpy(pAttach_info->pfile_name, strFilePath, MSG_VIEWER_FILENAME_MAX_LEN);
+                               }
+
+                               strncpy(pAttach_info->pfile_path, strFilePath, MSG_VIEWER_FILEPATH_MAX_LEN);
+
+                               pAttach_info->pfile_size = ecore_file_size(strFilePath);
+                               pAttach_info->media_type = MSG_VIEWER_MEDIA_ATTACH;
+                               pAttach_info->viewer_play_data = viewer_play_data;
+
+                               /*append attach list*/
+                               attach_list = eina_list_append(attach_list, pAttach_info);
+                               attach_count++;
+                       }
+               }
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Total %d attach(s) added", attach_count);
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return attach_list;
+FREE_LIST:
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Free attachment list");
+       if (attach_list) {
+               int index = 0;
+               int ntotal = 0;
+               ntotal = eina_list_count(attach_list);
+               for (index = 0; index < ntotal; index++) {
+                       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = eina_list_nth(attach_list, index);
+                       if (pAttach_info) {
+                               free(pAttach_info);
+                               pAttach_info = NULL;
+                       }
+               }
+               eina_list_free(attach_list);
+               attach_list = NULL;
+       }
+       return NULL;
+}
+
+void msg_ui_viewer_title_update(MSG_PLAY_DATA_S *data, MSG_VIEWER_OPTION_CHANGE_TYPE_E option_type)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       int addr_count = msg_ui_viewer_get_thread_address_count(viewer_play_data);
+       char *display_name;
+       char *address = NULL;
+       int contact_id = 0;
+
+       msg_ui_viewer_get_thread_address_nth_address(viewer_play_data, 0, &address, &contact_id);
+
+       if (!address) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address is NULL");
+               return;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "addr_count = %d, address = %s, contact_id = %d", addr_count, address, contact_id);
+
+       if (option_type == MSG_VIEWER_OPTION_CONTACT) {
+               display_name = msg_viewer_util_get_display_name_by_index(contact_id);
+               /* change title button */
+               if (addr_count == 1) {
+                       if (display_name) {
+                               elm_object_text_set(viewer_play_data->title_button, display_name);
+                               free(display_name);
+                       } else {
+                               elm_object_text_set(viewer_play_data->title_button, address);
+                       }
+               } else if (addr_count > 1) {
+                       char title_text[DEF_BUF_LEN+1] = {0,};
+                       if (display_name) {
+                               snprintf(title_text, sizeof(title_text), "%s +%d", display_name, addr_count-1);
+                               free(display_name);
+                       } else {
+                               snprintf(title_text, sizeof(title_text), "%s +%d", address, addr_count-1);
+                       }
+
+                       elm_object_text_set(viewer_play_data->title_button, title_text);
+               } else {
+                       elm_object_text_set(viewer_play_data->title_button, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+               }
+       }
+
+       free(address);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return;
+}
+
+void msg_ui_viewer_show_popup(void *data, Evas_Object *parent, char *pcontent)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, parent == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Evas_Object *popup = NULL;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       popup = elm_popup_add(parent);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, popup == NULL, "popup is NULL");
+       viewer_play_data->popup = popup;
+       viewer_play_data->popup_type = MSG_VIEWER_NORMAL_POPUP;
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       if (pcontent) {
+               elm_object_text_set(popup, pcontent);
+               elm_popup_timeout_set(popup, 2);
+               evas_object_smart_callback_add(popup, "block,clicked", msg_ui_viewer_popup_block_clicked_cb, viewer_play_data);
+               evas_object_smart_callback_add(popup, "timeout", msg_ui_viewer_popup_timeout_cb, viewer_play_data);
+       } else {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+               return;
+       }
+
+       evas_object_show(popup);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+MSG_SMIL_ERROR_E msg_ui_viewer_help_page_smilrenderer_cb(MSG_PLAY_DATA_S *data, void **attach_list, void *box)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Evas_Object *renderBox = (Evas_Object *)box;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+       int attach_count = viewer_play_data->attach_count;
+
+       /* create box (for setting min size of genlist)*/
+       Evas_Object *box2 = elm_box_add(renderBox);
+       evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(box2);
+
+       /* create genlist */
+       Evas_Object *genlist = elm_genlist_add(box2);
+       evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+       elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+       evas_object_show(genlist);
+
+       elm_box_pack_end(box2, genlist);
+       evas_object_size_hint_min_set(box2, 0, VIEWER_ATTACH_GL_ITEM_HEIGHT * (attach_count + 1) * elm_config_scale_get());
+
+       viewer_play_data->hp_sa_class.item_style  = "dialogue/1text.1icon";
+       viewer_play_data->hp_sa_class.func.text_get = __msg_ui_viewer_help_page_gl_text_get;
+       viewer_play_data->hp_sa_class.func.content_get  = __msg_ui_viewer_help_page_gl_content_get;
+       viewer_play_data->hp_sa_class.func.state_get = NULL;
+       viewer_play_data->hp_sa_class.func.del = __msg_ui_viewer_help_page_gl_del;
+
+       viewer_play_data->hp_class.item_style  = "dialogue/1text.2icon";
+       viewer_play_data->hp_class.func.text_get = __msg_ui_viewer_help_page_gl_text_get;
+       viewer_play_data->hp_class.func.content_get  = __msg_ui_viewer_help_page_gl_content_get;
+       viewer_play_data->hp_class.func.state_get = NULL;
+       viewer_play_data->hp_class.func.del = __msg_ui_viewer_help_page_gl_del;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "attachment_count = %d", attach_count);
+
+       if (attach_count > 0) {
+               int attach_index = 0;
+
+               if (attach_count > 1) {
+                       //make 'Save all' item
+                       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pItem = (MSG_VIEWER_ATTACH_MEDIA_INFO_S*)calloc(1, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
+                       memset(pItem, 0x00, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
+                       strncpy(pItem->pfile_name, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_SAVE_ALL"), strlen(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_SAVE_ALL")));
+                       pItem->isSaveAll = TRUE;
+                       pItem->viewer_play_data = viewer_play_data;
+
+                       for (attach_index = 0; attach_index < attach_count; attach_index++) {
+                               MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = eina_list_nth(viewer_play_data->attach_list, attach_index);
+                               if (pAttach_info == NULL) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "(%d)th pAttach_info is NULL", attach_index);
+                               } else {
+                                       pItem->pfile_size += pAttach_info->pfile_size;
+                               }
+                       }
+
+                       Elm_Object_Item *item = NULL;
+                       item = elm_genlist_item_append(genlist, &(viewer_play_data->hp_sa_class), pItem, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_help_page_gl_sel, NULL);
+                       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+               }
+
+               for (attach_index = 0; attach_index < attach_count; attach_index++) {
+                       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = eina_list_nth(viewer_play_data->attach_list, attach_index);
+                       if (pAttach_info == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pAttach_info is NULL");
+                       } else {
+                               MSG_VIEWER_ATTACH_MEDIA_INFO_S *pItem = (MSG_VIEWER_ATTACH_MEDIA_INFO_S*)calloc(1, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
+                               memcpy(pItem, pAttach_info, sizeof(MSG_VIEWER_ATTACH_MEDIA_INFO_S));
+
+                               elm_genlist_item_append(genlist, &(viewer_play_data->hp_class), pItem, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_help_page_gl_sel, pItem);
+                       }
+               }
+       }
+
+       viewer_play_data->help_page_gl = genlist;
+
+       elm_box_pack_end(renderBox, box2);
+       *attach_list = genlist;
+
+       return err;
+}
+
+static char *__msg_ui_viewer_help_page_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, part == NULL, NULL);
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
+
+       if (strcmp(part, "elm.text") == 0) {
+               if (pAttach_info) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pAttach_info->pfile_name = %s", pAttach_info->pfile_name);
+
+                       Eina_Strbuf *text_buf = eina_strbuf_new();
+                       eina_strbuf_append(text_buf, pAttach_info->pfile_name);
+                       eina_strbuf_append(text_buf, VIEWER_DETAILS_TEXT_SPACE);
+                       eina_strbuf_append(text_buf, VIEWER_DETAILS_TEXT_LEFT_BRACE);
+
+                       //get and convert size
+                       char size[DEF_BUF_LEN] = {0,};
+                       long long sizeKB = 0;
+                       long long sizeB = 0;
+
+                       if (pAttach_info->pfile_size < VIEWER_DETAILS_TEXT_MSG_SIZE_KB) {
+                               snprintf(size, sizeof(size), "1 %s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
+                       } else {
+                               sizeKB = (long long)(pAttach_info->pfile_size)/VIEWER_DETAILS_TEXT_MSG_SIZE_KB;
+                               sizeB = (long long)(pAttach_info->pfile_size)%VIEWER_DETAILS_TEXT_MSG_SIZE_KB;
+
+                               if (sizeB >= (VIEWER_DETAILS_TEXT_MSG_SIZE_KB/2))
+                                       sizeKB++;
+
+                               snprintf(size, sizeof(size), "%lld %s", sizeKB, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
+                       }
+
+                       eina_strbuf_append(text_buf, size);
+                       eina_strbuf_append(text_buf, VIEWER_DETAILS_TEXT_RIGHT_BRACE);
+
+                       char *return_text = strdup(eina_strbuf_string_get(text_buf));
+                       eina_strbuf_free(text_buf);
+
+                       return return_text;
+               }
+       }
+
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_viewer_help_page_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, obj == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, part == NULL, NULL);
+
+       if (strcmp(part, "elm.icon.2") == 0 || strcmp(part, "elm.icon") == 0) {
+               Evas_Object *box = elm_box_add(obj);
+               Evas_Object *button = elm_button_add(obj);
+               Evas_Object *icon = elm_icon_add(obj);
+
+               evas_object_propagate_events_set(button, EINA_FALSE);
+               elm_box_pack_start(box, button);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_SAVE_ICON);
+               elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+               elm_object_part_content_set(button, "icon", icon);
+               elm_object_style_set(button, "circle/empty");
+               evas_object_smart_callback_add(button, "clicked", msg_ui_viewer_help_page_save_button_clicked_cb, data);
+               evas_object_show(button);
+               evas_object_show(box);
+               return box;
+       } else if (strcmp(part, "elm.icon.1") == 0) {
+               MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
+               Evas_Object *image = NULL;
+
+               image = elm_icon_add(obj);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pAttach_info->pfile_path = %s", pAttach_info->pfile_path);
+
+               /*set attach file icon*/
+               if (pAttach_info->media_type == MSG_VIEWER_MEDIA_IMG ||
+                               pAttach_info->media_type == MSG_VIEWER_MEDIA_ANIMATE) {
+                       elm_image_file_set(image, pAttach_info->pfile_path, NULL);
+               } else if (pAttach_info->media_type == MSG_VIEWER_MEDIA_DRM) {
+                       elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_DRM_SMALL_ICON);
+               } else {
+                       if (strlen(pAttach_info->pfile_path)) {
+                               const char *icon_path = NULL;
+
+                               icon_path = msg_common_get_file_icon(pAttach_info->pfile_path);
+                               if (icon_path) {
+                                       elm_image_file_set(image, MSG_IMAGES_EDJ, icon_path);
+                               } else {
+                                       D_EMSG("icon_path is NULL");
+                                       elm_image_file_set(image, MSG_IMAGES_EDJ, MSG_VIEWER_IMAGE_ATTACH_ICON);
+                               }
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "filepath is NULL");
+                               return NULL;
+                       }
+               }
+
+               if (image)
+                       evas_object_size_hint_aspect_set(image, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+               return image;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part : %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_viewer_help_page_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, event_info == NULL);
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *pAttach_info = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
+       Elm_Object_Item *pselected_item = (Elm_Object_Item *)event_info;
+       service_h svc_handle = NULL;
+       service_error_e err = MSG_SUCCESS;
+
+       elm_genlist_item_selected_set(pselected_item, FALSE);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_name = [%s]", pAttach_info->pfile_name);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pfile_path = [%s]", pAttach_info->pfile_path);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "emedia_type = %d", pAttach_info->media_type);
+
+       //Save all item
+       if (!strcmp(pAttach_info->pfile_name, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_SAVE_ALL"))) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Save all item");
+               return;
+       }
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed !!");
+               return;
+       }
+
+       service_set_operation(svc_handle, SERVICE_OPERATION_VIEW);
+       service_set_uri(svc_handle, pAttach_info->pfile_path);
+
+       err = service_send_launch_request(svc_handle, NULL, NULL);
+       if ( err == SERVICE_ERROR_NONE) {
+               if (pAttach_info->viewer_play_data) {
+                       /* set player state to pause and update icon */
+                       if (!msg_ui_viewer_command_play_pause(pAttach_info->viewer_play_data, MSG_VIEWER_ACTION_AUTO_PAUSE)) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                               return;
+                       }
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed");
+       }
+
+       service_destroy(svc_handle);
+
+       return;
+}
+
+static void __msg_ui_viewer_help_page_gl_del(void *data, Evas_Object *obj)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       MSG_VIEWER_ATTACH_MEDIA_INFO_S *del_data = (MSG_VIEWER_ATTACH_MEDIA_INFO_S *)data;
+       if (del_data) {
+               free(del_data);
+               del_data = NULL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_create_play_controller_timer(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       //register timer for disappear play_controller automatically when time elapsed after shown
+       if (viewer_play_data->play_controller_timer) {
+               ecore_timer_del(viewer_play_data->play_controller_timer);
+               viewer_play_data->play_controller_timer = NULL;
+       }
+
+       viewer_play_data->play_controller_timer = ecore_timer_add(VIEWER_PLAY_CONTROLLER_LIFETIME, msg_ui_viewer_play_controller_timer_cb, (void *)viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_create_progressbar(MSG_PLAY_DATA_S *data, int slideIdx)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, viewer_play_data->SmilHandle == NULL);
+
+       Evas_Object *progressbar = NULL;
+       MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+       MSG_BOOL bExcludeHp = FALSE;
+       double total_time = 0.0;
+       double remain_time = 0.0;
+       double elapse_time = 0.0;
+       int remain_second = 0.0;
+       int elapse_second = 0.0;
+       char strTimeBuf[10] = {0,};
+
+       if (slideIdx < 0 ) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "slideIdx = %d, slideIdx must be same or over 0", slideIdx);
+               return;
+       }
+
+       if (!viewer_play_data->progressbar) {
+               progressbar = elm_progressbar_add(viewer_play_data->play_controller);
+               elm_object_theme_set(progressbar, viewer_play_data->progress_th);
+               elm_object_style_set(progressbar, "list_progress");
+               elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+               evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               viewer_play_data->progressbar = progressbar;
+               evas_object_show(progressbar);
+               elm_object_part_content_set(viewer_play_data->play_controller,"progressbar", progressbar);
+       }
+
+       msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
+
+       //In preview mode, slide time for help page should not be considered to total slide time
+       bExcludeHp = (launchmode == MSG_VIEWER_PREVIEW_MODE) ? TRUE : FALSE;
+
+       if (!msg_smil_get_slide_time(viewer_play_data->SmilHandle, 0, bExcludeHp, &total_time)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_get_slide_time is failed, slideIdx = %d, bExcludeHp = %d", 0, bExcludeHp);
+               return;
+       }
+       if (!msg_smil_get_slide_time(viewer_play_data->SmilHandle, slideIdx, bExcludeHp, &remain_time)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_get_slide_time is failed, slideIdx = %d, bExcludeHp = %d", slideIdx, bExcludeHp);
+               return;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Total slide time is %f", total_time);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Remain slide time from current slide(%d) is %f", slideIdx, remain_time);
+       elapse_time = total_time-remain_time;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Elapsed slide time from first slide(0) to current slide(%d) is %f", slideIdx, elapse_time);
+
+       viewer_play_data->totalProgressTime = remain_second = (int)total_time/1000;
+       elapse_second = (int)elapse_time/1000;
+       viewer_play_data->elapsedProgressTime = elapse_second;
+
+       // START timer text set
+       snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", elapse_second/60, elapse_second%60);
+       edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/start/time", strTimeBuf);
+
+       bzero(strTimeBuf, sizeof(strTimeBuf));
+
+       // END timer text set
+       snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", remain_second/60, remain_second%60);
+       edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/end/time", strTimeBuf);
+
+       elm_progressbar_value_set(viewer_play_data->progressbar, ((double)viewer_play_data->elapsedProgressTime)/((double)viewer_play_data->totalProgressTime));
+
+       if (viewer_play_data->play_controller_progressbar_timer) {
+               ecore_timer_del(viewer_play_data->play_controller_progressbar_timer);
+               viewer_play_data->play_controller_progressbar_timer = NULL;
+       }
+
+       viewer_play_data->play_controller_progressbar_timer = ecore_timer_add(VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME, msg_ui_viewer_play_controller_progressbar_timer_cb, viewer_play_data);
+
+       if (msg_smil_get_current_slide_status(viewer_play_data->SmilHandle) == PLAYER_STATUS_PAUSED) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Pause progress timer because current slide status is PAUSED");
+               ecore_timer_freeze(viewer_play_data->play_controller_progressbar_timer);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+Eina_Bool  msg_ui_viewer_play_controller_progressbar_timer_cb(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       char strTimeBuf[10] = {0,};
+
+       viewer_play_data->elapsedProgressTime += VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME;
+
+       // update START timer text
+       snprintf(strTimeBuf, sizeof(strTimeBuf), "%02d:%02d", viewer_play_data->elapsedProgressTime/60, viewer_play_data->elapsedProgressTime%60);
+       edje_object_part_text_set(_EDJ(viewer_play_data->play_controller), "progress/start/time", strTimeBuf);
+
+       if (viewer_play_data->elapsedProgressTime == viewer_play_data->totalProgressTime) {
+               if (viewer_play_data->play_controller && evas_object_visible_get(viewer_play_data->play_controller) == EINA_FALSE) {
+                       elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.play.controller", viewer_play_data->play_controller);
+                       evas_object_show(viewer_play_data->play_controller);
+                       viewer_play_data->playcontroller_opened = true;
+                       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,open", "");
+                       msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+               } else {
+                       // create play controller timer again
+                       msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+               }
+
+               elm_progressbar_value_set(viewer_play_data->progressbar, 1.0);
+               viewer_play_data->play_controller_progressbar_timer = NULL;
+
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       elm_progressbar_value_set(viewer_play_data->progressbar, ((double)viewer_play_data->elapsedProgressTime)/((double)viewer_play_data->totalProgressTime));
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+void msg_ui_viewer_destroy_play_controller_progressbar_timer(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->play_controller_progressbar_timer) {
+               ecore_timer_del(viewer_play_data->play_controller_progressbar_timer);
+               viewer_play_data->play_controller_progressbar_timer = NULL;
+               viewer_play_data->elapsedProgressTime = 0;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+Eina_Bool msg_ui_viewer_play_controller_timer_cb(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, EINA_FALSE, "data is NULL");
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       viewer_play_data->play_controller_timer = NULL;
+
+       if (viewer_play_data->playcontroller_opened) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Play controller is hided after 3 seconds elapsed");
+               elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.swallow.play.controller");
+               evas_object_hide(viewer_play_data->play_controller);
+               viewer_play_data->playcontroller_opened = false;
+               if (!viewer_play_data->title_menu_opened)
+                       elm_object_signal_emit(viewer_play_data->play_layout, "elm,state,blockrect,close", "");
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+void msg_ui_viewer_destroy_play_controller_timer(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->play_controller_timer) {
+               ecore_timer_del(viewer_play_data->play_controller_timer);
+               viewer_play_data->play_controller_timer = NULL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_copy_message_text_to_clipboard(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       SMIL_SLIDE_CLIENT_CB_PARAM_S *eventStatus = NULL;
+
+       int page_count = 0;
+       int media_count = 0;
+       bool is_text_copied = FALSE;
+       int media_idx = 0;
+       char strFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+       FILE *fp = NULL;
+
+       eventStatus = (SMIL_SLIDE_CLIENT_CB_PARAM_S * )viewer_play_data->smil_eventStatus;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Current page index is %d", eventStatus->pageIdx);
+
+       /*get page list info*/
+       msg_list_handle_t pagelist_info = NULL;
+       msg_get_list_handle(viewer_play_data->mms_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+       page_count = msg_list_length(pagelist_info);
+
+       msg_struct_t page_info = NULL;
+       page_info = (msg_struct_t)msg_list_nth_data(pagelist_info, eventStatus->pageIdx);
+       if (!page_info) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "page_info is NULL");
+               return;
+       }
+
+       msg_list_handle_t medialist_info = NULL;
+       msg_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
+       media_count = msg_list_length(medialist_info);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page = %d, page media count = %d", eventStatus->pageIdx, media_count);
+
+       for (media_idx = 0; media_idx < media_count; media_idx++) {
+               int mediaType;
+               msg_struct_t media_info = NULL;
+               media_info = (msg_struct_t)msg_list_nth_data(medialist_info, media_idx);
+
+               if (!media_info) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "%d media_info is NULL", media_idx);
+                       continue;
+               }
+
+               msg_get_int_value(media_info, MSG_MMS_MEDIA_TYPE_INT, &mediaType);
+
+               if (mediaType != MMS_SMIL_MEDIA_TEXT) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "%d media type is not TEXT", media_idx);
+                       continue;
+               }
+
+               bzero(strFilePath, sizeof(strFilePath));
+               msg_get_str_value(media_info, MSG_MMS_MEDIA_FILEPATH_STR, strFilePath, sizeof(strFilePath));
+
+               //if text media is exist, get text and store it
+               fp = fopen(strFilePath, "r");
+               if (fp) {
+                       char *pszPageText = NULL;
+                       struct stat stat_buf;
+                       if (stat(strFilePath, &stat_buf) != 0) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Getting file information Error");
+                               fclose(fp);
+                               return;
+                       }
+
+                       if (stat_buf.st_size > 0) {
+                               pszPageText = (void *)calloc(1, (size_t)stat_buf.st_size + 1);
+
+                               if (pszPageText == NULL) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                                       fclose(fp);
+                                       return;
+                               } else {
+                                       int result = fread(pszPageText, sizeof(char), stat_buf.st_size, fp);
+                                       if (result != stat_buf.st_size) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "fread is failed result : %d", result);
+                                       }
+                               }
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pszPageText : (%s)", (char *)pszPageText);
+
+                               if (pszPageText[0] != '\0') {
+                                       Evas_Object *entry = elm_entry_add(viewer_play_data->main_window);
+                                       elm_cnp_selection_set(entry, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_TEXT, pszPageText, strlen(pszPageText));
+                                       evas_object_del(entry);
+                                       is_text_copied = TRUE;
+                               }
+
+                               /*free message text after displaying*/
+                               if (pszPageText) {
+                                       free(pszPageText);
+                                       pszPageText = NULL;
+                               }
+
+                               fclose(fp);
+                               break;
+                       }
+
+                       fclose(fp);
+               }
+       }
+
+       if (is_text_copied)
+               status_message_post(dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"));
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_create_msg_detail_popup(MSG_PLAY_DATA_S *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Evas_Object *popup = NULL;
+       Evas_Object *layout = NULL;
+       Evas_Object *bg = NULL;
+       Evas_Object *scroller = NULL;
+       Evas_Object *box = NULL;
+       Evas_Object *entry = NULL;
+       Evas_Object *btn_close = NULL;
+
+       /* delete previous popup */
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* create popup */
+       popup = elm_popup_add(viewer_play_data->main_window);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(popup, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_object_style_set(popup, "menustyle");
+       elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_MESSAGE_DETAILS"));
+
+       /* create layout */
+       layout = elm_layout_add(viewer_play_data->main_window);
+       elm_layout_file_set(layout, MSG_VIEWER_THEME, "msg/detail");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(layout);
+
+       /* create bg */
+       bg = evas_object_rectangle_add(evas_object_evas_get(layout));
+       elm_object_part_content_set(layout,  "msg/detail/bg", bg);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, 0.0);
+       evas_object_show(bg);
+
+       /* create scroller */
+       scroller = elm_scroller_add(layout);
+       evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_scroller_bounce_set(scroller, FALSE, TRUE);
+       elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
+       elm_object_part_content_set(layout, "msg/detail/content", scroller);
+       evas_object_show(scroller);
+
+       /* create box */
+       box = elm_box_add(layout);
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_homogeneous_set(box, EINA_FALSE);
+       evas_object_show(box);
+       evas_object_size_hint_min_set(box, 0, VIEWER_ATTACH_GL_ITEM_HEIGHT*4);
+       elm_object_content_set(scroller, box);
+
+       /*create entry */
+       entry = elm_entry_add(layout);
+       evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_entry_single_line_set(entry, EINA_FALSE);
+       elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
+       elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+       elm_entry_magnifier_disabled_set(entry, EINA_TRUE);
+       elm_entry_editable_set(entry, EINA_FALSE);
+
+       char *str = msg_common_make_message_detail_text(viewer_play_data->msgHandle, viewer_play_data->msgID);
+
+       if (str) {
+               elm_entry_entry_set(entry, str);
+               free(str);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_make_message_detail_text is failed");
+               return;
+       }
+
+       elm_box_pack_end(box, entry);
+       evas_object_show(entry);
+
+       /* add close button */
+       btn_close = elm_button_add(popup);
+       elm_object_style_set(btn_close, "popup_button/default");
+       elm_object_text_set(btn_close, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       elm_object_part_content_set(popup, "button1", btn_close);
+       evas_object_smart_callback_add(btn_close, "clicked", __msg_ui_viewer_message_details_popup_close_clicked_cb, viewer_play_data);
+
+       viewer_play_data->popup = popup;
+       viewer_play_data->popup_type = MSG_VIEWER_DETAILS_POPUP;
+       elm_object_content_set(popup, layout);
+
+       msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+       evas_object_show(popup);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_message_details_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+               viewer_play_data->popup_type = MSG_VIEWER_POPUP_NONE;
+       }
+
+       /* connect handler again*/
+       msg_ui_viewer_connect_handler(viewer_play_data);
+
+       /* play viewer again if previous status was PLAY */
+       if (viewer_play_data->auto_resume_state && viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               if (!msg_ui_viewer_command_play_pause(viewer_play_data, MSG_VIEWER_ACTION_AUTO_PLAY)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_ui_viewer_command_play_pause is failed");
+                       return;
+               }
+       }
+}
+
+MSG_BOOL msg_ui_viewer_check_address_is_blocked(void *data, char *address, int *filter_id)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_list_s filter_list;
+       int i = 0;
+       int total_cnt = 0;
+       char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+
+       err = msg_get_filter_list(viewer_play_data->msgHandle, &filter_list);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_filter_list() fail - err [%d]", err);
+               return FALSE;
+       }
+
+       total_cnt = filter_list.nCount;
+
+       for (i = 0; i < total_cnt; i++) {
+               /* get number */
+               bzero(filter_val, sizeof(filter_val));
+               err = msg_get_str_value(filter_list.msg_struct_info[i], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_str_value() fail - err [%d]", err);
+                       msg_release_list_struct(&filter_list);
+                       return FALSE;
+               }
+
+               if (!strcmp(address, filter_val)) {
+                       int filter_type;
+                       msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+                       if (filter_type == MSG_FILTER_BY_ADDRESS_SAME) {
+                               /* get filter id if address is exist in block list */
+                               msg_get_int_value(filter_list.msg_struct_info[i], MSG_FILTER_ID_INT, filter_id);
+                               msg_release_list_struct(&filter_list);
+                               return TRUE;
+                       }
+               }
+       }
+
+       msg_release_list_struct(&filter_list);
+       return FALSE;
+}
+
+static void __msg_ui_viewer_grab_volume_key(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       int ret = 0;
+
+       ret = utilx_grab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEUP, TOP_POSITION_GRAB);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP utilx_grab_key() ret = %d", ret);
+
+       ret = utilx_grab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEDOWN, TOP_POSITION_GRAB);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN utilx_grab_key() ret = %d", ret);
+}
+
+static void __msg_ui_viewer_ungrab_volume_key(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       int ret = 0;
+
+       ret = utilx_ungrab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEUP);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP utilx_ungrab_key() ret = %d", ret);
+
+       ret = utilx_ungrab_key(viewer_play_data->xdisplay, elm_win_xwindow_get(viewer_play_data->main_window), KEY_VOLUMEDOWN);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN utilx_ungrab_key() ret = %d", ret);
+}
+
+static Eina_Bool __msg_ui_viewer_up_key_long_press_cb(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       int use_volume_key = false;
+
+       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+       if (use_volume_key) {
+               msg_common_increase_font_size();
+
+               if (viewer_play_data->render_entry) {
+                       SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+                       MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+                       msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
+               }
+       } else {
+               __msg_ui_viewer_volumebar_volume_up(viewer_play_data->volume_slider);
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool __msg_ui_viewer_down_key_long_press_cb(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       int use_volume_key = false;
+
+       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+       if (use_volume_key) {
+               msg_common_decrease_font_size();
+
+               if (viewer_play_data->render_entry) {
+                       SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+                       MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+                       msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
+               }
+       } else {
+               __msg_ui_viewer_volumebar_volume_down(viewer_play_data->volume_slider);
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool __msg_ui_viewer_volume_key_release_cb(void *data, int type, void *event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Ecore_Event_Key *ev = event;
+       int use_volume_key = false;
+
+       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+       if (!use_volume_key) {
+               if (viewer_play_data->volumebar_timer) {
+                       ecore_timer_del(viewer_play_data->volumebar_timer);
+                       viewer_play_data->volumebar_timer = NULL;
+               }
+               viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
+       }
+
+       if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) {    /* KEY_VOLUMEUP */
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP is released");
+
+               if (viewer_play_data->vol_up_key_longpress) {
+                       ecore_timer_del(viewer_play_data->vol_up_key_longpress);
+                       viewer_play_data->vol_up_key_longpress = NULL;
+               }
+       } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) {   /* KEY_VOLUMEDOWN */
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN is released");
+
+               if (viewer_play_data->vol_down_key_longpress) {
+                       ecore_timer_del(viewer_play_data->vol_down_key_longpress);
+                       viewer_play_data->vol_down_key_longpress = NULL;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "key_name is not applicable!");
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool __msg_ui_viewer_volume_key_press_cb(void *data, int type, void *event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, data == NULL, EINA_FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, event == NULL, EINA_FALSE);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+       Ecore_Event_Key *ev = event;
+       int use_volume_key = false;
+
+       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_volume_key);
+
+       if (use_volume_key) {
+               if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) {    /* KEY_VOLUMEUP */
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEUP is pressed");
+
+                       msg_common_increase_font_size();
+
+                       if (viewer_play_data->render_entry) {
+                               SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+                               MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+                               msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
+                       }
+
+                       viewer_play_data->vol_up_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_FONT_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_up_key_long_press_cb, (void *)viewer_play_data);
+               } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) {   /* KEY_VOLUMEDOWN */
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "KEY_VOLUMEDOWN is pressed");
+
+                       msg_common_decrease_font_size();
+
+                       if (viewer_play_data->render_entry) {
+                               SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+                               MSG_VIEWER_ENTRY_TYPE_E entry_type = (slide && slide->pageInfo && slide->pageInfo->isHelpPage) ? MSG_VIEWER_ENTRY_HELP_TEXT : MSG_VIEWER_ENTRY_NORMAL_TEXT;
+                               msg_ui_viewer_set_font_size(viewer_play_data, entry_type, MSG_VIEWER_FONT_CHANGE_LOAD_SETTING);
+                       }
+
+                       viewer_play_data->vol_down_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_FONT_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_down_key_long_press_cb, (void *)viewer_play_data);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "key_name is not applicable!");
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Use volume key setting is not activated. Do volume key action");
+
+               if (!viewer_play_data->volumebar || !viewer_play_data->volume_slider)
+                       msg_ui_viewer_create_volume_bar(viewer_play_data);
+
+               if (!g_strcmp0(ev->keyname, KEY_VOLUMEUP)) {    /* KEY_VOLUMEUP */
+                       if (viewer_play_data->volumebar_timer) {
+                               ecore_timer_del(viewer_play_data->volumebar_timer);
+                               viewer_play_data->volumebar_timer = NULL;
+                       }
+                       __msg_ui_viewer_volumebar_volume_up(viewer_play_data->volume_slider);
+
+                       viewer_play_data->vol_up_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_VOLUME_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_up_key_long_press_cb, (void *)viewer_play_data);
+               } else if (!g_strcmp0(ev->keyname, KEY_VOLUMEDOWN)) {   /* KEY_VOLUMEDOWN */
+                       if (viewer_play_data->volumebar_timer) {
+                               ecore_timer_del(viewer_play_data->volumebar_timer);
+                               viewer_play_data->volumebar_timer = NULL;
+                       }
+                       __msg_ui_viewer_volumebar_volume_down(viewer_play_data->volume_slider);
+
+                       viewer_play_data->vol_down_key_longpress = ecore_timer_add(VIEWER_VOLUME_KEY_VOLUME_LONG_PRESS_TIME, (Ecore_Task_Cb) __msg_ui_viewer_down_key_long_press_cb, (void *)viewer_play_data);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "key_name is not applicable!");
+               }
+       }
+
+       return EINA_TRUE;
+}
+
+void msg_ui_viewer_create_volume_bar(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       Evas_Object *layout = NULL;
+       Evas_Object *slider = NULL;
+       Evas_Object *icon_start = NULL;
+       Evas_Object *icon_end = NULL;
+
+       layout = elm_layout_add(viewer_play_data->play_layout);
+       elm_layout_file_set(layout, MSG_VIEWER_THEME, "volume_controller");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(layout);
+
+       slider = elm_slider_add(layout);
+       elm_slider_indicator_show_set(slider, EINA_TRUE);
+       evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
+       evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
+       elm_slider_indicator_format_set(slider, "%1.0f");
+       evas_object_show(slider);
+
+       icon_start = elm_icon_add(layout);
+       elm_image_file_set(icon_start, MSG_IMAGES_EDJ, MSG_VIEWER_VOLUME_MIN);
+       evas_object_size_hint_aspect_set(icon_start, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+       icon_end = elm_icon_add(layout);
+       elm_image_file_set(icon_end, MSG_IMAGES_EDJ, MSG_VIEWER_VOLUME_MAX);
+       evas_object_size_hint_aspect_set(icon_end, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
+
+       elm_object_content_set(slider,icon_start);
+       elm_object_part_content_set(slider, "end", icon_end);
+
+       elm_slider_min_max_set(slider, 0, __msg_ui_viewer_get_max_volume());
+       elm_slider_value_set(slider, __msg_ui_viewer_get_current_volume());
+
+       elm_object_part_content_set(layout, "slider", slider);
+
+       viewer_play_data->volumebar = layout;
+       viewer_play_data->volume_slider = slider;
+       elm_object_part_content_set(viewer_play_data->play_layout, "volume_layout", viewer_play_data->volumebar);
+
+       evas_object_data_set(slider, "viewer_play_data", viewer_play_data);
+
+       __msg_ui_viewer_volumebar_event_callback_add(slider, __msg_ui_viewer_volumebar_event_cb);
+
+       evas_object_smart_callback_add(slider, "slider,drag,start", __msg_ui_viewer_volumebar_drag_start_cb, viewer_play_data);
+       evas_object_smart_callback_add(slider, "slider,drag,stop", __msg_ui_viewer_volumebar_drag_stop_cb, viewer_play_data);
+       evas_object_smart_callback_add(slider, "changed", __msg_ui_viewer_volumebar_changed_cb, viewer_play_data);
+
+       //create timer
+       if (viewer_play_data->volumebar_timer) {
+               ecore_timer_del(viewer_play_data->volumebar_timer);
+               viewer_play_data->volumebar_timer = NULL;
+       }
+       viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
+
+}
+
+void msg_ui_viewer_destroy_volume_bar(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->volumebar_timer) {
+               ecore_timer_del(viewer_play_data->volumebar_timer);
+               viewer_play_data->volumebar_timer = NULL;
+       }
+
+       elm_object_part_content_unset(viewer_play_data->play_layout, "volume_layout");
+       evas_object_del(viewer_play_data->volumebar);
+       viewer_play_data->volumebar = NULL;
+}
+
+static Eina_Bool __msg_ui_viewer_volumebar_timer_cb(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, EINA_FALSE, "data is NULL");
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       elm_object_part_content_unset(viewer_play_data->play_layout, "volume_layout");
+       evas_object_del(viewer_play_data->volumebar);
+       viewer_play_data->volumebar = NULL;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __msg_ui_viewer_volumebar_drag_start_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->volumebar_event_cb)
+               viewer_play_data->volumebar_event_cb(viewer_play_data, obj, MSG_VIEWER_VOLUME_EVENT_DRAG_START);
+
+       viewer_play_data->drag_volume_slider = true;
+}
+
+static void __msg_ui_viewer_volumebar_drag_stop_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "data is NULL");
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->volumebar_event_cb)
+               viewer_play_data->volumebar_event_cb(viewer_play_data, obj, MSG_VIEWER_VOLUME_EVENT_DRAG_STOP);
+
+       viewer_play_data->drag_volume_slider = false;
+}
+
+static void __msg_ui_viewer_volumebar_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       double val = elm_slider_value_get(obj);
+
+       if ((int)val != __msg_ui_viewer_get_current_volume())
+               __msg_ui_viewer_set_volume((int)val);
+}
+
+static void __msg_ui_viewer_volumebar_event_cb(void *user_data, Evas_Object *obj, MSG_VIEWER_VOLUME_BAR_EVENT_E event)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, user_data == NULL, "data is NULL");
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)user_data;
+
+       if (event == MSG_VIEWER_VOLUME_EVENT_DRAG_START) {
+               if (viewer_play_data->volumebar_timer) {
+                       ecore_timer_del(viewer_play_data->volumebar_timer);
+                       viewer_play_data->volumebar_timer = NULL;
+               }
+       } else if (event == MSG_VIEWER_VOLUME_EVENT_DRAG_STOP) {
+               viewer_play_data->volumebar_timer = ecore_timer_add(VIEWER_VOLUMEBAR_LIFETIME, __msg_ui_viewer_volumebar_timer_cb, viewer_play_data);
+       }
+}
+
+static void __msg_ui_viewer_volumebar_event_callback_add(Evas_Object *obj, MSG_VIEWER_VOLUMEBAR_CB event_cb)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, obj == NULL);
+       MSG_PLAY_DATA_S *viewer_play_data = evas_object_data_get(obj, "viewer_play_data");
+
+       viewer_play_data->volumebar_event_cb = event_cb;
+}
+
+static void __msg_ui_viewer_volumebar_volume_up(Evas_Object *obj)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       double max = 0.0;
+       elm_slider_min_max_get(obj, NULL, &max);
+
+       double current = elm_slider_value_get(obj);
+
+       if (current < max)
+               elm_slider_value_set(obj, (current + 1.0));
+
+       evas_object_smart_callback_call(obj, "changed", NULL);
+}
+
+static void __msg_ui_viewer_volumebar_volume_down(Evas_Object *obj)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       double min = 0.0;
+       elm_slider_min_max_get(obj, &min, NULL);
+
+       double current = elm_slider_value_get(obj);
+
+       if (current > min)
+               elm_slider_value_set(obj, (current - 1.0));
+
+       evas_object_smart_callback_call(obj, "changed", NULL);
+}
+
+static int __msg_ui_viewer_get_max_volume(void)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       int max_vol = 0;
+
+       int ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &max_vol);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_get_max_volume().. [0x%x]", ret);
+               return -1;
+       }
+
+       return max_vol;
+}
+
+static int __msg_ui_viewer_get_current_volume(void)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       int current = 0;
+
+       int ret = sound_manager_get_volume(SOUND_TYPE_MEDIA, &current);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_get_max_volume().. [0x%x]", ret);
+               return -1;
+       }
+
+       return current;
+}
+
+static bool __msg_ui_viewer_set_volume(int volume)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       int ret = sound_manager_set_volume(SOUND_TYPE_MEDIA, volume);
+       if (ret != SOUND_MANAGER_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"sound_manager_set_volume().. [0x%x]", ret);
+               return false;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG,"set volume value = %d", volume);
+
+       return true;
+}
diff --git a/viewer/src/msg-ui-viewer-utility.c b/viewer/src/msg-ui-viewer-utility.c
new file mode 100755 (executable)
index 0000000..f0f1325
--- /dev/null
@@ -0,0 +1,392 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://floralicense.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                             INCLUDE HEADERS
+ * ==================================================================================================*/
+#include "msg-ui-viewer-utility.h"
+#include <glib-object.h>
+#include <glib.h>
+#include <msg-ui-util.h>
+#include <contacts.h>
+#include <ctype.h>
+#include <Ecore_File.h>
+#include <media_content.h>
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static void __msg_viewer_util_get_color_code(int color_dec);
+
+/*==================================================================================================
+ *                                                     FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+/* Note:  Caller should free returned string after using it*/
+char *msg_viewer_util_get_display_name_by_index(int index)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Label Contact Index [%d]", index);
+
+       contacts_record_h contact = NULL;
+       contacts_record_h record = NULL;
+       char *first = NULL;
+       char *last = NULL;
+       char *display_name = NULL;
+       char *main_name;
+       int ct_err;
+
+       ct_err = contacts_db_get_record(_contacts_contact._uri, index, &contact);
+
+       if (ct_err != CONTACTS_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"contacts_db_get_record is failed error_code = %d", ct_err);
+               return NULL;
+       }
+
+       /* get display name */
+       ct_err = contacts_record_get_str_p(contact, _contacts_contact.display_name, &main_name);
+
+       if (ct_err != CONTACTS_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"contacts_record_get_str_p is failed error_code = %d", ct_err);
+               contacts_record_destroy(contact, true);
+               return NULL;
+       }
+
+       if (main_name) {
+               display_name = g_strdup(main_name);
+       } else {
+               ct_err = contacts_record_get_child_record_at_p(contact, _contacts_contact.name, 0, &record);
+
+               if (ct_err != CONTACTS_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"contacts_record_get_child_record_at_p is failed error_code = %d", ct_err);
+                       contacts_record_destroy(contact, true);
+                       return NULL;
+               }
+
+               /* get first name */
+               ct_err = contacts_record_get_str_p(record, _contacts_name.first, &first);
+
+               if (ct_err != CONTACTS_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"contacts_record_get_str_p is failed error_code = %d", ct_err);
+                       contacts_record_destroy(contact, true);
+                       return NULL;
+               }
+
+               /* get last name */
+               ct_err = contacts_record_get_str_p(record, _contacts_name.last, &last);
+
+               if (ct_err != CONTACTS_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"contacts_record_get_str_p is failed error_code = %d", ct_err);
+                       contacts_record_destroy(contact, true);
+                       return NULL;
+               }
+
+               if (first != NULL && last != NULL) {
+                       contacts_name_display_order_e name_display_order;
+                       ct_err = contacts_setting_get_name_display_order(&name_display_order);
+
+                       if (ct_err != CONTACTS_ERROR_NONE) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR,"contacts_setting_get_name_display_order is failed error_code = %d", ct_err);
+                               contacts_record_destroy(contact, true);
+                               return NULL;
+                       }
+
+                       if (CONTACTS_NAME_DISPLAY_ORDER_FIRSTLAST == name_display_order) {
+                               display_name = g_strconcat(first, " ", last, NULL);
+                       } else {
+                               display_name = g_strconcat(last, " ", first, NULL);
+                       }
+               } else if (first != NULL || last != NULL) {
+                       display_name = (first != NULL) ? g_strdup(first) : g_strdup(last);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "get display name has failed!");
+               }
+       }
+
+       contacts_record_destroy(contact, true);
+
+       return display_name;
+}
+
+MSG_BOOL msg_viewer_util_get_file_ext(const char *filepath, char *file_ext, int ext_len)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, filepath == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, file_ext == NULL, FALSE);
+       const char *filename = NULL;
+       char *pdot = NULL;
+
+       filename = (const char *)ecore_file_file_get(filepath);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, filename == NULL, FALSE);
+
+       pdot = strrchr(filename, '.');
+
+       if (!pdot) {
+               return FALSE;
+       } else if (pdot != filepath) {
+               strncpy(file_ext, pdot + 1, ext_len);
+               return TRUE;
+       } else {
+               return FALSE;
+       }
+}
+
+int msg_viewer_util_get_next_number(char *file_name_without_ext)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, file_name_without_ext == NULL, MSG_VIEWER_INVALID_FILE_NUMBER);
+       int nCount = 0;
+       int nLength = 0;
+       int nUnderline = 0;
+       MSG_BOOL bAllDigits = TRUE;
+       int i = 0;
+
+       /* check _02d format */
+       nLength = strlen(file_name_without_ext);
+
+       for (nUnderline = nLength - 1 ; nUnderline >= 0 ; nUnderline--) {
+               if (file_name_without_ext[nUnderline] == '_') {
+                       break;
+               }
+       }
+
+       if (nUnderline == 0 && file_name_without_ext[0] != '_') {
+               return MSG_VIEWER_DEFAULT_FILE_NUMBER; /*doesn't match*/
+       }
+
+       /* check the right characters are all digits */
+       for (i = nUnderline + 1 ; i < nLength ; i++) {
+               if (file_name_without_ext[i] < '0' || file_name_without_ext[i] > '9') {
+                       bAllDigits = FALSE;
+                       break;
+               }
+       }
+
+       if (bAllDigits) {
+               for (i = nUnderline + 1 ; i < nLength ; i++) {
+                       nCount *= 10;
+                       nCount += file_name_without_ext[i]-'0';
+               }
+               /* truncate the last '_dd' */
+               file_name_without_ext[nUnderline] = '\0';
+       }
+
+       /* increase nCount by 1*/
+       nCount++;
+
+       return nCount;
+}
+
+char hexa_data[MSG_VIEWER_COLOR_HEXA_BUFFER_LEN];
+char hexa_value[MSG_VIEWER_HEXA_SIZE] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+static void __msg_viewer_util_get_color_code(int color_dec)
+{
+       int col = color_dec;
+       int rem = 0;
+
+       memset(hexa_data, 0x00, sizeof(hexa_data));
+       rem = col % MSG_VIEWER_HEXA_SIZE;
+       col = col / MSG_VIEWER_HEXA_SIZE;
+       hexa_data[0] = hexa_value[col];
+       hexa_data[1] = hexa_value[rem];
+}
+
+void msg_viewer_util_get_color_as_string(char *szcolor, int szcolor_len, int r, int g, int b)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, szcolor == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, szcolor_len < MSG_VIEWER_RGB_COLOR_BUF);
+       char col_hex[MSG_VIEWER_RGB_COLOR_BUF] = {0x0,};
+       /* Get color*/
+       __msg_viewer_util_get_color_code(r);
+       col_hex[0] = hexa_data[0];
+       col_hex[1] = hexa_data[1];
+       __msg_viewer_util_get_color_code(g);
+       col_hex[2] = hexa_data[0];
+       col_hex[3] = hexa_data[1];
+       __msg_viewer_util_get_color_code(b);
+       col_hex[4] = hexa_data[0];
+       col_hex[5] = hexa_data[1];
+       col_hex[6] = '\0';
+
+       snprintf(szcolor, MSG_VIEWER_RGB_COLOR_BUF, "%s", col_hex);
+}
+
+MSG_BOOL msg_viewer_util_get_default_path(char *dir_path, int dir_path_len)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, dir_path == NULL, FALSE);
+
+       if (ecore_file_is_dir(MSG_VIEWER_DOWNLOAD_PATH) == EINA_FALSE) {
+               if (ecore_file_mkdir(MSG_VIEWER_DOWNLOAD_PATH) == EINA_FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ecore_file_mkdir is failed");
+                       snprintf(dir_path, dir_path_len, "%s", MSG_VIEWER_CONTENT_PATH);
+               } else {
+                       snprintf(dir_path, dir_path_len, "%s", MSG_VIEWER_DOWNLOAD_PATH);
+               }
+       } else {
+               snprintf(dir_path, dir_path_len, "%s", MSG_VIEWER_DOWNLOAD_PATH);
+       }
+
+       return TRUE;
+}
+
+unsigned char *msg_ui_viewer_get_buffer_from_file(const char *filepath, const char *opt, unsigned int *buffer_size)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, filepath == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, buffer_size == NULL, NULL);
+
+       *buffer_size = 0;
+       FILE *pFile = NULL;
+
+       pFile = fopen(filepath, opt);
+       if (pFile == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "File Open Error");
+               return NULL;
+       }
+
+       if (fseek(pFile, 0, SEEK_END) < 0) {
+               fclose(pFile);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "File fseek Error: ");
+               return NULL;
+       }
+
+       int file_size = ftell(pFile);
+
+       if (file_size <= 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Filesize is error : %d", file_size);
+               fclose(pFile);
+               return NULL;
+       }
+
+       if (fseek(pFile, 0, SEEK_SET) < 0) {
+               fclose(pFile);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "File seek Error");
+               return NULL;
+       }
+
+       unsigned char *buffer = (unsigned char *)malloc(file_size);
+
+       if (!buffer) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "buffer is NULL");
+               fclose(pFile);
+               return NULL;
+       }
+
+       if (fread(buffer, sizeof(char), file_size, pFile) != (size_t)file_size) {
+               fclose(pFile);
+               free(buffer);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "File Read Error");
+               return NULL;
+       }
+
+       *buffer_size = file_size;
+       fclose(pFile);
+
+       return buffer;
+}
+
+char *msg_ui_viewer_util_copy_file(const char *src_path, char *dst_path)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, src_path == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, dst_path == NULL, NULL);
+       char file_ext[MSG_VIEWER_FILE_EXT_MAX_LEN + 1] = {0};
+       char file_name_without_ext[MSG_VIEWER_FILENAME_MAX_LEN + 1] = {0};
+       char new_file_name[MSG_VIEWER_FILENAME_MAX_LEN + 1] = {0};
+       MSG_BOOL result = FALSE;
+       int ncount = 0;
+       Eina_Bool is_exists = FALSE;
+
+       snprintf(new_file_name, sizeof(new_file_name), "%s", dst_path);
+
+       /*check for same file*/
+       is_exists = ecore_file_exists(new_file_name);
+       if (is_exists == EINA_TRUE) {
+               strncpy(file_name_without_ext, dst_path, MSG_VIEWER_FILENAME_MAX_LEN);
+               result = msg_viewer_util_get_file_ext(dst_path, file_ext, MSG_VIEWER_FILE_EXT_MAX_LEN);
+               if (result)
+                       file_name_without_ext[strlen(file_name_without_ext) - strlen(file_ext) - 1] = '\0';
+
+               ncount = MSG_VIEWER_DEFAULT_FILE_NUMBER;
+               memset(new_file_name, 0x00, sizeof(new_file_name));
+
+               /*make new filename*/
+               do {
+                       if (strlen(file_ext) > 0)
+                               snprintf(new_file_name, sizeof(new_file_name), "%s_%02d.%s", file_name_without_ext, ncount, file_ext);
+                       else
+                               snprintf(new_file_name, sizeof(new_file_name), "%s_%02d", file_name_without_ext, ncount);
+                       /*check for same file*/
+                       is_exists = ecore_file_exists(new_file_name);
+                       if (is_exists == EINA_TRUE) {
+                               memset(new_file_name, 0x00, sizeof(new_file_name));
+                               ncount++;
+                       } else {
+                               break;
+                       }
+               } while (is_exists);
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "new_file_name = %s", new_file_name);
+
+       media_content_connect();
+
+       if (ecore_file_cp(src_path, new_file_name) == EINA_FALSE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ecore_file_cp is failed");
+               media_content_disconnect();
+               return NULL;
+       }
+
+       if (media_content_scan_file(new_file_name) != MEDIA_CONTENT_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "media_content_scan_file() is failed");
+               media_content_disconnect();
+               return NULL;
+       }
+
+       media_content_disconnect();
+
+       return strdup(new_file_name);
+}
+
+char *msg_ui_viewer_util_create_working_dir(void)
+{
+       D_ENTER;
+       char *base_dir = "/tmp/message";
+       char working_path[DEF_PATH_MAX] = {0,};
+       int i = 0;
+
+       /*Create base dir*/
+       if (ecore_file_exists(base_dir) == EINA_FALSE) {
+               if(ecore_file_mkdir(base_dir) == EINA_FALSE) {
+                       return NULL;
+               }
+       }
+
+       /*Create work dir*/
+       do {
+               bzero(working_path, DEF_PATH_MAX);
+               snprintf(working_path, sizeof(working_path)-1, "%s/viewer_%d/", base_dir, i);
+               if (ecore_file_exists(working_path) == EINA_FALSE) {
+                       if (ecore_file_mkdir(working_path) == EINA_FALSE) {
+                               return NULL;
+                       } else {
+                               D_MSG("Success to create working path = %s", working_path);
+                               return strdup(working_path);
+                       }
+                       break;
+               }
+               i++;
+       } while(i < 255);
+
+       return NULL;
+}
diff --git a/viewer/theme/msg_viewer.edc b/viewer/theme/msg_viewer.edc
new file mode 100755 (executable)
index 0000000..2100721
--- /dev/null
@@ -0,0 +1,1510 @@
+#define MAIN_W 720
+#define BODY_PADDING_MIN_H 34
+#define BODY_PADDING_MID_MIN_H 16
+#define SUBJECT_MIN_H 50
+#define SUBJECT_BG_H 12
+#define AUDIO_PANEL_H 80
+#define PAGE_INDEX_MIN_W 96
+#define DETAIL_PADDING_V_MIN 20
+#define DETAIL_PADDING_H_MIN 20
+
+//colors
+#define COLOR_SUBJECT_BG 216 226 232 255
+#define COLOR_SUBJECT_INDEX 128 128 128 255 //winset guide font 'index list'
+#define COLOR_DETAIL_INFO_TEXT 108 168 199 255
+#define COLOR_PROGRESS_START_TEXT 255 255 255 255
+#define COLOR_PROGRESS_END_TEXT 142 142 142 255
+
+//play controllbar attributes
+#define PLAY_CTRBAR_MIN_H 218
+#define PLAY_CTRBAR_TOP_PADDING_MIN_H 50
+#define PLAY_CTRBAR_PROGRESSBAR_PADDING_MIN_H 30
+#define PLAY_CTRBAR_MIDDLE_PADDING_MIN_H 41
+#define PLAY_CTRBAR_BOTTOM_PADDING_MIN_H 17
+
+#define PLAY_CTRBAR_PROGRESS_BAR_W 486
+#define PLAY_CTRBAR_PROGRESS_PADDING_W 20
+
+#define PLAY_CTRBAR_VOL_BUTTON_W 104
+#define PLAY_CTRBAR_VOL_BUTTON_PADDING_W 30
+
+#define PLAY_CTRBAR_NAVI_BUTTON_W 122
+#define PLAY_CTRBAR_NAVI_BUTTON_PADDING_W 22
+
+#define PLAY_CTRBAR_BUTTON_VOLUME_START_X 20
+#define PLAY_CTRBAR_BUTTON_PREV_START_X (PLAY_CTRBAR_BUTTON_VOLUME_START_X+PLAY_CTRBAR_VOL_BUTTON_W+PLAY_CTRBAR_VOL_BUTTON_PADDING_W)
+#define PLAY_CTRBAR_BUTTON_PLAY_START_X (PLAY_CTRBAR_BUTTON_PREV_START_X+PLAY_CTRBAR_NAVI_BUTTON_W+PLAY_CTRBAR_NAVI_BUTTON_PADDING_W)
+#define PLAY_CTRBAR_BUTTON_NEXT_START_X (PLAY_CTRBAR_BUTTON_PLAY_START_X+PLAY_CTRBAR_NAVI_BUTTON_W+PLAY_CTRBAR_NAVI_BUTTON_PADDING_W)
+
+#define PLAY_VOLUMEBAR_H       112
+
+//edc images
+#define PLAYER_BG "M01_player_bg.png"
+#define VOL_BTN "M01_controller_icon_volume.png"
+#define VOL_BTN_PRESS "M01_controller_icon_volume_press.png"
+#define PREV_BTN "M01_play_btn_previous.png"
+#define PREV_BTN_PRESS "M01_play_btn_previous_press.png"
+#define PREV_BTN_DIM "M01_Play_btn_previous_dim.png"
+#define PLAY_BTN "M01_Play_btn__play.png"
+#define PLAY_BTN_PRESS "M01_Play_btn__play_press.png"
+#define PAUSE_BTN "M01_play_btn_pause.png"
+#define PAUSE_BTN_PRESS "M01_play_btn_pause_press.png"
+#define NEXT_BTN "M01_play_btn_next.png"
+#define NEXT_BTN_PRESS "M01_play_btn_next_press.png"
+#define NEXT_BTN_DIM "M01_Play_btn_next_dim.png"
+#define PROGRESS_BAR "M01_player_progress_bar.png"
+#define PROGRESS_BG "M01_player_progress_bg.png"
+
+#define LOCK_ICON "M01_icon_locked.png"
+#define SUBJECT_INDEX_BG "M01_subject_bg.png"
+
+#define TITLE_LIST_BG "M01_popup_bubble_bg.png"
+#define AUDIO_ICON "myfile_icon_music.png"
+
+collections {
+       group {
+               name: "volume_controller";
+               images {
+                       image: VOLUME_BAR_BG COMP;
+               }
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 PLAY_VOLUMEBAR_H;
+                               }
+                       }
+                       part {
+                               name: "rect/bg";
+                               type: IMAGE;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1{to:"rect"; relative:0.0 0.0;}
+                                       rel2{to:"rect"; relative:1.0 1.0;}
+                                       image {
+                                               normal: TITLE_LIST_BG;
+                                               border: 11 11 11 11;
+                                               border_scale: 1;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "slider";
+                               scale: 1;
+                               type: SWALLOW;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "rect";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "rect";
+                                               relative: 1.0 1.0;
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "play_controller";
+               images {
+                       image: PLAYER_BG COMP;
+                       image: VOL_BTN COMP;
+                       image: VOL_BTN_PRESS COMP;
+                       image: PREV_BTN COMP;
+                       image: PREV_BTN_PRESS COMP;
+                       image: PREV_BTN_DIM COMP;
+                       image: PLAY_BTN COMP;
+                       image: PLAY_BTN_PRESS COMP;
+                       image: PAUSE_BTN COMP;
+                       image: PAUSE_BTN_PRESS COMP;
+                       image: NEXT_BTN COMP;
+                       image: NEXT_BTN_PRESS COMP;
+                       image: NEXT_BTN_DIM COMP;
+               }
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 PLAY_CTRBAR_MIN_H;
+                               }
+                       }
+                       part {
+                               name: "rect/bg";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       rel1{to:"rect"; relative:0.0 0.0;}
+                                       rel2{to:"rect"; relative:1.0 1.0;}
+                                       image { normal: PLAYER_BG; }
+                               }
+                       }
+                       part {
+                               name: "rect/padding/top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 PLAY_CTRBAR_TOP_PADDING_MIN_H;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect"; relative:0.0 0.0;}
+                                       rel2{to:"rect"; relative:1.0 0.0;}
+                               }
+                       }
+                       part {
+                               name: "rect/padding/progressbar";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 PLAY_CTRBAR_PROGRESSBAR_PADDING_MIN_H;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect/padding/top"; relative:0.0 1.0;}
+                                       rel2{to:"rect/padding/top"; relative:1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "progress/start/time";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 PLAY_CTRBAR_PROGRESSBAR_PADDING_MIN_H;
+                                       align: 0.5 0.5;
+                                       fixed: 1 1;
+                                       rel1{to:"rect/padding/progressbar"; relative:0.0 0.0;}
+                                       rel2{to:"progressbar"; relative:0.0 1.0;}
+                                       color: COLOR_PROGRESS_START_TEXT;
+                                       text {
+                                               font: SLP_FONT_REGULAR;
+                                               text_class: FONT_TEXT_CLASS_REGULAR;
+                                               size: 28;
+                                               align: 0.5 0.5;
+                                               ellipsis: 0.0;
+                                               text: "";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "progressbar";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 PLAY_CTRBAR_PROGRESSBAR_PADDING_MIN_H;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect/padding/progressbar"; relative:((MAIN_W-PLAY_CTRBAR_PROGRESS_BAR_W)/2)/MAIN_W 0.0;}
+                                       rel2{to:"rect/padding/progressbar"; relative:(((MAIN_W-PLAY_CTRBAR_PROGRESS_BAR_W)/2)+PLAY_CTRBAR_PROGRESS_BAR_W)/MAIN_W 0.0;}
+                               }
+                       }
+                       part {
+                               name: "progress/end/time";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 PLAY_CTRBAR_PROGRESSBAR_PADDING_MIN_H;
+                                       align: 0.5 0.5;
+                                       fixed: 1 1;
+                                       rel1{to:"progressbar"; relative:1.0 0.0;}
+                                       rel2{to:"rect/padding/progressbar"; relative:1.0 1.0;}
+                                       color: COLOR_PROGRESS_END_TEXT;
+                                       text {
+                                               font: SLP_FONT_REGULAR;
+                                               text_class: FONT_TEXT_CLASS_REGULAR;
+                                               size: 28;
+                                               align: 0.5 0.5;
+                                               ellipsis: 0.0;
+                                               text: "";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "rect/padding/middle";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 PLAY_CTRBAR_MIDDLE_PADDING_MIN_H;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect/padding/progressbar"; relative:0.0 1.0;}
+                                       rel2{to:"rect/padding/progressbar"; relative:1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "rect/padding/buttons";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect/padding/middle"; relative:0.0 1.0;}
+                                       rel2{to:"rect/padding/bottom"; relative:1.0 0.0;}
+                               }
+                       }
+                       part {
+                               name: "rect/padding/bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 PLAY_CTRBAR_BOTTOM_PADDING_MIN_H;
+                                       align: 0.0 1.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect"; relative:0.0 1.0;}
+                                       rel2{to:"rect"; relative:1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "volume";
+                               type : IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       min: 104 74;
+                                       max: 104 74;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: PLAY_CTRBAR_BUTTON_VOLUME_START_X/MAIN_W 0.0; to, "rect/padding/buttons"; offset: 0 3;}
+                                       rel2 { relative: PLAY_CTRBAR_BUTTON_VOLUME_START_X/MAIN_W 1.0; to, "rect/padding/buttons"; offset: PLAY_CTRBAR_VOL_BUTTON_W -3;}
+                                       image { normal: VOL_BTN; }
+
+                               }
+                               description { state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: VOL_BTN_PRESS; }
+                               }
+                       }
+                       part {
+                               name: "rect/divide/line";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 1 70;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"volume"; relative:1.0 0.0; offset: 10 2;}
+                                       rel2{to:"volume"; relative:1.0 1.0; offset: 10 -2;}
+                                       color: 144 144 144 255;
+                               }
+                       }
+                       part { name: "prev";
+                               type : IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       min: 122 80;
+                                       max: 122 80;
+                                       fixed: 1 1;
+                                       rel1 { relative: PLAY_CTRBAR_BUTTON_PREV_START_X/MAIN_W 0.0; to, "rect/padding/buttons";}
+                                       rel2 { relative: PLAY_CTRBAR_BUTTON_PREV_START_X/MAIN_W 1.0; to, "rect/padding/buttons"; offset: PLAY_CTRBAR_NAVI_BUTTON_W 0;}
+                                       image { normal: PREV_BTN; }
+                               }
+                               description { state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: PREV_BTN_PRESS; }
+                               }
+                               description { state: "dimmed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: PREV_BTN_DIM; }
+                               }
+                       }
+                       part { name: "next";
+                               type : IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 122 80;
+                                       max: 122 80;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: PLAY_CTRBAR_BUTTON_NEXT_START_X/MAIN_W 0.0; to, "rect/padding/buttons";}
+                                       rel2 { relative: PLAY_CTRBAR_BUTTON_NEXT_START_X/MAIN_W 1.0; to, "rect/padding/buttons"; offset: PLAY_CTRBAR_NAVI_BUTTON_W 0;}
+                                       image { normal: NEXT_BTN; }
+                               }
+                               description { state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: NEXT_BTN_PRESS; }
+                               }
+                               description { state: "dimmed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: NEXT_BTN_DIM; }
+                               }
+                       }
+                       part { name: "play_pause";
+                               type : IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                               state: "default" 0.0;
+                                       visible: 1;
+                                       min: 122 80;
+                                       max: 122 80;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: PLAY_CTRBAR_BUTTON_PLAY_START_X/MAIN_W 0.0; to, "rect/padding/buttons";}
+                                       rel2 { relative: PLAY_CTRBAR_BUTTON_PLAY_START_X/MAIN_W 1.0; to, "rect/padding/buttons"; offset: PLAY_CTRBAR_NAVI_BUTTON_W 0;}
+                                       image { normal: PLAY_BTN; }
+                               }
+                               description { state: "default" 1.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: PAUSE_BTN; }
+                               }
+                               description { state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: PLAY_BTN_PRESS; }
+                               }
+                               description { state: "pressed" 1.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: PAUSE_BTN_PRESS; }
+                               }
+                       }
+                       programs {
+                               program {
+                                       name: "vol_btn_click";
+                                       source: "volume";
+                                       signal: "mouse,clicked,1";
+                                       script {
+                                               emit ("volume_clicked", "");
+                                       }
+                               }
+                               program {
+                                       name: "vol_btn_down";
+                                       source: "volume";
+                                       signal: "mouse,down,1";
+                                       script {
+                                               set_state(PART:"volume", "pressed", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "vol_btn_up";
+                                       source: "volume";
+                                       signal: "mouse,up,1";
+                                       script {
+                                               set_state(PART:"volume", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "prev_btn_click";
+                                       source: "prev";
+                                       signal: "mouse,clicked,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"prev", st, 30, vl)
+
+                                               if (!strcmp(st, "default"))
+                                                       emit ("prev_clicked", "");
+                                       }
+                               }
+                               program {
+                                       name: "prev_btn_down";
+                                       source: "prev";
+                                       signal: "mouse,down,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"prev", st, 30, vl)
+
+                                               if (!strcmp(st, "default"))
+                                                       set_state(PART:"prev", "pressed", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "prev_btn_up";
+                                       source: "prev";
+                                       signal: "mouse,up,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"prev", st, 30, vl)
+
+                                               if (!strcmp(st, "pressed"))
+                                                       set_state(PART:"prev", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "prev_btn_enable";
+                                       source: "*";
+                                       signal: "prev_enable";
+                                       script {
+                                               set_state(PART:"prev", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "prev_btn_disable";
+                                       source: "*";
+                                       signal: "prev_disable";
+                                       script {
+                                               set_state(PART:"prev", "dimmed", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "play_btn_click";
+                                       source: "play_pause";
+                                       signal: "mouse,clicked,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"play_pause", st, 30, vl)
+                                               if(vl == 0.0)
+                                                       emit ("play_clicked", "");
+                                               else
+                                                       emit ("pause_clicked", "");
+                                       }
+                               }
+                               program {
+                                       name: "play_btn_down";
+                                       source: "play_pause";
+                                       signal: "mouse,down,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"play_pause", st, 30, vl)
+                                               if(vl == 0.0)
+                                                       set_state(PART:"play_pause", "pressed", 0.0);
+                                               else
+                                                       set_state(PART:"play_pause", "pressed", 1.0);
+                                       }
+                               }
+                               program {
+                                       name: "play_btn_up";
+                                       source: "play_pause";
+                                       signal: "mouse,up,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"play_pause", st, 30, vl)
+                                               if(vl == 0.0)
+                                                       set_state(PART:"play_pause", "default", 0.0);
+                                               else
+                                                       set_state(PART:"play_pause", "default", 1.0);
+                                       }
+                               }
+                               program {
+                                       name: "play_btn_play";
+                                       source: "*";
+                                       signal: "play";
+                                       script {
+                                               set_state(PART:"play_pause", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "play_btn_pause";
+                                       source: "*";
+                                       signal: "pause";
+                                       script {
+                                               set_state(PART:"play_pause", "default", 1.0);
+                                       }
+                               }
+                               program {
+                                       name: "next_btn_click";
+                                       source: "next";
+                                       signal: "mouse,clicked,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"next", st, 30, vl)
+
+                                               if (!strcmp(st, "default"))
+                                                       emit ("next_clicked", "");
+                                       }
+                               }
+                               program {
+                                       name: "next_btn_down";
+                                       source: "next";
+                                       signal: "mouse,down,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"next", st, 30, vl)
+
+                                               if (!strcmp(st, "default"))
+                                                       set_state(PART:"next", "pressed", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "next_btn_up";
+                                       source: "next";
+                                       signal: "mouse,up,1";
+                                       script {
+                                               new st[31];
+                                               new Float:vl;
+                                               get_state(PART:"next", st, 30, vl)
+
+                                               if (!strcmp(st, "pressed"))
+                                                       set_state(PART:"next", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "next_btn_enable";
+                                       source: "*";
+                                       signal: "next_enable";
+                                       script {
+                                               set_state(PART:"next", "default", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "next_btn_disable";
+                                       source: "*";
+                                       signal: "next_disable";
+                                       script {
+                                               set_state(PART:"next", "dimmed", 0.0);
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "elm/progressbar/horizontal/list_progress";
+               images {
+                       image: PROGRESS_BAR COMP;
+                       image: PROGRESS_BG COMP;
+               }
+               parts {
+                       part {
+                               name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 0.0  0.0;
+                                               offset: 0 0;
+                                       }
+                                       rel2 {
+                                               relative: 0.0  1.0;
+                                               offset: 0 0;
+                                       }
+                                       color: 0 0 0 0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.padding.right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 1.0  0.0;
+                                               offset: 0 0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0  1.0;
+                                               offset:   0   0;
+                                       }
+                                       color: 0 0 0 0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "elm.background.progressbar";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to_x: "elm.padding.left";
+                                               relative: 1.0 0.0;
+                                               offset: 0 0;
+                                       }
+                                       rel2 {
+                                               to_x: "elm.padding.right";
+                                               relative: 0.0 1.0;
+                                               offset: 0 0;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.bar";
+                               mouse_events: 0;
+                               scale: 1;
+                               type: SWALLOW;
+                               description {
+                                       min: 1 7;
+                                       max: 99999 7;
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.background.progressbar";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "elm.background.progressbar";
+                                               relative: 1.0 1.0;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.content";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       align: 0.0 0.5;
+                                       rel1 {
+                                               offset: 0 0;
+                                               to_y: "elm.background.progressbar";
+                                       }
+                                       rel2 {
+                                               offset: 0 -1;
+                                               relative: 0.0 1.0;
+                                               to_y: "elm.background.progressbar";
+                                       }
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                                       aspect: 1.0 1.0;
+                                       aspect_preference: VERTICAL;
+                                       rel2.offset: 4 -1;
+                               }
+                       }
+                       part {
+                               name: "background";
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "elm.background.progressbar";
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "elm.swallow.bar";
+                                               relative: 1.0 1.0;
+                                       }
+                                       image {
+                                               normal: PROGRESS_BG;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.progress.progressbar";
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "elm.background.progressbar";
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_y: "elm.swallow.bar";
+                                               to_x: "elm.cur.progressbar";
+                                               offset: -1 -1;
+                                       }
+                                       image {
+                                               normal: PROGRESS_BAR;
+                                       }
+                               }
+                               description {
+                                       state: "invert" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               to_y: "elm.swallow.bar";
+                                               to_x: "elm.cur.progressbar";
+                                       }
+                                       rel2 {
+                                               to: "elm.swallow.bar";
+                                               relative: 1.0 1.0;
+                                       }
+                               }
+                               description {
+                                       state: "state_begin" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.1 1.0;
+                                       }
+                               }
+                               description {
+                                       state: "state_end" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.9 0.0;
+                                       }
+                                       rel2 {
+                                               to: "elm.swallow.bar";
+                                               relative: 1.0 1.0;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.cur.progressbar";
+                               mouse_events: 0;
+                               scale: 1;
+                               dragable {
+                                       confine: "background";
+                                       x: 1 1 1;
+                                       y: 0 0 0;
+                               }
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 28;
+                                       fixed: 1 1;
+                                       visible: 0;
+                                       rel1 {
+                                               to: "background";
+                                               relative: 0 0;
+                                       }
+                                       rel2.to: "background";
+                               }
+                       }
+                       part {
+                               name: "progress-rect";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to: "elm.progress.progressbar";
+                                       rel2.to: "elm.progress.progressbar";
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "subject/pageindex";
+               images {
+                       image: LOCK_ICON COMP;
+                       image: SUBJECT_INDEX_BG COMP;
+               }
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 SUBJECT_MIN_H+SUBJECT_BG_H;
+                               }
+                       }
+                       part {
+                               name: "rect/bg";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                                       rel1{to: "rect"; relative: 0.0 0.0;}
+                                       rel2{to: "rect"; relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "rect/bg/image";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 0 SUBJECT_BG_H;
+                                       align: 0.5 1.0;
+                                       rel1{to:"rect"; relative:0.0 1.0;}
+                                       rel2{to:"rect"; relative:1.0 1.0;}
+                                       image {
+                                               normal: SUBJECT_INDEX_BG;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "subject/text";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1{to:"rect"; relative:0.0 0.0; offset: DETAIL_PADDING_H_MIN 0; }
+                                       rel2{to:"rect"; relative:0.8 1.0;}
+                                       align: 0.0 0.5;
+                                       color: COLOR_SUBJECT_INDEX;
+                                       text {
+                                               font: "SLP:style=Bold";
+                                               text_class: "slp_medium";
+                                               size: 32;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "page/text";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 0.5;
+                                       min: PAGE_INDEX_MIN_W SUBJECT_MIN_H;
+                                       rel1{to:"rect"; relative:1.0 0.0;}
+                                       rel2{to:"rect"; relative:1.0 1.0;}
+                                       color: COLOR_SUBJECT_INDEX;
+                                       text {
+                                               font: "SLP:style=Bold";
+                                               text_class: "slp_medium";
+                                               size: 32;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "lock/icon";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: SUBJECT_MIN_H SUBJECT_MIN_H;
+                                       max: SUBJECT_MIN_H SUBJECT_MIN_H;
+                                       fixed: 1 1;
+                                       rel1{to:"page/text"; relative:0.0 0.0; offset: -SUBJECT_MIN_H 0;}
+                                       rel2{to:"page/text"; relative:0.0 1.0;}
+                                       align: 1.0 0.5;
+                                       image { normal: LOCK_ICON; }
+                               }
+                               description {
+                                       state: "default" 1.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                       }
+                       programs {
+                               program {
+                                       name: "lock/icon/enabled";
+                                       source: "*";
+                                       signal: "lock/icon/show";
+                                       script {
+                                               set_state(PART:"lock/icon", "default", 1.0);
+                                       }
+                               }
+                               program {
+                                       name: "lock/icon/disabled";
+                                       source: "*";
+                                       signal: "lock/icon/hide";
+                                       script {
+                                               set_state(PART:"lock/icon", "default", 0.0);
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "audio/panel";
+               images {
+                       image: AUDIO_ICON COMP;
+               }
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 AUDIO_PANEL_H;
+                               }
+                       }
+                       part {
+                               name: "audio.text.filename";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1{to:"rect"; relative:0.0 0.0; offset: 76 0; }
+                                       rel2{to:"rect"; relative:0.8 1.0;}
+                                       align: 0.0 0.5;
+                                       color: COLOR_SUBJECT_INDEX;
+                                       text {
+                                               font: "SLP:style=Bold";
+                                               text_class: "slp_medium";
+                                               size: 36;
+                                               align: 0.0 0.5;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "audio.image.icon";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 64 64;
+                                       max: 64 64;
+                                       fixed: 1 1;
+                                       rel1{to:"rect"; relative:0.0 0.0;}
+                                       rel2{to:"rect"; relative:0.0 1.0;}
+                                       align: 0.0 0.5;
+                                       image { normal: AUDIO_ICON; }
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "viewer_body_outer_margin";
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       visible: 0;
+                                       state: "default" 0.0;
+                                       min: 0 BODY_PADDING_MIN_H;
+                               }
+                       }
+               }
+       }
+
+       group {
+               name: "viewer_body_inner_margin";
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       visible: 0;
+                                       state: "default" 0.0;
+                                       min: 0 BODY_PADDING_MID_MIN_H;
+                               }
+                       }
+               }
+       }
+
+       group {
+               name : "viewer_main";
+               images {
+                       image: TITLE_LIST_BG COMP;
+               }
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "viewer.body.bg";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                                       rel1{to: "rect"; relative: 0.0 0.0;}
+                                       rel2{to: "rect"; relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "viewer.swallow.subject";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 SUBJECT_MIN_H;
+                                       fixed: 0 1;
+                                       align: 0.0 0.0;
+                                       rel1 {to: "rect"; relative:0.0 0.0;}
+                                       rel2 {to: "rect"; relative:1.0 0.0;}
+                               }
+                       }
+                       part {
+                               name: "viewer.body";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 0 0;
+                                       color: 0 0 0 0;
+                                       rel1 {to: "viewer.swallow.subject"; relative: 0.02 1.0;}
+                                       rel2 {to: "viewer.swallow.audio.panel"; relative: 0.98 0.0;}
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "viewer.body.content";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min:0 0;
+                                       color: 0 0 0 0;
+                                       rel1 {to: "viewer.swallow.subject"; relative: 0.02 1.0;}
+                                       rel2 {to: "viewer.swallow.audio.panel"; relative: 0.98 0.0;}
+                                       align: 0.0 0.0;
+                               }
+               }
+                       part {
+                               name: "viewer.swallow.audio.panel";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 1.0;
+                                       rel1 {to: "rect"; relative:0.0 1.0;}
+                                       rel2 {to: "rect"; relative:1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "viewer.block.rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                                       visible: 0;
+                                       align: 0.0 0.0;
+                                       rel1 {to: "rect"; relative: 0.0 0.0;}
+                                       rel2 {to: "rect"; relative: 1.0 1.0;}
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "viewer.swallow.play.controller";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 PLAY_CTRBAR_MIN_H;
+                                       visible: 1;
+                                       fixed: 0 1;
+                                       align: 0.5 1.0;
+                                       rel1 {to: "rect"; relative:0.0 1.0;}
+                                       rel2 {to: "rect"; relative:1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "viewer.title.menu.bg";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       align: 0.0 0.0;
+                                       rel1 {to_x: "viewer.title.list.padding.left"; to_y: "viewer.swallow.title.menu"; relative: 1.0 0.0;}
+                                       rel2 {to_x: "viewer.title.list.padding.right"; to_y: "viewer.swallow.title.menu"; relative: 0.0 1.0; offset: 0 6;}
+                                       image {
+                                               normal: TITLE_LIST_BG;
+                                               border: 11 11 11 11;
+                                               border_scale: 1;
+                                       }
+                                       color: 255 255 255 0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 255 255 255 255;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+                       part {
+                               name: "viewer.title.list.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 16 0;
+                                       rel1 { relative: 0.0 0.0;}
+                                       rel2 { relative: 0.0 1.0;}
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "viewer.title.list.padding.right";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 9 0;
+                                       rel1 { relative: 1.0 0.0;}
+                                       rel2 { relative: 1.0 1.0;}
+                                       align: 1.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "viewer.title.list.padding.bottom";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 7;
+                                       max: 0 7;
+                                       rel1 { to: "viewer.swallow.title.menu"; relative: 0.0 1.0;}
+                                       rel2 { to: "viewer.swallow.title.menu"; relative: 1.0 1.0;}
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       color: 255 0 0 100;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+
+                       }
+                       part {
+                               name:"viewer.swallow.title.menu";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 0 1;
+                                       rel1 {to: "rect"; relative: 0.0 0.0; offset: 16 0;}
+                                       rel2 {to: "rect"; relative: 1.0 0.0; offset: -16 0;}
+                                       align: 0.0 0.0;
+                               }
+                               description {
+                                       state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description {
+                                       state: "hide" 0.0;
+                                       inherit: "default" 0.0;
+                                       min: 0 0;
+                                       max: 0 0;
+                               }
+                       }
+                       part {
+                               name: "volume_layout";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 PLAY_VOLUMEBAR_H;
+                                       align: 0.5 1.0;
+                                       rel1 { to: "viewer.swallow.play.controller"; relative: 0 0;}
+                                       rel2 { to: "viewer.swallow.play.controller"; relative: 1 0;}
+                               }
+                       }
+               programs
+                       {
+                               program {
+                                       name: "viewer.title.menu.open";
+                                       signal: "elm,state,titlemenu,open";
+                                       source: "";
+                                       action: STATE_SET "show" 0.0;
+                                       target: "viewer.swallow.title.menu";
+                                       target: "viewer.title.menu.bg";
+                                       transition: LINEAR 0.2;
+                               }
+                               program {
+                                       name: "viewer.title.menu.close";
+                                       signal: "elm,state,titlemenu,close";
+                                       source: "";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "viewer.swallow.title.menu";
+                                       target: "viewer.title.menu.bg";
+                                       transition: LINEAR 0.2;
+                               }
+                               program {
+                                       name: "viewer.block.rect.open";
+                                       signal: "elm,state,blockrect,open";
+                                       source: "";
+                                       action: STATE_SET "show" 0.0;
+                                       target: "viewer.block.rect";
+                               }
+                               program {
+                                       name: "viewer.block.rect.close";
+                                       signal: "elm,state,blockrect,close";
+                                       source: "";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "viewer.block.rect";
+                               }
+                               program {
+                                       name: "viewer.block.rect.click";
+                                       signal: "mouse,clicked,1";
+                                       source: "viewer.block.rect";
+                                       action: SIGNAL_EMIT "action,clicked" "";
+                               }
+                       }
+               }
+       }
+
+       group {
+               name : "msg/detail";
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "msg/detail/bg";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                                       rel1{to: "rect"; relative: 0.0 0.0;}
+                                       rel2{to: "rect"; relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "rect/padding/top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 DETAIL_PADDING_V_MIN;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect"; relative:0.0 0.0;}
+                                       rel2{to:"rect"; relative:1.0 0.0;}
+                               }
+                       }
+                       part {
+                               name: "rect/padding/left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: DETAIL_PADDING_H_MIN 0;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect"; relative:0.0 0.0;}
+                                       rel2{to:"rect"; relative:0.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "rect/padding/right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: DETAIL_PADDING_H_MIN 0;
+                                       align: 1.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect"; relative:1.0 0.0;}
+                                       rel2{to:"rect"; relative:1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "rect/padding/bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       min: 0 DETAIL_PADDING_V_MIN;
+                                       align: 0.0 1.0;
+                                       fixed: 1 1;
+                                       rel1{to:"rect"; relative:0.0 1.0;}
+                                       rel2{to:"rect"; relative:1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "msg/detail/content";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       min: 0 0;
+                                       color: 0 0 0 0;
+                                       rel1 {relative: 1.0 1.0; to_x: "rect/padding/left"; to_y: "rect/padding/top";}
+                                       rel2 {relative: 0.0 0.0; to_x: "rect/padding/right"; to_y: "rect/padding/bottom";}
+                                       align: 0.0 0.0;
+                               }
+                       }
+               }
+       }
+
+       group {
+               name : "title";
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "title_top_padding";
+                               type: RECT;
+                               scale: 1;
+                               description     {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       fixed: 0 1;
+                                       min: 0 10;
+                                       align: 0.5 0;
+                                       rel1{to: "rect"; relative: 0.0 0.0;}
+                                       rel2{to: "rect"; relative: 1.0 0.0;}
+                               }
+                       }
+                       part {
+                               name: "title_bottom_padding";
+                               type: RECT;
+                               scale: 1;
+                               description     {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       fixed: 0 1;
+                                       min: 0 16;
+                                       align: 0 1.0;
+                                       rel1{to: "rect"; relative: 0.0 1.0;}
+                                       rel2{to: "rect"; relative: 1.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "title_left_padding";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       fixed: 1 0;
+                                       min: 16 0;
+                                       align: 1.0 0.5;
+                                       rel1{to: "title_btn"; relative: 0.0 0.0;}
+                                       rel2{to: "title_btn"; relative: 0.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "title_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       min: 0 72;
+                                       align: 0 0.5;
+                                       rel1{to_x: "title_left_padding"; to_y: "title_top_padding"; relative: 1.0 1.0;}
+                                       rel2{to_x: "title_attach_left_padding"; to_y: "title_bottom_padding"; relative: 0.0 0.0;}
+                               }
+                       }
+                       part {
+                               name: "title_attach_left_padding";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       fixed: 1 0;
+                                       min: 16 0;
+                                       align: 1.0 0.5;
+                                       rel1{to_x: "attach_btn"; to_y: "rect"; relative: 0.0 0.0;}
+                                       rel2{to_x: "attach_btn"; to_y: "rect"; relative: 0.0 1.0;}
+                               }
+                       }
+                       part {
+                               name: "attach_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       min: 0 72;
+                                       align: 1 0.5;
+                                       rel1{to_x: "title_right_padding"; to_y: "title_top_padding"; relative: 0.0 1.0;}
+                                       rel2{to_x: "title_right_padding"; to_y: "title_bottom_padding"; relative: 0.0 0.0;}
+                               }
+                       }
+                       part {
+                               name: "title_right_padding";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 0;
+                                       fixed: 1 0;
+                                       min: 16 0;
+                                       align: 1.0 0.5;
+                                       rel1{to: "rect"; relative: 1.0 0.0;}
+                                       rel2{to: "rect"; relative: 1.0 1.0;}
+                               }
+                       }
+               }
+       }
+}