Implement tizen 2.0 beta.
authorJaeyun Jeong <jyjeong@samsung.com>
Tue, 21 Aug 2012 09:40:43 +0000 (18:40 +0900)
committerJaeyun Jeong <jyjeong@samsung.com>
Tue, 21 Aug 2012 09:40:43 +0000 (18:40 +0900)
Change-Id: Ifea6bc144e2628ddfaa3cafa8f4f250d78005356

290 files changed:
CMakeLists.txt
class0/CMakeLists.txt [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
common/data/edc_image/00_MessageBubble_date_bg.png [moved from common/data/edc_image/00_sweep_list_bg.png with 95% similarity]
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 [moved from common/data/image/controlbar/01_controlbar_icon_info.png with 53% similarity]
common/data/edc_image/00_button_03_dim.png [deleted file]
common/data/edc_image/00_button_03_focus.png [deleted file]
common/data/edc_image/00_button_03_normal.png [deleted file]
common/data/edc_image/00_button_03_press.png [deleted file]
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 [moved from common/data/edc_image/M01_btn_Unread_message_white_theme.png with 89% similarity]
common/data/edc_image/00_button_04_press.png [new file with mode: 0755]
common/data/edc_image/00_list_bar_group_middle_focus.png [deleted file]
common/data/edc_image/00_list_bar_press_1x80.png [deleted file]
common/data/edc_image/00_list_photo_default.png [deleted file]
common/data/edc_image/07_message_add files_bg.PNG [deleted file]
common/data/edc_image/07_message_bubble_readmessage.png [deleted file]
common/data/edc_image/07_message_bubble_reponsible_message.png [deleted file]
common/data/edc_image/07_message_bubble_sentmessage.png [deleted file]
common/data/edc_image/07_message_list_badge_01.png [deleted file]
common/data/edc_image/07_message_list_bg.PNG [deleted file]
common/data/edc_image/07_message_sweep_list_bg.png [deleted file]
common/data/edc_image/27_textinput_predictive_btn_arrow_down.png [deleted file]
common/data/edc_image/27_textinput_predictive_btn_arrow_up.png [deleted file]
common/data/edc_image/M01_btn_add_plus.png [moved from common/data/edc_image/M01_btn_Unread_message.png with 90% similarity]
common/data/edc_image/M01_input_bg.png [moved from common/data/edc_image/white/M01_search_input_field_bg.png with 93% similarity]
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 [moved from common/data/edc_image/white/M01_icon_minus.png with 92% similarity]
common/data/edc_image/M01_play_btn_pause_press.png [new file with mode: 0755]
common/data/edc_image/M01_play_btn_play.png [moved from common/data/edc_image/M01_btn_Unread_message_HD.png with 86% similarity]
common/data/edc_image/M01_play_btn_play_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_play_btn_volume.png [new file with mode: 0755]
common/data/edc_image/M01_play_btn_volume_press.png [new file with mode: 0755]
common/data/edc_image/M01_player_bg.png [moved from common/data/image/white/M01_icon_minus.png with 92% similarity]
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_search_input_field_attach_bg.png [new file with mode: 0755]
common/data/edc_image/M01_search_input_field_bg.png
common/data/edc_image/M01_title_btn_bg.png [new file with mode: 0755]
common/data/edc_image/M01_title_btn_bg_press.png [new file with mode: 0755]
common/data/edc_image/Seven_IM_input_field_01.png [deleted file]
common/data/edc_image/Seven_IM_input_field_02.png [deleted file]
common/data/edc_image/black/07_message_add files_bg.PNG [deleted file]
common/data/edc_image/black/M01_search_input_field_bg.png [deleted file]
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/edc_image/white/07_message_add files_bg.PNG [deleted file]
common/data/image/00_list_photo_default.png [deleted file]
common/data/image/01_controllbar_icon_add_to_contact.png [new file with mode: 0755]
common/data/image/01_dialog_field_bg.png [deleted file]
common/data/image/01_dialog_field_bg_dim.png [deleted file]
common/data/image/01_dialogue_field_bg_press.png [deleted file]
common/data/image/01_navi_icon_delete.png [deleted file]
common/data/image/07_message_title_button.png [deleted file]
common/data/image/17_default_image.png [deleted file]
common/data/image/M01_btn_Unread_message_press_HD.png [deleted file]
common/data/image/M01_btn_delete.png [new file with mode: 0755]
common/data/image/M01_btn_message_send.png [new file with mode: 0755]
common/data/image/M01_icon_DRM.png [new file with mode: 0755]
common/data/image/M01_icon_DRM_64x64.png [new file with mode: 0755]
common/data/image/M01_icon_OTA_HD.png [deleted file]
common/data/image/M01_icon_OTA_press_HD.png [deleted file]
common/data/image/M01_icon_Push_HD.png [deleted file]
common/data/image/M01_icon_Push_press.png [deleted file]
common/data/image/M01_icon_Push_press_HD.png [deleted file]
common/data/image/M01_icon_Unsupported.png [new file with mode: 0755]
common/data/image/M01_icon_attach_voice.png [new file with mode: 0755]
common/data/image/M01_icon_broadcasting_HD.png [deleted file]
common/data/image/M01_icon_broadcasting_press.png [deleted file]
common/data/image/M01_icon_broadcasting_press_HD.png [deleted file]
common/data/image/M01_icon_minus.png [deleted file]
common/data/image/M01_icon_save.png [moved from common/data/image/M01_btn_Unread_message_HD.png with 77% similarity]
common/data/image/M01_icon_video_call.png [new file with mode: 0755]
common/data/image/M01_icon_view_contact.png [new file with mode: 0755]
common/data/image/M01_icon_voice.png [moved from common/data/image/M01_btn_Unread_message.png with 78% similarity]
common/data/image/M01_icon_voice_call.png [new file with mode: 0755]
common/data/image/M01_photo_btn_delete.png [moved from common/data/image/M01_icon_OTA_press.png with 62% similarity]
common/data/image/Seven_IM_clip_nor.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_move.png [deleted file]
common/data/image/controlbar/01_controlbar_icon_pause.png [new file with mode: 0755]
common/data/image/controlbar/01_controlbar_icon_save.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_add_to_contact.png [deleted file]
common/data/image/controlbar/M01_controlbar_icon_attach.png [moved from common/data/image/controlbar/01_controlbar_icon_call.png with 69% similarity]
common/data/image/controlbar/M01_controlbar_icon_more.png [new file with mode: 0755]
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/myfile_icon_etc.png [new file with mode: 0755]
common/data/image/myfile_icon_excel.png [new file with mode: 0755]
common/data/image/myfile_icon_html.png [new file with mode: 0755]
common/data/image/myfile_icon_images.png [new file with mode: 0755]
common/data/image/myfile_icon_java.png [new file with mode: 0755]
common/data/image/myfile_icon_music.png [new file with mode: 0755]
common/data/image/myfile_icon_pdf.png [new file with mode: 0755]
common/data/image/myfile_icon_ppt.png [new file with mode: 0755]
common/data/image/myfile_icon_rss.png [new file with mode: 0755]
common/data/image/myfile_icon_svg.png [new file with mode: 0755]
common/data/image/myfile_icon_swf.png [new file with mode: 0755]
common/data/image/myfile_icon_text.png [moved from common/data/image/M01_btn_Unread_message_press.png with 67% similarity]
common/data/image/myfile_icon_video.png [new file with mode: 0755]
common/data/image/myfile_icon_word.png [new file with mode: 0755]
common/data/image/org.tizen.message.cb.png
common/data/image/org.tizen.message.noti.png
common/data/image/org.tizen.message.png
common/data/image/org.tizen.message.voice.png
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/msg-ui-bundle.h
common/msg-ui-common-utility.c
common/msg-ui-common-utility.h
common/msg-ui-image-resource.h [new file with mode: 0755]
common/msg-ui-util.h
composer/CMakeLists.txt
composer/data/composer_edc/composer_main.edc
composer/data/composer_edc/msg-ui-composer-attachment.edc [new file with mode: 0755]
composer/data/composer_edc/msg-ui-composer-body.edc
composer/data/composer_edc/msg-ui-composer-bubble.edc
composer/data/composer_edc/msg-ui-composer-custom.edc
composer/data/composer_edc/msg-ui-composer-data.edc
composer/data/composer_edc/msg-ui-composer-main.edc
composer/data/composer_edc/msg-ui-composer-subject.edc [new file with mode: 0755]
composer/data/composer_edc/white_theme_composer.edc [deleted file]
composer/include/msg-ui-composer-attachment.h [new file with mode: 0755]
composer/include/msg-ui-composer-body-callback.h
composer/include/msg-ui-composer-body-page.h
composer/include/msg-ui-composer-body.h
composer/include/msg-ui-composer-bubble.h
composer/include/msg-ui-composer-common.h
composer/include/msg-ui-composer-core.h [deleted file]
composer/include/msg-ui-composer-data.h
composer/include/msg-ui-composer-external.h
composer/include/msg-ui-composer-main.h
composer/include/msg-ui-composer-message-data.h
composer/include/msg-ui-composer-message.h
composer/include/msg-ui-composer-pageduration.h [new file with mode: 0755]
composer/include/msg-ui-composer-popup.h
composer/include/msg-ui-composer-predictsearch.h
composer/include/msg-ui-composer-recipient-callback.h
composer/include/msg-ui-composer-recipient.h
composer/include/msg-ui-composer-res.h
composer/include/msg-ui-composer-string.h
composer/include/msg-ui-composer-subject.h [new file with mode: 0755]
composer/src/bubble/msg-ui-composer-bubble-callback.c
composer/src/bubble/msg-ui-composer-bubble-list.c
composer/src/bubble/msg-ui-composer-bubble-main.c
composer/src/bubble/msg-ui-composer-bubble-util.c
composer/src/core/msg-ui-composer-core.c [deleted file]
composer/src/external/msg-ui-composer-external.c
composer/src/gadget/msg-ui-composer-gadget.c
composer/src/message/msg-ui-composer-message.c
composer/src/ui-composer/msg-ui-composer-attachment.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-body-callback.c
composer/src/ui-composer/msg-ui-composer-body-page.c
composer/src/ui-composer/msg-ui-composer-body.c
composer/src/ui-composer/msg-ui-composer-common.c
composer/src/ui-composer/msg-ui-composer-main.c
composer/src/ui-composer/msg-ui-composer-pageduration.c [new file with mode: 0755]
composer/src/ui-composer/msg-ui-composer-popup.c
composer/src/ui-composer/msg-ui-composer-predictsearch.c
composer/src/ui-composer/msg-ui-composer-recipient-callback.c
composer/src/ui-composer/msg-ui-composer-recipient.c
composer/src/ui-composer/msg-ui-composer-subject.c [new file with mode: 0755]
composer/src/util/msg-ui-composer-util.c
composer/src/util/msg-ui-composer-util.h
debian/changelog [changed mode: 0644->0755]
debian/control
debian/org.tizen.message.install.in
debian/org.tizen.message.postinst.in
debian/rules
dialog/CMakeLists.txt
dialog/message-dialog.c
dialog/message-dialog.h
main/CMakeLists.txt
main/message.c
main/message.h
main/org.tizen.message.desktop.in [deleted file]
main/po/CMakeLists.txt
main/po/ar.po [new file with mode: 0644]
main/po/bg.po [new file with mode: 0644]
main/po/ca.po [new file with mode: 0644]
main/po/cs.po [new file with mode: 0644]
main/po/da.po [new file with mode: 0644]
main/po/de_DE.po [changed mode: 0755->0644]
main/po/el_GR.po [changed mode: 0755->0644]
main/po/en.po [changed mode: 0755->0644]
main/po/en_US.po [new file with mode: 0644]
main/po/es_ES.po [changed mode: 0755->0644]
main/po/fi.po [new file with mode: 0644]
main/po/fr_FR.po [changed mode: 0755->0644]
main/po/he.po [new file with mode: 0644]
main/po/hi.po [new file with mode: 0644]
main/po/hr.po [new file with mode: 0644]
main/po/hu.po [new file with mode: 0644]
main/po/id.po [new file with mode: 0644]
main/po/it_IT.po [changed mode: 0755->0644]
main/po/ja_JP.po [changed mode: 0755->0644]
main/po/ko_KR.po [changed mode: 0755->0644]
main/po/lt.po [new file with mode: 0644]
main/po/lv.po [new file with mode: 0644]
main/po/ms.po [new file with mode: 0644]
main/po/nl_NL.po [changed mode: 0755->0644]
main/po/no.po [new file with mode: 0644]
main/po/pl.po [new file with mode: 0644]
main/po/pt_PT.po [changed mode: 0755->0644]
main/po/ro.po [new file with mode: 0644]
main/po/ru_RU.po [changed mode: 0755->0644]
main/po/sk.po [new file with mode: 0644]
main/po/sl.po [new file with mode: 0644]
main/po/sr.po [new file with mode: 0644]
main/po/sv.po [new file with mode: 0644]
main/po/th.po [new file with mode: 0644]
main/po/tr_TR.po [changed mode: 0755->0644]
main/po/uk.po [new file with mode: 0644]
main/po/vi.po [new file with mode: 0644]
main/po/zh_CN.po [changed mode: 0755->0644]
main/po/zh_HK.po [changed mode: 0755->0644]
main/po/zh_TW.po [changed mode: 0755->0644]
org.tizen.message.xml [new file with mode: 0755]
packaging/org.tizen.message.spec
setting/CMakeLists.txt
setting/include/msg-ui-setting-callback.h
setting/include/msg-ui-setting-common-util.h
setting/include/msg-ui-setting-gadget.h
setting/include/msg-ui-setting-general-setting.h [new file with mode: 0755]
setting/include/msg-ui-setting-main.h
setting/include/msg-ui-setting-mm-message.h [new file with mode: 0755]
setting/include/msg-ui-setting-msg-service-wrapper.h
setting/include/msg-ui-setting-text-message.h
setting/include/msg-ui-setting-types.h
setting/src/general/msg-ui-setting-general-block-message.c [new file with mode: 0755]
setting/src/general/msg-ui-setting-general-setting.c [new file with mode: 0755]
setting/src/main/msg-ui-setting-callback.c
setting/src/main/msg-ui-setting-common-util.c
setting/src/main/msg-ui-setting-font-size.c [new file with mode: 0755]
setting/src/main/msg-ui-setting-gadget.c
setting/src/main/msg-ui-setting-main.c
setting/src/main/msg-ui-setting-msg-service-wrapper.c
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/text/msg-ui-setting-text-message.c
setting/src/text/msg-ui-setting-text-service-center.c [new file with mode: 0755]
thread/include/msg-ui-thread-main.h
thread/src/msg-ui-thread-callback.c
thread/src/msg-ui-thread-list.c
thread/src/msg-ui-thread-main.c
thread/src/msg-ui-thread-util.c
thread/theme/thread_genlist.edc
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-item-list.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-item-list.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]

index 4d8f0a3..589d35f 100755 (executable)
@@ -6,6 +6,8 @@ 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})
@@ -34,4 +36,6 @@ ADD_SUBDIRECTORY(common)
 ADD_SUBDIRECTORY(main)
 ADD_SUBDIRECTORY(composer)
 ADD_SUBDIRECTORY(setting)
+ADD_SUBDIRECTORY(viewer)
+ADD_SUBDIRECTORY(class0)
 ADD_SUBDIRECTORY(dialog)
diff --git a/class0/CMakeLists.txt b/class0/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..95a37d4
--- /dev/null
@@ -0,0 +1,49 @@
+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})
+
+INSTALL(TARGETS ${MSG_UI_CLASS0} DESTINATION bin)
+
+# install desktop file & icon
+
+# i18n
+#ADD_SUBDIRECTORY(po)
diff --git a/class0/msg-ui-class0-main.c b/class0/msg-ui-class0-main.c
new file mode 100755 (executable)
index 0000000..9d3794f
--- /dev/null
@@ -0,0 +1,488 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-class0-main.h"
+
+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);
+
+
+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);
+               }
+       }
+
+       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;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       if (ad->msgHandle == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msgHandle is NULL !!");
+               return MSG_UI_RET_ERR;
+       }
+
+       ad->msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       if (ad->msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_new_message() is failed!");
+               return MSG_UI_RET_ERR;
+       }
+
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+       err = msg_get_message(ad->msgHandle, ad->msg_id, ad->msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message is failed! : %d", err);
+               if (ad->msgInfo != NULL) {
+                       msg_release_struct(&ad->msgInfo);
+                       ad->msgInfo = NULL;
+               }
+
+               return MSG_UI_RET_ERR;
+       } else
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message is success");
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+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 err = MSG_SUCCESS;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "obj = 0x%x", obj);
+
+       if (obj == ad->right_btn) {
+               /* Save it to Inbox. */
+               err = msg_move_msg_to_folder(ad->msgHandle, ad->msg_id, MSG_INBOX_ID);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_move_msg_to_folder() is failed : err = %d", err);
+               }
+
+               msg_ui_class0_exit(ad);
+       } else if (obj == ad->left_btn) {
+               /* Discard this message */
+               err = msg_delete_message(ad->msgHandle, ad->msg_id);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_delete_message() is failed : err = %d", err);
+               }
+
+               msg_ui_class0_exit(ad);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid obj = 0x%x", obj);
+               return;
+       }
+}
+
+static Evas_Object*
+__msg_ui_class0_create_contents(void *data)
+{
+       struct appdata *ad = data;
+
+       Evas_Object *scroller = NULL;
+
+       char buf[2048] = { 0, };
+       char *str = NULL;
+
+       int msgSize = 0;
+       char pMsgBody[2048] = {0,};
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, " ");
+
+       /* Create scroller. */
+       scroller = elm_scroller_add(ad->navi_frame);
+       evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_scroller_page_relative_set(scroller, 0.0, 0.0);
+       elm_scroller_bounce_set(scroller, FALSE, TRUE);
+       evas_object_show(scroller);
+
+       /* Create label. */
+       ad->label = elm_label_add(scroller);
+       elm_object_style_set(ad->label, "detail_view/description");
+       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);
+
+       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", pMsgBody);
+               } 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_label_line_wrap_set(ad->label, TRUE);
+       elm_object_content_set(scroller, ad->label);
+       evas_object_show(ad->label);
+
+       if (str)
+               free(str);
+
+       return scroller;
+}
+
+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_bar;
+       Evas_Object *ctrl_btn_left;
+       Evas_Object *ctrl_btn_right;
+       Elm_Object_Item *ctrl_left_item;
+       Elm_Object_Item *ctrl_right_item;
+       Evas_Object *icon_left;
+       Evas_Object *icon_right;
+
+       char buf[DEF_BUF_LEN_S];
+
+       /* 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);
+
+       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;
+       }
+
+       ctrl_bar = elm_toolbar_add(ad->navi_frame);
+       elm_toolbar_shrink_mode_set(ctrl_bar, ELM_TOOLBAR_SHRINK_EXPAND);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_DEBUG, ctrl_bar == NULL, MSG_UI_RET_ERR, "ctrl_bar is NULL !!");
+
+       elm_object_style_set(ctrl_bar, "naviframe");
+
+       ctrl_btn_left = elm_button_add(ctrl_bar);
+       elm_object_style_set(ctrl_btn_left, "naviframe_control/left");
+       evas_object_size_hint_align_set(ctrl_btn_left, EVAS_HINT_FILL, 0.5);
+       icon_left = elm_icon_add(ctrl_btn_left);
+       memset(buf, 0x0, sizeof(buf));
+       snprintf(buf, sizeof(buf), "%s", MSG_HEADER_ICON_CANCEL);
+       elm_icon_file_set(icon_left, buf, NULL);
+       elm_object_part_content_set(ctrl_btn_left, "elm.swallow.content", icon_left);
+       elm_object_text_set(ctrl_btn_left, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DISCARD"));
+       evas_object_show(ctrl_btn_left);
+       evas_object_smart_callback_add(ctrl_btn_left, "clicked", __msg_ui_class0_btn_clicked_event, ad);
+       ad->left_btn = ctrl_btn_left;
+
+       ctrl_btn_right = elm_button_add(ctrl_bar);
+       elm_object_style_set(ctrl_btn_right, "naviframe_control/right");
+       evas_object_size_hint_align_set(ctrl_btn_right, EVAS_HINT_FILL, 0.5);
+       icon_right = elm_icon_add(ctrl_btn_right);
+       memset(buf, 0x0, sizeof(buf));
+       snprintf(buf, sizeof(buf), "%s", MSG_HEADER_ICON_DONE);
+       elm_icon_file_set(icon_right, buf, NULL);
+       elm_object_part_content_set(ctrl_btn_right, "elm.swallow.content", icon_right);
+       elm_object_text_set(ctrl_btn_right, dgettext("sys_string", "IDS_COM_SK_SAVE"));
+       evas_object_show(ctrl_btn_right);
+       evas_object_smart_callback_add(ctrl_btn_right, "clicked", __msg_ui_class0_btn_clicked_event, ad);
+       ad->right_btn = ctrl_btn_right;
+
+       ctrl_left_item = elm_toolbar_item_append(ctrl_bar, NULL, NULL, NULL, NULL);
+       elm_object_item_part_content_set(ctrl_left_item, "object", ctrl_btn_left);
+       elm_toolbar_item_append(ctrl_bar, NULL, NULL, NULL, NULL);
+       ctrl_right_item = elm_toolbar_item_append(ctrl_bar, NULL, NULL, NULL, NULL);
+       elm_object_item_part_content_set(ctrl_right_item, "object", ctrl_btn_right);
+
+       Elm_Object_Item *nf_it = elm_naviframe_item_push(ad->navi_frame, dgettext(MESSAGE_PKGNAME, "Class 0 message"), NULL, NULL, content, NULL);
+       elm_object_item_part_content_set(nf_it, "optionheader", ctrl_bar);
+
+       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 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);
+
+       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 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;
+       } else {
+               ad->msg_id = atoi(strMsgId);
+
+               /* 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);
+                       msg_ui_class0_exit(ad);
+                       return;
+               }
+
+               /* Create main view */
+               __msg_ui_class0_create_view(ad);
+
+               evas_object_show(ad->win_main);
+       }
+}
+
+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 = NULL;
+       event_callback.language_changed = NULL;
+       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..6d94037
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __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"
+
+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 *layout;
+       Evas_Object *navi_frame;
+       Evas_Object *label;
+       Evas_Object *left_btn;
+       Evas_Object *right_btn;
+       msg_handle_t msgHandle;
+
+       /* argument */
+       int msg_id;
+
+       msg_struct_t msgInfo;
+};
+
+void msg_ui_class0_exit(void *data);
+int main(int argc, char **argv);
+
+#endif /* __DEF_msg_ui_class0_main_H__ */
index 3529d93..3ddad7d 100755 (executable)
@@ -16,18 +16,22 @@ INCLUDE_DIRECTORIES(
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(pkgs REQUIRED
-       appcore-common appcore-efl appsvc
+       appsvc
        bundle
        capi-appfw-application contacts-service
-       dlog devman_haptic
+       dlog drm-client drm-trusted devman_haptic
        elementary ecore ecore-x ecore-input ecore-imf ecore-file eina
        glib-2.0
        heynoti
        icu-i18n
        msg-service
-       ui-gadget
+       mm-common mm-player mm-session mmutil-jpeg mmutil-imgp mm-fileinfo
+       ui-gadget-1
        utilX
        vconf
+       syspopup-caller
+       capi-media-sound-manager
+       status
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
@@ -40,10 +44,32 @@ 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_DEPENDENCIES(${PROJECT_NAME} msg_common.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} msg_custom_winset.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})
similarity index 95%
rename from common/data/edc_image/00_sweep_list_bg.png
rename to common/data/edc_image/00_MessageBubble_date_bg.png
index b08f111..b0fb761 100755 (executable)
Binary files a/common/data/edc_image/00_sweep_list_bg.png 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
similarity index 53%
rename from common/data/image/controlbar/01_controlbar_icon_info.png
rename to common/data/edc_image/00_btn_circle_bg_press.png
index 12a5b06..bc5f8b2 100755 (executable)
Binary files a/common/data/image/controlbar/01_controlbar_icon_info.png and b/common/data/edc_image/00_btn_circle_bg_press.png differ
diff --git a/common/data/edc_image/00_button_03_dim.png b/common/data/edc_image/00_button_03_dim.png
deleted file mode 100755 (executable)
index 118cbb9..0000000
Binary files a/common/data/edc_image/00_button_03_dim.png and /dev/null differ
diff --git a/common/data/edc_image/00_button_03_focus.png b/common/data/edc_image/00_button_03_focus.png
deleted file mode 100755 (executable)
index e0f8ebf..0000000
Binary files a/common/data/edc_image/00_button_03_focus.png and /dev/null differ
diff --git a/common/data/edc_image/00_button_03_normal.png b/common/data/edc_image/00_button_03_normal.png
deleted file mode 100755 (executable)
index 118cbb9..0000000
Binary files a/common/data/edc_image/00_button_03_normal.png and /dev/null differ
diff --git a/common/data/edc_image/00_button_03_press.png b/common/data/edc_image/00_button_03_press.png
deleted file mode 100755 (executable)
index 2f0dbc3..0000000
Binary files a/common/data/edc_image/00_button_03_press.png and /dev/null 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
similarity index 89%
rename from common/data/edc_image/M01_btn_Unread_message_white_theme.png
rename to common/data/edc_image/00_button_04_normal_focus.png
index 68772aa..06c39d8 100755 (executable)
Binary files a/common/data/edc_image/M01_btn_Unread_message_white_theme.png 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_list_bar_group_middle_focus.png b/common/data/edc_image/00_list_bar_group_middle_focus.png
deleted file mode 100755 (executable)
index 96374f5..0000000
Binary files a/common/data/edc_image/00_list_bar_group_middle_focus.png and /dev/null differ
diff --git a/common/data/edc_image/00_list_bar_press_1x80.png b/common/data/edc_image/00_list_bar_press_1x80.png
deleted file mode 100755 (executable)
index 0e0becb..0000000
Binary files a/common/data/edc_image/00_list_bar_press_1x80.png and /dev/null differ
diff --git a/common/data/edc_image/00_list_photo_default.png b/common/data/edc_image/00_list_photo_default.png
deleted file mode 100755 (executable)
index 2d15281..0000000
Binary files a/common/data/edc_image/00_list_photo_default.png and /dev/null differ
diff --git a/common/data/edc_image/07_message_add files_bg.PNG b/common/data/edc_image/07_message_add files_bg.PNG
deleted file mode 100755 (executable)
index 074b806..0000000
Binary files a/common/data/edc_image/07_message_add files_bg.PNG and /dev/null differ
diff --git a/common/data/edc_image/07_message_bubble_readmessage.png b/common/data/edc_image/07_message_bubble_readmessage.png
deleted file mode 100755 (executable)
index 5b57efe..0000000
Binary files a/common/data/edc_image/07_message_bubble_readmessage.png and /dev/null differ
diff --git a/common/data/edc_image/07_message_bubble_reponsible_message.png b/common/data/edc_image/07_message_bubble_reponsible_message.png
deleted file mode 100755 (executable)
index 1e0f324..0000000
Binary files a/common/data/edc_image/07_message_bubble_reponsible_message.png and /dev/null differ
diff --git a/common/data/edc_image/07_message_bubble_sentmessage.png b/common/data/edc_image/07_message_bubble_sentmessage.png
deleted file mode 100755 (executable)
index 7ae30ba..0000000
Binary files a/common/data/edc_image/07_message_bubble_sentmessage.png and /dev/null differ
diff --git a/common/data/edc_image/07_message_list_badge_01.png b/common/data/edc_image/07_message_list_badge_01.png
deleted file mode 100755 (executable)
index d1acc0d..0000000
Binary files a/common/data/edc_image/07_message_list_badge_01.png and /dev/null differ
diff --git a/common/data/edc_image/07_message_list_bg.PNG b/common/data/edc_image/07_message_list_bg.PNG
deleted file mode 100755 (executable)
index 2ba50b9..0000000
Binary files a/common/data/edc_image/07_message_list_bg.PNG and /dev/null differ
diff --git a/common/data/edc_image/07_message_sweep_list_bg.png b/common/data/edc_image/07_message_sweep_list_bg.png
deleted file mode 100755 (executable)
index d32d1e3..0000000
Binary files a/common/data/edc_image/07_message_sweep_list_bg.png and /dev/null differ
diff --git a/common/data/edc_image/27_textinput_predictive_btn_arrow_down.png b/common/data/edc_image/27_textinput_predictive_btn_arrow_down.png
deleted file mode 100755 (executable)
index 41932ca..0000000
Binary files a/common/data/edc_image/27_textinput_predictive_btn_arrow_down.png and /dev/null differ
diff --git a/common/data/edc_image/27_textinput_predictive_btn_arrow_up.png b/common/data/edc_image/27_textinput_predictive_btn_arrow_up.png
deleted file mode 100755 (executable)
index 2fdda91..0000000
Binary files a/common/data/edc_image/27_textinput_predictive_btn_arrow_up.png and /dev/null differ
similarity index 90%
rename from common/data/edc_image/M01_btn_Unread_message.png
rename to common/data/edc_image/M01_btn_add_plus.png
index 68772aa..7080f43 100755 (executable)
Binary files a/common/data/edc_image/M01_btn_Unread_message.png and b/common/data/edc_image/M01_btn_add_plus.png differ
similarity index 93%
rename from common/data/edc_image/white/M01_search_input_field_bg.png
rename to common/data/edc_image/M01_input_bg.png
index f5aaa5e..1c78dbb 100755 (executable)
Binary files a/common/data/edc_image/white/M01_search_input_field_bg.png 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..3fe0def
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..18a21c1
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_next_press.png differ
similarity index 92%
rename from common/data/edc_image/white/M01_icon_minus.png
rename to common/data/edc_image/M01_play_btn_pause.png
index 1943f8d..d3578d2 100755 (executable)
Binary files a/common/data/edc_image/white/M01_icon_minus.png 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..b851280
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_pause_press.png differ
similarity index 86%
rename from common/data/edc_image/M01_btn_Unread_message_HD.png
rename to common/data/edc_image/M01_play_btn_play.png
index 55004f5..3460a6a 100755 (executable)
Binary files a/common/data/edc_image/M01_btn_Unread_message_HD.png 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..cdccbb4
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_previous.png b/common/data/edc_image/M01_play_btn_previous.png
new file mode 100755 (executable)
index 0000000..405917c
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..7169310
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_play_btn_volume.png b/common/data/edc_image/M01_play_btn_volume.png
new file mode 100755 (executable)
index 0000000..ecb8d3a
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_volume.png differ
diff --git a/common/data/edc_image/M01_play_btn_volume_press.png b/common/data/edc_image/M01_play_btn_volume_press.png
new file mode 100755 (executable)
index 0000000..e209bd0
Binary files /dev/null and b/common/data/edc_image/M01_play_btn_volume_press.png differ
similarity index 92%
rename from common/data/image/white/M01_icon_minus.png
rename to common/data/edc_image/M01_player_bg.png
index 1943f8d..b313430 100755 (executable)
Binary files a/common/data/image/white/M01_icon_minus.png 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_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
index 038da87..79aac96 100755 (executable)
Binary files a/common/data/edc_image/M01_search_input_field_bg.png and b/common/data/edc_image/M01_search_input_field_bg.png differ
diff --git a/common/data/edc_image/M01_title_btn_bg.png b/common/data/edc_image/M01_title_btn_bg.png
new file mode 100755 (executable)
index 0000000..b109553
Binary files /dev/null and b/common/data/edc_image/M01_title_btn_bg.png differ
diff --git a/common/data/edc_image/M01_title_btn_bg_press.png b/common/data/edc_image/M01_title_btn_bg_press.png
new file mode 100755 (executable)
index 0000000..ba66399
Binary files /dev/null and b/common/data/edc_image/M01_title_btn_bg_press.png differ
diff --git a/common/data/edc_image/Seven_IM_input_field_01.png b/common/data/edc_image/Seven_IM_input_field_01.png
deleted file mode 100755 (executable)
index 6125f7e..0000000
Binary files a/common/data/edc_image/Seven_IM_input_field_01.png and /dev/null differ
diff --git a/common/data/edc_image/Seven_IM_input_field_02.png b/common/data/edc_image/Seven_IM_input_field_02.png
deleted file mode 100755 (executable)
index fed0b36..0000000
Binary files a/common/data/edc_image/Seven_IM_input_field_02.png and /dev/null differ
diff --git a/common/data/edc_image/black/07_message_add files_bg.PNG b/common/data/edc_image/black/07_message_add files_bg.PNG
deleted file mode 100755 (executable)
index 074b806..0000000
Binary files a/common/data/edc_image/black/07_message_add files_bg.PNG and /dev/null differ
diff --git a/common/data/edc_image/black/M01_search_input_field_bg.png b/common/data/edc_image/black/M01_search_input_field_bg.png
deleted file mode 100755 (executable)
index 038da87..0000000
Binary files a/common/data/edc_image/black/M01_search_input_field_bg.png and /dev/null 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/edc_image/white/07_message_add files_bg.PNG b/common/data/edc_image/white/07_message_add files_bg.PNG
deleted file mode 100755 (executable)
index 074b806..0000000
Binary files a/common/data/edc_image/white/07_message_add files_bg.PNG and /dev/null differ
diff --git a/common/data/image/00_list_photo_default.png b/common/data/image/00_list_photo_default.png
deleted file mode 100755 (executable)
index 2d15281..0000000
Binary files a/common/data/image/00_list_photo_default.png and /dev/null differ
diff --git a/common/data/image/01_controllbar_icon_add_to_contact.png b/common/data/image/01_controllbar_icon_add_to_contact.png
new file mode 100755 (executable)
index 0000000..5e92417
Binary files /dev/null and b/common/data/image/01_controllbar_icon_add_to_contact.png differ
diff --git a/common/data/image/01_dialog_field_bg.png b/common/data/image/01_dialog_field_bg.png
deleted file mode 100755 (executable)
index 67d3908..0000000
Binary files a/common/data/image/01_dialog_field_bg.png and /dev/null differ
diff --git a/common/data/image/01_dialog_field_bg_dim.png b/common/data/image/01_dialog_field_bg_dim.png
deleted file mode 100755 (executable)
index 25c4acf..0000000
Binary files a/common/data/image/01_dialog_field_bg_dim.png and /dev/null differ
diff --git a/common/data/image/01_dialogue_field_bg_press.png b/common/data/image/01_dialogue_field_bg_press.png
deleted file mode 100755 (executable)
index 8686f16..0000000
Binary files a/common/data/image/01_dialogue_field_bg_press.png and /dev/null differ
diff --git a/common/data/image/01_navi_icon_delete.png b/common/data/image/01_navi_icon_delete.png
deleted file mode 100755 (executable)
index 4f0f16e..0000000
Binary files a/common/data/image/01_navi_icon_delete.png and /dev/null differ
diff --git a/common/data/image/07_message_title_button.png b/common/data/image/07_message_title_button.png
deleted file mode 100755 (executable)
index 3c6909b..0000000
Binary files a/common/data/image/07_message_title_button.png and /dev/null differ
diff --git a/common/data/image/17_default_image.png b/common/data/image/17_default_image.png
deleted file mode 100755 (executable)
index 780985e..0000000
Binary files a/common/data/image/17_default_image.png and /dev/null differ
diff --git a/common/data/image/M01_btn_Unread_message_press_HD.png b/common/data/image/M01_btn_Unread_message_press_HD.png
deleted file mode 100755 (executable)
index 55004f5..0000000
Binary files a/common/data/image/M01_btn_Unread_message_press_HD.png and /dev/null differ
diff --git a/common/data/image/M01_btn_delete.png b/common/data/image/M01_btn_delete.png
new file mode 100755 (executable)
index 0000000..0ac1428
Binary files /dev/null and b/common/data/image/M01_btn_delete.png differ
diff --git a/common/data/image/M01_btn_message_send.png b/common/data/image/M01_btn_message_send.png
new file mode 100755 (executable)
index 0000000..4b34e1f
Binary files /dev/null and b/common/data/image/M01_btn_message_send.png differ
diff --git a/common/data/image/M01_icon_DRM.png b/common/data/image/M01_icon_DRM.png
new file mode 100755 (executable)
index 0000000..a239ccb
Binary files /dev/null and b/common/data/image/M01_icon_DRM.png differ
diff --git a/common/data/image/M01_icon_DRM_64x64.png b/common/data/image/M01_icon_DRM_64x64.png
new file mode 100755 (executable)
index 0000000..c010fc6
Binary files /dev/null and b/common/data/image/M01_icon_DRM_64x64.png differ
diff --git a/common/data/image/M01_icon_OTA_HD.png b/common/data/image/M01_icon_OTA_HD.png
deleted file mode 100755 (executable)
index ffeb5d3..0000000
Binary files a/common/data/image/M01_icon_OTA_HD.png and /dev/null differ
diff --git a/common/data/image/M01_icon_OTA_press_HD.png b/common/data/image/M01_icon_OTA_press_HD.png
deleted file mode 100755 (executable)
index ffeb5d3..0000000
Binary files a/common/data/image/M01_icon_OTA_press_HD.png and /dev/null differ
diff --git a/common/data/image/M01_icon_Push_HD.png b/common/data/image/M01_icon_Push_HD.png
deleted file mode 100755 (executable)
index b6be564..0000000
Binary files a/common/data/image/M01_icon_Push_HD.png and /dev/null differ
diff --git a/common/data/image/M01_icon_Push_press.png b/common/data/image/M01_icon_Push_press.png
deleted file mode 100755 (executable)
index c229030..0000000
Binary files a/common/data/image/M01_icon_Push_press.png and /dev/null differ
diff --git a/common/data/image/M01_icon_Push_press_HD.png b/common/data/image/M01_icon_Push_press_HD.png
deleted file mode 100755 (executable)
index b6be564..0000000
Binary files a/common/data/image/M01_icon_Push_press_HD.png and /dev/null differ
diff --git a/common/data/image/M01_icon_Unsupported.png b/common/data/image/M01_icon_Unsupported.png
new file mode 100755 (executable)
index 0000000..91c5600
Binary files /dev/null and b/common/data/image/M01_icon_Unsupported.png differ
diff --git a/common/data/image/M01_icon_attach_voice.png b/common/data/image/M01_icon_attach_voice.png
new file mode 100755 (executable)
index 0000000..92323d5
Binary files /dev/null and b/common/data/image/M01_icon_attach_voice.png differ
diff --git a/common/data/image/M01_icon_broadcasting_HD.png b/common/data/image/M01_icon_broadcasting_HD.png
deleted file mode 100755 (executable)
index bd4d650..0000000
Binary files a/common/data/image/M01_icon_broadcasting_HD.png and /dev/null differ
diff --git a/common/data/image/M01_icon_broadcasting_press.png b/common/data/image/M01_icon_broadcasting_press.png
deleted file mode 100755 (executable)
index 038cd2a..0000000
Binary files a/common/data/image/M01_icon_broadcasting_press.png and /dev/null differ
diff --git a/common/data/image/M01_icon_broadcasting_press_HD.png b/common/data/image/M01_icon_broadcasting_press_HD.png
deleted file mode 100755 (executable)
index bd4d650..0000000
Binary files a/common/data/image/M01_icon_broadcasting_press_HD.png and /dev/null differ
diff --git a/common/data/image/M01_icon_minus.png b/common/data/image/M01_icon_minus.png
deleted file mode 100755 (executable)
index bddc2cf..0000000
Binary files a/common/data/image/M01_icon_minus.png and /dev/null differ
similarity index 77%
rename from common/data/image/M01_btn_Unread_message_HD.png
rename to common/data/image/M01_icon_save.png
index 55004f5..4bcf587 100755 (executable)
Binary files a/common/data/image/M01_btn_Unread_message_HD.png and b/common/data/image/M01_icon_save.png differ
diff --git a/common/data/image/M01_icon_video_call.png b/common/data/image/M01_icon_video_call.png
new file mode 100755 (executable)
index 0000000..6eaecd8
Binary files /dev/null and b/common/data/image/M01_icon_video_call.png differ
diff --git a/common/data/image/M01_icon_view_contact.png b/common/data/image/M01_icon_view_contact.png
new file mode 100755 (executable)
index 0000000..bb35882
Binary files /dev/null and b/common/data/image/M01_icon_view_contact.png differ
similarity index 78%
rename from common/data/image/M01_btn_Unread_message.png
rename to common/data/image/M01_icon_voice.png
index 55004f5..a682ffb 100755 (executable)
Binary files a/common/data/image/M01_btn_Unread_message.png and b/common/data/image/M01_icon_voice.png differ
diff --git a/common/data/image/M01_icon_voice_call.png b/common/data/image/M01_icon_voice_call.png
new file mode 100755 (executable)
index 0000000..13f496d
Binary files /dev/null and b/common/data/image/M01_icon_voice_call.png differ
similarity index 62%
rename from common/data/image/M01_icon_OTA_press.png
rename to common/data/image/M01_photo_btn_delete.png
index 7dcdb30..fdb4f0a 100755 (executable)
Binary files a/common/data/image/M01_icon_OTA_press.png and b/common/data/image/M01_photo_btn_delete.png differ
diff --git a/common/data/image/Seven_IM_clip_nor.png b/common/data/image/Seven_IM_clip_nor.png
new file mode 100755 (executable)
index 0000000..65f7dfa
Binary files /dev/null and b/common/data/image/Seven_IM_clip_nor.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_move.png b/common/data/image/controlbar/01_controlbar_icon_move.png
deleted file mode 100755 (executable)
index fdc8c8a..0000000
Binary files a/common/data/image/controlbar/01_controlbar_icon_move.png and /dev/null differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_pause.png b/common/data/image/controlbar/01_controlbar_icon_pause.png
new file mode 100755 (executable)
index 0000000..8419334
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_pause.png differ
diff --git a/common/data/image/controlbar/01_controlbar_icon_save.png b/common/data/image/controlbar/01_controlbar_icon_save.png
new file mode 100755 (executable)
index 0000000..2d8db38
Binary files /dev/null and b/common/data/image/controlbar/01_controlbar_icon_save.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_add_to_contact.png b/common/data/image/controlbar/01_controllbar_icon_add_to_contact.png
deleted file mode 100755 (executable)
index 65d47e4..0000000
Binary files a/common/data/image/controlbar/01_controllbar_icon_add_to_contact.png and /dev/null differ
similarity index 69%
rename from common/data/image/controlbar/01_controlbar_icon_call.png
rename to common/data/image/controlbar/M01_controlbar_icon_attach.png
index b8b7806..67959f0 100755 (executable)
Binary files a/common/data/image/controlbar/01_controlbar_icon_call.png and b/common/data/image/controlbar/M01_controlbar_icon_attach.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_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/myfile_icon_etc.png b/common/data/image/myfile_icon_etc.png
new file mode 100755 (executable)
index 0000000..0cc767d
Binary files /dev/null and b/common/data/image/myfile_icon_etc.png differ
diff --git a/common/data/image/myfile_icon_excel.png b/common/data/image/myfile_icon_excel.png
new file mode 100755 (executable)
index 0000000..109b7de
Binary files /dev/null and b/common/data/image/myfile_icon_excel.png differ
diff --git a/common/data/image/myfile_icon_html.png b/common/data/image/myfile_icon_html.png
new file mode 100755 (executable)
index 0000000..78646b4
Binary files /dev/null and b/common/data/image/myfile_icon_html.png differ
diff --git a/common/data/image/myfile_icon_images.png b/common/data/image/myfile_icon_images.png
new file mode 100755 (executable)
index 0000000..4dd3be3
Binary files /dev/null and b/common/data/image/myfile_icon_images.png differ
diff --git a/common/data/image/myfile_icon_java.png b/common/data/image/myfile_icon_java.png
new file mode 100755 (executable)
index 0000000..a083ee6
Binary files /dev/null and b/common/data/image/myfile_icon_java.png differ
diff --git a/common/data/image/myfile_icon_music.png b/common/data/image/myfile_icon_music.png
new file mode 100755 (executable)
index 0000000..9909d9c
Binary files /dev/null and b/common/data/image/myfile_icon_music.png differ
diff --git a/common/data/image/myfile_icon_pdf.png b/common/data/image/myfile_icon_pdf.png
new file mode 100755 (executable)
index 0000000..2480d81
Binary files /dev/null and b/common/data/image/myfile_icon_pdf.png differ
diff --git a/common/data/image/myfile_icon_ppt.png b/common/data/image/myfile_icon_ppt.png
new file mode 100755 (executable)
index 0000000..42c1100
Binary files /dev/null and b/common/data/image/myfile_icon_ppt.png differ
diff --git a/common/data/image/myfile_icon_rss.png b/common/data/image/myfile_icon_rss.png
new file mode 100755 (executable)
index 0000000..1b566e2
Binary files /dev/null and b/common/data/image/myfile_icon_rss.png differ
diff --git a/common/data/image/myfile_icon_svg.png b/common/data/image/myfile_icon_svg.png
new file mode 100755 (executable)
index 0000000..64a841c
Binary files /dev/null and b/common/data/image/myfile_icon_svg.png differ
diff --git a/common/data/image/myfile_icon_swf.png b/common/data/image/myfile_icon_swf.png
new file mode 100755 (executable)
index 0000000..ee50e85
Binary files /dev/null and b/common/data/image/myfile_icon_swf.png differ
similarity index 67%
rename from common/data/image/M01_btn_Unread_message_press.png
rename to common/data/image/myfile_icon_text.png
index 55004f5..c937ef8 100755 (executable)
Binary files a/common/data/image/M01_btn_Unread_message_press.png and b/common/data/image/myfile_icon_text.png differ
diff --git a/common/data/image/myfile_icon_video.png b/common/data/image/myfile_icon_video.png
new file mode 100755 (executable)
index 0000000..a8e832a
Binary files /dev/null and b/common/data/image/myfile_icon_video.png differ
diff --git a/common/data/image/myfile_icon_word.png b/common/data/image/myfile_icon_word.png
new file mode 100755 (executable)
index 0000000..b399bad
Binary files /dev/null and b/common/data/image/myfile_icon_word.png differ
index e7bfab5..3a26d57 100755 (executable)
Binary files a/common/data/image/org.tizen.message.cb.png and b/common/data/image/org.tizen.message.cb.png differ
index e7bfab5..dcc17dc 100755 (executable)
Binary files a/common/data/image/org.tizen.message.noti.png and b/common/data/image/org.tizen.message.noti.png differ
index e7bfab5..8bf4018 100755 (executable)
Binary files a/common/data/image/org.tizen.message.png and b/common/data/image/org.tizen.message.png differ
index e7bfab5..85b6d51 100755 (executable)
Binary files a/common/data/image/org.tizen.message.voice.png and b/common/data/image/org.tizen.message.voice.png differ
diff --git a/common/data/msg_button.edc b/common/data/msg_button.edc
new file mode 100755 (executable)
index 0000000..dc25863
--- /dev/null
@@ -0,0 +1,1097 @@
+#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_STYLE_BG_MIN_MAX_INC_48 48 48
+#define BUTTON_CIRCLE_STYLE_IMAGE_MIN_MAX_INC_48 48 48
+
+#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"; \
+            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);
+///////////////////////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////////////////
+// button for navi title
+///////////////////////////////////////////////////
+   group { name: "elm/button/base/title_button";
+      images {
+         image: "M01_title_btn_bg.png" COMP;
+         image: "M01_title_btn_bg_press.png" COMP;
+        image: "00_button_04_press.png" COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               image {
+                  normal: "M01_title_btn_bg.png";
+                  border: 1 1 1 1;
+                  border_scale: 1;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "M01_title_btn_bg_press.png";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "M01_title_btn_bg.png"; //"00_button_04_press.png";
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               image.normal:  "M01_title_btn_bg.png"; //"00_button_04_press.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: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+               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: 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";
+         }
+      }
+   }
+
diff --git a/common/data/msg_common.edc b/common/data/msg_common.edc
new file mode 100755 (executable)
index 0000000..03ae507
--- /dev/null
@@ -0,0 +1,222 @@
+collections {
+       group {
+               name: "title";
+               images {
+                       image: "nf_title_separator.png" COMP;
+                       image: "optionheader_arrow.png" COMP;
+               }
+               script {
+                       public more_show = 0;
+                       public title_show = 0;
+               }
+               parts {
+                       part {
+                               name: "padding1";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 16 0;
+                                       align: 0 0.5;
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "title_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       min: 0 78;
+                                       align: 0 0.5;
+                                       rel1 { relative: 0.0 0.5;}
+                                       rel2 { relative: 0.0 0.5; to_x: "padding2";}
+                                       color: 255 0 0 255;
+                               }
+                       }
+                       part {
+                               name: "title_text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       text {
+                                               font: "SLP:style=Medium";
+                                               size: 52;
+                                               min: 0 0;
+                                               max: 1 0;
+                                               align: 0.5 0.5;
+                                       }
+                                       color: 249 249 249 255;
+                                       align: 0.0 0.5;
+                                       fixed: 1 0;
+                                       rel1 { relative: 1.0 0.5; to_x: "padding1";}
+                                       rel2 { relative: 0.0 0.5; to_x: "padding2";}
+                               }
+                       }
+                       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: "separator1";
+                                       rel2.to: "separator1";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                                       visible: 0;
+                               }
+                       }
+                       part {
+                               name: "separator1";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 2 48;
+                                       max: 2 48;
+                                       align: 1 0.5;
+                                       rel1.to: "more_btn";
+                                       rel2.to: "more_btn";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                                       image.normal: "nf_title_separator.png";
+                               }
+                       }
+                       part {
+                               name: "more_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 1 1;
+                                       align: 1 0.5;
+                                       rel1.to: "separator2";
+                                       rel2.to: "separator2";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                               }
+                       }
+                       part {
+                               name: "separator2";
+                               type: IMAGE;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 2 48;
+                                       max: 2 48;
+                                       align: 1 0.5;
+                                       rel1.to_x: "prev_btn";
+                                       rel2.to_x: "prev_btn";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                                       image.normal: "nf_title_separator.png";
+                               }
+                       }
+                       part {
+                               name: "prev_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       max: 136 0;
+                                       align: 1 0.5;
+                                       rel1.relative: 1 0;
+                                       rel2.relative: 1 1;
+                               }
+                       }
+                       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;
+                               }
+                       }
+                       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 1.1; to: "more_btn"; }
+                                       rel2 { relative: 1.0 1.2; to: "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_hide";
+                               signal: "elm,state,title,hide";
+                               source: "";
+                               script {
+                                       set_int(title_show, 0);
+                                       set_state(PART:"titlebtn_arrow", "default", 0.0);
+                               }
+                       }
+                       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);
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/common/data/msg_custom_winset.edc b/common/data/msg_custom_winset.edc
new file mode 100755 (executable)
index 0000000..d329451
--- /dev/null
@@ -0,0 +1,4 @@
+collections
+{
+#include "msg_button.edc"
+}
index 2ac8b7c..7f3ce8c 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_BUNDLE_H__
 #define __MSG_BUNDLE_H__
 
 #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_FORWARD                 "FORWARD"
+#define MSG_BUNDLE_KEY_RESEND                  "RESEND"
+#define MSG_BUNDLE_KEY_DELETE_MSG              "delete_msg"
 #define MSG_BUNDLE_KEY_RECIPIENT               "recipient"
 #define MSG_BUNDLE_KEY_NUMBER_INDEX            "number/index"
 #define MSG_BUNDLE_KEY_INDEX           "index"
-#define MSG_BUNDLE_KEY_COMPOSER_RESPONSE       "composer_resp"
 
 #define MSG_BUNDLE_KEY_REQUEST_TYPE            "request_type"
 #define MSG_BUNDLE_KEY_FILE_TYPE               "file_type"
 #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_"
 
 /* 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_CREATE_MSG            "create_msg"
 #define MSG_BUNDLE_VALUE_AUTO_REJECT_LIST      "1"
 #define MSG_BUNDLE_VALUE_CONTACT_CHECK_LIST    "46"
 
-#define MSG_BUNDLE_VALUE_RET_YES       "yes"
-#define MSG_BUNDLE_VALUE_RET_NO                "no"
+#define MSG_BUNDLE_VALUE_DRM_WITHOUT_FL        "DRM_WITHOUT_FL"
+
+#define MSG_BUNDLE_VALUE_SPAM_SETTING  "spam_setting"
 
 #endif /* __MSG_BUNDLE_H__ */
 
index c4fb2bc..d71747b 100755 (executable)
  * limitations under the License.
  */
 
+
 /*=================
  * INCLUDE HEADERS
  * ================= */
 #include <msg-ui-util.h>
 #include <msg-ui-common-utility.h>
+#include <msg-ui-image-resource.h>
 
 /* for i18n */
 #include <unicode/uloc.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,
+};
+
 /*==========================
  * FUNCTION IMPLEMENTATIONS
  *========================== */
@@ -41,6 +70,21 @@ const char *msg_common_get_default_locale()
        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)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -176,6 +220,161 @@ char *msg_common_get_date_text(const char* locale, char* skeleton, void* time)
        return strdup(formattedString);
 }
 
+char *msg_common_get_display_date(const char* locale, char* bestPattern, 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;
+
+       diffday = cur_day - msg_day;
+
+       if (diffday == 0)
+               snprintf(msg_date_buf, sizeof(msg_date_buf), "%s", dgettext("sys_string", "IDS_COM_BODY_TODAY"));
+       else if (diffday == 1)
+               snprintf(msg_date_buf, sizeof(msg_date_buf), "%s", dgettext("sys_string", "IDS_COM_BODY_YESTERDAY"));
+       else {
+               date_str = msg_common_get_formatted_date(locale, bestPattern, msg_t);
+               if (date_str) {
+                       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)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, markup_text == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, font_style == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, src == NULL, FALSE);
+
+       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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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, int fontsize, char *fontcolor, char *fontstyle)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, src == NULL, 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);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "src_text_len : %d", src_text_len);
+               tmp_buf = (char *) calloc(src_text_len + 1, sizeof(char));
+               if (tmp_buf == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "tmp mem alloc is failed!");
+                       return NULL;
+               }
+
+               font_buf = eina_strbuf_new();
+               if (font_buf == NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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);
+
+/*
+ *             unsupport font size
+ *             if (fontsize > 0)
+ *                     eina_strbuf_append_printf(font_buf, "<font_size=%d>", fontsize);
+ */
+               if (fontcolor)
+                       eina_strbuf_append_printf(font_buf, "<color=%s>", fontcolor);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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) {
+                       token_len = strlen(token);
+
+                       if (token[token_len - 1] == 0x0D) { /* if Enter is added via Window system, CR+LF is added. */
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "CR length is decreased");
+                               token_len = token_len - 1;
+                       }
+
+                       if (!__msg_common_make_normal_markup_text(markup_text, font_buf, token, token_len))
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "__msg_common_make_normal_markup_text is failed");
+
+                       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)
 {
@@ -260,49 +459,467 @@ MSG_BOOL msg_common_is_connected_call(void)
                return FALSE;
 }
 
-char *msg_common_get_current_theme_name(void)
+MSG_BOOL msg_common_is_sim_inserted(void)
 {
-       char *theme_name = NULL;
-       char *save_ptr = NULL;
+       int sim_slot_status = 0;
 
-       /* Get current theme path. Return value is a full path of theme file. */
-       const char *current_theme_path = elm_theme_get(NULL);
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "current_theme_path is %s", current_theme_path);
+       if (vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &sim_slot_status) < 0)
+               return FALSE;
 
-       if (current_theme_path == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "current_theme_path is NULL !!");
-               return NULL;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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, int *font_size)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, index == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, font_size == NULL, FALSE);
+
+       if (vconf_get_int(VCONFKEY_MSG_APP_FONT_SIZE, index) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_get_int(font_size) is failed !!");
+               return FALSE;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", *index);
        }
 
-       theme_name = strdup(current_theme_path);
-       if (theme_name == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "strdup is NULL !!");
-               return NULL;
+       switch (*index) {
+       case MSG_APP_FONT_SIZE_INDEX_HUGE :
+               *font_size = MSG_APP_FONT_SIZE_HUGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_LARGE :
+               *font_size = MSG_APP_FONT_SIZE_LARGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_NORMAL :
+               *font_size = MSG_APP_FONT_SIZE_NORMAL;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_SMALL :
+               *font_size = MSG_APP_FONT_SIZE_SMALL;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_TINY :
+               *font_size = MSG_APP_FONT_SIZE_TINY;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT :
+       default :
+               *font_size = MSG_APP_FONT_SIZE_NORMAL;
+               break;
        }
 
-       theme_name = strtok_r(theme_name, ":", &save_ptr);
-       if (theme_name == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "theme_name_dup is NULL !!");
-               return NULL;
+       return TRUE;
+}
+
+MSG_BOOL msg_common_set_font_size(int index)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       if (index < MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT ||
+               index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index = %d", index);
+               return FALSE;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", index);
        }
 
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "theme_name is %s", theme_name);
+       if (vconf_set_int(VCONFKEY_MSG_APP_FONT_SIZE, index) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_set_int(font_size) is failed !!");
+               return FALSE;
+       }
 
-       return theme_name;
+       return TRUE;
 }
 
-MSG_BOOL msg_common_is_sim_inserted(void)
+MSG_BOOL msg_common_apply_font_size(const char *widget_name, Evas_Object *obj)
 {
-       int sim_slot_status = 0;
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, widget_name == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, obj == NULL, FALSE);
 
-       if (vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &sim_slot_status) < 0)
+       int index = 0;
+       int font_size = 0;
+       Evas_Font_Size font_size_scale = 0;
+
+       if (msg_common_get_font_size(&index, &font_size) != TRUE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_get_font_size() is failed !!");
                return FALSE;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", index);
+       }
 
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sim_slot_status = %d", sim_slot_status);
+       if (index == MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT) {
+               edje_text_class_del(widget_name);
+       } else {
+               /* Calculate the scale factor */
+               font_size_scale -= (font_size * 100) / MSG_APP_FONT_SIZE_NORMAL;
 
-       if (sim_slot_status == VCONFKEY_TELEPHONY_SIM_INSERTED)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, widget_name == 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
+       } 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;
+}
index 144115d..657781f 100755 (executable)
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMMON_UTILITY_H__
 #define __MSG_UI_COMMON_UTILITY_H__
 
 /*==================================================================================================
  INCLUDE HEADERS
  * ==================================================================================================*/
-
 #include <glib.h>
 #include <Elementary.h>
 
 #define MSG_COMMON_MAX_UCHAR_PATTERN_LEN       64
 #define MSG_COMMON_MAX_CHAR_PATTERN_LEN        128
 
-/* for cutlink*/
 #define MSG_COMMON_TAG_TEXT "<wrap=char>"
-#define MSG_COMMON_TAG_LINK "<color=#72b1f2 underline=on underline_color=#72b1f2>"
-#define MSG_COMMON_CUTLINK_MAX_NUMBER_LEN      40
-#define MSG_COMMON_CUTLINK_MAX_EMAIL_LEN       128
-#define MSG_COMMON_CUTLINK_MAX_URL_LEN         256
-#define MSG_COMMON_MAX_CUTLINK_LEN                     MSG_COMMON_CUTLINK_MAX_URL_LEN
-#define MSG_COMMON_CUTLINK_COUNT_MAX   50      /* maximum cutlink count */
-
 #define MSG_COMMON_NUMBER_MAX_LEN      40
 
+/* Define vconf key */
+#define VCONFKEY_MSG_APP_FONT_SIZE             "db/private/org.tizen.message/font_size"
+
+#define MSG_COMMON_EDJ         EDJDIR"/msg_common.edj"
+#define MSG_CUSTOM_WINSET_EDJ  EDJDIR"/msg_custom_winset.edj"
+
 /*==================================================================================================
  ENUMERATIONS
  *==================================================================================================*/
 
 typedef enum {
-       MSG_COMMON_LINK_NONE,
-       MSG_COMMON_LINK_PHONE,
-       MSG_COMMON_LINK_EMAIL,
-       MSG_COMMON_LINK_URL,
-       MSG_COMMON_LINK_RTSP,
-       MSG_COMMON_LINK_WAP,
-} MsgLinkType;
+       MSG_APP_FONT_SIZE_TINY = 28,
+       MSG_APP_FONT_SIZE_SMALL = 36,
+       MSG_APP_FONT_SIZE_NORMAL = 44,
+       MSG_APP_FONT_SIZE_LARGE = 70,
+       MSG_APP_FONT_SIZE_HUGE = 102,
 
-/*==================================================================================================
- STRUCTURES
- *==================================================================================================*/
+       MSG_APP_FONT_SIZE_MAX
+
+} MSG_APP_FONT_SIZE_E;
+
+typedef enum {
+       MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT,
+       MSG_APP_FONT_SIZE_INDEX_HUGE,
+       MSG_APP_FONT_SIZE_INDEX_LARGE,
+       MSG_APP_FONT_SIZE_INDEX_NORMAL,
+       MSG_APP_FONT_SIZE_INDEX_SMALL,
+       MSG_APP_FONT_SIZE_INDEX_TINY,
+
+       MSG_APP_FONT_SIZE_INDEX_MAX
 
-typedef struct {
-       gchar *pattern;
-       MsgLinkType type;
-} MsgLinkPattern;
+} MSG_APP_FONT_SIZE_INDEX_E;
 
-typedef struct {
-       gchar *string;
-       MsgLinkType type;
-       gint s_offset;
-       gint e_offset;
-} MsgLinkInfo;
+typedef enum {
+       MSG_SYS_FONT_SIZE_INDEX_SMALL,
+       MSG_SYS_FONT_SIZE_INDEX_NORMAL,
+       MSG_SYS_FONT_SIZE_INDEX_LARGE,
+       MSG_SYS_FONT_SIZE_INDEX_HUGE,
+       MSG_SYS_FONT_SIZE_INDEX_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;
 
 /*==================================================================================================
  FUNCTION DECLARATIONS
@@ -84,7 +116,7 @@ typedef struct {
 const char *msg_common_get_default_locale();
 
 /*
- *@fn  msg_common_get_date_text(const char* locale, char* skeleton, void* time);
+ *@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
@@ -92,10 +124,33 @@ const char *msg_common_get_default_locale();
  *@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);
+char *msg_common_get_date_text(const char *locale, char *skeleton, void *time);
+
+/*
+ *@fn  msg_common_get_display_date(const char *locale, char *bestPattern, 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]   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, time_t *msg_t);
+
+/*
+ *@fn  msg_common_get_markup_text(const char *src, int fontsize, char *fontcolor);
+ *@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]   fontsize        fontsize to be displayed. If 0 is passed, it is not set
+ *@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, int fontsize, char *fontcolor, char *fontstyle);
 
 /*
- *@fn  msg_common_is_valid_phone_number(const charaddress);
+ *@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
@@ -103,7 +158,7 @@ char *msg_common_get_date_text(const char* locale, char* skeleton, void* time);
 MSG_BOOL msg_common_is_valid_phone_number(const char *address);
 
 /*
- *@fn  msg_common_is_valid_email_addr(const charaddress);
+ *@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
@@ -118,30 +173,23 @@ MSG_BOOL msg_common_is_valid_email_addr(const char *address);
 MSG_BOOL msg_common_is_connected_call(void);
 
 /*
- *@fn  msg_common_get_date_best_pattern(const char* locale, char* skeleton);
+ *@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);
+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);
+ *@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_get_current_theme_name(void);
- *@brief       This function is used to get current theme name.
- *@return      return theme name. if it is failed, it will return NULL. Caller should free the memory.
- */
-char *msg_common_get_current_theme_name(void);
+char *msg_common_get_formatted_date(const char *locale, char *bestPattern, void *time);
 
 /*
  *@fn  msg_common_check_sim_existence(void);
@@ -150,6 +198,53 @@ char *msg_common_get_current_theme_name(void);
  */
 MSG_BOOL msg_common_is_sim_inserted(void);
 
+/*
+ *@fn  msg_common_get_font_size(int *index, int *font_size);
+ *@brief       This function is used to get the font size.
+ *@param[in]   index   index of font size. It is used in message setting.
+ *@param[in]   font_size       font size which is used in message app.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_get_font_size(int *index, int *font_size);
+
+/*
+ *@fn  msg_common_set_font_size(void);
+ *@brief       This function is used to set the font size.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_set_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();
 
 #endif
 
diff --git a/common/msg-ui-image-resource.h b/common/msg-ui-image-resource.h
new file mode 100755 (executable)
index 0000000..075327b
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __MSG_UI_IMAGE_RESOURCE__
+#define __MSG_UI_IMAGE_RESOURCE__
+
+/* viewer image resources */
+#define MSG_VIEWER_IMAGE_PATH                                  IMGDIR
+
+#define MSG_VIEWER_IMAGE_ATTACH_ICON                           MSG_VIEWER_IMAGE_PATH"/attach_icon.png"
+#define MSG_VIEWER_IMAGE_DRM_ICON                                      MSG_VIEWER_IMAGE_PATH"/M01_icon_DRM.png"
+#define MSG_VIEWER_IMAGE_DRM_SMALL_ICON                                MSG_VIEWER_IMAGE_PATH"/M01_icon_DRM_64x64.png"
+#define MSG_VIEWER_IMAGE_UNSUPPORT_ICON                                MSG_VIEWER_IMAGE_PATH"/M01_icon_Unsupported.png"
+#define MSG_VIEWER_IMAGE_SAVE_ICON                                     MSG_VIEWER_IMAGE_PATH"/M01_icon_save.png"
+
+/* composer image resources */
+#define MSGC_UI_IMG_PATH                                       IMGDIR
+
+#define MSGC_IMG_ATTACHMENT_ICON                       MSGC_UI_IMG_PATH"/60_myfiles_file_etc.png"
+#define MSGC_IMG_ATTACHMENT_DEL_ICON           MSGC_UI_IMG_PATH"/M01_btn_delete.png"
+
+#define MSGC_IMG_SEND_ICON                                     MSGC_UI_IMG_PATH"/M01_btn_message_send.png"
+
+#define MSGC_IMG_INSERT_VOICE_ICON                     MSGC_UI_IMG_PATH"/M01_icon_attach_voice.png"
+#define MSGC_IMG_INSERT_ETC_ICON                       MSGC_UI_IMG_PATH"/60_myfiles_file_etc.png"
+#define MSGC_IMG_INSERT_DEL_ICON                       MSGC_UI_IMG_PATH"/M01_photo_btn_delete.png"
+#define MSGC_SOUND_INSERT_DEL_ICON                     MSGC_UI_IMG_PATH"/M01_btn_delete.png"
+#define MSGC_IMG_PAGE_DEL_ICON                         MSGC_UI_IMG_PATH"/M01_btn_delete.png"
+#define MSGC_IMG_SUBJECT_DEL_ICON                      MSGC_UI_IMG_PATH"/M01_btn_delete.png"
+
+/* thread list image resources */
+#define MSG_UI_THREAD_LIST_PATH                                IMGDIR
+
+#define MSG_UI_THREAD_LIST_PUSH_ICON                   MSG_UI_THREAD_LIST_PATH"/M01_icon_Push.png"
+#define MSG_UI_THREAD_LIST_OTA_ICON                    MSG_UI_THREAD_LIST_PATH"/M01_icon_OTA.png"
+#define MSG_UI_THREAD_LIST_CB_ICON                             MSG_UI_THREAD_LIST_PATH"/M01_icon_broadcasting.png"
+
+
+/* common image resources */
+#define MSG_COMMON_FILE_ETC_ICON                       IMGDIR"/myfile_icon_etc.png"
+
+#define MSG_COMMON_FILE_IMAGE_ICON                     IMGDIR"/myfile_icon_images.png"
+#define MSG_COMMON_FILE_VIDEO_ICON                     IMGDIR"/myfile_icon_video.png"
+#define MSG_COMMON_FILE_MUSIC_ICON                     IMGDIR"/myfile_icon_music.png"
+#define MSG_COMMON_FILE_SOUND_ICON                     IMGDIR"/myfile_icon_music.png"
+#define MSG_COMMON_FILE_PDF_ICON                       IMGDIR"/myfile_icon_pdf.png"
+#define MSG_COMMON_FILE_DOC_ICON                       IMGDIR"/myfile_icon_word.png"
+#define MSG_COMMON_FILE_PPT_ICON                       IMGDIR"/myfile_icon_ppt.png"
+#define MSG_COMMON_FILE_EXCEL_ICON                     IMGDIR"/myfile_icon_excel.png"
+#define MSG_COMMON_FILE_VOICE_ICON                     IMGDIR"/myfile_icon_music.png"
+#define MSG_COMMON_FILE_HTML_ICON                      IMGDIR"/myfile_icon_html.png"
+#define MSG_COMMON_FILE_FLASH_ICON                     IMGDIR"/myfile_icon_swf.png"
+#define MSG_COMMON_FILE_TXT_ICON                       IMGDIR"/myfile_icon_text.png"
+#define MSG_COMMON_FILE_VCONTACT_ICON          IMGDIR"/myfile_icon_svg.png"
+#define MSG_COMMON_FILE_VCALENDAR_ICON         IMGDIR"/myfile_icon_svg.png"
+#define MSG_COMMON_FILE_VNOTE_ICON                     IMGDIR"/myfile_icon_text.png"
+#define MSG_COMMON_FILE_RSS_ICON                       IMGDIR"/myfile_icon_rss.png"
+#define MSG_COMMON_FILE_JAVA_ICON                      IMGDIR"/myfile_icon_java.png"
+
+
+#endif /*__MSG_UI_IMAGE_RESOURCE__*/
+
index 83af85b..1f0b2c1 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UTIL_H__
 #define __MSG_UTIL_H__
 
@@ -135,8 +136,6 @@ enum {
                } \
        } while (0)
 
-#define MSG_THEME_BLUE_HD              "blue-hd"
-#define MSG_THEME_WHITE_HD             "white-hd"
 
 #define MSG_THREAD_UG_NAME             "msg-thread-efl"
 #define MSG_COMPOSER_UG_NAME           "msg-composer-efl"
@@ -148,6 +147,11 @@ enum {
 #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"
@@ -157,18 +161,29 @@ enum {
 #define MSG_HEADER_ICON_CANCEL                 IMGDIR"/01_header_icon_cancel.png"
 #define MSG_HEADER_ICON_DONE                   IMGDIR"/01_header_icon_done.png"
 
+#define MSG_TITLE_ICON_VOICECALL               IMGDIR"/M01_icon_voice_call.png"
+#define MSG_TITLE_ICON_VIDEOCALL               IMGDIR"/M01_icon_video_call.png"
+#define MSG_TITLE_ICON_ADD_TO_CONTACT  IMGDIR"/01_controllbar_icon_add_to_contact.png"
+#define MSG_CONTROLBAR_ICON_VIEW_CONTACT       IMGDIR"/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_EDIT               MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_edit.png"
 #define MSG_CONTROLBAR_ICON_DELETE             MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_delete.png"
-#define MSG_CONTROLBAR_ICON_MOVE               MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_move.png"
 #define MSG_CONTROLBAR_ICON_FORWARD            MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_forward.png"
-#define MSG_CONTROLBAR_ICON_VOICE_CALL         MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_call.png"
-#define MSG_CONTROLBAR_ICON_ADD_TO_CONTACT     MSG_CONTROLBAR_IMG_PATH"01_controllbar_icon_add_to_contact.png"
-#define MSG_CONTROLBAR_ICON_VIEW_CONTACT_DETAIL        MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_info.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"
+
+/* viewer */
+#define MSG_CONTROLBAR_ICON_PAUSE              MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_pause.png"
+#define MSG_CONTROLBAR_ICON_PLAY               MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_Play.png"
+#define MSG_CONTROLBAR_ICON_SAVE               MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_save.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"
@@ -182,11 +197,6 @@ typedef enum {
 } msg_time_format;
 
 enum {
-       MSG_UI_THEME_WHITE,
-       MSG_UI_THEME_BLUE_HD,
-};
-
-enum {
        CONTROLBAR_ITEM_1 = 0,
        CONTROLBAR_ITEM_2,
        CONTROLBAR_ITEM_3,
index 87671e6..cde262b 100755 (executable)
@@ -7,11 +7,11 @@ SET (UGCOMPOSER ug-msg-composer-efl)
 #      Message composer        #
 #################################
 SET(COMPOSER_SRCS
-       ./src/core/msg-ui-composer-core.c
        ./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
@@ -19,7 +19,9 @@ SET(COMPOSER_SRCS
        ./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
@@ -46,6 +48,7 @@ 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)
@@ -58,21 +61,9 @@ ADD_CUSTOM_TARGET(composer.edj
                                DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/data/composer_edc/composer_main.edc
 
 )
-ADD_DEPENDENCIES(${UGCOMPOSER} composer.edj)
 
+ADD_DEPENDENCIES(${UGCOMPOSER} composer.edj)
 
 INSTALL(TARGETS ${UGCOMPOSER} DESTINATION ${UGDIR})
 INSTALL(FILES ${CMAKE_BINARY_DIR}/composer/data/composer_edc/composer.edj DESTINATION ${EDJDIR})
 
-ADD_CUSTOM_TARGET(white_theme_composer.edj
-                COMMAND edje_cc -id
-                               ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image/white
-                               ${CMAKE_CURRENT_SOURCE_DIR}/data/composer_edc/white_theme_composer.edc
-                               ${CMAKE_CURRENT_SOURCE_DIR}/data/composer_edc/white_theme_composer.edj
-                               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/data/composer_edc/white_theme_composer.edc
-
-)
-ADD_DEPENDENCIES(${UGCOMPOSER} white_theme_composer.edj)
-
-INSTALL(FILES ${CMAKE_BINARY_DIR}/composer/data/composer_edc/white_theme_composer.edj DESTINATION ${EDJDIR})
-
index ae6088c..26dae7c 100755 (executable)
@@ -3,7 +3,12 @@
 #include "msg-ui-composer-data.edc"
 
 #define IMG_BODY_INPUT_FIELD "M01_search_input_field_bg.png"
-#define BORDER_BODY_INPUT_FIELD 6 6 6 6
+#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
 {
@@ -12,6 +17,9 @@ collections
 #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..879ab3a
--- /dev/null
@@ -0,0 +1,264 @@
+/***********************************************************************
+ * 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;
+                       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: "";
+                               }
+                       }
+               }
+       }
+}
+
+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;
+                       }
+               }
+       }
+}
+
index 6bc8e59..bfb2864 100755 (executable)
-#define MSGC_BODY_PAGE_MIN_H 90
-#define MSGC_BODY_MAIN_MIN_H (MSGC_BODY_PAGE_MIN_H + 16 + 16)
+#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 44 36
-#define MSGC_BODY_PAGE_IMAGE_H 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/page";
-       images
-       {
+       name: "composer/body/media_sound";
+       images {
                image: IMG_BODY_INPUT_FIELD COMP;
        }
-
-       parts
-       {
-               part
-               {
+       parts {
+               part {
                        name: "rect";
                        type: RECT;
                        scale: 1;
-                       mouse_events:  0;
-                       description
-                       {
+                       mouse_events: 0;
+                       description {
                                state: "default" 0.0;
-                               min: 0 MSGC_BODY_PAGE_MIN_H;
+                               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";
+                       scale: 1;
+                       mouse_events: 0;
 
-               PADDING_TOP("padding_top",16);
-               PADDING_LEFT("padding_left",0);
-               PADDING_RIGHT("padding_right",16);
-               PADDING_BOTTOM("padding_bottom",0);
-
-               part
-               {
-                       name: "img.body";
-                       type: IMAGE;
+                       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
-                       {
+
+                       description {
                                state: "default" 0.0;
-                               min: 0 MSGC_BODY_PAGE_IMAGE_H;
+                               min: 48 48;
                                fixed: 1 0;
-                               rel1
-                               {
+                               rel1 {
                                        to_x: "padding_left";
                                        to_y: "padding_top";
                                        relative: 1.0 1.0;
                                }
-                               rel2
-                               {
+                               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;
                                }
-                               image
-                               {
+                               align: 1.0 0.0;
+                       }
+               }
+       }
+}
+
+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;
 
-               part
-               {
+                       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
-                       {
+                       description { //hide delete button
                                state: "default" 0.0;
                                min: 0 0;
                                fixed: 1 0;
-                               rel1
-                               {
-                                       to:"img.body";
-                                       relative: 0.0 0.0;
-                                       offset: 16 5;
+                               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:"img.body";
-                                       relative: 1.0 1.0;
-                                       offset: -16 -5;
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top_13";
+                                       relative: 0.0 1.0;
                                }
-                               align: 0.5 0.5;
+                               align: 1.0 0.0;
                        }
                }
-               part
-               {
+               part {
                        name: "swl.del_button";
                        type: SWALLOW;
                        scale: 1;
-                       description
-                       {
-                               state: "default" 0.0;
+                       description {
+                               state: "default" 0.0; //hide
                                min: BODYPAGE_DELBUTTON_SIZE;
                                max: BODYPAGE_DELBUTTON_SIZE;
                                fixed: 1 1;
-                               rel1
-                               {
+                               visible: 0;
+                               rel1 {
                                        to_x: "padding_right";
-                                       to_y: "padding_top";
-                                       relative: 1.0 0.0;
+                                       to_y: "padding_top_13";
+                                       relative: 0.0 1.0;
                                }
-                               rel2
-                               {
+                               rel2 {
                                        to_x: "padding_right";
-                                       to_y: "padding_top";
-                                       relative: 1.0 0.0;
+                                       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/main";
+/************************************************************************************************/
 
-       parts
-       {
-               part
-               {
+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
-                       {
+                       description {
                                state: "default" 0.0;
-                               min: 0 MSGC_BODY_MAIN_MIN_H;
-                               rel1{relative: 0.0 0.0;}
-                               rel2{relative: 1.0 1.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;
+                       }
+               }
+       }
+}
 
-               PADDING_TOP("padding_top",16);
-               PADDING_TOP("padding_top_32",32);
-               PADDING_LEFT("padding_left_16",16);
-               PADDING_RIGHT("padding_right_16",16);
-
-               PADDING_BOTTOM("padding_bottom_16",16);
-               PADDING_BOTTOM("padding_bottom_21",21);
-               part
-               {
+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: 1;
+                       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
-                       {
+                       description {
                                state: "default" 0.0;
                                min: 0 0;
                                max: 9999 110;
                                fixed: 0 1;
                                visible: 1;
-                               rel1
-                               {
+                               rel1 {
                                        to_x: "body.swl.send_button";
-                                       to_y: "padding_top_32";
+                                       to_y: "padding_top";
                                        relative: 0.0 1.0;
                                        offset: 0 2;
                                }
-                               rel2
-                               {
+                               rel2 {
                                        to_x: "body.swl.send_button";
-                                       to_y: "padding_bottom_16";
+                                       to_y: "padding_bottom";
                                        relative: 1.0 0.0;
                                }
                                align: 1.0 1.0;
-                               color: 255 255 255 255;
                        }
                }
-
-               part
-               {
+               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
-                       {
+                       description {
                                state: "default" 0.0;
                                min: 0 0;
                                fixed: 0 0;
-                               rel1
-                               {
-                                       to_x: "padding_left_16";
+                               rel1 {
+                                       to_x: "rect.tap_area_add_main";
                                        to_y: "padding_top";
                                        relative: 1.0 1.0;
                                        offset: 0 0;
                                }
-                               rel2
-                               {
+                               rel2 {
                                        to_x: "body.swl.send_button";
-                                       to_y: "padding_bottom_16";
+                                       to_y: "padding_bottom";
                                        relative: 0.0 0.0;
                                }
                                align: 0.0 1.0;
                        }
                }
-
-               part
-               {
+               part {
                        name: "text.char_count";
                        type: TEXT;
                        scale: 1;
                        mouse_events: 0;
                        clip_to: "rb_rect";
-                       description
-                       {
+                       description {
                                state: "default" 0.0;
-                               rel1
-                               {
+                               rel1 {
                                        to_x: "body.swl.send_button";
                                        to_y: "rb_rect";
                                        relative: 0.0 0.0;
                                }
-                               rel2
-                               {
-                                       to_y: "body.swl.send_button";
+                               rel2 {
+                                       to: "body.swl.send_button";
                                        relative: 1.0 0.0;
                                }
                                align: 0.5 0.5;
-                               color: 255 255 255 255;
-                               text
-                               {
-                                       font: SLP_FONT_MEDIUM
-                                       size: 20;
+                               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
-               {
+               part {
                        name: "body.swl.send_button";
                        type: SWALLOW;
                        scale: 1;
-                       description
-                       {
+                       description {
                                state: "default" 0.0;
                                min: BODY_SENDBUTTON_SIZE;
                                max: BODY_SENDBUTTON_SIZE;
                                fixed: 1 1;
-                               rel1
-                               {
-                                       to_x: "padding_right_16";
-                                       to_y: "padding_bottom_16";
-                                       relative: 1.0 0.0;
-                                       offset: 0 0;
-                               }
-                               rel2
-                               {
-                                       to_x: "padding_right_16";
-                                       to_y: "padding_bottom_16";
-                                       relative: 1.0 0.0;
-                                       offset: 0 0;
-                               }
-                               align: 0.0 1.0;
-                       }
-                       description
-                       {
-                               state: "contract" 0.0;
-                               inherit: "default" 0.0;
-
-                               rel1
-                               {
-                                       to_x:"padding_right_16";
-                                       to_y:"padding_bottom_16";
+                               rel1 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_bottom";
                                        relative: 0.0 0.0;
                                        offset: 0 0;
                                }
-                               rel2
-                               {
-                                       to_x: "padding_right_16";
-                                       to_y: "padding_bottom_16";
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_bottom";
                                        relative: 0.0 0.0;
                                        offset: 0 0;
                                }
@@ -288,24 +637,4 @@ group
                        }
                }
        }
-
-       programs
-       {
-               program
-               {
-                       name: "body_contract";
-                       signal: "body_contract";
-                       source: "*";
-                       action: STATE_SET "contract" 0.0;
-                       target: "body.swl.send_button";
-               }
-               program
-               {
-                       name: "body_expand";
-                       signal: "body_expand";
-                       source: "*";
-                       action: STATE_SET "default" 0.0;
-                       target: "body.swl.send_button";
-               }
-       }
 }
index ff158df..931afe0 100755 (executable)
@@ -1,6 +1,3 @@
-#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
 group\r
 {\r
@@ -62,6 +59,185 @@ group
 \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
+                       }\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
+\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
+                               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
+                               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.38 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.62 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
index 0582a41..b632537 100755 (executable)
-#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
+#define MSGC_POPUP_INFO_TXT_COLOR_INC "#000000"
+#define MSGC_POPUP_INFO_TXT_SIZE 40
+#define MSGC_POPUP_ENTRY_FIELD_H 74
 
-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;
-                       }
+group {
+       name: "composer/popup/entryview";
+       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";
                }
-
-               PADDING_RIGHT("padding_right",MSGC_DIALOGUE_PADDING_W);
-
-               part
-               {
-                       name: "padding.text.left";
+       }
+       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: MSGC_DIALOGUE_PADDING_W 0;
-                               fixed: 1 0;
-                               rel1{
-                                       relative: 0.0 0.0;
-                                       to_x: "elm.text";
+                               min: 0 120;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x: "padding_left";
+                                       to_y: "padding_top";
+                                       relative: 1.0 1.0;
                                }
-                               rel2{
+                               rel2 {
+                                       to_x: "padding_right";
+                                       to_y: "padding_top";
                                        relative: 0.0 1.0;
-                                       to_x: "elm.text";
                                }
-
-                               align: 1.0 0.0;
+                               align: 0.0 0.0;
                                visible: 0;
                        }
                }
-
-               part
-               {
-                       name: "padding.entry.left";
-                       type: RECT;
+               part {
+                       name: "elm.text";
+                       type: TEXTBLOCK;
                        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";
+                               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;
                                }
-                               align: 1.0 0.0;
-                               visible: 0;
                        }
                }
-
                part
                {
-                       name: "elm.text";
-                       type: TEXT;
+                       name: "padding.text.middle";
+                       type: RECT;
                        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";
+                               min: 0 15;
+                               fixed: 0 1;
+                               rel1 {
+                                       to: "rect.text";
                                        relative: 0.0 1.0;
                                }
-                               align: 1.0 0.0;
-                               color: MSGC_DIALOGUE_TEXT_COLOR;
-                               text {
-                                       font: "SLP:style=Roman";
-                                       size: MSGC_DIALOGUE_TEXT_SIZE;
-                                       min: 0 1;
-                                       align: 0.0 0.5;
-                                       text: "";
+                               rel2 {
+                                       to: "rect.text";
+                                       relative: 1.0 1.0;
                                }
+                               align: 0.5 0.0;
+                               visible: 0;
                        }
                }
-
                part
                {
-                       name: "dialogue.swl.entry";
-                       type: SWALLOW;
+                       name: "img.body";
+                       type: IMAGE;
                        scale: 1;
                        description
                        {
                                state: "default" 0.0;
-                               min: MSGC_DIALOGUE_ENTRY_W 0;
+                               min: 0 MSGC_POPUP_ENTRY_FIELD_H;
                                fixed: 1 0;
                                rel1 {
-                                       to_x: "padding.text.left";
+                                       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;
                                }
-                               rel2
+                               image
                                {
-                                       to_x: "padding.text.left";
-                                       relative: 0.0 1.0;
+                                       normal: IMG_BODY_INPUT_FIELD;
+                                       border: BORDER_BODY_INPUT_FIELD;
                                }
-                               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_LEFT("padding_left",16);
-               part {
-                       name: "text";
-                       type: TEXT;
-                       scale: 1;
+               part{
+                       name:"swl.entry";
+                       type: SWALLOW;
+                       scale : 1;
                        description {
                                state: "default" 0.0;
-                               min: 0 MSGC_DATEFIELD_TEXT_H;
-                               fixed: 0 1;
-                               align: 0.5 0.0;
+                               min: 0 0;
+                               align: 0.5 1.0;
+                               fixed: 1 0;
                                rel1 {
-                                       to :"padding_left";
-                                       relative: 1 0;
+                                       to: "img.body";
+                                       relative: 0.0 0.0;
+                                       offset: 10 7;
                                }
                                rel2 {
-                                       relative: 1 0;
-                               }
-                               color: MSGC_DATEFIELD_TXT_COLOR;
-                               text {
-                                       font: "SLP:style=Roman";
-                                       size: MSGC_DATEFIELD_TXT_SIZE;
-                                       min:  1 0;
-                                       align: 0.0 0.0;
-                                       text: "Date & Time ";
+                                       to: "img.body";
+                                       relative: 1.0 1.0;
+                                       offset: -10 -7;
                                }
                        }
                }
-
-               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"; }
-                       }
-               }
        }
 }
+
index ed22c7e..6efa248 100755 (executable)
@@ -1,11 +1,17 @@
 #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
+#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 PADDING_LEFT( param_padding_name ,param_padding_size ) \\r
+#define VISIBLE 0\r
+\r
+#define PADDING_LEFT(param_padding_name, param_padding_size) \\r
        part \\r
        { \\r
                name: param_padding_name; \\r
                        state: "default" 0.0; \\r
                        min: param_padding_size 0; \\r
                        fixed: 1 0; \\r
-                       visible: 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: 0 55 0 55; \\r
-       } \\r
-}\r
-#define PADDING_TOP( param_padding_name ,param_padding_size ) \\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
                        state: "default" 0.0; \\r
                        min: 0 param_padding_size ; \\r
                        fixed: 0 1; \\r
-                       visible: 0; \\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 55 0 55; \\r
-       } \\r
-}\r
-#define PADDING_BOTTOM( param_padding_name ,param_padding_size ) \\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
                        state: "default" 0.0; \\r
                        min: 0 param_padding_size; \\r
                        fixed: 0 1; \\r
-                       visible: 0; \\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 55 0 55; \\r
+                       color: 0 0 0 0; \\r
                } \\r
        }\r
 \r
-\r
-#define PADDING_RIGHT( param_padding_name ,param_padding_size ) \\r
+#define PADDING_RIGHT(param_padding_name, param_padding_size) \\r
        part \\r
        { \\r
                name: param_padding_name; \\r
                        state: "default" 0.0; \\r
                        min: param_padding_size 0; \\r
                        fixed: 1 0; \\r
-                       visible: 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 55 0 55; \\r
+                       color: 0 0 0 0; \\r
                } \\r
        }\r
 #define PART_DISCLIP \\r
index ef1e3c6..c7ce727 100755 (executable)
@@ -6,7 +6,7 @@ group
                        name: "rect";
                        type: RECT;
                        scale: 1;
-                       mouse_events : 0;
+                       mouse_events: 0;
                        description
                        {
                                state: "default" 0.0;
@@ -14,27 +14,27 @@ group
                        }
                }
                part{
-                       name : "swl.sel_all";
-                       type : SWALLOW;
-                       scale : 1;
+                       name: "swl.sel_all";
+                       type: SWALLOW;
+                       scale: 1;
                        description{
                                state: "default" 0.0;
-                               fixed : 1 1;
-                               min : 0 0;
-                               align : 0.0 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;
+                       type: SWALLOW;
+                       scale: 1;
                        description{
                                state: "default" 0.0;
-                               fixed : 1 1;
-                               min : 0 0;
-                               align : 0.0 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;}
                        }
@@ -47,17 +47,17 @@ group
                        description
                        {
                                state: "default" 0.0;
-                               fixed :1 1;
-                               min : 0 1;
+                               fixed1 1;
+                               min: 0 1;
                                align: 0.0 1.0;
-                               rel1{to: "swl.recipient"; relative: 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;
+                               fixed1 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;}
@@ -74,22 +74,46 @@ group
                                min: 0 1;
                                rel1
                                {
-                                       to: "swl.sel_all"; 
+                                       to: "swl.sel_all";
                                        relative: 0.0 1.0;
                                        offset: 0 20;
                                }
                                rel2
                                {
-                                       to: "swl.composer.body"; 
+                                       to: "swl.composer.body";
                                        relative: 1.0 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; }
+                               rel2 { to: "swl.sel_all"; relative: 1.0 1.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;
+                       scale: 1;
                        repeat_events: 0;
                        description {
                                state: "default" 0.0;
@@ -109,7 +133,7 @@ group
                {
                        name: "swl.predictsearch";
                        type: SWALLOW;
-                       scale:1;
+                       scale: 1;
                        repeat_events: 0;
                        description {
                                state: "default" 0.0;
@@ -128,7 +152,7 @@ group
                programs
                {
                        program {
-                               name:   "hide.predictsearch";
+                               name: "hide.predictsearch";
                                signal: "hide.predictsearch";
                                source: "*";
                                action: STATE_SET "hide" 0.0;
@@ -137,7 +161,7 @@ group
                        }
 
                        program {
-                               name:   "show.predictsearch";
+                               name: "show.predictsearch";
                                signal: "show.predictsearch";
                                source: "*";
                                action: STATE_SET "default" 0.0;
@@ -145,7 +169,7 @@ group
                                target: "swl.bg_predictsearch";
                        }
                        program {
-                               name:   "change.bubble";
+                               name: "change.bubble";
                                signal: "change.bubble";
                                source: "*";
                                action: STATE_SET "default" 0.1;
@@ -158,6 +182,22 @@ group
                                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";
+                               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";
+                               transition: LINEAR 0.2;
+                       }
                }
        }
 }
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/data/composer_edc/white_theme_composer.edc b/composer/data/composer_edc/white_theme_composer.edc
deleted file mode 100755 (executable)
index d93e800..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-#include "msg-ui-composer-data.edc"
-
-#define IMG_BODY_INPUT_FIELD "M01_search_input_field_bg.png"
-#define BORDER_BODY_INPUT_FIELD 3 3 3 3
-
-#define COLOR_SUBJECT_GUIDE_TEXT 163 157 138 255
-
-collections
-{
-
-#include "msg-ui-composer-main.edc"
-#include "msg-ui-composer-body.edc"
-#include "msg-ui-composer-recipient.edc"
-
-#include "msg-ui-composer-custom.edc"
-
-}
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..33b6909
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __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_*/
index 969a18f..eae3896 100755 (executable)
  * 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
-\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_clicked_cb(void *data, 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
 \r
 #endif /* MSG_UI_COMPOSER_BODY_CALLBACK_H_ */\r
index 4259caa..a8bd7e2 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_BODY_PAGE_H_
 #define __MSG_UI_COMPOSER_BODY_PAGE_H_
 
 /* 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_body_remove_page(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *remove_page);
+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_Scd);
+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 unsigned  char *body_ucs2_text, int ucs2_len, int *char_count);
 
+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_ */
index aeee88f..c3c6bd0 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_BODY_H_
 #define __MSG_UI_COMPOSER_BODY_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)
+
+/* 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];
+} 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);
 
+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);
 
-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_read_preview_message(MSG_COMPOSER_VIEW_DATA_S *cd);
 
+Eina_Bool msg_ui_composer_body_is_mms(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);
 void msg_ui_composer_body_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
 COMPOSER_RETURN_TYPE_E __msg_ui_composer_body_read_data(MSG_COMPOSER_VIEW_DATA_S *cd);
 #endif/*__MSG_UI_COMPOSER_BODY_H_*/
index d48a08d..43f6c53 100755 (executable)
 #include <stdlib.h>
 #include <glib.h>
 
-#include <MsgStorageTypes.h>
-#include <MsgTransportTypes.h>
-#include <MapiControl.h>
-#include <MapiStorage.h>
-#include <MapiTransport.h>
-#include <MapiMessage.h>
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
 
 #include <libintl.h>
 #include <bundle.h>
-#include <appcore-efl.h>
 #include <Ecore.h>
 #include <Elementary.h>
 #include <ui-gadget-module.h>
+#include <aul.h>
 #include <time.h>
 
 #include "msg-ui-util.h"
 #define MSG_BUBBLE_SIM_MSG_ICON                IMGDIR"/07_message_sim.png"
 #define MSG_BUBBLE_ATTACH_ICON         IMGDIR"/Seven_IM_clip_nor.png"
 
-#define MSG_VCONF_KEY_SELECTED_THEME   "db/setting/selected_theme"
-
 /* STYLE for genlist and entry */
 #define MSG_BUBBLE_STYLE_SENT  "sentmessage"
 #define MSG_BUBBLE_STYLE_RECV  "readmessage"
 
 #define MSG_BUBBLE_CONTENT_H (653)
-#define MSG_BUBBLE_IMG_MAX_W (75)  //FIXME :: It should be fixed at Entry.edc
+#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)
+
 typedef enum {
        BUBBLE_NORMAL_VIEW = 0,
        BUBBLE_EDIT_VIEW,
@@ -92,19 +90,25 @@ typedef enum {
 } MsgBoxPackType;
 
 typedef struct {
-       MSG_MESSAGE_ID_T msgId;
+       msg_message_id_t msgId;
        int msgType;
-       MSG_STORAGE_ID_T storageId;
+       msg_storage_id_t storageId;
        time_t *msgTime;
        char displayDate[DEF_BUF_LEN_S];
-       MSG_NETWORK_STATUS_T networkStatus;
+       char subject[DEF_BUF_LEN_S];
+       msg_network_status_t networkStatus;
        bool bRead;
        bool bProtected;
        int direction;
+       int attachment_cnt;
+       char thumbNailPath[DEF_IMG_PATH_LEN + 1];
        char msgText[DEF_MAX_MSG_TEXT_LEN+1];
 
        Evas_Object *ly;
        Evas_Object *entry;
+       Evas_Object *resend_button;
+       Evas_Object *del_button;
+       Evas_Object *progressbar;
        Evas_Object *chk;
        Eina_Bool isCheck;
 
@@ -116,6 +120,17 @@ typedef struct {
        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 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;
@@ -126,9 +141,12 @@ typedef struct _MSG_BUBBLE_DATA {
 
        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;
@@ -139,6 +157,7 @@ typedef struct _MSG_BUBBLE_DATA {
 
        Evas_Object *select_info;
        Evas_Object *selectioninfo_layout;
+       Evas_Object *deleted_info;
 
        Eina_List *bubble_list;
        Eina_List *realized_list;
@@ -147,6 +166,12 @@ typedef struct _MSG_BUBBLE_DATA {
 
        Eina_Bool sel_all_checked;
 
+#ifdef _BUBBLE_FLICK_EVENT
+       Evas_Coord m_x;
+       Evas_Coord m_y;
+#endif
+       Elm_Genlist_Item_Class itc_title;
+
        char *time_12h_ptn;
        char *time_24h_ptn;
        char *date_ptn;
@@ -163,16 +188,18 @@ typedef struct _MSG_BUBBLE_DATA {
        Ecore_Idler *conformant_idler;
        Ecore_Thread *del_thread;
 
-       MSG_HANDLE_T msgHandle;
-       MSG_THREAD_ID_T threadId;
-       MSG_CONTACT_ID_T contactId;
-       char threadAddr[DEF_THREAD_ADDR_LEN+1];
+       msg_handle_t msgHandle;
+       msg_thread_id_t threadId;
+       BUBBLE_ADDRESS_LIST addr_list;
        char threadName[DEF_THREAD_NAME_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_optionheader_opened;
+       bool del_cancel;
 
        int check_cnt;
        int del_index;
@@ -181,34 +208,45 @@ typedef struct _MSG_BUBBLE_DATA {
 
 
 /* FUNCTIONS */
-PMSG_BUBBLE_DATA msg_ui_bubble_init_bubble_data(MSG_HANDLE_T msgHandle, void *callback_data);
+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, bundle *b);
+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_controlbar(Evas_Object *parent, void *user_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_add_normal_control_item(void *user_data);
 
 void msg_ui_bubble_reg_bubble_cb_func(PMSG_BUBBLE_DATA pData);
 PMSG_BUBBLE_DATA msg_ui_bubble_get_bubble_data(void);
 
 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_list_load(PMSG_BUBBLE_DATA bubble_data);
 void msg_ui_bubble_list_data_update(PMSG_BUBBLE_DATA bubble_data);
-void msg_ui_bubble_item_data_update(PMSG_BUBBLE_DATA bubble_data, msg_message_t msg);
+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_message_t msg);
-void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_message_t msg);
+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_msg_storage_change_cb(MSG_HANDLE_T handle, MSG_STORAGE_CHANGE_TYPE_T type, MSG_MSGID_LIST_S *pMsgIdList, void *user_param);
-void msg_ui_bubble_ctlbar_edit_cb(void *data, Evas_Object *obj, void *event_info);
+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_add_normal_toolbar_item(Evas_Object *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);
+void msg_ui_bubble_ctlbar_multi_del_cb(void *data, Evas_Object *obj, void *event_info);
+Evas_Object *msg_ui_bubble_toolbar_btn_create(Evas_Object *parent, char *icon_path, char *button_text);
+void msg_ui_bubble_option_header_delete_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_delete_cb(void *data, Evas_Object *obj, void *event_info);
@@ -218,25 +256,34 @@ void msg_ui_bubble_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_in
 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(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_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_bubble_show_notify_with_timeout(PMSG_BUBBLE_DATA pData, char *msg, double timeout);
 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_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);
 
+bool msg_is_sms(int msg_type);
+bool msg_is_mms(int msg_type);
+
 
 #endif
index 9e0def0..be2052b 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_COMPOSER_COMMON_H__
 #define __MSG_COMPOSER_COMMON_H__
 
 
 typedef enum {
        COMPOSER_TICKERNOTI_UNKNOWN             = 0,
-       COMPOSER_TICKERNOTI_COUNT_MAX           = 1,
-       COMPOSER_TICKERNOTI_DUP_RECP            = 2,
-       COMPOSER_TICKERNOTI_INVALID_RECP        = 3,
-       COMPOSER_TICKERNOTI_CHANGED_SMS         = 4,
+       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*/
@@ -33,11 +38,14 @@ Evas_Object *msg_ui_composer_load_edj(Evas_Object *parent, const char *edj_file,
 Evas_Object *msg_ui_composer_layout_create(Evas_Object *parent, bool indicator);
 Evas_Object *msg_ui_composer_conformant_create(Evas_Object *parent_win, Evas_Object *inner);
 Evas_Object *msg_ui_composer_bg_create(Evas_Object *parent);
+Evas_Object *msg_ui_composer_toolbar_create(Evas_Object *parent);
 
 /*file*/
 int64 msg_composer_get_file_size(const char *path);
 char *msg_common_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);
 void msg_ui_composer_clear(MSG_COMPOSER_VIEW_DATA_S *cd);
 
 /*focus*/
@@ -47,16 +55,28 @@ void msg_ui_composer_last_focused_entry_set(void *data, Evas_Object *entry);
 Evas_Object *msg_ui_composer_last_focused_entry_get(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);
 void msg_ui_composer_common_play_vibration();
 
+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);
 int msg_ui_composer_convert_UTF8ToUCS2(unsigned char *pDestText, int maxLength, const char *pSrcText, int srcTextLen);
 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);
 
-int msg_ui_composer_thread_id_get(MSG_HANDLE_T msg_handle, const char *recipient);
-char *msg_ui_composer_thread_recipient_get(MSG_HANDLE_T msg_handle, int inp_tid);
+int msg_ui_composer_get_font_size(int index, int type);
+void msg_ui_composer_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd);
 
-void msg_ui_composer_evas_object_delete_cb(void *data, Evas * e, Evas_Object *obj, void *event_info);
 #endif/*__MSG_COMPOSER_COMMON_H__*/
diff --git a/composer/include/msg-ui-composer-core.h b/composer/include/msg-ui-composer-core.h
deleted file mode 100755 (executable)
index d027c8c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __MSG_UI_COMPOSER_CORE_H_
-#define __MSG_UI_COMPOSER_CORE_H_
-
-#include "msg-ui-composer-data.h"
-#include "msg-ui-composer-message.h"
-#include <MsgSettingTypes.h>
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_open_msg_handle(MSG_HANDLE_T *msgHandle);
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_close_msg_handle(MSG_HANDLE_T *msgHandle);
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_create_new_message(msg_message_t *msgInfo);
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_release_message(msg_message_t msgInfo);
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_get_message(MSG_HANDLE_T msgHandle, msg_message_t msgInfo, int msgID, MSG_SENDINGOPT_S *sendOpt);
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_msg_get_config(MSG_HANDLE_T msg_handle, MSG_SETTING_S *opt);
-COMPOSER_MSG_TYPE_E msg_ui_comp_core_get_msg_type(msg_message_t msg_data);
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_get_sms_body(msg_message_t msgInfo, char **sms_text);
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_set_message_type(msg_message_t msgInfo, COMPOSER_MSG_TYPE_E comp_msg_type);
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_add_recipient(msg_message_t msgInfo, char *number, COMPOSER_RECP_TYPE_E recp_type);
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_set_sms_body(msg_message_t msgInfo, char *body_text);
-
-
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_send_sms(MSG_HANDLE_T msg_handle, MSG_REQUEST_S *req);
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_reg_sent_status_cb(MSG_HANDLE_T msg_handle, void *cbfunc, void *cbdata);
-
-#endif                         /* __MSG_UI_COMPOSER_CORE_H_ */
index a3211fa..1b3caef 100755 (executable)
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_DATA_H_
 #define __MSG_UI_COMPOSER_DATA_H_
 
 /***********************
  *  includes
  ************************/
-#include <MsgTypes.h>
-#include <MsgMmsTypes.h>
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
 
-#include <appcore-efl.h>
 #include <Elementary.h>
 #include <X11/Xlib.h>
 #include <glib-object.h>
@@ -33,6 +34,7 @@
 
 #include <contacts-svc.h>
 #include <assert.h>
+#include <time.h>
 
 #include "msg-ui-util.h"
 #include "msg-ui-composer-string.h"
@@ -50,6 +52,8 @@ typedef long long int64;
 #endif
 
 #define TO_FIELD_LABEL_SIZE_MAX        512
+#define COMPOSER_RECIPIENT_PORTRAIT_HEIGHT_MAX 150
+#define COMPOSER_RECIPIENT_LANDSCAPE_HEIGHT_MAX        150
 #define COMPARE_STRING_NUM 8
 
 #ifndef MAX_TO_ADDRESS_CNT
@@ -70,12 +74,17 @@ typedef long long int64;
 #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_TEXT_MAX_CHAR (1530)
+#define COMPOSER_MMS_TEXT_MAX_CHAR     (2000)
+#define COMPOSER_MMS_TEXT_MAX_BYTE     (COMPOSER_MMS_TEXT_MAX_CHAR * 3)
 
-#define COMPOSER_MAX_PAGE                      (2)
+#define COMPOSER_MMS_MAX_PAGE                  (20)
+#define COMPOSER_MMS_MAX_ATTACH_COUNT  (10)
 #define COMPOSER_FILEPATH_LEN_MAX      (1024)
 #define COMPOSER_FILENAME_LEN_MAX      (256)
+#define COMPOSER_PAGE_DEFAULT_DURATION (5) //sec
 
 #define COMPOSER_COMMON_EXT_MAX_LENGTH         (7)
 #define COMPOSER_COMMON_MIME_MAX_LEN           (64)
@@ -88,14 +97,31 @@ typedef long long int64;
 #define COMPOSER_CMS_UNICODE_MAX_LEN   (67)
 #define COMPOSER_CMS_GSM7_MAX_LEN              (153)
 
-// temporary 10 pages, it needs to be changed by operator spec.
+/* temporary 10 pages, it needs to be changed by operator spec. */
 #define COMPOSER_CMS_MAX_PAGE                  (10)
 
 #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 50
+#define MSGC_NAVIBAR_TITLE_H 108
+#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_RECIPIENT_POPUP_W 620
+#define MSGC_RECIPIENT_POPUP_LIST_H 130
 
+#define MSGC_BODY_FONT_SIZE 32
 
 /*********************
  * enum types
@@ -127,12 +153,14 @@ typedef enum {
        COMPOSER_RETURN_RECIPIENT_DUPLICATE                     = -16,
        COMPOSER_RETURN_MSG_SIZE_OVER                           = -17,
        COMPOSER_RETURN_RESIZE_IMAGE                            = -18,
-       COMPOSER_RETURN_OVERSIZE_FILE                           = -19,
+       COMPOSER_RETURN_DRM_FORWARDLOCK                         = -19,
+       COMPOSER_RETURN_OVERSIZE_FILE                           = -20,
 } COMPOSER_RETURN_TYPE_E;
 
 typedef enum {
        COMPOSER_MSG_TYPE_INVALID,
        COMPOSER_MSG_TYPE_SMS,
+       COMPOSER_MSG_TYPE_MMS,
 } COMPOSER_MSG_TYPE_E;
 
 typedef enum {
@@ -145,6 +173,23 @@ typedef enum {
 } 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_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,
@@ -161,13 +206,22 @@ typedef enum {
        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_MAX,
+       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,
@@ -188,13 +242,61 @@ typedef enum {
        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
+};
+
+typedef enum {
+       COMPOSER_FONT_SIZE_NONE,
+       COMPOSER_SYSTEM_FONT_SIZE,
+       COMPOSER_MSG_FONT_SIZE
+} COMPOSER_FONT_SIZE_TYPE_E;
+
 /******************************
  * structures
  *******************************/
+typedef struct _FONT_SIZE_S {
+       int sys_font_size;
+       int msg_font_size;
+       COMPOSER_FONT_SIZE_TYPE_E last_updated_setting;
+} FONT_SIZE_S;
+
+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 {
+typedef struct _RECIPIENT_ITEM_S {
        COMPOSER_RECP_ADDR_E type;
        int index;
        char recipient[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1];
@@ -206,15 +308,26 @@ typedef struct _recipient_s {
        const char *name;
        void *cd;
        int mode;
+       int recipient_h;
+
        Evas_Object *parent;
        Evas_Object *bx_main;
        Evas_Object *sc;
        Evas_Object *ly_to;
        Evas_Object *mbe;
        Evas_Object *ly_bt;
+
+       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 {
@@ -236,6 +349,25 @@ typedef struct _predictsearch_s {
        int count;
 } 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;
@@ -243,9 +375,24 @@ typedef struct _text_info {
 
 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 sound_duration;
 } MSG_COMPOSER_BODY_PAGE_S;
 
 typedef struct _MSG_COMPOSER_BODY_S {
@@ -257,51 +404,74 @@ typedef struct _MSG_COMPOSER_BODY_S {
 
 typedef struct _MSG_COMPOSER_DATA_S {
        /*ug data & callback*/
-       struct ui_gadget *ug;
+       ui_gadget_h ug;
+       ui_gadget_h loaded_ug;
        struct ug_cbs cbs;
-       struct ui_gadget *loaded_ug;
 
        /*composer mode & state*/
        MSG_UG_MODE_E msg_ug_mode;
        COMPOSER_STATE_TYPE_E state;
+       COMPOSER_ROTATE_TYPE_E rotate;
        COMPOSER_MSG_TYPE_E msg_type;
-       bundle *msg_bundle;
+
        bool isLoad;
        bool isFullview;
        bool isMsgInternal;
+       bool isAppControl;
        bool sending_success;
 
        bool send_button_clicked;
+       bool add_button_clicked;
        bool add_menu_clicked;
 
-       bool destroy_req;
        bool loaded_aul;
+       bool isSubject;
        bool send_button_is_show;
+       bool isclosed;  /* backkey is pressed */
+       bool loading_draft;     /* draft msg loading status */
 
-       int current_theme;
        int current_edit_entry;
        int first_focus;
-       char recipient_number[COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX+1];
+
+       int window_w;
+       int window_h;
+
+       int ly_body_h;
        char *working_path;
 
+       /* setting data */
+       FONT_SIZE_S font_size;
+       int mms_max_size;
+       int page_duration;
+
        /*message handler*/
-       MSG_HANDLE_T msg_handle;
+       msg_handle_t msg_handle;
 
        /*module data*/
+       SUBJECT_S sub_data;
        MSG_COMPOSER_BODY_S body_data;
+       MSG_COMPOSER_ATTACH_S attach_data;
 
-       RECIPIENT_ITEM_S recipient_frame;
-
+       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 *back_btn;
-       Elm_Object_Item *toollbar_item_top[4];
+       Evas_Object *toolbar_top;
+       Elm_Object_Item *toolbar_item_top[4];
+       Evas_Object *toolbar_btn[4];
        Elm_Object_Item *navi_it;
+       Eina_Bool navi_optionheader_opened;
 
        Evas_Object *content_layout;
        Evas_Object *bg;
@@ -309,17 +479,33 @@ typedef struct _MSG_COMPOSER_DATA_S {
        Evas_Object *ly_recipient;
        Evas_Object *conform;
        Evas_Object *popup_conform;
+
+       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 *custom_popup;
        Eina_List *popup_list;
 
-       Evas_Object *noti;
+       Evas_Object *page_duration_entry;
+
        Evas_Object *last_focus_entry;
-       MSG_BUBBLE_DATA *bubble_data; // For bubble data structure
+
+       Ecore_Idler *last_focus_idler;
+
+       Ecore_Thread *attach_thread;
+       Ecore_Job *job_thread_end;
+
+       Elm_Theme *th;
+
+       MSG_BUBBLE_DATA *bubble_data; /* For bubble data structure */
 } MSG_COMPOSER_VIEW_DATA_S;
 
 #endif                         /* __MSG_UI_COMPOSER_DATA_H_ */
index 0729ec8..1515748 100755 (executable)
  * limitations under the License.
  */
 
+
 #ifndef __MSG_COMPOSER_EXTERNAL_H__
 #define __MSG_COMPOSER_EXTERNAL_H__
 
 #include "msg-ui-composer-data.h"
 
-#define TXT_UG_NAME_LOG                                "phonelog-efl"
+#define GALLERY_TOKEN ";"
+#define MYFILE_TOKEN "?"
+
+#define TXT_UG_NAME_CALLLOG                    "logcheck-efl"
 #define TXT_UG_NAME_CONTACT                    "contacts-list-efl"
+#define TXT_UG_NAME_MYFILE                     "myfile-efl"
+#define TXT_UG_NAME_MSG_VIEWER         "msg-viewer-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_LOG                                "phonelog-efl"
+
 
 typedef enum {
+       COMPOSER_EXT_TYPE_GALLERY,
+       COMPOSER_EXT_TYPE_MYFILE,
+       COMPOSER_EXT_TYPE_VOICEREC,
        COMPOSER_EXT_TYPE_LOG,
+       COMPOSER_EXT_TYPE_CONTACT,
        COMPOSER_EXT_TYPE_CONTACTLIST,
+       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_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);
 
-struct ui_gadget *msg_ui_composer_launch_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd, bundle *b);
-struct ui_gadget *msg_ui_composer_launch_contact_detail_ug(MSG_COMPOSER_VIEW_DATA_S *cd, int ct_id);
-struct ui_gadget *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_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__*/
index 20f0017..77c0174 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_MAIN_H_
 #define __MSG_UI_COMPOSER_MAIN_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, bundle *bundle);
-COMPOSER_RETURN_TYPE_E msg_ui_composer_reset(MSG_COMPOSER_VIEW_DATA_S *cd, bundle *bundle);
+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_reset_request(MSG_COMPOSER_VIEW_DATA_S *cd);
-void msg_ui_composer_destroy_request(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, const char *address, const char *name, int contact_id, int thread_id);
+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, bundle *b);
-void msg_ui_bubble_composer_navi_title_set(void *data);
+void msg_ui_composer_bubble_del_all(void *data, service_h svc_handle);
+void msg_ui_composer_toolbar_top_item_change(MSG_COMPOSER_VIEW_DATA_S *cd, bool smstype);
+void msg_ui_composer_toolbar_top_update(MSG_COMPOSER_VIEW_DATA_S *cd);
+Evas_Object *msg_ui_composer_create_navi_title_bar(void *data);
+void msg_ui_composer_navi_title_set(void *data);
+
 #endif/*__MSG_UI_COMPOSER_MAIN_H_*/
index 9da224a..77e1bfe 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef _MSG_UI_COMPOSER_MESSAGE_DATA_H_
 #define _MSG_UI_COMPOSER_MESSAGE_DATA_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_message_t msgInfo;
+       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_ */
index 7c7feeb..720c019 100755 (executable)
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_MSG_H_
 #define        __MSG_UI_COMPOSER_MSG_H_
 
 #include "msg-ui-composer-data.h"
-#include <MsgSettingTypes.h>
+
 
 /******************************
  * structures
  *******************************/
-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_PUSHMSG = MSG_PUSHMSG_OPT,
-       COMPOSER_CONFIG_TYPE_CBMSG = MSG_CBMSG_OPT,
-};
 
+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;
 
 /*****************************
  *     structures
@@ -44,18 +46,33 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_release_message();
 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_add_address(char *number);
+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, int duration);
+
 /* save send*/
-COMPOSER_RETURN_TYPE_E msg_ui_composer_save_message();
-COMPOSER_RETURN_TYPE_E msg_ui_composer_message_make_and_send(MSG_HANDLE_T msg_handle);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_save_message(msg_handle_t msg_handle);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_data(MSG_COMPOSER_VIEW_DATA_S *cd);
 
-COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_loaded_data(void *composer_data);
-COMPOSER_RETURN_TYPE_E msg_ui_composer_message_load_message(MSG_HANDLE_T msg_handle, int msgID);
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_make_and_send(msg_handle_t msg_handle, msg_thread_id_t *tid);
 
-COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_config(MSG_HANDLE_T msg_handle, MSG_SETTING_S *opt, int type);
+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);
+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..33feeda
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __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_*/
index b2be418..09de63e 100755 (executable)
  * 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>
+#include <status.h>
 
 /* defines*/
 #define COMPOSER_STATUS_POPUP_DEFAULT_TIME     2
 
-/* enum types*/
-typedef enum _msgc_notify_orient
-{
-       MSGC_NOTIFY_ORIENT_TOP          = ELM_NOTIFY_ORIENT_TOP , /**< Notify should appear in the top of parent, default */
-       MSGC_NOTIFY_ORIENT_BOTTOM       = ELM_NOTIFY_ORIENT_BOTTOM, /**< Notify should appear in the bottom of parent */
-       MSGC_NOTIFY_ORIENT_LAST         = ELM_NOTIFY_ORIENT_LAST /**< Sentinel value, @b don't use */
-} MSGC_NOTIFY_ORIENT;
 
 /* function prototypes*/
-Evas_Object *msg_ui_composer_notify_show(Evas_Object *parent, const char *msg, int time, MSGC_NOTIFY_ORIENT orient, bool is_horizon_mode);
+void msg_ui_composer_status_noti_show(const char *msg);
 Evas_Object *msg_ui_composer_status_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, const char *msg, int time);
-Evas_Object *msg_ui_composer_list_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char * title, Evas_Object * list);
+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_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);
 
 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);
+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_ */
index 6367fed..001a253 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_PREDICTSEARCH_H_
 #define __MSG_UI_COMPOSER_PREDICTSEARCH_H_
 
index 5a5f9be..7680822 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_RECIPIENT_CALLBACK_H_
 #define __MSG_UI_COMPOSER_RECIPIENT_CALLBACK_H_
 
@@ -28,8 +29,10 @@ void msg_ui_recipient_multibuttonentry_focused_cb(void *data, Evas_Object *obj,
 void msg_ui_recipient_multibuttonentry_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
 void msg_ui_recipient_multibuttonentry_clicked_cb(void *data, Evas_Object *obj, void *event_info);
 void msg_ui_recipient_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_recipient_multibuttonentry_item_selected_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_recipient_multibuttonentry_item_clicked_cb(void *data, Evas_Object *obj, void *event_info);
 void msg_ui_recipient_multibuttonentry_item_added_cb(void *data, Evas_Object *obj, void *event_info);
 void msg_ui_recipient_multibuttonentry_item_deleted_cb(void *data, Evas_Object *obj, void *event_info);
 Eina_Bool msg_ui_recipient_multibuttonentry_item_verify_cb(Evas_Object *obj, const char *item_label, void *item_data, void *data);
+void msg_ui_recipient_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
 #endif/*__MSG_UI_COMPOSER_RECIPIENT_CALLBACK_H_*/
index abc32d8..6d9e2fd 100755 (executable)
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_RECIPIENT_H_
 #define __MSG_UI_COMPOSER_RECIPIENT_H_
 
 /* includes*/
 #include <Elementary.h>
-#include <MsgTypes.h>
 #include "msg-ui-composer-data.h"
 
 
@@ -37,16 +37,24 @@ void msg_ui_composer_recipient_entry_text_set(RECIPIENT_S *rd, const char *str);
 
 void msg_ui_composer_recipient_focus_set(RECIPIENT_S *rd);
 
+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);
+
 COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_read_data(MSG_COMPOSER_VIEW_DATA_S *cd);
-COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_set_recipient(MSG_COMPOSER_VIEW_DATA_S *cd, const char * recipient);
 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);
 #endif/* __MSG_UI_COMPOSER_RECIPIENT_H_ */
index 1294582..fc9f43c 100755 (executable)
  * 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 "/opt/apps/" PKGNAME
 #endif
 #endif
 
 #define MSGC_UI_EDJ_PATH                                       EDJDIR
-#define MSGC_UI_IMG_PATH                                       IMGDIR
 #define MSGC_UI_DAT_PATH                                       DATADIR
 #define MSGC_UI_TMP_PATH                                       "/tmp"
 
 /*edj*/
 #define MSGC_UI_DEFAULT_EDJ                            MSGC_UI_EDJ_PATH "/composer.edj"
-#define MSGC_UI_WHITE_EDJ                                      MSGC_UI_EDJ_PATH "/white_theme_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                        "composer/attachment/main"
+#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"
 
-/*Image*/
-#define MSGC_IMG_ATTACHMENT_ICON                       MSGC_UI_IMG_PATH "/60_myfiles_file_etc.png"
-#define MSGC_IMG_ATTACHMENT_MSWORD_ICON                MSGC_UI_IMG_PATH "/U01_icon_word.png"
-#define MSGC_IMG_ATTACHMENT_EXCEL_ICON         MSGC_UI_IMG_PATH "/U01_icon_excel.png"
-#define MSGC_IMG_ATTACHMENT_PPT_ICON           MSGC_UI_IMG_PATH "/U01_icon_ppt.png"
-#define MSGC_IMG_ATTACHMENT_PDF_ICON           MSGC_UI_IMG_PATH "/U01_icon_swf.png"
-#define MSGC_IMG_ATTACHMENT_SWF_ICON           MSGC_UI_IMG_PATH "/U01_icon_swf.png"
-#define MSGC_IMG_ATTACHMENT_TXT_ICON           MSGC_UI_IMG_PATH "/U01_icon_text.png"
-#define MSGC_IMG_ATTACHMENT_HTML_ICON          MSGC_UI_IMG_PATH "/U01_icon_html.png"
-#define MSGC_IMG_ATTACHMENT_DEL_ICON           MSGC_UI_IMG_PATH "/M01_icon_minus.png"
-#define MSGC_IMG_ATTACHMENT_DEL_ICON_W         MSGC_UI_IMG_PATH "/white/M01_icon_minus.png"
-
-#define MSGC_IMG_INSERT_ETC_ICON                       MSGC_UI_IMG_PATH "/60_myfiles_file_etc.png"
-#define MSGC_IMG_INSERT_DEL_ICON                       MSGC_UI_IMG_PATH "/M01_icon_minus.png"
-#define MSGC_IMG_INSERT_DEL_ICON_W                     MSGC_UI_IMG_PATH "/white/M01_icon_minus.png"
-
-#define MSGC_IMG_SUBJECT_DEL_ICON                      MSGC_UI_IMG_PATH "/M01_icon_minus.png"
-#define MSGC_IMG_SUBJECT_DEL_ICON_W                    MSGC_UI_IMG_PATH "/white/M01_icon_minus.png"
 
 #endif/* __MSG_UI_COMPOSER_RES_H_ */
index 115311a..06da61b 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_UI_COMPOSER_STRING_H_
 #define __MSG_UI_COMPOSER_STRING_H_
 
@@ -30,9 +31,6 @@
 #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_TAKEPHOTO                                             _MSGSTR("IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO")
-#define MSGC_STR_RECVIDEO                                              _MSGSTR("IDS_MSGC_OPT_RECORD_VIDEO")
-#define MSGC_STR_RECSOUND                                              _MSGSTR("IDS_MSGC_OPT_CREATEITEMRECORDSOUND")
 #define MSGC_STR_MYFILE                                                _SYSSTR("IDS_COM_BODY_MY_FILES")
 #define MSGC_STR_CONTACT                                               _SYSSTR("IDS_COM_BODY_CONTACTS")
 #define MSGC_STR_CALENDAR                                              _SYSSTR("IDS_COM_BODY_CALENDAR")
@@ -40,7 +38,6 @@
 #define MSGC_STR_RECENT                                                _SYSSTR("IDS_COM_BUTTON_RECENT")
 
 /*Title*/
-#define MSGC_STR_ADD                                                   _SYSSTR("IDS_COM_ADD")
 #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")
@@ -58,7 +55,6 @@
 #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_MDM_RESTICT_MODE                  _MSGSTR("IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES")
 #define MSGC_STR_POP_ADDING            _MSGSTR("IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING")
 
 /*Notify*/
@@ -67,6 +63,7 @@
 #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")
@@ -75,6 +72,4 @@
 #define MSGC_STR_10_SECONDS                                            _MSGSTR("IDS_MSGF_OPT_10SEC")
 #define MSGC_STR_CUSTOM_TIME                                   _MSGSTR("IDS_MSGF_BODY_CUSTOM_TIME")
 
-#define MSGC_STR_SCHEDULED_MESSAGE                             _MSGSTR("IDS_MSGC_HEADER_SCHEDULED_MESSAGE")
-
 #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..9a92620
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __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);
+
+#endif /*__MSG_UI_COMPOSER_SUBJECT_H_*/
index 6a7e003..1d9d9b4 100755 (executable)
 #include "msg-ui-composer-main.h"
 #include "msg-ui-composer-recipient.h"
 #include "msg-ui-composer-external.h"
+#include "msg-ui-composer-common.h"
+
+#define BUBBLE_TITLE_MENU_GENLIST_MAX_LINE 3
+#define BUBBLE_TITLE_MENU_GENLIST_1LINE_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;
 
@@ -85,13 +92,17 @@ static void _bubble_add_edit_controlbar(PMSG_BUBBLE_DATA pData)
                        elm_object_item_del(pData->toolbar_item[i]);
        }
 
-       pData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(pData->toolbar, MSG_CONTROLBAR_ICON_DELETE, NULL, \
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data;
+       Evas_Object *toolbar = msg_ui_bubble_create_toolbar(pData);
+       elm_object_item_part_content_set(cd->navi_it, "controlbar", toolbar);
+
+       pData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, NULL, \
                                                                                                                                msg_ui_bubble_ctlbar_delete_cb, pData->callback_data);
-       pData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, NULL);
-       pData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, NULL);
+       pData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+       pData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
 
-       pData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(pData->toolbar, MSG_CONTROLBAR_ICON_CANCEL, NULL, \
-                                                                                                                               msg_ui_bubble_ctlbar_cancel_cb, pData->callback_data);
+       pData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_CANCEL, NULL, \
+                                                                                                               msg_ui_bubble_ctlbar_cancel_cb, pData->callback_data);
 
        elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
        elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
@@ -100,6 +111,24 @@ static void _bubble_add_edit_controlbar(PMSG_BUBBLE_DATA pData)
        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();
@@ -155,13 +184,13 @@ static void _delete_finish(PMSG_BUBBLE_DATA pData)
        if (pData->popup)
                _progress_popup_delete(pData);
 
-       if (pData->del_index + 1 == pData->bubble_count)
+       if (pData->del_index + 1 == pData->bubble_count) {
                pData->bubble_count = 0;
-       else {
-               _bubble_show_normal_mode(pData->callback_data);
-               msg_ui_bubble_list_load(pData);
        }
 
+       _bubble_show_normal_mode(pData->callback_data);
+       msg_ui_bubble_list_load(pData);
+
        pData->del_thread = NULL;
 }
 
@@ -180,17 +209,37 @@ static void _del_thread_feedback_fn(void *data, Ecore_Thread *thread, void *msg_
                        elm_object_text_set(pData->progresslabel, buf);
                        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);
+
+               pData->del_thread = NULL;
+
+               if (ret)
+                       free(ret);
+               return;
        }
 
-       if (*ret != MSG_SUCCESS || pData->del_index + 1 == pData->check_cnt)
+       if (pData->del_index + 1 == pData->check_cnt) {
+               msg_ui_bubble_show_deleted_info(pData);
                _delete_finish(pData);
-       else
+       } else {
                pData->del_index++;
+       }
 
        if (ret)
                free(ret);
@@ -207,6 +256,12 @@ static void _del_thread_fn(void *data, Ecore_Thread *thread)
        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);
@@ -228,15 +283,18 @@ static void _del_all_item(PMSG_BUBBLE_DATA pData)
 {
        D_ENTER;
 
-       MSG_ERROR_T err = MSG_SUCCESS;
+       msg_error_t err = MSG_SUCCESS;
 
        err = msg_delete_thread_message_list(pData->msgHandle, pData->threadId);
 
        if (err == MSG_SUCCESS) {
                pData->bubble_count = 0;
-               msg_ui_bubble_show_notify(pData, dgettext("sys_string", "IDS_COM_POP_DELETED"));
+               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);
        }
 
        D_LEAVE;
@@ -249,20 +307,346 @@ void msg_ui_bubble_change_normal_navi_control(PMSG_BUBBLE_DATA pData)
 
        MSG_COMPOSER_VIEW_DATA_S *cd = pData->callback_data;
 
-       msg_ui_bubble_add_normal_control_item(pData);
+       elm_object_item_signal_emit(cd->navi_it, "elm,state,controlbar,close", "");
+       Evas_Object *toolbar = elm_object_item_part_content_unset(cd->navi_it, "controlbar");
+
+       if (toolbar)
+               evas_object_del(toolbar);
 
        if (cd->back_btn) {
                evas_object_show(cd->back_btn);
-               elm_object_item_part_content_set(cd->navi_it, "prev_btn", 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);
+       }
+
+       /* change title */
+       Evas_Object *content = elm_object_part_content_get(cd->navi_title_layout, "title_btn");
+       if (content) {
+               elm_object_part_content_unset(cd->navi_title_layout, "title_btn");
+               evas_object_del(content);
+       }
+
+       elm_object_part_text_set(cd->navi_title_layout, "title_text", "");
+
+       if (pData->title_button)
+               elm_object_part_content_set(cd->navi_title_layout, "title_btn", pData->title_button);
+
        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_bubble_msg_storage_change_cb(MSG_HANDLE_T handle, MSG_STORAGE_CHANGE_TYPE_T type, MSG_MSGID_LIST_S *pMsgIdList, void *user_param)
+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_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, 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);
+               }
+       }
+
+       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.1") == 0) {
+               if (addr_info->contact_id > 0 && addr_info->name)
+                       return strdup(addr_info->name);
+               else if (addr_info->address)
+                       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)
+                       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->navi_bar);
+       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_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);
+       }
+
+       evas_object_size_hint_max_set(list, -1, 512 * elm_scale_get());
+
+       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);
+}
+
+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);
+       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);
+
+       /** 3.1 set genlist styles */
+       bubble_data->itc_title.item_style = "2text.1icon.2";
+       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);
+
+
+       bubble_data->title_genlist = genlist;
+       cd->title_menu_layout = box;
+
+       /** emit signal for changing state of swl.bubble.titlemenu to open */
+       elm_object_signal_emit(cd->title_menu_layout, "elm,state,title_menu,open", "");
+
+       /** 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_1LINE_HEIGHT * BUBBLE_TITLE_MENU_GENLIST_MAX_LINE);
+       else
+               evas_object_size_hint_min_set(box, 0, BUBBLE_TITLE_MENU_GENLIST_1LINE_HEIGHT * bubble_data->addr_list.addr_cnt);
+
+       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 !!");
+
+       elm_object_signal_emit(cd->title_menu_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 (bubble_data->title_optionheader_opened) {
+               elm_object_signal_emit(cd->navi_title_layout, "elm,state,title,hide", "");
+
+               if (cd->title_menu_layout)
+                       msg_ui_bubble_close_title_menu_genlist(bubble_data);
+               else
+                       elm_object_item_signal_emit(cd->navi_it, "elm,state,optionheader,close", "");
+       } else {
+               Evas_Object *content = NULL;
+
+               if (cd->navi_optionheader_opened) {
+                       elm_object_signal_emit(cd->navi_title_layout, "elm,state,more,hide", "");
+                       cd->navi_optionheader_opened = EINA_FALSE;
+               }
+
+               content = elm_object_item_part_content_unset(cd->navi_it, "optionheader");
+               if (content) {
+                       if (content == bubble_data->toolbar) {
+                               int i = 0;
+                               for (i = 0; i < MSG_BUBBLE_CONTROLBAR_ITEM_NUM; i++) {
+                                       if (bubble_data->toolbar_item[i] != NULL) {
+                                               elm_object_item_del(bubble_data->toolbar_item[i]);
+                                               bubble_data->toolbar_item[i] = NULL;
+                                       }
+                               }
+                       }
+                       evas_object_del(content);
+               }
+
+               if (bubble_data->addr_list.addr_cnt == 1) {
+                       Evas_Object *toolbar = msg_ui_bubble_create_toolbar(bubble_data);
+
+                       msg_ui_bubble_add_normal_toolbar_item(toolbar, bubble_data);
+                       elm_object_item_part_content_set(cd->navi_it, "optionheader", toolbar);
+
+                       bubble_data->toolbar = toolbar;
+
+                       elm_object_item_signal_emit(cd->navi_it, "elm,state,optionheader,open", "");
+
+               } else if (bubble_data->addr_list.addr_cnt > 1) {
+                       msg_ui_bubble_open_title_menu_genlist(bubble_data);
+               } else {
+                       D_EMSG("invalid address count [%d]", bubble_data->addr_list.addr_cnt);
+                       return;
+               }
+
+               elm_object_signal_emit(cd->navi_title_layout, "elm,state,title,show", "");
+       }
+
+       bubble_data->title_optionheader_opened = !bubble_data->title_optionheader_opened;
+
+       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;
 
@@ -283,18 +667,24 @@ void msg_ui_bubble_msg_storage_change_cb(MSG_HANDLE_T handle, MSG_STORAGE_CHANGE
 
        int i;
        for (i = 0; i < pMsgIdList->nCount; i++) {
-               msg_message_t msg = msg_new_message();
-               MSG_SENDINGOPT_S sendOpt = {0};
-               MSG_ERROR_T err = MSG_SUCCESS;
+               msg_struct_t msg = 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(BubbleData->msgHandle, pMsgIdList->msgIdList[i], msg, &sendOpt);
+               err = msg_get_message(BubbleData->msgHandle, pMsgIdList->msgIdList[i], msg, sendOpt);
 
                if (err != MSG_SUCCESS) {
-                       msg_release_message(&msg);
+                       msg_release_struct(&msg);
+                       msg_release_struct(&sendOpt);
                        return;
                }
 
-               if (BubbleData->threadId == msg_get_ith_thread_id(msg, 0)) {
+               int folder_id = 0;
+               int thread_id = 0;
+               msg_get_int_value(msg, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);
+               msg_get_int_value(msg, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+
+               if (BubbleData->threadId == thread_id && folder_id != MSG_SPAMBOX_ID) {
                        switch (type) {
                                case MSG_STORAGE_CHANGE_INSERT :
                                        msg_ui_bubble_list_append(BubbleData, msg);
@@ -309,13 +699,65 @@ void msg_ui_bubble_msg_storage_change_cb(MSG_HANDLE_T handle, MSG_STORAGE_CHANGE
                        }
                }
 
-               msg_release_message(&msg);
+               msg_release_struct(&msg);
+               msg_release_struct(&sendOpt);
        }
 
        D_LEAVE;
 }
 
-void msg_ui_bubble_ctlbar_edit_cb(void *data, Evas_Object *obj, void *event_info)
+void msg_ui_bubble_option_header_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;
+
+       elm_object_part_content_unset(cd->navi_title_layout, "prev_btn");
+       elm_object_part_content_unset(cd->navi_title_layout, "more_btn");
+
+       if (cd->back_btn)
+               evas_object_hide(cd->back_btn);
+
+       if (cd->more_btn)
+               evas_object_hide(cd->more_btn);
+
+
+       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_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");
+               }
+       }
+
+       msg_ui_composer_editable_set(cd, EINA_FALSE);
+
+       _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_multi_del_cb(void *data, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
@@ -328,7 +770,8 @@ void msg_ui_bubble_ctlbar_edit_cb(void *data, Evas_Object *obj, void *event_info
        pData->check_cnt = 0;
        pData->del_index = 0;
 
-       elm_object_item_part_content_unset(cd->navi_it, "prev_btn");
+       elm_object_item_part_content_unset(cd->navi_it, "title_right_btn");
+
        if (cd->back_btn) {
                evas_object_hide(cd->back_btn);
        }
@@ -359,6 +802,30 @@ void msg_ui_bubble_ctlbar_edit_cb(void *data, Evas_Object *obj, void *event_info
        _bubble_add_navi_select_all_ly(pData);
 }
 
+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);
+
+       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_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, pData->addr_list.addr_info[0].address);
+                       msg_ui_composer_launch_email_create(cd, svc_handle);
+                       if (!cd->loaded_ug)
+                               msg_ui_bubble_show_notify(pData, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_OPEN"));
+                       service_destroy(svc_handle);
+               }
+       }
+}
+
 void msg_ui_bubble_ctlbar_call_cb(void *data, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
@@ -367,7 +834,20 @@ void msg_ui_bubble_ctlbar_call_cb(void *data, Evas_Object *obj, void *event_info
        PMSG_BUBBLE_DATA pData = cd->bubble_data;
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
 
-       msg_ui_bubble_launch_voice_call(pData->threadAddr);
+       if (pData->addr_list.addr_cnt == 1)
+               msg_ui_bubble_launch_voice_call(pData->addr_list.addr_info[0].address);
+}
+
+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);
 }
 
 void msg_ui_bubble_ctlbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info)
@@ -379,7 +859,8 @@ void msg_ui_bubble_ctlbar_add_to_contact_cb(void *data, Evas_Object *obj, void *
        PMSG_BUBBLE_DATA pData = cd->bubble_data;
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
 
-       msg_ui_composer_launch_contact_list_ug(cd, CT_UG_REQUEST_UPDATE_WITH_NUM, pData->threadAddr);
+       if (pData->addr_list.addr_cnt == 1)
+               msg_ui_composer_launch_contact_list_ug(cd, CT_UG_REQUEST_UPDATE_WITH_NUM, pData->addr_list.addr_info[0].address);
 }
 
 void msg_ui_bubble_ctlbar_view_ct_detail_cb(void *data, Evas_Object *obj, void *event_info)
@@ -392,7 +873,8 @@ void msg_ui_bubble_ctlbar_view_ct_detail_cb(void *data, Evas_Object *obj, void *
        PMSG_BUBBLE_DATA pData = cd->bubble_data;
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pData);
 
-       msg_ui_composer_launch_contact_detail_ug(cd, pData->contactId);
+       if (pData->addr_list.addr_cnt == 1)
+               msg_ui_composer_launch_contact_detail_ug(cd, pData->addr_list.addr_info[0].contact_id);
 }
 
 void msg_ui_bubble_ctlbar_delete_cb(void *data, Evas_Object *obj, void *event_info)
@@ -409,12 +891,16 @@ void msg_ui_bubble_ctlbar_delete_cb(void *data, Evas_Object *obj, void *event_in
                pData->popup = NULL;
        }
 
-       if (pData->sel_all_checked)
+       bool isDraft = msg_ui_composer_common_is_send_possible(cd);
+
+       if (pData->sel_all_checked && isDraft == false) {
+               pData->bubble_count = 0;
                _del_all_item(pData);
-       else {
+       else {
                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);
        }
+
 }
 
 
@@ -513,6 +999,167 @@ void msg_ui_bubble_item_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, voi
        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);
+                                       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();
@@ -599,3 +1246,60 @@ void msg_ui_bubble_scroll_drag_start_cb(void *data, Evas_Object *obj, void *even
        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, 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_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, title);
+                       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);
+               }
+       }
+
+       if (bubble_data->popup) {
+               evas_object_del(bubble_data->popup);
+               bubble_data->popup = NULL;
+       }
+
+       D_LEAVE;
+}
+
index dfaf67d..1e77f38 100755 (executable)
@@ -18,6 +18,9 @@
 #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_isVisible = false;
 bool g_isFirstLoading = true;
@@ -27,42 +30,6 @@ bool g_isFirstLoading = true;
 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_date(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;
-
-       PMSG_BUBBLE_DATA bubble_data = msg_ui_bubble_get_bubble_data();
-
-       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;
-
-       diffday = cur_day - msg_day;
-
-       if (diffday == 0)
-               snprintf(msg_date_buf, sizeof(msg_date_buf), "%s", dgettext("sys_string", "IDS_COM_BODY_TODAY"));
-       else if (diffday == 1)
-               snprintf(msg_date_buf, sizeof(msg_date_buf), "%s", dgettext("sys_string", "IDS_COM_BODY_YESTERDAY"));
-       else {
-               date_str = msg_common_get_formatted_date(bubble_data->locale, bubble_data->date_ptn, msg_t);
-               if (date_str) {
-                       strncpy(msg_date_buf, date_str, sizeof(msg_date_buf) - 1);
-                       free(date_str);
-               }
-       }
-
-       return strdup(msg_date_buf);
-
-}
-
 static char *__msg_ui_get_display_time(time_t *msg_t)
 {
        if (!msg_t)
@@ -90,99 +57,79 @@ static char *__msg_ui_get_display_time(time_t *msg_t)
 
 static void __msg_bubble_add_content(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S conv_data)
 {
-
-       char *token_line = NULL, *token_words = NULL;
-       char *remain_l = NULL, *remain_w = NULL;
-       char tmp_buf[DEF_BUF_LEN_L] = { 0, };
        bool isMsgText = false;
-
        Eina_Strbuf *msg_data = eina_strbuf_new();
 
-       eina_strbuf_append(msg_data, "<font_size=32>");
-
-       /* Message Text */
-       strncpy(tmp_buf, conv_data->msgText, strlen(conv_data->msgText));
-
-       token_line = strtok_r(tmp_buf, "\n", &remain_l);
-
-       while (token_line) {
-               token_words = strtok_r(token_line, " ", &remain_w);
+       /* Subject */
+       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>");
 
-               if (isMsgText == false)
-                       isMsgText = true;
-               while (token_words) {
-                       char *tmp_str = elm_entry_utf8_to_markup(token_words);
+                       subject = elm_entry_utf8_to_markup(conv_data->subject);
+                       eina_strbuf_append(msg_data, subject);
 
-                       eina_strbuf_append(msg_data, "<color=#4D3A17FF>");
-                       eina_strbuf_append(msg_data, tmp_str);
-
-                       token_words = strtok_r(NULL, " ", &remain_w);
-                       if (token_words)
-                               eina_strbuf_append(msg_data, " ");
-
-                       if (tmp_str)
-                               free(tmp_str);
-               }
-
-               token_line = strtok_r(NULL, "\n", &remain_l);
-               if (token_line)
+                       if (subject)
+                               free(subject);
                        eina_strbuf_append(msg_data, "<br>");
+               }
        }
 
-       /* Message time / Status */
-       eina_strbuf_append(msg_data, "<font_size=24>");
-
-       if (isMsgText)
-               eina_strbuf_append(msg_data, "<br>");
-
-       if (conv_data->networkStatus != MSG_NETWORK_SENDING) {
-               PMSG_APP_CONV_DATA_S prev_data = NULL;
-               Eina_List *cur_list = NULL, *prev_list = NULL;
-               char *display_time = NULL;
-
-               display_time = __msg_ui_get_display_time(conv_data->msgTime);
-
-               cur_list = eina_list_data_find_list(bubble_data->bubble_list, (const void *)conv_data);
-               if (cur_list)
-                       prev_list = cur_list->prev;
+       /* Message Text */
+       eina_strbuf_append(msg_data, "<color=#4D3A17FF>");
+       char *tmp_str = elm_entry_utf8_to_markup(conv_data->msgText);
+       eina_strbuf_append(msg_data, tmp_str);
+       if (tmp_str) {
+               isMsgText = true;
+               free(tmp_str);
+       }
 
-               prev_data = (PMSG_APP_CONV_DATA_S)eina_list_nth(prev_list, 0);
+       if (conv_data->msgType == MSG_TYPE_MMS) {
 
-               if(!prev_data || g_strcmp0(prev_data->displayDate, conv_data->displayDate) != 0)
-                       eina_strbuf_append_printf(msg_data, "<color=#8F783FFF>%s %s", conv_data->displayDate, display_time);
-               else
-                       eina_strbuf_append_printf(msg_data, "<color=#8F783FFF>%s", display_time);
+               if (conv_data->attachment_cnt > 0) {
+                       eina_strbuf_append(msg_data, "<font_size=24>");
+                       eina_strbuf_append_printf(msg_data, "<br><item size=32x32 vsize=full href=file://%s>%d</item>", MSG_BUBBLE_ATTACH_ICON, conv_data->attachment_cnt);
+               }
 
-               if (display_time)
-                       free(display_time);
-       }
+               if (conv_data->thumbNailPath[0] != '\0') {
+                       Evas_Object *tmp_obj = NULL;
+
+                       int w = 0;
+                       int h = 0;
+                       double rate = 0.0;
+
+                       //FIXME :: It should be fixed at elm_image.c
+                       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 = h * rate;
+                               h = MSG_BUBBLE_IMG_MAX_H;
+                       }
 
-       switch (conv_data->networkStatus) {
-               case MSG_NETWORK_SEND_FAIL:
-                       eina_strbuf_append(msg_data, " <color=#FF2020FF>");
-                       eina_strbuf_append(msg_data, dgettext("sys_string", "IDS_COM_POP_SENDING_FAILED"));
-                       break;
-               case MSG_NETWORK_SENDING:
-                       eina_strbuf_append(msg_data, "<color=#00A200FF>");
-                       eina_strbuf_append(msg_data, dgettext("sys_string", "IDS_COM_POP_SENDING"));
-                       break;
-               default:
-                       break;
-       }
+                       if (isMsgText)
+                               eina_strbuf_append(msg_data, "<br>");
 
-       if (conv_data->direction == MSG_DIRECTION_TYPE_MO && conv_data->networkStatus == MSG_NETWORK_SEND_FAIL) {
-               eina_strbuf_append_printf(msg_data,
-                               "<br><font_size=32><color=#0500D5FF><align=center><a href=resend.%d><underline=on underline_color=#0500D5FF>(%s)<underline=off></a></font_size></align>",
-                               conv_data->msgId, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESEND"));
-       }
+                       eina_strbuf_append(msg_data, "<font_size=8>");
+                       eina_strbuf_append_printf(msg_data, "<br><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);
+                       /** <br> between <item>, </item> is needed, if it is not exist, it couldn't use anchor */
+               }
+       } 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>");
+               }
 
-       if (conv_data->msgType == MSG_TYPE_SMS && conv_data->storageId == MSG_STORAGE_SIM) {
                eina_strbuf_append_printf(msg_data, "<item size=25x25 vsize=full href=file://%s></item>", MSG_BUBBLE_SIM_MSG_ICON);
-       } else if (conv_data->msgType == MSG_TYPE_SMS_SYNCML) {
-               eina_strbuf_append(msg_data, "<br><font_size=8><br></font_size>");
-               eina_strbuf_append_printf(msg_data,
-                               "<font_size=32><color=#0500D5FF><align=center><a href=install.%d><underline=on underline_color=#0500D5FF>(%s)</a><underline=off></font_size></align>",
-                               conv_data->msgId, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_INSTALL"));
        }
 
        elm_entry_entry_set(conv_data->entry, eina_strbuf_string_get(msg_data));
@@ -213,6 +160,8 @@ static void __add_bubble_item(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S
        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;
@@ -265,20 +214,89 @@ static void __add_bubble_item(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S
        }
 
 }
-
-static void __msg_url_clicked_cb(char *content)
+static void __msg_image_clicked_cb(PMSG_BUBBLE_DATA bubble_data, char *msgID)
 {
        D_ENTER;
-       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, content == NULL);
+       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);
 
-       D_MSG("url=%s", content);
+               for (j = 0; j < mediaCnt; j++) {
+                       int media_type;
+                       mms_media = (msg_struct_t)msg_list_nth_data(medialist, i);
+
+                       msg_get_int_value(mms_media, MSG_MMS_MEDIA_TYPE_INT, &media_type);
+
+                       if (media_type == MMS_SMIL_MEDIA_IMG) {
+                               goto OUTSIDE_OF_LOOP;
+                       }
+               }
+       }
 
-       bundle *b = bundle_create();
-       appsvc_set_operation(b, APPSVC_OPERATION_VIEW);
-       appsvc_set_uri(b, content);
-       appsvc_run_service(b, 0, NULL, NULL);
+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);
 
-       bundle_free(b);
        D_LEAVE;
 }
 
@@ -289,9 +307,9 @@ static void __msg_install_clicked_cb(PMSG_BUBBLE_DATA bubble_data, int msg_id)
 
        D_MSG("syncml message operation, msg id = [%d]", msg_id);
 
-       MSG_ERROR_T err = MSG_SUCCESS;
+       msg_error_t err = MSG_SUCCESS;
 
-       err = msg_syncml_message_operation(bubble_data->msgHandle, (MSG_MESSAGE_ID_T) msg_id);
+       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.");
 
@@ -302,49 +320,62 @@ Eina_Bool __resend_idler_cb(void *data)
 {
        PMSG_BUBBLE_DATA bubble_data = msg_ui_bubble_get_bubble_data();
 
-       msg_message_t failed_msg = msg_new_message();
-       MSG_SENDINGOPT_S sendOpt = { 0, };
-       MSG_ERROR_T err = MSG_SUCCESS;
+       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;
 
        int msg_id = (int)data;
        D_MSG("Re-send message, msg id = [%d]", msg_id);
 
-       err = msg_get_message(bubble_data->msgHandle, msg_id, failed_msg, &sendOpt);
+       err = msg_get_message(bubble_data->msgHandle, msg_id, failed_msg, sendOpt);
 
        if (err != MSG_SUCCESS) {
                D_MSG("msg_get_message is failed.");
+               msg_release_struct(&sendOpt);
+               msg_release_struct(&failed_msg);
                return EINA_FALSE;
        }
 
-       MSG_REQUEST_S req = { 0, failed_msg, sendOpt };
+       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);
 
-       if (msg_is_sms(failed_msg))
-               err = msg_sms_send_message(bubble_data->msgHandle, &req);
+       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.");
                msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DETAILSSENDINGFAILED"));
        }
 
-       msg_release_message(&failed_msg);
+       msg_release_struct(&failed_msg);
+       msg_release_struct(&sendOpt);
+       msg_release_struct(&req);
 
        bubble_data->resend_idler = NULL;
 
        return EINA_FALSE;
 }
 
-static void __msg_resend_clicked_cb(PMSG_BUBBLE_DATA bubble_data, int msg_id)
+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;
 
+       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;
                        }
                }
@@ -356,6 +387,69 @@ static void __msg_resend_clicked_cb(PMSG_BUBBLE_DATA bubble_data, int msg_id)
        D_LEAVE;
 }
 
+static Eina_Bool __retrieve_idler_cb(void *data)
+{
+       PMSG_BUBBLE_DATA bubble_data = msg_ui_bubble_get_bubble_data();
+
+       msg_error_t err = MSG_SUCCESS;
+       int msg_id = (int)data;
+       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]", msg_id);
+
+       err = msg_get_message(bubble_data->msgHandle, msg_id, retrieve_msg, sendOpt);
+       if (err != MSG_SUCCESS) {
+               D_MSG("msg_get_message is failed.");
+               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"));
+       }
+
+       msg_release_struct(&retrieve_msg);
+       msg_release_struct(&sendOpt);
+       msg_release_struct(&req);
+
+       bubble_data->retrieve_idler = NULL;
+
+       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_idler = ecore_idler_add(__retrieve_idler_cb, (void *)msg_id);
+
+       D_LEAVE;
+}
 
 static void __popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
@@ -380,6 +474,10 @@ static void __anchor_click_cb(void *data, Evas_Object *obj, void *event_info)
        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, };
 
@@ -392,13 +490,8 @@ static void __anchor_click_cb(void *data, Evas_Object *obj, void *event_info)
 
        MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, tok_r == NULL);
 
-       if (g_strcmp0(token, "url") == 0) {
-               __msg_url_clicked_cb(tok_r);
-       } else if (g_strcmp0(token, "install") == 0) {
-               __msg_install_clicked_cb(bubble_data, atoi(tok_r));
-       } else if (g_strcmp0(token, "resend") == 0) {
-               __msg_resend_clicked_cb(bubble_data, atoi(tok_r));
-       }
+       if (g_strcmp0(token, "image") == 0)
+               __msg_image_clicked_cb(bubble_data, tok_r);
 
        D_LEAVE;
 }
@@ -421,9 +514,34 @@ static void __msg_copy_clicked_cb(void *data, Evas_Object *obj, void *event_info
                return;
        }
 
-       char *text = elm_entry_markup_to_utf8(elm_entry_entry_get(conv_data->entry));
+       const char *origin_text = elm_entry_entry_get(conv_data->entry);
+       char *text_temp = NULL;
+       char *text = NULL;
+
+       if (origin_text) {
+               text_temp = strdup(origin_text);
+               const char *startTag = NULL;
+               if (text_temp) {
+                       startTag = strstr(text_temp, "<item");
+                       if (startTag != NULL) {
+                               int offset = (int)(startTag-text_temp);
+                               text_temp[offset] = '\0';
+                       } else {
+                       }
+                       text = elm_entry_markup_to_utf8(text_temp);
+                       g_free(text_temp);
+               } else {
+                       D_EMSG("text_temp is NULL (strdup error)");
+                       return;
+               }
+       }
 
        if (text) {
+               const char *startTag = strstr(text, "<item");
+               if (startTag != NULL) {
+                       int offset = (int)(startTag-text);
+                       text[offset] = '\0';
+               }
                elm_cnp_selection_set(conv_data->entry, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_TEXT, text, strlen(text));
                g_free(text);
        }
@@ -438,7 +556,7 @@ static void __msg_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event
 
        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;
+       msg_message_id_t msg_id;
        int err;
 
        if (bubble_data->popup) {
@@ -451,8 +569,9 @@ static void __msg_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event
                return;
        }
 
-       /** remove thread, if only one bubble exist */
-       if (bubble_data->bubble_count == 1) {
+       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);
        } else {
@@ -464,7 +583,7 @@ static void __msg_delete_ok_clicked_cb(void *data, Evas_Object *obj, void *event
        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_notify(bubble_data, dgettext("sys_string", "IDS_COM_POP_DELETED"));
+               msg_ui_bubble_show_deleted_info(bubble_data);
        }
 
        return;
@@ -544,31 +663,81 @@ static void __msg_forward_clicked_cb(void *data, Evas_Object *obj, void *event_i
        }
 
        char buf[DEF_BUF_LEN_S] = { 0, };
-       bundle *b = NULL;
-       b = bundle_create();
-       if (b) {
+       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);
-               bundle_add(b, MSG_BUNDLE_KEY_FORWARD, buf);
-               msg_ui_composer_launch_composer_create(cd, b);
-               bundle_free(b);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FORWARD, buf);
+               msg_ui_composer_launch_composer_create(cd, svc_handle);
+               service_destroy(svc_handle);
+       }
+       D_LEAVE;
+}
+
+static void __msg_move_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_MOVE"));
+               return;
+       }
+
+       msg_error_t err = MSG_SUCCESS;
+
+       if (conv_data->msgType == MSG_TYPE_SMS) {
+               if (conv_data->storageId == MSG_STORAGE_PHONE) {
+                       err = msg_move_msg_to_storage(bubble_data->msgHandle, conv_data->msgId, MSG_STORAGE_SIM);
+               } else if (conv_data->storageId == MSG_STORAGE_SIM) {
+                       err = msg_move_msg_to_storage(bubble_data->msgHandle, conv_data->msgId, MSG_STORAGE_PHONE);
+               } else {
+                       D_EMSG("invalid storage id [%d]", conv_data->storageId);
+                       msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_MOVE"));
+                       return;
+               }
+       } else {
+               D_EMSG("invalid msg_type [%d]", conv_data->msgType);
+               msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_MOVE"));
+               return;
+       }
+
+       if (err == MSG_SUCCESS) {
+               msg_ui_bubble_show_notify(bubble_data, dgettext("sys_string", "IDS_COM_POP_MOVED"));
+               msg_ui_bubble_list_load(bubble_data);
+       } else {
+               msg_ui_bubble_show_notify(bubble_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_UNABLE_TO_MOVE"));
        }
 
        D_LEAVE;
 }
 
+
 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,};
-       int length = 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);
 
        /** create popup */
        popup = elm_popup_add(cd->main_window);
@@ -581,22 +750,10 @@ static void __longpressed_cb(void *data, Evas_Object *obj, void *event_info)
 
        /** set popup title */
        /** Sender: contents ... ex> "01012341234: Hello......" */
-       if (bubble_data->contactId > 0) {
-               if (bubble_data->threadName[0] != '\0')
-                       strncpy(title, bubble_data->threadName, DEF_THREAD_ADDR_LEN);
-               else
-                       strncpy(title,dgettext("sys_string", "IDS_COM_BODY_NO_NAME"), DEF_THREAD_ADDR_LEN);
-       } else {
-               if (bubble_data->threadAddr[0] != '\0')
-                       strncpy(title, bubble_data->threadAddr, DEF_THREAD_ADDR_LEN);
-               else
-                       strncpy(title, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"), DEF_THREAD_ADDR_LEN);
-       }
-
-       length = DEF_THREAD_ADDR_LEN - strlen(title);
-       strncat(title, ": ", 2);
-       length = length + 2;
-       strncat(title, conv_data->msgText, length);
+       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);
@@ -609,6 +766,14 @@ static void __longpressed_cb(void *data, Evas_Object *obj, void *event_info)
        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("sys_string", "IDS_COM_BODY_FORWARD"), NULL, NULL, __msg_forward_clicked_cb, bubble_data);
 
+       if (conv_data->msgType == COMPOSER_MSG_TYPE_SMS) {
+               if (conv_data->storageId == MSG_STORAGE_PHONE)
+                       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_MOVE_TO_SIM"), NULL, NULL, __msg_move_clicked_cb, bubble_data);
+               else if (conv_data->storageId == MSG_STORAGE_SIM)
+                       elm_list_item_append(list, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_MOVE_TO_PHONE"), NULL, NULL, __msg_move_clicked_cb, bubble_data);
+
+       }
+
        elm_list_go(list);
 
        elm_object_part_text_set(popup,"title,text",title);
@@ -627,40 +792,49 @@ static void __longpressed_cb(void *data, Evas_Object *obj, void *event_info)
 }
 
 
-static void __set_msg_data_by_conv_data(PMSG_APP_CONV_DATA_S conv_data, msg_message_t msgInfo)
+static void __set_msg_data_by_conv_data(PMSG_APP_CONV_DATA_S conv_data, msg_struct_t msgInfo)
 {
        MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !conv_data || !msgInfo);
 
-       const char *msg_body = NULL;
        char *msg_date = NULL;
 
-       conv_data->msgId = msg_get_message_id(msgInfo);
-       conv_data->msgType = msg_get_message_type(msgInfo);
-       conv_data->storageId = msg_get_storage_id(msgInfo);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_ID_INT, (int *)(&conv_data->msgId));
+       msg_get_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, &conv_data->msgType);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_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) {
+               PMSG_BUBBLE_DATA bubble_data = msg_ui_bubble_get_bubble_data();
+
                bzero(conv_data->msgTime,sizeof(time_t));
-               memcpy(conv_data->msgTime, msg_get_time(msgInfo), sizeof(time_t));
-               msg_date = __msg_ui_get_display_date(conv_data->msgTime);
+               msg_get_int_value(msgInfo, MSG_MESSAGE_DISPLAY_TIME_INT, (int *)conv_data->msgTime);
+               msg_date = msg_common_get_display_date(bubble_data->locale, bubble_data->date_ptn, conv_data->msgTime);
                snprintf(conv_data->displayDate, sizeof(conv_data->displayDate), "%s", msg_date);
                if (msg_date)
                        free(msg_date);
        }
 
-       conv_data->networkStatus = msg_get_network_status(msgInfo);
-       conv_data->bRead = msg_is_read(msgInfo);
-       conv_data->bProtected = msg_is_protected(msgInfo);
-       conv_data->direction = msg_get_direction_info(msgInfo);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_NETWORK_STATUS_INT, (int *)(&conv_data->networkStatus));
+       msg_get_bool_value(msgInfo, MSG_MESSAGE_READ_BOOL, &conv_data->bRead);
+       msg_get_bool_value(msgInfo, MSG_MESSAGE_PROTECTED_BOOL, &conv_data->bProtected);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_DIRECTION_INT, &conv_data->direction);
 
-       msg_body = msg_sms_get_message_body(msgInfo);
+       bzero(conv_data->thumbNailPath, sizeof(conv_data->thumbNailPath));
+       msg_get_str_value(msgInfo, MSG_MESSAGE_THUMBNAIL_PATH_STR, conv_data->thumbNailPath, DEF_IMG_PATH_LEN);
 
-       bzero(conv_data->msgText, sizeof(conv_data->msgText));
+       bzero(conv_data->subject, sizeof(conv_data->subject));
+       msg_get_str_value(msgInfo, MSG_MESSAGE_SUBJECT_STR, conv_data->subject, DEF_BUF_LEN_S);
 
-       if (msg_body)
-               strncpy(conv_data->msgText, msg_body, DEF_MAX_MSG_TEXT_LEN);
+       if (conv_data->msgType == MSG_TYPE_MMS) {
+               msg_get_str_value(msgInfo, MSG_MESSAGE_SMS_DATA_STR, conv_data->msgText, DEF_MAX_MSG_TEXT_LEN);                 /** get body text */
+               msg_get_int_value(msgInfo, MSG_MESSAGE_ATTACH_COUNT_INT, &conv_data->attachment_cnt);                   /** get attachment count */
+       } else if (conv_data->msgType == MSG_TYPE_MMS_NOTI) {
+               bzero(conv_data->msgText, sizeof(conv_data->msgText));
+       } else {
+               msg_get_str_value(msgInfo, MSG_MESSAGE_SMS_DATA_STR, conv_data->msgText, DEF_MAX_MSG_TEXT_LEN);
+       }
 }
 
 static int __calc_scroller_geometry(PMSG_BUBBLE_DATA bubble_data)
@@ -690,13 +864,232 @@ static Eina_Bool __unfreeze_scroller_cb(void *data)
        return ECORE_CALLBACK_CANCEL;
 }
 
-void msg_ui_bubble_fill_bubble_contents(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S item_data)
+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;
+
+       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;
 
-       if (!bubble_data || !item_data) return;
+       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) {
+               msg_ui_bubble_show_notify(bubble_data, dgettext("sys_string", "IDS_COM_BODY_LOW_BATTERY"));
+       } else {
+               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);
+               }
+       }
+}
+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_show(more_btn);
+               }
+
+               evas_object_show(media_layout);
+               elm_object_part_content_set(item_data->entry, "elm.swallow.end", media_layout);
+       } 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);
+       }
+
+       if (item_data->direction == MSG_DIRECTION_TYPE_MO && item_data->networkStatus == MSG_NETWORK_SEND_FAIL) {
+               /** create & show resend button */
+               Evas_Object *resend_btn = elm_button_add(item_data->ly);
+               elm_object_style_set(resend_btn, "send");
+               elm_object_part_content_set(item_data->ly, "elm.swallow.icon2", resend_btn);
+
+               evas_object_data_set(resend_btn, "conv_data", item_data);
+               evas_object_smart_callback_add(resend_btn, "clicked", __msg_resend_btn_clicked_cb, bubble_data);
+
+               /** create & show delete button */
+               Evas_Object *del_btn = elm_button_add(item_data->ly);
+               elm_object_style_set(del_btn, "cancel");
+               elm_object_part_content_set(item_data->ly, "elm.swallow.icon1", del_btn);
+
+               evas_object_data_set(del_btn, "conv_data", item_data);
+               evas_object_smart_callback_add(del_btn, "clicked", __msg_delete_clicked_cb, bubble_data);
+
+               /** elm.swallow.icon1 & elm.swallow.icon2 will be shown only when state is "content_on" */
+               /** "elm,state,contents,enabled" signal make bubble state to "content_on" */
+               elm_object_signal_emit(item_data->ly, "elm,state,contents,enabled", "elm");
+
+               evas_object_show(resend_btn);
+               evas_object_show(del_btn);
+
+               item_data->del_button = del_btn;
+               item_data->resend_button = resend_btn;
+       }
+
+       /** Network status (Sending, Retrieving); */
+       switch (item_data->networkStatus) {
+       case MSG_NETWORK_SEND_FAIL:
+       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);
+               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)
@@ -740,6 +1133,23 @@ Eina_Bool msg_ui_bubble_item_load_cb(void *data)
                        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--;
@@ -769,9 +1179,9 @@ void msg_ui_bubble_list_load(PMSG_BUBBLE_DATA bubble_data)
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
        MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !bubble_data);
 
-       MSG_ERROR_T err = MSG_SUCCESS;
+       msg_error_t err = MSG_SUCCESS;
        MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)bubble_data->callback_data;
-       MSG_LIST_S msg_list;
+       msg_struct_list_s msg_list;
        PMSG_APP_CONV_DATA_S item_data = NULL;
        int i;
 
@@ -788,27 +1198,55 @@ void msg_ui_bubble_list_load(PMSG_BUBBLE_DATA bubble_data)
        bubble_data->bubble_count = msg_list.nCount;
 
        if (bubble_data->bubble_count <= 0) {
-               msg_release_message_list(&msg_list);
+               msg_release_list_struct(&msg_list);
                return;
        }
 
-       for (i = 0; i < bubble_data->bubble_count; i++) {
+       int folder_id = MSG_MAX_FOLDER_ID;
+       int msg_id = 0;
+
+       for (i = 0; i < msg_list.nCount; i++) {
+               msg_get_int_value(msg_list.msg_struct_info[i], MSG_MESSAGE_FOLDER_ID_INT, &folder_id);
+
+               if (folder_id == MSG_DRAFT_ID) {
+                       msg_get_int_value(msg_list.msg_struct_info[i], MSG_MESSAGE_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(item_data, msg_list.msgInfo[i]);
+               __set_msg_data_by_conv_data(item_data, msg_list.msg_struct_info[i]);
 
                bubble_data->bubble_list = eina_list_append(bubble_data->bubble_list, (const void *)item_data);
+       }
 
-               if (i == (bubble_data->bubble_count-1)) {
-                       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);
+       /* load last draft message */
+       if (bubble_data->isDraft) {
+               D_MSG("last draft msgid is %d", msg_id);
 
-               }
+               cd->loading_draft = true;
+
+               msg_ui_composer_message_init();
+               msg_ui_composer_message_load_message(cd->msg_handle, msg_id);
+               msg_ui_composer_message_set_loaded_data(cd);
+               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_message_list(&msg_list);
+       msg_release_list_struct(&msg_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);
@@ -833,23 +1271,31 @@ void msg_ui_bubble_list_data_update(PMSG_BUBBLE_DATA bubble_data)
        MSG_UI_LEAVE();
 }
 
-void msg_ui_bubble_item_data_update(PMSG_BUBBLE_DATA bubble_data, msg_message_t msg)
+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_MESSAGE_ID_INT, &msg_id);
+       msg_get_int_value(msg, MSG_MESSAGE_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_get_message_id(msg)) {
-
+                       if (item_data->msgId == msg_id) {
                                if (bubble_data->ug_state != BUBBLE_UG_PAUSE)
-                                       msg_update_read_status(bubble_data->msgHandle, msg_get_message_id(msg), true);
-
-                               __set_msg_data_by_conv_data(item_data, msg);
-                               msg_ui_bubble_fill_bubble_contents(bubble_data, item_data);
-
+                                       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(item_data, msg);
+                                       msg_ui_bubble_fill_bubble_contents(bubble_data, item_data);
+                               }
                                break;
                        }
                }
@@ -916,14 +1362,18 @@ Eina_Bool msg_ui_bubble_item_add_cb(void *data)
 
 }
 
-void msg_ui_bubble_list_append(PMSG_BUBBLE_DATA bubble_data, msg_message_t msg)
+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;
        Eina_List *l = NULL;
        PMSG_APP_CONV_DATA_S item_data = NULL;
+
+       msg_get_int_value(msg, MSG_MESSAGE_ID_INT, &msg_id);
+
        EINA_LIST_FOREACH(bubble_data->bubble_list, l, item_data) {
-               if (item_data && item_data->msgId == msg_get_message_id(msg))
+               if (item_data && item_data->msgId == msg_id)
                        return;
        }
 
@@ -950,20 +1400,23 @@ void msg_ui_bubble_list_append(PMSG_BUBBLE_DATA bubble_data, msg_message_t msg)
        D_LEAVE;
 }
 
-void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_message_t msg)
+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_MESSAGE_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_get_message_id(msg)) {
+                       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;
@@ -973,7 +1426,7 @@ void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_message_t ms
 
        EINA_LIST_FOREACH(bubble_data->bubble_list, l, prev_data) {
                if (prev_data) {
-                       if (prev_data->msgId == msg_get_message_id(msg)) {
+                       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);
@@ -984,9 +1437,12 @@ void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_message_t ms
 
                                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;
@@ -1017,3 +1473,32 @@ void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_message_t ms
        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);
+       } else {
+               err = msg_delete_message(bubble_data->msgHandle, msg_id);
+               msg_ui_bubble_list_load(bubble_data);
+       }
+
+       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;
+}
index 7f4c019..f47c686 100755 (executable)
  */
 
 #include "msg-ui-composer-bubble.h"
+#include "msg-ui-composer-data.h"
 
 PMSG_BUBBLE_DATA g_bubble_data;
 
-static int _parse_bundle_data(PMSG_BUBBLE_DATA bubble_data, bundle *data)
+static int _parse_bundle_data(PMSG_BUBBLE_DATA bubble_data, service_h svc_handle)
 {
        D_ENTER;
 
-       if (!data)
+       if (!svc_handle)
                return -1;
 
-       const char *thread_id = NULL;
-       const char *contact_id = NULL;
+       char *thread_id = NULL;
+       msg_struct_t threadInfo = NULL;
+       int err;
 
-       thread_id = bundle_get_val(data, MSG_BUNDLE_KEY_THREAD_ID);
-       bubble_data->threadId = thread_id?(MSG_THREAD_ID_T)atoi(thread_id):0;
+       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);
 
-       snprintf(bubble_data->threadAddr, DEF_THREAD_ADDR_LEN, "%s", bundle_get_val(data, MSG_BUNDLE_KEY_THREAD_ADDRESS));
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread Adress from bundle data=%s", bubble_data->threadAddr);
+       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);
 
-       snprintf(bubble_data->threadName, DEF_THREAD_NAME_LEN, "%s", bundle_get_val(data, MSG_BUNDLE_KEY_THREAD_NAME));
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread Name from bundle data=%s", bubble_data->threadName);
+       } else {
+               D_MSG("[ERROR] msg_get_address_list return error [%d]", err);
+       }
 
-       contact_id = bundle_get_val(data, MSG_BUNDLE_KEY_CONTACT_ID);
-       bubble_data->contactId = contact_id? atoi(contact_id):0;
+       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_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "contact ID from bundle data=%d", bubble_data->contactId);
+       msg_release_struct(&threadInfo);
 
        D_LEAVE;
        return 0;
@@ -51,34 +71,55 @@ static int _parse_bundle_with_msg_id(PMSG_BUBBLE_DATA bubble_data, int msgId)
 {
        D_ENTER;
 
-       MSG_ERROR_T err = MSG_SUCCESS;
-       msg_message_t msgInfo;
-       MSG_SENDINGOPT_S sendOpt = { 0, };
-
-       msgInfo = msg_new_message();
+       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);
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, -1);
-
-       D_MSG("Address count = %d", msg_get_address_count(msgInfo));
+       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;
+       }
 
-       bubble_data->threadId = msg_get_ith_thread_id(msgInfo, 0);
+       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);
 
-       snprintf(bubble_data->threadAddr, DEF_THREAD_ADDR_LEN, "%s", msg_get_ith_address(msgInfo, 0));
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread Adress from bundle data=%s", bubble_data->threadAddr);
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+       msg_get_address_list(bubble_data->msgHandle, bubble_data->threadId, &addrList);
 
-       snprintf(bubble_data->threadName, DEF_THREAD_NAME_LEN, "%s", msg_get_ith_name(msgInfo, 0));
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread Name from bundle data=%s", bubble_data->threadName);
+       bubble_data->addr_list.addr_cnt = addrList.nCount;
 
-       if (msg_get_ith_contact_id(msgInfo, 0))
-               bubble_data->contactId = msg_get_ith_contact_id(msgInfo, 0);
+       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
-               bubble_data->contactId = 0;
+               snprintf(bubble_data->threadName, DEF_THREAD_NAME_LEN, "%s", bubble_data->addr_list.addr_info[0].address);
 
-       msg_release_message(&msgInfo);
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
 
        D_LEAVE;
 
@@ -86,7 +127,7 @@ static int _parse_bundle_with_msg_id(PMSG_BUBBLE_DATA bubble_data, int msgId)
 }
 
 
-PMSG_BUBBLE_DATA msg_ui_bubble_init_bubble_data(MSG_HANDLE_T msgHandle, void *callback_data)
+PMSG_BUBBLE_DATA msg_ui_bubble_init_bubble_data(msg_handle_t msgHandle, void *callback_data)
 {
        D_ENTER;
 
@@ -183,11 +224,15 @@ void msg_ui_bubble_deinit_bubble_data(void *data)
        D_LEAVE;
 }
 
-void msg_ui_bubble_parse_bubble_data(PMSG_BUBBLE_DATA bubble_data, bundle *b)
+void msg_ui_bubble_parse_bubble_data(PMSG_BUBBLE_DATA bubble_data, service_h svc_handle)
 {
-       if (g_strcmp0(bundle_get_val(b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_MSG_ID) == 0) { /* From logs */
+       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;
-               const char *msg_id_str = bundle_get_val(b, MSG_BUNDLE_KEY_MSG_ID);
+               char *msg_id_str = NULL;
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_MSG_ID, &msg_id_str);
 
                if (!msg_id_str)
                        return;
@@ -195,8 +240,9 @@ void msg_ui_bubble_parse_bubble_data(PMSG_BUBBLE_DATA bubble_data, bundle *b)
                msg_id = atoi(msg_id_str);
                _parse_bundle_with_msg_id(bubble_data, msg_id);
 
-       } else
-               _parse_bundle_data(bubble_data, b);
+       } else {
+               _parse_bundle_data(bubble_data, svc_handle);
+       }
 }
 
 void msg_ui_bubble_start_bubble_list(PMSG_BUBBLE_DATA bubble_data)
@@ -247,9 +293,10 @@ void msg_ui_bubble_init_bubble_list(PMSG_BUBBLE_DATA bubble_data)
                bubble_data->add_animator = NULL;
        }
 
-       if (bubble_data->box) {
+       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) {
@@ -271,19 +318,25 @@ void msg_ui_bubble_init_bubble_list(PMSG_BUBBLE_DATA bubble_data)
        D_LEAVE;
 }
 
-Evas_Object *msg_ui_bubble_create_controlbar(Evas_Object *parent, void *user_data)
+Evas_Object *msg_ui_bubble_create_toolbar(void *user_data)
 {
-       if (!parent || !user_data)
+       if (!user_data) {
+               D_EMSG("[ERROR] user_data is NULL");
                return NULL;
+       }
 
-       PMSG_BUBBLE_DATA bubble_data = user_data;
+       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);
 
-       Evas_Object *toolbar = NULL;
+       if (!toolbar) {
+               D_EMSG("toolbar is NULL");
+               return NULL;
+       }
 
-       toolbar = elm_toolbar_add(parent);
        elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
-       elm_object_style_set(toolbar, "toolbar");
-       bubble_data->toolbar = toolbar;
+       elm_object_style_set(toolbar, "naviframe");
 
        return toolbar;
 }
@@ -349,38 +402,99 @@ void msg_ui_bubble_start_view(PMSG_BUBBLE_DATA bubble_data)
                        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "heynoti_attach_handler() is success.");
                }
        }
+
+#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);
 }
 
-void msg_ui_bubble_add_normal_control_item(void *user_data)
+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");
 
-       if (!user_data)
-               return;
+       Evas_Object *button = elm_button_add(parent);
 
-       int i;
+       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);
 
-       PMSG_BUBBLE_DATA bubble_data = user_data;
+       elm_object_style_set(button, "naviframe_control/default");
 
-       for (i = 0; i < MSG_BUBBLE_CONTROLBAR_ITEM_NUM; i++) {
-               if (bubble_data->toolbar_item[i])
-                       elm_object_item_del(bubble_data->toolbar_item[i]);
+       if (icon_path) {
+               Evas_Object *icon = elm_icon_add(button);
+               elm_icon_file_set(icon, icon_path, NULL);
+               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);
 
-       bubble_data->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(bubble_data->toolbar, MSG_CONTROLBAR_ICON_EDIT, NULL, \
-                                                                                                                               msg_ui_bubble_ctlbar_edit_cb, bubble_data->callback_data);
+       D_LEAVE;
+       return button;
+}
 
-       bubble_data->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(bubble_data->toolbar, MSG_CONTROLBAR_ICON_VOICE_CALL, NULL, \
-                                                                                                                               msg_ui_bubble_ctlbar_call_cb, bubble_data->callback_data);
-       if (bubble_data->contactId <= 0) {
-               bubble_data->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(bubble_data->toolbar, MSG_CONTROLBAR_ICON_ADD_TO_CONTACT, NULL, \
-                                                                                                               msg_ui_bubble_ctlbar_add_to_contact_cb, bubble_data->callback_data);
+void msg_ui_bubble_add_normal_toolbar_item(Evas_Object *toolbar, void *user_data)
+{
+       D_ENTER;
+
+       if (!user_data) {
+               D_EMSG("[ERROR] user data is NULL");
+               return;
+       }
+
+       int i;
+       unsigned char num_type;
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)user_data;
+
+       /* create add/view contact button */
+       Evas_Object *addcontact_button = NULL;
+       if (bubble_data->addr_list.addr_info[0].contact_id <= 0) {
+               addcontact_button = msg_ui_bubble_toolbar_btn_create(toolbar, MSG_TITLE_ICON_ADD_TO_CONTACT, NULL);
+               evas_object_smart_callback_add(addcontact_button, "clicked", msg_ui_bubble_ctlbar_add_to_contact_cb, bubble_data->callback_data);
        } else {
-               bubble_data->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(bubble_data->toolbar, MSG_CONTROLBAR_ICON_VIEW_CONTACT_DETAIL, NULL, \
-                                                                                                               msg_ui_bubble_ctlbar_view_ct_detail_cb, bubble_data->callback_data);
+               addcontact_button = msg_ui_bubble_toolbar_btn_create(toolbar, MSG_CONTROLBAR_ICON_VIEW_CONTACT, NULL);
+               evas_object_smart_callback_add(addcontact_button, "clicked", msg_ui_bubble_ctlbar_view_ct_detail_cb, bubble_data->callback_data);
        }
 
+       num_type = msg_ui_bubble_check_word_type(bubble_data->addr_list.addr_info[0].address);
+       if (num_type == WORD_TYPE_NUM) {
+               /* create voicecall button */
+               Evas_Object *voicecall_button = msg_ui_bubble_toolbar_btn_create(toolbar, MSG_TITLE_ICON_VOICECALL, NULL);
+               evas_object_smart_callback_add(voicecall_button, "clicked", msg_ui_bubble_ctlbar_call_cb, bubble_data->callback_data);
+               bubble_data->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, bubble_data->callback_data);
+               elm_object_item_part_content_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_1], "object", voicecall_button);
+
+               /* create videocall button */
+               Evas_Object *videocall_button = msg_ui_bubble_toolbar_btn_create(toolbar, MSG_TITLE_ICON_VIDEOCALL, NULL);
+               evas_object_smart_callback_add(videocall_button, "clicked", msg_ui_bubble_ctlbar_vcall_cb, bubble_data->callback_data);
+               bubble_data->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, bubble_data->callback_data);
+               elm_object_item_part_content_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_2], "object", videocall_button);
+
+               bubble_data->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, bubble_data->callback_data);
+               elm_object_item_part_content_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_3], "object", addcontact_button);
+       } else if (num_type == WORD_TYPE_EMAIL) {
+               Evas_Object *email_button = msg_ui_bubble_toolbar_btn_create(toolbar, NULL, dgettext("sys_string","IDS_COM_BODY_EMAIL"));
+               evas_object_smart_callback_add(email_button, "clicked", msg_ui_bubble_ctlbar_email_cb, bubble_data->callback_data);
+               bubble_data->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, bubble_data->callback_data);
+               elm_object_item_part_content_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_1], "object", email_button);
+
+               bubble_data->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, bubble_data->callback_data);
+               elm_object_item_part_content_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_2], "object", addcontact_button);
+       } else {
+               bubble_data->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, bubble_data->callback_data);
+               elm_object_item_part_content_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_1], "object", addcontact_button);
+
+               if (num_type == WORD_TYPE_NONE) { // invalid address
+                       elm_object_item_disabled_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+                       elm_object_disabled_set(addcontact_button, EINA_TRUE);
+               }
+       }
+
+
        if (bubble_data->threadId <= 0) {
                for (i = 0; i < MSG_BUBBLE_CONTROLBAR_ITEM_NUM; i++) {
                        if (bubble_data->toolbar_item[i])
@@ -390,8 +504,9 @@ void msg_ui_bubble_add_normal_control_item(void *user_data)
                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) {
-                       elm_object_item_disabled_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); /** voice call */
-                       elm_object_item_disabled_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_3], EINA_TRUE); /** add/update contact */
+                       elm_object_item_disabled_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE); // voice call
+                       elm_object_item_disabled_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); // video call
+                       elm_object_item_disabled_set(bubble_data->toolbar_item[CONTROLBAR_ITEM_3], EINA_TRUE); // add/update contact
                }
        }
 
index 54c9669..b61db41 100755 (executable)
 
 #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>
 
 void msg_ui_bubble_launch_voice_call(const char *call_num)
 {
@@ -25,21 +27,53 @@ void msg_ui_bubble_launch_voice_call(const char *call_num)
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !call_num);
 
        char *num_str = msg_ui_bubble_get_trimmed_number(call_num);
-
-       bundle *b = bundle_create();
-
+       service_h svc_handle;
        char telnum[255] = {0,};
 
-       appsvc_set_operation(b, APPSVC_OPERATION_CALL);
-       snprintf(telnum, sizeof(telnum), "tel:%s", num_str);     /* Number to make a call */
-       appsvc_set_uri(b, telnum);
-       appsvc_run_service(b, 0, NULL, NULL);
+       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 = NULL;
+
+       num_str = msg_ui_bubble_get_trimmed_number(call_num);
+
+       bundle *b = bundle_create();
+
+       if (!b)
+               return;
+
+       bundle_add(b, MSG_BUNDLE_KEY_VCALL_TYPE, MSG_BUNDLE_VALUE_VCALL_MO);
+       bundle_add(b, MSG_BUNDLE_KEY_VCALL_HANDLE, MSG_BUNDLE_VALUE_VCALL_HANDLE);
+       bundle_add(b, MSG_BUNDLE_KEY_VCALL_PARTY_NUM, num_str);
+       bundle_add(b, MSG_BUNDLE_KEY_VCALL_CLI_CAUSE, MSG_BUNDLE_VALUE_VCALL_FALSE);
+       bundle_add(b, MSG_BUNDLE_KEY_VCALL_FORWARDED, MSG_BUNDLE_VALUE_VCALL_FALSE);
+
+       aul_launch_app(VIDEO_CALL_PKG_NAME, b);
 
        bundle_free(b);
 
+       if (num_str)
+               free(num_str);
+
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
@@ -81,18 +115,9 @@ static void __popup_response_cb(void *data, Evas_Object *obj, void *event_info)
                bubbleData->select_info = NULL;
        }
 
-       if (bubbleData->bubble_count == 0) {
-               bundle *b = bundle_create();
-               if (b) {
-                       char buf[DEF_BUF_LEN_S] = {0,};
-                       bundle_add(b, MSG_BUNDLE_KEY_RESULT, MSG_BUNDLE_VALUE_DEL_ALL);
-                       snprintf(buf, sizeof(buf), "%d", bubbleData->threadId);
-                       bundle_add(b, MSG_BUNDLE_KEY_THREAD_ID, buf);
-
-                       msg_ui_composer_bubble_del_all(bubbleData->callback_data, b);
-
-                       bundle_free(b);
-               }
+       if (bubbleData->deleted_info) {
+               evas_object_del(bubbleData->select_info);
+               bubbleData->select_info = NULL;
        }
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
@@ -101,6 +126,7 @@ 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;
 
@@ -109,13 +135,14 @@ void msg_ui_bubble_show_notify(PMSG_BUBBLE_DATA bubbleData, char *msg)
                bubbleData->popup = NULL;
        }
 
-       popup = elm_popup_add(bubbleData->bubble_layout);
+       popup = elm_popup_add(cd->navi_bar);
        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);
@@ -123,30 +150,12 @@ void msg_ui_bubble_show_notify(PMSG_BUBBLE_DATA bubbleData, char *msg)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-void msg_ui_bubble_show_notify_with_timeout(PMSG_BUBBLE_DATA bubbleData, char *msg, double timeout)
+static void __msg_delete_progress_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !bubbleData, "PMSG_BUBBLE_DATA is NULL");
-
-       Evas_Object *popup = NULL;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
+       PMSG_BUBBLE_DATA bubble_data = (PMSG_BUBBLE_DATA)data;
 
-       if (bubbleData->popup) {
-               evas_object_del(bubbleData->popup);
-               bubbleData->popup = NULL;
-       }
-
-       popup = elm_popup_add(bubbleData->bubble_layout);
-       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);
-
-       elm_popup_timeout_set(bubbleData->popup, timeout);
-       evas_object_show(bubbleData->popup);
-
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       bubble_data->del_cancel = true;
 }
 
 Evas_Object* msg_ui_bubble_show_notify_with_progressbar(PMSG_BUBBLE_DATA pData, int count)
@@ -155,10 +164,15 @@ Evas_Object* msg_ui_bubble_show_notify_with_progressbar(PMSG_BUBBLE_DATA pData,
 
        MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !pData, NULL);
 
-       Evas_Object *popup, *progressbar, *box, *label;
+       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(pData->bubble_layout);
+       popup = elm_popup_add(cd->navi_bar);
 
        label = elm_label_add(popup);
        snprintf(buf, sizeof(buf), "0/%d %s", count, dgettext("sys_string", "IDS_COM_POP_DELETED"));
@@ -177,8 +191,12 @@ Evas_Object* msg_ui_bubble_show_notify_with_progressbar(PMSG_BUBBLE_DATA pData,
        elm_box_pack_end(box, progressbar);
        evas_object_show(box);
 
-       elm_object_content_set(popup, box);
+       cancel_btn = elm_button_add(popup);
+       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;
@@ -202,7 +220,10 @@ void msg_ui_bubble_show_select_info(PMSG_BUBBLE_DATA pData)
                elm_object_content_set(pData->select_info, pData->selectioninfo_layout);
        }
 
-       elm_layout_theme_set(pData->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_64");
+       if (pData->isRotate)
+               elm_layout_theme_set(pData->selectioninfo_layout, "standard", "selectioninfo", "horizontal/bottom_64");
+       else
+               elm_layout_theme_set(pData->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_64");
 
        if (pData->check_cnt <= 0) {
                evas_object_hide(pData->select_info);
@@ -221,81 +242,204 @@ void msg_ui_bubble_show_select_info(PMSG_BUBBLE_DATA pData)
        }
 }
 
-void msg_ui_bubble_contact_info_update(PMSG_BUBBLE_DATA pData)
+void msg_ui_bubble_show_deleted_info(PMSG_BUBBLE_DATA pData)
 {
-       D_ENTER;
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       PMSG_APP_CONV_DATA_S conv_data = NULL;
-       MSG_ERROR_T err = MSG_SUCCESS;;
-       int index;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pData);
 
-       if (!pData->bubble_list)
-               return;
+       if (pData->select_info) {
+               evas_object_del(pData->select_info);
+               pData->select_info = NULL;
+       }
 
-       conv_data = (PMSG_APP_CONV_DATA_S)eina_list_nth(pData->bubble_list, 0);
-       if (!conv_data)
-               return;
+       status_message_post(dgettext("sys_string", "IDS_COM_POP_DELETED"));
 
-       msg_message_t msg = msg_new_message();
-       MSG_SENDINGOPT_S sendOpt = {0};
+       bool isDraft = msg_ui_composer_common_is_send_possible((MSG_COMPOSER_VIEW_DATA_S *)pData->callback_data);
 
-       err = msg_get_message(pData->msgHandle, conv_data->msgId, msg, &sendOpt);
+       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,};
 
-       if (err != MSG_SUCCESS)
-               goto CONTACT_UPDATE_LEAVE;
+                       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);
 
-       index = msg_get_ith_contact_id(msg, 0);
+                       msg_ui_composer_bubble_del_all(pData->callback_data, svc_handle);
 
-       if (index > 0) {
-               const char *display_name = NULL;
-               display_name = msg_get_ith_name(msg, 0);
-               bzero(pData->threadName, sizeof(pData->threadName));
-               if (display_name)
-                       snprintf(pData->threadName, DEF_THREAD_NAME_LEN, "%s", display_name);
+                       service_destroy(svc_handle);
+               }
+       }
+}
 
-               pData->contactId = index;
 
-               if (pData->toolbar_item[CONTROLBAR_ITEM_4] && pData->viewmode != BUBBLE_EDIT_VIEW) {
-                       elm_object_item_del(pData->toolbar_item[CONTROLBAR_ITEM_4]);
-                       pData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(pData->toolbar, MSG_CONTROLBAR_ICON_VIEW_CONTACT_DETAIL, NULL, \
-                                                                                                               msg_ui_bubble_ctlbar_view_ct_detail_cb, pData->callback_data);
+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 {
-               if (pData->contactId) {
-                       if (pData->threadAddr[0] != '\0') {
-                               if (pData->toolbar_item[CONTROLBAR_ITEM_4] && pData->viewmode != BUBBLE_EDIT_VIEW) {
-                                       elm_object_item_del(pData->toolbar_item[CONTROLBAR_ITEM_4]);
-                                       pData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(pData->toolbar, MSG_CONTROLBAR_ICON_ADD_TO_CONTACT, NULL, \
-                                                                                                                                                               msg_ui_bubble_ctlbar_add_to_contact_cb, pData->callback_data);
-                               }
-                       }
+               D_MSG("[ERROR] msg_get_address_list return error [%d]", err);
+               goto CONTACT_UPDATE_LEAVE;
+       }
 
-                       bzero(pData->threadName, sizeof(pData->threadName));
-                       pData->contactId = 0;
+       /** change control bar button */
+       if (pData->title_optionheader_opened) {
+               unsigned char num_type = msg_ui_bubble_check_word_type(pData->addr_list.addr_info[0].address);
+
+               if (pData->addr_list.addr_info[0].contact_id > 0) {
+                       Evas_Object *addcontact_button = msg_ui_bubble_toolbar_btn_create(pData->toolbar, MSG_CONTROLBAR_ICON_VIEW_CONTACT, NULL);
+                       evas_object_smart_callback_add(addcontact_button, "clicked", msg_ui_bubble_ctlbar_view_ct_detail_cb, pData->callback_data);
+
+                       if (num_type == WORD_TYPE_NUM) {
+                               elm_object_item_del(pData->toolbar_item[CONTROLBAR_ITEM_3]);
+                               pData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, pData->callback_data);
+                               elm_object_item_part_content_set(pData->toolbar_item[CONTROLBAR_ITEM_3], "object", addcontact_button);
+                       } else if (num_type == WORD_TYPE_EMAIL) {
+                               elm_object_item_del(pData->toolbar_item[CONTROLBAR_ITEM_2]);
+                               pData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, pData->callback_data);
+                               elm_object_item_part_content_set(pData->toolbar_item[CONTROLBAR_ITEM_2], "object", addcontact_button);
+                       }
+               } else {
+                       Evas_Object *addcontact_button = msg_ui_bubble_toolbar_btn_create(pData->toolbar, MSG_TITLE_ICON_ADD_TO_CONTACT, NULL);
+                       evas_object_smart_callback_add(addcontact_button, "clicked", msg_ui_bubble_ctlbar_add_to_contact_cb, pData->callback_data);
+
+                       if (num_type == WORD_TYPE_NUM) {
+                               elm_object_item_del(pData->toolbar_item[CONTROLBAR_ITEM_3]);
+                               pData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, pData->callback_data);
+                               elm_object_item_part_content_set(pData->toolbar_item[CONTROLBAR_ITEM_3], "object", addcontact_button);
+                       } else if (num_type == WORD_TYPE_EMAIL) {
+                               elm_object_item_del(pData->toolbar_item[CONTROLBAR_ITEM_2]);
+                               pData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, pData->callback_data);
+                               elm_object_item_part_content_set(pData->toolbar_item[CONTROLBAR_ITEM_2], "object", addcontact_button);
+                       }
                }
        }
 
-       msg_ui_bubble_composer_navi_title_set(pData->callback_data);
+       /*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_message(&msg);
+       msg_release_list_struct(&peerList);
        D_LEAVE;
        return;
 }
 
-void msg_ui_bubble_get_time_format(PMSG_BUBBLE_DATA pData)
+unsigned char msg_ui_bubble_check_word_type(char *txt)
 {
-       int r;
-       enum appcore_time_format timeformat;
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, !txt, WORD_TYPE_NONE, "Message text is NULL!");
 
-       r = appcore_get_timeformat(&timeformat);
-       if (r == MSG_UI_RET_ERR)
-               timeformat = APPCORE_TIME_FORMAT_UNKNOWN;
+       int index = 0, numCnt = 0;
 
-       if (timeformat == APPCORE_TIME_FORMAT_24)
-               pData->time_fmt = MSG_TIME_FORMAT_24H;
-       else
+       if (!g_ascii_strncasecmp(txt, "www.", 4))
+               return WORD_TYPE_URL;
+
+       if (!g_ascii_strncasecmp(txt, "http://", 7))
+               return WORD_TYPE_URL_WITH_PROTC;
+
+       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) {
+               D_MSG("regcomp error = %d", ret);
+               return WORD_TYPE_NONE;
+       }
+
+       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");
 }
@@ -313,3 +457,40 @@ void msg_ui_bubble_get_locale(PMSG_BUBBLE_DATA pData)
        D_MSG("Locale = %s", pData->locale);
 }
 
+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/core/msg-ui-composer-core.c b/composer/src/core/msg-ui-composer-core.c
deleted file mode 100755 (executable)
index 2f5dc05..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* includes*/
-#include "msg-ui-composer-data.h"
-#include "msg-ui-composer-message.h"
-
-#include <MsgTypes.h>
-#include <MsgMmsTypes.h>
-#include <MapiStorage.h>
-#include <MapiTransport.h>
-#include <MapiControl.h>
-#include <MapiMessage.h>
-#include <MapiSetting.h>
-#include <MsgStorageTypes.h>
-#include <MsgSettingTypes.h>
-
-/* defines*/
-
-/* function definitions*/
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_open_msg_handle(MSG_HANDLE_T *msgHandle)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (msgHandle == NULL)
-               return COMPOSER_RETURN_FAIL;
-
-       if (msg_open_msg_handle(msgHandle) != 0) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] open msg handle error");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_close_msg_handle(MSG_HANDLE_T *msgHandle)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (msgHandle == NULL)
-               return COMPOSER_RETURN_FAIL;
-
-       if (msg_close_msg_handle(msgHandle)) {
-\rMSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] close msg handle error");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_create_new_message(msg_message_t *msgInfo)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (msgInfo == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msgInfo is NULL");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       *msgInfo = msg_new_message();
-
-       if (*msgInfo == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_new_message error !!!");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_release_message(msg_message_t msgInfo)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (msgInfo == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msgInfo is NULL");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       if (msg_release_message(&msgInfo) != MSG_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_release_message error !!!");
-               return COMPOSER_RETURN_SUCCESS;
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_get_message(MSG_HANDLE_T msgHandle, msg_message_t msgInfo, int msgID, MSG_SENDINGOPT_S *sendOpt)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (!msgHandle || !msgInfo) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] Message handle or Message info is NOT exist..");
-               return COMPOSER_RETURN_NULL_POINTER;
-       }
-
-       MSG_ERROR_T err = MSG_SUCCESS;
-
-       err = msg_get_message(msgHandle, (MSG_MESSAGE_ID_T) msgID, msgInfo, sendOpt);
-
-       if (err != MSG_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] msg_get_message error [%d]", err);
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_MSG_TYPE_E msg_ui_comp_core_get_msg_type(msg_message_t msgInfo)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (!msgInfo) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg data is NULL");
-               return COMPOSER_MSG_TYPE_INVALID;
-       }
-
-       int msg_type = msg_get_message_type(msgInfo);
-       COMPOSER_MSG_TYPE_E composer_msg_type = COMPOSER_MSG_TYPE_INVALID;
-
-       switch (msg_type) {
-       case MSG_TYPE_SMS:
-               composer_msg_type = COMPOSER_MSG_TYPE_SMS;
-               break;
-       default:
-               composer_msg_type = COMPOSER_MSG_TYPE_INVALID;
-               break;
-       }
-
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-       return composer_msg_type;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_get_sms_body(msg_message_t msgInfo, char **sms_text)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (!msgInfo) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] Message info is NULL");
-               return COMPOSER_RETURN_NULL_POINTER;
-       }
-
-       *sms_text = (char *)msg_sms_get_message_body(msgInfo);
-
-       if (*sms_text == NULL || strlen(*sms_text) == 0) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] No SMS body text");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_add_recipient(msg_message_t msgInfo, char *number, COMPOSER_RECP_TYPE_E recp_type)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       MSG_RECIPIENT_TYPE_T recipient_type = MSG_RECIPIENTS_TYPE_UNKNOWN;
-
-       if (number == NULL || msgInfo == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] number or msgInfo is NULL");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       switch (recp_type) {
-       case COMPOSER_RECP_TYPE_TO:
-
-               recipient_type = MSG_RECIPIENTS_TYPE_TO;
-               break;
-       case COMPOSER_RECP_TYPE_CC:
-
-               recipient_type = MSG_RECIPIENTS_TYPE_CC;
-               break;
-       case COMPOSER_RECP_TYPE_BCC:
-               recipient_type = MSG_RECIPIENTS_TYPE_CC;
-               break;
-       default:
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid recipient type");
-               return COMPOSER_RETURN_FAIL;
-
-       }
-
-       if (msg_add_address(msgInfo, number, recipient_type) != MSG_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_add_address error !!!");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_set_message_type(msg_message_t msgInfo, COMPOSER_MSG_TYPE_E comp_msg_type)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (msgInfo == NULL)
-               return COMPOSER_RETURN_FAIL;
-
-       MSG_MESSAGE_TYPE_T msgType = MSG_TYPE_INVALID;
-
-       switch (comp_msg_type) {
-       case COMPOSER_MSG_TYPE_SMS:
-               msgType = MSG_TYPE_SMS;
-               break;
-       default:
-               msgType = MSG_TYPE_INVALID;
-               break;
-       }
-
-       if (msg_set_message_type(msgInfo, msgType) != MSG_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_set_message_type error !!!");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_set_sms_body(msg_message_t msgInfo, char *body_text)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (msgInfo == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msgInfo or body_text is NULL !!!");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       if (body_text == NULL) {
-               msg_sms_set_message_body(msgInfo, NULL, 0);
-       } else {
-               if (msg_sms_set_message_body(msgInfo, body_text, strlen(body_text)) != MSG_SUCCESS) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_sms_set_message_body error ");
-                       return COMPOSER_RETURN_FAIL;
-\r}
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_msg_get_config(MSG_HANDLE_T msg_handle, MSG_SETTING_S *opt)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       if (msg_handle == NULL || opt == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_handle or opt is NULL");
-               return COMPOSER_RETURN_HANDLE_NOT_EXIST;
-       }
-
-       if (msg_get_config(msg_handle, opt) != MSG_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_get_config failed !!!");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_reg_sent_status_cb(MSG_HANDLE_T msg_handle, void *cbfunc, void *cbdata)
-{
-       if (msg_handle == NULL || cbfunc == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid arguments");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       if (msg_reg_sent_status_callback(msg_handle, cbfunc, cbdata) != MSG_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_reg_sent_status_callback error !!");
-               return COMPOSER_RETURN_FAIL;
-       }
-
-       return COMPOSER_RETURN_SUCCESS;
-}
-
-COMPOSER_RETURN_TYPE_E msg_ui_comp_core_send_sms(MSG_HANDLE_T msg_handle, MSG_REQUEST_S *req)
-{
-       if (msg_handle == NULL || req == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid arguments");
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "msg_handle : [%x], req [%x]", msg_handle, req);
-               return COMPOSER_RETURN_NULL_POINTER;
-       }
-
-       MSG_ERROR_T err = MSG_SUCCESS;
-
-       err = msg_sms_send_message(msg_handle, 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;
-       }
-}
-
-
index bfecead..440bdbd 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 /* include*/
 #include "msg-ui-composer-data.h"
 #include "msg-ui-composer-external.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 <appsvc.h>
+#include <app_service.h>
 #include <ui-gadget.h>
+#include <aul.h>
+#include <aul_service.h>
 #include <Ecore_X.h>
 
 #include <contacts-svc.h>
 #include <contacts-ug.h>
 
+static void __msg_ui_composer_external_closed(MSG_COMPOSER_VIEW_DATA_S *cd);
 
-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 (cd->loaded_aul || cd->state == COMPOSER_STATE_TYPE_RUNNING) {
-               if(!msg_ui_composer_popup_exist(cd)) {
-                       msg_ui_composer_last_focus_load(cd);
-               }
+       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;
+       }
+
+       msg_common_reset_font_size("entry");
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(ug_get_window(), base);
+               evas_object_show(base);
+               break;
+       case UG_MODE_FRAMEVIEW:
+               break;
+       default:
+               break;
        }
 
        D_LEAVE;
 }
 
-static void __ug_calllog_return_cb(struct ui_gadget *ug, bundle *result, void *priv)
+static void __ug_contacts_checklist_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 *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       D_MSG_RETM_IF(cd->recipient == NULL,"Recipient data is NULL");
+
+       int contact_index;
+       int *num_id_list = NULL;
+       int len = 0;
+       int i = 0;
+
+       const char *number_str = NULL;
+       char *service_val = NULL;
+       const char *current_number = NULL;
+       char *entry_text = NULL;
+
+       bool bMaxCount = false;
+       bool bInvalidNum = false;
+       bool bDup = false;
+
+       service_get_extra_data(result, CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST, &service_val);
+       D_MSG_RETM_IF(!service_val, "bundle_val data is NULL");
+
+       num_id_list = (int *)g_base64_decode(service_val, (gsize *)&len);
+       D_MSG_RETM_IF(!num_id_list,"number_id list is NULL");
+
+       /* get entry text */
+       if (len > 0) {
+               current_number = msg_ui_composer_recipient_entry_text_get(cd->recipient);
+               if (current_number)
+                       entry_text = strdup(current_number);
+       }
+
+       for (i = 0; i < len / sizeof(int); i++) {
+
+               if (msg_ui_composer_recipient_count_get(cd->recipient) >= COMPOSER_RECIPIENT_COUNT_MAX) {
+                       bMaxCount = true;
+                       break;
+               }
+
+               CTSvalue *value = NULL;
+               contact_index = contacts_svc_get_contact_value(CTS_GET_NUMBER_VALUE, num_id_list[i], &value);
+               if (contact_index <= 0 ) {
+                       D_EMSG("Fail to get contact value");
+                       continue;
+               }
+
+               number_str = contacts_svc_value_get_str(value, CTS_NUM_VAL_NUMBER_STR);
+               D_MSG("selected number_id = %d, contact_id = %d, number = %s", num_id_list[i], contact_index, number_str);
+
+               if (number_str) {
+                       if (msg_ui_composer_recipient_duplicate_check(cd->recipient, number_str) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+                               bDup = true;
+                               contacts_svc_value_free(value);
+                               continue;
+                       }
+
+                       if (msg_ui_composer_recipient_vaild_check(number_str) == EINA_FALSE) {
+                               bInvalidNum = true;
+                       } else {
+                               msg_ui_composer_recipient_append(cd->recipient, number_str, contact_index);
+                       }
+
+               } else {
+                       D_EMSG("contact index[%d] is unuseable !!", contact_index);
+               }
+
+               contacts_svc_value_free(value);
+       }
+
+       /* 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);
+       }
+
+       g_free(num_id_list);
+
+       D_LEAVE;
+}
+
+static void __ug_calllog_return_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = NULL;
 
        bool bMaxCount = false;
        bool bInvalidNum = false;
@@ -61,13 +186,14 @@ static void __ug_calllog_return_cb(struct ui_gadget *ug, bundle *result, void *p
        cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
        D_MSG_RETM_IF(cd->recipient == NULL, "Recipient Data is NULL");
 
-       int *list;
-       int len;
-       int i;
-       char *encoded_str;
+       int *list = NULL;
+       int len = 0;
+       int i = 0;
+       char *encoded_str = NULL;
 
-       encoded_str = (char *)bundle_get_val(result, MSG_BUNDLE_KEY_GET_SEL_LIST);
-       list = (int *)g_base64_decode(encoded_str, (gsize *)&len);
+       service_get_extra_data(result, MSG_BUNDLE_KEY_GET_SEL_LIST, &encoded_str);
+       if (encoded_str)
+               list = (int *)g_base64_decode(encoded_str, (gsize *)&len);
 
        for (i = 0; i < len / sizeof(int); i++) {
 
@@ -104,7 +230,7 @@ static void __ug_calllog_return_cb(struct ui_gadget *ug, bundle *result, void *p
        if (bMaxCount) {
                msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_COUNT_MAX);
        } else if (bInvalidNum) {
-               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_INVALID_RECP);
+               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);
        }
@@ -113,43 +239,248 @@ static void __ug_calllog_return_cb(struct ui_gadget *ug, bundle *result, void *p
        D_LEAVE;
 }
 
-static void __ug_layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv)
+static void __ug_myfile_return_cb(ui_gadget_h ug, service_h result, void *priv)
 {
        D_ENTER;
+
        MSG_COMPOSER_VIEW_DATA_S *cd;
-       Evas_Object *base;
 
-       if (!ug || !priv) {
-               D_MSG("");
+       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;
-       base = ug_get_layout(ug);
 
-       if (!base) {
-               ug_destroy(ug);
-               D_MSG("");
+       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;
        }
 
-       switch (mode) {
-       case UG_MODE_FULLVIEW:
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
 
-               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-               elm_win_resize_object_add(ug_get_window(), base);
-               evas_object_show(base);
-               break;
-       case UG_MODE_FRAMEVIEW:
-               break;
-       default:
-               break;
+       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 *memo_image = 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_IMAGE, &str) == SERVICE_ERROR_NONE) {
+               if (str)
+                       img_count = atoi(str);
+       }
+
+       D_MSG("[MEMO] attach image count : %d", img_count);
+
+       /*if image memo then attach image */
+       if (img_count > 0) {
+               for (i = 1; i <= img_count; i++) {
+                       snprintf(buf, sizeof(buf)-1, "image%d", i);
+                       if (service_get_extra_data(result, buf, &memo_image) == SERVICE_ERROR_NONE) {
+                               if (memo_image)
+                                       cd->attachlist = eina_list_append(cd->attachlist, g_strdup(memo_image));
+                       }
+               }
+       }
+
+       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 *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_DELETE_MSG, &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;
+       }
+
+       if (service_get_extra_data(result, MSG_BUNDLE_KEY_RESEND, &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;
+       }
+
+       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(struct ui_gadget *ug, void *priv)
+static void __ug_closed_cb(ui_gadget_h ug, void *priv)
 {
        D_ENTER;
 
@@ -160,6 +491,9 @@ static void __ug_closed_cb(struct ui_gadget *ug, void *priv)
                cd->loaded_ug = NULL;
        }
 
+       msg_common_apply_font_size("entry", cd->content_layout);
+       msg_ui_composer_apply_font_size(cd);
+
        __msg_ui_composer_external_closed(cd);
 
        D_LEAVE;
@@ -168,18 +502,20 @@ static void __ug_closed_cb(struct ui_gadget *ug, void *priv)
 /*
 * Create External UG
 */
-struct ui_gadget * msg_ui_composer_launch_contact_detail_ug(MSG_COMPOSER_VIEW_DATA_S *cd, int ct_id)
+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");
 
-       struct ui_gadget *ug;
+       ui_gadget_h ug;
        struct ug_cbs cbs = { 0, };
 
-       bundle *kb = bundle_create();
+       service_h svc_handle = NULL;
 
-       if (!kb)
+       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, };
@@ -187,47 +523,49 @@ struct ui_gadget * msg_ui_composer_launch_contact_detail_ug(MSG_COMPOSER_VIEW_DA
        snprintf(contactId, sizeof(contactId), "%d", ct_id);
        snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_DETAIL);
 
-       bundle_add(kb, CT_UG_BUNDLE_TYPE, buf);
-       bundle_add(kb, CT_UG_BUNDLE_ID, contactId);
+       service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+       service_add_extra_data(svc_handle, CT_UG_BUNDLE_ID, contactId);
 
        cbs.layout_cb = __ug_layout_cb;
        cbs.result_cb = NULL;
        cbs.destroy_cb = __ug_closed_cb;
        cbs.priv = cd;
 
-       ug = ug_create(cd->ug, UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, kb, &cbs);
+       ug = ug_create(cd->ug, UG_CONTACTS_DETAILS, UG_MODE_FULLVIEW, svc_handle, &cbs);
        cd->loaded_ug = ug;
-       bundle_free(kb);
+       service_destroy(svc_handle);
 
        D_LEAVE;
        return ug;
 }
 
-struct ui_gadget * 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_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");
-       struct ui_gadget *ug;
+
+       ui_gadget_h ug;
        struct ug_cbs cbs = { 0, };
 
-       bundle *kb = bundle_create();
+       service_h svc_handle = NULL;
 
-       if (!kb)
+       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 == CT_UG_REQUEST_UPDATE_WITH_EMAIL) {
-               snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_UPDATE_WITH_EMAIL);
-               bundle_add(kb, CT_UG_BUNDLE_TYPE, buf);
-               bundle_add(kb, CT_UG_BUNDLE_EMAIL, str);
+               snprintf(buf, sizeof(buf), "%d", type);
+               service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+               service_add_extra_data(svc_handle, CT_UG_BUNDLE_EMAIL, str);
        } else if (type == CT_UG_REQUEST_UPDATE_WITH_NUM) {
-               snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_UPDATE_WITH_NUM);
-               bundle_add(kb, CT_UG_BUNDLE_TYPE, buf);
-               bundle_add(kb, CT_UG_BUNDLE_NUM, str);
-       }
-       else {
-               bundle_free(kb);
+               snprintf(buf, sizeof(buf), "%d", type);
+               service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+               service_add_extra_data(svc_handle, CT_UG_BUNDLE_NUM, str);
+       } else {
+               service_destroy(svc_handle);
                return NULL;
        }
 
@@ -236,175 +574,510 @@ struct ui_gadget * msg_ui_composer_launch_contact_list_ug(MSG_COMPOSER_VIEW_DATA
        cbs.destroy_cb = __ug_closed_cb;
        cbs.priv = cd;
 
-       ug = ug_create(cd->ug, UG_CONTACTS_LIST, UG_MODE_FULLVIEW, kb, &cbs);
-       bundle_free(kb);
+       ug = ug_create(cd->ug, UG_CONTACTS_LIST, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       service_destroy(svc_handle);
        cd->loaded_ug = ug;
 
        D_LEAVE;
        return ug;
 }
 
-struct ui_gadget *ug_calllog_create(void *data)
+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");
 
-       struct ui_gadget *ug;
-       struct ug_cbs cbs = { 0, };
-
-       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
-
-       bundle *kb = bundle_create();
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
 
        cbs.layout_cb = __ug_layout_cb;
-       cbs.result_cb = __ug_calllog_return_cb;
+       cbs.result_cb = NULL;
        cbs.destroy_cb = __ug_closed_cb;
-       cbs.priv = data;
-       ug = ug_create(cd->ug, TXT_UG_NAME_LOG, UG_MODE_FULLVIEW, kb, &cbs);
+       cbs.priv = cd;
 
-       bundle_free(kb);
+       ug = ug_create(cd->ug, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       cd->loaded_ug = ug;
 
+       D_LEAVE;
        return ug;
 }
 
-static void __ug_contacts_checklist_result_cb(struct ui_gadget *ug, bundle *result, void *priv)
+ui_gadget_h msg_ui_composer_launch_email_create(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle)
 {
        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");
+       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer 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");
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
 
-       int contact_index;
-       int *num_id_list = NULL;
-       int len, i;
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = NULL;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = cd;
 
-       const char *number_str;
-       const char *bundle_val;
+       ug = ug_create(cd->ug, EMAIL_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       cd->loaded_ug = ug;
 
-       bool bMaxCount = false;
-       bool bInvalidNum = false;
-       bool bDup = false;
+       D_LEAVE;
+       return ug;
+}
 
-       bundle_val = bundle_get_val(result, CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST);
-       D_MSG_RETM_IF(!bundle_val,"bundle_val data is NULL");
+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");
 
-       num_id_list = (int *)g_base64_decode(bundle_val, (gsize *)&len);
-       D_MSG_RETM_IF(!num_id_list,"number_id list is NULL");
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
 
-       for (i = 0; i < len / sizeof(int); i++) {
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_viewer_result_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = cd;
 
-               if (msg_ui_composer_recipient_count_get(cd->recipient) >= COMPOSER_RECIPIENT_COUNT_MAX) {
-                       bMaxCount = true;
-                       break;
-               }
+       ug = ug_create(cd->ug, TXT_UG_NAME_MSG_VIEWER, UG_MODE_FULLVIEW, svc_handle, &cbs);
+       cd->loaded_ug = ug;
 
-               CTSvalue *value = NULL;
-               contact_index = contacts_svc_get_contact_value(CTS_GET_NUMBER_VALUE, num_id_list[i], &value);
-               if (contact_index <= 0 ) {
-                       D_EMSG("Fail to get contact value");
-                       continue;
-               }
+       D_LEAVE;
+       return ug;
+}
 
-               number_str = contacts_svc_value_get_str(value, CTS_NUM_VAL_NUMBER_STR);
-               D_MSG("selected number_id = %d, contact_id = %d, number = %s", num_id_list[i], contact_index, number_str);
+ui_gadget_h ug_contact_checklist_create(void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
 
-               if (number_str) {
-                       if (msg_ui_composer_recipient_duplicate_check(cd->recipient, number_str) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
-                               bDup = true;
-                               contacts_svc_value_free(value);
-                               continue;
-                       }
+       ui_gadget_h ug;
+       struct ug_cbs cbs = {0,};
+       service_h svc_handle = NULL;
 
-                       if (msg_ui_composer_recipient_vaild_check(number_str) == EINA_FALSE) {
-                               bInvalidNum = true;
-                       }
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
+       }
 
-                       msg_ui_composer_recipient_append(cd->recipient, number_str, contact_index);
+       char contact_ug[DEF_BUF_LEN] = { 0, };
 
-               } else {
-                       D_EMSG("contact index[%d] is unuseable !!", contact_index);
-               }
+       snprintf(contact_ug, sizeof(contact_ug)-1, "%d", CT_UG_REQUEST_CHECK_FOR_NUMBER);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, contact_ug);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_REQUEST_TYPE, MSG_BUNDLE_VALUE_CONTACT_CHECK_LIST);
 
-               contacts_svc_value_free(value);
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_contacts_checklist_result_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = data;
+
+       ug = ug_create(cd->ug, TXT_UG_NAME_CONTACT, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       D_LEAVE;
+       return ug;
+}
+
+ui_gadget_h ug_calllog_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;
+
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return NULL;
        }
 
-       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_common_tickernoti(cd, COMPOSER_TICKERNOTI_INVALID_RECP);
-       } else if (bDup) {
-               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_DUP_RECP);
+       cbs.layout_cb = __ug_layout_cb;
+       cbs.result_cb = __ug_calllog_return_cb;
+       cbs.destroy_cb = __ug_closed_cb;
+       cbs.priv = data;
+       ug = ug_create(cd->ug, TXT_UG_NAME_LOG, UG_MODE_FULLVIEW, svc_handle, &cbs);
+
+       service_destroy(svc_handle);
+
+       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;
        }
 
-       g_free(num_id_list);
+       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;
 }
 
-struct ui_gadget *ug_contact_checklist_create(void *data)
+ui_gadget_h ug_namecard_create(void *data)
 {
        D_ENTER;
 
-       struct ui_gadget *ug;
-       struct ug_cbs cbs = {0,};
+       ui_gadget_h ug;
+       struct ug_cbs cbs = { 0, };
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
 
-       bundle *b;
+       service_h svc_handle = NULL;
 
-       b = bundle_create();
-       if (!b)
+       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", CT_UG_REQUEST_SELECT_CONTACT);
 
-       snprintf(contact_ug, sizeof(contact_ug)-1, "%d", CT_UG_REQUEST_CHECK_FOR_NUMBER);
-       bundle_add(b, MSG_BUNDLE_KEY_TYPE, contact_ug);
-       bundle_add(b, MSG_BUNDLE_KEY_REQUEST_TYPE, MSG_BUNDLE_VALUE_CONTACT_CHECK_LIST);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, contact_ug);
 
        cbs.layout_cb = __ug_layout_cb;
-       cbs.result_cb = __ug_contacts_checklist_result_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_CONTACT, 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;
 
-       ug = ug_create(cd->ug, TXT_UG_NAME_CONTACT, UG_MODE_FULLVIEW, b, &cbs);
+       ui_gadget_h ug;
+       struct ug_cbs cbs;
+       service_h svc_handle = NULL;
 
-       bundle_free(b);
+       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;
 }
 
-struct ui_gadget *msg_ui_composer_launch_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd, bundle *b)
+ui_gadget_h ug_calendar_create(void *data)
 {
        D_ENTER;
-       D_MSG_RETVM_IF(cd == NULL, NULL, "Composer data is NULL");
 
-       struct ui_gadget *ug;
+       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.result_cb = __ug_calendar_result_cb;
        cbs.destroy_cb = __ug_closed_cb;
-       cbs.priv = cd;
+       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);
 
-       ug = ug_create(cd->ug, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, b, &cbs);
-       cd->loaded_ug = ug;
        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;
+       }
+
+       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_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_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;
+}
+
+static void __appsvc_record_voice_result_cb(bundle *b, int reserved, appsvc_result_val result, void *data)
+{
+       D_ENTER;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+
+       if (result == APPSVC_RES_OK) {
+               const char *result_filename = appsvc_get_data(b, APPSVC_DATA_SELECTED);
+               if (result_filename) {
+                       D_MSG("result file name : %s", result_filename);
+                       cd->attachlist = eina_list_append(cd->attachlist, g_strdup(result_filename));
+               } else {
+                       D_MSG("No result");
+               }
+       }
+       __msg_ui_composer_external_closed(cd);
+       D_LEAVE;
+}
+
+int appsvc_record_voice(void *data)
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       int ret;
+       bundle *b;
+
+       b = bundle_create();
+       appsvc_set_operation(b, APPSVC_OPERATION_CREATE_CONTENT);
+       appsvc_set_mime(b, "audio/amr");        /*"audio/mp4" for high quality*/
+       appsvc_add_data(b, "SIZE", MSG_BUNDLE_VALUE_VR_LIMIT_SIZE);     /* unit:KB (if max size is not set, no limit.)*/
+       ret = appsvc_run_service(b, 0, __appsvc_record_voice_result_cb, cd);
+       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;
+}
+
+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;
-       struct ui_gadget *external_ug = NULL;
+       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_LOG:
                external_ug = ug_calllog_create(cd);
                break;
@@ -412,6 +1085,22 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_external_ug_call(MSG_COMPOSER_VIEW_DATA_S
        case COMPOSER_EXT_TYPE_CONTACTLIST:
                external_ug = ug_contact_checklist_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;
+
        default:
                D_MSG("ERROR ext type = %d!!!!!!!!!!!!", ext_type);
                ret = COMPOSER_RETURN_FAIL;
@@ -427,18 +1116,66 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_external_ug_call(MSG_COMPOSER_VIEW_DATA_S
        return ret;
 }
 
+COMPOSER_RETURN_TYPE_E msg_ui_composer_external_aul_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_VOICEREC:
+               ret = appsvc_record_voice(cd);
+               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)
+               cd->loaded_aul = TRUE;
+
+       D_MSG("%d", cd->loaded_aul);
+       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);
+       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_LOG:
        case COMPOSER_EXT_TYPE_CONTACTLIST:
+       case COMPOSER_EXT_TYPE_NAMECARD:
+       case COMPOSER_EXT_TYPE_CALENDAR:
+       case COMPOSER_EXT_TYPE_MEMO:
+       case COMPOSER_EXT_TYPE_MSGVIEWER:
                ret = msg_ui_composer_external_ug_call(cd, ext_type, reserved);
                break;
+
+       case COMPOSER_EXT_TYPE_VOICEREC:
+       case COMPOSER_EXT_TYPE_CAMERA:
+       case COMPOSER_EXT_TYPE_CAMCORDER:
+       case COMPOSER_EXT_TYPE_COMMON:
+               ret = msg_ui_composer_external_aul_call(cd, ext_type, reserved);
+               break;
+
        default:
                D_MSG("ERROR ext type = %d!!!!!!!!!!!!", ext_type);
                ret = COMPOSER_RETURN_FAIL;
@@ -448,4 +1185,3 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_external_call(MSG_COMPOSER_VIEW_DATA_S *c
        D_LEAVE;
        return ret;
 }
-
index 1e840c5..9a269e6 100755 (executable)
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
+
 #include "msg-ui-composer-data.h"
 #include "msg-ui-composer-main.h"
-#include "msg-ui-composer-core.h"
 #include "msg-ui-composer-util.h"
 #include "msg-ui-composer-common.h"
 #include "msg-ui-composer-recipient.h"
 #define UG_MODULE_API  __attribute__ ((visibility("default")))
 #endif
 
-static void __base_layout_delete_cb(void *data, Evas * e, Evas_Object *obj, void *event_info)
+static void __base_layout_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
 
-       MSG_COMPOSER_VIEW_DATA_S *pcomp_data = (MSG_COMPOSER_VIEW_DATA_S *)data;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
 
-       if (!pcomp_data)
+       if (!cd)
                return;
 
-       msg_ui_composer_destroy(pcomp_data);
+       msg_ui_composer_destroy(cd);
 
        D_LEAVE;
 }
 
-static void *__msg_ui_composer_on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv)
+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 *pcomp_data;
+       MSG_COMPOSER_VIEW_DATA_S *cd;
+       int win_w = 0;
+       int win_h = 0;
 
        if (ug == NULL || priv == NULL) {
                D_EMSG("[ASSERT] ug = %p, priv = %p", ug, priv);
@@ -52,72 +54,87 @@ static void *__msg_ui_composer_on_create(struct ui_gadget *ug, enum ug_mode mode
 
        bindtextdomain("message", LOCALEDIR);
 
-       pcomp_data = (MSG_COMPOSER_VIEW_DATA_S *)priv;
-       pcomp_data->ug = ug;
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       cd->ug = ug;
 
-       pcomp_data->main_window = ug_get_window();
+       cd->main_window = ug_get_window();
 
-       if (pcomp_data->main_window == NULL) {
+       if (cd->main_window == NULL) {
                D_EMSG("[ASSERT] main window is NULL");
                return NULL;
        }
 
-       pcomp_data->base = msg_ui_composer_layout_create(pcomp_data->main_window, true);
-       if (pcomp_data->base == 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->base = msg_ui_composer_layout_create(cd->main_window, true);
+       if (cd->base == NULL) {
                return NULL;
        }
 
-       pcomp_data->bg = msg_ui_composer_bg_create(pcomp_data->base);
-       elm_object_part_content_set(pcomp_data->base, "elm.swallow.bg", pcomp_data->bg);
-       elm_object_style_set(pcomp_data->bg, "edit_mode");
+       char *from = NULL;
+       char *thread_id = NULL;
+       char *msg_id = NULL;
 
-       if (g_strcmp0(bundle_get_val(data, MSG_BUNDLE_KEY_FROM), MSG_BUNDLE_VALUE_INTERNAL) == 0) {
-               pcomp_data->isMsgInternal = true;
-       } else {
-               pcomp_data->isMsgInternal = false;
-       }
+       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");
+
+       service_get_extra_data(data, MSG_BUNDLE_KEY_FROM, &from);
 
-       if (bundle_get_val(data, MSG_BUNDLE_KEY_THREAD_ID) || bundle_get_val(data, MSG_BUNDLE_KEY_MSG_ID)) {
-               pcomp_data->msg_ug_mode = MSG_UG_MODE_BUBBLE_COMPOSER;
+       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);
+       if (thread_id || msg_id) {
+               cd->msg_ug_mode = MSG_UG_MODE_BUBBLE_COMPOSER;
        } else {
-               if (pcomp_data->isMsgInternal == true) {
-                       pcomp_data->msg_ug_mode = MSG_UG_MODE_FULL_COMPOSER;
+               if (cd->isMsgInternal == true) {
+                       cd->msg_ug_mode = MSG_UG_MODE_FULL_COMPOSER;
                } else {
-                       pcomp_data->msg_ug_mode = MSG_UG_MODE_ONLY_COMPOSER;
+                       cd->msg_ug_mode = MSG_UG_MODE_ONLY_COMPOSER;
                }
        }
 
-       D_MSG("UG MODE %d[Internal = %d]", pcomp_data->msg_ug_mode, pcomp_data->isMsgInternal);
+       D_MSG("UG MODE %d[Internal = %d]", cd->msg_ug_mode, cd->isMsgInternal);
 
-       pcomp_data->isFullview = true;
+       cd->isFullview = true;
 
-       evas_object_event_callback_add(pcomp_data->base, EVAS_CALLBACK_DEL, __base_layout_delete_cb, pcomp_data);
+       evas_object_event_callback_add(cd->base, EVAS_CALLBACK_DEL, __base_layout_delete_cb, cd);
 
-       if (msg_ui_composer_init(pcomp_data) != COMPOSER_RETURN_SUCCESS) {
+       if (msg_ui_composer_init(cd) != COMPOSER_RETURN_SUCCESS) {
                D_EMSG("msg_ui_composer_init error");
                return NULL;
        }
 
-       if (msg_ui_composer_create(pcomp_data) != COMPOSER_RETURN_SUCCESS) {
+       if (msg_ui_composer_create(cd) != COMPOSER_RETURN_SUCCESS) {
                D_EMSG("creating main layout failed");
                return NULL;
        }
 
-       return pcomp_data->base;
+       return cd->base;
 }
 
-static void __msg_ui_composer_on_start(struct ui_gadget *ug, bundle *data, void *priv)
+static void __msg_ui_composer_on_start(ui_gadget_h ug, service_h data, void *priv)
 {
        D_ENTER;
 
-       MSG_COMPOSER_VIEW_DATA_S *pcomp_data = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)priv;
+
+       msg_ui_composer_start(cd, data);
 
-       msg_ui_composer_start(pcomp_data, data);
+       msg_common_apply_font_size("entry", cd->content_layout);
+       msg_ui_composer_apply_font_size(cd);
 
        D_LEAVE;
 }
 
-static void __msg_ui_composer_on_pause(struct ui_gadget *ug, bundle *data, void *priv)
+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;
@@ -132,13 +149,18 @@ static void __msg_ui_composer_on_pause(struct ui_gadget *ug, bundle *data, void
        D_LEAVE;
 }
 
-static void __msg_ui_composer_on_resume(struct ui_gadget *ug, bundle *data, void *priv)
+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("entry", cd->content_layout);
+
+       msg_ui_composer_apply_font_size(cd);
+
        cd->state = COMPOSER_STATE_TYPE_RUNNING;
        cd->loaded_aul = FALSE;
 
@@ -151,7 +173,7 @@ static void __msg_ui_composer_on_resume(struct ui_gadget *ug, bundle *data, void
        D_LEAVE;
 }
 
-static void __msg_ui_composer_on_destroy(struct ui_gadget *ug, bundle *data, void *priv)
+static void __msg_ui_composer_on_destroy(ui_gadget_h ug, service_h data, void *priv)
 {
        D_ENTER;
 
@@ -174,30 +196,19 @@ static void __msg_ui_composer_on_destroy(struct ui_gadget *ug, bundle *data, voi
        D_LEAVE;
 }
 
-static void __msg_ui_composer_on_message(struct ui_gadget *ug, bundle *msg, bundle *data, void *priv)
+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 *pcomp_data = (MSG_COMPOSER_VIEW_DATA_S *)priv;
-       if (msg) {
-               if (bundle_get_val(msg, MSG_BUNDLE_KEY_THREAD_ID) || bundle_get_val(msg, MSG_BUNDLE_KEY_MSG_ID)) {
-                       if (pcomp_data->msg_bundle) {
-                               bundle_free(pcomp_data->msg_bundle);
-                       }
-
-                       pcomp_data->msg_bundle = bundle_dup(msg);
-                       msg_ui_composer_reset_request(pcomp_data);
-
-               } else {
-                       msg_ui_composer_reset(pcomp_data, msg);
-               }
-       }
+       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(struct ui_gadget *ug, enum ug_event event, bundle *data, void *priv)
+static void __msg_ui_composer_on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv)
 {
        D_ENTER;
        switch (event) {
@@ -207,6 +218,18 @@ static void __msg_ui_composer_on_event(struct ui_gadget *ug, enum ug_event event
                break;
        case UG_EVENT_LANG_CHANGE:
                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;
        }
@@ -219,11 +242,11 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
                return COMPOSER_RETURN_FAIL;
        }
 
-       MSG_COMPOSER_VIEW_DATA_S *pcomp_data = NULL;
-       pcomp_data = (MSG_COMPOSER_VIEW_DATA_S *)calloc(1, sizeof(MSG_COMPOSER_VIEW_DATA_S));
+       MSG_COMPOSER_VIEW_DATA_S *cd = NULL;
+       cd = (MSG_COMPOSER_VIEW_DATA_S *)calloc(1, sizeof(MSG_COMPOSER_VIEW_DATA_S));
 
-       if (!pcomp_data) {
-               D_EMSG("[ERROR] pcomp_data calloc failed");
+       if (!cd) {
+               D_EMSG("[ERROR] cd calloc failed");
                return COMPOSER_RETURN_FAIL;
        }
 
@@ -235,7 +258,7 @@ UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
        ops->message = __msg_ui_composer_on_message;
        ops->event = __msg_ui_composer_on_event;
        ops->key_event = NULL;
-       ops->priv = (void *)pcomp_data;
+       ops->priv = (void *)cd;
        ops->opt = UG_OPT_INDICATOR_PORTRAIT_ONLY;
 
        return MSG_UI_RET_SUCCESS;
@@ -248,10 +271,10 @@ UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
                return;
        }
 
-       MSG_COMPOSER_VIEW_DATA_S *pcomp_data = (MSG_COMPOSER_VIEW_DATA_S *)ops->priv;
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)ops->priv;
 
-       if (pcomp_data) {
-               free(pcomp_data);
+       if (cd) {
+               free(cd);
                ops->priv = NULL;
        }
 
index c58160d..45f2ab1 100755 (executable)
  * limitations under the License.
  */
 
+
 /* includes*/
-#include "msg-ui-composer-core.h"
+#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 <MapiMessage.h>
-#include <MapiTransport.h>
 #include <glib-object.h>
 #include <glib.h>
-#include <MsgSettingTypes.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_PAGE_DEFAULT_DURATION 5000 //(msec)
+#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 */
@@ -46,7 +68,7 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_message_init()
        if (msg_data != NULL)
                free(msg_data);
 
-       msg_data = (MSG_COMP_MSG_DATA_S *) calloc(1, sizeof(MSG_COMP_MSG_DATA_S));
+       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");
@@ -84,7 +106,7 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_message_destroy()
        return COMPOSER_RETURN_SUCCESS;
 }
 
-COMPOSER_RETURN_TYPE_E msg_ui_composer_add_address(char *number)
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_add_address(char *number)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -99,10 +121,18 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_add_address(char *number)
        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");
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_data is NULL. need to init");
                return COMPOSER_RETURN_NULL_POINTER;
        }
 
@@ -124,6 +154,173 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_sms_body(char *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_media(const char *file_path, COMPOSER_MEDIA_TYPE_E media_type, int nPage, int duration)
+{
+       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));
+               mms_data->pagelist[nPage].page_duration = duration;
+               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;
+}
 
 /*****************************************************
  *
@@ -142,13 +339,25 @@ static COMPOSER_RETURN_TYPE_E __msg_ui_composer_set_recipient()
 
        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 (msg_ui_comp_core_add_recipient(msg_data->msgInfo, address, COMPOSER_RECP_TYPE_TO) != COMPOSER_RETURN_SUCCESS) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] ADD RECIPIENT error");
-                       return COMPOSER_RETURN_FAIL;
+               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;
@@ -159,13 +368,14 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_create_new_message()
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        if (msg_data->msgInfo != NULL) {
-               msg_ui_comp_core_release_message(msg_data->msgInfo);
+               msg_release_struct(&msg_data->msgInfo);
                msg_data->msgInfo = NULL;
        }
 
-       if (msg_ui_comp_core_create_new_message(&msg_data->msgInfo)
-           != COMPOSER_RETURN_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_ui_comp_core_create_new_message is 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;
        }
 
@@ -181,8 +391,7 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_release_message()
                return COMPOSER_RETURN_FAIL;
        }
 
-       if (msg_ui_comp_core_release_message(msg_data->msgInfo)
-           != COMPOSER_RETURN_SUCCESS) {
+       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;
        }
@@ -190,73 +399,267 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_release_message()
        return COMPOSER_RETURN_SUCCESS;
 }
 
-COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_config(MSG_HANDLE_T msg_handle, MSG_SETTING_S *opt, int type)
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_make_sms_message(msg_handle_t msg_handle)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       if (msg_handle == NULL || opt == NULL) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] message handle or option data is NULL");
-               return COMPOSER_RETURN_NULL_POINTER;
+       if (msg_data == NULL || msg_data->msgInfo == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msgInfo is NULL !!");
+               return COMPOSER_RETURN_FAIL;
        }
 
-       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+       int err = MSG_SUCCESS;
+       /* 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);
 
-       switch (type) {
-       case COMPOSER_CONFIG_TYPE_GENERAL:
-               memset(opt, 0x00, sizeof(MSG_OPTION_TYPE_T) + sizeof(MSG_GENERAL_OPT_S));
-               opt->type = MSG_GENERAL_OPT;
-               break;
-       case COMPOSER_CONFIG_TYPE_SMS_SEND:
-               memset(opt, 0x00, sizeof(MSG_OPTION_TYPE_T) + sizeof(MSG_SMS_SENDOPT_S));
-               opt->type = MSG_SMS_SENDOPT;
-               break;
-       case COMPOSER_CONFIG_TYPE_SMSC_LIST:
-               memset(opt, 0x00, sizeof(MSG_OPTION_TYPE_T) + sizeof(MSG_SMSC_LIST_S));
-               opt->type = MSG_SMSC_LIST;
-               break;
-       case COMPOSER_CONFIG_TYPE_PUSHMSG:
-               memset(opt, 0x00, sizeof(MSG_OPTION_TYPE_T) + sizeof(MSG_PUSHMSG_OPT_S));
-               opt->type = MSG_PUSHMSG_OPT;
-               break;
-       case COMPOSER_CONFIG_TYPE_CBMSG:
-               memset(opt, 0x00, sizeof(MSG_OPTION_TYPE_T) + sizeof(MSG_CBMSG_OPT_S));
-               opt->type = MSG_CBMSG_OPT;
-               break;
-       default:
-               ret = COMPOSER_RETURN_FAIL;
-               break;
+       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;
        }
 
-       if (msg_ui_comp_core_msg_get_config(msg_handle, opt)
-           != COMPOSER_RETURN_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] getting message option failed.");
-               ret = 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 ret;
+       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 (MSG_COMPOSER_PAGE_DEFAULT_DURATION < ui_mms_data->pagelist[i].page_duration)
+                       page_duration = ui_mms_data->pagelist[i].page_duration;
+               else
+                       page_duration = MSG_COMPOSER_PAGE_DEFAULT_DURATION;
+
+               /* 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].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_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_sms_message(MSG_HANDLE_T msg_handle)
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_make_mms_message(msg_handle_t msg_handle)
 {
        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] msgInfo is NULL !!");
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] msg_data is NULL !! ");
                return COMPOSER_RETURN_FAIL;
        }
-       /* set message type to SMS */
-       if (msg_ui_comp_core_set_message_type(msg_data->msgInfo, COMPOSER_MSG_TYPE_SMS)) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT]msg_ui_comp_core_set_message_type error !!");
+
+       ui_mms_data = msg_data->mms_data;
+
+       /* 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;
        }
-       /* set message body text */
-       if (msg_ui_comp_core_set_sms_body(msg_data->msgInfo, msg_data->sms_data.body_text)) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT]msg_ui_comp_core_set_sms_body error !!");
+       /* 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(msg_data) != COMPOSER_RETURN_SUCCESS) {
+       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;
        }
@@ -264,7 +667,7 @@ static COMPOSER_RETURN_TYPE_E __msg_ui_composer_make_sms_message(MSG_HANDLE_T ms
        return COMPOSER_RETURN_SUCCESS;
 }
 
-static COMPOSER_RETURN_TYPE_E __msg_ui_composer_send(MSG_HANDLE_T msg_handle)
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_send(msg_handle_t msg_handle)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -273,25 +676,71 @@ static COMPOSER_RETURN_TYPE_E __msg_ui_composer_send(MSG_HANDLE_T msg_handle)
                return COMPOSER_RETURN_FAIL;
        }
 
-       COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
-       MSG_REQUEST_S req = { 0 };
+       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);
 
-       req.msg = msg_data->msgInfo;
-       req.sendOpt.bSetting = 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(req.msg)) {
+       if (msg_is_sms(msg_type)) {
                MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] try to send sms");
-               ret = msg_ui_comp_core_send_sms(msg_handle, &req);
+               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_ui_comp_core_release_message(msg_data->msgInfo);
+               msg_release_struct(&req);
                return COMPOSER_RETURN_FAIL;
        }
 
-       return ret;
+       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)
+           != 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)
+COMPOSER_RETURN_TYPE_E msg_ui_composer_message_make_and_send(msg_handle_t msg_handle, msg_thread_id_t *tid)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -302,8 +751,8 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_message_make_and_send(MSG_HANDLE_T msg_ha
 
        COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
 
-       /* 1. create a new message (create msg_message_t) */
-       if(msg_ui_composer_create_new_message() != 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;
        }
 
@@ -311,23 +760,105 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_message_make_and_send(MSG_HANDLE_T msg_ha
        if (msg_data->msg_type == COMPOSER_MSG_TYPE_SMS) {
                if (__msg_ui_composer_make_sms_message(msg_handle) != 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) != 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) {
+       if (ret != COMPOSER_RETURN_FAIL) {
                ret = __msg_ui_composer_send(msg_handle);
+
+               if (ret == COMPOSER_RETURN_SUCCESS) {
+                       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_save_message(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 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) != 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) != 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);
+
+               ret = msg_add_message(msg_handle, msg_data->msgInfo, sendOpt);
+
+               msg_release_struct(&sendOpt);
+       }
+
        /*4. release message */
-       msg_ui_comp_core_release_message(msg_data->msgInfo);
+       msg_release_struct(&msg_data->msgInfo);
        msg_data->msgInfo = NULL;
 
        return ret;
 }
 
-COMPOSER_RETURN_TYPE_E msg_ui_composer_message_load_message(MSG_HANDLE_T msg_handle, int msgID)
+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);
 
@@ -336,45 +867,208 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_message_load_message(MSG_HANDLE_T msg_han
                return COMPOSER_RETURN_NULL_POINTER;
        }
 
-       msg_message_t load_msg = NULL;
-
-       MSG_SENDINGOPT_S sendOpt = { 0, };
+       msg_struct_t load_msg = NULL;
+       msg_struct_t sendOpt = NULL;
+       msg_struct_t mmsBody = NULL;
 
        /* create new message */
-       if (msg_ui_comp_core_create_new_message(&load_msg)
-           != COMPOSER_RETURN_SUCCESS) {
+       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_ui_comp_core_get_message(msg_handle, load_msg, msgID, &sendOpt)
-           != COMPOSER_RETURN_SUCCESS) {
+       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 */
 
        /* load message type */
-       COMPOSER_MSG_TYPE_E msg_type = msg_ui_comp_core_get_msg_type(load_msg);
+       int msgType;
+       msg_get_int_value(load_msg, MSG_MESSAGE_TYPE_INT, &msgType);
 
-       msg_data->msg_type = msg_type;
+       if (msgType == MSG_TYPE_SMS) {
+               char *body_text = NULL;
+               int body_size = 0;
 
-       if (msg_type == COMPOSER_MSG_TYPE_SMS) {
+               msg_data->msg_type = COMPOSER_MSG_TYPE_SMS;
 
-               char *body_text = NULL;
-               msg_ui_comp_core_get_sms_body(load_msg, &body_text);
+               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);
+
+               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 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;
+                               }
+
+                               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_ui_comp_core_release_message(load_msg);
+               msg_release_struct(&load_msg);
+               msg_release_struct(&sendOpt);
                return COMPOSER_RETURN_INVALID_MSG_TYPE;
        }
 
-       msg_ui_comp_core_release_message(load_msg);
+       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;
 }
@@ -383,11 +1077,43 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_message_set_loaded_data(void *composer_da
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
+       int i = 0;
+
        if (msg_data->msg_type == COMPOSER_MSG_TYPE_SMS) {
                msg_ui_composer_body_set_loaded_text(composer_data, 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(composer_data, msg_data->mms_data.subject);
+       }
+
+       /* 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(composer_data, filepath, filetype);
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] MMS PAGE COUNT [%d]", msg_data->mms_data.page_count);
+       for (i = 0; i < msg_data->mms_data.page_count; i++) {
+               if (msg_data->mms_data.pagelist[i].isImage) {
+                       msg_ui_composer_body_set_loaded_media(composer_data, msg_data->mms_data.pagelist[i].image_file_path, COMPOSER_MEDIA_TYPE_IMAGE, i);
+               } else if (msg_data->mms_data.pagelist[i].isVideo) {
+                       msg_ui_composer_body_set_loaded_media(composer_data, msg_data->mms_data.pagelist[i].image_file_path, COMPOSER_MEDIA_TYPE_VIDEO, i);
+               }
+
+               if (msg_data->mms_data.pagelist[i].isSound) {
+                       msg_ui_composer_body_set_loaded_media(composer_data, msg_data->mms_data.pagelist[i].sound_file_path, COMPOSER_MEDIA_TYPE_AUDIO, i);
+               }
+
+               if (msg_data->mms_data.pagelist[i].isText) {
+                       msg_ui_composer_body_set_loaded_text(composer_data, msg_data->mms_data.pagelist[i].body_text, i);
+               }
+       }
+
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
        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..3cb1ce6
--- /dev/null
@@ -0,0 +1,551 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "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,};
+       snprintf(buf, sizeof(buf), _MSGSTR("IDS_MSGC_BODY_PD_ATTACHMENTS"), 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);
+                       edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", "");/* remove character count */
+                       if(cd->ly_body) {
+                               Evas_Object* entry = msg_ui_composer_last_focused_entry_get(cd);
+                               if (entry) {
+                                       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 && r->mbe) {
+                                                       if(entry == r->mbe) {
+                                                               entry = elm_multibuttonentry_entry_get(r->mbe);
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               } else {
+                       elm_object_disabled_set(cd->send_button, EINA_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_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;
+
+       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);
+
+       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;
+       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_icon_file_set(thumb_icon, icon_path, NULL);
+       } else {
+               D_EMSG("icon_path is NULL");
+               elm_icon_file_set(thumb_icon, MSGC_IMG_ATTACHMENT_ICON, NULL);
+       }
+
+       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_icon_file_set(del_icon, MSGC_IMG_ATTACHMENT_DEL_ICON, NULL);
+       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);
+       elm_object_focus_allow_set(del_icon, EINA_TRUE);
+
+       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);
+
+       if (!cd->isAppControl)
+               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");
+
+       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");
+
+       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);
+
+               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 *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_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_icon_file_set(thumb_icon, MSGC_IMG_ATTACHMENT_ICON, NULL);
+       evas_object_show(thumb_icon);
+
+       elm_object_part_content_set(layout, "swl.image", thumb_icon);
+
+       char buf[DEF_BUF_LEN_S + 1] = {0,};
+
+       snprintf(buf, sizeof(buf), _MSGSTR("IDS_MSGC_BODY_PD_ATTACHMENTS"), attach_count);
+       edje_object_part_text_set(_EDJ(layout), "text.filename", buf);
+       evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_UP, __msgc_attachment_main_layout_clicked_cb, 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, };
+               snprintf(popup_msg, sizeof(popup_msg) - 1, MSGC_STR_POP_ATTACHMENT_COUNT_MAX, COMPOSER_MMS_MAX_ATTACH_COUNT, COMPOSER_MMS_MAX_ATTACH_COUNT);
+               Evas_Object *popup = msg_ui_composer_status_popup_show(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);
+               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, 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);
+                               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");
+               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");
+               g_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);
+                       msg_ui_composer_last_focus_load(cd);
+               }
+       }
+       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;
+
+       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);
+}
index d1d030b..63cd6fa 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.\r
  */\r
 \r
+\r
  /* includes */\r
 #include "msg-ui-composer-body.h"\r
 #include "msg-ui-composer-recipient.h"\r
 #include "msg-ui-composer-body-page.h"\r
 #include "msg-ui-composer-body-callback.h"\r
 #include "msg-ui-composer-common.h"\r
-\r
+#include "msg-ui-composer-attachment.h"\r
+#include "msg-ui-composer-subject.h"\r
 #include "msg-ui-composer-message.h"\r
 #include "msg-ui-composer-popup.h"\r
 #include "msg-ui-composer-util.h"\r
 #include "msg-ui-composer-external.h"\r
-\r
+#include "syspopup_caller.h"\r
 \r
 /*==================================================================================================\r
 *                                                              FUNCTION IMPLEMENTATIONS\r
 *==================================================================================================*/\r
-static void __nosim_popup_delete_cb(void *data, Evas * e, Evas_Object *obj, void *event_info)\r
+static void __add_list_popup_clicked_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+\r
+       if (!data || !event_info) {\r
+               D_EMSG("invalid argument, argument data is NULL");\r
+               return;\r
+       }\r
+\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+\r
+       if (cd->add_menu_clicked)\r
+               return;\r
+\r
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
+       elm_list_item_selected_set(item, EINA_FALSE);\r
+\r
+       const char *label = elm_object_item_text_get(item);\r
+       if (!label) {\r
+               D_EMSG("label is NULL !!");\r
+               return;\r
+       }\r
+\r
+       cd->add_menu_clicked = true;\r
+\r
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "label = %s", label);\r
+       if (cd->isAppControl) {\r
+               if (!g_strcmp0(label, MSGC_STR_SUBJECT)) {\r
+                       msg_ui_composer_add_subject(cd);\r
+               } else {\r
+                       D_EMSG("Unknown Menu List Item");\r
+               }\r
+       } else {\r
+               if (!g_strcmp0(label, MSGC_STR_SUBJECT)) {\r
+                       msg_ui_composer_add_subject(cd);\r
+               } else if (!g_strcmp0(label, MSGC_STR_GALLERY)) {\r
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_GALLERY, NULL);\r
+               } else if (!g_strcmp0(label, MSGC_STR_MYFILE)) {\r
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_MYFILE, NULL);\r
+               } else if (!g_strcmp0(label, _MSGSTR("IDS_MSGC_BODY_TAKE_PICTURE"))) {\r
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_CAMERA, NULL);\r
+               } else if (!g_strcmp0(label, _MSGSTR("IDS_MSGC_BODY_RECORD_AUDIO"))) {\r
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_VOICEREC, NULL);\r
+               } else if (!g_strcmp0(label, _MSGSTR("IDS_MSGC_BODY_CAPTURE_VIDEO"))) {\r
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_CAMCORDER, NULL);\r
+               } else if (!g_strcmp0(label, MSGC_STR_CONTACT)) {\r
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_NAMECARD, NULL);\r
+               } else if (!g_strcmp0(label, MSGC_STR_CALENDAR)) {\r
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_CALENDAR, NULL);\r
+               } else if (!g_strcmp0(label, MSGC_STR_MEMO)) {\r
+                       msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_MEMO, NULL);\r
+               } else {\r
+                       D_EMSG("Unknown Menu List Item");\r
+               }\r
+       }\r
+\r
+       MSGC_EVAS_OBJECT_DEL(cd->add_popup);\r
+       cd->add_button_clicked = false;\r
+       cd->add_menu_clicked = false;\r
+       D_LEAVE;\r
+}\r
+\r
+static void __add_list_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       D_MSG_RETM_IF(cd == NULL, "composer data is NULL");\r
+       MSGC_EVAS_OBJECT_DEL(cd->add_popup);\r
+       cd->add_button_clicked = false;\r
+       cd->add_menu_clicked = false;\r
+\r
+       D_LEAVE;\r
+}\r
+\r
+static void __add_list_popup_show(void *data)\r
+{\r
+       D_ENTER;\r
+\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       Evas_Object *popup = NULL;\r
+       Evas_Object *list = NULL;\r
+       Elm_Object_Item *item = NULL;\r
+\r
+       list = elm_list_add(cd->main_window);\r
+       D_MSG_RETM_IF(list == NULL, "list is NULL");\r
+\r
+       if (!cd->isAppControl) {\r
+               if (!cd->isSubject)\r
+                       item = elm_list_item_append(list, MSGC_STR_SUBJECT, NULL, NULL, __add_list_popup_clicked_cb, data);\r
+\r
+               elm_list_item_append(list, MSGC_STR_GALLERY, NULL, NULL, __add_list_popup_clicked_cb, data);\r
+               elm_list_item_append(list, _MSGSTR("IDS_MSGC_BODY_TAKE_PICTURE"), NULL, NULL, __add_list_popup_clicked_cb, data);\r
+               elm_list_item_append(list, _MSGSTR("IDS_MSGC_BODY_CAPTURE_VIDEO"), NULL, NULL, __add_list_popup_clicked_cb, data);\r
+               elm_list_item_append(list, _MSGSTR("IDS_MSGC_BODY_RECORD_AUDIO"), NULL, NULL, __add_list_popup_clicked_cb, data);\r
+               elm_list_item_append(list, MSGC_STR_MYFILE, NULL, NULL, __add_list_popup_clicked_cb, data);\r
+               elm_list_item_append(list, MSGC_STR_CONTACT, NULL, NULL, __add_list_popup_clicked_cb, data);\r
+               elm_list_item_append(list, MSGC_STR_CALENDAR, NULL, NULL, __add_list_popup_clicked_cb, data);\r
+               elm_list_item_append(list, MSGC_STR_MEMO, NULL, NULL, __add_list_popup_clicked_cb, data);\r
+       } else {\r
+               item = elm_list_item_append(list, MSGC_STR_SUBJECT, NULL, NULL, __add_list_popup_clicked_cb, data);\r
+               if (cd->isSubject)\r
+                       elm_object_item_disabled_set(item, EINA_TRUE);\r
+       }\r
+\r
+       elm_list_go(list);\r
+\r
+       if (!cd->isAppControl) {\r
+               popup = msg_ui_composer_list_popup_create(cd, _SYSSTR("IDS_COM_POP_ATTACH"), list, NULL);\r
+       } else {\r
+               elm_list_mode_set(list, ELM_LIST_EXPAND);\r
+               popup = msg_ui_composer_list_popup_create(cd, _SYSSTR("IDS_COM_POP_ATTACH"), list, "min_menustyle");\r
+       }\r
+\r
+       Evas_Object *btn1 = elm_button_add(popup);\r
+       elm_object_style_set(btn1, "popup_button/default");\r
+       elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);\r
+       elm_object_part_content_set(popup, "button1", btn1);\r
+       evas_object_smart_callback_add(btn1, "clicked", __add_list_popup_btn_clicked_cb, cd);\r
+\r
+       cd->add_popup = popup;\r
+\r
+       D_LEAVE;\r
+}\r
+\r
+static void __nosim_popup_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
 {\r
        D_ENTER;\r
 \r
@@ -55,6 +182,7 @@ void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void
        D_MSG_RETM_IF(data == NULL, "Composer Data is NULL");\r
 \r
        MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       msg_thread_id_t tid = 0;\r
 \r
        if (cd->send_button)\r
                elm_object_disabled_set(cd->send_button, EINA_TRUE);\r
@@ -78,11 +206,11 @@ void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void
                /*check recipient count is zero*/\r
                if (msg_ui_composer_recipient_count_get(rd) == 0) {\r
                        D_EMSG("there is no recipient");\r
-                       msg_ui_composer_status_popup_show(cd, "there is no recipient", COMPOSER_STATUS_POPUP_DEFAULT_TIME); // FIXME :: should change msg from STMS\r
+                       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_NO_RECIPIENT);\r
                }\r
 \r
                /*check invalid recipient*/\r
-               Eina_List * invalid_list = msg_ui_composer_recipient_invalid_recipient_list_get(rd);\r
+               Eina_List *invalid_list = msg_ui_composer_recipient_invalid_recipient_list_get(rd);\r
                if (invalid_list) {\r
                        RECIPIENT_ITEM_S *r_item;\r
                        char *ret = NULL;\r
@@ -113,7 +241,8 @@ void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void
 \r
                        if (err_msg != NULL) {\r
                                Evas_Object *popup = msg_ui_composer_status_popup_show(cd, err_msg, COMPOSER_STATUS_POPUP_DEFAULT_TIME);\r
-                               Evas_Object * btn1 = elm_button_add(popup);\r
+                               Evas_Object *btn1 = elm_button_add(popup);\r
+                               elm_object_style_set(btn1, "popup_button/default");\r
                                elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);\r
                                elm_object_part_content_set(popup, "button1", btn1);\r
                                evas_object_smart_callback_add(btn1, "clicked", msg_ui_composer_status_popup_response_cb, popup);\r
@@ -127,7 +256,6 @@ void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void
                }\r
        }\r
 \r
-\r
        /*Make message*/\r
        msg_ui_composer_message_init();\r
 \r
@@ -142,7 +270,7 @@ void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void
        }\r
 \r
        /*Send message*/\r
-       COMPOSER_RETURN_TYPE_E ret = msg_ui_composer_message_make_and_send(cd->msg_handle);\r
+       COMPOSER_RETURN_TYPE_E ret = msg_ui_composer_message_make_and_send(cd->msg_handle, &tid);\r
 \r
        if (ret == COMPOSER_RETURN_SUCCESS) {\r
                D_MSG("Send Success");\r
@@ -151,41 +279,23 @@ void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void
                        ug_destroy_me(cd->ug);\r
                } else if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER) {\r
 \r
-                       RECIPIENT_ITEM_S r_item = {0,};\r
-\r
-                       if (cd->recipient) {\r
-                               Elm_Object_Item *mbe_item = elm_multibuttonentry_first_item_get(cd->recipient->mbe);\r
-                               if (mbe_item) {\r
-                                       RECIPIENT_ITEM_S *recipient_item = elm_object_item_data_get(mbe_item);\r
-                                       if (recipient_item) {\r
-                                               memcpy(&r_item, recipient_item, sizeof(RECIPIENT_ITEM_S));\r
-                                       }\r
-                               }\r
-                       }\r
-\r
                        msg_ui_composer_change_bubble_view(cd);\r
-                       int tid = msg_ui_composer_thread_id_get(cd->msg_handle, r_item.recipient);\r
+\r
                        if (tid <= 0) {\r
                                D_EMSG("Can not find thread id!!");\r
+                               msg_ui_composer_message_destroy();\r
                                ug_destroy_me(cd->ug);\r
-                               return;\r
-                       }\r
 \r
-                       char *recipient = msg_ui_composer_thread_recipient_get(cd->msg_handle, tid);\r
-                       if (recipient == NULL) {\r
-                               D_EMSG("Can not find thread address!!");\r
-                               ug_destroy_me(cd->ug);\r
                                return;\r
                        }\r
 \r
-                       msg_ui_composer_recipient_set_recipient(cd, recipient);\r
-                       msg_ui_composer_bubble_data_set(cd, recipient, r_item.display_name, r_item.index, tid);\r
+                       msg_ui_composer_bubble_data_set(cd, tid);\r
                        msg_ui_bubble_start_view(cd->bubble_data);\r
+                       msg_ui_composer_navi_title_set((void *)cd);\r
 \r
-                       msg_ui_bubble_composer_navi_title_set((void *)cd);\r
-                       msg_ui_bubble_add_normal_control_item(cd->bubble_data);\r
+                       /* set recipient list for bubble composer */\r
+                       msg_ui_composer_recipient_set_recipient_list(cd, tid);\r
 \r
-                       g_free(recipient);\r
                        msg_ui_composer_clear(cd);\r
                } else {\r
                        msg_ui_composer_clear(cd);\r
@@ -196,7 +306,8 @@ void msg_ui_composer_body_send_btn_clicked_cb(void *data, Evas_Object *obj, void
                if (ret == COMPOSER_RETURN_NO_SIM) {\r
                        D_MSG("Send Fail : NO SIM");\r
                        Evas_Object *popup = msg_ui_composer_status_popup_show(cd, MSGC_STR_POP_NOSIM, COMPOSER_STATUS_POPUP_DEFAULT_TIME);\r
-                       Evas_Object * btn1 = elm_button_add(popup);\r
+                       Evas_Object *btn1 = elm_button_add(popup);\r
+                       elm_object_style_set(btn1, "popup_button/default");\r
                        elm_object_text_set(btn1, MSGC_STR_BUTTON_CLOSE);\r
                        elm_object_part_content_set(popup, "button1", btn1);\r
                        evas_object_smart_callback_add(btn1, "clicked", msg_ui_composer_status_popup_response_cb, popup);\r
@@ -222,6 +333,37 @@ error_return:
        D_LEAVE;\r
 }\r
 \r
+void msg_ui_composer_body_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+\r
+       if (!data) {\r
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] error data is NULL");\r
+               return;\r
+       }\r
+\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+\r
+       if (cd->add_button_clicked)\r
+               return;\r
+\r
+       cd->add_button_clicked = true;\r
+       __add_list_popup_show(cd);\r
+\r
+       D_LEAVE;\r
+}\r
+\r
+void msg_ui_composer_body_entry_maxlength_reached_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");\r
+\r
+       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_MAXLENGHT_CHAR);\r
+\r
+       D_LEAVE;\r
+}\r
+\r
 void msg_ui_composer_body_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)\r
 {\r
        D_ENTER;\r
@@ -250,11 +392,12 @@ void msg_ui_composer_body_entry_changed_cb(void *data, Evas_Object *obj, void *e
        }\r
        g_free(body_text);\r
 \r
+       msg_ui_composer_message_type_check_and_change(cd);\r
+\r
        msg_ui_composer_body_info_area_update(cd);\r
 \r
        if (msg_ui_composer_common_is_send_possible(cd)) {\r
                elm_object_disabled_set(cd->send_button, EINA_FALSE);\r
-               edje_object_signal_emit(_EDJ(cd->ly_body), "body_contract","*"); // FIXME :: check status for signal emit\r
        } else {\r
                elm_object_disabled_set(cd->send_button, EINA_TRUE);\r
        }\r
@@ -262,25 +405,234 @@ void msg_ui_composer_body_entry_changed_cb(void *data, Evas_Object *obj, void *e
        D_LEAVE;\r
 }\r
 \r
+void msg_ui_composer_body_entry_press_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");\r
+\r
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {\r
+               elm_entry_context_menu_disabled_set(obj, EINA_TRUE);\r
+               elm_entry_magnifier_disabled_set(obj, EINA_TRUE);\r
+       } else {\r
+               elm_entry_context_menu_disabled_set(obj, EINA_FALSE);\r
+               elm_entry_magnifier_disabled_set(obj, EINA_FALSE);\r
+       }\r
+\r
+       D_LEAVE;\r
+}\r
+\r
+void msg_ui_composer_body_entry_clicked_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");\r
+\r
+       int attach_count = msg_ui_composer_get_attach_count(cd);\r
+\r
+       if (attach_count > 1)\r
+               msg_ui_composer_contract_attach_list(cd);\r
+\r
+       D_LEAVE;\r
+}\r
+\r
+void msg_ui_composer_body_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");\r
+\r
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {\r
+               MSG_COMPOSER_BODY_S *body_data = &cd->body_data;\r
+\r
+               int page_count = body_data->page_count;\r
+\r
+               if (page_count == 1) {\r
+                       D_MSG("There is 1 page !!!");\r
+               } else {\r
+                       MSG_COMPOSER_BODY_PAGE_S *page_data = evas_object_data_get(obj, "page_data");\r
+                       if (page_data == NULL) {\r
+                               D_EMSG("page_data is NULL");\r
+                       } else {\r
+                               /* hide delete button */\r
+                               D_MSG("hide delete button");\r
+                               edje_object_signal_emit(_EDJ(page_data->upper_layout), "hide.delete", "*");\r
+                       }\r
+               }\r
+       }\r
+\r
+       D_LEAVE;\r
+}\r
+\r
 void msg_ui_composer_body_entry_focused_cb(void *data, Evas_Object *obj, void *event_info)\r
 {\r
        D_ENTER;\r
 \r
-       if (!data) {\r
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT} data is NULL");\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");\r
+\r
+       if (msg_ui_composer_recipient_addr_type_get(cd->recipient) == COMPOSER_RECP_ADDR_INVALID) {\r
+               /* if focused_cb is called twice becuase of double click, move focus to popup */\r
+               if (msg_ui_composer_popup_exist(cd))\r
+                       msg_ui_composer_popup_focus(cd);\r
+\r
                return;\r
        }\r
 \r
-       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       /* change body scroller size */\r
+       int keypad_h = msg_ui_composer_get_keypad_height(obj);\r
+       msg_ui_composer_change_body_scroll_size(cd, keypad_h);\r
+\r
+       if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {\r
+               MSG_COMPOSER_BODY_S *body_data = &cd->body_data;\r
 \r
-       if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {\r
+               Eina_List *page_list = body_data->page_list;\r
+               int page_count = body_data->page_count;\r
 \r
+               if (page_count == 1) {\r
+                       D_MSG("page NO.1 focused !!!");\r
+                       cd->current_edit_entry = 0;\r
+               } else {\r
+                       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;\r
+                       int i = 0;\r
+\r
+                       for (i = 0; i < page_count; i++) {\r
+                               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);\r
+                               if (page_data->entry == obj) {\r
+                                       D_MSG("page NO.[%d]/[%d] focused !!!", i + 1, page_count);\r
+                                       cd->current_edit_entry = i;\r
+                                       break;\r
+                               }\r
+                       }\r
+                       page_data = evas_object_data_get(obj, "page_data");\r
+                       if (page_data == NULL) {\r
+                               D_EMSG("page_data is NULL");\r
+                       } else {\r
+                               /* show delete button */\r
+                               D_MSG("show delete button");\r
+                               edje_object_signal_emit(_EDJ(page_data->upper_layout), "show.delete", "*");\r
+                       }\r
+               }\r
+       } else if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {\r
                cd->current_edit_entry = 0;\r
        } else {\r
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] message composer invalid message type");\r
+               D_MSG("message composer invalid message type");\r
        }\r
 \r
        msg_ui_composer_last_focused_entry_set(data, obj);\r
        D_LEAVE;\r
 }\r
 \r
+void msg_ui_composer_body_page_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+\r
+       if (!data) {\r
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] Callback data is NULL");\r
+               return;\r
+       }\r
+\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       Evas_Object *layout = evas_object_data_get(obj, "layout");\r
+\r
+       msg_ui_composer_mms_body_remove_page(cd, layout);\r
+\r
+       msg_ui_composer_message_type_check_and_change(cd);\r
+\r
+       msg_ui_composer_body_info_area_update(cd);\r
+       D_LEAVE;\r
+}\r
+\r
+void msg_ui_composer_body_media_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       D_ENTER;\r
+\r
+       if (!data || !obj) {\r
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] NULL pointer error");\r
+               return;\r
+       }\r
+\r
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       MSG_COMPOSER_BODY_S *body_data = &cd->body_data;\r
+       MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;\r
+       Eina_List *page_list = body_data->page_list;\r
+       int page_count = body_data->page_count;\r
+       int body_length = 0;\r
+\r
+       Evas_Object *delete_layout = (Evas_Object *)evas_object_data_get(obj, "layout");\r
+\r
+       int i = 0;\r
+\r
+       for (i = 0; i < page_count; i++) {\r
+               page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);\r
+\r
+               if (!page_data) {\r
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] page data is NULL !!!");\r
+                       return;\r
+               }\r
+\r
+               if (page_data->sound_item == delete_layout) {\r
+                       msg_ui_composer_mms_insert_item_remove(cd, delete_layout, COMPOSER_MEDIA_TYPE_AUDIO);\r
+\r
+                       char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(page_data->entry));\r
+                       if (!body_text)\r
+                               return;\r
+\r
+                       body_length = strlen(body_text);\r
+\r
+                       if (body_length == 0 && !page_data->is_image_item)\r
+                               msg_ui_composer_mms_body_remove_page(cd, page_data->layout);\r
+\r
+                       g_free(body_text);\r
+\r
+                       break;\r
+               } else if (page_data->image_item == delete_layout) {\r
+\r
+                       char *body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(page_data->entry));\r
+                       if (!body_text)\r
+                               return;\r
+\r
+                       body_length = strlen(body_text);\r
+\r
+                       if (page_data->isVideo) {\r
+                               msg_ui_composer_mms_insert_item_remove(cd, delete_layout, COMPOSER_MEDIA_TYPE_VIDEO);\r
+                       } else {\r
+                               msg_ui_composer_mms_insert_item_remove(cd, delete_layout, COMPOSER_MEDIA_TYPE_IMAGE);\r
+                       }\r
+\r
+                       if (body_length == 0 && !page_data->is_sound_item)\r
+                               msg_ui_composer_mms_body_remove_page(cd, page_data->layout);\r
+\r
+                       g_free(body_text);\r
+                       break;\r
+               }\r
+       }\r
+\r
+       msg_ui_composer_message_type_check_and_change(cd);\r
+       D_LEAVE;\r
+}\r
+\r
+void msg_ui_composer_body_body_layout_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)\r
+{
+       D_ENTER;
+
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;\r
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");\r
+       Evas_Coord x = 0;\r
+       Evas_Coord y = 0;
+       Evas_Coord w = 0;
+       Evas_Coord h = 0;
+
+       evas_object_geometry_get(obj, &x, &y, &w, &h);\r
+       D_MSG("body layout height = %d", h);\r
+
+       cd->ly_body_h = h;
+
+       if (h >= COMPOSER_ENOUGH_TEXT_RENDERING_BODY_HEIGHT)\r
+               msg_ui_composer_body_info_area_update(cd);
+       else
+               edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", "");
+\r
+       D_LEAVE;
+}\r
index 156e87a..4005d14 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #include "msg-ui-composer-body.h"
 #include "msg-ui-composer-body-page.h"
 #include "msg-ui-composer-body-callback.h"
@@ -66,6 +67,7 @@ static const unsigned short g_GSM7BitExtToUCS2[] =
        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;
@@ -120,6 +122,117 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_body_read_sms_body(MSG_COMPOSER_VIEW_DATA
        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;
+
+               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, 0);
+                       } 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, 0);
+                       }
+               } 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, page_data->sound_duration);
+               } 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 unsigned char *body_ucs2_text, int ucs2_len, int *char_count)
 {
        D_ENTER;
@@ -203,7 +316,7 @@ int msg_ui_composer_body_entry_char_count(void *data, const unsigned char *body_
        return dst_char_encode;
 }
 
-void msg_ui_composer_body_info_area_update(MSG_COMPOSER_VIEW_DATA_Scd)
+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");
@@ -219,6 +332,7 @@ void msg_ui_composer_body_info_area_update(MSG_COMPOSER_VIEW_DATA_S* cd)
                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", "");
@@ -228,6 +342,10 @@ void msg_ui_composer_body_info_area_update(MSG_COMPOSER_VIEW_DATA_S* cd)
                if (char_encode == COMPOSER_CHAR_ENCODE_UNICODE) {
                        if (char_count > COMPOSER_SMS_UNICODE_MAX_LEN) {
                                cms_page = char_count / COMPOSER_CMS_UNICODE_MAX_LEN;
+
+                               if (!(char_count % COMPOSER_CMS_UNICODE_MAX_LEN))
+                                       --cms_page;
+
                                if (cms_page >= COMPOSER_CMS_MAX_PAGE)
                                        max_count = COMPOSER_CMS_UNICODE_MAX_LEN * COMPOSER_CMS_MAX_PAGE;
                                else
@@ -240,6 +358,10 @@ void msg_ui_composer_body_info_area_update(MSG_COMPOSER_VIEW_DATA_S* cd)
                } else if (char_encode == COMPOSER_CHAR_ENCODE_GSM7) {
                        if (char_count > COMPOSER_SMS_GSM7_MAX_LEN){
                                cms_page = char_count / COMPOSER_CMS_GSM7_MAX_LEN;
+
+                               if (!(char_count % COMPOSER_CMS_GSM7_MAX_LEN))
+                                       --cms_page;
+
                                if (cms_page >= COMPOSER_CMS_MAX_PAGE)
                                        max_count = COMPOSER_CMS_GSM7_MAX_LEN * COMPOSER_CMS_MAX_PAGE;
                                else
@@ -253,41 +375,55 @@ void msg_ui_composer_body_info_area_update(MSG_COMPOSER_VIEW_DATA_S* cd)
                        return;
                }
 
-               snprintf(count_str, sizeof(count_str), "%d/%d", char_count, max_count);
-               edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", count_str);
+               remaining_count = max_count - char_count;
+               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)
+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) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid paremeter ");
+       if (!cd || !parent || !page_data) {
+               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 *page_box = NULL;
        Evas_Object *entry = NULL;
        Elm_Entry_Filter_Limit_Size limit_filter;
 
-       page_data = (MSG_COMPOSER_BODY_PAGE_S *)calloc(1, sizeof(MSG_COMPOSER_BODY_PAGE_S));
-       if (!page_data) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT calloc error]");
-               return NULL;
-       }
-
        layout = elm_layout_add(parent);
        if (!layout) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] elm_layout_add error !!");
-               g_free(page_data);
+               D_EMSG("elm_layout_add error !!");
                return NULL;
        }
 
@@ -298,8 +434,7 @@ static Evas_Object *__msg_ui_composer_body_page_create(MSG_COMPOSER_VIEW_DATA_S
 
        page_box = elm_box_add(layout);
        if (!page_box) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] elm_box_add error !!");
-               g_free(page_data);
+               D_EMSG("elm_box_add error !!");
                return NULL;
        }
 
@@ -310,39 +445,124 @@ static Evas_Object *__msg_ui_composer_body_page_create(MSG_COMPOSER_VIEW_DATA_S
 
        entry = elm_entry_add(page_box);
        if (!entry) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] elm_box_add error !!");
-               g_free(page_data);
+               D_EMSG("elm_box_add error !!");
                return NULL;
        }
+
+       /* fix font size */
+       elm_entry_text_style_user_push(entry, "DEFAULT='font_size=36'");
+
        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_cnp_mode_set(entry, ELM_CNP_MODE_NO_IMAGE);
-
+       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_TEXT_MAX_CHAR;
+       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_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_icon_file_set(del_icon, MSGC_IMG_PAGE_DEL_ICON, NULL);
+       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);
+       elm_object_focus_allow_set(del_icon, EINA_TRUE);
+
+       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);
 
        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;
+
+       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;
@@ -359,11 +579,10 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_body_add_page(MSG_COMPOSER_VIEW_DATA_S *c
        }
 
        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_MAX_PAGE) {
+       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, MSGC_STR_POP_PAGE_MAX, COMPOSER_STATUS_POPUP_DEFAULT_TIME);
                return COMPOSER_RETURN_FAIL;
@@ -374,7 +593,7 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_body_add_page(MSG_COMPOSER_VIEW_DATA_S *c
                return COMPOSER_RETURN_FAIL;
        }
 
-       new_page = __msg_ui_composer_body_page_create(cd, main_box);
+       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;
@@ -387,7 +606,60 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_body_add_page(MSG_COMPOSER_VIEW_DATA_S *c
        return COMPOSER_RETURN_SUCCESS;
 }
 
-COMPOSER_RETURN_TYPE_E msg_ui_composer_body_remove_page(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Object *remove_page)
+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;
 
@@ -400,14 +672,24 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_body_remove_page(MSG_COMPOSER_VIEW_DATA_S
        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, "");
 
-               if (cd->ly_body)
-               {
-                       Evas_Object* entry = msg_ui_composer_last_focused_entry_get(cd);
+               /* hide delete button */
+               edje_object_signal_emit(_EDJ(page_data->upper_layout), "hide.delete", "*");
+
+               if (cd->ly_body) {
+                       Evas_Object *entry = msg_ui_composer_last_focused_entry_get(cd);
                        if (entry) {
                                if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
                                        RECIPIENT_S *r = cd->recipient;
@@ -417,20 +699,368 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_body_remove_page(MSG_COMPOSER_VIEW_DATA_S
                                                }
                                        }
                                }
+                       }
+               }
+
+               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_DEBUG(MSG_UI_LEVEL_DEBUG, "focus change to the first page");
+                       /* focus change to the first page */
+                       cd->current_edit_entry = 0;
+                       msg_ui_composer_last_focused_entry_set(cd, page_data->entry);
+                       msg_ui_composer_last_focus_load(cd);
+               }
+       } 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) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEUBG] 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_del(page_data->del_icon);
+
+                                       evas_object_del(page_data->upper_layout);
 
-                               Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(entry);
-                               Ecore_IMF_Input_Panel_State state =  ecore_imf_context_input_panel_state_get(imf_context);
-                               if (state == ECORE_IMF_INPUT_PANEL_STATE_HIDE && (msg_ui_composer_common_is_send_possible(cd) == false))
-                                       edje_object_signal_emit(_EDJ(cd->ly_body), "body_expand", "*");
+                                       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);
+                                               } 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;
                        }
                }
-               /* focus change to the first page */
-               cd->current_edit_entry = 0;
-               msg_ui_composer_last_focused_entry_set(cd, page_data->entry);
+       }
+
+       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_button = NULL;
+       const char *filename = NULL;
+       char thumbnail_path[COMPOSER_FILEPATH_LEN_MAX + 1] = { 0, };
+
+       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_icon_file_set(thumb_icon, file_path, NULL);
+               evas_object_size_hint_min_set(thumb_icon, MSGC_IMAGE_THUMB_WIDTH, MSGC_IMAGE_THUMB_HEIGHT);
+       } 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_icon_file_set(thumb_icon, thumbnail_path, NULL);
+               } else {
+                       elm_icon_file_set(thumb_icon, MSGC_IMG_INSERT_ETC_ICON, NULL);
+               }
+               evas_object_size_hint_min_set(thumb_icon, MSGC_IMAGE_THUMB_WIDTH, MSGC_IMAGE_THUMB_HEIGHT);
+       } 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_icon_file_set(thumb_icon, icon_path, NULL);
+               } else {
+                       D_EMSG("icon_path is NULL");
+                       elm_icon_file_set(thumb_icon, MSGC_IMG_INSERT_VOICE_ICON, NULL);
+               }
+               evas_object_size_hint_min_set(thumb_icon, MSGC_SOUND_THUMB_WIDTH, MSGC_SOUND_THUMB_HEIGHT);
        } else {
-               D_EMSG("Invalid page count !!");
+               elm_icon_file_set(thumb_icon, MSGC_IMG_INSERT_ETC_ICON, NULL);
+               evas_object_size_hint_min_set(thumb_icon, MSGC_SOUND_THUMB_WIDTH, MSGC_SOUND_THUMB_HEIGHT);
        }
+
+       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_button = elm_icon_add(layout);
+
+       if (media_type == COMPOSER_MEDIA_TYPE_AUDIO)
+               elm_icon_file_set(del_button, MSGC_SOUND_INSERT_DEL_ICON, NULL);
+       else
+               elm_icon_file_set(del_button, MSGC_IMG_INSERT_DEL_ICON, NULL);
+
+       evas_object_size_hint_align_set(del_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_object_focus_allow_set(del_button, EINA_TRUE);
+
+       evas_object_data_set(del_button, "layout", layout);
+       evas_object_smart_callback_add(del_button, "clicked", msg_ui_composer_body_media_del_btn_clicked_cb, cd);
+
+       elm_object_part_content_set(layout, "swl.del_button", del_button);
+
+       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) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (file_path == NULL || strlen(file_path) == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] 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) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] mms page count error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (page_count <= cd->current_edit_entry) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] mms page count error 2");
+               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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] 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) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] Fail of new page created");
+                       return COMPOSER_RETURN_FAIL;
+               }
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] 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';
+
+               msg_composer_common_get_media_duration(file_path, &page_data->sound_duration);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] audio file duration [%d]", page_data->sound_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 {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] 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';
+
+               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 {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] 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);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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);
+               msg_ui_composer_last_focus_load(cd);
+       }
+
        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;
+}
+
index 86cb4ca..3cd0801 100755 (executable)
  * limitations under the License.
  */
 
+
 /* includes */
+#include <drm_client.h>
 
 #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-body-callback.h"
 
 /* functions*/
-COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_size(MSG_COMPOSER_VIEW_DATA_S* cd, int64 *size)
+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;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_size(MSG_COMPOSER_VIEW_DATA_S *cd, int64 *size)
 {
        D_ENTER;
 
@@ -40,7 +75,13 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_size(MSG_COMPOSER_VIEW_DATA_S
        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");
 
-       D_MSG("inserted_size(%lld) + attached_size(%lld)", inserted_size, attached_size);
+       /* 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;
 
@@ -48,6 +89,627 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_get_message_size(MSG_COMPOSER_VIEW_DATA_S
        return COMPOSER_RETURN_SUCCESS;
 }
 
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_jpeg_image_resolution_change(const char *src_path, 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");
+
+       unsigned int restrict_w = 0;
+       unsigned int restrict_h = 0;
+       unsigned int from_w = 0;
+       unsigned int from_h = 0;
+       unsigned int to_w = 0;
+       unsigned int to_h = 0;
+
+       /*Check Jpeg file*/
+       const char *file_ext = msg_common_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");
+
+       /*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_ERR_NONE, 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_MSG("It does not need to resize image");
+               return COMPOSER_RETURN_SUCCESS;
+       }
+
+       D_MSG("Set input image resolution to %d X %d",to_w, to_h);
+
+       util_ret = jpeg_image_resize(src_path, to_w, to_h, dst_path);
+       if (util_ret != COMPOSER_UTIL_ERR_NONE) {
+               D_EMSG("image resize error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static COMPOSER_RETURN_TYPE_E __msg_ui_composer_jpeg_image_quality_down(const char *src_path, const char *dst_path, int64 wishsize)
+{
+       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(wishsize <= 0, COMPOSER_RETURN_FAIL, "Parameter remain size (%d) is Invaild", wishsize);
+
+       const int max_resize_loop = COMPOSER_RESIZE_LOOP_MAX;
+       int quality;
+       char *file_ext;
+       int i = 0;
+       int util_ret;
+
+       file_ext = msg_common_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 95
+                       If 40 < percent < 60 then proper quality is 85
+                       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 = 95;
+               } else if (percent > 40) {
+                       quality = 85;
+               } 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");
+               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;
+               }
+
+               util_ret = jpeg_image_quality_set(src_path, quality, dst_path);
+               if (util_ret == COMPOSER_UTIL_ERR_NONE) {
+
+                       file_size = msg_composer_get_file_size(dst_path);
+
+                       if (wishsize > file_size) {
+                               return COMPOSER_RETURN_SUCCESS;
+                       }
+
+                       quality /= 2;
+
+               } 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;
+
+       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) {
+                       snprintf(popup_msg, sizeof(popup_msg), MSGC_STR_POP_ATTACHMENT_SIZE_MAX_Q, cd->mms_max_size/ 1024);
+                       Evas_Object *popup = msg_ui_composer_status_popup_show(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);
+                       cd->popup_end = popup;
+               } else {
+                       snprintf(popup_msg, sizeof(popup_msg), MSGC_STR_POP_ATTACHMENT_SIZE_MAX, cd->mms_max_size/ 1024);
+                       Evas_Object *popup = msg_ui_composer_status_popup_show(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);
+               }
+       }
+
+       if (cd->isLoad == true)
+               cd->isLoad = false;
+
+       EINA_LIST_FREE(cd->attachlist, list_data) {
+               if (list_data)
+                       g_free(list_data);
+       }
+
+       cd->attachlist = NULL;
+       cd->attach_index = 0;
+
+       /*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;
+       COMPOSER_RETURN_TYPE_E ret;
+       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;
+       }
+
+       if (th_data->need_ChangeResolution == true) {
+               ret = __msg_ui_composer_jpeg_image_resolution_change(th_data->filepath, th_data->filepath);
+               if (ret != COMPOSER_RETURN_SUCCESS) {
+                       th_data->status = COMPOSER_THREAD_STATUS_RESIZE_FAIL;
+                       return;
+               }
+       }
+
+       resize_result = __msg_ui_composer_jpeg_image_quality_down(th_data->filepath, th_data->filepath, th_data->wishsize);
+       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, };
+
+       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, MSGC_STR_POP_FILE_IS_FORWARD_LOCK, 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);
+                               break;
+                       } else if (ret == COMPOSER_RETURN_OVERSIZE_FILE) {
+
+                               if (cd->isLoad == true && cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+                                       snprintf(popup_msg, sizeof(popup_msg), MSGC_STR_POP_ATTACHMENT_SIZE_MAX_Q, cd->mms_max_size/ 1024);
+                                       Evas_Object *popup = msg_ui_composer_status_popup_show(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(btn1, "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);
+                                       cd->popup_end = popup;
+                               } else {
+                                       snprintf(popup_msg, sizeof(popup_msg), MSGC_STR_POP_ATTACHMENT_SIZE_MAX, cd->mms_max_size/ 1024);
+                                       Evas_Object *popup = msg_ui_composer_status_popup_show(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);
+                               }
+
+                               break;
+                       } else if (ret != COMPOSER_RETURN_SUCCESS) {
+                               msg_ui_composer_status_popup_show(cd, _MSGSTR("IDS_MSGC_POP_MMSCANTADD"), COMPOSER_STATUS_POPUP_DEFAULT_TIME);
+                               D_MSG("Fail to add item");
+                               break;
+                       }
+               }
+       }
+
+       if (ret == COMPOSER_RETURN_RESIZE_IMAGE) {
+               cd->iter_list  = eina_list_next(l);
+       } else {
+               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;
+       }
+
+       D_LEAVE;
+       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*/
+       drm_bool_type_e is_drm_file = DRM_FALSE;
+       if (drm_is_drm_file(item_path, &is_drm_file) == DRM_RETURN_SUCCESS &&
+               is_drm_file == DRM_TRUE) {
+               int ret = DRM_RETURN_SUCCESS;
+               drm_file_info_s drmInfo;
+
+               memset(&drmInfo, 0x0, sizeof(drm_file_info_s));
+
+               ret = drm_get_file_info(item_path, &drmInfo);
+               if (ret != DRM_RETURN_SUCCESS) {
+                       D_EMSG("Error drm_get_file_info");
+                       return COMPOSER_RETURN_FAIL;
+               }
+
+               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_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*/
+       bool bIsSuitable = true;
+       int creationMode;
+       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) {
+                               D_MSG("restricted");
+                               bIsSuitable = msg_composer_util_is_allow_creation_mode(item_path, media_type);
+                       }
+               }
+
+               msg_release_struct(&setting);
+       } else {
+               D_EMSG("msg_create_struct is failed");
+       }
+
+       /*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) {
+
+               char *file_ext = msg_common_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 (bIsSuitable) {
+                               th_data->need_ChangeResolution = false;
+                               D_MSG("Suitable");
+                       } else {
+                               th_data->need_ChangeResolution = true;
+                               D_MSG("Not Suitable");
+                       }
+
+                       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;
+                       }
+
+                       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;
+               }
+
+               if (bIsSuitable) {
+                       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);
+                       }
+               } else {
+                       D_MSG("Adding Item is not Suitable to add");
+                       return COMPOSER_RETURN_FAIL;
+               }
+       }
+
+       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;
@@ -67,12 +729,6 @@ static Evas_Object *__msg_ui_composer_body_create_main_field(MSG_COMPOSER_VIEW_D
        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);
-
-       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
-               elm_scroller_content_min_limit(scroller, 0, 1);
-               evas_object_size_hint_max_set(scroller, 9999, 250);
-       }
-
        evas_object_show(scroller);
 
        box = elm_box_add(parent);
@@ -97,6 +753,34 @@ static Evas_Object *__msg_ui_composer_body_create_main_field(MSG_COMPOSER_VIEW_D
        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;
@@ -108,8 +792,11 @@ COMPOSER_RETURN_TYPE_E __msg_ui_composer_body_read_data(MSG_COMPOSER_VIEW_DATA_S
 
                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 {
 
+       } 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;
@@ -127,6 +814,7 @@ static Evas_Object *__msg_ui_composer_body_create_send_button(MSG_COMPOSER_VIEW_
                return NULL;
 
        Evas_Object *button = NULL;
+       Evas_Object *icon = NULL;
 
        button = elm_button_add(parent);
        if (!button) {
@@ -134,18 +822,22 @@ static Evas_Object *__msg_ui_composer_body_create_send_button(MSG_COMPOSER_VIEW_
                return NULL;
        }
 
-       elm_object_style_set(button, "style2");
+       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);
 
-       elm_object_text_set(button, MSGC_STR_BUTTON_SEND);
+       icon = elm_icon_add(parent);
+       elm_icon_file_set(icon, MSGC_IMG_SEND_ICON, NULL);
+
+       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;
 }
 
@@ -178,6 +870,7 @@ Evas_Object *msg_ui_composer_body_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Obje
        }
 
        Evas_Object *layout = NULL;
+       Evas_Object *add_button = NULL;
        Evas_Object *main_field = NULL;
 
        layout = __msg_ui_compsoer_body_layout_create(cd, parent);
@@ -186,6 +879,12 @@ Evas_Object *msg_ui_composer_body_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Obje
                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 !!");
@@ -195,8 +894,9 @@ Evas_Object *msg_ui_composer_body_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Obje
        if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {
                elm_box_clear(cd->body_box);
                msg_ui_composer_body_add_page(cd);
-       } else {
+       } else if (cd->msg_type == COMPOSER_MSG_TYPE_MMS) {
 
+       } else {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] invalid message type");
                return NULL;
        }
@@ -208,13 +908,22 @@ Evas_Object *msg_ui_composer_body_create(MSG_COMPOSER_VIEW_DATA_S *cd, Evas_Obje
        }
 
        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)
+{
+
+}
+
 void msg_ui_composer_body_clear(MSG_COMPOSER_VIEW_DATA_S *cd)
 {
        D_ENTER;
@@ -228,15 +937,65 @@ void msg_ui_composer_body_clear(MSG_COMPOSER_VIEW_DATA_S *cd)
 
        for (i = page_count - 1; i >= 0; i--) {
                page_data = (MSG_COMPOSER_BODY_PAGE_S *)eina_list_nth(page_list, i);
-               msg_ui_composer_body_remove_page(cd, page_data->layout);
+               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;
+       }
+
+       if (pcomp_data->body_data.page_count < nPage + 1)
+               msg_ui_composer_body_add_page(pcomp_data);
+
+       pcomp_data->current_edit_entry = nPage;
+
+       char local_item_path[COMPOSER_FILEPATH_LEN_MAX + 1] = {0, };
+       /* copy temp file */
+       if (msg_ui_composer_common_get_file(pcomp_data, filepath, local_item_path, COMPOSER_FILEPATH_LEN_MAX) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("get file error");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       if (msg_ui_composer_body_insert_media(pcomp_data, local_item_path, filetype) != COMPOSER_RETURN_SUCCESS) {
+               D_EMSG("insert media error");
+               return COMPOSER_RETURN_FAIL;
+       }
+       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;
@@ -253,11 +1012,13 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_body_set_loaded_text(MSG_COMPOSER_VIEW_DA
        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);
+       char *markup_text = elm_entry_utf8_to_markup(body_text);
 
        elm_entry_entry_set(entry, markup_text);
 
-       g_free(markup_text);
+       if (markup_text)
+               g_free(markup_text);
+
        D_LEAVE;
        return COMPOSER_RETURN_SUCCESS;
 }
@@ -291,11 +1052,100 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_body_data_init(MSG_COMPOSER_VIEW_DATA_S *
        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) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] NULL parameter passed.");
+               return false;
+       }
+
+       int ucs2_len = 0;
+       int char_count = 0;
+       int cms_page = 0;
+       int cms_max_count = 0;
+       int char_encode = COMPOSER_CHAR_ENCODE_MAX;
+       char* body_text = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+       unsigned char ucs2_text[4000] = {0,};
+
+       if (body_text == NULL){
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] no text on there")
+               return false;
+       }
+
+       ucs2_len = msg_ui_composer_convert_UTF8ToUCS2(ucs2_text, 4000, body_text, strlen(body_text));
+       free(body_text);
+
+       char_encode = msg_ui_composer_body_entry_char_count(cd, ucs2_text, ucs2_len, &char_count);
+
+       if (char_encode == COMPOSER_CHAR_ENCODE_UNICODE) {
+               cms_max_count = COMPOSER_CMS_UNICODE_MAX_LEN * COMPOSER_CMS_MAX_PAGE;
+       } else if (char_encode == COMPOSER_CHAR_ENCODE_GSM7) {
+               cms_max_count = COMPOSER_CMS_GSM7_MAX_LEN * COMPOSER_CMS_MAX_PAGE;
+       } else {
+               return false;
+       }
+
+       D_LEAVE;
+       if (cms_page > COMPOSER_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;
+
+       if (!cd) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] composer data is NULL");
+               return EINA_FALSE;
+       }
+
+       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) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] 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) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] page data is NULL");
+                       return EINA_FALSE;
+               }
+
+               if (page_data->is_image_item && (strlen(page_data->image_file_path) > 0)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] composer message type MMS (image/video data exist)");
+                       return EINA_TRUE;
+               }
+
+               if (page_data->is_sound_item && (strlen(page_data->sound_file_path) > 0)) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] composer message type MMS (image/video data exist)");
+                       return EINA_TRUE;
+               }
+
+               if (__msg_ui_composer_is_mms_text(cd, page_data->entry) == true) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] number of body character is over CMS max count)");
+                       return EINA_TRUE;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] page_count value is not valid");
+               return EINA_FALSE;
+       }
+
+       return EINA_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;
 
index 4603077..d0eb248 100755 (executable)
  * limitations under the License.
  */
 
+
 #include <Elementary.h>
 #include <utilX.h>
 #include <Ecore_X.h>
-
+#include <aul.h>
+#include <mmf/mm_error.h>
+#include <mm_file.h>
+#include <mm_util_jpeg.h>
 #include <devman_haptic.h>
+
 #include "msg-ui-composer-common.h"
+#include "msg-ui-composer-subject.h"
 #include "msg-ui-composer-body.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},
+/*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", "audio/3gpp", COMPOSER_MEDIA_TYPE_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", "audio/mp4", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mp4", "audio/MP4A-LATM", COMPOSER_MEDIA_TYPE_VIDEO},
+       {"mp4", "audio/mpeg4", 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},
+};
+
 /* vib feedback apply when message type change*/
 static bool bVibrating;
 static int dev_handle;
 
 char *msg_ui_composer_edj_get(MSG_COMPOSER_VIEW_DATA_S *cd)
 {
-       if (cd->current_theme == MSG_UI_THEME_WHITE)
-               return MSGC_UI_WHITE_EDJ;
-
-       return MSGC_UI_DEFAULT_EDJ;     /*black*/
+       return MSGC_UI_DEFAULT_EDJ;
 }
 
 Evas_Object *msg_ui_composer_load_edj(Evas_Object *parent, const char *edj_file, const char *group)
@@ -103,6 +243,18 @@ Evas_Object *msg_ui_composer_bg_create(Evas_Object *parent)
     return bg;
 }
 
+Evas_Object *msg_ui_composer_toolbar_create(Evas_Object *parent)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *toolbar = NULL;
+
+       toolbar = elm_toolbar_add(parent);
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+       return toolbar;
+}
+
 int64 msg_composer_get_file_size(const char *path)
 {
        return ecore_file_size(path);
@@ -127,6 +279,123 @@ char *msg_common_get_file_ext(const char *a_pszfile_name)
        return NULL;
 }
 
+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;
+
+       if (a_pszfile_path == NULL)
+               return COMPOSER_MEDIA_TYPE_UNKNOWN;
+
+       pext = msg_common_get_file_ext(a_pszfile_path);
+       nmime_max = (sizeof(composer_mime_table) / sizeof(composer_mime_type_t));
+
+       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) {
+                       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)
+{
+       MMHandleType content_attrs = 0;
+       int ret = 0;
+
+       if (!file_path || !duration) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] file_path or duration is not exist");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       ret = mm_file_create_content_attrs(&content_attrs, file_path);
+       if (ret == MM_ERROR_NONE) {
+               char *error = NULL;
+
+               ret = mm_file_get_attrs(content_attrs, &error, MM_FILE_CONTENT_DURATION, duration, NULL);
+
+               if (ret != MM_ERROR_NONE) {
+                       if (error) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG]fail to mm_file_get_attrs() - ret(%x), error(%s)", ret, error);
+                               free(error);
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG]fail to mm_file_get_attrs() - ret(%x)", ret);
+                       }
+
+                       if (content_attrs)
+                               mm_file_destroy_content_attrs(content_attrs);
+
+                       return COMPOSER_RETURN_FAIL;
+               }
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG]file : %s, duration : %d", file_path, *duration);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG]fail to mm_file_create_content_attrs() - ret(%x)", ret);
+
+               if (content_attrs)
+                       mm_file_destroy_content_attrs(content_attrs);
+
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       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;
@@ -136,11 +405,145 @@ void msg_ui_composer_clear(MSG_COMPOSER_VIEW_DATA_S *cd)
        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);
+               msg_ui_composer_toolbar_top_item_change(cd, true);
+               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);
+               msg_ui_composer_toolbar_top_item_change(cd, false);
+               break;
+       default:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[DEBUG] invalid message type");
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       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;
@@ -200,77 +603,15 @@ void bundle_send_to_result(void *data, char *key, char *val)
        D_MSG("key = %s, val = %s", key, val);
 
        MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
-
-       bundle *b;
-       b = bundle_create();
-       bundle_add(b, key, val);
-
-       ug_send_result(cd->ug, b);
-
-       bundle_free(b);
-
-       D_LEAVE;
-}
-
-int msg_ui_composer_thread_id_get(MSG_HANDLE_T msg_handle, const char *recipient)
-{
-       char tmp_recipient[DEF_BUF_LEN] = {0,};
-       MSG_ERROR_T err = MSG_SUCCESS;
-       MSG_SORT_RULE_S sortRule = {0, };
-       MSG_THREAD_VIEW_LIST_S peerList = {0,};
-       int row;
-       char thread_addr_r[DEF_THREAD_ADDR_LEN] = {0};
-
-       sortRule.sortType = MSG_SORT_BY_THREAD_DATE;
-       sortRule.bAscending = false;
-
-       strncpy(tmp_recipient, recipient, sizeof(tmp_recipient)-1);
-       D_MSG("recipient = %s:%s, tmp recipient = %s", recipient, strdup(recipient), tmp_recipient);
-       g_strreverse(tmp_recipient);
-       D_MSG("tmp_recipient = %s", tmp_recipient);
-       err = msg_get_thread_view_list(msg_handle, &sortRule, &peerList);
-       for (row = 0; row < peerList.nCount; row++) {
-               if (strlen(msg_thread_view_get_address(peerList.msgThreadInfo[row]))) {
-                       strncpy(thread_addr_r, msg_thread_view_get_address(peerList.msgThreadInfo[row]), strlen(msg_thread_view_get_address(peerList.msgThreadInfo[row])));
-                       g_strreverse(thread_addr_r);
-                       if (g_ascii_strncasecmp(thread_addr_r, tmp_recipient, COMPARE_STRING_NUM) == 0) {
-                               D_MSG("FIND THREAD ADDRESS = %s", msg_thread_view_get_address(peerList.msgThreadInfo[row]));
-                               break;
-                       }
-               }
-       }
-
-       if (row >= peerList.nCount) {
-               msg_release_thread_view_list(&peerList);
-               D_MSG("CANNOT FIND THREAD");
-               return 0;
-       }
-
-       int retid = msg_thread_view_get_thread_id(peerList.msgThreadInfo[row]);
-       msg_release_thread_view_list(&peerList);
-       return retid;
-}
-
-char *msg_ui_composer_thread_recipient_get(MSG_HANDLE_T msg_handle, int inp_tid)
-{
-       MSG_ERROR_T err = MSG_SUCCESS;
-       MSG_SORT_RULE_S sortRule = {0, };
-       MSG_THREAD_VIEW_LIST_S peerList = {0,};
-       int row;
-       char *ret_recipient = NULL;
-       sortRule.sortType = MSG_SORT_BY_THREAD_DATE;
-       sortRule.bAscending = false;
-
-       err = msg_get_thread_view_list(msg_handle, &sortRule, &peerList);
-       for (row = 0; row < peerList.nCount; row++) {
-               if (inp_tid == msg_thread_view_get_thread_id(peerList.msgThreadInfo[row])) {
-                       ret_recipient = strdup(msg_thread_view_get_address(peerList.msgThreadInfo[row]));
-                       break;
-               }
+       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);
        }
-
-       msg_release_thread_view_list(&peerList);
-       return ret_recipient;
+       D_LEAVE;
 }
 
 bool msg_ui_composer_common_is_send_possible(MSG_COMPOSER_VIEW_DATA_S *cd)
@@ -285,7 +626,41 @@ bool msg_ui_composer_common_is_send_possible(MSG_COMPOSER_VIEW_DATA_S *cd)
        MSG_COMPOSER_BODY_S *body_data = &cd->body_data;
        MSG_COMPOSER_BODY_PAGE_S *page_data = NULL;
 
-       if (cd->msg_type == COMPOSER_MSG_TYPE_SMS) {
+       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));
@@ -354,7 +729,297 @@ void msg_ui_composer_common_play_vibration()
        D_LEAVE;
 }
 
-void msg_composer_entry_filter_remove_markup(void *data, Evas_Object *entry, char **text)
+COMPOSER_RETURN_TYPE_E msg_composer_common_get_image_in_video(const char *video_file_path, char *image_file_path)
+{
+       COMPOSER_MEDIA_TYPE_E media_type;
+       MMHandleType content_attrs = 0;
+       int ret;
+       int video_track_num = 0;
+       int video_w = 0, video_h = 0, thumbsize = 0;
+       void *thumbnail = 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 = mm_file_create_content_attrs(&content_attrs, video_file_path);
+       if (ret != MM_ERROR_NONE){
+               D_EMSG("Fail to get content of %s", video_file_path);
+               return COMPOSER_RETURN_FAIL;
+       }
+
+
+       mm_file_get_attrs(content_attrs, NULL, MM_FILE_CONTENT_VIDEO_TRACK_COUNT, &video_track_num, NULL);
+       if (video_track_num) {
+               mm_file_get_attrs(content_attrs, NULL, MM_FILE_CONTENT_VIDEO_WIDTH, &video_w,
+                                                                                               MM_FILE_CONTENT_VIDEO_HEIGHT, &video_h,
+                                                                                               MM_FILE_CONTENT_VIDEO_THUMBNAIL, &thumbnail, &thumbsize, NULL);
+
+               if (thumbnail) {
+                       ret = mm_util_jpeg_encode_to_file(image_file_path, thumbnail, video_w, video_h, MM_UTIL_JPEG_FMT_RGB888, 100);
+                       if (ret) {
+                               D_EMSG("Fail of save image file %s", image_file_path);
+                               mm_file_destroy_content_attrs(content_attrs);
+                               return COMPOSER_RETURN_FAIL;
+                       }
+               }
+       }
+
+       mm_file_destroy_content_attrs(content_attrs);
+       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;
+       const char *filename = NULL;
+       int i = 0;
+       char temp_file_path[COMPOSER_FILEPATH_LEN_MAX] = {0,};
+
+       if (ecore_file_exists(src_file_path) == EINA_FALSE) {
+               return COMPOSER_RETURN_FAIL;
+       }
+
+       filename = ecore_file_file_get(src_file_path);
+       if (filename) {
+               snprintf(temp_file_path, sizeof(temp_file_path)-1, "%s%s", cd->working_path, filename);
+
+               while(ecore_file_exists(temp_file_path)){
+                       bzero(temp_file_path, sizeof(temp_file_path));
+                       snprintf(temp_file_path, sizeof(temp_file_path)-1, "%s%d_%s", cd->working_path, i, filename);
+                       i++;
+
+                       if (i < 0) return COMPOSER_RETURN_FAIL;
+               }
+
+
+               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 {
+                       return COMPOSER_RETURN_FAIL;
+       }
+
+       D_LEAVE;
+       return COMPOSER_RETURN_SUCCESS;
+}
+
+static char *__get_item_tag(char *text)
+{
+       char *fulltext;
+       char *tagStart;
+       char *tagEnd;
+       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");
@@ -362,7 +1027,7 @@ void msg_composer_entry_filter_remove_markup(void *data, Evas_Object *entry, cha
        char *preedit_str = NULL;
        char *utf8_text = NULL;
        char *convert_text = NULL;
-       D_MSG("text %s", *text);
+       D_MSG("text [%s]", *text);
        /* Check preeditting text and return if it exist*/
        preedit_str = strstr(*text, "<preedit_sel>");
        if (preedit_str) return;
@@ -370,7 +1035,6 @@ void msg_composer_entry_filter_remove_markup(void *data, Evas_Object *entry, cha
        /* 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) {
@@ -428,70 +1092,237 @@ int msg_ui_composer_convert_UTF8ToUCS2(unsigned char *pDestText, int maxLength,
 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,};
-       MSGC_NOTIFY_ORIENT orient;
-       Evas_Object *parent_notify;
 
        D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
 
        if (tickertype == COMPOSER_TICKERNOTI_COUNT_MAX) {
                snprintf(popup_msg, sizeof(popup_msg)-1, MSGC_STR_NOTI_RECIPIENT_MAX, COMPOSER_RECIPIENT_COUNT_MAX);
-               parent_notify = cd->recipient->bx_main;
-               orient = MSGC_NOTIFY_ORIENT_BOTTOM;
        } else if (tickertype == COMPOSER_TICKERNOTI_DUP_RECP) {
                snprintf(popup_msg, sizeof(popup_msg)-1, MSGC_STR_NOTI_RECIPIENT_DUP);
-               parent_notify = cd->recipient->bx_main;
-               orient = MSGC_NOTIFY_ORIENT_BOTTOM;
        } else if (tickertype == COMPOSER_TICKERNOTI_INVALID_RECP) {
                snprintf(popup_msg, sizeof(popup_msg)-1, MSGC_STR_NOTI_RECIPIENT_INVALID);
-               parent_notify = cd->recipient->bx_main;
-               orient = MSGC_NOTIFY_ORIENT_BOTTOM;
        } else if (tickertype == COMPOSER_TICKERNOTI_CHANGED_SMS) {
                snprintf(popup_msg, sizeof(popup_msg)-1, MSGC_STR_NOTI_CHANGE_SMS);
-               parent_notify = cd->ly_body;
-               orient = MSGC_NOTIFY_ORIENT_BOTTOM;
+       } else if (tickertype == COMPOSER_TICKERNOTI_CHANGED_MMS) {
+               snprintf(popup_msg, sizeof(popup_msg)-1, MSGC_STR_NOTI_CHANGE_MMS);
+       } else if (tickertype == COMPOSER_TICKERNOTI_AUTO_SAVED) {
+               snprintf(popup_msg, sizeof(popup_msg)-1, _MSGSTR("IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"));
+       } else if (tickertype == COMPOSER_TICKERNOTI_NO_RECIPIENT) {
+               snprintf(popup_msg, sizeof(popup_msg)-1, _MSGSTR("IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"));
+       } else if (tickertype == COMPOSER_TICKERNOTI_MAXLENGHT_CHAR) {
+               snprintf(popup_msg, sizeof(popup_msg)-1, _MSGSTR("Maximum number of characters reached"));
        } else {
                return;
        }
 
-       if (cd->noti) {
-               evas_object_del(cd->noti);
+       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;
+               int 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");
        }
 
-       cd->noti = msg_ui_composer_notify_show(parent_notify, popup_msg, COMPOSER_STATUS_POPUP_DEFAULT_TIME, orient, false);
+       D_LEAVE;
 }
 
-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)
 {
        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);
+       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) {
                D_MSG("Imf status SHOW");
-               edje_object_signal_emit(_EDJ(cd->ly_body), "body_contract","*");
+               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);
+               msg_ui_composer_change_body_scroll_size(cd, keypad_h);
        } else if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
                D_MSG("Imf status HIDE");
+               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 index, int type)
+{
+       D_ENTER;
+       D_MSG("index = %d, type = %d", index, type);
+
+       int font_size = MSG_APP_FONT_SIZE_NORMAL;
 
-               if (msg_ui_composer_common_is_send_possible(cd) == false) {
-                       D_MSG("body_EXPAND and send button HIDE ");
-                       edje_object_signal_emit(_EDJ(cd->ly_body), "body_expand","*");
+       if (type == COMPOSER_MSG_FONT_SIZE) {
+               switch (index) {
+               case MSG_APP_FONT_SIZE_INDEX_HUGE:
+                       font_size = MSG_APP_FONT_SIZE_HUGE;
+                       break;
+               case MSG_APP_FONT_SIZE_INDEX_LARGE:
+                       font_size = MSG_APP_FONT_SIZE_LARGE;
+                       break;
+               case MSG_APP_FONT_SIZE_INDEX_NORMAL:
+                       font_size = MSG_APP_FONT_SIZE_NORMAL;
+                       break;
+               case MSG_APP_FONT_SIZE_INDEX_SMALL:
+                       font_size = MSG_APP_FONT_SIZE_SMALL;
+                       break;
+               case MSG_APP_FONT_SIZE_INDEX_TINY:
+                       font_size = MSG_APP_FONT_SIZE_TINY;
+                       break;
+               case MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT:
+               default:
+                       D_MSG("get defulat size index = %d", index);
+                       font_size = MSG_APP_FONT_SIZE_NORMAL;
+                       break;
+               }
+       } else if (type == COMPOSER_SYSTEM_FONT_SIZE) {
+               switch (index) {
+               case MSG_SYS_FONT_SIZE_INDEX_GIANT:
+                       font_size = MSG_APP_FONT_SIZE_HUGE + 4;
+                       break;
+               case MSG_SYS_FONT_SIZE_INDEX_HUGE:
+                       font_size = MSG_APP_FONT_SIZE_HUGE;
+                       break;
+               case MSG_SYS_FONT_SIZE_INDEX_LARGE:
+                       font_size = MSG_APP_FONT_SIZE_LARGE;
+                       break;
+               case MSG_SYS_FONT_SIZE_INDEX_NORMAL:
+                       font_size = MSG_APP_FONT_SIZE_NORMAL;
+                       break;
+               case MSG_SYS_FONT_SIZE_INDEX_SMALL:
+                       font_size = MSG_APP_FONT_SIZE_SMALL;
+                       break;
+               default:
+                       D_MSG("get defulat size index = %d", index);
+                       font_size = MSG_APP_FONT_SIZE_NORMAL;
+                       break;
                }
        } else {
-               D_EMSG("imf status INVALID");
+               D_EMSG("Invalid font type");
        }
 
        D_LEAVE;
+
+       return font_size;
 }
 
-void msg_ui_composer_evas_object_delete_cb(void *data, Evas * e, Evas_Object *obj, void *event_info)
+void msg_ui_composer_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd)
 {
        D_ENTER;
-       if (!data || !obj)
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is Invalid");
+
+       int converted_size = 0;
+
+       if (cd->font_size.last_updated_setting == COMPOSER_SYSTEM_FONT_SIZE) {
+               converted_size = cd->font_size.sys_font_size;
+       } else if (cd->font_size.last_updated_setting == COMPOSER_MSG_FONT_SIZE) {
+               converted_size = cd->font_size.msg_font_size;
+       } else {
+               D_EMSG("Invalid type");
                return;
+       }
+
+       /* 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_body_apply_font_size(cd, font_style_str);
 
-       D_PRINT("delete = %s[%p]", (char *)data, obj);
        D_LEAVE;
 }
+
index 30ee459..ce535d7 100755 (executable)
 
 /* includes*/
 #include <Ecore_X.h>
-#include <MapiTransport.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-core.h"
 #include "msg-ui-composer-common.h"
 #include "msg-ui-composer-external.h"
 #include "msg-ui-composer-bubble.h"
 
+#include "msg-ui-common-utility.h"
+
 #define COMPOSER_BUNDLE_ATTACH_TOKEN "\n"
 #define COMPOSER_BUNDLE_RECP_TOKEN ","
 
 /*==================================================================================================
 *                                                              FUNCTION IMPLEMENTATIONS
 *==================================================================================================*/
-static Eina_Bool __msg_ui_composer_edit_check(MSG_COMPOSER_VIEW_DATA_S *cd)
+static COMPOSER_EDIT_STATE_E __msg_ui_composer_edit_check(MSG_COMPOSER_VIEW_DATA_S *cd)
 {
        D_ENTER;
-       D_MSG_RETVM_IF(cd == NULL, EINA_FALSE, "Composer Data == NULL");
+       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) {
-                       return EINA_TRUE;
+                       isvalid_address = true;
                }
 
                const char *entry_str = msg_ui_composer_recipient_entry_text_get(cd->recipient);
                if (entry_str && strlen(entry_str)) {
-                       return EINA_TRUE;
+                       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;
        }
 
-       if (msg_ui_composer_common_is_send_possible(cd) == true) {
-               return EINA_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;
        }
 
-       return EINA_FALSE;
+       if (!strcmp(key_name, VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE)) {
+/*
+ * 0 : giant : 106
+ * 1 : huge : 81
+ * 2 : large : 64
+ * 3 : normal (default) : 44
+ * 4 : small : 36
+*/
+               index = vconf_keynode_get_int(key);
+               font_size = msg_ui_composer_get_font_size(index, (int)COMPOSER_SYSTEM_FONT_SIZE);
+               converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+
+               cd->font_size.last_updated_setting = COMPOSER_SYSTEM_FONT_SIZE;
+               cd->font_size.sys_font_size = converted_size;
+       } else if (!strcmp(key_name, VCONFKEY_MSG_APP_FONT_SIZE)) {
+               index = vconf_keynode_get_int(key);
+               font_size = msg_ui_composer_get_font_size(index, (int)COMPOSER_MSG_FONT_SIZE);
+               converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+
+               cd->font_size.last_updated_setting = COMPOSER_MSG_FONT_SIZE;
+               cd->font_size.msg_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;
 }
 
-/* function definitions*/
-static void __msg_ui_composer_bundle_data_process(MSG_COMPOSER_VIEW_DATA_S *cd, bundle *b_data)
+static void __msgc_init_font_size(MSG_COMPOSER_VIEW_DATA_S *cd)
 {
        D_ENTER;
        D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
-       D_MSG_RETM_IF(b_data == NULL, "Bundle Data is NULL");
 
-       const char *bundle_txt = NULL;
+       int index = 0;
+       int font_size = 0;
+       int converted_size = 0;
 
-       if ((bundle_txt = bundle_get_val(b_data, MSG_BUNDLE_KEY_FORWARD))) {
-               int msg_id = atoi(bundle_txt);
-               msg_ui_composer_message_init();
-               msg_ui_composer_message_load_message(cd->msg_handle, msg_id);
-               msg_ui_composer_message_set_loaded_data(cd);
-               msg_ui_composer_message_destroy();
+       if (msg_common_get_font_size(&index, &font_size) != TRUE) {
+               D_EMSG("msg_common_get_font_size() is failed !!");
        } else {
-               if ((bundle_txt = bundle_get_val(b_data, MSG_BUNDLE_KEY_TO))) {
-                       bool bMaxCount = false;
-                       bool bInvalidNum = false;
-                       bool bDup = false;
-                       Eina_List *recipient_list = make_tokenize_list(bundle_txt, ",");
-                       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;
-                                               }
+               D_MSG("selected index = %d", index);
+       }
 
-                                               if (msg_ui_composer_recipient_duplicate_check(cd->recipient, recipient) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
-                                                       bDup = true;
-                                                       g_free(recipient);
-                                                       continue;
-                                               }
+       if (index == MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT) {
+               if (vconf_get_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &index) < 0) {
+                       D_EMSG("vconf_get_int(system font_size) is failed !!");
+                       index = MSG_SYS_FONT_SIZE_INDEX_NORMAL;
+               }
 
-                                               if (msg_ui_composer_recipient_vaild_check(recipient) == EINA_FALSE) {
-                                                       bInvalidNum = true;
-                                               }
+               font_size = msg_ui_composer_get_font_size(index, (int)COMPOSER_SYSTEM_FONT_SIZE);
+               converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
 
-                                               msg_ui_composer_recipient_append(cd->recipient, recipient, 0);
-                                               g_free(recipient);
-                                       }
+               cd->font_size.last_updated_setting = COMPOSER_SYSTEM_FONT_SIZE;
+               cd->font_size.sys_font_size = converted_size;
+
+       } else {
+               converted_size = (MSGC_BODY_FONT_SIZE * font_size) / MSG_APP_FONT_SIZE_NORMAL;
+
+               cd->font_size.last_updated_setting = COMPOSER_MSG_FONT_SIZE;
+               cd->font_size.msg_font_size = converted_size;
+       }
+       D_MSG("font size = %d", 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;
                                }
 
-                               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_common_tickernoti(cd, COMPOSER_TICKERNOTI_INVALID_RECP);
-                               } else if (bDup) {
-                                       msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_DUP_RECP);
+                               if (msg_ui_composer_recipient_duplicate_check(cd->recipient, recipient) == COMPOSER_RETURN_RECIPIENT_DUPLICATE) {
+                                       bDup = true;
+                                       g_free(recipient);
+                                       continue;
                                }
-                       }
 
-               } else if ((bundle_txt = bundle_get_val(b_data, MSG_BUNDLE_KEY_NUMBER_INDEX))) {
-                       char *recipient, *index;
-                       char *save_p;
-                       int idx;
+                               if (msg_ui_composer_recipient_vaild_check(recipient) == EINA_FALSE) {
+                                       bInvalidNum = true;
+                               } else {
+                                       msg_ui_composer_recipient_append(cd->recipient, recipient, 0);
+                               }
 
-                       char *copy_string = MSG_STRDUP(bundle_txt);
-                       if (copy_string) {
+                               g_free(recipient);
+                       }
+               }
 
-                               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;
-                                       }
+               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 (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_common_tickernoti(cd, COMPOSER_TICKERNOTI_INVALID_RECP);
-                                                       }
-                                                       msg_ui_composer_recipient_append(cd->recipient, recipient, idx);
-                                               }
-                                       }
-                               }
+       D_LEAVE;
+}
 
-                               g_free(copy_string);
+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");
+
+       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 ((bundle_txt = bundle_get_val(b_data, MSG_BUNDLE_KEY_BODY))) {
-                       msg_ui_composer_body_set_loaded_text(cd, bundle_txt, 0);
+       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");
+
+       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_composer_sent_status_cb(MSG_HANDLE_T Handle, MSG_SENT_STATUS_S *pStatus, void *pUserParam)
+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");
 
-       return;
+       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 __reset_popup_ok_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msgc_get_service_app_svc_op(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle, char *operation)
 {
        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(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 {
+                               D_MSG("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);
+                       }
 
-       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+                       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);
+                       }
 
-       msg_ui_composer_reset(cd, cd->msg_bundle);
+                       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 (cd->msg_bundle) {
-               bundle_free(cd->msg_bundle);
-               cd->msg_bundle = NULL;
+                       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_MSG("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;
 }
 
-static void __reset_popup_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+/* function definitions*/
+static void __msg_ui_composer_bundle_data_process(MSG_COMPOSER_VIEW_DATA_S *cd, 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");
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+       D_MSG_RETM_IF(svc_handle == NULL, "Bundle Data is NULL");
 
-       MSGC_EVAS_OBJECT_DEL(cd->popup_end);
+       char *bundle_txt = NULL;
+
+       service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_FORWARD, &bundle_txt);
+
+       if (bundle_txt) {
+               int msg_id = atoi(bundle_txt);
+               msg_ui_composer_message_init();
+               msg_ui_composer_message_load_message(cd->msg_handle, msg_id);
+               msg_ui_composer_message_set_loaded_data(cd);
+               msg_ui_composer_message_destroy();
+       } else {
+               char *operation = NULL;
+               if (service_get_operation(svc_handle, &operation) == SERVICE_ERROR_NONE && operation) { /* composer launching via service */
+                       cd->isAppControl = true;
+
+                       __msgc_get_service_app_svc_op(cd, svc_handle, operation);
+
+               } else {        /* internal ug mode */
+                       cd->isAppControl = false;
+
+                       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;
+                                       char *index;
+                                       char *save_p;
+                                       int idx;
+
+                                       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);
+                                                                       }
+                                                               }
+                                                       }
+                                               }
 
-       if (cd->msg_bundle) {
-               bundle_free(cd->msg_bundle);
-               cd->msg_bundle = NULL;
+                                               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)
@@ -207,11 +522,6 @@ static void __end_popup_ok_btn_clicked_cb(void *data, Evas_Object *obj, void *ev
 
        MSGC_EVAS_OBJECT_DEL(cd->popup_end);
 
-       if (cd->destroy_req) {
-               bundle_send_to_result(cd, MSG_BUNDLE_KEY_COMPOSER_RESPONSE, MSG_BUNDLE_VALUE_RET_YES);
-               cd->destroy_req = false;
-       }
-
        ug_destroy_me(cd->ug);
 }
 
@@ -223,10 +533,7 @@ static void __end_popup_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void
 
        MSGC_EVAS_OBJECT_DEL(cd->popup_end);
 
-       if (cd->destroy_req) {
-               bundle_send_to_result(cd, MSG_BUNDLE_KEY_COMPOSER_RESPONSE, MSG_BUNDLE_VALUE_RET_NO);
-               cd->destroy_req = false;
-       }
+       cd->isclosed = false;
 
        msg_ui_composer_last_focus_load(cd);
        D_LEAVE;
@@ -236,15 +543,21 @@ 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, MSGC_STR_POP_DISCARD_Q, 0);
-       Evas_Object * btn1 = elm_button_add(popup);
+       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);
+       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_set(popup, EINA_TRUE);
+       evas_object_show(popup);
 
        cd->popup_end = popup;
 
@@ -258,11 +571,94 @@ static void __naviframe_back_btn_clicked_cb(void *data, Evas_Object *obj, void *
        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 (__msg_ui_composer_edit_check(cd) == EINA_TRUE) {
+               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 (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) {
+                               msg_ui_composer_save_message(cd->msg_handle);
+
+                               /* show saved ticker popup */
+                               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_AUTO_SAVED);
+                       }
+
+                       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->bubble_count == 0) {
+                               int err = MSG_SUCCESS;
+
+                               if (bubble_data->isDraft == true)
+                                       err = msg_delete_thread_message_list(bubble_data->msgHandle, bubble_data->threadId);
+
+                               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");
+                               }
+                       } else {
+                               /* delete draft message */
+                               msg_struct_list_s msg_list;
+
+                               if (msg_get_message_list(cd->msg_handle, MSG_DRAFT_ID, bubble_data->threadId, 0, 0, &msg_list) == MSG_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) {
+                               msg_ui_composer_save_message(cd->msg_handle);
+                               /* show saved ticker popup */
+                               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_AUTO_SAVED);
+                       }
+
+                       msg_ui_composer_message_destroy();
+               }
+               /* clear recipient_list of bubble composer */
+               msg_ui_composer_recipient_clear_recipient_list(cd);
+
        }
 
        ug_destroy_me(cd->ug);
@@ -270,6 +666,211 @@ static void __naviframe_back_btn_clicked_cb(void *data, Evas_Object *obj, void *
        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_release_struct(&msgInfo);
+       msg_ui_composer_message_destroy();
+
+       elm_object_item_signal_emit(cd->navi_it, "elm,state,optionheader,close", "");
+       elm_object_signal_emit(cd->navi_title_layout, "elm,state,more,hide", "");
+       cd->navi_optionheader_opened = EINA_FALSE;
+       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);
+
+       D_LEAVE;
+}
+
+static Evas_Object *__toolbar_btn_create(Evas_Object *parent, char *text, char *style)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(parent == NULL, NULL, "parent == NULL");
+
+       Evas_Object *button = elm_button_add(parent);
+
+       if (style)
+               elm_object_style_set(button, style);
+       else
+               elm_object_style_set(button, "naviframe_control/default");
+
+       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);
+
+       if (text) {
+               char *popup_msg = elm_entry_utf8_to_markup(text);
+               if (popup_msg) {
+                       elm_object_text_set(button, popup_msg);
+                       g_free(popup_msg);
+               } else {
+                       elm_object_text_set(button, text);
+               }
+       }
+
+       evas_object_show(button);
+
+       D_LEAVE;
+       return button;
+}
+
+static Evas_Object *__toolbar_top_create(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+
+       Evas_Object *toolbar = NULL;
+       int isBubble = 0;
+       toolbar = elm_toolbar_add(cd->navi_bar);
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+       if (!toolbar) {
+               D_EMSG("toolbar is NULL");
+               return NULL;
+       }
+
+       elm_object_style_set(toolbar, "naviframe");
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               /* create delete button */
+               Evas_Object *delete_button = __toolbar_btn_create(toolbar, dgettext("sys_string", "IDS_COM_SK_DELETE"), NULL);
+               evas_object_smart_callback_add(delete_button, "clicked", msg_ui_bubble_option_header_delete_clicked_cb, cd);
+
+               cd->toolbar_btn[CONTROLBAR_ITEM_1] = delete_button;
+               cd->toolbar_item_top[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, cd);
+               elm_object_item_part_content_set(cd->toolbar_item_top[CONTROLBAR_ITEM_1], "object", delete_button);
+
+               isBubble = 1;
+       }
+
+       /* create preview button */
+       Evas_Object *preview_button = __toolbar_btn_create(toolbar, MSGC_STR_PREVIEW, NULL);
+       evas_object_smart_callback_add(preview_button, "clicked", __preview_btn_clicked_cb, cd);
+       cd->toolbar_btn[CONTROLBAR_ITEM_1+isBubble] = preview_button;
+       cd->toolbar_item_top[CONTROLBAR_ITEM_1+isBubble] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, cd);
+       elm_object_item_part_content_set(cd->toolbar_item_top[CONTROLBAR_ITEM_1+isBubble], "object", preview_button);
+
+       /* create page duration button */
+       char buf[DEF_BUF_LEN_S + 1] = {0,};
+       int pageduration = msg_ui_composer_pageduration_value_get(cd);
+       snprintf(buf, sizeof(buf), _MSGSTR("IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"), pageduration);
+
+       Evas_Object *duration_button = __toolbar_btn_create(toolbar, buf, "naviframe_control/multiline");
+       evas_object_smart_callback_add(duration_button, "clicked", __pageduration_btn_clicked_cb, cd);
+       cd->toolbar_btn[CONTROLBAR_ITEM_2+isBubble] = duration_button;
+       cd->toolbar_item_top[CONTROLBAR_ITEM_2+isBubble] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, cd);
+       elm_object_item_part_content_set(cd->toolbar_item_top[CONTROLBAR_ITEM_2+isBubble], "object", duration_button);
+
+       COMPOSER_MSG_TYPE_E checked_type = msg_ui_composer_check_message_type(cd);
+       if (checked_type == COMPOSER_MSG_TYPE_MMS) {
+               msg_ui_composer_toolbar_top_item_change(cd, false);
+       } else {
+               msg_ui_composer_toolbar_top_item_change(cd, true);
+       }
+
+       D_LEAVE;
+
+       return toolbar;
+}
+
+void msg_ui_composer_toolbar_top_update(MSG_COMPOSER_VIEW_DATA_S *cd)
+{
+       D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL");
+
+       /* update pageduration */
+       char buf[DEF_BUF_LEN_S + 1] = {0,};
+       int pageduration = 0;
+       int isBubble = 0;
+       char *markup_str = NULL;
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER)
+               isBubble = 1;
+
+       pageduration = msg_ui_composer_pageduration_value_get(cd);
+       snprintf(buf, sizeof(buf), _MSGSTR("IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"), pageduration);
+
+       markup_str = elm_entry_utf8_to_markup(buf);
+       if (markup_str) {
+               elm_object_text_set(cd->toolbar_btn[CONTROLBAR_ITEM_2+isBubble], markup_str);
+               g_free(markup_str);
+       } else {
+               elm_object_text_set(cd->toolbar_btn[CONTROLBAR_ITEM_2+isBubble], buf);
+       }
+}
+
+static void __naviframe_more_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, "Navi item is NULL");
+
+       if (cd->navi_optionheader_opened) {
+               elm_object_item_signal_emit(cd->navi_it, "elm,state,optionheader,close", "");
+               elm_object_signal_emit(cd->navi_title_layout, "elm,state,more,hide", "");
+       } else {
+               Evas_Object *content = NULL;
+
+               if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+                       PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+
+                       if (bubble_data && bubble_data->title_optionheader_opened) {
+                               elm_object_signal_emit(cd->navi_title_layout, "elm,state,title,hide", "");
+                               if (bubble_data->title_genlist)
+                                       msg_ui_bubble_close_title_menu_genlist(bubble_data);
+                               bubble_data->title_optionheader_opened = false;
+                       }
+               }
+
+               content = elm_object_item_part_content_unset(cd->navi_it, "optionheader");
+
+               if (content) {
+                       if (content != cd->toolbar_top) {
+                               PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+                               int i = 0;
+                               for (i = 0; i < MSG_BUBBLE_CONTROLBAR_ITEM_NUM; i++) {
+                                       if (bubble_data->toolbar_item[i]) {
+                                               elm_object_item_del(bubble_data->toolbar_item[i]);
+                                               bubble_data->toolbar_item[i] = NULL;
+                                       }
+                               }
+                       }
+                       evas_object_del(content);
+               }
+
+               cd->toolbar_top  =  __toolbar_top_create(cd);
+               elm_object_item_part_content_set(cd->navi_it, "optionheader", cd->toolbar_top);
+
+               elm_object_item_signal_emit(cd->navi_it, "elm,state,optionheader,open", "");
+               elm_object_signal_emit(cd->navi_title_layout, "elm,state,more,show", "");
+       }
+
+       cd->navi_optionheader_opened = !cd->navi_optionheader_opened;
+
+       D_LEAVE;
+}
+
 static Evas_Object *__naviframe_back_btn_create(Evas_Object *parent, void *data, bool title)
 {
        D_ENTER;
@@ -294,6 +895,25 @@ static Evas_Object *__naviframe_back_btn_create(Evas_Object *parent, void *data,
        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");
+       elm_object_focus_allow_set(btn, EINA_FALSE);
+
+       evas_object_smart_callback_add(btn, "clicked", __naviframe_more_btn_clicked_cb, data);
+       evas_object_show(btn);
+       D_LEAVE;
+       return btn;
+}
+
 static char *__working_dir_create(void)
 {
        D_ENTER;
@@ -328,47 +948,98 @@ static char *__working_dir_create(void)
        return NULL;
 }
 
-static void  __msg_ui_composer_reset_select_popup(MSG_COMPOSER_VIEW_DATA_S *cd)
+void msg_ui_composer_reset_request(MSG_COMPOSER_VIEW_DATA_S *cd, service_h svc_handle)
 {
        D_ENTER;
 
-       Evas_Object *popup = msg_ui_composer_status_popup_show(cd, MSGC_STR_POP_DISCARD_Q, 0);
-       Evas_Object * btn1 = elm_button_add(popup);
-       elm_object_text_set(btn1, MSGC_STR_BUTTON_OK);
-       elm_object_part_content_set(popup, "button1", btn1);
-       evas_object_smart_callback_add(btn1, "clicked", __reset_popup_ok_btn_clicked_cb, cd);
-       Evas_Object * btn2 = elm_button_add(popup);
-       elm_object_text_set(btn2, MSGC_STR_BUTTON_CANCEL);
-       elm_object_part_content_set(popup, "button2", btn2);
-       evas_object_smart_callback_add(btn2, "clicked", __reset_popup_cancel_btn_clicked_cb, cd);
-       cd->popup_end = popup;
+       if (!cd)
+               return;
 
-       D_LEAVE;
-       return;
-}
+       COMPOSER_EDIT_STATE_E edit_state = __msg_ui_composer_edit_check(cd);
+       D_MSG("edit_state = %d", edit_state);
 
-void msg_ui_composer_reset_request(MSG_COMPOSER_VIEW_DATA_S *cd)
-{
-       D_ENTER;
+       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 (!cd) return;
+                       if (msg_ui_composer_get_message_data(cd) == COMPOSER_RETURN_SUCCESS) {
+                               msg_ui_composer_save_message(cd->msg_handle);
+                       }
 
-       if (__msg_ui_composer_edit_check(cd)) {
-               /*select reset popup show*/
-               __msg_ui_composer_reset_select_popup(cd);
-       } else {
-               /*process reset*/
-               msg_ui_composer_reset(cd, cd->msg_bundle);
-               if (cd->msg_bundle) {
-                       bundle_free(cd->msg_bundle);
-                       cd->msg_bundle = NULL;
+                       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->bubble_count == 0) {
+                               int err = MSG_SUCCESS;
+
+                               if (bubble_data->isDraft == true)
+                                       err = msg_delete_thread_message_list(bubble_data->msgHandle, bubble_data->threadId);
+
+                               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;
+
+                               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) {
+                               msg_ui_composer_save_message(cd->msg_handle);
+                       }
+
+                       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;
 }
 
-COMPOSER_RETURN_TYPE_E msg_ui_composer_reset(MSG_COMPOSER_VIEW_DATA_S *cd, bundle *bundle)
+/*
+ *     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)
@@ -378,32 +1049,40 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_reset(MSG_COMPOSER_VIEW_DATA_S *cd, bundl
                ecore_file_recursive_rm(cd->working_path);
                g_free(cd->working_path);
        }
+
        cd->working_path = __working_dir_create();
+
        if (cd->working_path == NULL) {
                D_EMSG("[ASSERT] Fail of make working dir!!!");
                return COMPOSER_RETURN_FAIL;
        }
 
-       if (bundle) {
+       if (svc_handle) {
                msg_ui_composer_clear(cd);
                /*Change to Bubble view*/
-               if (bundle_get_val(bundle, MSG_BUNDLE_KEY_THREAD_ID) || bundle_get_val(bundle, MSG_BUNDLE_KEY_MSG_ID)) {
+               char *thread_id = NULL;
+               char *msg_id = 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);
+               if (thread_id || msg_id) {
                        if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER) {
                                D_MSG("chagne bubble view");
                                msg_ui_composer_change_bubble_view(cd);
-                               msg_ui_bubble_parse_bubble_data(cd->bubble_data, bundle);
+                               msg_ui_bubble_parse_bubble_data(cd->bubble_data, svc_handle);
                                msg_ui_bubble_start_view(cd->bubble_data);
-                               msg_ui_bubble_composer_navi_title_set((void *)cd);
-                               msg_ui_bubble_add_normal_control_item(cd->bubble_data);
-                               msg_ui_composer_recipient_set_recipient(cd, cd->bubble_data->threadAddr);
+                               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, bundle);
+                               msg_ui_bubble_parse_bubble_data(cd->bubble_data, svc_handle);
                                msg_ui_bubble_list_load(cd->bubble_data);
-                               msg_ui_bubble_composer_navi_title_set((void *)cd);
-                               msg_ui_bubble_add_normal_control_item(cd->bubble_data);
-                               msg_ui_composer_recipient_set_recipient(cd, cd->bubble_data->threadAddr);
+                               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) {
@@ -415,14 +1094,14 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_reset(MSG_COMPOSER_VIEW_DATA_S *cd, bundl
                                }
                                msg_ui_composer_change_composer_view(cd);
                        }
-                       __msg_ui_composer_bundle_data_process(cd, bundle);
+                       __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, bundle *bundle)
+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");
@@ -431,21 +1110,23 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_start(MSG_COMPOSER_VIEW_DATA_S *cd, bundl
        cd->state = COMPOSER_STATE_TYPE_RUNNING;
 
        /*bundle data parsing */
-       if (bundle) {
+       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, bundle);
+                       __msg_ui_composer_bundle_data_process(cd, svc_handle);
+
+                       if (cd->attachlist == NULL)
+                               cd->isLoad = false;
 
-                       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, bundle);
+                       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);
 
-                       msg_ui_bubble_composer_navi_title_set((void *)cd);
-                       msg_ui_bubble_add_normal_control_item(cd->bubble_data);
-                       msg_ui_composer_recipient_set_recipient(cd, bubble_data->threadAddr);
+                       /* set recipient list for bubble composer */
+                       msg_ui_composer_recipient_set_recipient_list(cd, cd->bubble_data->threadId);
                }
        }
 
@@ -471,20 +1152,36 @@ 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;
+       if (!cd)
+               return COMPOSER_RETURN_FAIL;
 
        D_PRINT("===== Composer UG Destroy Start =====");
        contacts_svc_disconnect();
 
-       if (cd->msg_bundle) {
-               bundle_free(cd->msg_bundle);
-               cd->msg_bundle = NULL;
+       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->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->noti) {
-               D_PRINT("----- Notify Delete -----");
-               evas_object_del(cd->noti);
-               cd->noti = NULL;
+       if (cd->last_focus_idler) {
+               D_PRINT("----- idler Delete -----");
+               ecore_idler_del(cd->last_focus_idler);
+               cd->last_focus_idler = NULL;
        }
 
        if (cd->popup_conform) {
@@ -498,11 +1195,17 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_destroy(MSG_COMPOSER_VIEW_DATA_S *cd)
                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_ui_comp_core_close_msg_handle(&cd->msg_handle);
+       msg_close_msg_handle(&cd->msg_handle);
 
        D_PRINT("----- Delete Popup  -----");
        msg_ui_composer_popup_delete_all(cd);
@@ -513,26 +1216,68 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_destroy(MSG_COMPOSER_VIEW_DATA_S *cd)
                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;
+       }
+       msg_common_reset_font_size("entry");
+
        D_PRINT("===== Composer UG Destroy End =====");
 
        D_LEAVE;
        return ret;
 }
 
-void msg_ui_composer_destroy_request(MSG_COMPOSER_VIEW_DATA_S *cd)
+COMPOSER_RETURN_TYPE_E msg_ui_composer_rotate(MSG_COMPOSER_VIEW_DATA_S *cd, COMPOSER_ROTATE_TYPE_E rotate)
 {
        D_ENTER;
-       D_MSG_RETM_IF(cd == NULL, "Composer Data == NULL");
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "Composer Data == 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");
+
+                       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 {
+                       elm_layout_theme_set(cd->base, "layout", "application", "noindicator");/*hide indicator in Landscape*/
+
+                       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;
+               } else {
+                       if (cd->bubble_data)
+                               cd->bubble_data->isRotate = true;
+               }
+
+               /* change body scroller size */
+               msg_ui_composer_change_body_scroll_size(cd, 0);
 
-       if (__msg_ui_composer_edit_check(cd) == EINA_TRUE) {
-               cd->destroy_req = true;
-               __msg_ui_composer_end_popup(cd);
        } else {
-               bundle_send_to_result(cd, MSG_BUNDLE_KEY_COMPOSER_RESPONSE, MSG_BUNDLE_VALUE_RET_YES);
-               ug_destroy_me(cd->ug);
+               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)
@@ -545,13 +1290,13 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_init(MSG_COMPOSER_VIEW_DATA_S *cd)
        }
 
        /* create message handle */
-       if (msg_ui_comp_core_open_msg_handle(&cd->msg_handle) != COMPOSER_RETURN_SUCCESS) {
+       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_ui_comp_core_reg_sent_status_cb(cd->msg_handle, __msg_ui_composer_sent_status_cb, cd) != COMPOSER_RETURN_SUCCESS) {
+       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;
        }
@@ -568,21 +1313,39 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_init(MSG_COMPOSER_VIEW_DATA_S *cd)
                return COMPOSER_RETURN_FAIL;
        }
 
-
        /* set default message type is SMS */
        cd->msg_type = COMPOSER_MSG_TYPE_SMS;
 
-       /*set currnet_theme */
+       if(cd->mms_max_size == 0) {
+               msg_struct_t setting = msg_create_struct(MSG_STRUCT_SETTING_MSGSIZE_OPT);
 
-       char *current_theme = msg_common_get_current_theme_name();
-       if (g_strcmp0(current_theme, MSG_THEME_WHITE_HD) == 0)
-               cd->current_theme = MSG_UI_THEME_WHITE;
-       else
-               cd->current_theme = MSG_UI_THEME_BLUE_HD;
+               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("[DEBUG] msg max size = [%d KB] !!!", cd->mms_max_size);
 
-       if (current_theme)
-               free(current_theme);
+                       cd->mms_max_size = cd->mms_max_size * 1024;
+               }
+               msg_release_struct(&setting);
+       }
 
+       /* set default font size*/
+       __msgc_init_font_size(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;
 }
@@ -598,15 +1361,14 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd)
        D_MSG_RETVM_IF(cd->base == NULL, COMPOSER_RETURN_FAIL, "base layout is NULL");
 
        Evas_Object *navi_frame = NULL;
-
-       /* State Set */
-       cd->state = COMPOSER_STATE_TYPE_CREATE;
+       Evas_Object *more_button = NULL;
        Evas_Object *content_layout = NULL;
        Elm_Object_Item *navi_it = NULL;
-
        Evas_Object *conform = NULL;
        Evas_Object *back_btn = NULL;
-       Evas_Object *tool_bar = NULL;
+
+       /* State Set */
+       cd->state = COMPOSER_STATE_TYPE_CREATE;
 
        /* Create naviframe */
        navi_frame = elm_naviframe_add(cd->base);
@@ -688,26 +1450,35 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd)
 
        /*Push content to navi frame*/
        if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
-               back_btn = __naviframe_back_btn_create(navi_frame, (void *)cd, true);
-               navi_it = elm_naviframe_item_push(navi_frame, MSGC_STR_NEW_MESSAGE, NULL, NULL, conform, NULL);
-               elm_object_item_part_content_set(navi_it, "title_right_btn", back_btn);
+               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, back_btn, NULL, conform, NULL);
-               tool_bar = msg_ui_bubble_create_controlbar(navi_frame, cd->bubble_data);
-               elm_object_item_part_content_set(navi_it, "controlbar", tool_bar);
        }
 
+       navi_it = elm_naviframe_item_push(navi_frame, NULL, NULL, NULL, conform, "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;
+
        /* set navibar to main layout (base) */
        elm_object_part_content_set(cd->base, "elm.swallow.content", navi_frame);
 
-       evas_object_event_callback_add(navi_frame, EVAS_CALLBACK_DEL, msg_ui_composer_evas_object_delete_cb, "navibar");
-       evas_object_event_callback_add(content_layout, EVAS_CALLBACK_DEL, msg_ui_composer_evas_object_delete_cb, "content_layout");
-       evas_object_event_callback_add(conform, EVAS_CALLBACK_DEL, msg_ui_composer_evas_object_delete_cb, "conform");
-
        D_LEAVE;
        return COMPOSER_RETURN_SUCCESS;
 
@@ -715,34 +1486,61 @@ error_return:
        return COMPOSER_RETURN_FAIL;
 }
 
-COMPOSER_RETURN_TYPE_E msg_ui_composer_bubble_data_set(MSG_COMPOSER_VIEW_DATA_S *cd, const char *address, const char *name, int contact_id, int thread_id)
+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(address ==  NULL, COMPOSER_RETURN_FAIL, "address is NULL");
        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;
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread ID = %d", bubble_data->threadId);
 
-       snprintf(bubble_data->threadAddr, DEF_THREAD_ADDR_LEN, "%s", address);
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread Adress =%s", bubble_data->threadAddr);
+       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 (name) {
-               snprintf(bubble_data->threadName, DEF_THREAD_NAME_LEN, "%s", name);
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Thread Name =%s", bubble_data->threadName);
-       }
+       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;
+                       }
+               }
 
-       if (contact_id > 0) {
-               bubble_data->contactId = contact_id;
+               msg_release_list_struct(&addrList);
        } else {
-               bubble_data->contactId = 0;
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[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
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "[ERROR] msg_get_trhead returns error [%d", err);
+
+       msg_release_struct(&threadInfo);
+
        return COMPOSER_RETURN_SUCCESS;
 }
 
@@ -801,14 +1599,8 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_change_bubble_view(MSG_COMPOSER_VIEW_DATA
        cd->bubble_data = (void *)bubble_data;
 
        /*Change naviframe layout for bubble*/
-       Evas_Object *cancel = elm_object_item_part_content_unset(cd->navi_it, "title_right_btn");
-       evas_object_del(cancel);
-
-       Evas_Object *toolbar = msg_ui_bubble_create_controlbar(cd->navi_bar, cd->bubble_data);
-       elm_object_item_part_content_set(cd->navi_it, "controlbar", toolbar);
-
        Evas_Object *cancel_btn = __naviframe_back_btn_create(cd->navi_bar, (void *)cd, false);
-       elm_object_item_part_content_set(cd->navi_it, "prev_btn", cancel_btn);
+       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'.
@@ -824,53 +1616,166 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_change_bubble_view(MSG_COMPOSER_VIEW_DATA
        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) {
+       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);
+
+               if (cd->navi_it) {
+                       elm_object_item_signal_emit(cd->navi_it, "elm,state,optionheader,close", "");
+                       elm_object_signal_emit(cd->navi_title_layout, "elm,state,more,hide", "");
+                       elm_object_signal_emit(cd->navi_title_layout, "elm,state,title,hide", "");
+                       cd->navi_optionheader_opened = EINA_FALSE;
+               }
+
        } 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, bundle *b)
+void msg_ui_composer_bubble_del_all(void *data, service_h svc_handle)
 {
        D_ENTER;
 
        MSG_COMPOSER_VIEW_DATA_S *cd = data;
        D_MSG_RETM_IF(cd == NULL, "Composer data is NULL");
 
-       ug_send_result(cd->ug, b);
+       ug_send_result(cd->ug, svc_handle);
 }
 
-void msg_ui_bubble_composer_navi_title_set(void *data)
+void msg_ui_composer_toolbar_top_item_change(MSG_COMPOSER_VIEW_DATA_S *cd, bool smstype)
 {
        D_ENTER;
+       D_MSG_RETM_IF(cd == NULL, "Composer data is NULL");
+
+       int isBubble = 0;
+
+       if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+               isBubble = 1;
+
+               PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+               if (bubble_data->bubble_count <= 0) {
+                       elm_object_item_disabled_set(cd->toolbar_item_top[CONTROLBAR_ITEM_1], EINA_TRUE);
+                       elm_object_focus_allow_set(cd->toolbar_btn[CONTROLBAR_ITEM_1], EINA_FALSE);
+                       elm_object_disabled_set(cd->toolbar_btn[CONTROLBAR_ITEM_1], EINA_TRUE);
+               }
+       }
+
+       if (smstype == true) {
+               if (cd->toolbar_item_top[CONTROLBAR_ITEM_1]) {
+                       elm_object_item_disabled_set(cd->toolbar_item_top[CONTROLBAR_ITEM_1+isBubble], EINA_TRUE);
+                       elm_object_focus_allow_set(cd->toolbar_btn[CONTROLBAR_ITEM_1+isBubble], EINA_FALSE);
+                       elm_object_disabled_set(cd->toolbar_btn[CONTROLBAR_ITEM_1+isBubble], EINA_TRUE);
+
+                       elm_object_item_disabled_set(cd->toolbar_item_top[CONTROLBAR_ITEM_2+isBubble], EINA_TRUE);
+                       elm_object_focus_allow_set(cd->toolbar_btn[CONTROLBAR_ITEM_2+isBubble], EINA_FALSE);
+                       elm_object_disabled_set(cd->toolbar_btn[CONTROLBAR_ITEM_2+isBubble], EINA_TRUE);
+               }
+       } else {
+               if (cd->toolbar_item_top[CONTROLBAR_ITEM_1]) {
+                       elm_object_item_disabled_set(cd->toolbar_item_top[CONTROLBAR_ITEM_1+isBubble], EINA_FALSE);
+                       elm_object_focus_allow_set(cd->toolbar_btn[CONTROLBAR_ITEM_1+isBubble], EINA_TRUE);
+                       elm_object_disabled_set(cd->toolbar_btn[CONTROLBAR_ITEM_1+isBubble], EINA_FALSE);
+
+                       elm_object_item_disabled_set(cd->toolbar_item_top[CONTROLBAR_ITEM_2+isBubble], EINA_FALSE);
+                       elm_object_focus_allow_set(cd->toolbar_btn[CONTROLBAR_ITEM_2+isBubble], EINA_TRUE);
+                       elm_object_disabled_set(cd->toolbar_btn[CONTROLBAR_ITEM_2+isBubble], EINA_FALSE);
+               }
+       }
+       D_LEAVE;
+}
+
+Evas_Object *msg_ui_composer_create_navi_title_bar(void *data)
+{
+       D_ENTER;
+
+       if (!data) {
+               D_EMSG("[ERROR] data is NULL");
+               return NULL;
+       }
 
-       if (!data)
+       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 = data;
        PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
 
-       if (bubble_data->contactId > 0) {
-               if (bubble_data->threadName[0] != '\0')
-                       elm_object_item_text_set(cd->navi_it, bubble_data->threadName);
-               else
-                       elm_object_item_text_set(cd->navi_it, dgettext("sys_string", "IDS_COM_BODY_NO_NAME"));
+       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
+                               elm_object_text_set(title_button, bubble_data->addr_list.addr_info[0].address);
+               } 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
+                               snprintf(title_text, sizeof(title_text), "%s +%d", bubble_data->addr_list.addr_info[0].address, 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 {
-               if (bubble_data->threadAddr[0] != '\0')
-                       elm_object_item_text_set(cd->navi_it, bubble_data->threadAddr);
-               else
-                       elm_object_item_text_set(cd->navi_it, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+               D_EMSG("Invalid msg_ui_mode [%d]", cd->msg_ug_mode);
+               return;
        }
-
-       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..5b56bb2
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* 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 __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 */
+       cd->page_duration = page_duration;
+
+       msg_ui_composer_toolbar_top_update(cd);
+
+       MSGC_EVAS_OBJECT_DEL(cd->popup_conform);
+       MSGC_EVAS_OBJECT_DEL(cd->custom_popup);
+       cd->page_duration_entry = NULL;
+}
+
+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->popup_conform);
+       MSGC_EVAS_OBJECT_DEL(cd->custom_popup);
+       cd->page_duration_entry = NULL;
+}
+
+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");
+       int page_duration = MSGC_PAGE_DURATION_MIN;
+
+       if (cd->page_duration != 0)
+               page_duration = cd->page_duration;
+       else
+               page_duration = COMPOSER_PAGE_DEFAULT_DURATION;
+
+       return page_duration;
+}
+
+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 *content = NULL;
+       Evas_Object *entry = NULL;
+       Evas_Object *conform = 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;
+       char duration_str[DEF_BUF_LEN] = {0,};
+       char popup_msg[DEF_BUF_LEN] = {0,};
+
+       content = elm_layout_add(cd->main_window);
+       conform = msg_ui_composer_conformant_create(cd->main_window, content);
+       if (!conform) {
+               D_EMSG("conform is NULL");
+               return;
+       }
+
+       cd->popup_conform = conform;
+
+       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(content);
+       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);
+
+       snprintf(popup_msg, sizeof(popup_msg), _MSGSTR("IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"), MSGC_PAGE_DURATION_MIN);
+       elm_object_part_text_set(layout, "elm.text", popup_msg);
+
+       entry = elm_entry_add(content);
+       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);
+       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, content, 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;
+
+       elm_object_focus_set(entry, EINA_TRUE);
+
+       D_LEAVE;
+       return;
+
+error_return:
+
+       MSGC_EVAS_OBJECT_DEL(cd->page_duration_entry);
+       MSGC_EVAS_OBJECT_DEL(content);
+       MSGC_EVAS_OBJECT_DEL(cd->popup_conform);
+
+       D_LEAVE;
+}
index 6fa49f7..9daf196 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #include "msg-ui-composer-common.h"
 #include "msg-ui-composer-util.h"
 #include "msg-ui-composer-popup.h"
@@ -29,7 +30,7 @@ void msg_ui_composer_popup_delete_all(void *data)
        D_ENTER;
        MSG_COMPOSER_VIEW_DATA_S *cd = data;
 
-       Evas_Object * popup;
+       Evas_Object *popup;
        EINA_LIST_FREE(cd->popup_list, popup) {
                if (popup)
                        evas_object_del(popup);
@@ -49,7 +50,7 @@ void msg_ui_composer_status_popup_response_cb(void *data, Evas_Object *obj, void
        D_LEAVE;
 }
 
-static void __popup_delete_cb(void *data, Evas * e, Evas_Object *obj, void *event_info)
+static void __popup_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
        MSG_COMPOSER_VIEW_DATA_S *cd;
@@ -62,8 +63,7 @@ static void __popup_delete_cb(void *data, Evas * e, Evas_Object *obj, void *even
 
        cd = (MSG_COMPOSER_VIEW_DATA_S *)data;
 
-       D_PRINT("delete = %s[%p]", (char *)data, obj);
-
+       D_PRINT("delete = [%p]", obj);
 
        if (cd->popup_list) {
                D_MSG("popup list count = %d", eina_list_count(cd->popup_list));
@@ -72,41 +72,20 @@ static void __popup_delete_cb(void *data, Evas * e, Evas_Object *obj, void *even
                        msg_ui_composer_last_focus_load(cd);
                }
        } else {
-
                D_EMSG("popup_list is not exist");
        }
 
        D_LEAVE;
 }
 
-Evas_Object *msg_ui_composer_notify_show(Evas_Object *parent, const char *msg, int time, MSGC_NOTIFY_ORIENT orient, bool is_horizon_mode)
+void msg_ui_composer_status_noti_show(const char *msg)
 {
        D_ENTER;
+       D_MSG_RETM_IF(msg == NULL, "msg is NULL");
 
-       Evas_Object *notify;
-       Evas_Object *content_layout;
-
-       notify = elm_notify_add(parent);
-       elm_notify_orient_set(notify, orient);
-
-       content_layout = elm_layout_add(notify);
-       elm_object_content_set(notify, content_layout);
-
-       if (is_horizon_mode == true)
-               elm_layout_theme_set(content_layout, "standard", "selectioninfo", "horizontal/bottom_12");
-       else
-               elm_layout_theme_set(content_layout, "standard", "selectioninfo", "vertical/bottom_12");
-
-       if (msg)
-               elm_object_text_set(content_layout, msg);
-
-       if (time)
-               elm_notify_timeout_set(notify, time);
-
-       evas_object_show(notify);
+       status_message_post(msg);
 
        D_LEAVE;
-       return notify;
 }
 
 /*
@@ -145,6 +124,39 @@ Evas_Object *msg_ui_composer_status_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, con
        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, 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_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;
@@ -156,7 +168,8 @@ Evas_Object *msg_ui_composer_progress_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, c
        Evas_Object *lb;
 
        popup = elm_popup_add(cd->main_window);
-       if (!popup) return NULL;
+       if (!popup)
+               return NULL;
 
        Evas_Object *box;
        box = elm_box_add(popup);
@@ -170,12 +183,11 @@ Evas_Object *msg_ui_composer_progress_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, c
        evas_object_show(progressbar);
        elm_progressbar_pulse(progressbar, EINA_TRUE);
 
-
        lb = elm_label_add(popup);
        elm_object_style_set(lb, "popup_description/default");
        evas_object_size_hint_align_set(lb, EVAS_HINT_FILL, 0.0);
        evas_object_size_hint_weight_set(lb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_object_text_set(lb,msg);
+       elm_object_text_set(lb, msg);
        evas_object_show(lb);
 
        elm_box_pack_end(box, lb);
@@ -196,7 +208,7 @@ Evas_Object *msg_ui_composer_progress_popup_show(MSG_COMPOSER_VIEW_DATA_S *cd, c
 /*
        list type popup
 */
-Evas_Object *msg_ui_composer_list_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, const char * title, Evas_Object *list)
+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");
@@ -207,10 +219,14 @@ Evas_Object *msg_ui_composer_list_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, con
        if (popup == NULL)
                return NULL;
 
-       elm_object_style_set(popup, "menustyle");
+       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);
+                 elm_object_part_text_set(popup, "title,text", title);
 
        if (list)
                elm_object_content_set(popup, list);
@@ -225,29 +241,70 @@ Evas_Object *msg_ui_composer_list_popup_create(MSG_COMPOSER_VIEW_DATA_S *cd, con
        return popup;
 }
 
-Eina_Bool msg_ui_composer_popup_exist(void * data)
+/*
+       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;
+
+       elm_object_style_set(popup, "customstyle");
+
+       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;
+       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;
+
+       if (eina_list_count(cd->popup_list) > 0)
+               return EINA_TRUE;
+       else
+               return EINA_FALSE;
 }
 
-void msg_ui_composer_popup_focus(void * data)
+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;
+       if (!cd || !cd->popup_list)
+               return;
 
        p = eina_list_nth(cd->popup_list,0);
 
-       if (!p) return;
+       if (!p)
+               return;
 
        elm_object_focus_set(p, EINA_TRUE);
 }
index 743c2c8..999b830 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #include "msg-ui-composer-data.h"
 #include "msg-ui-composer-util.h"
 #include "msg-ui-composer-common.h"
@@ -270,13 +271,9 @@ static int   __predictsearch_genlist_item_append(PREDICTSEARCH_S *ps, const int
        int param_get_int;
        int param_get_addr;
        int param_get_name;
-       int param_get_first;
-       int param_get_last;
 
        const char *recipient;
        const char *display;
-       const char *first, *last;
-       char * maked_display;
        int i = 0 ;
        Evas_Object * genlist = ps->glist_ps;
 
@@ -284,22 +281,16 @@ static int   __predictsearch_genlist_item_append(PREDICTSEARCH_S *ps, const int
                param_get_int = CTS_LIST_NUM_CONTACT_ID_INT;
                param_get_addr = CTS_LIST_NUM_NUMBER_STR;
                param_get_name =  CTS_LIST_NUM_CONTACT_DISPLAY_STR;
-               param_get_first = CTS_LIST_NUM_CONTACT_FIRST_STR;
-               param_get_last = CTS_LIST_NUM_CONTACT_LAST_STR;
        } else if (ps->state == COMPOSER_PREDICTSEARCH_LOG) {
                /*Nothing to Do*/
        } else if (ps->state == COMPOSER_PREDICTSEARCH_NUMBER) {
                param_get_int = CTS_LIST_NUM_CONTACT_ID_INT;
                param_get_addr = CTS_LIST_NUM_NUMBER_STR;
                param_get_name =  CTS_LIST_NUM_CONTACT_DISPLAY_STR;
-               param_get_first = CTS_LIST_NUM_CONTACT_FIRST_STR;
-               param_get_last = CTS_LIST_NUM_CONTACT_LAST_STR;
        } else if (ps->state == COMPOSER_PREDICTSEARCH_EMAIL){
                param_get_int = CTS_LIST_EMAIL_CONTACT_ID_INT;
                param_get_addr = CTS_LIST_EMAIL_ADDR_STR;
                param_get_name =  CTS_LIST_EMAIL_CONTACT_DISPLAY_STR;
-               param_get_first = CTS_LIST_EMAIL_CONTACT_FIRST_STR;
-               param_get_last = CTS_LIST_EMAIL_CONTACT_LAST_STR;
        } else {
                ps->state = COMPOSER_PREDICTSEARCH_END;
                D_MSG("Predict State is END");
@@ -335,21 +326,6 @@ static int   __predictsearch_genlist_item_append(PREDICTSEARCH_S *ps, const int
                                                strncpy(ct_item->display_name,
                                                                display,
                                                                COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX);
-                                       } else {
-
-                                               first = contacts_svc_value_get_str(row_info, param_get_first);
-                                               last = contacts_svc_value_get_str(row_info, param_get_last);
-                                               maked_display = make_display_name(first, last);
-                                               if (maked_display) {
-                                                       strncpy(ct_item->display_name,
-                                                                       maked_display,
-                                                                       COMPOSER_RECIPIENT_ADDRESS_VAL_LEN_MAX);
-                                                       g_free(maked_display);
-                                               } else {
-                                                       strncpy(ct_item->display_name,
-                                                                       recipient,
-                                                                       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);
index 998a914..18e0d27 100755 (executable)
@@ -14,6 +14,7 @@
  * 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-predictsearch.h"
 #include "msg-ui-composer-recipient.h"
 #include "msg-ui-composer-recipient-callback.h"
+#include "msg-ui-composer-attachment.h"
 
 /*==================================================================================================
 *                                                              FUNCTION IMPLEMENTATIONS
 *==================================================================================================*/
-
 void msg_ui_recipient_bt_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
@@ -36,6 +37,9 @@ void msg_ui_recipient_bt_clicked_cb(void *data, Evas_Object *obj, void *event_in
        const char *bt_label = elm_object_text_get(obj);
        D_MSG("clicked bt label [%s]", bt_label);
 
+       /* temporarily, set focus to back_btn to resolve invalid focus tree issue of ly_bt show/hide*/
+       elm_object_focus_set(cd->back_btn, EINA_TRUE);
+
        if (!g_strcmp0(bt_label, MSGC_STR_RECENT)) {
                msg_ui_composer_external_call(cd, COMPOSER_EXT_TYPE_LOG, NULL);
        } else if (!g_strcmp0(bt_label, MSGC_STR_CONTACT)) {
@@ -50,9 +54,9 @@ void msg_ui_recipient_bt_clicked_cb(void *data, Evas_Object *obj, void *event_in
 void msg_ui_recipient_multibuttonentry_focused_cb(void *data, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
-       MSG_COMPOSER_VIEW_DATA_S *cd;
-       RECIPIENT_S *rd;
-       PREDICTSEARCH_S *ps;
+       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");
@@ -64,6 +68,9 @@ void msg_ui_recipient_multibuttonentry_focused_cb(void *data, Evas_Object *obj,
        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);
 
        if (ps->IsShow == EINA_FALSE)
                msg_ui_composer_bt_show(rd);
@@ -95,6 +102,11 @@ void msg_ui_recipient_multibuttonentry_clicked_cb(void *data, Evas_Object *obj,
        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;
@@ -119,6 +131,17 @@ void msg_ui_recipient_entry_changed_cb(void *data, Evas_Object *obj, void *event
        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);
+       }
+
+       msg_ui_composer_recipient_addr_type_set(rd, addr_type);
+       D_MSG("recipient is invalid recipient addr_type = %d", addr_type);
+
+       D_MSG("saved_str = %s", saved_str);
+       D_MSG("recipient_str = %s", recipient_str);
+
        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);
@@ -140,7 +163,7 @@ void msg_ui_recipient_entry_changed_cb(void *data, Evas_Object *obj, void *event
        D_LEAVE;
 }
 
-void msg_ui_recipient_multibuttonentry_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
+void msg_ui_recipient_multibuttonentry_item_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
        MSG_COMPOSER_VIEW_DATA_S *cd = data;
@@ -160,27 +183,35 @@ void msg_ui_recipient_multibuttonentry_item_selected_cb(void *data, Evas_Object
                return;
        }
 
-       elm_multibuttonentry_item_selected_set(item, EINA_FALSE);
-
+       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);
 
-       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)
-                       elm_multibuttonentry_item_append(rd->mbe, entry_txt, NULL, NULL);
+       D_LEAVE;
+}
 
-               g_free(entry_txt);
-       }
+static Eina_Bool __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");
 
-       if (r_item->type != COMPOSER_RECP_ADDR_INVALID && r_item->index > 0 ) {
-       } else {
-               elm_entry_entry_set(entry, elm_object_item_text_get(item));
-               elm_entry_cursor_line_end_set(entry);
-               elm_object_item_del(item);
+       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;
 }
 
 Eina_Bool msg_ui_recipient_multibuttonentry_item_verify_cb(Evas_Object *obj, const char *item_label, void *item_data, void *data)
@@ -196,6 +227,8 @@ Eina_Bool msg_ui_recipient_multibuttonentry_item_verify_cb(Evas_Object *obj, con
 
        RECIPIENT_ITEM_S *r_item = NULL;
 
+       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) {
@@ -223,10 +256,20 @@ Eina_Bool msg_ui_recipient_multibuttonentry_item_verify_cb(Evas_Object *obj, con
 
        if (r_item->type == COMPOSER_RECP_ADDR_INVALID) {
                D_EMSG("recipient is invalid recipient");
-               msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_INVALID_RECP);
+               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(__show_invalid_address_popup, cd);
+
+               g_free(r_item);
+               return EINA_FALSE;
        }
 
        g_free(r_item);
+       D_LEAVE;
        return EINA_TRUE;
 }
 
@@ -256,12 +299,20 @@ void msg_ui_recipient_multibuttonentry_item_added_cb(void *data, Evas_Object *ob
                } 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_multibuttonentry_item_deleted_cb(void *data, Evas_Object *obj, void *event_info)
@@ -280,5 +331,35 @@ void msg_ui_recipient_multibuttonentry_item_deleted_cb(void *data, Evas_Object *
        D_MSG("===== END of recipient_item free =====");
        g_free(recipient_item);
 
+       msg_ui_composer_message_type_check_and_change(cd);
+       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;
 }
+
index 0b5f845..c908bc1 100755 (executable)
  * 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"
 
 /*==================================================================================================
 *                                                              FUNCTION IMPLEMENTATIONS
 *==================================================================================================*/
-static void __mbe_delete_cb(void *data, Evas * e, Evas_Object *obj, void *event_info)
+static void __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;
+}
+
+static void __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 CTS_NUM_TYPE_HOME:
+                       strncpy(return_string, _SYSSTR("IDS_COM_BODY_HOME"), sizeof(return_string) - 1);
+                       break;
+               case CTS_NUM_TYPE_WORK:
+                       strncpy(return_string, _SYSSTR("IDS_COM_BODY_WORK"), sizeof(return_string) - 1);
+                       break;
+               case CTS_NUM_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 CTS_EMAIL_TYPE_HOME:
+                       strncpy(return_string, _SYSSTR("IDS_COM_BODY_HOME"), sizeof(return_string) - 1);
+                       break;
+               case CTS_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;
+}
+
+static char *__change_number_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));
+       }
+}
+
+static void  __change_number_del_cb(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);
+}
+
+static void __change_number_popup_create(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 error_code = CTS_SUCCESS;
+       int count = 0;
+       CTSstruct *contact = NULL;
+       GSList *get_list = NULL;
+       GSList *iter = NULL;
+       RECIPIENT_ITEM_S *r_item = NULL;
+       CONTACT_ITEM_S *ct_item = 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");
+
+       error_code = contacts_svc_get_contact(r_item->index, &contact);
+       if (error_code) {
+               D_MSG("error_code %d", error_code);
+               return;
+       }
+
+       rd->change_number_itc.item_style = "2text.3";
+       rd->change_number_itc.func.text_get = __change_number_text_get;
+       rd->change_number_itc.func.content_get = NULL;
+       rd->change_number_itc.func.state_get = NULL;
+       rd->change_number_itc.func.del = __change_number_del_cb;
+
+       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);
+
+       contacts_svc_struct_get_list(contact, CTS_CF_NUMBER_LIST, &get_list);
+       iter = get_list;
+
+       while (NULL != iter) {
+               int phone_type = contacts_svc_value_get_int(iter->data, CTS_NUM_VAL_TYPE_INT);
+
+               if (phone_type != CTS_NUM_TYPE_ASSISTANT) {
+                       const char *content = contacts_svc_value_get_str(iter->data, CTS_NUM_VAL_NUMBER_STR);
+                       D_MSG("[%d][%d]%s", r_item->index, phone_type, 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 = phone_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, __change_number_popup_list_clicked_cb, cd);
+
+                               count++;
+                       } else {
+                               D_EMSG("calloc is failed");
+                       }
+
+               }
+
+               iter = g_slist_next(iter);
+       }
+
+       get_list = NULL;
+       contacts_svc_struct_get_list(contact, CTS_CF_EMAIL_LIST, &get_list);
+       iter = get_list;
+
+       while (NULL != iter) {
+               int email_type = contacts_svc_value_get_int(iter->data, CTS_EMAIL_VAL_TYPE_INT);
+               const char *content = contacts_svc_value_get_str(iter->data, CTS_EMAIL_VAL_ADDR_STR);
+
+               D_MSG("[%d][%d]%s", r_item->index, email_type, 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 = email_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, __change_number_popup_list_clicked_cb, cd);
+
+                       count++;
+               } else {
+                       D_EMSG("calloc is failed");
+               }
+
+               iter = g_slist_next(iter);
+       }
+
+       if (count >= 5) {
+               popup = msg_ui_composer_list_popup_create(cd, _SYSSTR("IDS_COM_SK_SELECT"), genlist, NULL);
+       } else {
+               Evas_Object *box = NULL;
+
+               box = elm_box_add(cd->main_window);
+               evas_object_size_hint_min_set(box, MSGC_RECIPIENT_POPUP_W * elm_scale_get(),
+                                                                                       MSGC_RECIPIENT_POPUP_LIST_H * count * elm_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", __change_number_popup_btn_clicked_cb, cd);
+
+       rd->popup_change_number = popup;
+
+       D_LEAVE;
+}
+
+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;
+       const char *label_selected_bt = NULL;
+
+       mbe_item = rd->sel_mbe_item;
+       if (!mbe_item) {
+               D_EMSG("There is no Selected MBE item");
+               return;
+       }
+
+       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);
+
+       elm_object_item_del(mbe_item);
+       msg_ui_composer_message_type_check_and_change(cd);
+
+       D_LEAVE;
+}
+
+static void __selected_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"))) {
+                       __change_number_popup_create(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);
+                       /* temporarily, 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);
+                       msg_ui_composer_launch_contact_list_ug(cd, CT_UG_REQUEST_UPDATE_WITH_NUM, r_item->recipient);
+                       /* temporarily, 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;
+}
+
+static void __selected_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_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, __selected_popup_list_clicked_cb, cd);
+       elm_list_item_append(list, _SYSSTR("IDS_COM_BODY_EDIT"), NULL, NULL, __selected_popup_list_clicked_cb, cd);
+
+       if (cd->isAppControl) {
+               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, __selected_popup_list_clicked_cb, cd);
+                       } else {
+                               elm_list_item_append(list, _MSGSTR("IDS_MSGC_OPT_VIEW_CONTACT"), NULL, NULL, __selected_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, __selected_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", __selected_popup_btn_clicked_cb, cd);
+
+       rd->popup_selected = popup;
+
+       D_LEAVE;
+}
+
+static void __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 *recipient_item;
+       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) {
-               recipient_item = elm_object_item_data_get(mbe_item);
-               if (recipient_item) {
-                       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);
+               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);
@@ -58,7 +496,9 @@ static Eina_Bool __move_to_scroll_end(void *data)
 
        rd->scroll_down_idler = NULL;
 
-       Evas_Coord scr_w, scr_h, box_h;
+       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);
@@ -106,7 +546,8 @@ static void __mbe_contracted_cb(void *data, Evas_Object *obj, void *event_info)
 static Evas_Object *__mbe_create(RECIPIENT_S *rd)
 {
        D_ENTER;
-       Evas_Object *mbe, *entry;
+       Evas_Object *mbe;
+       Evas_Object *entry;
        Ecore_IMF_Context *context;
 
        char label_txt[TO_FIELD_LABEL_SIZE_MAX] = { 0, };
@@ -135,7 +576,7 @@ static Evas_Object *__mbe_create(RECIPIENT_S *rd)
        /*set mbe callback */
        evas_object_smart_callback_add(mbe, "item,added", msg_ui_recipient_multibuttonentry_item_added_cb, rd->cd);
        evas_object_smart_callback_add(mbe, "item,deleted", msg_ui_recipient_multibuttonentry_item_deleted_cb, rd->cd);
-       evas_object_smart_callback_add(mbe, "item,clicked", msg_ui_recipient_multibuttonentry_item_selected_cb, rd->cd);
+       evas_object_smart_callback_add(mbe, "item,clicked", msg_ui_recipient_multibuttonentry_item_clicked_cb, rd->cd);
        evas_object_smart_callback_add(mbe, "expanded", __mbe_expanded_cb, rd);
        evas_object_smart_callback_add(mbe, "contracted", __mbe_contracted_cb, rd);
 
@@ -153,6 +594,7 @@ static Evas_Object *__mbe_create(RECIPIENT_S *rd)
 
        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;
@@ -178,13 +620,13 @@ static Evas_Object *__msg_ui_composer_recipient_to_layout_create(RECIPIENT_S *rd
        D_ENTER;
        if (rd == NULL)
                return NULL;
+
        Evas_Object *layout;
        Evas_Object *parent  = rd->parent;
 
        layout = msg_ui_composer_load_edj(parent, MSGC_UI_DEFAULT_EDJ, MSGC_EDJ_GRP_RECIPIENT_TO_FIELD);
-       if (!layout) {
+       if (!layout)
                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);
@@ -225,7 +667,8 @@ static Evas_Object *__msg_ui_composer_recipient_ly_bt_create(RECIPIENT_S *rd)
 {
        D_ENTER;
 
-       Evas_Object *layout, *bt;
+       Evas_Object *layout;
+       Evas_Object *bt;
 
        layout = msg_ui_composer_load_edj(rd->parent, MSGC_UI_DEFAULT_EDJ, MSGC_EDJ_GRP_RECIPIENT_BT_FIELD);
        evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
@@ -259,8 +702,8 @@ static Evas_Object *__msg_ui_composer_recipient_ly_bt_create(RECIPIENT_S *rd)
 static void __msg_ui_composer_recipient_layout_create(RECIPIENT_S *r)
 {
        D_ENTER;
-       if(r->parent == NULL)
-               return;
+       D_MSG_RETM_IF(r->parent == NULL, "r->parent is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)r->cd;
 
        /*Create layout*/
        Evas_Object *bx;
@@ -274,8 +717,12 @@ static void __msg_ui_composer_recipient_layout_create(RECIPIENT_S *r)
        r->ly_to = __msg_ui_composer_recipient_to_layout_create(r);
        elm_box_pack_end(r->bx_main, r->ly_to);
 
-       r->ly_bt = __msg_ui_composer_recipient_ly_bt_create(r);
-       evas_object_hide(r->ly_bt);
+       if (!cd->isAppControl) {
+               r->ly_bt = __msg_ui_composer_recipient_ly_bt_create(r);
+               evas_object_hide(r->ly_bt);
+       }
+
+       evas_object_event_callback_add(r->bx_main, EVAS_CALLBACK_RESIZE, msg_ui_recipient_resize_cb, r);
 
        D_LEAVE;
 }
@@ -392,7 +839,8 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_duplicate_check(RECIPIENT_S *rd
 
        RECIPIENT_ITEM_S *recipient_item;
        Elm_Object_Item *mbe_item;
-       COMPOSER_UTIL_ADDRTYPE_E inp_type, tmp_type;
+       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, };
@@ -438,7 +886,7 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_duplicate_check(RECIPIENT_S *rd
                                                break;
                                        }
                                } else {
-                                       D_EMSG("Unknown type recipient");
+                                       D_EMSG("Unknown type recipient TODO check recipient");
                                }
                        }
 
@@ -475,6 +923,23 @@ int msg_ui_composer_recipient_count_get(RECIPIENT_S *rd)
        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;
@@ -501,6 +966,11 @@ COMPOSER_RECP_ADDR_E msg_ui_composer_recipient_type_get(const char *recipient)
                        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;
@@ -536,6 +1006,16 @@ Eina_Bool msg_ui_composer_recipient_vaild_check(const char *recipient)
                        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;
@@ -545,10 +1025,68 @@ Eina_Bool msg_ui_composer_recipient_vaild_check(const char *recipient)
        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;
+       if (rd->mbe == NULL)
+               return;
 
        elm_object_focus_set(rd->mbe, EINA_TRUE);
        D_LEAVE;
@@ -558,7 +1096,7 @@ 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;
+       Elm_Object_Item *mbe_item;
        Eina_List *invalid_list = NULL;
 
        if (rd->mode == 1) {
@@ -580,7 +1118,13 @@ Eina_List *msg_ui_composer_recipient_invalid_recipient_list_get(RECIPIENT_S *rd)
                        mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
                }
 
-       } else {
+       } /*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;
@@ -623,8 +1167,10 @@ RECIPIENT_S *msg_ui_composer_recipient_create(Evas_Object *p, int mode, void *da
        RECIPIENT_S *rd;
 
        rd = calloc(1, sizeof(RECIPIENT_S));
-       if (rd == NULL)
+       if (rd == NULL) {
+               D_EMSG("calloc is failed");
                return NULL;
+       }
 
        rd->parent = p;
        rd->cd = data;
@@ -649,6 +1195,11 @@ void msg_ui_composer_recipient_delete(RECIPIENT_S *rd)
                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->ly_bt);
@@ -666,7 +1217,7 @@ void msg_ui_composer_recipient_clear(RECIPIENT_S *rd)
        D_MSG_RETM_IF(rd->mbe == NULL, "Multibuttonentry is NULL");
 
        RECIPIENT_ITEM_S *r_item;
-       Elm_Object_Item * mbe_item;
+       Elm_Object_Item *mbe_item;
 
        mbe_item = elm_multibuttonentry_first_item_get(rd->mbe);
        while (mbe_item) {
@@ -692,7 +1243,7 @@ void msg_ui_composer_recipient_update(RECIPIENT_S *rd)
        D_MSG_RETM_IF(rd->mbe == NULL, "Multibuttonentry is NULL");
 
        RECIPIENT_ITEM_S *r_item;
-       Elm_Object_Item * mbe_item;
+       Elm_Object_Item *mbe_item;
 
        mbe_item = elm_multibuttonentry_first_item_get(rd->mbe);
        while (mbe_item) {
@@ -748,6 +1299,7 @@ void msg_ui_composer_recipient_update(RECIPIENT_S *rd)
 
                mbe_item = elm_multibuttonentry_item_next_get(mbe_item);
        }
+
        D_LEAVE;
 }
 
@@ -810,8 +1362,12 @@ void msg_ui_composer_bt_show(RECIPIENT_S *rd)
        D_ENTER;
        D_MSG_RETM_IF(rd == NULL, "recipient data is NULL");
        D_MSG_RETM_IF(rd->ly_bt == NULL, "laytout button is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)rd->cd;
 
-       if(evas_object_visible_get(rd->ly_bt) == false) {
+       if (cd->isAppControl)
+               return;
+
+       if (evas_object_visible_get(rd->ly_bt) == false) {
                elm_box_pack_end(rd->bx_main, rd->ly_bt);
                evas_object_show(rd->ly_bt);
        } else {
@@ -826,8 +1382,12 @@ void msg_ui_composer_bt_hide(RECIPIENT_S *rd)
        D_ENTER;
        D_MSG_RETM_IF(rd == NULL, "recipient data is NULL");
        D_MSG_RETM_IF(rd->ly_bt == NULL, "laytout button is NULL");
+       MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)rd->cd;
+
+       if (cd->isAppControl)
+               return;
 
-       if(evas_object_visible_get(rd->ly_bt) == true) {
+       if (evas_object_visible_get(rd->ly_bt) == true) {
                elm_box_unpack(rd->bx_main, rd->ly_bt);
                evas_object_hide(rd->ly_bt);
        } else {
@@ -840,15 +1400,34 @@ void msg_ui_composer_bt_hide(RECIPIENT_S *rd)
 COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_read_data(MSG_COMPOSER_VIEW_DATA_S *cd)
 {
        D_ENTER;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "cd is NULL");
        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) {
-               if (msg_ui_composer_add_address(cd->recipient_frame.recipient) == COMPOSER_RETURN_SUCCESS)
-                       r_count++;
+               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)
@@ -859,37 +1438,93 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_read_data(MSG_COMPOSER_VIEW_DAT
                        r_item = elm_object_item_data_get(mbe_item);
                        if (r_item) {
                                D_MSG("[%s]", r_item->recipient);
-                               if (msg_ui_composer_add_address(r_item->recipient) == COMPOSER_RETURN_SUCCESS)
+                               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 )
+       if (r_count == 0)
                return COMPOSER_RETURN_FAIL;
 
        D_LEAVE;
        return COMPOSER_RETURN_SUCCESS;
 }
 
-/*set recipient number for frameview mode*/
-COMPOSER_RETURN_TYPE_E msg_ui_composer_recipient_set_recipient(MSG_COMPOSER_VIEW_DATA_S *cd, 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)
 {
        D_ENTER;
-       RECIPIENT_ITEM_S *recipient_item;
+       D_MSG_RETVM_IF(cd == NULL, COMPOSER_RETURN_FAIL, "param is NULL");
 
-       if (!cd) return COMPOSER_RETURN_FAIL;
+       /* set recipient list for bubble composer */
+       msg_struct_list_s addrList;
+       int i = 0;
 
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
 
-       recipient_item  = &cd->recipient_frame;
+       if (msg_get_address_list(cd->msg_handle, thread_id, &addrList) != COMPOSER_RETURN_SUCCESS)
+               return COMPOSER_RETURN_FAIL;
 
-       bzero(recipient_item->recipient, sizeof(recipient_item->recipient));
-       snprintf(recipient_item->recipient, sizeof(recipient_item->recipient)-1, "%s", recipient);
+       char address[MAX_ADDRESS_VAL_LEN + 1] = {0,};
+       int address_len = sizeof(address);
 
-       D_MSG("recipient_item->recipient = %s", recipient_item->recipient);
+       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;
+}
+
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..c926c31
--- /dev/null
@@ -0,0 +1,433 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+/* 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"
+
+/* 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_info_area_update(cd);
+       } else {
+               elm_object_disabled_set(cd->send_button, EINA_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);
+               edje_object_part_text_set(_EDJ(cd->ly_body), "text.char_count", "");/* remove character count*/
+               if (cd->ly_body) {
+                       Evas_Object *entry = msg_ui_composer_last_focused_entry_get(cd);
+                       if (entry) {
+                               if (cd->msg_ug_mode == MSG_UG_MODE_FULL_COMPOSER || cd->msg_ug_mode == MSG_UG_MODE_ONLY_COMPOSER) {
+                                       if (entry == cd->recipient->mbe) {/* if last focused widget is recipient multibutton entry*/
+                                               entry = elm_multibuttonentry_entry_get(cd->recipient->mbe);
+                                       }
+                               }
+                       }
+               }
+       } else {
+               elm_object_disabled_set(cd->send_button, EINA_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)) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[ASSERT] 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;
+}
+
+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.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 */
+       elm_entry_text_style_user_push(entry, "DEFAULT='font_size=32'");
+
+       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_icon_file_set(del_icon, MSGC_IMG_SUBJECT_DEL_ICON, NULL);
+       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);
+       elm_object_focus_allow_set(del_icon, EINA_TRUE);
+
+       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);
+
+       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;
+}
index 38e9142..b4f1d85 100755 (executable)
  * limitations under the License.
  */
 
-#include <contacts-svc.h>
-#include <MsgSettingTypes.h>
 
+#include <contacts-svc.h>
+#include <mm_util_imgp.h>
+#include <mm_util_jpeg.h>
 #include "msg-ui-composer-data.h"
 #include "msg-ui-composer-util.h"
 #include "msg-ui-composer-message.h"
@@ -32,7 +33,6 @@
 
 COMPOSER_UTIL_ADDRTYPE_E get_address_type(const char *address)
 {
-
        COMPOSER_UTIL_ADDRTYPE_E addrtype = COMPOSER_UTIL_ADDRTYPE_INVALID;
 
        if (!address) {
@@ -53,7 +53,6 @@ COMPOSER_UTIL_ADDRTYPE_E get_address_type(const char *address)
        return addrtype;
 }
 
-
 int get_contact_index_by_recipient(const char *phone_number)
 {
        int index;
@@ -82,16 +81,13 @@ int get_contact_display_name_by_index(int index, char *dest, int dest_size)
 
        error_code = contacts_svc_get_contact(index, &contact);
        error_code = contacts_svc_struct_get_value(contact, CTS_CF_NAME_VALUE, &name);
-       display = g_strdup(contacts_svc_value_get_str(name, CTS_NAME_VAL_DISPLAY_STR));
+
+       first = contacts_svc_value_get_str(name, CTS_NAME_VAL_FIRST_STR);
+       last = contacts_svc_value_get_str(name, CTS_NAME_VAL_LAST_STR);
+       display = make_display_name(first, last);
        if (!display) {
-               D_EMSG("no display recipient");
-               first = contacts_svc_value_get_str(name, CTS_NAME_VAL_FIRST_STR);
-               last = contacts_svc_value_get_str(name, CTS_NAME_VAL_LAST_STR);
-               display = make_display_name(first, last);
-               if (!display) {
-                       D_EMSG("display name is NULL");
-                       return COMPOSER_RETURN_FAIL;
-               }
+               D_EMSG("display name is NULL");
+               return COMPOSER_RETURN_FAIL;
        }
 
        if (display) {
@@ -174,6 +170,7 @@ int get_contact_default_recipient_by_index(int index, char *dest, int dest_size)
        }
        return ret;
 }
+
 char *make_display_name(const char *first, const char *last)
 {
        char *ret_val = NULL;
@@ -301,6 +298,7 @@ Eina_Bool IsMultipleNumber(int index)
 
        return EINA_FALSE;
 }
+
 Eina_Bool IsValidNumber(const char *address)
 {
        D_ENTER;
@@ -468,6 +466,227 @@ int remove_space(const char *src, char *dest, int dest_size)
    return d_pos;
 }
 
+int jpeg_image_get_resolution(const char *src_file_path, unsigned int *dst_w, unsigned int *dst_h)
+{
+       D_ENTER;
+
+       int ret = 0;
+       char temp_src_file_path[DEF_BUF_LEN_L] = {0,};
+       mm_util_jpeg_yuv_format jy_fmt = MM_UTIL_JPEG_FMT_RGB888;
+
+       mm_util_jpeg_yuv_data decoded = {0,};
+
+       D_MSG_RETVM_IF(ecore_file_exists(src_file_path) == EINA_FALSE, COMPOSER_UTIL_ERR, "There is not exist src file path = %s", src_file_path);
+       D_MSG_RETVM_IF((dst_w == NULL || dst_h == NULL), COMPOSER_UTIL_ERR, "Parameter is Invalid dst_w = %p, dst_h = %p", dst_w, dst_h);
+
+       strncpy(temp_src_file_path, src_file_path, sizeof(temp_src_file_path)-1);
+
+       /*decode jpeg file*/
+       ret = mm_util_decode_from_jpeg_file(&decoded, temp_src_file_path, jy_fmt);
+       if (ret) {
+               D_EMSG("mm_util_decode_from_jpeg_file ret = %d", ret);
+               return COMPOSER_UTIL_ERR;
+       }
+
+       D_MSG("Image Resolution is (%d x %d)", decoded.width, decoded.height);
+
+       *dst_w = decoded.width;
+       *dst_h = decoded.height;
+
+       if (decoded.data != NULL)
+               free(decoded.data);
+
+       D_LEAVE;
+       return COMPOSER_UTIL_ERR_NONE;
+}
+
+int jpeg_image_resize(const char *src_file_path, unsigned int dst_w, unsigned int dst_h, const char *dst_file_path)
+{
+       D_ENTER;
+       int ret = 0;
+       unsigned int dst_size;
+       unsigned char *dst = NULL;
+       char temp_src_file_path[DEF_BUF_LEN_L] = {0,};
+       char temp_dst_file_path[DEF_BUF_LEN_L] = {0,};
+
+       mm_util_jpeg_yuv_format jy_fmt = MM_UTIL_JPEG_FMT_RGB888;
+       mm_util_img_format i_fmt = MM_UTIL_IMG_FMT_RGB888;
+       mm_util_jpeg_yuv_data decoded = {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_ERR;
+       }
+       strncpy(temp_src_file_path, src_file_path, sizeof(temp_src_file_path)-1);
+
+       if (!dst_file_path) {
+               D_EMSG("There is not exist dst file path = %s", dst_file_path);
+               return COMPOSER_UTIL_ERR;
+       }
+       strncpy(temp_dst_file_path, dst_file_path, sizeof(temp_dst_file_path)-1);
+
+       if (dst_w <= 0 || dst_h <= 0) {
+               D_EMSG("There is not valid dst width = %d, height = %d", dst_w, dst_h);
+               return COMPOSER_UTIL_ERR;
+       }
+
+       /*decode jpeg file*/
+       ret = mm_util_decode_from_jpeg_file(&decoded, temp_src_file_path, jy_fmt);
+       if (ret) {
+               D_EMSG("mm_util_decode_from_jpeg_file ret = %d", ret);
+               return COMPOSER_UTIL_ERR;
+       }
+
+       /*get size about resize img*/
+       ret = mm_util_get_image_size(i_fmt, dst_w, dst_h, &dst_size);
+       if (ret) {
+               D_EMSG("mm_util_get_image_size 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;
+       }
+
+       /* resize image */
+       D_MSG("[resize image] src = %s(%d x %d)->(%d x %d)", temp_src_file_path, decoded.width, decoded.height, dst_w, dst_h);
+       ret = mm_util_resize_image(decoded.data, (unsigned int)decoded.width, (unsigned int)decoded.height,
+                                                               i_fmt, dst, &dst_w,&dst_h);
+       if (ret) {
+               D_EMSG("mm_util_resize_image ret = %d", ret);
+               goto err_return;
+       }
+
+
+       /*save image to dst file path*/
+       ret = mm_util_jpeg_encode_to_file(temp_dst_file_path, dst, dst_w, dst_h, jy_fmt, 100);
+       if (ret) {
+               D_EMSG("Fail mm_util_jpeg_encode_to_file ret = %d", ret);
+               goto err_return;
+       }
+
+       if (dst)
+               g_free(dst);
+
+       if (decoded.data != NULL)
+               free(decoded.data);
+
+       D_LEAVE;
+       return COMPOSER_UTIL_ERR_NONE;
+
+err_return:
+       if (dst)
+               g_free(dst);
+
+       if (decoded.data != NULL)
+               free(decoded.data);
+
+       return COMPOSER_UTIL_ERR;
+}
+
+int jpeg_image_quality_set(const char *src_file_path, int quality, const char *dst_file_path)
+{
+       D_ENTER;
+       int ret = 0;
+       char temp_src_file_path[DEF_BUF_LEN_L] = {0,};
+       char temp_dst_file_path[DEF_BUF_LEN_L] = {0,};
+
+       mm_util_jpeg_yuv_format jy_fmt = MM_UTIL_JPEG_FMT_RGB888;
+       mm_util_jpeg_yuv_data decoded = {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_ERR;
+       }
+       strncpy(temp_src_file_path, src_file_path, sizeof(temp_src_file_path)-1);
+
+       if (!dst_file_path) {
+               D_EMSG("There is not exist dst file path = %s", dst_file_path);
+               return COMPOSER_UTIL_ERR;
+       }
+       strncpy(temp_dst_file_path, dst_file_path, sizeof(temp_dst_file_path)-1);
+
+       if (quality > 100 || quality < 1) {
+               D_EMSG("Invalid quality ! it should 0 < quality <= 100", dst_file_path);
+               return COMPOSER_UTIL_ERR;
+       }
+
+       /*decode jpeg file*/
+       ret = mm_util_decode_from_jpeg_file(&decoded, temp_src_file_path, jy_fmt);
+       if (ret) {
+               D_EMSG("mm_util_decode_from_jpeg_file ret = %d", ret);
+               return COMPOSER_UTIL_ERR;
+       }
+
+       /*set quality save image to dst file path*/
+       ret = mm_util_jpeg_encode_to_file(temp_dst_file_path, decoded.data, decoded.width, decoded.height, jy_fmt, quality);
+       if (ret) {
+               D_EMSG("Fail mm_util_jpeg_encode_to_file ret = %d", ret);
+               goto err_return;
+       }
+
+       if (decoded.data != NULL)
+               free(decoded.data);
+
+       D_LEAVE;
+       return COMPOSER_UTIL_ERR_NONE;
+
+err_return:
+
+       if (decoded.data != NULL)
+               free(decoded.data);
+
+       return COMPOSER_UTIL_ERR;
+
+}
+
+bool msg_composer_util_is_allow_creation_mode(const char *file_path, COMPOSER_MEDIA_TYPE_E media_type)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(file_path == NULL , false, "Input parameter file_path is Invalid");
+
+       char *ext = msg_common_get_file_ext(file_path);
+       unsigned int dst_w = 0 , 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)
+                       && (strcasecmp(ext, "png") != 0)) {
+                               return false;
+               } 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) {
+                               return false;
+                       }
+               }
+
+       } else if (media_type == COMPOSER_MEDIA_TYPE_VIDEO) {
+               if ((strcasecmp(ext, "3gp") != 0) && (strcasecmp(ext, "3g2") != 0) &&
+                       (strcasecmp(ext, "mp4") != 0) &&(strcasecmp(ext, "mpeg4") != 0) ){
+                               return false;
+               }
+       } else if (media_type == COMPOSER_MEDIA_TYPE_AUDIO) {
+               if ((strcasecmp(ext, "amr") != 0) && (strcasecmp(ext, "mid") != 0) && (strcasecmp(ext, "midi") != 0))
+                       return false;
+
+       } else {
+               D_MSG("It check only Image, Video, Audio type, media_type[%d] is not need to check", media_type);
+       }
+
+       D_LEAVE;
+       return true;
+}
+
 const char *search_markup_keyword(const char *string, char *searchword,
                                 bool *result)
 {
@@ -528,7 +747,7 @@ const char *search_markup_keyword(const char *string, char *searchword,
        return return_string;
 }
 
-bool is_web_uri(const charuri)
+bool is_web_uri(const char *uri)
 {
        D_MSG_RETVM_IF(uri == NULL, false, "uri is NULL");
 
@@ -553,7 +772,8 @@ bool is_web_uri(const char* uri)
        D_MSG("Not web uri. %s", uri);
        return false;
 }
-void print_sc_geo(Evas_Object * obj, char * name)
+
+void print_sc_geo(Evas_Object *obj, char *name)
 {
        Evas_Coord x,y,w,h;
 
@@ -563,12 +783,21 @@ void print_sc_geo(Evas_Object * obj, char * name)
 
 }
 
-void print_geo(Evas_Object * obj, char * name)
+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);
 }
+
index a4d04fb..fe29b8f 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __MSG_COMPOSER_UTIL_H__
 #define __MSG_COMPOSER_UTIL_H__
 #include "msg-ui-composer-data.h"
@@ -68,11 +69,16 @@ Eina_List *make_tokenize_list(const char *ori_string, const char *sep);
 int remove_space(const char *src, char *dest, int dest_size);
 
 char *make_display_name(const char *first, const char *last);
+int jpeg_image_resize(const char *src_file_path, unsigned int dst_w, unsigned int dst_h, const char *dst_file_path);
+int jpeg_image_quality_set(const char *src_file_path, int quality, const char *dst_file_path);
+int jpeg_image_get_resolution(const char *src_file_path, unsigned int *dst_w, unsigned int *dst_h);
 
 const char *search_markup_keyword(const char *string, char *searchword, bool *result);
-bool is_web_uri(const charuri);
+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_geo(Evas_Object *obj, char *name);
+void print_sc_geo(Evas_Object *obj, char *name);
+void print_edje_geo(Evas_Object *obj, char *name);
+bool msg_composer_util_is_allow_creation_mode(const char *file_path, COMPOSER_MEDIA_TYPE_E media_type);
 
 #endif /*__MSG_COMPOSER_UTIL_H__*/
old mode 100644 (file)
new mode 100755 (executable)
index 34115a9..9367a96
@@ -1,7 +1,7 @@
-message (0.8.2-20) unstable; urgency=low
+message (0.8.2-37) unstable; urgency=low
 
   * Git: slp/pkgs/m/message-app
-  * Tag: message_0.8.2-20
+  * Tag: message_0.8.2-37
 
- -- Jaeyun Jeong <jyjeong@samsung.com>  Mon, 16 Apr 2012 19:26:38 +0900
+ -- Jaeyun Jeong <jyjeong@samsung.com>  Mon, 04 Jun 2012 19:00:27 +0900
 
index 87d24d0..0fae198 100755 (executable)
@@ -2,7 +2,7 @@ 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, libug-contacts-dev, libicu-dev, libappsvc-dev, libdevman-haptic-dev, libheynoti-dev, capi-appfw-application-dev
+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, drm-trusted-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:
 
index d939590..67b6d4c 100755 (executable)
@@ -6,4 +6,5 @@
 @PREFIX@/data
 @PREFIX@/lib/*
 /opt/share/applications/*
+/opt/share/icons/*
 /opt/ug/lib/*
index 2b96d78..38fa0a8 100755 (executable)
@@ -5,4 +5,5 @@ 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
index 686d100..9fead62 100755 (executable)
@@ -56,19 +56,20 @@ clean:
        # 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 dialog/CMakeFiles common/CMakeFiles
-       rm -f cmake_install.cmake main/cmake_install.cmake composer/cmake_install.cmake setting/cmake_install.cmake dialog/cmake_install.cmake common/cmake_install.cmake
-       rm -f Makefile main/Makefile composer/Makefile setting/Makefile dialog/Makefile common/Makefile
-       rm -f install_manifest.txt main/install_manifest.txt composer/install_manifest.txt setting/install_manifest.txt dialog/install_manifest.txt common/install_manifest.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 common/*.so
-       rm -f *.edj thread/theme/*.edj composer/data/composer_edc/*.edj bubble/theme/*.edj setting/theme/*.edj 
+       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}; \
@@ -110,7 +111,7 @@ binary-arch: build install
 #      dh_installinfo
        dh_installman
        dh_link
-       dh_strip --dbg-package=org.tizen.message-dbg    
+       dh_strip --dbg-package=org.tizen.message-dbg
        dh_compress
        dh_fixperms
 #      dh_perl
index 729e326..5cf4fe1 100755 (executable)
@@ -15,6 +15,9 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_COMMON_DIR}
                                /usr/include/msg-service/
 )
 
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED elementary aul dlog capi-appfw-application)
+
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
index b126417..94f7759 100755 (executable)
  * limitations under the License.
  */
 
-#include "message-dialog.h"
-#include "app_service.h"
 
+#include "message-dialog.h"
+#include "aul.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);
@@ -62,41 +63,13 @@ static void __msg_ui_dialog_always_ask_left_btn_cb(void *data, Evas_Object *obj,
 
        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;
-       }
+       int ret = -1;
 
-       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 = aul_open_content(ad->url);
+       if (ret < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ret = %d", ret);
        }
 
-       if (service_set_package(svc_h, "org.tizen.browser") < 0) {
-               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);
 }
 
@@ -148,6 +121,40 @@ static int __msg_ui_dialog_create_always_ask_popup(void *data)
        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)
 {
@@ -165,7 +172,6 @@ static Evas_Object *__msg_ui_dialog_create_win(const char *name)
        if (eo) {
                elm_win_alpha_set(eo, EINA_TRUE);
                elm_win_title_set(eo, name);
-               elm_win_borderless_set(eo, EINA_TRUE);
                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);
@@ -176,7 +182,7 @@ static Evas_Object *__msg_ui_dialog_create_win(const char *name)
        return eo;
 }
 
-static int app_create(void *data)
+static bool app_create(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -184,50 +190,42 @@ static int app_create(void *data)
 
        if (ad->dialog_mode != MSG_UI_DIALOG_MODE_PUSH_MSG_ALWAYS_ASK) {
                MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Invalid mode !!");
-               return MSG_UI_RET_ERR;
+               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 MSG_UI_RET_ERR;
+               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 MSG_UI_RET_ERR;
+               return FALSE;
        }
 
-       return MSG_UI_RET_SUCCESS;
+       return TRUE;
 }
 
-static int app_terminate(void *data)
+static void app_terminate(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       return MSG_UI_RET_SUCCESS;
 }
 
-static int app_pause(void *data)
+static void app_pause(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       return MSG_UI_RET_SUCCESS;
 }
 
-static int app_resume(void *data)
+static void app_resume(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       return MSG_UI_RET_SUCCESS;
 }
 
-static int app_reset(bundle *b, void *data)
+static void app_service(service_h service, void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       return MSG_UI_RET_SUCCESS;
 }
 
 static int parse_opt(int argc, char **argv, struct appdata *ad)
@@ -276,22 +274,26 @@ int main(int argc, char **argv)
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        struct appdata ad;
-       struct appcore_ops ops = {
-                       .create = app_create,
-                       .terminate = app_terminate,
-                       .pause = app_pause,
-                       .resume = app_resume,
-                       .reset = app_reset,
-       };
-
        memset(&ad, 0x0, sizeof(struct appdata));
-       ops.data = &ad;
+
+       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 appcore_efl_main(PACKAGE, &argc, &argv, &ops);
+       return app_efl_main(&argc, &argv, &event_callback, &ad);
 }
 
index af56570..89291dc 100755 (executable)
  * limitations under the License.
  */
 
+
 #ifndef __DEF_message_dialog_H_
 #define __DEF_message_dialog_H_
 
 #include <stdio.h>
 #include <glib.h>
 #include <Elementary.h>
-#include <appcore-efl.h>
+#include <app.h>
 #include <utilX.h>
 #include <Ecore_X.h>
 #include "msg-ui-util.h"
index 5ff9d37..542925f 100755 (executable)
@@ -1,7 +1,7 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 PROJECT(message C)
 
-SET(SRCS 
+SET(SRCS
        message.c
        ${CMAKE_SOURCE_THREAD_DIR}/src/msg-ui-thread-main.c
        ${CMAKE_SOURCE_THREAD_DIR}/src/msg-ui-thread-list.c
@@ -50,12 +50,12 @@ TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} ${CMAKE_LDFLAGS} msg-commo
 
 #Install desktop file & icon.
 INSTALL(TARGETS message DESTINATION bin)
-CONFIGURE_FILE(${CMAKE_SOURCE_MAIN_DIR}/${PKGNAME}.desktop.in ${CMAKE_SOURCE_MAIN_DIR}/${PKGNAME}.desktop)
-INSTALL(FILES ${CMAKE_SOURCE_MAIN_DIR}/${PKGNAME}.desktop DESTINATION /opt/share/applications)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/${PKGNAME}.xml DESTINATION /opt/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 /opt/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})
index 862ea55..496e0e7 100755 (executable)
 #include <Ecore_X.h>
 #include <ui-gadget.h>
 #include <ui-gadget-module.h>
+#include <mm_session.h>
 
 #include "msg-ui-thread-main.h"
-
+#include "msg-ui-common-utility.h"
 
 static void __msg_ui_popup_warning(Evas_Object *parent, const char *msg);
-static bundle *__msg_ui_parse_sms_uri(bundle *b, const char *uri);
-static bundle *__get_bundle_with_new_msg(struct appdata *ad);
-static bundle *__get_bundle_with_msg_id(struct appdata *ad, bundle *b);
-
+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(struct ui_gadget *ug, enum ug_mode mode, void *priv);
-void result_cb(struct ui_gadget *ug, bundle *result, void *priv);
-void destroy_cb(struct ui_gadget *ug, void *priv);
+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;
 
@@ -65,9 +67,50 @@ static int region_changed_cb(void *data)
        return ug_send_event(UG_EVENT_REGION_CHANGE);
 }
 
+static void rotate(app_device_orientation_e orientation, void *data)
+{
+       D_ENTER;
+
+       struct appdata *ad = data;
+       int ret = 0;
+       int rot = THREAD_ROTATE_ANGLE_UNKNOWN;
+
+       if (ad == NULL || ad->win_main == NULL)
+               return;
+
+       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)
+       {
+               elm_win_rotation_with_resize_set(ad->win_main, rot);
+               msg_ui_thread_rotation_set(ad->thread_data, 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)
@@ -99,19 +142,20 @@ static void __msg_ui_popup_warning(Evas_Object *parent, const char *msg)
        D_LEAVE;
 }
 
-static bundle *__msg_ui_parse_sms_uri(bundle *b, const char *uri)
+static service_h __msg_ui_parse_sms_uri(service_h service, const char *uri)
 {
        D_ENTER;
 
-       bundle *cb = NULL;
-
        char *content = NULL;
-       const char *recipient = NULL;
-       const char *body_text = NULL;
+       char *recipient = NULL;
+       char *body_text = NULL;
+
+       service_h svc_handle = NULL;
 
-       cb = bundle_create();
-       if (!cb)
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
                return NULL;
+       }
 
        char *scheme = g_strdup(uri);
 
@@ -124,186 +168,412 @@ static bundle *__msg_ui_parse_sms_uri(bundle *b, const char *uri)
                                D_MSG("APPSVC RECIPIENT = [%s]", recipient);
 
                                if (recipient)
-                                       bundle_add(cb, MSG_BUNDLE_KEY_TO, recipient);
+                                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
                        }
                }
                g_free(scheme);
        } else {
-               recipient = appsvc_get_data(b, APPSVC_DATA_TO);
+               service_get_extra_data(service, SERVICE_DATA_TO, &recipient);
                D_MSG("APPSVC RECIPIENT = [%s]", recipient);
-               bundle_add(cb, MSG_BUNDLE_KEY_TO, recipient);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
        }
 
        /* Add body text */
-       body_text = appsvc_get_data(b, APPSVC_DATA_TEXT);
+       service_get_extra_data(service, SERVICE_DATA_TEXT, &body_text);
        if (body_text) {
                D_MSG("APPSVC BODY_TEXT = [%s]", body_text);
-               bundle_add(cb, MSG_BUNDLE_KEY_BODY, body_text);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_BODY, body_text);
        }
 
        D_LEAVE;
-       return cb;
+       return svc_handle;
 }
 
-static bundle *__get_bundle_app_svc_op(const char *operation, bundle *b)
+static service_h __msg_ui_parse_mmsto_uri(service_h service, const char *uri)
 {
        D_ENTER;
 
-       if (b == NULL || operation == NULL)
+       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;
+       }
 
-       const char *uri = NULL;
-       const char *recipient = NULL;
-       const char *body_text = NULL;
+       char *scheme = g_strdup(uri);
 
-       bundle *cb = NULL;
+       if (scheme) {
+               strtok_r(scheme, ":", &content);
 
-       if (g_strcmp0(operation, APPSVC_OPERATION_SEND_TEXT) == 0) {
-               uri = appsvc_get_uri(b);
+               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 {
+                               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 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 */
-                               cb = __msg_ui_parse_sms_uri(b, uri);
+                               svc_handle = __msg_ui_parse_sms_uri(service, uri);
                        } else {
                                D_MSG("Not supported mime type");
                                return NULL;
                        }
                } else {
-                       cb = bundle_create();
+                       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+                               D_EMSG("service_create() is failed !!");
+                               return NULL;
+                       }
 
                        /* Add body text */
-                       body_text = appsvc_get_data(b, APPSVC_DATA_TEXT);
+                       service_get_extra_data(service, SERVICE_DATA_TEXT, &body_text);
                        if (body_text) {
                                D_MSG("APPSVC BODY_TEXT = [%s]", body_text);
-                               bundle_add(cb, MSG_BUNDLE_KEY_BODY, body_text);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_BODY, body_text);
                        }
 
                        /* Add recipient number */
-                       recipient = appsvc_get_data(b, APPSVC_DATA_TO);
+                       service_get_extra_data(service, SERVICE_DATA_TO, &recipient);
                        if (recipient) {
                                D_MSG("APPSVC RECIPIENT = [%s]", recipient);
-                               bundle_add(cb, MSG_BUNDLE_KEY_TO, recipient);
+                               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, recipient);
                        }
                }
 
-               bundle_add(cb, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_COMPOSE);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_COMPOSE);
        }
 
        D_LEAVE;
 
-       return cb;
+       return svc_handle;
 }
 
-static bundle *__get_bundle_with_new_msg(struct appdata *ad)
+static service_h __get_service_with_new_msg(struct appdata *ad)
 {
        D_ENTER;
 
-       MSG_ERROR_T err = MSG_SUCCESS;
-       MSG_SORT_RULE_S sortRule = {0, };
-       MSG_THREAD_VIEW_LIST_S peerList = {0,};
-       int i, new_sms_cnt;
-       bundle *b = NULL;
+       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',};
 
-       sortRule.sortType = MSG_SORT_BY_THREAD_DATE;
-       sortRule.bAscending = false;
+       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, &sortRule, &peerList);
-       if (err != MSG_SUCCESS)
+       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)
+       if (peerList.nCount <= 0) {
+               msg_release_list_struct(&peerList);
+               msg_release_struct(&sort_rule_t);
                return NULL;
+       }
 
-       for(i=0; i<peerList.nCount; i++){
-               if(msg_thread_view_get_unread_cnt(peerList.msgThreadInfo[i]))
+       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)
+       if(i >= peerList.nCount) {
+               msg_release_list_struct(&peerList);
+               msg_release_struct(&sort_rule_t);
                return NULL;
+       }
 
-       if(msg_thread_view_get_unread_cnt(peerList.msgThreadInfo[i]) == new_sms_cnt){
+       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;
+               }
 
-               b = bundle_create();
+               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,};
 
-               if (!b)
-                       return NULL;
+               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);
 
-               bundle_add(b, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_NEW_MSG);
-               snprintf(buf, DEF_BUF_LEN_L, "%d", msg_thread_view_get_thread_id(peerList.msgThreadInfo[i]));
-               bundle_add(b, MSG_BUNDLE_KEY_THREAD_ID, buf);
-               bundle_add(b, MSG_BUNDLE_KEY_THREAD_NAME, msg_thread_view_get_name(peerList.msgThreadInfo[i]));
-               bundle_add(b, MSG_BUNDLE_KEY_THREAD_ADDRESS, msg_thread_view_get_address(peerList.msgThreadInfo[i]));
+               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);
 
-               snprintf(buf_contact, DEF_BUF_LEN, "%d", msg_thread_view_get_contact_id(peerList.msgThreadInfo[i]));
-               bundle_add(b, MSG_BUNDLE_KEY_CONTACT_ID, buf_contact);
+               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);
 
-               msg_release_thread_view_list(&peerList);
+               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 b;
+       return svc_handle;
 }
 
-static bundle* __get_bundle_with_msg_id(struct appdata *ad, bundle *b)
+static service_h __get_service_with_msg_id(struct appdata *ad, service_h service)
 {
        D_ENTER;
 
-       bundle *nb = bundle_create();
+       service_h svc_handle = NULL;
 
-       if (!nb)
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
                return NULL;
+       }
 
        int msg_id = 0;
-       const char *msg_id_str = bundle_get_val(b, MSG_BUNDLE_KEY_MSG_ID);
+       char *msg_id_str = NULL;
+       service_get_extra_data(service, MSG_BUNDLE_KEY_MSG_ID, &msg_id_str);
 
-       if (!msg_id_str)
+       if (!msg_id_str) {
+               service_destroy(svc_handle);
                return NULL;
+       }
 
        msg_id = atoi(msg_id_str);
 
-       if (msg_id <= 0)
+       if (msg_id <= 0) {
+               service_destroy(svc_handle);
                return NULL;
+       }
 
-       msg_message_t msg_t = msg_new_message();
-       MSG_SENDINGOPT_S sendOpt = {0, };
-       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_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,};
 
-       err = msg_get_message(ad->msgHandle, msg_id, msg_t, &sendOpt);
+       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) {
-               if (nb)
-                       bundle_free(nb);
+               service_destroy(svc_handle);
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
                return NULL;
        }
 
-       thread_id= msg_get_ith_thread_id(msg_t, 0);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
        snprintf(buf_thread, sizeof(buf_thread), "%d", thread_id);
 
-       contact_id = msg_get_ith_contact_id(msg_t, 0);
+       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);
 
-       bundle_add(nb, MSG_BUNDLE_KEY_THREAD_ID, buf_thread);
-       bundle_add(nb, MSG_BUNDLE_KEY_THREAD_NAME, msg_get_ith_name(msg_t, 0));
-       bundle_add(nb, MSG_BUNDLE_KEY_THREAD_ADDRESS, msg_get_ith_address(msg_t, 0));
-       bundle_add(nb, MSG_BUNDLE_KEY_CONTACT_ID, buf_contact);
+       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_message(&msg_t);
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
 
        D_LEAVE;
-       return nb;
+       return svc_handle;
 }
 
 static Evas_Object* create_win(const char *name)
@@ -316,7 +586,6 @@ static Evas_Object* create_win(const char *name)
        eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
        if (eo) {
                elm_win_title_set(eo, name);
-               elm_win_borderless_set(eo, EINA_TRUE);
                evas_object_smart_callback_add(eo, "delete,request", win_del, NULL);
                ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
                evas_object_resize(eo, w, h);
@@ -326,8 +595,7 @@ static Evas_Object* create_win(const char *name)
        return eo;
 }
 
-
-void layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv)
+void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
 {
        D_ENTER;
 
@@ -358,10 +626,11 @@ void layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv)
            default:
                        break;
        }
+
        D_LEAVE;
 }
 
-void result_cb(struct ui_gadget *ug, bundle *result, void *priv)
+void result_cb(ui_gadget_h ug, service_h result, void *priv)
 {
        D_ENTER;
 
@@ -370,90 +639,68 @@ void result_cb(struct ui_gadget *ug, bundle *result, void *priv)
        struct appdata *ad = priv;
 
        PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data;
-       const char *buf;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       char *buf = NULL;
+       char *str_result = NULL;
 
-       if (!g_strcmp0(bundle_get_val(result, MSG_BUNDLE_KEY_RESULT), MSG_BUNDLE_VALUE_DEL_ALL)) {
+       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);
 
-               ug_destroy(ug);
+               elm_exit();
+               return;
+       }
 
-               if(pData) {
-                       PMSG_APP_THREAD_DATA_S item_data = NULL;
-                       const char *del_thread_id = NULL;
-                       Elm_Object_Item *gen_item = NULL;
-                       int del_id = 0;
+       pListData = msg_ui_thread_get_current_list();
 
-                       del_thread_id = bundle_get_val(result, MSG_BUNDLE_KEY_THREAD_ID);
-                       if (!del_thread_id)
-                               return;
+       if (!g_strcmp0(str_result, MSG_BUNDLE_VALUE_DEL_ALL)) {
+               ug_destroy(ug);
 
-                       gen_item = elm_genlist_first_item_get(pData->genlist);
-                       elm_genlist_item_show(gen_item, ELM_GENGRID_ITEM_SCROLLTO_TOP); /** move to the first item */
+               if (pListData) {
+                       int del_id = 0;
 
-                       del_id = atoi(del_thread_id);
-                       while (gen_item) {
-                               item_data = (PMSG_APP_THREAD_DATA_S)elm_object_item_data_get(gen_item);
-                               if (item_data && item_data->threadId == del_id) {
-                                       elm_object_item_del(gen_item);
-                                       break;
+                       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);
                                }
-                               gen_item = elm_genlist_item_next_get(gen_item);
                        }
 
-                       pData->sel_gen_item = NULL;
-                       pData->sel_thread_id = 0;
+                       pListData->sel_gen_item = NULL;
+                       pListData->sel_thread_id = 0;
+                       pListData->sel_msg_id = 0;
                        ad->composer_ug = NULL;
-
-                       pData->thread_cnt--;
-                       if (pData->thread_cnt <= 0)
-                               msg_ui_thread_list_load(pData);
-               } else {
-                       elm_exit();
                }
+       } else {
+               int update_id = 0;
 
-       } else if (!g_strcmp0(bundle_get_val(result, MSG_BUNDLE_KEY_COMPOSER_RESPONSE), MSG_BUNDLE_VALUE_RET_YES)) {
-               D_MSG("Composer will closed by selecting 'yes'");
-               if (pData && pData->msg_b) {
-                       if (g_strcmp0(bundle_get_val(pData->msg_b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_MSG_ID) == 0 ||
-                               g_strcmp0(bundle_get_val(pData->msg_b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_NEW_MSG) == 0 ||
-                               g_strcmp0(bundle_get_val(pData->msg_b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_COMPOSE) == 0 ||
-                               g_strcmp0(bundle_get_val(pData->msg_b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_SMS_URI) == 0) {
-
-                               if (msg_ui_load_composer_ug(pData->msg_b) == MSG_UI_RET_ERR)
-                                       D_MSG("Failed to load composer ug");
+               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);
                        }
-                       bundle_free(pData->msg_b);
-                       pData->msg_b = NULL;
-               }
-       } else if (!g_strcmp0(bundle_get_val(result, MSG_BUNDLE_KEY_COMPOSER_RESPONSE), MSG_BUNDLE_VALUE_RET_NO)) {
-               D_MSG("Composer will not be closed");
-               if (pData && pData->msg_b) {
-                       bundle_free(pData->msg_b);
-                       pData->msg_b = NULL;
-               }
-       } else if ((buf = bundle_get_val(result, MSG_BUNDLE_KEY_THREAD_ID)) != NULL) {
-               int thread_id = 0;
-               PMSG_APP_THREAD_DATA_S item_data = NULL;
-               Elm_Object_Item *gen_item = NULL;
-
-               thread_id = atoi(buf);
-               gen_item = elm_genlist_first_item_get(pData->genlist);
-
-               while (gen_item) {
-                       item_data = (PMSG_APP_THREAD_DATA_S)elm_object_item_data_get(gen_item);
-
-                       if (item_data->threadId == thread_id) {
-                               elm_genlist_item_show(gen_item, ELM_GENGRID_ITEM_SCROLLTO_TOP);
-                               msg_ui_thread_list_item_update(pData, thread_id);
-                               break;
+               } 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);
                        }
-                       gen_item = elm_genlist_item_next_get(gen_item);
                }
        }
 
        D_LEAVE;
 }
 
-void destroy_cb(struct ui_gadget *ug, void *priv)
+void destroy_cb(ui_gadget_h ug, void *priv)
 {
        D_ENTER;
 
@@ -466,37 +713,47 @@ void destroy_cb(struct ui_gadget *ug, void *priv)
                ad->composer_ug = NULL;
        }
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data;
+       if (ad->layout_main) {
+               PMSG_THREAD_LIST_DATA pListData = NULL;
 
-       if (pData && ad->layout_main) {
-               if (pData->search_mode == THREAD_SEARCH_ON)
-                       elm_object_focus_set(pData->searchbar, EINA_TRUE);
+               pListData = msg_ui_thread_get_current_list();
 
-               if (pData->sel_thread_id > 0)
-                       msg_ui_thread_list_item_update(pData, pData->sel_thread_id);
+               if (pListData == NULL) {
+                       elm_exit();
+                       return;
+               }
+
+               if (pListData->search_mode == THREAD_SEARCH_ON)
+                       elm_object_focus_set(pListData->searchbar, EINA_TRUE);
 
-               pData->sel_gen_item = NULL;
-               pData->sel_thread_id = 0;
+               if (pListData->sel_thread_id > 0)
+                       msg_ui_thread_list_item_update(pListData, pListData->sel_thread_id);
 
-               pData->viewmode = THREAD_NORMAL_VIEW;
+               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(bundle *b)
+int msg_ui_load_composer_ug(service_h svc_handle)
 {
        D_ENTER;
 
        if (!gAppData)
                return MSG_UI_RET_ERR;
 
-       if (gAppData->composer_ug)
-               ug_send_message(gAppData->composer_ug, b);
-       else {
-               bundle_add(b, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
-               gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, b, &gAppData->cbs);
+       if (gAppData->composer_ug) {
+               ug_send_message(gAppData->composer_ug, svc_handle);
+       else {
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
+               gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs);
        }
 
        if (!gAppData->composer_ug)
@@ -506,12 +763,11 @@ int msg_ui_load_composer_ug(bundle *b)
        return MSG_UI_RET_SUCCESS;
 }
 
-static int app_create(void *data)
+static bool app_create(void *data)
 {
-/* return 0 : success, return non-zero : not to run main loop */
+       /* return TRUE : success, return FALSE : not to run main loop */
 
        D_ENTER;
-       D_MSG("Measure time = [%d]", appcore_measure_time());
 
        MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !data, MSG_UI_RET_ERR);
 
@@ -521,40 +777,37 @@ static int app_create(void *data)
        /* create window */
        win = create_win(MESSAGE_PKGNAME);
        if (win == NULL)
-               return MSG_UI_RET_ERR;
+               return FALSE;
 
        ad->win_main = win;
 
-       UG_INIT_EFL(ad->win_main,  UG_OPT_INDICATOR_ENABLE);
+       mm_session_init(MM_SESSION_TYPE_SHARE);
 
-       /* add system event callback */
-       appcore_set_event_callback(APPCORE_EVENT_LANG_CHANGE, lang_changed, ad);
-       appcore_set_event_callback(APPCORE_EVENT_LOW_BATTERY, low_battery_cb, ad);
-       appcore_set_event_callback(APPCORE_EVENT_REGION_CHANGE, region_changed_cb, ad);
+       UG_INIT_EFL(ad->win_main, UG_OPT_INDICATOR_ENABLE);
+       elm_win_indicator_mode_set(ad->win_main, ELM_WIN_INDICATOR_SHOW);
 
        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; */
+       gAppData = ad; // Set global app data pointer;
 
        D_LEAVE;
-       D_MSG("Measure time = [%d]", appcore_measure_time());
-
-       return MSG_UI_RET_SUCCESS;
+       return TRUE;
 }
 
-static int app_terminate(void *data)
+static void app_terminate(void *data)
 {
        D_ENTER;
 
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !data, MSG_UI_RET_ERR);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !data, "data is null");
 
        struct appdata *ad = data;
-       MSG_ERROR_T     err;
+       msg_error_t     err;
 
        ug_destroy_all();
+       mm_session_finish();
 
        if (ad->thread_data)
                msg_ui_thread_deinit_thread_data(ad->thread_data);
@@ -565,10 +818,9 @@ static int app_terminate(void *data)
        }
 
        D_LEAVE;
-       return MSG_UI_RET_SUCCESS;
 }
 
-static int app_pause(void *data)
+static void app_pause(void *data)
 {
        D_ENTER;
 
@@ -576,11 +828,9 @@ static int app_pause(void *data)
        ug_pause();
 
        D_LEAVE;
-
-       return MSG_UI_RET_SUCCESS;
 }
 
-static int app_resume(void *data)
+static void app_resume(void *data)
 {
        D_ENTER;
 
@@ -588,25 +838,20 @@ static int app_resume(void *data)
        ug_resume();
 
        D_LEAVE;
-
-       return MSG_UI_RET_SUCCESS;
 }
 
-static int app_reset(bundle *b, void *data)
+static void app_service(service_h service, void *data)
 {
        D_ENTER;
-       D_MSG("Measure time = [%d]", appcore_measure_time());
-
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !data, MSG_UI_RET_ERR);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !data, "data is NULL");
 
        struct appdata *ad = data;
-
-       bundle *cb = NULL;
-       MSG_ERROR_T err = MSG_SUCCESS;
-       MSG_HANDLE_T msgHandle;
+       service_h svc_handle = NULL;
+       msg_error_t err = MSG_SUCCESS;
+       msg_handle_t msgHandle = NULL;
        bool isDefaultView = false;
 
-       const char *operation = NULL;
+       char *operation = NULL;
 
        ug_resume();
 
@@ -615,48 +860,61 @@ static int app_reset(bundle *b, void *data)
                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 MSG_UI_RET_ERR;
+                       return;
                }
                ad->msgHandle = msgHandle;
        }
 
-       if (b) {
-               operation = appsvc_get_operation(b);
+       if (service) {
+               service_get_operation(service, &operation);
                if (operation) {
-                       cb = __get_bundle_app_svc_op(operation, b);
+                       svc_handle = __get_service_app_svc_op(operation, service);
                } else {
-                       if (g_strcmp0(bundle_get_val(b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_COMPOSE) == 0) { /* From call, log,.. etc. */
-                               cb = bundle_dup(b);
-                       } else if (g_strcmp0(bundle_get_val(b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_NEW_MSG) == 0) { /* From lock-screen */
-                               cb = __get_bundle_with_new_msg(ad);
-                               if (cb == NULL)
-                                       isDefaultView = true;
-                       } else if (g_strcmp0(bundle_get_val(b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_MSG_ID) == 0) {  /* From quick-panel */
-                               cb = __get_bundle_with_msg_id(ad, b);
+                       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 {
-                               isDefaultView = true;
+                               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 (!cb)
+               if (!svc_handle)
                        isDefaultView = true;
-
        } else {
                isDefaultView = true;
        }
 
        if (isDefaultView) {
+               if (ad->composer_ug) {
+                       ug_destroy(ad->composer_ug);
+                       ad->composer_ug = NULL;
+               }
+
                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->win_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_win_resize_object_add(ad->win_main, ad->layout_main);
 
-                       msg_ui_thread_load_thread_view(ad->thread_data, b);
+                       msg_ui_thread_load_thread_view(ad->thread_data, service);
                } else {
-                       msg_ui_thread_reset_thread_view(ad->thread_data, b);
+                       msg_ui_thread_reset_thread_view(ad->thread_data, service);
                }
        } else {
                /* If message app is called by app-service to display composer view,
@@ -664,8 +922,8 @@ static int app_reset(bundle *b, void *data)
                 * when user tap back button.
                 */
                if (operation != NULL) {
-                       if (g_strcmp0(operation, APPSVC_OPERATION_SEND) == 0 ||
-                               g_strcmp0(operation, APPSVC_OPERATION_SEND_TEXT) == 0) {
+                       if (g_strcmp0(operation, SERVICE_OPERATION_SEND) == 0 ||
+                               g_strcmp0(operation, SERVICE_OPERATION_SEND_TEXT) == 0) {
                                if (ad->layout_main) {
                                        evas_object_del(ad->layout_main);
                                        ad->layout_main = NULL;
@@ -674,24 +932,27 @@ static int app_reset(bundle *b, void *data)
                }
 
                if (!ad->composer_ug)
-                       ad->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, cb, &ad->cbs);
+                       ad->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &ad->cbs);
                else
-                       ug_send_message(ad->composer_ug, cb);
-
-               const char *thread_id_s = NULL;
+                       ug_send_message(ad->composer_ug, svc_handle);
 
                PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data;
-               thread_id_s = bundle_get_val(cb, MSG_BUNDLE_KEY_THREAD_ID);
+               char *thread_id_s = NULL;
 
-               if (pData && thread_id_s)
-                       pData->sel_thread_id = atoi(thread_id_s);
-       }
+               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, &thread_id_s);
 
-       if (cb) {
-               bundle_free(cb);
-               cb = NULL;
+               if (pData) {
+                       PMSG_THREAD_LIST_DATA pListData = NULL;
+                       pListData = msg_ui_thread_get_current_list();
+
+                       if (pListData && thread_id_s)
+                               pListData->sel_thread_id = atoi(thread_id_s);
+               }
        }
 
+       if (svc_handle)
+               service_destroy(svc_handle);
+
        if (ad->win_main) {
                evas_object_show(ad->win_main);
                elm_win_activate(ad->win_main);
@@ -701,28 +962,28 @@ static int app_reset(bundle *b, void *data)
                elm_exit();
 
        D_LEAVE;
-
-       return MSG_UI_RET_SUCCESS;
 }
 
 int main(int argc, char *argv[])
 {
        D_ENTER;
-       appcore_measure_start();
 
        struct appdata ad;
-       struct appcore_ops ops = {
-       .create = app_create,
-       .terminate = app_terminate,
-       .pause = app_pause,
-       .resume = app_resume,
-       .reset = app_reset,
-       };
-
        memset(&ad, 0x0, sizeof(struct appdata));
-       ops.data = &ad;
 
-       D_LEAVE;
+       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 = rotate;
+       event_callback.language_changed = lang_changed;
+       event_callback.region_format_changed = region_changed_cb;
 
-       return appcore_efl_main(MESSAGE_PKGNAME, &argc, &argv, &ops);
+       D_LEAVE;
+       return app_efl_main(&argc, &argv, &event_callback, &ad);
 }
index 4e69bb5..24bea78 100755 (executable)
 
 #include <stdio.h>
 #include <glib.h>
-
-#include <MsgStorageTypes.h>
-#include <MapiStorage.h>
-#include <MapiMessage.h>
-#include <MapiControl.h>
-#include <MapiTransport.h>
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
 
 #include <libintl.h>
 #include <bundle.h>
-#include <appcore-efl.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)
 
 struct appdata
 {
-    Evas_Object *win_main;
-    Evas_Object *layout_main;
-
-    struct ug_cbs cbs;
-       struct ui_gadget *composer_ug;
+       Evas_Object *win_main;
+       Evas_Object *layout_main;
 
-       MSG_HANDLE_T msgHandle;
+       struct ug_cbs cbs;
+       ui_gadget_h composer_ug;
 
+       msg_handle_t msgHandle;
        void *thread_data;
 };
 
-int msg_ui_load_composer_ug(bundle *b);
-
+int msg_ui_load_composer_ug(service_h svc_handle);
 
 #endif /* __DEF_message_H__ */
 
diff --git a/main/org.tizen.message.desktop.in b/main/org.tizen.message.desktop.in
deleted file mode 100755 (executable)
index 25eded9..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Name=Messages
-Name[en_US]=Messages
-Name[ko_KR]=메시지
-Name[de_DE]=Nachrichten
-Name[el_GR]=Μηνύματα
-Name[es_ES]=Mensajes
-Name[fr_FR]=Messages
-Name[it_IT]=Messaggi
-Name[ja_JP]=メール
-Name[nl_NL]=Berichten
-Name[pt_PT]=Mensagem
-Name[ru_RU]=Сообщения
-Name[tr_TR]=Mesajlar
-Name[zh_CN]=信息
-Name[zh_HK]=訊息
-Name[zh_TW]=訊息
-Type=Application
-MimeType=sms.uri
-Exec=${BINDIR}/message
-Icon=${PKGNAME}.png
-Comment=message application
-Version=0.1.0 
-nodisplay=False
-X-TIZEN-TaskManage=True
-X-TIZEN-Multiple=False
-X-TIZEN-Removable=False
-X-TIZEN-SVC= http://tizen.org/appsvc/operation/send_text|sms|NULL;http://tizen.org/appsvc/operation/send_text|NULL|NULL
index 4f2d7a8..87608ec 100755 (executable)
@@ -1,7 +1,10 @@
 # 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 en.po nl_NL.po de_DE.po zh_HK.po zh_CN.po ru_RU.po ko_KR.po zh_TW.po ja_JP.po es_ES.po el_GR.po it_IT.po tr_TR.po pt_PT.po fr_FR.po)
+SET(POFILES ar.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en.po en_US.po es_ES.po
+       fi.po fr_FR.po he.po hi.po hr.po hu.po id.po it_IT.po ja_JP.po ko_KR.po
+       lt.po lv.po ms.po nl_NL.po no.po pl.po pt_PT.po ro.po ru_RU.po sk.po
+       sl.po sr.po sv.po th.po tr_TR.po uk.po vi.po zh_CN.po zh_HK.po zh_TW.po)
 
 SET(MSGFMT "/usr/bin/msgfmt")
 
diff --git a/main/po/ar.po b/main/po/ar.po
new file mode 100644 (file)
index 0000000..57a6559
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+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_DELIVERY_REPORT"
+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_READ_REPORT"
+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_REQUEST_DELIVERY_REPORT"
+msgstr "طلب تقرير التوصيل"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+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_HEADER_ITEM_LIST"
+msgstr "قائمة العناصر"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "تحويل"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "غير مقروءة"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+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_MMSCREATIONMODE"
+msgstr "نمط الإنشاء"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "رسالة وسائط"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "لا يوجد موضوع"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "مركز الخدمة"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "تحديد عنوان"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+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_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "قيد الاستعادة..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "لا يوجد ملحقات"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "تم النسخ إلى الحافظة"
+
diff --git a/main/po/bg.po b/main/po/bg.po
new file mode 100644 (file)
index 0000000..4d53e84
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+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_DELIVERY_REPORT"
+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_READ_REPORT"
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Отчет за доставка"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+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_HEADER_ITEM_LIST"
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Препр"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Нечетени"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+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_MMSCREATIONMODE"
+msgstr "Режим на създаване"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Мултимедийно съобщение"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Няма тема"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Център за обслужване"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Изберете адрес"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Премести в SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+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_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Възстановяване..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Няма прикачени файлове"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Копирано в системния буфер"
+
diff --git a/main/po/ca.po b/main/po/ca.po
new file mode 100644 (file)
index 0000000..4d51f57
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Llegir"
+
+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_DELIVERY_REPORT"
+msgstr "Informe de lliurament"
+
+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_READ_REPORT"
+msgstr "Informe de lectura"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Sol·licitar informe lliurament"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Sol·licitar informe lectura"
+
+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_HEADER_ITEM_LIST"
+msgstr "Llista d'elements"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Reenv"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Sense llegir"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Moure a telèfon"
+
+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_MMSCREATIONMODE"
+msgstr "Mode de creació"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Missatge multimèdia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Sense assumpte"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centre de serveis"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Seleccioni adreça"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Moure a SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Missatge programat"
+
+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_SPAM_MESSAGES"
+msgstr "Missatges de correu brossa"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Rebent tipus d'alerta"
+
+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_REPEAT"
+msgstr "Repetir"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Veure contacte"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durada de la diapositiva"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/cs.po b/main/po/cs.po
new file mode 100644 (file)
index 0000000..546968f
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Přečteno"
+
+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_DELIVERY_REPORT"
+msgstr "Potvrzení o doručení"
+
+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_READ_REPORT"
+msgstr "Zpráva o přečtení"
+
+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_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_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_HEADER_ITEM_LIST"
+msgstr "Seznam položek"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Před."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nepřečt."
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Přesunout do telefonu"
+
+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_MMSCREATIONMODE"
+msgstr "Režim vytváření"
+
+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_BODY_SERVICECENTRE"
+msgstr "Středisko služeb"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Zvolte adresu"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Přesunout na SIM kartu"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Plánovaná zpráva"
+
+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_SPAM_MESSAGES"
+msgstr "Nevyžádané zprávy"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Typ upozornění na příjem"
+
+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_REPEAT"
+msgstr "Opakovat"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Zobrazit kontakty"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Interval zobrazení snímku"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/da.po b/main/po/da.po
new file mode 100644 (file)
index 0000000..63f6989
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Læs"
+
+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_DELIVERY_REPORT"
+msgstr "Leveringsrapport"
+
+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_READ_REPORT"
+msgstr "Læsningsrapport"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Anmod om leveringsrapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Anmod om læsningsrapport"
+
+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_HEADER_ITEM_LIST"
+msgstr "Elementliste"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Vid.send"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Ulæst"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Flyt til telefon"
+
+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_MMSCREATIONMODE"
+msgstr "Oprettelsestilstand"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimediemeddelelse"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Intet emne"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Tjenestecentral"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Vælg adresse"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Flyt til SIM-kort"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Planlagt meddelelse"
+
+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_SPAM_MESSAGES"
+msgstr "Spam-meddelelser"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Modtager advarselstype"
+
+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_REPEAT"
+msgstr "Gentag"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Vis kontakter"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Varighed for dias"
+
+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 "Bloker"
+
+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 "Annuller 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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
old mode 100755 (executable)
new mode 100644 (file)
index 49ec76f..53da88f
@@ -7,15 +7,9 @@ msgstr "Abrufen"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Verschieben nicht möglich"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Nicht angefragt"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Maximale Anzahl an Seiten erreicht"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Angefordert"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Eingeschränkter Modus. Eingeschränkter Inhalt kann nicht eingefügt werden"
 
@@ -31,54 +25,18 @@ msgstr "Gelesen"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Wird abgerufen..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Abrufen fehlgeschlagen"
-
 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_BODY_PD_LANGUAGES"
-msgstr "%d Sprachen"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Nummer"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Verdoppelt"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Sendernamen eingeben"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Sendernummer eingeben"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Nichts ausgewählt"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d Kanäle"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "Gleiche Kanal-ID besteht bereits"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Sendevorgang fehlgeschlagen. Erneut versuchen?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Sender-ID-Liste voll"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1 Nachricht ausgewählt."
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1 Person ausgewählt."
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d Nachrichten ausgewählt."
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d Personen ausgewählt."
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Vorschau"
 
@@ -88,156 +46,48 @@ msgstr "Dateiname wird bereits verwendet"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "Keine Nachrichten"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Nachricht erstellen"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Zu Kontakt hinzufügen"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Adresse erstellen"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Sperrliste"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Nummer hinzufügen"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Sender erstellen"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "Verwerfen"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Nachricht kann nicht gesendet werden"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Kontakte"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "Foto aufnehmen"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "Keine Adresse"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "Signalton"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Werbung zulassen"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Anonym zulassen"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "Elementliste angehängt"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "Automatisch herunterladen"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "Automatisch"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Automatisches Löschen"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Hintergrundfarbe"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Nachrichten sperren"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Infomeldungen"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Aktivierung"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Eigene Kanäle"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Empfangskanäle"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Zentrale %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Benutzerdefinierte Zeit"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Standardstil"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Zustellbericht"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Senden fehlgeschlagen"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Alle 10 Minuten"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Alle 2 Minuten"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Alle 5 Minuten"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Schriftfarbe"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "Von"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Allgemeine Einstellungen"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM-Alphabet"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Halten Sie die Taste 1 gedrückt, um eine Verbindung zur Mailbox herzustellen, wenn kein Programm oder Anruf aktiv ist."
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Liste der eingefügten Elemente"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Sprachen"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Maximum"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Mobilbox-Nummer"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Nachricht zugestellt"
 
@@ -253,26 +103,14 @@ msgstr "Warnung"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Gesendet"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "Keine Größen- und Inhaltsbeschränkungen"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "Sie werden gewarnt, wenn Größe und Inhalt das Maximum überschreiten."
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Fax"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Stimme"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
-msgstr "Update-Hinweis"
+msgstr "WAP-Push"
 
 msgid "IDS_MSGF_BODY_READ_REPORT"
 msgstr "Lesebericht"
@@ -284,14 +122,11 @@ msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
 msgstr "Manuell"
 
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
-msgstr "Abweisen"
+msgstr "Ablehnen"
 
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Empfangsoptionen"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Antwortpfad"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "Zustellbericht anfordern"
 
@@ -301,12 +136,6 @@ msgstr "Lesebericht anfordern"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Eingeschränkt"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Sendevorgang läuft..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 Tage"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Niedrig"
 
@@ -316,48 +145,15 @@ msgstr "Normal"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Dringend"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Sendeoptionen"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Gültigkeit"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Priorität"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Zustellbericht senden"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Lesebericht senden"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Diensttyp"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Adresse"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Identisch mit"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Enthält"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Passende Kriterien"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Einmal"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Seitenanzeigedauer"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Zeichenunterstützung"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Text"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOS-Nachrichten"
 
@@ -367,21 +163,12 @@ msgstr "SMS"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Gesamtgröße"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM-Inhalt"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Sender bearbeiten"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Elementliste"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "Sekunden"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 Sekunden"
 
@@ -400,12 +187,6 @@ msgstr "Installieren"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Fremdnetz"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Gleiten"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Schriftstil"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Kontaktdetails anzeigen"
 
@@ -418,18 +199,6 @@ msgstr "Abrufen der Nachricht fehlgeschlagen"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Senden der Multimedia-Nachricht fehlgeschlagen"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "Sie können Bilder mit bis zu %d KB senden"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Visitenkarte"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "Kein Name"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Willkommen"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Weiterl."
 
@@ -439,132 +208,48 @@ msgstr "Unge-\nlesen"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "In Telefon verschieben"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Text hinzufügen"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Doppelter Empfänger"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Maximale Erstellungsgröße"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Maximale Anzahl an Empfängern (%d) erreicht"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Betreff hinzufügen"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Gruppen"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Telefonbuch"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Andere Dateien"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Ton"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Multimedia hinzufügen"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "AUS"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "EIN"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "An"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Ton aufzeichnen"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Ton aufzeichnen"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Video aufzeichnen"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Textvorlage"
-
 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_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Adresse eingeben"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Datei ungültig"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Nachricht gesendet"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Max. Nachrichtengröße überschritten"
-
 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_SERVER_NOT_RESPONDING"
-msgstr "Server antwortet nicht"
-
 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_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "Senden von MMS nicht möglich. Unerkannter Fehler"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Kalender synchronisieren"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Schriftgröße"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Ohne Anhänge"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Gesamte E-Mail"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Erstellungsmodus"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Nachricht zugestellt"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "MMS"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Neue Mailbox-Nachricht"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Kein Betreff"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Ja, alle"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "Dienstzentrale"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Dienst wird geladen"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Ton"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Senden nicht möglich. Nicht unterstützte Dateitypen im Anhang."
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Gesprächsliste"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Adresse auswählen"
 
@@ -574,30 +259,9 @@ msgstr "Auf SIM-Karte verschieben"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "Sie sind im Begriff Online zu gehen (%s). Fortfahren?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "MMS-Abruf gescheitert"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "Kein Empfänger"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Erforderlich"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "In Entwürfe speichern"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Max. Nachrichtengröße überschritten. Größe wird angepasst..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Synchronisierung fehlgeschlagen"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Erneut senden"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Sender hinzufügen"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Ungültiger Empfänger"
 
@@ -610,27 +274,15 @@ 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_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Im Massenspeichermodus kein Öffnen möglich"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Im Massenspeichermodus keine Verwendung möglich"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Aktuelle Nachricht verwerfen?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Ausgewählt"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Ausgewählt"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Löschen?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Größe wird angepasst..."
-
 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"
 
@@ -649,3 +301,204 @@ 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_SPAM_MESSAGES"
+msgstr "Spam-Nachrichten"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Benachrichtigungston"
+
+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_REPEAT"
+msgstr "Wiederholen"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Kontakte anzeigen"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Anzeigedauer:"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
old mode 100755 (executable)
new mode 100644 (file)
index 2efdcf9..6c7d91b
@@ -7,15 +7,9 @@ msgstr "Ανάκτηση"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Δεν είναι δυνατή η μετακίνηση"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Δεν ζητήθηκε"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Συμπληρώθηκε ο μέγιστος αριθμός σελίδων"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Έγινε αίτημα"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Περιορισμός. Δεν είναι δυνατή η εισαγωγή απαγορευμένου περιεχομένου"
 
@@ -31,54 +25,18 @@ msgstr "Ανάγνωση"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Ανάκτηση..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Αποτυχία ανάκτησης"
-
 msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
 msgstr "Εισάγετε κάρτα SIM για την αποστολή μηνυμάτων. Το μήνυμα θα αποθηκευτεί στα Εξερχόμενα"
 
-msgid "IDS_MSGF_BODY_PD_LANGUAGES"
-msgstr "%d γλώσσες"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Διεύθυνση κέντρου"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Διπλότυπος"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Εισαγωγή ονόματος καναλιού"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Εισαγωγή αριθμού καναλιού"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Δεν έχει γίνει καμία επιλογή"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d κανάλια"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "Υπάρχει ίδιο αναγνωριστικό καναλιού"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Αποτυχία αποστολής. Επανάληψη?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Η λίστα ταυτότητας καναλιού είναι πλήρης"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "Έχει επιλεχθεί 1 μήνυμα"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "Επιλέχθηκε 1 άτομο"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "Έχουν επιλεχθεί %d μηνύματα"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "Έχουν επιλεχθεί %d άτομα"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Προεπισκόπηση"
 
@@ -88,156 +46,48 @@ msgstr "Το όνομα αρχείου υπάρχει ήδη"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "Κανένα μήνυμα"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Δημιουργία μηνύματος"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Προσθήκη σε επαφή"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Δημιουργία διεύθυνσης"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Λίστα αποκλεισμού"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Πατήστε για προσθήκη αριθμού"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Δημιουργία καναλιού"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "Απόρριψη"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Δεν είναι δυνατή η αποστολή μηνύματος"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Επαφές"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "Λήψη φωτογραφίας"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "Καμία διεύθυνση"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "Ήχος ειδοποίησης"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Να επιτρέπονται οι διαφημίσεις"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Αποδ. ανώνυμου"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "Συνημμένη λίστα στοιχείων"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "Αυτόματη λήψη"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "Αυτόματo"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Αυτόματη διαγραφή"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Χρώμα φόντου"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Αποκλεισμός μηνυμάτων"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Μηνύματα εκπομπής κυψέλης"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Ενεργοποίηση"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Τα κανάλια μου"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Λήψη καναλιών"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Κέντρο %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Προσαρμοσμένη ώρα"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Προεπιλεγμένο στυλ"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Αναφορά παράδοσης"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Αποτυχία αποστολής"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Κάθε 10 λεπτά"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Κάθε 2 λεπτά"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Κάθε 5 λεπτά"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Χρώμα γραμματοσειράς"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "Από"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Γεν. Ρυθμίσεις"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "Αλφάβητο GSM"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Κρατήστε πατημένο το πλήκτρο '1' για σύνδεση στο διακομιστή φωνητικού ταχυδρομείου, όταν δεν βρίσκεστε σε μια εφαρμογή ή σε κλήση"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Εισαχθείσα λίστα στοιχείων"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Γλώσσες"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Μέγιστο"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Αριθμός τηλεφωνητή"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Το μήνυμα παραδόθηκε"
 
@@ -253,26 +103,14 @@ msgstr "Προειδοποίηση"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Εστάλη"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "Κανένας περιορισμός μεγέθους και περιεχομένου"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "Θα ειδοποιηθείτε όταν το μέγεθος και το περιεχόμενο υπερβούν το μέγιστο επιτρεπτό όριο"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Φαξ"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Φωνή"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
-msgstr "Push messages"
+msgstr "Μηνύματα Push"
 
 msgid "IDS_MSGF_BODY_READ_REPORT"
 msgstr "Αναφορά ανάγνωσης"
@@ -289,9 +127,6 @@ msgstr "Απόρριψη"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Επιλογές λήψης"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Διαδρομή απάντησης"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "Αίτηση αναφοράς παράδοσης"
 
@@ -301,12 +136,6 @@ msgstr "Αίτηση αναφ. ανάγνωσης"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Περιορισμός"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Αποστολή..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 ημέρες"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Χαμηλή"
 
@@ -316,48 +145,15 @@ msgstr "Κανονική"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Επείγον"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Επιλογές αποστολής"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Λήξη"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Προτεραιότητα"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Αποστολή αναφοράς παράδοσης"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Αποστολή αναφοράς ανάγνωσης"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Τύπος υπηρεσίας"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Διεύθυνση"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Ακριβώς ίδιο με"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Να συμπεριληφθεί"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Αντιστοίχιση κριτηρίων"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Μία φορά"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Διάρκεια σελίδας"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Υποστήριξη χαρακτήρων"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Κείμενο"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "Μηνύματα SOS"
 
@@ -367,21 +163,12 @@ msgstr "SMS"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Συνολικό μέγεθος"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "Περιεχόμενο DRM"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Επεξεργασία καναλιού"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Λίστα στοιχείων"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "δευτερόλεπτα"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 δευτερόλεπτα"
 
@@ -400,12 +187,6 @@ msgstr "Εγκατάσταση"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Δίκτυο περιαγωγής"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Διαφάνεια"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Στυλ γραμματοσειράς"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Προβολή λεπτομερειών επαφής"
 
@@ -418,18 +199,6 @@ msgstr "Αποτυχία ανάκτησης μηνύματος"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Αποτυχία αποστολής μηνύματος πολυμέσων"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "Μπορείτε να αποστείλετε εικόνα μέχρι %d KB"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Στοιχεία επαφής"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "Κανένα όνομα"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Καλώς ήλθατε"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Προώθ."
 
@@ -439,132 +208,48 @@ msgstr "Μη αναγνωσμένο"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Μετακίνηση στο τηλέφωνο"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Προσθήκη κειμένου"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Διπλότυπος παραλήπτης"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Μέγιστο μέγεθος για τη δημιουργία"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Συμπληρώθηκε ο μέγιστος αριθμός παραληπτών (%d)"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Πατήστε για προσθήκη θέματος"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Ομάδες"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Ευρετήριο"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Άλλα αρχεία"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Ήχος"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Προσθήκη πολυμέσων"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "Ανενεργό"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "Ενεργό"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "Προς"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Εγγραφή ήχου"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Εγγραφή ήχου"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Εγγραφή βίντεο"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Πρότυπο κειμένου"
-
 msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
 msgstr "Άλλαξε σε MMS"
 
 msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
 msgstr "Αλλαγή σε SMS"
 
-msgid "IDS_MSGC_POP_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Εισαγωγή διεύθυνσης"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Άκυρο αρχείο"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Μήνυμα εστάλη"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Υπέρβαση μέγιστου μεγέθους μηνύματος"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "%d συνημμένα διαθέσιμα. Επιλέξτε έως και %d συνημμένα"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "Ο διακομιστής δεν αποκρίνεται"
-
 msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
 msgstr "Δεν είναι δυνατή η επισύναψη όλων των αρχείων. Η μέγιστη χωρητικότητα για επισυνάψεις είναι %d KB. Συνέχεια;"
 
-msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "Δεν είναι δυνατή η αποστολή MMS. Μη αναγνωρίσιμο σφάλμα"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Συγχρονισμός ημερολογίου"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Μέγεθος γραμματοσειράς"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Χωρίς συνημμένα"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Ολόκληρο μήνυμα email"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Λειτουργία δημιουργίας"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Το μήνυμα παραδόθηκε"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "MMS"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Νέο φωνητικό μήνυμα"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Χωρίς θέμα"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Ναι σε όλα"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "Κέντρο υπηρεσίας"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Φόρτωση υπηρεσίας"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Ήχος"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Δεν είναι δυνατή η αποστολή. Έχουν επισυναφθεί τύποι αρχείων που δεν υποστηρίζονται"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Λίστα συζητήσεων"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Επιλογή διεύθυνσης"
 
@@ -574,30 +259,9 @@ msgstr "Μετακίνηση στην κάρτα SIM"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "Πρόκειται να συνδεθείτε (%s). Συνέχεια;"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "Αποτυχία ανάκτησης MMS"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "Δεν υπάρχει παραλήπτης"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Απαιτείται"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "Αποθήκευση στα πρόχειρα"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Υπέρβαση μέγ. μεγέθους μηνύματος. Αλλαγή μεγέθους..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Ο συγχρονισμός ακυρώθηκε"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Επανάληψη αποστολής"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Προσθήκη καναλιού"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Μη έγκυρος παραλήπτης"
 
@@ -610,27 +274,15 @@ msgstr "Δεν είναι δυνατή η αναπαραγωγή παιχνιδ
 msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
 msgstr "Δεν είναι δυνατή η αποθήκευση κατά την λειτουργία μαζικής αποθήκευσης"
 
-msgid "IDS_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Δεν είναι δυνατό το άνοιγμα κατά την λειτουργία μαζικής αποθήκευσης"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Δεν είναι δυνατή η χρήση κατά την λειτουργία μαζικής αποθήκευσης"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Να απορριφθεί το τρέχον μήνυμα;"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Επιλεγμένο"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Επιλεγμένο"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Διαγραφή;"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Αλλαγή μεγέθους..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "Δεν είναι δυνατή η επισύναψη. Το μέγιστο όριο μεγέθους των αρχείων είναι %d KB"
 
@@ -649,3 +301,204 @@ msgstr "Η πολιτική ασφαλείας περιορίζει τη σύν
 msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
 msgstr "Γίνεται προσθήκη. Περιμένετε..."
 
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Διεύθυνση κέντρου υπηρεσίας"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Επαναφορά..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Χωρίς συνημμένα"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Αντιγράφηκε στο πρόχειρο"
+
old mode 100755 (executable)
new mode 100644 (file)
index 4380774..29ca2b1
@@ -7,15 +7,9 @@ msgstr "Retrieve"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Unable to move"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Not requested"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Maximum number of pages reached"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Requested"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Restricted mode. Unable to insert restricted content"
 
@@ -31,54 +25,18 @@ msgstr "Read"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Retrieving..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Retrieving failed"
-
 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_BODY_PD_LANGUAGES"
-msgstr "%d languages"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Centre address"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Duplicated"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Enter channel name"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Enter channel number"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Nothing selected"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d channels"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "Same channel ID exists"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Sending failed. Try again?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Channel ID list full"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1 message selected"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1 person selected"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d messages selected"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d people selected"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Preview"
 
@@ -88,156 +46,48 @@ msgstr "File name already exists"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "No messages"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Create message"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Add to contact"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Create address"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Block list"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Tap to add number"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Create channel"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "Discard"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Unable to send message"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Contacts"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "Take photo"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "No address"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "Alert tone"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Allow advertisement"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Allow anonymous"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "Attached item list"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "Auto download"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "Automatic"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Auto delete"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Background colour"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Block messages"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Broadcast messages"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Activation"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "My channels"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Receiving channels"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Centre %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Custom time"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Default style"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Delivery report"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Sending failed"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Every 10 minutes"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Every 2 minutes"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Every 5 minutes"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Font colour"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "From"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "General settings"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM alphabet"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Hold down the '1' key to connect to the voicemail server when you are not in an application or call"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Inserted item list"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Languages"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Maximum"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Voicemail number"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Message delivered"
 
@@ -253,24 +103,12 @@ msgstr "Warning"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Sent"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "No size and content restrictions"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "You will be notified when size and content exceed the maximum allowed"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Fax"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Voice"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "Push messages"
 
@@ -289,9 +127,6 @@ msgstr "Reject"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Receiving options"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Reply path"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "Request delivery report"
 
@@ -301,12 +136,6 @@ msgstr "Request read report"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Restricted"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Sending..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 days"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Low"
 
@@ -316,48 +145,15 @@ msgstr "Normal"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Urgent"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Sending options"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Expiry"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Priority"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Send delivery report"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Send read report"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Service type"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Address"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Exactly the same as"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Include"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Match criteria"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Once"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Page duration"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Character support"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Text"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOS messages"
 
@@ -367,21 +163,12 @@ msgstr "Text messages"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Total size"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM content"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Edit channel"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Item list"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "Seconds"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 seconds"
 
@@ -400,12 +187,6 @@ msgstr "Install"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Foreign network"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Slide"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Font style"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "View contact detail"
 
@@ -418,18 +199,6 @@ msgstr "Retrieving message failed"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Sending multimedia message failed"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "You can send image up to %d KB"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Name card"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "No name"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Welcome"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Fwd"
 
@@ -439,132 +208,48 @@ msgstr "Unread"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Move to phone"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Add text"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Duplicated recipient"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Maximum creation size"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Maximum number of recipients (%d) reached"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Tap to add subject"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Groups"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Phonebook"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Other files"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Sound"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Add multimedia"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "OFF"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "ON"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "To"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Record sound"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Record sound"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Record video"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Text template"
-
 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_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Enter address"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Invalid file"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Message sent"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Message size exceeded"
-
 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_SERVER_NOT_RESPONDING"
-msgstr "Server not responding"
-
 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_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "Unable to send MMS. Unrecognised error"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Calendar sync"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Font size"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Without attachments"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Entire email"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Creation mode"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Message delivered"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "Multimedia message"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "New voicemail"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "No subject"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Yes to all"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "Service centre"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Service loading"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Sound"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Unable to send. Unsupported file types attached"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Conversation list"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Select address"
 
@@ -574,30 +259,9 @@ msgstr "Move to SIM"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "You are about to go online(%s). Continue?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "MMS retrieving failed"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "No recipient"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Required"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "Save in Drafts?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Maximum message size exceeded. Resizing..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Synchronisation cancelled"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Resend"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Add channel"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Invalid recipient"
 
@@ -610,27 +274,15 @@ 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_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Unable to open while in Mass storage mode"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Unable to use while in Mass storage mode"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Discard current message?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Selected"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Selected"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Delete?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Resizing..."
-
 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"
 
@@ -649,3 +301,204 @@ 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_SPAM_MESSAGES"
+msgstr "Spam messages"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Receiving alert type"
+
+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_REPEAT"
+msgstr "Repeat"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "View contact"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duration for slide"
+
+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"
+
diff --git a/main/po/en_US.po b/main/po/en_US.po
new file mode 100644 (file)
index 0000000..d624fcc
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Read"
+
+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_DELIVERY_REPORT"
+msgstr "Delivery report"
+
+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_READ_REPORT"
+msgstr "Read report"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Request delivery report"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Request read report"
+
+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_HEADER_ITEM_LIST"
+msgstr "Item list"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Fwd"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Unread"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Move to phone"
+
+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_MMSCREATIONMODE"
+msgstr "Creation mode"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedia message"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "No subject"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Service center"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Select address"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Move to SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Scheduled message"
+
+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_SPAM_MESSAGES"
+msgstr "Spam messages"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Receiving alert type"
+
+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_REPEAT"
+msgstr "Repeat"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "View contact"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duration for slide"
+
+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"
+
old mode 100755 (executable)
new mode 100644 (file)
index 33f395b..c8c3bd7
@@ -7,15 +7,9 @@ msgstr "Recuperar"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "No se puede mover"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "No solicitado"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Se ha alcanzado el número máximo de páginas"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Solicitado"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Modo restringido. No se puede insertar contenido restringido"
 
@@ -31,54 +25,18 @@ msgstr "Leído"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Recuperando..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Error al recuperar"
-
 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_BODY_PD_LANGUAGES"
-msgstr "%d idiomas"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Dirección de centro"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Duplicado"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Introducir nombre de canal"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Introducir número de canal"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "No se ha seleccionado nada"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d canales"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "ID de canal ya existente"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Error al enviar. Vuelva a intentarlo?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Lista de ID de canales llena"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1 mensaje seleccionado"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1 persona seleccionada"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d mensajes seleccionados"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d personas seleccionadas"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Vista previa"
 
@@ -88,156 +46,48 @@ msgstr "El nombre del archivo ya existe"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "No hay mensajes"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Crear mensaje"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Añadir a contacto"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Crear dirección"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Bloq lista"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Pulse para añadir un número"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Crear canal"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "Descartar"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Imposible enviar mensaje"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Contactos"
-
 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_ALERT_TONE"
-msgstr "Tono de alerta"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Permitir publicidad"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Permitir anónimos"
-
 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_AUTOMATIC"
-msgstr "Automática"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Eliminación automática"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Color de fondo"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Bloquear mensajes"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Mensajes de difusión"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Activación"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Mis canales"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Recibiendo canales"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Centro %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Personalizar hora"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Estilo predeterminado"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Informe de entrega"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Error al enviar"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Cada 10 minutos"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Cada 2 minutos"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Cada 5 minutos"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Color de fuente"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "De"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Ajustes generales"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "Alfabeto GSM"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Mantenga presionada la tecla '1' para conectarse al servidor de correo de voz cuando no se encuentre en una aplicación o en el curso de una llamada"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Lista de elementos insertada"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Idiomas"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Máximo"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Número de buzón de voz"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Mensaje entregado"
 
@@ -253,24 +103,12 @@ msgstr "Aviso"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Enviado"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "No hay restricciones de tamaño ni contenido"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "Se le notificará cuando el tamaño y el contenido superen el máximo permitido"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Fax"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Voz"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "Mensajes push"
 
@@ -289,9 +127,6 @@ msgstr "Rechazar"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Opciones de recepción"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Ruta de respuesta"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "Solicitar informe de envío"
 
@@ -301,12 +136,6 @@ msgstr "Solicitar inf. de lectura"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Restringido"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Enviando..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 días"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Baja"
 
@@ -316,48 +145,15 @@ msgstr "Normal"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Urgente"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Opciones de envío"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Caducidad"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Prioridad"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Enviar informe de entrega"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Enviar informe de lectura"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Tipo de servicio"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Dirección"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Exactamente igual a"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Incluir"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Coincidir criterios"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Una vez"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Duración de página"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Compatibilidad de caracteres"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Texto"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "Mensajes de emergencia"
 
@@ -367,21 +163,12 @@ msgstr "Mensajes de texto"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Tamaño total"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "Contenido de DRM"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Editar canal"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Lista de elementos"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "Segundos"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 segundos"
 
@@ -400,12 +187,6 @@ msgstr "Instalar"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Red en extranjero"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Diapositiva"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Estilo de fuente"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Ver detalles del contacto"
 
@@ -418,18 +199,6 @@ msgstr "Error al recuperar mensaje"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Error al enviar mensaje multimedia"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "Puede enviar una imagen de hasta %d KB"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Tarjeta de visita"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "Sin nombre"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Bienvenido"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Reenv."
 
@@ -439,132 +208,48 @@ msgstr "No leídos"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Mover a teléfono"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Añadir texto"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Destinatario duplicado"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Tamaño máximo de creación"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Alcanzado el número máximo de destinatarios (%d)"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Toque para añadir asunto"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Grupos"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Contactos"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Otros archivos"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Sonido"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Añadir multimedia"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "Desactivar"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "Activar"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "Para"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Grabar sonido"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Grabar sonido"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Grabar vídeo"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Plantilla de texto"
-
 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_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Introducir dirección"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Archivo no válido"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Mensaje enviado"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Tamaño máximo de mensaje superado"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "%d adjuntos disponibles. Seleccione hasta %d adjuntos"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "El servidor no responde"
-
 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_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "No se puede enviar MMS. Error no reconocido"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Sincr. de calendario"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Tamaño de fuente"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Sin archivos adjuntos"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Correo electrónico completo"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Modo de creación"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Mensaje entregado"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "Mensaje multimedia"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Nuevo correo de voz"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Sin asunto"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Sí a todo"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "Centro de servicios"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Cargando servicio"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Sonido"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "No se puede enviar. Tipos de archivos adjuntos no admitidos"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Lista de conversaciones"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Seleccionar dirección"
 
@@ -574,30 +259,9 @@ msgstr "Mover a SIM"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "Está a punto de conectarse(%s). ¿Continuar?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "Error en recuperación MMS"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "No hay destinatario"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Necesario"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "¿Guardar en Borradores?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Tamaño máximo de mensaje superado. Cambiando tamaño..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Sincronización cancelada"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Reenviar"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Añadir canal"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Destinatario no válido"
 
@@ -610,27 +274,15 @@ 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_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "No se puede abrir en modo de almacenamiento masivo"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "No se puede utilizar en modo de almacenamiento masivo"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "¿Descartar mensaje actual?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Seleccionado"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Seleccionado"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "¿Eliminar?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Ajustando tamaño..."
-
 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"
 
@@ -649,3 +301,204 @@ 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_SPAM_MESSAGES"
+msgstr "Mensajes de correo basura"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Recibiendo tipo de alerta"
+
+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_REPEAT"
+msgstr "Repetir"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Ver contactos"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duración de la presentación de diapositiva"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/fi.po b/main/po/fi.po
new file mode 100644 (file)
index 0000000..c4e4730
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Lue"
+
+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_DELIVERY_REPORT"
+msgstr "Toimitusraportti"
+
+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_READ_REPORT"
+msgstr "Lukuraportti"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Pyydä toimitusraportti"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Pyydä lukuraportti"
+
+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_HEADER_ITEM_LIST"
+msgstr "Kohdeluettelo"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Siir."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Lukem."
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Siirrä puhelimeen"
+
+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_MMSCREATIONMODE"
+msgstr "Luontitila"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimediaviesti"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Ei aihetta"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Viestikeskus"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Valitse osoite"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Siirrä SIM-kortille"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Ajoitettu viesti"
+
+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_SPAM_MESSAGES"
+msgstr "Roskapostiviestit"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Vastaanotettavan hälytyksen tyyppi"
+
+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_REPEAT"
+msgstr "Toista"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Tarkastele yhteystietoja"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Dian kesto"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
old mode 100755 (executable)
new mode 100644 (file)
index 350d3c3..74c0520
@@ -7,15 +7,9 @@ msgstr "Récupérer"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Déplacement impossible"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Non demandé"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Nombre maximum de pages atteint"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Demandé"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Mode restreint. Impossible d'insérer un contenu restreint"
 
@@ -31,54 +25,18 @@ msgstr "Lu"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Récupération..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Echec de la 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_BODY_PD_LANGUAGES"
-msgstr "%d langues"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Numéro de messagerie"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Nom déjà existant"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Saisir le nom de la station"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Entrez numéro de chaîne"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Aucune sélection"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d canaux"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "Un ID de station identique existe déjà"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Echec de l'envoi. Réessayez ultérieurement?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Liste d'ID de canaux saturée"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1 message sélectionné"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1 personne sélectionnée"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d messages sélectionnés"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d personnes sélectionnées"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Aperçu"
 
@@ -88,156 +46,48 @@ msgstr "Nom de fichier déjà utilisé"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "Aucun message"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Créer un message"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Ajouter aux contacts"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Créer adresse"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Liste bloquée"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Appuyez pour ajouter le numéro"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Créer chaîne"
-
 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_HEADER_CONTACTS"
-msgstr "Contacts"
-
 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_ALERT_TONE"
-msgstr "Sonnerie d'alerte"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Autoriser la publicité"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Autoriser n° inconnu"
-
 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_AUTOMATIC"
-msgstr "Automatique"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Suppression auto."
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Couleur d'arrière-plan"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Bloquer les messages"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Messages de diffusion"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Activation"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Mes canaux"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Canaux de réception"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Centre %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Durée personnalisée"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Style par défaut"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Accusé de réception"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Echec de l'envoi"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Toutes les 10 min"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Toutes les 2 min"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Toutes les 5 min"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Couleur de la police"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "De"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Paramètres généraux"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "Alphabet GSM"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Maintenir la touche 1 enfoncée pour accéder à la messagerie vocale lorsqu'aucune application n'est ouverte ou qu'aucun appel n'est en cours"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Liste d'éléments insérée"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Langues"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Maximum"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "N° de messagerie vocale"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Message remis"
 
@@ -253,24 +103,12 @@ msgstr "Avertissement"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Envoyé(s)"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "Aucune restriction de taille et de contenu"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "Vous serez informé lorsque vous aurez atteint les limites de taille et de contenu"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "O"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "Ko"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Fax"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Vocal"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "Messages Push"
 
@@ -289,9 +127,6 @@ msgstr "Refuser"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Options de réception"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Chemin de réponse"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "Accusé de réception"
 
@@ -301,12 +136,6 @@ msgstr "Confirmation de lecture"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Limité"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Envoi..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 jours"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Faible"
 
@@ -316,48 +145,15 @@ msgstr "Normale"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Urgent"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Options d'envoi"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Expiration"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Priorité"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Accusé de réception"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Confirmation de lecture"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Type de service"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Adresse"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Identique à"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Inclure"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Critères correspondants"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Une fois"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Temps de défilement des pages"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Type d'alphabet"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Texte"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "Messages SOS"
 
@@ -367,21 +163,12 @@ msgstr "SMS"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Taille totale"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "Contenu DRM"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Modifier les chaînes"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Sélection"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "secondes"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 secondes"
 
@@ -400,12 +187,6 @@ msgstr "Installer"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Réseau d'itinérance"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Défilement"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Police"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Afficher les détails du contact"
 
@@ -418,18 +199,6 @@ msgstr "Echec de la récupération du message"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Echec envoi MMS"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "Vous pouvez envoyer une image de %d Ko maximum"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Carte de visite"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "Aucun nom"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Bienvenue"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Transf."
 
@@ -439,132 +208,48 @@ msgstr "Non lu"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Déplacer vers le téléphone"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Ajouter texte"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Destinataire en double"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Taille de création maximale autorisée"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Nombre maximum de destinataires (%d) atteint"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Ajouter objet"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Groupes"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Répertoire"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Autres fichiers"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Son"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Ajouter multimédia"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "Désactivé"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "Activé"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "A"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Enregistrer un mémo"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Enregistrer un mémo"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Enregistrer une vidéo"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Modèle SMS"
-
 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_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Saisir une adresse"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Fichier non valide"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Message envoyé"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Taille de message max. dépassée"
-
 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_SERVER_NOT_RESPONDING"
-msgstr "Pas de réponse du serveur"
-
 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_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "Envoi MMS impossible. Erreur non reconnue"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Synchro. des calendriers"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Taille de la police"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Sans pièce jointe"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "E-mail entier"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Mode de création"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Message remis"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "MMS"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Nouveau message vocal"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Aucun objet"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Oui à tout"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "Centre de service"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Chargement du service"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Son"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Envoi impossible. Les types de fichiers joints ne sont pas pris en charge"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Liste de conversations"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Sélectionner l'adresse"
 
@@ -574,30 +259,9 @@ msgstr "Déplacer vers la carte SIM"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "Connexion imminente (%s). Continuer ?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "Echec récupération MMS"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "Pas de destinataire"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Requis"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "Enregistrer dans Brouillons ?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "La taille du message dépasse la limite autorisée. Redimensionnement..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Synchronisation annulée"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Renvoyer"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Ajouter un canal"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Destinataire non valide"
 
@@ -610,27 +274,15 @@ 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_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Impossible d'ouvrir en mode Stockage de masse"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Utilisation impossible en mode Stockage de masse"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Ignorer le message actuel ?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Sélectionné"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Sélectionné"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Supprimer ?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Redimensionnement..."
-
 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"
 
@@ -649,3 +301,204 @@ 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_SPAM_MESSAGES"
+msgstr "Messages Spam"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Type d'alerte de réception"
+
+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_REPEAT"
+msgstr "Nombre de répétitions"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Voir le contact"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durée de la diapositive"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/he.po b/main/po/he.po
new file mode 100644 (file)
index 0000000..9bbe12d
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+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_DELIVERY_REPORT"
+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_READ_REPORT"
+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_REQUEST_DELIVERY_REPORT"
+msgstr "בקש דוח מסירה"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+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_HEADER_ITEM_LIST"
+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_MSGF_SK_FORWARD_LITE"
+msgstr "העבר"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "לא נקרא"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+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_MMSCREATIONMODE"
+msgstr "מצב יצירה"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "הודעת מולטימדיה"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "אין נושא"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "מוקד הודעות"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "בחר כתובת"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "העבר ל-SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "הודעה מתוזמנת"
+
+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_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "משחזר..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "אין קבצים מצורפים"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "הועתק ללוח"
+
diff --git a/main/po/hi.po b/main/po/hi.po
new file mode 100644 (file)
index 0000000..c24ca71
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+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_DELIVERY_REPORT"
+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_READ_REPORT"
+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_REQUEST_DELIVERY_REPORT"
+msgstr "वितरण रिपोर्ट के लिए अनुरोध"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+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_HEADER_ITEM_LIST"
+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_MSGF_SK_FORWARD_LITE"
+msgstr "आगे"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "अपठित"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+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_MMSCREATIONMODE"
+msgstr "निर्माण मोड"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "मल्टीमीडिया सन्देश"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "कोई विषय नहीं"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "सेवा केंद्र"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "पता चुनें"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM में ले जाएं"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+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_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "रीस्‍टोर हो रहा है…"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "कोई संलग्नक नहीं"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "क्लिपबोर्ड में कॉपी किया गया"
+
diff --git a/main/po/hr.po b/main/po/hr.po
new file mode 100644 (file)
index 0000000..8b2c9e8
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Pročitano"
+
+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_DELIVERY_REPORT"
+msgstr "Izvješće o isporuci"
+
+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_READ_REPORT"
+msgstr "Izvještaj o čitanju"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Izvješće isporuke"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Izvješće čitanja"
+
+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_HEADER_ITEM_LIST"
+msgstr "Popis stavki"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Proslij."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nepročitano"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Premjesti u telefon"
+
+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_MMSCREATIONMODE"
+msgstr "Način sastavljanja"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Bez naslova"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centar za usluge"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Odaberite adresu"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Premjesti na SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Odgođeno slanje"
+
+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_SPAM_MESSAGES"
+msgstr "Neželjene 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_RECEIVING_ALERT_TYPE"
+msgstr "Vrsta obavjesti"
+
+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_REPEAT"
+msgstr "Ponavljanje"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Prikaz kontakta"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Trajanje stranice"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/hu.po b/main/po/hu.po
new file mode 100644 (file)
index 0000000..ea37cf1
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Elolvasva"
+
+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_DELIVERY_REPORT"
+msgstr "Kézbesítési jelentés"
+
+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_READ_REPORT"
+msgstr "Jelentést olvas"
+
+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_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_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_HEADER_ITEM_LIST"
+msgstr "Tételek listája"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Tov.k."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Olv.tlan"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Telefonra áthelyez"
+
+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_MMSCREATIONMODE"
+msgstr "Létrehozási mód"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimédia üzenet"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Üres tárgymező"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Szolgáltatásközpont"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Válasszon címet"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "SIM-kártyára áthelyez"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Ütemezett üzenet"
+
+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_SPAM_MESSAGES"
+msgstr "Levélszemét"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Fogadásjelzés típusa"
+
+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_REPEAT"
+msgstr "Ismétlés"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Névjegy megtekintése"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Dia időtartama"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/id.po b/main/po/id.po
new file mode 100644 (file)
index 0000000..35e576b
--- /dev/null
@@ -0,0 +1,504 @@
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Tidak bisa membuka"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Mendapatkan kembali"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Tidak bisa memindahkan"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Maksimum jumlah halaman tercapai"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Mode terbatas. Tidak bisa menyisipkan konten terbatas"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Terkirim"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Habis waktu"
+
+msgid "IDS_MSGF_BODY_READ"
+msgstr "Membaca"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Mendapatkan kembali..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Masukkan kartu SIM utk mengirim pesan. Pesan akan tersimpan di Kotak keluar"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Masukkan nomor saluran"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 pesan dipilih"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d pesan dipilih"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Tinjauan"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nama file sudah ada"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Tdk ada pesan"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Tambah ke kontak"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Buang"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Tidak bisa mengirim pesan"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Ambil foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Tdk ada alamat"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Daftar item terlampir"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Otomatis download"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Pesan siaran"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Pusat %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Kustomisasi waktu"
+
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Laporan pengiriman"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Pengiriman gagal"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Dari"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Dftr item tersisip"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Pesan dikirim"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Pesan ditelusuri"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Bebas"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Peringatan"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Terkirim"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Pesan push"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Baca laporan"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Diterima"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Tolak"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Pilihan penerimaan"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Laporan permintaan pengiriman"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Baca laporan permintaan"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Terbatas"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Rendah"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Mendesak"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Prioritas"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Kirim laporan baca"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Durasi halaman"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Pesan SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Pesan teks"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Ukuran total"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Konten DRM"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Daftar item"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 detik"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 detik"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 detik"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Jaringan asal"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Instal"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Jaringan luar negeri"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Lihat detail kontak"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Pesan multimedia terkirim"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Penelusuran pesan gagal"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Mengirim pesan multimedia gagal"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Teruskn"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Tak dibaca"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Pindah ke telepon"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Penerima digandakan"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Jumlah maksimum penerima (%d) tercapai"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Ke"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Rekam suara"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Rekam video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Diubah ke MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Diubah ke SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d lampiran tersedia. Pilih hingga %d lampiran"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Tidak dapat melampirkan semua file. Kapasitas lampiran maksimum %d KB. Lanjutkan?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Ukuran huruf"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Mode kreasi"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Pesan multimedia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Tanpa subjek"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Pusat layanan"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Pilih alamat"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Pindah ke SIM"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Anda akan online (%s). Lanjutkan?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Krm ulang"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Penerima tidak berlaku"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Penerima tidak berlaku"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Tidak bisa memutar selama panggilan"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Tidak bisa menyimpan dalam mode Media penyimpan"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Buang pesan terkini?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Terpilih"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Hapus?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Tidak bisa melampirkan. Ukuran maksimum file adalah %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Terbatas"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Tdk dapat utk diteruskan.\nFile diteruskan terkunci"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Pesan terjadwal"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Kebijakan pengaman membatasi penulisan pesan teks"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Menambah. Harap tunggu..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Alamat pusat layanan"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Pesan spam"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Besar"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Kecil"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Tiny"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Tidak dapat mengirim pesan yang dijadwalkan. Atur waktu lain"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Tanggal dan waktu"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Pesan multimedia"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Tidak ada penerima ditambahkan. Masukkan penerima"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Pilihan pengiriman"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Menerima tipe alert"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Normal"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Mengirim SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Penerima"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Mengulang"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Pesan"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Sekali"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 kali"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 kali"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Saya dalam situasi darurat. Tolong saya"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM tidak disisipkan"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Ambil Gambar"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Ambil video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Rekam audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Pesan CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Pesan kartu SIM"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Durasi harus lebih lama dari %d detik"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Tidak bisa menambah konten"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Pilih penerima"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Lihat kontak"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Durasi (%s detik)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Gambar terlalu besar. Mengkompresi..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Pesan disimpan sebagai draft"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Lain"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Draft"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durasi untuk slide"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Kirim email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Item yang dimasukkan"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Item terlampir"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d lampiran"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Pesan\nterjadwal"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Durasi\n(%d detik)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Pakai info kontak lain"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Pesan ini terdapat lampiran file tak ditampilkan"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Pesan ini termasuk file terlampir yang tidak diperlihatkan"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Simpan semua"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Pesan draf"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Pesan akan dipulihkan"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Pesan terjadwal akan dibatalkan"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Salin teks pesan"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Lihat rincian pesan"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Pesan terkunci"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Kotak-kotak pesan"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Blok"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Salin ke telepon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Pesan disalin dari kartu SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Batalkan pesan"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Lampiran"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Mengirim pesan gagal"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Jumlah maksimum karakter tercapai"
+
+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 "Simpan ulang…"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Tdk ada lampiran"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Disalin ke clipboard"
+
old mode 100755 (executable)
new mode 100644 (file)
index 9f3fcc6..ca744e3
@@ -7,15 +7,9 @@ msgstr "Recupera"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Impossibile spostare"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Non richiesto"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Raggiunto numero massimo di pagine"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Richiesto"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Modalità limitata. Impossibile inserire contenuto limitato"
 
@@ -31,54 +25,18 @@ msgstr "Letto"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Recupero..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Errore 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_BODY_PD_LANGUAGES"
-msgstr "%d lingue"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Numero"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Duplicato"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Inserisci nome canale"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Inserire numero canale"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Nessun elemento selezionato"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d canali"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "Esiste già lo stesso ID canale"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Invio non eseguito. Riprovare?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Elenco ID canale pieno"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1 messaggio selezionato"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1 persona selezionata"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d messaggi selezionati"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d persone selezionate"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Anteprima"
 
@@ -88,156 +46,48 @@ msgstr "Nome file già in uso"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "Nessun messaggio"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Crea messaggio"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Aggiungi a contatto"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Crea indirizzo"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Elenco bloccati"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Toccare per aggiungere il numero"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Crea canale"
-
 msgid "IDS_MSGF_OPT_DISCARD"
-msgstr "Elimina"
+msgstr "Annulla"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Impossibile inviare messaggio"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Rubrica"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "Scatta foto"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "Nessun indirizzo"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "Tono avviso"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Consenti pubblicità"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Consenti anonimi"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "Elenco elementi allegati"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "Download automatico"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "Automatica"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Eliminazione automatica"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Colore sfondo"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Blocca messaggi"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Messaggi broadcast"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Attivazione"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Canali personali"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Ricezione canali"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Centro %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Ora personalizzata"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Stile predefinito"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Rapporto consegna"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Invio non riuscito"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Ogni 10 minuti"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Ogni 2 minuti"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Ogni 5 minuti"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Colore carattere"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "Da"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Generali"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "Alfabeto GSM"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Tenere premuto il tasto '1' per connettersi al server della segreteria telefonica mentre non è in esecuzione un'applicazione o in corso una chiamata"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Elenco elementi inseriti"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Lingue"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Massimo"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Numero segreteria telefonica"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Messaggio consegnato"
 
@@ -253,24 +103,12 @@ msgstr "Avviso"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Inviato"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "Nessuna restrizione per dimensioni e contenuto"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "Verrà ricevuta una notifica in caso di superamento del limite massimo per dimensioni e contenuto"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Fax"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Voce"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "Messaggi Push"
 
@@ -289,9 +127,6 @@ msgstr "Rifiuta"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Opzioni di ricezione"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Percorso risposta"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "Chiedi conferma consegna"
 
@@ -301,12 +136,6 @@ msgstr "Conferma lettura"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Con restrizioni"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Invio..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 giorni"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Bassa"
 
@@ -316,48 +145,15 @@ msgstr "Normale"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Urgente"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Opzioni di invio"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Scadenza"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Priorità"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Invia conferma consegna"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Invia conferma lettura"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Tipo di servizio"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Indirizzo"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Esattamente uguale a"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Contiene"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Criteri corrispondenza"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Una volta"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Durata pagina"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Caratteri supportati"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Testo"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "Messaggi SOS"
 
@@ -367,21 +163,12 @@ msgstr "SMS"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Dimensione totale"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "Contenuto DRM"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Modifica canale"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Elenco elementi"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "secondi"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 secondi"
 
@@ -400,12 +187,6 @@ msgstr "Installa"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Rete roaming"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Scorrimento"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Stile caratteri"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Visualizza dettagli contatto"
 
@@ -418,18 +199,6 @@ msgstr "Impossibile recuperare messaggio"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Invio MMS non eseguito"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "È possibile inviare immagini fino a %d KB"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Biglietto da visita"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "Nessun nome"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Benvenuto"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Inoltra"
 
@@ -439,132 +208,48 @@ msgstr "Non letto"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Sposta nel telefono"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Aggiungi testo"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Destinatario duplicato"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Dimensioni massime creazione"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Raggiunto numero massimo di destinatari (%d)"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Aggiungi oggetto"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Gruppi"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Rubrica"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Altri file"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Suono"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Aggiungi file multimediale"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "DISATTIVO"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "ATTIVO"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "A"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Registra suono"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Registra suono"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Registra video"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Modello di testo"
-
 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_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Inserisci indirizzo"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "File non valido"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Messaggio inviato"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Superate dimensioni massime messaggio"
-
 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_SERVER_NOT_RESPONDING"
-msgstr "Il server non risponde."
-
 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_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "Impossibile inviare MMS. Errore non riconosciuto"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Sincronizza agenda"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Dimensioni carattere"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Senza allegati"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Intera e-mail"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Modalità creazione"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Messaggio consegnato"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "MMS"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Nuovo messaggio vocale"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Nessun oggetto"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Sì a tutti"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "Centro servizi"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Caricamento servizio"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Suono"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Impossibile inviare. Tipi file non supportati"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Elenco conversazioni"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Seleziona indirizzo"
 
@@ -574,30 +259,9 @@ msgstr "Sposta in SIM"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "Connessione in corso(%s). Continuare?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "Recupero MMS fallito"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "Nessun destinatario"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Richiesto"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "Salvare in Bozze?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Superate dimensioni max. messaggio. Ridimensionamento..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Sincronizzazione annullata"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Invia di nuovo"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Aggiungi canale"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Destinatario non valido"
 
@@ -610,27 +274,15 @@ 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_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Impossibile aprire in modalità Archiviazione di massa"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Impossibile utilizzare in modalità Archiviazione di massa"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Eliminare messaggio corrente?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Selezionato"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Selezionato"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Eliminare?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Ridimensionamento..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "Impossibile allegare. Dimensioni massime file %d KB"
 
@@ -649,3 +301,204 @@ 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_SPAM_MESSAGES"
+msgstr "Messaggi spam"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Ricezione tipo di avviso"
+
+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_REPEAT"
+msgstr "Ripeti"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Visualizza contatti"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durata per slide"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
old mode 100755 (executable)
new mode 100644 (file)
index 7458d55..1381216
@@ -1,5 +1,5 @@
 msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
-msgstr "é\96\8bã\81\91â\80\8bã\81¾ã\81\9bã\82\93"
+msgstr "é\96\8bã\82\89ã\81\8fâ\80\8bã\81\93ã\81¨ã\81\8câ\80\8bã\81§ã\81\8dâ\80\8bã\81¾ã\81\9bã\82\93ã\80\82"
 
 msgid "IDS_MSGF_OPT_RETRIEVE"
 msgstr "受信"
@@ -7,20 +7,14 @@ msgstr "受信"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "移動​でき​ません。"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "要求しませんでした。"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "最大​ページ数​に​なりました"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "要求しました。"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "制限​モード​です。​制限​された​内容​を​挿入​できません"
 
 msgid "IDS_MSGF_BODY_DELIVERED"
-msgstr "配信完了"
+msgstr "配信完了"
 
 msgid "IDS_MSGF_BODY_EXPIRED"
 msgstr "期限切れ"
@@ -31,92 +25,35 @@ msgstr "既読"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "受信中..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "受信​できません​でした"
-
 msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
 msgstr "SIM​カード​を​挿入​して​メッセージ​を​送信​します。​メッセージ​は​送信BOXに​保存​され​ます"
 
-msgid "IDS_MSGF_BODY_PD_LANGUAGES"
-msgstr "%d言語​です"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "センター​アドレス"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "重複​しています"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "チャンネル名を​入力​"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "チャンネル番号を入力"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "何も​選択​されて​いません"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d​チャンネル"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "同じ​チャンネル​ID​が存在します"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "送信​に​失敗​しました。​やり直し​ますか?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "チャンネル​ID​リスト​は​いっぱい​です"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1件​の​メッセージ​を​選択​しました"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1人​選択​しました"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d件のメッセージを選択しました。"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d人​選択​しました"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "プレビュー"
 
 msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
-msgstr "ファイル名が既にあります。"
+msgstr "ファイル名が既に登録​されて​います。"
 
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "メッセージがありません。"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "メッセージ作成"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "電話帳に追加"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "アドレス​を​作成​"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "ブロックリスト"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "タップ​して​番号​を​追加​します"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "チャンネル​作成"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "破棄"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
-msgstr "メッセージ​を​送信​でき​ません"
-
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "電話帳"
+msgstr "メッセージ​を​送信​でき​ません。"
 
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "カメラを起動"
@@ -124,120 +61,33 @@ msgstr "カメラを起動"
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "アドレスはありません"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "アラート​音"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "広告を​許可"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "匿名​を​許可​"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "添付​リスト"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "自動​受信"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "自動"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "メール自動消去"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "背景色"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "メッセージをブロック"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "放送​メッセージ"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "アクティベーション"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "マイチャンネル"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "受信​チャンネル"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "センター​%d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "時間​設定"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "標準​スタイル"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "配信​確認"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "送信に失敗しました。"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "10分ごと"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "2分ごと"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "5分ごと"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "文字カラー"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "送信元"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "基本設定"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM alphabet"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "アプリケーション​の​未使用中​または​通話中​に​‘1’​キー​を​押した​ままに​すると、​留守番​電話​サーバー​に​接続​され​ます"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "挿入​アイテム​リスト"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "言語"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "最大"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "留守番​電話​番号"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "メッセージ​が​配信​されました"
 
@@ -251,13 +101,7 @@ msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
 msgstr "警告"
 
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
-msgstr "送信履歴"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "サイズ​および​コンテンツ​制約​は​ありません"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "サイズ​と​コンテンツ​が​最大​許可値​を​超えた​場合は​通知​され​ます"
+msgstr "送信完了"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
@@ -265,12 +109,6 @@ msgstr "B"
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "FAX"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "音声"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "プッシュ​メッセージ"
 
@@ -289,9 +127,6 @@ msgstr "拒否"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "受信​オプション"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "返信パス"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "配信​レポート​を​要求​"
 
@@ -301,63 +136,24 @@ msgstr "既読​レポート​を​要求​"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "制限されました。"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "送信中..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2日"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "低"
 
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
-msgstr "標準"
+msgstr ""
 
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "高"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "送信オプション"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "有効期限"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "優先度"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "配信​レポート​を​送信​"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "既読​レポート​を​送信​"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "サービス​タイプ"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "アドレス"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "完全一致"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "内容"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "振り分けルール"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "1回のみ"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "ページ​間隔"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "文字​コード"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "テキスト"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOSメッセージ"
 
@@ -367,21 +163,12 @@ msgstr "SMS"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "合計​の​サイズ"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM​コンテンツ"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "チャンネルを​編集​"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "アイテム​リスト"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "秒"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10秒"
 
@@ -400,12 +187,6 @@ msgstr "インストール"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "外部ネットワーク"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "スライド"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "フォント​スタイル"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "連絡先​詳細​を​表示"
 
@@ -418,18 +199,6 @@ msgstr "メッセージ​の​受信​に​失敗​しました"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "マルチ​メディア​メッセージ​の​送信​に​失敗​しました"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "最大%dKB​まで​画像​を​送信​できます"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "名刺"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "名前なし"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "ようこそ"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "転送"
 
@@ -439,132 +208,48 @@ msgstr "未読"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "本体に移動"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "本文を入力"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "宛先​が​重複​して​います。"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "メール作成サイズ"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "宛先が最大件数(%d)に達しました。"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "​件名​を​追加​"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "グループ"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "電話帳"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "その他​のファイル"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "サウンド"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "マルチメディア​を​追加​"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "OFF"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "ON"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "宛先"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "ボイスレコーダー起動"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "ボイスレコーダー起動"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "ビデオカメラ起動"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "定型文"
-
 msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
 msgstr "MMS​に​変更​しました"
 
 msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
 msgstr "SMS​に​変更​しました"
 
-msgid "IDS_MSGC_POP_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "アドレス入力"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "ファイルが不正です"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "メッセージ​が​送信​され​ました"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "メッセージ​サイズ​を​超え​ました"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "あと<n>件 追加できます。最大%d件まで添付可能です"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "サーバー​から​応答​が​あり​ません"
-
 msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
 msgstr "全てのファイルを添付できません。 最大添付サイズは%dKBです。 続行しますか?"
 
-msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "MMS​を​送信​でき​ません。​認識​されて​いない​エラー​です"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "カレンダー​同期"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "文字サイズ"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "添付​なし"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Eメール全体"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "作成​モード"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "メッセージ​が​配信​されました"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "マルチメディア​メッセージ"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "新しい​留守番電話"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "件名なし"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "全て​に​はい"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "サービス​センター"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "サービス​読込"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "サウンド"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "送信できません。未対応のファイルが添付されています。"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "会話​リスト"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "アドレスの選択"
 
@@ -574,30 +259,9 @@ msgstr "SIMに移動"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "オンライン​しようと​して​います​(%s)。​続行しますか?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "MMS retrieving failed"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "受信者が​ありません"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "必要"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "下書きに保存しますか?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "メッセージの最大サイズを超えました。サイズ変更中..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "同期​が​キャンセル​され​ました"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "再送信"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "チャンネルを追加"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "宛先​が​無効​です"
 
@@ -605,32 +269,20 @@ msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
 msgstr "無効な宛先"
 
 msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
-msgstr "通話中​に​再生​できません。"
+msgstr "通話中​に​再生​できません。"
 
 msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
 msgstr "マスストレージモード中​に​保存​する​ことは​できません。"
 
-msgid "IDS_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "マスストレージモード中​に​開く​ことは​できません。"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "マスストレージモード中​に​使用​する​ことは​できません。"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "現在​の​メッセージ​を​破棄​しますか​?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "1件"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "選択しました。"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "削除しますか?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "リサイズ中…"
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "添付できません。ファイルの最大サイズは%dKBです。"
 
@@ -649,3 +301,204 @@ msgstr "SMSの作成は、セキュリティポリシーによって制限され
 msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
 msgstr "追加中​です。​しばらく​お待ち​ください..."
 
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "サービス​センター​アドレス"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "復元中..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "未​添付"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "クリップボード​に​コピー​しました。"
+
old mode 100755 (executable)
new mode 100644 (file)
index 1ef07d6..8636dc2
@@ -7,15 +7,9 @@ msgstr "본문 받기"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "이동시킬 수 없습니다"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "요청되지 않았습니다"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "최대 페이지 수를 초과하였습니다"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "요청되었습니다"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "제한 모드입니다. 제한된 컨텐츠는 삽입할 수 없습니다"
 
@@ -23,62 +17,26 @@ msgid "IDS_MSGF_BODY_DELIVERED"
 msgstr "전송되었습니다"
 
 msgid "IDS_MSGF_BODY_EXPIRED"
-msgstr "기한이 만료되었습니다"
+msgstr "만료된 컨텐츠"
 
 msgid "IDS_MSGF_BODY_READ"
-msgstr "읽"
+msgstr "읽"
 
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "가져오는 중..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "불러오지 못하였습니다"
-
 msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
-msgstr "메시지를 전송하기 위해서는 사용 가능한 USIM 카드를 넣으세요. 전송되지 못한 메시지는 발신대기함에 저장됩니다"
-
-msgid "IDS_MSGF_BODY_PD_LANGUAGES"
-msgstr "%d개 언어"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "메시지 서버 주소"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "같은 번호가 있습니다"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "채널 이름을 입력하세요"
+msgstr "메시지를 전송하기 위해서는 사용 가능한 SIM 카드를 넣으세요. 전송되지 못한 메시지는 발신대기함에 저장됩니다"
 
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "채널 번호를 입력하세요"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "선택된 것이 없습니다"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d 채널"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "같은 채널 ID가 있습니다"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "전송하지 못하였습니다. 다시 시도할까요?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "채널 ID 목록이 가득 찼습니다"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1개의 메시지가 선택되었습니다"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1명이 선택되었습니다"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d개의 메시지가 선택되었습니다"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d명이 선택되었습니다"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "미리보기"
 
@@ -88,156 +46,48 @@ msgstr "사용 중인 이름입니다"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "메시지가 없습니다"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "메시지 작성"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "연락처에 추가"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "주소 추가"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "차단 목록"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "전화번호를 추가하려면 누르세요"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "채널 추가"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "취소"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "메시지를 전송할 수 없습니다"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "연락처"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "사진 촬영"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "저장된 주소가 없습니다"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "알림음"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "광고 수신"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "익명 메시지 수신"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "첨부파일 목록"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "자동 다운로드"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "자동"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "자동 삭제"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "배경색"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "스팸 메시지 차단"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "방송 메시지"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "실행"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "내 채널"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "수신 채널"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "센터%d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "사용자 설정 시간"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "메시지 속성"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "수신 확인"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "전송하지 못하였습니다"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "10분마다"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "2분마다"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "5분마다"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "색깔"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "발신"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "일반 설정"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM 알파벳"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "음성사서함에 연결하려면 애플리케이션을 사용하지 않을 때나 통화 중이 아닐 때 1번 버튼을 길게 누르세요"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "첨부파일 목록"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "언어"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "최대"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "음성사서함 번호"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "메시지가 전달되었습니다"
 
@@ -253,29 +103,17 @@ msgstr "경고"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "전송되었습니다"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "메시지와 첨부파일의 용량이 제한되어 있지 않습니다"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "메시지와 첨부파일의 용량이 허용 범위를 초과할 경우 알립니다"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "팩스"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "음성 메시지"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "푸시 메시지"
 
 msgid "IDS_MSGF_BODY_READ_REPORT"
-msgstr "읽음 확인 메시지"
+msgstr "읽음 확인"
 
 msgid "IDS_MSGF_BODY_RECEIVED"
 msgstr "수신하였습니다"
@@ -289,9 +127,6 @@ msgstr "거절"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "수신 옵션"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "회신 경로"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "수신 확인"
 
@@ -301,12 +136,6 @@ msgstr "읽음 확인"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "제한"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "전송 중..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2일"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "낮음"
 
@@ -316,48 +145,15 @@ msgstr "보통"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "긴급"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "전송 옵션"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "만료일"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "중요도"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "수신 확인 메시지 전송"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "읽음 확인 설정"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "서비스 형식"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "주소"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "입력 내용과 일치"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "포함"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "적용 기준"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "한 번만"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "페이지 표시 시간"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "지원문자 형식"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "문자"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOS메시지"
 
@@ -367,21 +163,12 @@ msgstr "문자 메시지"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "총 크기"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "유니코드"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM 컨텐츠"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "채널 편집"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "항목 목록"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "초"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10초"
 
@@ -400,12 +187,6 @@ msgstr "설치"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "로밍 네트워크"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "슬라이드"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "글자 효과"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "연락처 상세정보 보기"
 
@@ -418,18 +199,6 @@ msgstr "메시지를 가져오지 못하였습니다"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "MMS를 전송하지 못하였습니다"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "%dKB까지 이미지를 전송할 수 있습니다"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "내 연락처"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "이름이 없습니다"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "환영합니다"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "전달"
 
@@ -439,132 +208,48 @@ msgstr "읽지 않음"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "휴대폰으로 이동"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "텍스트 추가"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "수신인이 중복 입력되었습니다"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "최대 작성 크기"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "추가할 수 있는 수신인(%d명)을 초과하였습니다"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "제목을 입력하려면 누르세요"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "그룹"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "연락처"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "기타"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "사운드"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "파일 추가"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "끄기"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "켜기"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "수신인"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "음성녹음"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "음성녹음"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "동영상 촬영"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "상용구"
-
 msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
 msgstr "MMS로 전환되었습니다"
 
 msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
 msgstr "문자 메시지로 변경되었습니다"
 
-msgid "IDS_MSGC_POP_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "주소를 입력하세요"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "사용할 수 없는 파일입니다"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "메시지가 전송되었습니다"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "전송 가능한 메시지 크기가 초과되었습니다"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "첨부파일 %d개가 있습니다. %d개까지 선택할 수 있습니다"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "서버가 응답하지 않습니다"
-
 msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
 msgstr "모든 파일을 첨부할 수 없습니다. 첨부할 수 있는 최대 파일 용량은 %dKB입니다. 계속할까요?"
 
-msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "알 수 없는 오류가 발생하였습니다. MMS를 전송할 수 없습니다"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "일정 동기화"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "글자 크기"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "첨부파일 제외"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "전체 이메일"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
-msgstr "작성 모드"
-
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "메시지가 전달되었습니다"
+msgstr "첨부 제한 설정"
 
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "MMS"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "새 음성 메시지"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "제목이 없습니다"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "모두에게 알림"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "서비스 센터"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "서비스 불러오기"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "소리"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "전송할 수 없습니다. 지원되지 않는 파일 형식이 첨부되었습니다"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "대화 목록"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "주소를 선택하세요"
 
@@ -574,30 +259,9 @@ msgstr "SIM으로 이동"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "%s에 접속합니다. 계속할까요?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "MMS retrieving failed"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "수신인이 없습니다"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "요청되었습니다"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "임시보관함에 저장할까요?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "전송 가능한 메시지 크기를 초과하였습니다. 크기 조절 중..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "동기화가 취소되었습니다"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "재전송"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "채널 추가"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "수신인이 바르지 않습니다"
 
@@ -610,27 +274,15 @@ msgstr "통화 중에는 재생할 수 없습니다"
 msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
 msgstr "대용량 저장소 모드를 실행 중일 때는 저장할 수 없습니다"
 
-msgid "IDS_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "대용량 저장소 모드를 실행 중일 때는 열 수 없습니다"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "대용량 저장소 모드를 실행 중일 때는 사용할 수 없습니다"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "현재 메시지를 삭제할까요?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "단일 선택"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "선택되었습니다"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "삭제할까요?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "크기 조절 중..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "첨부할 수 없습니다. 첨부할 수 있는 파일 크기는 %dKB까지 입니다"
 
@@ -649,3 +301,204 @@ msgstr "보안 정책에 따라 문자 메시지 작성이 제한됩니다"
 msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
 msgstr "추가 중... 잠시만 기다리세요"
 
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "서비스 센터 주소"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "복구 중..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "첨부파일이 없습니다"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "클립보드에 복사되었습니다"
+
diff --git a/main/po/lt.po b/main/po/lt.po
new file mode 100644 (file)
index 0000000..ac9bc97
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Skaityti"
+
+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_DELIVERY_REPORT"
+msgstr "Ataskaita apie pristatymą"
+
+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_READ_REPORT"
+msgstr "Perskaitymo patvirtinimas"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Prašyti pristatymo ataskaitos"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Prašyti perskaitymo patvirtinimo"
+
+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_HEADER_ITEM_LIST"
+msgstr "Elementų sąrašas"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Persiųs."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Neskaityta"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Perkelti į telefoną"
+
+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_MMSCREATIONMODE"
+msgstr "Kūrimo režimas"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Daugialypė žinutė"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Nėra temos"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Paslaugų centras"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Pasirinkti adresą"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Perkelti į SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Suplanuota žinutė"
+
+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_SPAM_MESSAGES"
+msgstr "Brukalų žinutės"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Priėmimo signalo tipas"
+
+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_REPEAT"
+msgstr "Kartoti"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Rodyti adresatą"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Skaidrės trukmė"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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ę"
+
diff --git a/main/po/lv.po b/main/po/lv.po
new file mode 100644 (file)
index 0000000..4dc9750
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Lasīta"
+
+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_DELIVERY_REPORT"
+msgstr "Piegādes atskaite"
+
+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_READ_REPORT"
+msgstr "Lasīšanas atskaite"
+
+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_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_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_HEADER_ITEM_LIST"
+msgstr "Objektu saraksts"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Pārsūt."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nelas."
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Pārvietot uz tālruni"
+
+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_MMSCREATIONMODE"
+msgstr "Izveides režīms"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multiziņa"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Nav tēmas"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Pakalpojumu centrs"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Atlasiet adresi"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Pārvietot uz SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Ieplānotā ziņa"
+
+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_SPAM_MESSAGES"
+msgstr "Surogātpasta ziņas"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Saņemšanas signāla veids"
+
+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_REPEAT"
+msgstr "Atkārtot"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Skatīt kontaktu"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Slaida ilgums"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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ē"
+
diff --git a/main/po/ms.po b/main/po/ms.po
new file mode 100644 (file)
index 0000000..35ee30e
--- /dev/null
@@ -0,0 +1,504 @@
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Tidak boleh membuka"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "Dapat semula"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Tidak boleh alih"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Bilangan maksimum halaman dicapai"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Mod terhad. Tidak dapat memasukkan kandungan terhad"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Dihantar"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Telah tamat tempoh"
+
+msgid "IDS_MSGF_BODY_READ"
+msgstr "Baca"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Mendpt semula..."
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Masukkan kad SIM utk menghantar mesej. Mesej akan disimpan ke Peti keluar"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Masukkan nombor saluran"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 mesej dipilih"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d mesej dipilih"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Pratonton"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Nama fail telah wujud"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Tiada mesej"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Tambah ke kenalan"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Buang"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Tidak boleh menghantar mesej"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Tangkap foto"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Tiada alamat"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Senarai item yang dilampirkan"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Muat turun auto"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Mesej siaran"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "%d tengah"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Masa langganan"
+
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Laporan penghantaran"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Penghantaran gagal"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Daripada"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Senarai perkara dimasukkan"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Mesej diserahkan"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Mesej didapatkan semula"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Bebas"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Amaran"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Dihantar"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Mesej tolakan"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Laporan baca"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Diterima"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Manual"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Tolak"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Pilihan penerimaan"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Minta laporan penghantaran"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Minta laporan baca"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Terhad"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Rendah"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Biasa"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Penting"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Keutamaan"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Hantar laporan baca"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Tempoh halaman"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Mesej SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Mesej teks"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Jumlah saiz"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Kandungan DRM"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Senarai item"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 saat"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 saat"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 saat"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Rangkaian rumah"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Pasang"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Rangkaian asing"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Lihat butiran kenalan"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Mesej multimedia dihantar"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Mendapatkan semula mesej gagal"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Penghantaran mesej multimedia gagal"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "K'mukakn"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nyahbaca"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Pindah ke telefon"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Penerima dipenduakan"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Bilangan maksimum penerima (%d) dicapai"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Kpd"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Rakam bunyi"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Rakam video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Tukar ke MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Tukar ke SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d lampiran tersedia. Pilih sehingga %d lampiran"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Tidak boleh melampirkan semua fail. Muatan maksimum lampiran ialah %d KB. Teruskan?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Saiz fon"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Mod cipta"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Mesej multimedia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Tiada subjek"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Pusat perkhidmatan"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Pilih alamat"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Pindah ke SIM"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Anda akan ke dalam talian (%s). Teruskan?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Htr smula"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Penerima tidak sah"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Penerima tidak sah"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Tdk dpt memainkan semasa panggilan"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Tidak boleh menyimpan semasa dalam mod storan besar"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Buang mesej semasa?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Dipilih"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Padam?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Tdk dpt melampirkan. Saiz fail maksimum ialah %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Terhad"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Tdk dpt memajukan.\nFail berkunci"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Mesej berjadual"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Polisi keselamatan melarang mengarang mesej teks"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Menambah. Sila tunggu..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Alamat pusat perkhidmatan"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Mesej spam"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Besar"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Biasa"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Kecil"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Kecil"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Tidak dapat menghantar mesej berjadual. Tetapkan masa yang lain"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Tarikh dan masa"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Mesej multimedia"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Tiada penerima ditambah. Masukkan penerima"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Pilihan penghantaran"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Menerima jenis peringatan"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Biasa"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Menghantar SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Penerima"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Ulang"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Mesej"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Sekali"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 kali"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 kali"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Saya dalam kecemasan. Sila bantu saya"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "SIM tidak disisipkan"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Tangkap gambar"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Ambil video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Rakam audio"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Mesej CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Mesej kad SIM"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Tempoh mesti lebih lama daripada %d saat"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Tidak boleh menambah kandungan"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Pilih penerima"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Lihat kenalan"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Tempoh (%s saat)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Gambar terlalu besar. Memampatkan..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Mesej disimpan sebagai draf"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Lain"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Draf"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Tempoh untuk slaid"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Hantar emel"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Item yang dimasukkan"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Perkara yang dilampirkan"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d lampiran"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Mesej\nberjadual"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Tempoh\n(%d saat)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Guna maklumt knln lain"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Mesej ini merangkumi fail lampiran yang tidak ditunjukkan"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Mesej ini termasuk fail lampiran yang tidak ditunjukkan"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Simpan semua"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Mesej draf"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Mesej akan dipulihkan"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Mesej berjadual akan dibatalkan"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Salin teks mesej"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Lihat butiran mesej"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Mesej dikunci"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Peti mesej"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Sekat"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Salin ke telefon"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Mesej disalin dari kad SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Batal mesej"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Lampiran"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Mesej penghantaran gagal"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Bilangan maksimum aksara dicapai"
+
+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 "Memulih…"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Tiada lampiran"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Disalin ke papan klip"
+
old mode 100755 (executable)
new mode 100644 (file)
index 90f0eda..496d55c
@@ -7,15 +7,9 @@ msgstr "Ophalen"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Kan niet verplaatsen"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Niet aangevraagd"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Maximumaantal pagina's bereikt"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Aangevraagd"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Beperkte modus. Kan inhoud met restricties niet invoegen"
 
@@ -31,54 +25,18 @@ msgstr "Gelezen"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Ophalen..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Ophalen mislukt"
-
 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_BODY_PD_LANGUAGES"
-msgstr "%d talen"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Adres centrale"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Gedupliceerd"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Zendernaam invoeren"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Kanaalnummer invoeren"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Niets geselecteerd"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d zenders"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "Zelfde zenderinfo bestaat"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Verzenden mislukt. Opnieuw?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Lijst met kanaal-id's vol"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1 bericht geselecteerd"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1 persoon geselecteerd"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d berichten geselecteerd"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d personen geselecteerd"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Voorbeeld"
 
@@ -88,156 +46,48 @@ msgstr "Bestandsnaam bestaat al"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "Geen berichten"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Bericht maken"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Toevoegen aan contactpersoon"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Portugees"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Adres maken"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Blokkeerlijst"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Tikken om nummer toe te voegen"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Zender maken"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "Verwijderen"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Kan bericht niet verzenden"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Contacten"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "Foto maken"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "Geen adres"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "Waarschuwingstoon"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Reclame toestaan"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Anoniem toestaan"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "Lijst met bijgevoegde items"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "Automatisch downloaden"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "Automatisch"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Automatisch verwijderen"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Achtergrondkleur"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Berichten blokkeren"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Infoberichten"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Inschakelen"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Mijn kanalen"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Ontvangstkanalen"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Centrale %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Aangepast tijdstip"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Standaardstijl"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Ontvangstbevestiging"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Verzenden mislukt"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Om de 10 minuten"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Om de 2 minuten"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Om de 5 minuten"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Letterkleur"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "Van"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Algemene instellingen"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM-alfabet"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Houd de toets '1' ingedrukt om verbinding te maken met de voicemailserver wanneer u niet een applicatie hebt geopend of in gesprek bent"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Lijst met ingevoegde items"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Talen"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Maximum"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Voicemailnummer"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Bericht afgeleverd"
 
@@ -253,24 +103,12 @@ msgstr "Waarschuwing"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Verzonden"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "Geen beperkingen voor grootte en inhoud"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "U krijgt een melding wanneer grootte en inhoud de maximumgrens overschrijden"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Fax"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Spraak"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "Serverberichten"
 
@@ -289,9 +127,6 @@ msgstr "Weigeren"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Ontvangstopties"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Antwoordpad"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "Ontvangstbevestiging vragen"
 
@@ -301,12 +136,6 @@ msgstr "Leesbevestiging vragen"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Beperkt"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Verzenden..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 dagen"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Laag"
 
@@ -316,48 +145,15 @@ msgstr "Normaal"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Dringend"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Verzendopties"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Vervaldatum"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Prioriteit"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Ontvangstbevestiging verzenden"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Leesbevestiging verzenden"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Servicetype"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Adres"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Precies gelijk aan"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Invoegen"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Blokkeringscriteria"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Eenmalig"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Weergavetijd pagina"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Ondersteunde tekenset"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Tekst"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOS-berichten"
 
@@ -367,21 +163,12 @@ msgstr "SMS-berichten"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Totale omvang"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM-inhoud"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Zender bewerken"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Itemlijst"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "seconden"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 seconden"
 
@@ -400,12 +187,6 @@ msgstr "Installeren"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Roamingnetwerk"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Pictogram"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Letterstijl"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Contactgegevens weergeven"
 
@@ -418,18 +199,6 @@ msgstr "Ophalen bericht mislukt"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Verzenden MMS mislukt"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "U kunt afbeeldingen tot %d KB verzenden"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Naamkaartje"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "Geen naam"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Welkom"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Doorst."
 
@@ -439,132 +208,48 @@ msgstr "Niet gelezen"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Verplaatsen naar telefoon"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Tekst toevoegen"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Dubbele ontvanger"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Maximumgrootte maken"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Maximumaantal ontvangers (%d) bereikt"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Tik om onderwerp toe te voegen"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Groepen"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Telefoonlijst"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Overige bestanden"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Geluid"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Multimedia toevoegen"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "UIT"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "AAN"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "Aan"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Geluid opnemen"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Geluid opnemen"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Video opnemen"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Standaard SMS-berichten"
-
 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_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Adres invoeren"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Ongeldig bestand"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Bericht verzonden"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Maximale berichtgrootte overschreden"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "%d bijlagen beschikbaar. Selecteer maximaal %d bijlagen"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "Server reageert niet"
-
 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_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "Kan MMS niet verzenden. Onbekende fout"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Agenda synchroniseren"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Tekstgrootte"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Zonder bijlagen"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Volledige e-mail"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Aanmaakmodus"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Bericht afgeleverd"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "MMS-bericht"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Nieuwe voicemail"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Geen onderwerp"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Ja op alles"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "SMS-centrale"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Service laden"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Geluid"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Kan niet verzenden. Niet-ondersteunde bestanden aangehecht."
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Gesprekslijst"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Adres selecteren"
 
@@ -574,30 +259,9 @@ msgstr "Verplaatsen naar SIM"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "U gaat bijna online (%s). Doorgaan?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "Ophalen MMS mislukt"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "Geen ontvanger"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Vereist"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "Opslaan in Concepten?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Berichtgrootte overschreden. Grootte wordt gewijzigd..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Synchronisatie geannuleerd"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Opnieuw verzenden"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Kanaal toevoegen"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Ongeldige ontvanger"
 
@@ -610,27 +274,15 @@ 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_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Kan niet openen in massaopslag-modus"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Kan niet gebruiken in massaopslag-modus"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Huidig bericht verwijderen?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Geselecteerd"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Geselecteerd"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Verwijderen?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Grootte wordt gewijzigd..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "Kan niet toevoegen. Maximumgrootte van bestanden is %d KB"
 
@@ -649,3 +301,204 @@ 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_SPAM_MESSAGES"
+msgstr "Spamberichten"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Alarmtype ontvangen"
+
+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_REPEAT"
+msgstr "Herhalen"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Contacten weergeven"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duur voor dia"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/no.po b/main/po/no.po
new file mode 100644 (file)
index 0000000..5ca260f
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Lest"
+
+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_DELIVERY_REPORT"
+msgstr "Leveringsrapport"
+
+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_READ_REPORT"
+msgstr "Leserapport"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Be om leveringsrapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Be om leserapport"
+
+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_HEADER_ITEM_LIST"
+msgstr "Elementliste"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Vid.send"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Ulest"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Flytt til telefon"
+
+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_MMSCREATIONMODE"
+msgstr "Opprettelsesmodus"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS-melding"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Intet emne"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Tjenestesentral"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Velg adresse"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Flytt til SIM-kort"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Planlagt melding"
+
+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_SPAM_MESSAGES"
+msgstr "Spammeldinger"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Mottar varseltype"
+
+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_REPEAT"
+msgstr "Gjenta"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Vis kontakter"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Varighet for bilde"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/pl.po b/main/po/pl.po
new file mode 100644 (file)
index 0000000..6467fe0
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Przeczytano"
+
+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_DELIVERY_REPORT"
+msgstr "Raport doręczenia"
+
+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_READ_REPORT"
+msgstr "Raport odczytania"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Raport doręczenia"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Żądaj raportu przeczytania"
+
+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_HEADER_ITEM_LIST"
+msgstr "Lista elementów"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "P. dalej"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nieprz."
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Przenieś do pamięci telefonu"
+
+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_MMSCREATIONMODE"
+msgstr "Tryb tworzenia"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Brak tematu"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centrum SMS"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Wybierz adres"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Przenieś do pamięci SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Zaplanowana wiadomość"
+
+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_SPAM_MESSAGES"
+msgstr "Wiadomości typu spam"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Typ alarmu odbierania"
+
+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_REPEAT"
+msgstr "Powtarzanie"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Wyświetl kontakt"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Czas trwania slajdu"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
old mode 100755 (executable)
new mode 100644 (file)
index ac7a139..eb0416e
@@ -7,15 +7,9 @@ msgstr "Receber"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Impossível mover"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Não pedido"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Número máximo de páginas atingido"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Pendente"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Modo restringido. Impossível inserir conteúdo restringido"
 
@@ -31,54 +25,18 @@ msgstr "Ler"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "A receber..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Falha de recepção"
-
 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_BODY_PD_LANGUAGES"
-msgstr "%d idiomas"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Endereço do centro"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Duplicado"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Introduzir nome de canal"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Introduzir número de canal"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Nada seleccionado"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d canais"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "Já existe ID de canal igual"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Falha ao enviar. Tente novamente?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Lista de ID de canais cheia"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1 mensagem seleccionada"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1 pessoa seleccionada"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d mensagens seleccionadas"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d pessoas seleccionadas"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Pré-visualizar"
 
@@ -88,156 +46,48 @@ msgstr "Nome do ficheiro já existente"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "Nenhuma mensagem"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Criar mensagem"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Adicionar a contacto"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Criar endereço"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Lista de bloqueios"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Tocar para adicionar número"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Criar canal"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "Cancelar"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Impossível enviar mensagem"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Contactos"
-
 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_ALERT_TONE"
-msgstr "Tom de alerta"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Permitir publicidade"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Permitir anón."
-
 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_AUTOMATIC"
-msgstr "Automático"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Eliminação automática"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Cor de fundo"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Bloquear mensagens"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Mensagens de difusão"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Activação"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Os meus canais"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Recepção de canais"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Centro %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Personalizar hora"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Estilo padrão"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Relatório de entrega"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Falha no envio"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Cada 10 minutos"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Cada 2 minutos"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Cada 5 minutos"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Cor do tipo de letra"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "De"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Defin. gerais"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "Alfabeto GSM"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Prima a tecla '1' sem soltar para ligar ao servidor de correio de voz quando não estiver numa aplicação ou numa chamada"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Lista de itens inseridos"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Idiomas"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Máximo"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Número do correio de voz"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Mensagem entregue"
 
@@ -253,24 +103,12 @@ msgstr "Aviso"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Enviada"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "Sem restrições de tamanho e conteúdo"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "Será notificado quando o tamanho e o conteúdo excederem o máximo permitido"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Fax"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Voz"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "Mensagens push"
 
@@ -278,7 +116,7 @@ msgid "IDS_MSGF_BODY_READ_REPORT"
 msgstr "Relatório de leitura"
 
 msgid "IDS_MSGF_BODY_RECEIVED"
-msgstr "Recebida"
+msgstr "Recebido"
 
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
 msgstr "Manual"
@@ -289,9 +127,6 @@ msgstr "Rejeitar"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Opções de recepção"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Caminho de resposta"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "Pedir relatório de entrega"
 
@@ -301,12 +136,6 @@ msgstr "Pedir relatório de leitura"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Restringido"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "A enviar..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 dias"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Baixa"
 
@@ -316,48 +145,15 @@ msgstr "Normal"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Urgente"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Opções de envio"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Expiração"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Prioridade"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Enviar relatório de entrega"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Enviar relatório de leitura"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Tipo de serviço"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Endereço"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Exactamente o mesmo que"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Incluir"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Corresponder critérios"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Uma vez"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Duração da página"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Suporte de caracteres"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Texto"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "Mensagens SOS"
 
@@ -367,21 +163,12 @@ msgstr "SMS"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Tamanho total"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "Conteúdo DRM"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Editar canal"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Lista de itens"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "Segundos"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 segundos"
 
@@ -400,12 +187,6 @@ msgstr "Instalar"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Rede de roaming"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Slide"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Estilo do tipo de letra"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Ver detalhes do contacto"
 
@@ -418,18 +199,6 @@ msgstr "Falha na recepção da mensagem"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Falha ao enviar mensagem multimédia"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "Pode enviar imagens até %d KB"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Cartão de visita"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "Sem nome"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Bem-vindo"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Reenc."
 
@@ -439,132 +208,48 @@ msgstr "Não lida"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Mover para o telefone"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Adicionar texto"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Destinatário duplicado"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Tamanho de criação máximo"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Número máximo de destinatários (%d) atingido"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Tocar para ad. assunto"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Grupos"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Lista telefónica"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Outros ficheiros"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Som"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Adicionar multimédia"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "DESLIGADO"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "LIGADO"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "Para"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Gravar som"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Gravar som"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Gravar vídeo"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Modelo do texto"
-
 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_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Introduzir endereço"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Ficheiro inválido"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Mensagem enviada"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Tamanho máx. de mensagem excedido"
-
 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_SERVER_NOT_RESPONDING"
-msgstr "O servidor não responde"
-
 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_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "Impossível enviar MMS. Erro não reconhecido"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Sincronização da agenda"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Tamanho da fonte"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Sem anexos"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "E-mail completo"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Modo de criação"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Mensagem entregue"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "MMS"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Novo correio de voz"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Sem assunto"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Sim para todos"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "Centro de serviço"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "A carregar serviço"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Som"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Impossível enviar. Tipos de ficheiro não suportados anexados"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Lista de conversações"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Seleccionar endereço"
 
@@ -574,30 +259,9 @@ msgstr "Mover para o SIM"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "Está prestes a ficar online (%s). Continuar?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "Falha ao recuperar MMS"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "Nenhum destinatário"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Necessário"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "Guardar nos Rascunhos?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Tamanho máx. de mensagem excedido. A redimensionar..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Sincronização cancelada"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Reenviar"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Adicionar canal"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Destinatário inválido"
 
@@ -610,27 +274,15 @@ 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_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Impossível abrir durante modo de armazenamento de massa"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Impossível utilizar durante modo de armazenamento de massa"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Eliminar mensagem actual?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Seleccionado"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Seleccionado"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Eliminar?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "A redimensionar..."
-
 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"
 
@@ -649,3 +301,204 @@ 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_SPAM_MESSAGES"
+msgstr "Mensagens de spam"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Tipo de alerta de recepção"
+
+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_REPEAT"
+msgstr "Repetir"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Ver contactos"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Duração para o slide"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/ro.po b/main/po/ro.po
new file mode 100644 (file)
index 0000000..6da3295
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Citit"
+
+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_DELIVERY_REPORT"
+msgstr "Raport livrare"
+
+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_READ_REPORT"
+msgstr "Citire raport"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Solicitare raport de livrare"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Solicitare raport citire"
+
+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_HEADER_ITEM_LIST"
+msgstr "Listă elemente"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Redir"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Necitit"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Mutare în telefon"
+
+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_MMSCREATIONMODE"
+msgstr "Mod creare"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Mesaj multimedia"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Niciun subiect"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Centru service"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Selectare adresă"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Mutare în SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Mesaj programat"
+
+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_SPAM_MESSAGES"
+msgstr "Mesaje spam"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Tip de alertă la primire"
+
+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_REPEAT"
+msgstr "Repetare"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Vizualizare contacte"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Durata pentru diapozitiv"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
old mode 100755 (executable)
new mode 100644 (file)
index 9bc2ece..3560620
@@ -2,20 +2,14 @@ msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
 msgstr "Невозможно открыть"
 
 msgid "IDS_MSGF_OPT_RETRIEVE"
-msgstr "Ð\97агÑ\80Ñ\83зиÑ\82ь"
+msgstr "Ð\98звлеÑ\87ь"
 
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Невозможно переместить"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Не требуется"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Достигнуто максимальное число страниц"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Запрос отправлен"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Ограниченный режим. Невозможно вставить ограниченное содержимое"
 
@@ -23,7 +17,7 @@ msgid "IDS_MSGF_BODY_DELIVERED"
 msgstr "Доставлено"
 
 msgid "IDS_MSGF_BODY_EXPIRED"
-msgstr "Срок действия уже закончен"
+msgstr "Срок действия закончен"
 
 msgid "IDS_MSGF_BODY_READ"
 msgstr "Прочитано"
@@ -31,54 +25,18 @@ msgstr "Прочитано"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Получение..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Сбой извлечения"
-
 msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
 msgstr "Для отправки сообщений установите SIM-карту. Сообщение будет сохранено в исходящих"
 
-msgid "IDS_MSGF_BODY_PD_LANGUAGES"
-msgstr "Кол-во языков: %d"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Адрес центра"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Повторяется"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Введите имя канала"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Введите номер канала"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Ничего не выбрано"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d каналов(a)"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "ID канала уже существует"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Сбой отправки. Повторите попытку?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Список каналов заполнен"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "Выбрано 1 сообщение"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "Выбран 1 человек"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "Выбрано сообщений: %d"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "Выбрано людей: %d"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Просмотр"
 
@@ -88,156 +46,48 @@ msgstr "Файл с таким именем уже существует"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "Нет сообщений"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Создать сообщение"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Добавить к контакту"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Создать адрес"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Черный список"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Нажмите для добавления номера"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Создать канал"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "Отменить"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Невозможно отправить сообщение"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Контакты"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "Сделать фото"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "Нет адреса"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "Сигнал предупреждения"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Разрешить рекламу"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Разрешить анонимные"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "Вложенные элементы"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "Автозагрузка"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "Автоматически"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Автоудаление"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Цвет фона"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Черный список"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Сообщения сети"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Активация"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Мои каналы"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Список каналов"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Центр %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Выбрать время"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Стиль по умолчанию"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "Отчет о доставке"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Сбой при отправке"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Каждые 10 минут"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Каждые 2 минуты"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Каждые 5 минут"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Цвет шрифта"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "От"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Общие настройки"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM-алфавит"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Для подключения к серверу голосовой почты, нажмите и удерживайте клавишу '1' (при условии, что не открыты приложения и нет активных вызовов)"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Вставленные элементы"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Кол-во языков"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Максимум"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Голосовая почта"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Сообщение доставлено"
 
@@ -245,7 +95,7 @@ msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
 msgstr "Сообщение получено"
 
 msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
-msgstr "Ð\91ез Ð¾Ð³Ñ\80аниÑ\87ений"
+msgstr "Свободно"
 
 msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
 msgstr "Предупреждающий"
@@ -253,24 +103,12 @@ msgstr "Предупреждающий"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Отправлено"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "Нет ограничений на размер и содержимое"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "Оповещение о превышении максимально допустимого размера"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "б"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "Кб"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Факс"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Голос"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "Push-сообщения"
 
@@ -289,11 +127,8 @@ msgstr "Отказ"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Параметры приема"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Оплата ответа"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
-msgstr "Ð\9eтчет о доставке"
+msgstr "Ð\97апÑ\80оÑ\81иÑ\82Ñ\8c Ð¾тчет о доставке"
 
 msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
 msgstr "Отчет о прочтении"
@@ -301,12 +136,6 @@ msgstr "Отчет о прочтении"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Ограниченный"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Отправка..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 дня"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Низкий"
 
@@ -316,48 +145,15 @@ msgstr "Обычный"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Высокий"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Параметры отправки"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Срок действия"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Приоритет"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "Отправить отчет о доставке"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Отправлять отчет о прочтении"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Тип контента"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Адрес"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Точное совпадение"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Содержит"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Условие совпадения"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "Один раз"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Длительность страницы"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Кодировка символов"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Текст"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOS сообщения"
 
@@ -367,21 +163,12 @@ msgstr "SMS"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Общий размер"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Юникод"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "Файлы DRM"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Изменить канал"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Список элементов"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "сек."
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 секунд"
 
@@ -400,12 +187,6 @@ msgstr "Установить"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Роуминг"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Сдвиг"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Стиль шрифта"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Сведения о контакте"
 
@@ -418,18 +199,6 @@ msgstr "Сбой получения сообщения"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Сбой отправки сообщения MMS"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "Можно отправлять изображение размером до %d Кб"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Визитка"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "Нет имени"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Добро пожаловать"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "Перес."
 
@@ -439,165 +208,60 @@ msgstr "Непрочитанные"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Переместить на телефон"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Добавить текст"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Повторяющийся получатель"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Максимальный размер для создания"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Достигнуто максимальное число получателей (%d)"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Добавить тему"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Группы"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Контакты"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Другие файлы"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Звук"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Добавить медиа"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "Выключено"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "Включено"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "Кому"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Записать звук"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Записать звук"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Записать видео"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Шаблоны SMS"
-
 msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
 msgstr "Изменено на MMS"
 
 msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
 msgstr "Изменено на SMS"
 
-msgid "IDS_MSGC_POP_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Введите адрес"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Недопустимый файл"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Сообщение отправлено"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Размер сообщения превышен"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "Доступно вложений: %d. Выберите не более %d вложений"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "Сервер не отвечает"
-
 msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
 msgstr "Невозможно вложить все файлы. Максимальный размер вложений — %d Кб. Продолжить?"
 
-msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "Невозможно отправить MMS. Неизвестная ошибка"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Синхронизация календаря"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Размер шрифта"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Без вложений"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Все сообщения электронной почты"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Режим создания"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Сообщение доставлено"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "MMS"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Новое сообщение голосовой почты"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Нет темы"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Да, все"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "SMS-центр"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Загрузка услуг"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Звук"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Не удалось отправить. Вложены файлы неподдерживаемого типа"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Список бесед"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Выберите адрес"
 
 msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
-msgstr "Переместить на SIM"
+msgstr "Переместить на SIM-карту"
 
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "Вы собираетесь выйти в сеть (%s). Продолжить?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "Сбой загрузки MMS"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "Нет получателя"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Требуется"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "Сохранить в черновиках?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Превышен максимальный размер сообщения. Изменение размера..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Синхронизация отменена"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Отправить повторно"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Добавить канал"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Недопустимый получатель"
 
@@ -610,27 +274,15 @@ msgstr "Воспроизведение во время вызова невозм
 msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
 msgstr "Невозможно сохранить в режиме съемного диска"
 
-msgid "IDS_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Невозможно открыть в режиме съемного диска"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Невозможно использовать в режиме съемного диска"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Отметить текущее сообщение?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Выбранное"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Выбрано"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Удалить?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Изменение размера..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "Невозможно вложить. Максимальный размер файлов: %d КБ"
 
@@ -649,3 +301,204 @@ msgstr "Политика безопасности ограничивает на
 msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
 msgstr "Добавление. Подождите..."
 
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Адрес центра обслуживания"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Восстановление..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Нет вложений"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Скопировано в буфер обмена"
+
diff --git a/main/po/sk.po b/main/po/sk.po
new file mode 100644 (file)
index 0000000..37c7b82
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Prečítané"
+
+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_DELIVERY_REPORT"
+msgstr "Potvrdenie o doručení"
+
+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_READ_REPORT"
+msgstr "Potvrdenie o prečítaní"
+
+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_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_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_HEADER_ITEM_LIST"
+msgstr "Zoznam položiek"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Predať"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Nepre-čítané"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Presunúť do telefónu"
+
+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_MMSCREATIONMODE"
+msgstr "Režim vytvárania"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Žiadny predmet"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Stredisko služieb"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Vyberte adresu"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Presunúť na SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Naplánovaná správa"
+
+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_SPAM_MESSAGES"
+msgstr "Nevyžiadané správy"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Typ upozornenia na prijímanie"
+
+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_REPEAT"
+msgstr "Opakovať"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Zobraziť kontakty"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Trvanie snímky"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/sl.po b/main/po/sl.po
new file mode 100644 (file)
index 0000000..8a6856f
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Prebrano"
+
+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_DELIVERY_REPORT"
+msgstr "Poročilo o dostavi"
+
+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_READ_REPORT"
+msgstr "Poročilo o branju"
+
+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_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_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_HEADER_ITEM_LIST"
+msgstr "Seznam predmetov"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Posred."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Neprebr."
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Premakni v telefon"
+
+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_MMSCREATIONMODE"
+msgstr "Način ustvarjanja"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedijsko sporočilo"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Ni zadeve"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Servisni center"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Izberi naslov"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Premakni na SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Načrtovano sporočilo"
+
+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_SPAM_MESSAGES"
+msgstr "Neželena sporočila"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Vrsta opozorila za sprejem"
+
+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_REPEAT"
+msgstr "Ponovi"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Prikaži vizitko"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Trajanje za diapozitiv"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/sr.po b/main/po/sr.po
new file mode 100644 (file)
index 0000000..82ce48c
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Pročitano"
+
+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_DELIVERY_REPORT"
+msgstr "Izveštaj o prispeću"
+
+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_READ_REPORT"
+msgstr "Čitanje izveštaja"
+
+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_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_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_HEADER_ITEM_LIST"
+msgstr "Lista stavki"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Prosledi"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Neproč."
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Prebaci u telefon"
+
+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_MMSCREATIONMODE"
+msgstr "Režim kreiranja"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimedijalna poruka"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Nema naslova"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Servisni centar"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Izaberi adresu"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Prebaci u SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Planirana poruka"
+
+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_SPAM_MESSAGES"
+msgstr "Spam poruke"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Tip upozorenja na prijem"
+
+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_REPEAT"
+msgstr "Ponovi"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Prikaži kontakt"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Trajanje prikaza slajda"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/sv.po b/main/po/sv.po
new file mode 100644 (file)
index 0000000..33e19c6
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+msgstr "Läs"
+
+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_DELIVERY_REPORT"
+msgstr "Leveransrapport"
+
+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_READ_REPORT"
+msgstr "Läsrapport"
+
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Begär leveransrapport"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Begär läsrapport"
+
+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_HEADER_ITEM_LIST"
+msgstr "Lista över objekt"
+
+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_MSGF_SK_FORWARD_LITE"
+msgstr "Vidare."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Olästa"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Flytta till telefon"
+
+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_MMSCREATIONMODE"
+msgstr "Skapaläge"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Multimediemeddelande"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Ingen rubrik"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Tjänstecenter"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Välj adress"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Flytta till SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Schemalagt meddelande"
+
+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_SPAM_MESSAGES"
+msgstr "Skräppostmeddelanden"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Tar emot varningstyp"
+
+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_REPEAT"
+msgstr "Upprepa"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Visa kontakter"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Tidslängd för bild"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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"
+
diff --git a/main/po/th.po b/main/po/th.po
new file mode 100644 (file)
index 0000000..23b1ba6
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+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_DELIVERY_REPORT"
+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_READ_REPORT"
+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_REQUEST_DELIVERY_REPORT"
+msgstr "ต้อง​การ​รายงาน​การ​ส่ง"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+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_HEADER_ITEM_LIST"
+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 "เรียกข้อความ\n​ผิดพลาด"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "การ​ส่ง​ข้อ​ความ​มัลติ​มี​เดีย​ไม่​สำเร็จ"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "ส่ง​ต่อ"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "ไม่​อ่าน"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "ย้าย​ไป​ยัง​\nโทรศัพท์"
+
+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_MMSCREATIONMODE"
+msgstr "โหมด​กา​รส​ร้าง"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "ข้อ​ความ​มัลติ​มี​เดีย"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "ไม่​มี​ชื่อ​เรื่อง"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "ศูนย์​บริการ"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "เลือก​ที่​อยู่"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "ย้าย​ไป​ยัง SIM"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+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_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "กำลัง​เรียก​คืน..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "ไม่​มี​ไฟล์​แนบ"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "คัด​ลอก​ลง​คลิ​ป​บอร์ด"
+
old mode 100755 (executable)
new mode 100644 (file)
index 6dc8a60..d4afbdd
@@ -7,15 +7,9 @@ msgstr "Al"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "Taşınamıyor"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "Talep edilmedi"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "Maksimum sayfa sayısına ulaşıldı"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "Talep edildi"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "Kısıtlı mod. Kısıtlı içerik girilemedi"
 
@@ -31,54 +25,18 @@ msgstr "Oku"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "Alınıyor..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "Alma başarısız"
-
 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_BODY_PD_LANGUAGES"
-msgstr "%d dil"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "Merkez adresi"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "Tekrarlanan"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "Kanal adını girin"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "Kanal numarası gir"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "Bir şey seçilmedi"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d kanal"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "Aynı kanal ID'si var"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "Gönderme başarısız. Yeniden deneyin?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "Kanal kimlik listesi dolu"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "1 mesaj seçildi"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "1 kişi seçildi"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "%d mesaj seçildi"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "%d kişi seçildi"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "Önizleme"
 
@@ -88,156 +46,48 @@ msgstr "Dosya adı zaten kullanılıyor"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "Mesaj yok"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "Mesaj oluştur"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "Rehbere ekle"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "Adres oluştur"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "Engellenenler listesi"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "Numara eklemek için dokunun"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "Kanal oluştur"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "At"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "Mesaj gönderilemiyor"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "Rehber"
-
 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_ALERT_TONE"
-msgstr "Uyarı sesi"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "Reklama izin ver"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "Anonime izin ver"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "Eklenen öğe listesi"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "Oto. indirme"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "Otomatik"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "Otomatik sil"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "Arkaplan rengi"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "Mesajları engelle"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "Hücre yayını mesajları"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "Etkinleştirme"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "Kanallarım"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "Alınan kanallar"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "Merkez %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "Özel süre"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "Varsayılan stil"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "İletim raporu"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "Gönderme başarısız"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "Her 10 dakikada bir"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "Her 2 dakikada bir"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "Her 5 dakikada bir"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "Yazı tipi rengi"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "Kimden"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "Genel ayarlar"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM-Alfabesi"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "Bir uygulama veya görüşme içinde değilseniz sesli posta sunucusuna bağlanmak için '1' tuşunu basılı tutun"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "Dahil öğe listesi"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "Diller"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "Maksimum"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "Telesekreter numarası"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "Mesaj iletildi"
 
@@ -253,24 +103,12 @@ msgstr "Uyarı"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "Gönderildi"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "Boyut ve içerik sınırlaması yok"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "Boyut ve içerik izin verilen maksimum değeri aştığında size bilgi verilecektir"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "Faks"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "Ses"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "İletim mesajları"
 
@@ -289,9 +127,6 @@ msgstr "Reddet"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "Alma seçenekleri"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "Cevap yolu"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "İletim raporu talep et"
 
@@ -301,12 +136,6 @@ msgstr "Okundu raporu iste"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "Kısıtlı"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "Gönderiliyor..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 gün"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "Düşük"
 
@@ -316,48 +145,15 @@ msgstr "Normal"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "Acil"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "Gönderme seçenekleri"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "Sona erme"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "Öncelik"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "İletim raporu gönder"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "Okundu raporu gönder"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "Servis türü"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "Adres"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "Aynısı"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "Dahil et"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "Eşleşme kriterleri"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "1 kez"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "Sayfa süresi"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "Karakter desteği"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "Metin"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "Acil durum mesajları"
 
@@ -367,21 +163,12 @@ msgstr "Metin mesajları"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "Toplam boyut"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Çoklu dil"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM içeriği"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "Kanalı düzenle"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "Öğe listesi"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "saniye"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 saniye"
 
@@ -400,12 +187,6 @@ msgstr "Kur"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "Dış şebeke"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "Slayt"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "Yazı tipi stili"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "Kişi detaylarını göster"
 
@@ -418,18 +199,6 @@ msgstr "Mesaj alınamadı"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "Multimedya mesajı gönderme başarısız"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "%d KB'ye kadar resim gönderebilirsiniz"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "Kartvizit"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "İsim yok"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "Hoşgeldiniz"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "İlet"
 
@@ -439,132 +208,48 @@ msgstr "Okunmamış"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "Telefon'a taşı"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "Metin ekle"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "Çoğaltılan alıcı"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "Maksimum oluşturma boyutu"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "Maksimum alıcı sayısına (%d) ulaşıldı"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "Konu eklemek için dokunun"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "Gruplar"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "Rehber"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "Diğer dosyalar"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "Ses"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "Multimedya ekle"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "KAPALI"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "AÇIK"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "Alıcı"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "Ses kaydet"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "Ses kaydet"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "Video kaydet"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "Metin şablonu"
-
 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_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "Adresi girin"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "Geçersiz dosya"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "Mesaj gönderildi"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "Mesaj boyutu aşıldı"
-
 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_SERVER_NOT_RESPONDING"
-msgstr "Sunucu cevap vermiyor"
-
 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_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "MMS gönderilemiyor. Tanımlanmayan hata"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "Takvim senkr"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "Yazı tipi boyutu"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "Ekler olmadan"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "Bütün e-posta"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "Oluşturma modu"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "Mesaj iletildi"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "Multimedya mesajı"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "Yeni sesli posta"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "Konu yok"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "Tümüne evet"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "Servis merkezi"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "Hizmet yükleme"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "Ses"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "Gönderilemiyor. Desteklenmeyen dosya türleri eklendi"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "Görüşme listesi"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "Adres seçin"
 
@@ -574,30 +259,9 @@ msgstr "SIM'e taşı"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "Çevrimiçine(%s) geçmek üzeresiniz. Devam edilsin mi?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "MMS alma başarısız"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "Alıcı yok"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "Gerekli"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "Taslaklara kaydedilsin mi?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "Maks. mesaj boyutu aşıldı. Yeniden boyutlandırılıyor..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "Senkronizasyon iptal edildi"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "Tekrar Gönder"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "Kanal ekle"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "Geçersiz alıcı"
 
@@ -610,27 +274,15 @@ 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_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Yığın depolama modunda açma sağlanamıyor"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "Yığın depolama modunda kullanma sağlanamıyor"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "Geçerli mesajdan vazgeçilsin mi?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "Seçili"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "Seçili"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "Sil?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "Yeniden boyutlandırılıyor..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "Eklenemiyor. Maksimum dosya boyutu %d KB"
 
@@ -649,3 +301,204 @@ 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_SPAM_MESSAGES"
+msgstr "Spam mesajları"
+
+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_RECEIVING_ALERT_TYPE"
+msgstr "Alma uyarı türü"
+
+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_REPEAT"
+msgstr "Tekrar"
+
+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_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_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_OPT_VIEW_CONTACT"
+msgstr "Kişiyi görüntüle"
+
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Slayt süresi"
+
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+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ı"
+
diff --git a/main/po/uk.po b/main/po/uk.po
new file mode 100644 (file)
index 0000000..5fe850e
--- /dev/null
@@ -0,0 +1,504 @@
+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_READ"
+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_DELIVERY_REPORT"
+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_READ_REPORT"
+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_REQUEST_DELIVERY_REPORT"
+msgstr "Запитувати звіт про доставку"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+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_HEADER_ITEM_LIST"
+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 "MMS-повідомлення надіслано"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "Збій отримання повідомлення"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Збій під час надсилання MMS"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Перес."
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Непроч."
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+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_MMSCREATIONMODE"
+msgstr "Режим створення"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "MMS-повідомлення"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Немає теми"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "SMS-центр"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Вибрати адресу"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Перемістити на SIM-картку"
+
+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_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Заплановане повідомлення"
+
+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_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "Відновлення..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Без вкладень"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Скопійовано в буфер обміну"
+
diff --git a/main/po/vi.po b/main/po/vi.po
new file mode 100644 (file)
index 0000000..38fbdf3
--- /dev/null
@@ -0,0 +1,504 @@
+msgid "IDS_MSGF_POP_UNABLE_TO_OPEN"
+msgstr "Không thể mở"
+
+msgid "IDS_MSGF_OPT_RETRIEVE"
+msgstr "K.phục"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
+msgstr "Không thể di chuyển"
+
+msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
+msgstr "Đã đạt số trang tối đa"
+
+msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
+msgstr "Chế độ hạn chế. Không thể chèn nội dung hạn chế"
+
+msgid "IDS_MSGF_BODY_DELIVERED"
+msgstr "Đã gửi"
+
+msgid "IDS_MSGF_BODY_EXPIRED"
+msgstr "Đã hết hạn"
+
+msgid "IDS_MSGF_BODY_READ"
+msgstr "Đọc"
+
+msgid "IDS_MSGF_BODY_RETRIEVING_ING"
+msgstr "Đang khôi phục…"
+
+msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
+msgstr "Gắn thẻ SIM để gửi tin nhắn. Tin nhắn sẽ được lưu vào Hộp thư đi"
+
+msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
+msgstr "Nhập số kênh"
+
+msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
+msgstr "1 tin nhắn được chọn"
+
+msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
+msgstr "%d tin nhắn được chọn"
+
+msgid "IDS_MSGC_HEADER_PREVIEW"
+msgstr "Xem trước"
+
+msgid "IDS_MSGF_POP_FILE_NAME_ALREADY_EXISTS"
+msgstr "Tên File đã tồn tại"
+
+msgid "IDS_MSGF_POP_NOMESSAGES"
+msgstr "Không có tin nhắn"
+
+msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
+msgstr "Thêm vào danh bạ"
+
+msgid "IDS_MSGF_OPT_DISCARD"
+msgstr "Thoát"
+
+msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
+msgstr "Không thể gửi tin nhắn"
+
+msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
+msgstr "Chụp ảnh"
+
+msgid "IDS_MSGC_POP_NO_ADDRESS"
+msgstr "Không địa chỉ"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
+msgstr "Đã đính kèm danh sách các mục"
+
+msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
+msgstr "Tự động tải về"
+
+msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
+msgstr "Tin nhắn quảng bá"
+
+msgid "IDS_MSGF_BODY_CENTRE_PD"
+msgstr "Trung tâm %d"
+
+msgid "IDS_MSGF_BODY_CUSTOM_TIME"
+msgstr "Giờ tùy chỉnh"
+
+msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
+msgstr "Báo đã gửi tin"
+
+msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
+msgstr "Không gửi được"
+
+msgid "IDS_MSGF_BODY_FROM"
+msgstr "Từ"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
+msgstr "Danh sách các mục đã chèn"
+
+msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
+msgstr "Tin nhắn được gửi"
+
+msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
+msgstr "Tin nhắn đã truy xuất"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
+msgstr "Tự do"
+
+msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
+msgstr "Cảnh báo"
+
+msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
+msgstr "Đã gửi"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
+msgstr "B"
+
+msgid "IDS_MSGF_BODY_MSGSIZE_KB"
+msgstr "KB"
+
+msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
+msgstr "Tin nhắn Push"
+
+msgid "IDS_MSGF_BODY_READ_REPORT"
+msgstr "Báo cáo đọc"
+
+msgid "IDS_MSGF_BODY_RECEIVED"
+msgstr "Đã nhận"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_MANUAL"
+msgstr "Thủ công"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONNETWORK_REJECT"
+msgstr "Từ chối"
+
+msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
+msgstr "Tùy chọn khi nhận"
+
+msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
+msgstr "Yêu cầu báo cáo gửi tin"
+
+msgid "IDS_MSGF_BODY_REQUEST_READ_REPORT"
+msgstr "Yêu cầu báo đã đọc tin"
+
+msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
+msgstr "Hạn chế"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
+msgstr "Thấp"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_NORMAL"
+msgstr "Bình thường"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
+msgstr "Khẩn cấp"
+
+msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
+msgstr "Độ ưu tiên"
+
+msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
+msgstr "Gửi thông báo đọc tin"
+
+msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
+msgstr "Thời gian hiển thị trang"
+
+msgid "IDS_MSGF_BODY_SOS_MESSAGES"
+msgstr "Tin nhắn SOS"
+
+msgid "IDS_MSGF_BODY_TEXT_MESSAGES"
+msgstr "Tin nhắn"
+
+msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
+msgstr "Tổng kích thước"
+
+msgid "IDS_MSGF_HEADER_DRM_CONTENT"
+msgstr "Nội dung DRM"
+
+msgid "IDS_MSGF_HEADER_ITEM_LIST"
+msgstr "Danh sách mục"
+
+msgid "IDS_MSGF_OPT_10SEC"
+msgstr "10 giây"
+
+msgid "IDS_MSGF_OPT_2SEC"
+msgstr "2 giây"
+
+msgid "IDS_MSGF_OPT_5SEC"
+msgstr "5 giây"
+
+msgid "IDS_MSGF_OPT_HOME_NETWORK"
+msgstr "Mạng địa phương"
+
+msgid "IDS_MSGF_OPT_INSTALL"
+msgstr "Cài đặt"
+
+msgid "IDS_MSGF_OPT_ROAM_NETWORK"
+msgstr "Mạng nước ngoài"
+
+msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
+msgstr "Xem chi tiết danh bạ"
+
+msgid "IDS_MSGF_POP_MULTIMEDIA_MESSAGE_SENT"
+msgstr "Tin nhắn MMS đã gửi"
+
+msgid "IDS_MSGF_POP_RETRIEVING_MESSAGE_FAILED"
+msgstr "truy cập tin nhắn đã thất bại"
+
+msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
+msgstr "Gửi tin nhắn MMS đã thất bại"
+
+msgid "IDS_MSGF_SK_FORWARD_LITE"
+msgstr "Ch.tiếp"
+
+msgid "IDS_MSGF_SK3_UNREAD"
+msgstr "Chưa đọc"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
+msgstr "Chuyển qua điện thoại"
+
+msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
+msgstr "Người nhận trùng lặp"
+
+msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
+msgstr "Đã đạt số người nhận tối đa (%d)"
+
+msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
+msgstr "Tới"
+
+msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
+msgstr "Ghi âm"
+
+msgid "IDS_MSGC_OPT_RECORD_VIDEO"
+msgstr "Quay video"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
+msgstr "Đổi thành MMS"
+
+msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
+msgstr "Đã đổi thành SMS"
+
+msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
+msgstr "%d mục đính kèm hiện có. Chọn tối đa %d đính kèm"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
+msgstr "Không thể đính kèm tất cả file. Dung lượng đính kèm tối đa là %d KB. Tiếp tục?"
+
+msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
+msgstr "Cỡ chữ"
+
+msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
+msgstr "Chế độ tạo"
+
+msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
+msgstr "Tin nhắn MMS"
+
+msgid "IDS_MSGF_BODY_NO_SUBJECT"
+msgstr "Không có chủ đề"
+
+msgid "IDS_MSGF_BODY_SERVICECENTRE"
+msgstr "Trung tâm dịch vụ"
+
+msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
+msgstr "Chọn địa chỉ"
+
+msgid "IDS_MSGF_OPT_MOVE_TO_SIM"
+msgstr "Chuyển qua thẻ SIM"
+
+msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
+msgstr "Bạn đang định trực tuyến(%s). Tiếp tục?"
+
+msgid "IDS_MSGF_SK_RESEND"
+msgstr "Gửi lại"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
+msgstr "Người nhận không hợp lệ"
+
+msgid "IDS_MSGF_BODY_INVALID_RECIPIENTS"
+msgstr "Người nhận không hợp lệ"
+
+msgid "IDS_MSG_POP_UNABLE_TO_PLAY_DURING_CALL"
+msgstr "Không thể phát khi đang gọi"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
+msgstr "Không thể lưu khi đang trong Chế độ bộ nhớ chung"
+
+msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
+msgstr "Hủy tin nhắn hiện thời?"
+
+msgid "IDS_MSGC_POP_SPACE_SELECTED"
+msgstr "Đã chọn"
+
+msgid "IDS_MSGF_OPT_DELETE_Q"
+msgstr "Xóa?"
+
+msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
+msgstr "Không thể đính kèm. Kích cỡ tối đa của file là %d KB"
+
+msgid "IDS_MSGF_BODY_CREATIONMODERESTRICTED"
+msgstr "Hạn chế"
+
+msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
+msgstr "Không thể chuyển.\n File bị khoá chuyển"
+
+msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
+msgstr "Tin nhắn theo lịch trình"
+
+msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
+msgstr "Chính sách bảo mật hạn chế soạn tin nhắn văn bản"
+
+msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
+msgstr "Đang thêm. Vui lòng chờ..."
+
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "Địa chỉ trung tâm dịch vụ"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+msgstr "Tin nhắn rác"
+
+msgid "IDS_MSGF_BODY_LARGE"
+msgstr "Lớn"
+
+msgid "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL"
+msgstr "Bình thường"
+
+msgid "IDS_MSGF_BODY_SMALL"
+msgstr "Nhỏ"
+
+msgid "IDS_MSGF_BODY_TINY"
+msgstr "Rất nhỏ"
+
+msgid "IDS_MSG_POP_UNABLE_TO_SEND_SCHEDULED_MESSAGE_SET_ANOTHER_TIME"
+msgstr "Không thể gửi tin nhắn đã lên lịch. Đặt thời gian khác"
+
+msgid "IDS_MSGC_OPT_DATE_AND_TIME"
+msgstr "Thời gian"
+
+msgid "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"
+msgstr "Tin nhắn MMS"
+
+msgid "IDS_MSGF_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS"
+msgstr "Không có người nhận nào được thêm. Nhập người nhận"
+
+msgid "IDS_MSGF_BODY_SOSSENDINGOPTIONS"
+msgstr "Tùy chọn khi gửi"
+
+msgid "IDS_MSGF_BODY_RECEIVING_ALERT_TYPE"
+msgstr "Loại báo hiệu nhận"
+
+msgid "IDS_MSGF_BODY_SOSALERTYES"
+msgstr "SOS"
+
+msgid "IDS_MSGF_BODY_SOSMESSAGE_NORMAL"
+msgstr "Bình thường"
+
+msgid "IDS_MSGF_OPT_SENDING_SOS"
+msgstr "Đang gửi tin nhắn SOS"
+
+msgid "IDS_MSGF_BODY_RECIPIENTS"
+msgstr "Người nhận"
+
+msgid "IDS_MSGF_BODY_REPEAT"
+msgstr "Lặp lại"
+
+msgid "IDS_MSGF_BODY_MESSAGE"
+msgstr "Tin nhắn"
+
+msgid "IDS_MSGF_BODY_SETTING_SOS_MSGREPEAT_ONCE"
+msgstr "Một lần"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_3TIMES"
+msgstr "3 lần"
+
+msgid "IDS_MSGF_BODY_SOSMSGSENDING_5TIMES"
+msgstr "5 lần"
+
+msgid "IDS_MSGF_BODY_SOSMSG"
+msgstr "Tôi đang trong tình trạng khẩn cấp. Hãy giúp tôi"
+
+msgid "IDS_MSGF_POP_SIM_NOT_INSERTED"
+msgstr "Chưa gắn SIM"
+
+msgid "IDS_MSGC_BODY_TAKE_PICTURE"
+msgstr "Chụp ảnh"
+
+msgid "IDS_MSGC_BODY_CAPTURE_VIDEO"
+msgstr "Quay video"
+
+msgid "IDS_MSGC_BODY_RECORD_AUDIO"
+msgstr "Thu âm"
+
+msgid "IDS_MSGF_BODY_CB_MESSAGES"
+msgstr "Tin nhắn CB"
+
+msgid "IDS_MSGF_BODY_SIM_CARD_MESSAGES"
+msgstr "Tin nhắn trong SIM"
+
+msgid "IDS_MSG_BODY_DURATION_MUST_BE_LONGER_THAN_PD_SECONDS"
+msgstr "Thời lượng phải dài hơn %d giây"
+
+msgid "IDS_MSGC_POP_MMSCANTADD"
+msgstr "Không thể thêm nội dung"
+
+msgid "IDS_MSG_HEADER_SELECT_RECIPIENT"
+msgstr "Select recipient"
+
+msgid "IDS_MSGC_OPT_VIEW_CONTACT"
+msgstr "Xem danh bạ"
+
+msgid "IDS_MSGC_OPT2_DURATION_HPS_SEC_ABB"
+msgstr "Thời lượng (%s giây)"
+
+msgid "IDS_MSGC_BODY_PICTURE_TOO_LARGE_COMPRESSING_ING"
+msgstr "Ảnh quá lớn. Đang nén..."
+
+msgid "IDS_MSGC_POP_MESSAGE_SAVED_AS_DRAFT"
+msgstr "Tin nhắn được lưu như bản thảo"
+
+msgid "IDS_MSGF_BODY_OTHER"
+msgstr "Khác"
+
+msgid "IDS_MSGF_HEADER_DRAFT_ABB"
+msgstr "Dự thảo"
+
+msgid "IDS_MSGC_HEADER_DURATION_FOR_SLIDE"
+msgstr "Thời lượng của bản trình chiếu"
+
+msgid "IDS_MSGF_OPT_SEND_EMAIL"
+msgstr "Gửi email"
+
+msgid "IDS_MSGF_BODY_INSERTED_ITEMS"
+msgstr "Mục được thêm"
+
+msgid "IDS_MSGF_BODY_ATTACHED_ITEMS"
+msgstr "Các mục đính kèm"
+
+msgid "IDS_MSGC_BODY_PD_ATTACHMENTS"
+msgstr "%d đính kèm"
+
+msgid "IDS_MSGC_BUTTON2_SCHEDULED_N_MESSAGE"
+msgstr "Đã lên lịch\nthông báo"
+
+msgid "IDS_MSGC_BUTTON2_DURATION_N_HPD_SECS"
+msgstr "Thời gian\n(%d giây)"
+
+msgid "IDS_MSGC_OPT_USE_OTHER_CONTACT_INFO_ABB"
+msgstr "Sử dụng thông tin danh bạ khác"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE_FOR_ONE_FILE"
+msgstr "Tin nhắn này bao gồm một file đính kèm không hiện lên"
+
+msgid "IDS_MSGF_POP_HELP_PAGE_MESSAGE"
+msgstr "Tin nhắn này bao gồm các file đính kèm không được hiện lên"
+
+msgid "IDS_MSGF_HEADER_SAVE_ALL"
+msgstr "Lưu tất cả"
+
+msgid "IDS_MSG_BODY_DRAFT_MESSAGES"
+msgstr "Tin nhắn bản thảo"
+
+msgid "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"
+msgstr "Tin nhắn sẽ được khôi phục"
+
+msgid "IDS_MSG_BODY_SCHEDULED_MESSAGE_WILL_BE_CANCELLED"
+msgstr "Tin nhắn đã được xếp lịch sẽ bị hủy"
+
+msgid "IDS_MSGF_BODY_COPY_MESSAGE_TEXT_ABB"
+msgstr "Chép văn bản tin nhắn"
+
+msgid "IDS_MSGF_BODY_VIEW_MESSAGE_DETAILS_ABB"
+msgstr "Xem chi tiết t.nhắn"
+
+msgid "IDS_MSGF_BODY_INBOX_LOCKED_MESSAGES"
+msgstr "Đã khoá tin nhắn"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_BOXES"
+msgstr "Hộp tin nhắn"
+
+msgid "IDS_MSGF_OPT_BLOCK"
+msgstr "Chặn"
+
+msgid "IDS_MSGF_BODY_COPY_TO_PHONE"
+msgstr "Chép vào điện thoại"
+
+msgid "IDS_MSGF_POP_MESSAGE_COPIED_FROM_SIM_CARD"
+msgstr "Đã chép tin nhắn từ thẻ SIM"
+
+msgid "IDS_MSGC_OPT_CANCEL_MESSAGE"
+msgstr "Hủy tin nhắn"
+
+msgid "IDS_MSGC_OPT_ATTACHMENTS"
+msgstr "Phần đính kèm"
+
+msgid "IDS_MSGF_POP_SENDING_FAILED_MESSAGE"
+msgstr "Gửi tin nhắn bị lỗi"
+
+msgid "IDS_MSGF_POP_MAXIMUM_CHARACTERS"
+msgstr "Đã đạt số ký tự tối đa"
+
+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 "Đang phục hồi"
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "Không có phần đính kèm"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "Đã chép vào bảng tạm"
+
old mode 100755 (executable)
new mode 100644 (file)
index 2d3def3..0240455
@@ -7,15 +7,9 @@ msgstr "取回"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "无法移动"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "未请求"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "已达页面最大数量"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "已发出请求"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "受限模式。 无法插入受限内容"
 
@@ -31,54 +25,18 @@ msgstr "阅读"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "取回中..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "取回失败"
-
 msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
 msgstr "插入 SIM 卡以发送信息。信息将被存于发件箱"
 
-msgid "IDS_MSGF_BODY_PD_LANGUAGES"
-msgstr "%d种语言"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "中心地址"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "重复"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "输入频道名称"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "输入频道号码"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "未选择"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d 个频道"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "相同频道 ID 已存在"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "发送失败。重试?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "频道 ID 列表已满"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "已选择一条信息"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "已选择1个人"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "已选择%d条信息"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "已选择%d个人"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "预览"
 
@@ -88,156 +46,48 @@ msgstr "文件名已存在"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "无信息"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "新建信息"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "添加到联系人"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "葡萄牙语"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "新建地址"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "阻止列表"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "点击并添加号码"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "创建频道"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "放弃"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "无法发送信息"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "联系人"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "拍照"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "无地址"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "提示音"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "允许广告"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "允许匿名"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "附件列表"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "自动下载"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "自动"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "自动删除"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "背景颜色"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "阻止信息"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "广播信息"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "启动"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "德语"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "西班牙语"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "法语"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "意大利语"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "荷兰语"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "个人频道"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "接收信道"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "中心 %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "自定时间"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "默认风格"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "发送报告"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "发送失败"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "每 10 分钟"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "每 2 分钟"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "每 5 分钟"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "字体颜色"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "发件人"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "基本设置"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM 字母系统"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "未使用应用程序或未在通话时,按住 '1' 键可连接语音信箱服务器"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "已插入项目列表"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "语言"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "最大"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "语音信箱号码"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "信息已送达"
 
@@ -253,26 +103,14 @@ msgstr "警告"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "已发送"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "不限制大小和内容"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "当超过允许的最大大小和容量时将收到通知"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "传真"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "语音"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
-msgstr "WAP短信"
+msgstr "推送信息"
 
 msgid "IDS_MSGF_BODY_READ_REPORT"
 msgstr "阅读报告"
@@ -289,9 +127,6 @@ msgstr "拒绝"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "接收选项"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "回复路径"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "要求送达报告"
 
@@ -301,12 +136,6 @@ msgstr "要求阅读报告"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "限制"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "发送中…"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 天"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "低"
 
@@ -316,48 +145,15 @@ msgstr "正常"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "紧急"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "发送选项"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "有效期"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "优先级"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "发送送达报告"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "发送读取报告"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "服务类型"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "地址"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "完全一样"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "包括"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "匹配标准"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "一次"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "页面持续时间"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "字符支持"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "文本"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOS信息"
 
@@ -367,21 +163,12 @@ msgstr "短信"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "总大小"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "单一码"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM 内容"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "编辑频道"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "项目列表"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "秒"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 秒"
 
@@ -400,12 +187,6 @@ msgstr "安装"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "外国网络"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "幻灯片"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "字体风格"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "查看联系人详细信息"
 
@@ -418,18 +199,6 @@ msgstr "取回失败"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "发送彩信失败"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "最多可发送 %d KB 的图像"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "名片"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "无名称"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "欢迎"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "转发"
 
@@ -439,132 +208,48 @@ msgstr "未读"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "移动到手机"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "添加文本"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "重复的收件人"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "最大新建尺寸"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "已达到最大收件人数量(%d)"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "点击并添加主题"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "分组"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "电话簿"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "其它文件"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "声音"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "增加多媒体"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "关"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "开"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "至"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "录音"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "录音"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "拍摄录像"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "文本模板"
-
 msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
 msgstr "更改为彩信"
 
 msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
 msgstr "已更改为短信"
 
-msgid "IDS_MSGC_POP_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "输入地址"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "无效文件"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "已发送"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "超过信息大小"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "%d个文件可用。至多可选择%d个附件"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "服务器无响应"
-
 msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
 msgstr "无法附加所有文件。附件的最大容量为%dKB。继续?"
 
-msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "无法发送 MMS。出现无法识别的错误"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "日历同步"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "字体大小"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "不含附件"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "完整电子邮件"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "创建模式"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "信息已送达"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "彩信"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "新语音信箱"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "没有主题"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "全部确定"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "短信息服务中心"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "装载服务"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "声音"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "无法发送。附加了不支持的文件类型"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "会话列表"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "选择地址"
 
@@ -574,30 +259,9 @@ msgstr "移动到 SIM 卡"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "您将上网(%s)。 继续?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "MMS 取回失败"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "无收件人"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "需要"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "保存到草稿箱?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "超过最大信息大小重整大小中......"
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "同步已取消"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "重新发送"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "添加频道"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "无效收件人"
 
@@ -610,27 +274,15 @@ msgstr "通话中无法播放"
 msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
 msgstr "大容量存储模式打开,无法保存"
 
-msgid "IDS_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "大容量存储模式打开,无法打开"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "大容量存储模式打开,无法使用"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "丢弃当前信息?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "已选择"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "已选择"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "删除?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "调整中..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "无法附加。最大文件大小是 %d KB"
 
@@ -641,7 +293,7 @@ msgid "IDS_MSGC_POP_UNABLE_TO_ADD_FILE_IS_FORWARD_LOCKED"
 msgstr "无法转寄\n文件已锁上转寄"
 
 msgid "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"
-msgstr "预定的信息"
+msgstr "定时信息"
 
 msgid "IDS_MSGF_POP_SECURITY_POLICY_RESTRICTS_COMPOSING_OF_TEXT_MESSAGES"
 msgstr "安全政策限制编写短信"
@@ -649,3 +301,204 @@ msgstr "安全政策限制编写短信"
 msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
 msgstr "添加中,请稍等…"
 
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "服务中心地址"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "恢复中..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "无附件"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "已复制到剪贴板"
+
old mode 100755 (executable)
new mode 100644 (file)
index c7e3a72..05488f5
@@ -7,15 +7,9 @@ msgstr "取回"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "無法移動"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "未要求"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "頁面數目已達上限"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "已請求"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "限制模式。無法插入限制的內容"
 
@@ -31,54 +25,18 @@ msgstr "已讀取"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "正在取回..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "取回失敗"
-
 msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
 msgstr "插入 SIM 卡以發送訊息。訊息將會儲存到寄件匣"
 
-msgid "IDS_MSGF_BODY_PD_LANGUAGES"
-msgstr "%d 語言"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "中心地址"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "重複"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "輸入頻道名稱"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "輸入頻道數字"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "無已選擇項目"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d 頻道"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "相同頻道 ID 已存在"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "發送失敗。要重試嗎?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "頻道 ID 清單已滿"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "已選擇 1 則訊息"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "已選擇 1 人"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "已選擇 %d 則訊息"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "已選擇 %d 人"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "預覽"
 
@@ -88,156 +46,48 @@ msgstr "檔案名稱已存在"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "無訊息"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "建立訊息"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "加到聯絡人"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "Português"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "建立地址"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "封鎖清單"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "輕觸以加入號碼"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "建立頻道"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "捨棄"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "無法發送信息"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "聯絡人"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "拍照"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "無地址"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "提示音"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "允許廣告"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "允許暱名"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "已附加項目清單"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "自動下載"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "自動"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "自動刪除"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "背景顏色"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "封鎖訊息"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "廣播訊息"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "啟動"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "Deutsch"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "Español"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "Français"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "Italiano"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "Nederlands"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "Svenska"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "我的頻道"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "接收頻道"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "中心 %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "自訂時間"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "預設風格"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "傳遞報告"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "發送失敗"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "每 10 分鐘"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "每 2 分鐘"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "每 5 分鐘"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "字體顏色"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "由"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "一般設定"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM 字符表"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "當您不在使用應用程式或不在通話中時,可按住 '1' 鍵以連接到語音郵件伺服器"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "已插入項目清單"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "語言"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "最大"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "留言信箱號碼"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "訊息已傳遞"
 
@@ -245,7 +95,7 @@ msgid "IDS_MSGF_BODY_MESSAGE_RETRIEVED"
 msgstr "訊息已取回"
 
 msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEFREE"
-msgstr "自由"
+msgstr "可用"
 
 msgid "IDS_MSGF_BODY_MMSCCCREATIONMODEWARNING"
 msgstr "警告"
@@ -253,24 +103,12 @@ msgstr "警告"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "已發送"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "無大小和內容的限制"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "當訊息大小及內容超過最大值時,您將收到通知"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "傳真"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "語音"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "推送訊息"
 
@@ -289,9 +127,6 @@ msgstr "拒絕"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "接收選項"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "回覆路徑"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "要求送達報告"
 
@@ -301,12 +136,6 @@ msgstr "要求讀取報告"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "已限制"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "正在發送..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 日"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "低"
 
@@ -316,48 +145,15 @@ msgstr "正常"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "緊急"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "發送選項"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "到期"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "優先次序"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "發送傳遞報告"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "發送讀取報告"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "服務類型"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "地址"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "完全相同於"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "包括"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "符合標準"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "一次"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "頁面持續時間"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "支援的字元"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "文字"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOS 訊息"
 
@@ -367,21 +163,12 @@ msgstr "文字訊息"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "總大小"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM 內容"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "編輯頻道"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "項目清單"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "秒"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 秒"
 
@@ -400,12 +187,6 @@ msgstr "安裝"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "漫遊網絡"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "滑動"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "字體風格"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "檢視聯絡人詳細資料"
 
@@ -418,18 +199,6 @@ msgstr "取回訊息失敗"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "發送多媒體訊息失敗"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "最多可以發送 %d KB 圖像"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "名片"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "無姓名"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "歡迎"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "轉寄"
 
@@ -439,132 +208,48 @@ msgstr "未讀"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "移動到手機"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "加入文字"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "重複的收件人"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "建立大小上限"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "已達收件人的數量上限(%d)"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "輕觸以加入主題"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "群組"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "電話簿"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "其他檔案"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "聲音"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "加入多媒體"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "關"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "開"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "至"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "錄音"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "錄音"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "錄影"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "文字範本"
-
 msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
 msgstr "更改為 MMS"
 
 msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
 msgstr "已更改為短訊"
 
-msgid "IDS_MSGC_POP_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "輸入地址"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "檔案無效"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "訊息已發送"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "已超過訊息大小"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "%d 個附件可用。最多可選擇 %d 個附件"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "伺服器無回應"
-
 msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
 msgstr "無法附加全部檔案。附件容量上限為 %d KB。是否繼續?"
 
-msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "無法發送 MMS。出現無法識別的錯誤"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "日曆同步"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "字體大小"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "無附件"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "完整電郵"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "建立模式"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "訊息已傳遞"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "多媒體訊息"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "新留言"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "無主題"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "全部確定"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "服務中心"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "服務載入"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "聲音"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "無法發送。不支援附加的檔案類型"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "對話清單"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "選擇地址"
 
@@ -574,30 +259,9 @@ msgstr "移動到 SIM 卡"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "您即將上網 (%s)。要繼續嗎?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "MMS 取回失敗"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "無收件人"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "需要"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "要儲存到草稿匣嗎?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "巳超過訊息大小上限。正在重設大小..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "同步取消"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "重新發送"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "加入頻道"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "無效收件人"
 
@@ -610,27 +274,15 @@ msgstr "通話期間無法播放"
 msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
 msgstr "在大容量儲存裝置模式下,無法儲存"
 
-msgid "IDS_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "在大容量儲存裝置模式下,無法開啟"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "在大容量儲存裝置模式下,無法使用"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "捨棄目前的訊息嗎?"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "已選擇"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "已選擇"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "刪除嗎?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "正在重設大小..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "無法附加。檔案最大為%d KB"
 
@@ -649,3 +301,204 @@ msgstr "安全政策限制撰寫文字訊息"
 msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
 msgstr "加入中。請稍候…"
 
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "服務中心地址"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "正在還原..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "無附件"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "已複製到剪貼板"
+
old mode 100755 (executable)
new mode 100644 (file)
index 1aa6a24..074b87a
@@ -7,15 +7,9 @@ msgstr "擷取"
 msgid "IDS_MSGF_POP_UNABLE_TO_MOVE"
 msgstr "無法移動"
 
-msgid "IDS_MSGC_BODY_NOT_REQUESTED"
-msgstr "沒有要求"
-
 msgid "IDS_MSGC_POP_MAXIMUM_NUMBER_OF_PAGES_REACHED"
 msgstr "頁數已達上限"
 
-msgid "IDS_MSGF_BODY_REQUESTED"
-msgstr "已要求"
-
 msgid "IDS_MSGF_POP_RESTRICTED_MODE_UNABLE_TO_INSERT_RESTRICTED_CONTENT"
 msgstr "限制模式。無法插入限制的內容"
 
@@ -31,54 +25,18 @@ msgstr "已讀取"
 msgid "IDS_MSGF_BODY_RETRIEVING_ING"
 msgstr "正在擷取..."
 
-msgid "IDS_MSGF_POP_RETRIEVING_FAILED"
-msgstr "擷取失敗"
-
 msgid "IDS_MSGC_POP_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES_MESSAGE_WILL_BE_SAVED_IN_OUTBOX"
 msgstr "插入 SIM 卡以傳送訊息。訊息將會儲存在寄件匣中"
 
-msgid "IDS_MSGF_BODY_PD_LANGUAGES"
-msgstr "%d 語言"
-
-msgid "IDS_MSGF_BODY_SETTINGSSMS_CENTRE_ADDRESS"
-msgstr "中心地址"
-
-msgid "IDS_MSGF_POP_BLOCKNUMBERDUPLICATED"
-msgstr "重複"
-
-msgid "IDS_MSGF_POP_ENTER_CHANNEL_NAME"
-msgstr "輸入頻道名稱"
-
 msgid "IDS_MSGF_POP_ENTER_CHANNEL_NUMBER"
 msgstr "輸入頻道號碼"
 
-msgid "IDS_MSGF_POP_NOTHINGSELECTED"
-msgstr "未選擇任何項目"
-
-msgid "IDS_MSGF_POP_N_CHANNELS"
-msgstr "%d 頻道"
-
-msgid "IDS_MSGF_POP_SAME_CHANNEL_ID_EXISTS"
-msgstr "有相同的頻道 ID 存在"
-
-msgid "IDS_MSGF_POP_SENDING_FAILED_TRY_AGAIN_Q"
-msgstr "傳送失敗。再試一次?"
-
-msgid "IDS_MSGF_POP_SMSCBENTERCODEFULL"
-msgstr "頻道 ID 清單已滿"
-
 msgid "IDS_MSGF_BODY_1_MESSAGE_SELECTED"
 msgstr "已選擇 1 則訊息"
 
-msgid "IDS_MSGF_BODY_1_PERSON_SELECTED"
-msgstr "已選擇 1 人"
-
 msgid "IDS_MSGF_BODY_PD_MESSAGES_SELECTED"
 msgstr "已選擇 %d 則訊息"
 
-msgid "IDS_MSGF_BODY_PD_PEOPLE_SELECTED"
-msgstr "已選擇 %d 人"
-
 msgid "IDS_MSGC_HEADER_PREVIEW"
 msgstr "預覽"
 
@@ -88,156 +46,48 @@ msgstr "檔案名稱已存在"
 msgid "IDS_MSGF_POP_NOMESSAGES"
 msgstr "無訊息"
 
-msgid "IDS_MSGC_BODY_CREATE_NEW_MESSAGE"
-msgstr "建立訊息"
-
 msgid "IDS_MSGF_BODY_ADD_TO_CONTACT"
 msgstr "加到聯絡人"
 
-msgid "IDS_MSGF_BODY_CBLANGUAGE_PT"
-msgstr "葡萄牙文"
-
-msgid "IDS_MSGF_BODY_CREATE_ADDRESS"
-msgstr "建立地址"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_BLOCK_LIST"
-msgstr "封鎖清單"
-
-msgid "IDS_MSGF_BODY_TAP_TO_ADD_NUMBER"
-msgstr "輕觸以新增號碼"
-
-msgid "IDS_MSGF_HEADER_CREATE_CHANNEL_MCELLBROADCAST"
-msgstr "建立頻道"
-
 msgid "IDS_MSGF_OPT_DISCARD"
 msgstr "捨棄"
 
 msgid "IDS_MSGC_BODY_UNABLE_TO_SEND_MESSAGE"
 msgstr "無法傳送訊息"
 
-msgid "IDS_MSGC_HEADER_CONTACTS"
-msgstr "聯絡人"
-
 msgid "IDS_MSGC_OPT_CREATE_ITEM_TAKE_PHOTO"
 msgstr "拍照"
 
 msgid "IDS_MSGC_POP_NO_ADDRESS"
 msgstr "無地址"
 
-msgid "IDS_MSGF_BODY_ALERT_TONE"
-msgstr "提示音"
-
-msgid "IDS_MSGF_BODY_ALLOW_ADVERTISEMENT"
-msgstr "允許廣告"
-
-msgid "IDS_MSGF_BODY_ALLOW_ANONYMOUS"
-msgstr "允許暱名"
-
 msgid "IDS_MSGF_BODY_ATTACHED_ITEM_LIST"
 msgstr "附加項目清單"
 
 msgid "IDS_MSGF_BODY_AUTODOWNLOAD"
 msgstr "自動下載"
 
-msgid "IDS_MSGF_BODY_AUTOMATIC"
-msgstr "自動"
-
-msgid "IDS_MSGF_BODY_AUTO_DELETE"
-msgstr "自動刪除"
-
-msgid "IDS_MSGF_BODY_BACKGROUND_COLOUR"
-msgstr "背景顏色"
-
-msgid "IDS_MSGF_BODY_BLOCK_MESSAGES"
-msgstr "封鎖訊息"
-
 msgid "IDS_MSGF_BODY_BROADCASTMESSAGES"
 msgstr "廣播訊息"
 
-msgid "IDS_MSGF_BODY_BROADCASTMESSAGES_ACTIVATION"
-msgstr "啟動"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_DE"
-msgstr "德文"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_EN"
-msgstr "English"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_ES"
-msgstr "西班文語"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_FR"
-msgstr "法語"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_IT"
-msgstr "義大利文"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_NL"
-msgstr "荷蘭語"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_SV"
-msgstr "瑞典文"
-
-msgid "IDS_MSGF_BODY_CBLANGUAGE_TR"
-msgstr "Türkçe"
-
-msgid "IDS_MSGF_BODY_CBS_MY_CHANNELS"
-msgstr "我的頻道"
-
-msgid "IDS_MSGF_BODY_CBS_RECEIVING_CHANNEL"
-msgstr "接收頻道"
-
 msgid "IDS_MSGF_BODY_CENTRE_PD"
 msgstr "中心 %d"
 
 msgid "IDS_MSGF_BODY_CUSTOM_TIME"
 msgstr "自訂時間"
 
-msgid "IDS_MSGF_BODY_DEFAULT_STYLE"
-msgstr "預設樣式"
-
 msgid "IDS_MSGF_BODY_DELIVERY_REPORT"
 msgstr "傳遞報告"
 
 msgid "IDS_MSGF_BODY_DETAILSSENDINGFAILED"
 msgstr "傳送失敗"
 
-msgid "IDS_MSGF_BODY_EVERY_10_MINUTES"
-msgstr "每 10 分鐘"
-
-msgid "IDS_MSGF_BODY_EVERY_2_MINUTES"
-msgstr "每 2 分鐘"
-
-msgid "IDS_MSGF_BODY_EVERY_5_MINUTES"
-msgstr "每 5 分鐘"
-
-msgid "IDS_MSGF_BODY_FONT_COLOUR"
-msgstr "字型顏色"
-
 msgid "IDS_MSGF_BODY_FROM"
 msgstr "自"
 
-msgid "IDS_MSGF_BODY_GENERAL_SETTINGS"
-msgstr "一般設定"
-
-msgid "IDS_MSGF_BODY_GSM_ALPHABET"
-msgstr "GSM 字母表"
-
-msgid "IDS_MSGF_BODY_HOLD_DOWN_1_KEY_CONNECT_TO_VOICE_MAIL_SERVER"
-msgstr "當您沒有使用應用程式或沒有通話時,按下「1」鍵可連線至語音郵件伺服器"
-
 msgid "IDS_MSGF_BODY_INSERTED_ITEM_LIST"
 msgstr "已插入項目清單"
 
-msgid "IDS_MSGF_BODY_LANG"
-msgstr "語言"
-
-msgid "IDS_MSGF_BODY_MAX"
-msgstr "最大"
-
-msgid "IDS_MSGF_BODY_MESSAGESETTINGS_VOICE_MAIL_NUMBER"
-msgstr "語音信箱號碼"
-
 msgid "IDS_MSGF_BODY_MESSAGE_DELIVERED"
 msgstr "訊息已傳遞"
 
@@ -253,24 +103,12 @@ msgstr "警告"
 msgid "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"
 msgstr "已傳送"
 
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_FREE"
-msgstr "無大小及內容限制"
-
-msgid "IDS_MSGF_BODY_MMS_CONTENTCLASS_HELP_WARNING"
-msgstr "當大小及內容超過允許的上限時,您將收到通知"
-
 msgid "IDS_MSGF_BODY_MSGSIZE_BYTE"
 msgstr "B"
 
 msgid "IDS_MSGF_BODY_MSGSIZE_KB"
 msgstr "KB"
 
-msgid "IDS_MSGF_BODY_MSGTYPE_FAX"
-msgstr "傳真"
-
-msgid "IDS_MSGF_BODY_MSGTYPE_VOICE"
-msgstr "語音"
-
 msgid "IDS_MSGF_BODY_PUSH_MESSAGES"
 msgstr "推送訊息"
 
@@ -289,9 +127,6 @@ msgstr "拒絕"
 msgid "IDS_MSGF_BODY_RECEIVINGOPTIONS"
 msgstr "接收選項"
 
-msgid "IDS_MSGF_BODY_REPLYPATH"
-msgstr "回覆路徑"
-
 msgid "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT"
 msgstr "要求傳遞報告"
 
@@ -301,12 +136,6 @@ msgstr "要求讀取報告"
 msgid "IDS_MSGF_BODY_ROAMINGRECEPTION_RESTRICTED"
 msgstr "保密"
 
-msgid "IDS_MSGF_BODY_SENDING"
-msgstr "正在傳送..."
-
-msgid "IDS_MSGF_BODY_SENDINGOPTIONEXPIRY_2_DAY"
-msgstr "2 天"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_LOW"
 msgstr "低"
 
@@ -316,48 +145,15 @@ msgstr "正常"
 msgid "IDS_MSGF_BODY_SENDINGOPTIONPRIORITY_URGENT"
 msgstr "緊急"
 
-msgid "IDS_MSGF_BODY_SENDINGOPTIONS"
-msgstr "傳送選項"
-
-msgid "IDS_MSGF_BODY_SENDINGOPTION_EXPIRY"
-msgstr "過期"
-
 msgid "IDS_MSGF_BODY_SENDINGOPTION_PRIORITY"
 msgstr "優先順序"
 
-msgid "IDS_MSGF_BODY_SEND_DELIVERY_REPORT"
-msgstr "傳送傳遞報告"
-
 msgid "IDS_MSGF_BODY_SEND_READ_REPORT"
 msgstr "傳送讀取報告"
 
-msgid "IDS_MSGF_BODY_SERVICE_TYPE"
-msgstr "服務類型"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_ADDRESS"
-msgstr "地址"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_EXACTLY_THE_SAME_AS"
-msgstr "完全一樣"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_INCLUDE"
-msgstr "包括"
-
-msgid "IDS_MSGF_BODY_SETBLOCK_MATCH_CRITERIA"
-msgstr "符合條件"
-
-msgid "IDS_MSGF_BODY_SETTINGSOSMSGREPEAT_ONCE"
-msgstr "一次"
-
 msgid "IDS_MSGF_BODY_SETUP_PAGE_DURATION"
 msgstr "頁面顯示時間"
 
-msgid "IDS_MSGF_BODY_SMSSENDINGOPTCHARSUPPORT"
-msgstr "字元支援"
-
-msgid "IDS_MSGF_BODY_SMSTYPETEXT"
-msgstr "文字"
-
 msgid "IDS_MSGF_BODY_SOS_MESSAGES"
 msgstr "SOS 訊息"
 
@@ -367,21 +163,12 @@ msgstr "簡訊"
 msgid "IDS_MSGF_BODY_TOTAL_SIZE_ABB"
 msgstr "總大小"
 
-msgid "IDS_MSGF_BODY_UNICODE"
-msgstr "Unicode"
-
 msgid "IDS_MSGF_HEADER_DRM_CONTENT"
 msgstr "DRM 內容"
 
-msgid "IDS_MSGF_HEADER_EDIT_CHANNEL_CHANNEL_MCELLBROADCAST"
-msgstr "編輯頻道"
-
 msgid "IDS_MSGF_HEADER_ITEM_LIST"
 msgstr "項目清單"
 
-msgid "IDS_MSGF_HEADER_MMSDURSECONDS"
-msgstr "秒"
-
 msgid "IDS_MSGF_OPT_10SEC"
 msgstr "10 秒"
 
@@ -400,12 +187,6 @@ msgstr "安裝"
 msgid "IDS_MSGF_OPT_ROAM_NETWORK"
 msgstr "外部網路"
 
-msgid "IDS_MSGF_OPT_SLIDE"
-msgstr "投影片"
-
-msgid "IDS_MSGF_OPT_SP_FONT_STYLE"
-msgstr "字型樣式"
-
 msgid "IDS_MSGF_OPT_VIEW_CONTACT_DETAIL"
 msgstr "檢視聯絡人詳細資料"
 
@@ -418,18 +199,6 @@ msgstr "擷取訊息失敗"
 msgid "IDS_MSGF_POP_SENDING_MULTIMEDIA_MESSAGE_FAILED"
 msgstr "傳送多媒體訊息失敗"
 
-msgid "IDS_MSGF_POP_YOU_CAN_SEND_IMAGE_UP_TO_PD_KB"
-msgstr "最多可以傳送 %d KB 影像"
-
-msgid "IDS_MSGF_OPT_NAME_CARD"
-msgstr "名片"
-
-msgid "IDS_MSGF_BODY_EMAILNONAME"
-msgstr "無姓名"
-
-msgid "IDS_MSGF_BODY_WELCOME"
-msgstr "歡迎"
-
 msgid "IDS_MSGF_SK_FORWARD_LITE"
 msgstr "轉寄"
 
@@ -439,132 +208,48 @@ msgstr "未讀"
 msgid "IDS_MSGF_OPT_MOVE_TO_PHONE"
 msgstr "移動到手機"
 
-msgid "IDS_MSGC_BODY_ADD_TEXT"
-msgstr "加入文字"
-
 msgid "IDS_MSGC_BODY_DUPLICATED_RECIPIENT"
 msgstr "重覆的收件人"
 
-msgid "IDS_MSGC_BODY_MAXIMUM_CREATION_SIZE"
-msgstr "最大新建訊息"
-
 msgid "IDS_MSGC_BODY_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"
 msgstr "收件人的最大數量(%d位)已達到"
 
-msgid "IDS_MSGC_BODY_TAP_TO_ADD_SUBJECT"
-msgstr "輕觸以加入主旨"
-
-msgid "IDS_MSGC_BUTTON_GROUPS"
-msgstr "群組"
-
-msgid "IDS_MSGC_BUTTON_PHONEBOOK"
-msgstr "電話簿"
-
-msgid "IDS_MSGC_OPT_ADDATTACHMENT_OTHER_FILE"
-msgstr "其他檔案"
-
-msgid "IDS_MSGC_OPT_ADD_ATTACHMENT_SOUND"
-msgstr "聲音"
-
-msgid "IDS_MSGC_OPT_ADD_MULTIMEDIA"
-msgstr "加入多媒體"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_OFF"
-msgstr "關"
-
-msgid "IDS_MSGC_OPT_AUTO_COMPLETE_ON"
-msgstr "開"
-
 msgid "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"
 msgstr "至"
 
 msgid "IDS_MSGC_OPT_CREATEITEMRECORDSOUND"
 msgstr "錄音"
 
-msgid "IDS_MSGC_OPT_RECORD_SOUND"
-msgstr "錄音"
-
 msgid "IDS_MSGC_OPT_RECORD_VIDEO"
 msgstr "錄影"
 
-msgid "IDS_MSGC_OPT_TEXT_TEMPLATE"
-msgstr "文字範本"
-
 msgid "IDS_MSGC_POP_CHANGED_TO_MMS"
 msgstr "已變更為 MMS"
 
 msgid "IDS_MSGC_POP_CHANGED_TO_SMS"
 msgstr "更改為簡短訊息"
 
-msgid "IDS_MSGC_POP_INPUTWINDOW_ENTER_ADDRESS_TMO_US"
-msgstr "輸入地址"
-
-msgid "IDS_MSGC_POP_INVALID_FILE"
-msgstr "檔案無效"
-
-msgid "IDS_MSGC_POP_MESSAGESENT"
-msgstr "訊息已傳送"
-
-msgid "IDS_MSGC_POP_MSG_SIZE_OVER"
-msgstr "已超過訊息大小上限"
-
 msgid "IDS_MSGC_POP_PD_ATTACHMENTS_AVAILABLE_SELECT_UP_TO_PD_ATTACHMENTS"
 msgstr "加入附件/   最多至%個附件"
 
-msgid "IDS_MSGC_POP_SERVER_NOT_RESPONDING"
-msgstr "伺服器無回應"
-
 msgid "IDS_MSGC_POP_UNABLE_TO_ATTACH_ALL_FILES_MAXIMUM_ATTACHMENT_CAPACITY_PD_KB_CONTINUE_Q"
 msgstr "無法附加所有檔案,最大容量%KB。要繼續嗎?"
 
-msgid "IDS_MSGC_POP_UNABLE_TO_SEND_MMS_UNRECOGNISED_ERROR"
-msgstr "無法傳送 MMS。無法辨識的錯誤"
-
-msgid "IDS_MSGF_BODY_CALENDAR_SYNC"
-msgstr "日曆同步"
-
 msgid "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"
 msgstr "字型大小"
 
-msgid "IDS_MSGF_BODY_EMAIL_WITHOUT_ATTACHMENTS"
-msgstr "無附件"
-
-msgid "IDS_MSGF_BODY_ENTIRE_EMAIL"
-msgstr "整封電子郵件"
-
 msgid "IDS_MSGF_BODY_MMSCREATIONMODE"
 msgstr "建立模式"
 
-msgid "IDS_MSGF_BODY_MMSDELIVERYMSGDELIVERED"
-msgstr "訊息已傳遞"
-
 msgid "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"
 msgstr "多媒體訊息"
 
-msgid "IDS_MSGF_BODY_NEW_VOICEMAIL"
-msgstr "新留言"
-
 msgid "IDS_MSGF_BODY_NO_SUBJECT"
 msgstr "無主旨"
 
-msgid "IDS_MSGF_BODY_SENDREADRECEIPT_YES_TO_ALL"
-msgstr "全部選是"
-
 msgid "IDS_MSGF_BODY_SERVICECENTRE"
 msgstr "服務中心"
 
-msgid "IDS_MSGF_BODY_SERVICE_LOADING"
-msgstr "服務載入"
-
-msgid "IDS_MSGF_BODY_SOUND"
-msgstr "音效"
-
-msgid "IDS_MSGF_BODY_UNABLE_TO_SEND_UNSUPPORTED_FILE_TYPES_ATTACHED"
-msgstr "無法發送,不支援的文件類型"
-
-msgid "IDS_MSGF_HEADER_CONVERSATION_LIST"
-msgstr "對話清單"
-
 msgid "IDS_MSGF_HEADER_SELECT_ADDRESS"
 msgstr "選擇地址"
 
@@ -574,30 +259,9 @@ msgstr "移動到 SIM 卡"
 msgid "IDS_MSGF_POP_ABOUT_TO_GO_ONLINE_CONTINUE_Q"
 msgstr "您即將上線 (%s)。繼續?"
 
-msgid "IDS_MSGF_POP_MMSRETRIEVEFAILED_ORANGE"
-msgstr "MMS 擷取失敗"
-
-msgid "IDS_MSGF_POP_NO_RECIPIENT"
-msgstr "無收件人"
-
-msgid "IDS_MSGF_POP_REQUIRED"
-msgstr "必要項"
-
-msgid "IDS_MSGF_POP_SAVE_IN_DRAFT"
-msgstr "要儲存在草稿匣中嗎?"
-
-msgid "IDS_MSGF_POP_SIZE_OVER_RESIZING"
-msgstr "超過訊息大小上限。正在重設大小..."
-
-msgid "IDS_MSGF_POP_SYNCHRONISATION_CANCELLED"
-msgstr "同步已取消"
-
 msgid "IDS_MSGF_SK_RESEND"
 msgstr "重新傳送"
 
-msgid "IDS_MSGF_BODY_CBS_CHANNEL_ADD"
-msgstr "增加頻道"
-
 msgid "IDS_MSGF_BODY_INVALID_RECIPIENT"
 msgstr "無效的收件人"
 
@@ -610,27 +274,15 @@ msgstr "通話期間無法播放"
 msgid "IDS_MSG_POP_UNABLE_TO_SAVE_WHILE_IN_MASS_STORAGE_MODE"
 msgstr "處於大容量儲存裝置模式時,無法儲存"
 
-msgid "IDS_MSG_POP_UNABLE_TO_OPEN_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "處於大容量儲存裝置模式時,無法開啟"
-
-msgid "IDS_MSG_POP_UNABLE_TO_USE_WHILE_IN_MASS_STORAGE_MODE"
-msgstr "處於大容量儲存裝置模式時,無法使用"
-
 msgid "IDS_MSGC_POP_DISCARD_CURRENT_MESSAGE_Q"
 msgstr "放棄目前訊息"
 
-msgid "IDS_MSGF_OPT_SELECTED"
-msgstr "已選擇"
-
 msgid "IDS_MSGC_POP_SPACE_SELECTED"
 msgstr "已選擇"
 
 msgid "IDS_MSGF_OPT_DELETE_Q"
 msgstr "要刪除嗎?"
 
-msgid "IDS_MSGF_POP_RESIZING_ING"
-msgstr "正在重設大小..."
-
 msgid "IDS_MSGF_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB"
 msgstr "無法附加。最大文件%d KB"
 
@@ -649,3 +301,204 @@ msgstr "訊息安全政策限制"
 msgid "IDS_MSGF_POP_ADDING_PLEASE_WAIT_ING"
 msgstr "增加中。請稍候..."
 
+msgid "IDS_MSGF_BODY_PUSHADDRESS"
+msgstr "服務中心地址"
+
+msgid "IDS_MSGF_BODY_SPAM_MESSAGES"
+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_RECEIVING_ALERT_TYPE"
+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_REPEAT"
+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_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_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_OPT_VIEW_CONTACT"
+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_MSGC_HEADER_DURATION_FOR_SLIDE"
+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 "Saved in My Files"
+
+msgid "IDS_MSGF_HEADER_MESSAGE_DETAILS"
+msgstr "Message details"
+
+msgid "IDS_MSGF_POP_RESTORING_ING"
+msgstr "正在還原..."
+
+msgid "IDS_MSGF_POP_NO_ATTACHMENTS"
+msgstr "無附件"
+
+msgid "IDS_MSGF_POP_COPIED_TO_CLIPBOARD"
+msgstr "複製到剪貼簿"
+
diff --git a/org.tizen.message.xml b/org.tizen.message.xml
new file mode 100755 (executable)
index 0000000..5a7398b
--- /dev/null
@@ -0,0 +1,83 @@
+<?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="/opt/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="en-us">Messages</label>
+               <label xml:lang="nl-nl">Berichten</label>
+               <label xml:lang="de-de">Nachrichten</label>
+               <label xml:lang="zh-hk">訊息</label>
+               <label xml:lang="zh-cn">信息</label>
+               <label xml:lang="ru-ru">Сообщения</label>
+               <label xml:lang="zh-tw">訊息</label>
+               <label xml:lang="ja-jp">メール</label>
+               <label xml:lang="es-es">Mensajes</label>
+               <label xml:lang="el-gr">Μηνύματα</label>
+               <label xml:lang="it-it">Messaggi</label>
+               <label xml:lang="tr-tr">Mesajlar</label>
+               <label xml:lang="pt-pt">Mensagem</label>
+               <label xml:lang="fr-fr">Messages</label>
+               <label xml:lang="ko-kr">메시지</label>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send"/>
+                       <uri name="mmsto"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send_text"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send_text"/>
+                       <uri name="sms"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send_text"/>
+                       <mime name="*/*"/>
+               </application-service>
+       </ui-application>
+       <ui-application appid="org.tizen.msg-ui-class0" exec="/opt/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="/opt/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>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send"/>
+                       <uri name="mmsto"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send_text"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send_text"/>
+                       <uri name="sms"/>
+                       <mime name="*/*"/>
+               </application-service>
+               <application-service>
+                       <operation name="http://tizen.org/appsvc/operation/send_text"/>
+                       <mime name="*/*"/>
+               </application-service>
+       </ui-application>
+</manifest>
index c58ae83..3acb335 100755 (executable)
@@ -1,18 +1,19 @@
 Name:       org.tizen.message
 Summary:    message application
-Version:    0.8.2
+Version:    0.8.22
 Release:    1
 Group:      devel
-License:    Flora Software License
+License:    Samsung
 Source0:    %{name}-%{version}.tar.gz
 Requires(post): /bin/touch
-BuildRequires:  pkgconfig(appcore-common)
-BuildRequires:  pkgconfig(appcore-efl)
+Requires(post): /usr/bin/vconftool
 BuildRequires:  pkgconfig(appsvc)
 BuildRequires:  pkgconfig(bundle)
 BuildRequires:  pkgconfig(capi-appfw-application)
 BuildRequires:  pkgconfig(contacts-service)
 BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(drm-client)
+BuildRequires:  pkgconfig(drm-trusted)
 BuildRequires:  pkgconfig(devman_haptic)
 BuildRequires:  pkgconfig(elementary)
 BuildRequires:  pkgconfig(ecore)
@@ -25,8 +26,17 @@ BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(heynoti)
 BuildRequires:  pkgconfig(icu-i18n)
 BuildRequires:  pkgconfig(msg-service)
+BuildRequires:  pkgconfig(mm-common)
+BuildRequires:  pkgconfig(mm-player)
+BuildRequires:  pkgconfig(mm-session)
+BuildRequires:  pkgconfig(mmutil-jpeg)
+BuildRequires:  pkgconfig(mmutil-imgp)
+BuildRequires:  pkgconfig(mm-fileinfo)
 BuildRequires:  pkgconfig(utilX)
-BuildRequires:  pkgconfig(ui-gadget)
+BuildRequires:  pkgconfig(ui-gadget-1)
+BuildRequires:  pkgconfig(syspopup-caller)
+BuildRequires:  pkgconfig(capi-media-sound-manager)
+BuildRequires:  pkgconfig(status)
 BuildRequires:  libug-contacts-devel
 BuildRequires:  cmake
 BuildRequires:  edje-tools
@@ -52,18 +62,23 @@ make #%{?jobs:-j%jobs}
 rm -rf %{buildroot}
 %make_install
 
-mkdir -p %{buildroot}/opt/apps/org.tizen.message/data
-
 %post
+vconftool set -t int db/private/org.tizen.message/font_size 0 -u 5000
+#mkdir -p %{buildroot}/opt/apps/org.tizen.message/data
+chown -R 5000:5000 /opt/apps/org.tizen.message/data
+mkdir -p /opt/ug/bin
+ln -sf /usr/bin/ug-client /opt/ug/bin/msg-composer-efl
 
 %files
 %defattr(-,root,root,-)
 /opt/apps/org.tizen.message/bin/message
 /opt/apps/org.tizen.message/lib/*
 /opt/apps/org.tizen.message/bin/message-dialog
-/opt/share/applications/*.desktop
+/opt/apps/org.tizen.message/bin/msg-ui-class0
+/opt/share/packages/*.xml
 /opt/apps/org.tizen.message/res/*
 /opt/ug/lib/*.so
-%attr(-,inhouse,inhouse) %dir /opt/apps/org.tizen.message/data
+%dir /opt/apps/org.tizen.message/data
+/opt/share/icons/default/small/*.png
 
 %changelog
index 59ed23a..318a5e6 100755 (executable)
@@ -12,7 +12,13 @@ SET(SETTING_SRCS
         ./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/main/msg-ui-setting-font-size.c
+        ./src/general/msg-ui-setting-general-setting.c
+        ./src/general/msg-ui-setting-general-block-message.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 
@@ -31,12 +37,14 @@ 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")
+
 
 # Install executable and .edj files. 
 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}) 
+INSTALL(TARGETS ug-msg-setting-efl  DESTINATION ${UGDIR})
 
 #i18n
 #ADD_SUBDIRECTORY(po)
index 04d433b..28e90d8 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __DEF_MSG_UI_SETTING_CALLBACK_H__
 #define __DEF_MSG_UI_SETTING_CALLBACK_H__
 
 =============================================================================*/
 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
index b10d077..a79c16a 100755 (executable)
  * 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-general-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
 
index 61c3938..97b3c2e 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __DEF_MSG_UI_SETTING_GADGET_H__
 #define __DEF_MSG_UI_SETTING_GADGET_H__
 
diff --git a/setting/include/msg-ui-setting-general-setting.h b/setting/include/msg-ui-setting-general-setting.h
new file mode 100755 (executable)
index 0000000..f1136b2
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __DEF_MSG_UI_SETTING_GENERAL_SETTING_H__
+#define __DEF_MSG_UI_SETTING_GENERAL_SETTING_H__
+
+
+#include <msg.h>
+#include "msg-ui-setting-main.h"
+
+
+#define MSG_UI_SETTING_BLOCKED_DETAIL_CREATE   -1
+
+
+typedef enum {
+       MSG_UI_SETTING_GENERAL_MENU_NUMBERS_TO_REJECT,
+       MSG_UI_SETTING_GENERAL_MENU_BLOCK_MESSAGE,
+       MSG_UI_SETTING_GENERAL_MENU_MAX
+
+} MSG_UI_SETTING_GENERAL_MENU_E;
+
+typedef enum {
+       MSG_UI_SETTING_BLOCK_DETAIL_MENU_TITLE,
+       MSG_UI_SETTING_BLOCK_DETAIL_MENU_DATA,
+       MSG_UI_SETTING_BLOCK_DETAIL_MENU_MAX
+
+} MSG_UI_SETTING_BLOCK_DETAIL_MENU_E;
+
+
+/*============================================================================
+                               FUNCTION DEFINE
+=============================================================================*/
+void msg_ui_setting_general_create_view(void *data, Evas_Object *obj, void *event_info);
+
+
+/*
+ *     General Setting - Block Messsage
+ */
+void msg_ui_setting_block_message_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_setting_block_message_exit_edit_mode(void *data);
+void msg_ui_setting_destroy_block_message(void *data);
+void msg_ui_setting_show_block_message(void *data);
+void msg_ui_setting_block_filter_update_view(void *data);
+void msg_ui_setting_general_block_message_main(void *data, Evas_Object *obj, void *event_info);
+
+
+#endif
index 14f73e8..2dcaa7d 100755 (executable)
@@ -17,9 +17,6 @@
 #ifndef __DEF_MSG_UI_MAIN_SETTING_H__
 #define __DEF_MSG_UI_MAIN_SETTING_H__
 
-
-#include <MapiControl.h>
-#include <MapiSetting.h>
 #include <vconf.h>
 #include "message.h"
 #include "msg-ui-util.h"
 
 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_FONT_SIZE,
 
        MSG_UI_SETTING_MAIN_MENU_MAX
 
@@ -55,9 +57,11 @@ 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);
 
+void msg_ui_setting_font_size_create_view(void *data, Evas_Object *obj, void *event_info);
 
 #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..956bfd1
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#ifndef __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_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_main(void *data, Evas_Object *obj, void *event_info);
+
+/*
+ *     Read Report API
+ */
+void msg_ui_setting_mm_read_rep_main(void *data, Evas_Object *obj, void *event_info);
+
+
+#endif
+
index c330502..972dbbd 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __DEF_MSG_UI_SETTING_MSG_SERVICE_WRAPPER_H__
 #define __DEF_MSG_UI_SETTING_MSG_SERVICE_WRAPPER_H__
 
index cd63e3b..fa1d621 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #ifndef __DEF_MSG_UI_SETTING_TEXT_MESSAGE_H__
 #define __DEF_MSG_UI_SETTING_TEXT_MESSAGE_H__
 
 =============================================================================*/
 typedef enum {
        MSG_UI_SETTING_TEXT_MENU_REQ_DELIVERY_REPORT,
+       MSG_UI_SETTING_TEXT_MENU_SMSC,
        MSG_UI_SETTING_TEXT_MENU_MAX
 
 } MSG_UI_SETTING_TEXT_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
@@ -37,5 +46,12 @@ typedef enum {
 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
 
index d52c8ec..2968e33 100755 (executable)
  * limitations under the License.
  */
 
+
 #ifndef __DEF_MSG_UI_SETTING_TYPES_H__
 #define __DEF_MSG_UI_SETTING_TYPES_H__
 
 
-#include <MsgTypes.h>
-#include <MsgSettingTypes.h>
 #include "message.h"
+#include <msg.h>
 
 
 #define MSG_SETTING_THEME      EDJDIR"/setting_theme.edj"
 #define MSG_SETTING_THEME_BLACK        EDJDIR"/setting_theme_black.edj"
 
 #define MAX_SETTING_CTRLBAR_BUTTON     4
+#define MAX_FILTER_LIST        100
 #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
 
 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;
+
 
 /*============================================================================
                                ENUMS
@@ -50,32 +59,139 @@ typedef unsigned int MSG_UI_SETTING_TYPE_T;
  *     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;
+
 
 /*============================================================================
                                STRUCT DEFINE
 =============================================================================*/
 
 typedef struct {
+       Evas_Object *general_genlist;
+       Elm_Genlist_Item_Class general_itc;
+
+} MSG_UI_SETTING_GENERAL_S;
+
+typedef struct {
        Evas_Object *text_genlist;
+       Elm_Genlist_Item_Class text_2line_itc;
        Elm_Genlist_Item_Class text_1line_1icon_itc;
+
        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;
+
+       Evas_Object *smsc_genlist;
+       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_SETTING_S sms_send_opt;
+       msg_struct_t setting_opt;
+       msg_struct_list_s *smsc_list;
 
 } MSG_UI_SETTING_S;
 
+typedef struct _MSG_UI_SETTING_FILTER_S {
+       Evas_Object *block_layout;
+
+       msg_struct_list_s filterList;
+
+       Evas_Object *block_filter_nocontents;
+       Evas_Object *block_filter_box;
+
+       Elm_Object_Item *ctrl_btn[MAX_SETTING_CTRLBAR_BUTTON];
+       Elm_Object_Item *block_left_btn;
+       Elm_Object_Item *block_right_btn;
+
+       Evas_Object *block_ctrl_bar;
+
+       /* Filter list */
+       Evas_Object *block_filter_genlist;
+       Elm_Genlist_Item_Class block_filter_itc;
+
+       Evas_Object *block_filter_sel_all_layout;
+       Evas_Object *block_filter_chk_sel_all;
+       Eina_Bool block_filter_chk_sel_all_state;
+       Evas_Object *block_filter_chk[MAX_FILTER_LIST];
+       Eina_Bool block_filter_chk_state[MAX_FILTER_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_title_itc;
+       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;
+
+} MSG_UI_SETTING_FILTER_S;
+
 typedef struct _MSG_SETTING_DATA {
-       struct ui_gadget *ug;
+       ui_gadget_h ug;
        struct ug_cbs cbs;
-       struct ui_gadget *loaded_ug;
+       ui_gadget_h loaded_ug;
 
        Evas_Object *layout_main;
        Evas_Object *bg;
@@ -84,20 +200,28 @@ typedef struct _MSG_SETTING_DATA {
        Evas_Object *selectioninfo;
        Evas_Object *selectioninfo_layout;
 
-       MSG_HANDLE_T msgHandle;
+       msg_handle_t msgHandle;
        MSG_UI_SETTING_S msg_setting;
 
-       const char *locale;
-       int time_format;
-
        Elm_Genlist_Item_Class grp_sep_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;
+
+       Evas_Object *font_size_genlist;
+       Elm_Genlist_Item_Class font_size_itc;
+       Evas_Object *font_size_radio_group;
+       int font_size_index;
 
        union {
+               MSG_UI_SETTING_GENERAL_S general_setting;
                MSG_UI_SETTING_TEXT_S text_msg;
-
+               MSG_UI_SETTING_MM_S mm_msg;
        } list;
 
 } MSG_SETTING_DATA, *PMSG_SETTING_DATA;
diff --git a/setting/src/general/msg-ui-setting-general-block-message.c b/setting/src/general/msg-ui-setting-general-block-message.c
new file mode 100755 (executable)
index 0000000..bc0784b
--- /dev/null
@@ -0,0 +1,1129 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-general-setting.h"
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static void __msg_ui_setting_block_filter_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static char *__msg_ui_setting_block_filter_detail_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_setting_block_filter_detail_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_setting_block_filter_create_detail_view(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_filter_detail_save(void *data);
+static void __msg_ui_setting_block_filter_detail_popup_yes_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_detail_popup_no_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_general_block_filter_detail_trans_finished(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_detail_main(void *data, int index);
+
+static char *__msg_ui_setting_block_filter_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_filter_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_filter_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_filter_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_create_block_filter_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_filter_check_select_all(void *data);
+static void __msg_ui_setting_block_filter_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_sel_all_chk_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_filter_delete_view_update_controlbar(void *data);
+static void __msg_ui_setting_block_filter_delete_view(void *data);
+static void __msg_ui_setting_init_block_message(void *data);
+static void __msg_ui_setting_block_message_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_message_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_message_update_controlbar(void *data);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**********************************
+ ***  Block filter detail view  ***
+ **********************************/
+
+static void __msg_ui_setting_block_filter_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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(data, "elm,state,eraser,hide", "elm");
+               else
+                       elm_object_signal_emit(data, "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) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_filter_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_filter_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_filter_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *entry = (Evas_Object *)data;
+
+       elm_entry_entry_set(entry, "");
+       elm_object_signal_emit(obj, "elm,state,eraser,hide", "elm");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static char *__msg_ui_setting_block_filter_detail_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") || !strcmp(part, "elm.text.1")) {
+               if (index == MSG_UI_SETTING_BLOCK_DETAIL_MENU_TITLE) {
+                       return strdup(dgettext(MESSAGE_PKGNAME, "Word"));
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_setting_block_filter_detail_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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,};
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ch_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_filter_limit_filter_data;
+
+                       Evas_Object *block_filter_ly;
+                       Evas_Object *block_filter_entry;
+
+                       block_filter_ly = elm_layout_add(obj);
+                       elm_layout_theme_set(block_filter_ly, "layout", "editfield", "default");
+                       elm_object_part_text_set(block_filter_ly, "elm.guidetext", dgettext("sys_string", "IDS_COM_BODY_TAP_TO_ADD_TEXT"));
+                       settingData->block_msg.block_filter_detail_entry_ly = block_filter_ly;
+
+                       block_filter_entry = elm_entry_add(block_filter_ly);
+                       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_NORMAL);
+                       settingData->block_msg.block_filter_detail_entry = block_filter_entry;
+
+                       evas_object_smart_callback_add(block_filter_entry, "changed", __msg_ui_setting_block_filter_detail_entry_changed_cb, (void *)settingData);
+                       evas_object_smart_callback_add(block_filter_entry, "focused", __msg_ui_setting_block_filter_detail_entry_focus_cb, (void *)block_filter_ly);
+                       evas_object_smart_callback_add(block_filter_entry, "unfocused", __msg_ui_setting_block_filter_detail_entry_unfocus_cb, (void *)block_filter_ly);
+                       elm_object_signal_callback_add(block_filter_ly, "elm,eraser,clicked", "elm", __msg_ui_setting_block_filter_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);
+
+                       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(block_filter_entry, elm_entry_filter_limit_size, &block_filter_limit_filter_data);
+
+                       /* 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;
+                                       }
+                               }
+                       }
+
+                       if (settingData->block_msg.block_filter_detail_entry != NULL)
+                               elm_object_focus_set(settingData->block_msg.block_filter_detail_entry, EINA_TRUE);
+
+                       return block_filter_ly;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Nothing to do.");
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_setting_block_filter_create_detail_view(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *block_filter_detail_genlist;
+
+       int index = 0;
+
+       block_filter_detail_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->block_msg.block_filter_detail_genlist = block_filter_detail_genlist;
+
+       settingData->block_msg.block_filter_detail_title_itc.item_style = "dialogue/title";
+       settingData->block_msg.block_filter_detail_title_itc.func.text_get = __msg_ui_setting_block_filter_detail_gl_text_get;
+       settingData->block_msg.block_filter_detail_title_itc.func.content_get = NULL;
+       settingData->block_msg.block_filter_detail_title_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_detail_title_itc.func.del = NULL;
+
+       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_filter_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;
+
+       elm_genlist_item_append(block_filter_detail_genlist, &settingData->block_msg.block_filter_detail_title_itc,
+                                                                       (void *)index, NULL, ELM_GENLIST_ITEM_NONE,
+                                                                       NULL, (void *)index);
+       index++;
+
+       elm_genlist_item_append(block_filter_detail_genlist, &settingData->block_msg.block_filter_detail_1icon_itc,
+                                                                       (void *)index, NULL, ELM_GENLIST_ITEM_NONE,
+                                                                       NULL, (void *)index);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return block_filter_detail_genlist;
+}
+
+static void __msg_ui_setting_block_filter_detail_save(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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,};
+
+       msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+       index = settingData->block_msg.block_filter_sel_index;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "No value");
+               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 (strlen(filter_val) > 0) {
+                       if (strcmp(filter_val, buf) == 0) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Value is not changed.");
+                               goto block_filter_detail_exit;
+                       }
+               }
+       }
+
+       memset(filter_val, 0x0, sizeof(filter_val));
+       strncpy(filter_val, buf, MAX_FILTER_VALUE_LEN);
+
+       err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_SUBJECT);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_int_value() (filter_id) is failed : err = %d", err);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_update_filter() is failed : err = %d", err);
+       }
+
+       if (err == MSG_ERR_FILTER_DUPLICATED) {
+               msg_ui_setting_common_show_popup(settingData, dgettext(MESSAGE_PKGNAME, "Word is duplicated."));
+       }
+
+       msg_ui_setting_block_filter_update_view(settingData);
+
+block_filter_detail_exit:
+       if (buf)
+               free(buf);
+
+       if (filter)
+               msg_release_struct(&filter);
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_filter_detail_popup_yes_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+
+       __msg_ui_setting_block_filter_detail_save(settingData);
+}
+
+static void __msg_ui_setting_block_filter_detail_popup_no_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (settingData->popup) {
+               evas_object_del(settingData->popup);
+               settingData->popup = NULL;
+       }
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+}
+
+static void __msg_ui_setting_block_filter_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Evas_Object *btn1;
+       Evas_Object *btn2;
+
+       /* Create a popup. */
+       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, dgettext(MESSAGE_PKGNAME, "If added words are contained to received message from a person in my phonebook, the message will not be blocked. \n Continue?"));
+
+       btn1 = elm_button_add(settingData->popup);
+       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_filter_detail_popup_yes_btn_cb, settingData);
+
+       btn2 = elm_button_add(settingData->popup);
+       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_filter_detail_popup_no_btn_cb, settingData);
+
+       evas_object_show(settingData->popup);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_filter_detail_cancel_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);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+}
+
+static void __msg_ui_setting_general_block_filter_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_filter_detail_trans_finished);
+}
+
+static void __msg_ui_setting_block_filter_detail_main(void *data, int index)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *block_filter_detail_layout;
+       Evas_Object *block_filter_detail_genlist;
+
+       Elm_Object_Item *navi_it;
+
+       char title[DEF_BUF_LEN_S] = {0, };
+
+       Evas_Object *title_left_btn;
+       Evas_Object *title_right_btn;
+
+       settingData->block_msg.block_filter_sel_index = index;
+
+       block_filter_detail_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       block_filter_detail_genlist = __msg_ui_setting_block_filter_create_detail_view(settingData->navi_frame, settingData);
+       elm_object_part_content_set(block_filter_detail_layout, "elm.swallow.content", block_filter_detail_genlist);
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
+               strncpy(title, dgettext(MESSAGE_PKGNAME, "Add words"), sizeof(title)-1);
+       else
+               strncpy(title, dgettext(MESSAGE_PKGNAME, "Edit words"), 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_filter_detail_trans_finished, NULL);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, title, NULL, NULL, block_filter_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_filter_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_filter_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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+/********************************
+ ***  Block filter main view  ***
+ ********************************/
+
+static char *__msg_ui_setting_block_filter_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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,};
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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 (strlen(filter_val) > 0)
+                       return strdup(filter_val);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_filter_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int i = 0;
+       int count = 0;
+       int total_cnt = 0;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       for (i = 0; i < total_cnt; i++) {
+               if (settingData->block_msg.block_filter_chk_state[i] == EINA_TRUE)
+                       count++;
+       }
+
+       if (count == total_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.block_layout, NULL, settingData);
+       } else {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), dgettext("sys_string", "IDS_COM_BODY_PD_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, str, settingData);
+       }
+
+       if (count == 0)
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+       else
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_block_filter_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (elm_genlist_decorate_mode_get(obj)) {
+               if (!strcmp(part, "elm.edit.icon.1")) {
+                       check = elm_check_add(obj);
+                       elm_check_state_pointer_set(check, &settingData->block_msg.block_filter_chk_state[index]);
+
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_block_filter_gl_check_clicked_cb, settingData);
+
+                       return check;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+               }
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_filter_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       int i = 0;
+       int count = 0;
+       int total_cnt = 0;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (elm_genlist_decorate_mode_get(obj)) {
+               settingData->block_msg.block_filter_chk_state[index] = !settingData->block_msg.block_filter_chk_state[index];
+
+               for (i = 0; i < total_cnt; i++) {
+                       if (settingData->block_msg.block_filter_chk_state[i] == EINA_TRUE)
+                               count++;
+               }
+
+               if (count == total_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);
+
+               if (count == 0) {
+                       msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, NULL, settingData);
+               } else {
+                       char str[DEF_BUF_LEN_S] = {0, };
+
+                       snprintf(str, sizeof(str), dgettext("sys_string", "IDS_COM_BODY_PD_SELECTED"), count);
+                       msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, str, settingData);
+               }
+
+               if (count == 0)
+                       elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+               else
+                       elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+
+       } else {
+               __msg_ui_setting_block_filter_detail_main(settingData, index);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_create_block_filter_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *block_filter_genlist;
+
+       int index = 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;
+
+       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_filter_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = __msg_ui_setting_block_filter_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++) {
+               elm_genlist_item_append(block_filter_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                       NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_block_filter_gl_sel, (void *)index);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return block_filter_genlist;
+}
+
+static void __msg_ui_setting_block_filter_check_select_all(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Eina_Bool sel_all_state = EINA_FALSE;
+       int i = 0;
+       int total_cnt = 0;
+
+       Elm_Object_Item *it;
+
+       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++) {
+               settingData->block_msg.block_filter_chk_state[i] = sel_all_state;
+       }
+
+       /* Update all realized items. */
+       it = elm_genlist_first_item_get(settingData->block_msg.block_filter_genlist);
+       for (i = 0; i < total_cnt; i++) {
+               elm_genlist_item_fields_update(it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+               it = elm_genlist_item_next_get(it);
+       }
+
+       if (sel_all_state == EINA_TRUE) {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), dgettext("sys_string", "IDS_COM_BODY_PD_SELECTED"), total_cnt);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, str, settingData);
+       } else {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, NULL, settingData);
+       }
+
+       if (sel_all_state == EINA_TRUE)
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+       else
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+}
+
+static void __msg_ui_setting_block_filter_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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_filter_check_select_all(settingData);
+}
+
+static void __msg_ui_setting_block_filter_sel_all_chk_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sel_all_chk_state = [%d]", settingData->block_msg.block_filter_chk_sel_all_state);
+
+       __msg_ui_setting_block_filter_check_select_all(data);
+}
+
+static void __msg_ui_setting_block_filter_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Cancel block filter deletion. */
+       msg_ui_setting_block_message_exit_edit_mode(settingData);
+
+}
+
+static void __msg_ui_setting_block_filter_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       int i = 0;
+       int total_cnt = 0;
+       int filter_id = 0;
+       msg_error_t err = MSG_SUCCESS;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       /* Delete selected filter item. */
+       for (i = 0; i < total_cnt; i++) {
+               if (settingData->block_msg.block_filter_chk_state[i] == EINA_TRUE) {
+                       err = msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_ID_INT, &filter_id);
+                       msg_delete_filter(settingData->msgHandle, (msg_filter_id_t)filter_id);
+               }
+       }
+
+       msg_ui_setting_block_message_exit_edit_mode(settingData);
+
+}
+
+static void __msg_ui_setting_block_filter_delete_view_update_controlbar(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       Elm_Object_Item *ctrl_btn[MAX_SETTING_CTRLBAR_BUTTON];
+       int i = 0;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       for (i = 0; i < MAX_SETTING_CTRLBAR_BUTTON; i++) {
+               if (settingData->block_msg.ctrl_btn[i] != NULL) {
+                       elm_object_item_del(settingData->block_msg.ctrl_btn[i]);
+                       settingData->block_msg.ctrl_btn[i] = NULL;
+               }
+       }
+
+       ctrl_btn[0] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
+                                               MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                               __msg_ui_setting_block_filter_delete_btn_clicked_cb, \
+                                               (void *)settingData);
+       settingData->block_msg.ctrl_btn[0] = ctrl_btn[0];
+
+       ctrl_btn[1] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
+       settingData->block_msg.ctrl_btn[1] = ctrl_btn[1];
+       elm_object_item_disabled_set(ctrl_btn[1], EINA_TRUE);
+
+       ctrl_btn[2] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
+       settingData->block_msg.ctrl_btn[2] = ctrl_btn[2];
+       elm_object_item_disabled_set(ctrl_btn[2], EINA_TRUE);
+
+       ctrl_btn[3] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
+                                                       MSG_CONTROLBAR_ICON_CANCEL, NULL, \
+                                                       __msg_ui_setting_block_filter_cancel_btn_clicked_cb, \
+                                                       (void *)settingData);
+       settingData->block_msg.ctrl_btn[3] = ctrl_btn[3];
+
+}
+
+static void __msg_ui_setting_block_filter_delete_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *filter_layout_sel_all;
+       Evas_Object *filter_check_sel_all;
+
+       Elm_Object_Item *it = NULL;
+
+       if (elm_genlist_decorate_mode_get(settingData->block_msg.block_filter_genlist)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid state : block_filter_genlist is in edit mode!!");
+               return;
+       }
+
+       /* Disable back_button */
+       Elm_Object_Item *navi_it = elm_naviframe_top_item_get(settingData->navi_frame);
+       elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
+
+       __msg_ui_setting_block_filter_delete_view_update_controlbar(settingData);
+
+       /* Remove dialogue separator. */
+       it = elm_genlist_first_item_get(settingData->block_msg.block_filter_genlist);
+       if (it)
+               elm_object_item_del(it);
+
+       /* Append 'Select All' layout. */
+       filter_layout_sel_all = elm_layout_add(settingData->block_msg.block_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_filter_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_filter_sel_all_chk_changed_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.block_filter_box, filter_layout_sel_all);
+       evas_object_show(filter_layout_sel_all);
+
+       elm_genlist_decorate_mode_set(settingData->block_msg.block_filter_genlist, EINA_TRUE);
+       elm_genlist_select_mode_set(settingData->block_msg.block_filter_genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+       /* Default state of "Delete" button is disable. */
+       elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+}
+
+static void __msg_ui_setting_init_block_message(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int i = 0;
+       int total_cnt = 0;
+       msg_error_t err = MSG_SUCCESS;
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       err = msg_get_filter_list(settingData->msgHandle, &(settingData->block_msg.filterList));
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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;
+
+       for (i = 0; i < total_cnt; i++)
+               settingData->block_msg.block_filter_chk_state[i] = EINA_FALSE;
+}
+
+void msg_ui_setting_block_message_back_btn_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, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       memset(&settingData->block_msg, 0x0, sizeof(MSG_UI_SETTING_FILTER_S));
+}
+
+void msg_ui_setting_block_message_exit_edit_mode(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       if (!elm_genlist_decorate_mode_get(settingData->block_msg.block_filter_genlist)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Block filter list isn't in edit mode!!");
+               return;
+       }
+
+       /* Create back button. */
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
+                       msg_ui_setting_block_message_back_btn_cb, settingData);
+
+       /*************************/
+       /* Update option header. */
+       /*************************/
+       __msg_ui_setting_block_message_update_controlbar(settingData);
+
+       /* Unset edit mode */
+       elm_genlist_decorate_mode_set(settingData->block_msg.block_filter_genlist, EINA_FALSE);
+       elm_genlist_select_mode_set(settingData->block_msg.block_filter_genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
+
+       /* Update view. */
+       msg_ui_setting_block_filter_update_view(settingData);
+
+}
+
+static void __msg_ui_setting_block_message_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to block filter delete view. */
+       __msg_ui_setting_block_filter_delete_view(settingData);
+
+}
+
+static void __msg_ui_setting_block_message_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to detail view. */
+       __msg_ui_setting_block_filter_detail_main(settingData, MSG_UI_SETTING_BLOCKED_DETAIL_CREATE);
+
+}
+
+void msg_ui_setting_destroy_block_message(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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;
+       }
+
+}
+
+void msg_ui_setting_show_block_message(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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.filterList.nCount == 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_filter_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_message_update_controlbar(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       Elm_Object_Item *ctrl_btn[MAX_SETTING_CTRLBAR_BUTTON];
+       int i = 0;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       for (i = 0; i < MAX_SETTING_CTRLBAR_BUTTON; i++) {
+               if (settingData->block_msg.ctrl_btn[i] != NULL) {
+                       elm_object_item_del(settingData->block_msg.ctrl_btn[i]);
+                       settingData->block_msg.ctrl_btn[i] = NULL;
+               }
+       }
+
+       ctrl_btn[0] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
+                                               MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                               __msg_ui_setting_block_message_delete_btn_clicked_cb, \
+                                               (void *)settingData);
+       settingData->block_msg.ctrl_btn[0] = ctrl_btn[0];
+
+       /* Add NULL button */
+       ctrl_btn[1] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
+       settingData->block_msg.ctrl_btn[1] = ctrl_btn[1];
+       elm_object_item_disabled_set(ctrl_btn[1], EINA_TRUE);
+
+       ctrl_btn[2] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
+                                                       MSG_CONTROLBAR_ICON_CREATE, NULL, \
+                                                       __msg_ui_setting_block_message_add_btn_clicked_cb, \
+                                                       (void *)settingData);
+       settingData->block_msg.ctrl_btn[2] = ctrl_btn[2];
+
+       /* Add NULL button */
+       ctrl_btn[3] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
+       settingData->block_msg.ctrl_btn[3] = ctrl_btn[3];
+       elm_object_item_disabled_set(ctrl_btn[3], EINA_TRUE);
+
+}
+
+void msg_ui_setting_block_filter_update_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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_message(settingData);
+
+       __msg_ui_setting_init_block_message(settingData);
+
+       msg_ui_setting_show_block_message(settingData);
+
+       __msg_ui_setting_block_message_update_controlbar(settingData);
+
+       if (settingData->block_msg.filterList.nCount == 0) {
+               /* If no item exist in block filter, delete button should be disabled. */
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+       } else {
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+       }
+}
+
+void msg_ui_setting_general_block_message_main(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, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *block_layout;
+       Elm_Object_Item *navi_it;
+
+       bool filter_set = EINA_FALSE;
+
+       Evas_Object *ctrl_bar;
+
+       /* Init block message data. */
+       __msg_ui_setting_init_block_message(settingData);
+
+       block_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+       settingData->block_msg.block_layout = block_layout;
+
+       /* 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) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Block is enabled !!");
+               }
+               else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_filter_operation() is failed !!");
+               }
+       }
+
+       msg_ui_setting_show_block_message(settingData);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "Blocked word"), NULL, NULL, block_layout, NULL);
+
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
+                       msg_ui_setting_block_message_back_btn_cb, settingData);
+
+       ctrl_bar = msg_ui_setting_common_create_controlbar(settingData->navi_frame);
+       settingData->block_msg.block_ctrl_bar = ctrl_bar;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, ctrl_bar == NULL, "ctrl_bar is NULL !!");
+
+       __msg_ui_setting_block_message_update_controlbar(settingData);
+
+       elm_object_item_part_content_set(navi_it, "controlbar", ctrl_bar);
+
+       /* If no item exist in block filter, delete button should be disabled. */
+       if (settingData->block_msg.filterList.nCount == 0)
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+}
diff --git a/setting/src/general/msg-ui-setting-general-setting.c b/setting/src/general/msg-ui-setting-general-setting.c
new file mode 100755 (executable)
index 0000000..6828b44
--- /dev/null
@@ -0,0 +1,243 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+#include "msg-ui-setting-general-setting.h"
+
+
+static struct _msg_ui_setting_mixed_list_item general_menu_its[] = {
+       { 1, "Numbers to reject", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "Blocked word", msg_ui_setting_general_block_message_main, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static char *__msg_ui_setting_general_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_general_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void __msg_ui_setting_general_destroy_cb(ui_gadget_h ug, void *priv);
+static void __msg_ui_setting_general_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_general_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_general_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+static char *
+__msg_ui_setting_general_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") || !strcmp(part, "elm.text.1")) {
+               if (general_menu_its[index].name) {
+                       if (strstr(general_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", general_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, general_menu_its[index].name));
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_general_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);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !priv);
+
+       Evas_Object *base;
+
+       base = ug_get_layout(ug);
+
+       if (!base)
+               return;
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(ug_get_window(), base);
+               evas_object_show(base);
+               break;
+       case UG_MODE_FRAMEVIEW:
+       default:
+               break;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void
+__msg_ui_setting_general_destroy_cb(ui_gadget_h ug, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !ug);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !priv);
+
+       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;
+       }
+
+       evas_object_show(settingData->layout_main);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void
+__msg_ui_setting_general_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       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);
+
+       if (index == MSG_UI_SETTING_GENERAL_MENU_NUMBERS_TO_REJECT) {
+               settingData->cbs.layout_cb = __msg_ui_setting_general_layout_cb;
+               settingData->cbs.result_cb = NULL;
+               settingData->cbs.destroy_cb = __msg_ui_setting_general_destroy_cb;
+               settingData->cbs.priv = (void *)settingData;
+
+               if (settingData->loaded_ug != NULL) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "other ug already exist");
+                       return;
+               }
+
+               /* Call auto reject list UG. */
+               service_h svc_handle;
+               service_error_e scv_error = service_create(&svc_handle);
+
+               if (scv_error == SERVICE_ERROR_NONE) {
+                       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_AUTO_REJECT_LIST);
+                       settingData->loaded_ug = ug_create(settingData->ug, CALL_SETTING_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &settingData->cbs);
+                       service_destroy(svc_handle);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed!!");
+                       return;
+               }
+       } else {
+               if (general_menu_its[index].func != NULL)
+                       general_menu_its[index].func(settingData, obj, event_info);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *
+__msg_ui_setting_general_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *general_genlist;
+       int index = 0;
+
+       general_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->list.general_setting.general_genlist = general_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(general_genlist, settingData);
+
+       settingData->list.general_setting.general_itc.item_style = "dialogue/1text";
+       settingData->list.general_setting.general_itc.func.text_get = __msg_ui_setting_general_gl_text_get;
+       settingData->list.general_setting.general_itc.func.content_get = NULL;
+       settingData->list.general_setting.general_itc.func.state_get = NULL;
+       settingData->list.general_setting.general_itc.func.del = NULL;
+
+       for (index = 0; general_menu_its[index].name; index++) {
+               elm_genlist_item_append(general_genlist, &settingData->list.general_setting.general_itc, (void *)index,
+                       NULL, general_menu_its[index].type, __msg_ui_setting_general_gl_sel, (void *)index);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return general_genlist;
+}
+
+static void __msg_ui_setting_general_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_setting_general_create_view(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, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *general_layout;
+       Evas_Object *general_genlist;
+       Evas_Object *l_button;
+       Elm_Object_Item *navi_it;
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_GENERAL;
+       msg_ui_setting_msg_get_config(settingData);
+
+       /* Initialize global variable. */
+       memset(&settingData->list.general_setting, 0x0, sizeof(settingData->list.general_setting));
+
+       if (obj == NULL) {
+               /* Change background color from transparent to group_list. */
+               elm_object_style_set(settingData->bg, "group_list");
+       }
+
+       general_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       general_genlist = __msg_ui_setting_general_create_menu(settingData->navi_frame, settingData);
+       elm_object_part_content_set(general_layout, "elm.swallow.content", general_genlist);
+
+       /* Create Left Button */
+       l_button = elm_button_add(settingData->navi_frame);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), l_button, NULL, general_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_general_back_btn_cb, (void *)settingData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+}
index b54db78..4f279b2 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #include "msg-ui-setting-main.h"
 
 
@@ -26,6 +27,33 @@ void msg_ui_setting_text_msg_cb(void *data, Evas_Object *obj, void *event_info)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
+void msg_ui_setting_mm_msg_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       msg_ui_setting_mm_create_view(data, obj, event_info);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_setting_spam_msg_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       msg_ui_setting_general_create_view(data, obj, event_info);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_setting_font_size_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       msg_ui_setting_font_size_create_view(data, obj, event_info);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
 void msg_ui_setting_quit_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
index 7bd217d..4d6bc53 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #include "msg-ui-setting-main.h"
 #include "msg-ui-setting-common-util.h"
 
@@ -201,6 +202,7 @@ Evas_Object *msg_ui_setting_common_create_genlist(Evas_Object *parent)
        Evas_Object *genlist;
 
        genlist = elm_genlist_add(parent);
+       elm_object_style_set(genlist, "dialogue");
 
        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);
diff --git a/setting/src/main/msg-ui-setting-font-size.c b/setting/src/main/msg-ui-setting-font-size.c
new file mode 100755 (executable)
index 0000000..c288c79
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+
+
+static struct _msg_ui_setting_mixed_list_item font_size_menu_its[] = {
+       { 1, "Follow system font size", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "Huge", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_LARGE", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_SMALL", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "IDS_MSGF_BODY_TINY", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static char *__msg_ui_setting_font_size_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_save_font_size(void *data);
+static void __msg_ui_setting_font_size_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_font_size_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_font_size_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_font_size_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+static char *
+__msg_ui_setting_font_size_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") || !strcmp(part, "elm.text.1")) {
+               char tmp_str[DEF_BUF_LEN_S] = {0, };
+               char font_size_string[DEF_BUF_LEN_S] = {0, };
+               int font_size = 0;
+
+               if (font_size_menu_its[index].name) {
+                       if (strstr(font_size_menu_its[index].name, "IDS_COM") != NULL)
+                               strncpy(tmp_str, dgettext("sys_string", font_size_menu_its[index].name), sizeof(tmp_str)-1);
+                       else
+                               strncpy(tmp_str, dgettext(MESSAGE_PKGNAME, font_size_menu_its[index].name), sizeof(tmp_str)-1);
+
+                       switch(index) {
+                       case MSG_APP_FONT_SIZE_INDEX_HUGE :
+                               font_size = MSG_APP_FONT_SIZE_HUGE;
+                               break;
+                       case MSG_APP_FONT_SIZE_INDEX_LARGE :
+                               font_size = MSG_APP_FONT_SIZE_LARGE;
+                               break;
+                       case MSG_APP_FONT_SIZE_INDEX_NORMAL :
+                               font_size = MSG_APP_FONT_SIZE_NORMAL;
+                               break;
+                       case MSG_APP_FONT_SIZE_INDEX_SMALL :
+                               font_size = MSG_APP_FONT_SIZE_SMALL;
+                               break;
+                       case MSG_APP_FONT_SIZE_INDEX_TINY :
+                               font_size = MSG_APP_FONT_SIZE_TINY;
+                               break;
+                       case MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT :
+                       default :
+                               break;
+                       }
+
+                       if (font_size > 0) {
+                               snprintf(font_size_string, sizeof(font_size_string), "<font_size=%d>%s</font_size>", font_size, tmp_str);
+                               return strdup(font_size_string);
+                       } else {
+                               return strdup(tmp_str);
+                       }
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_save_font_size(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int selection;
+       MSG_BOOL ret = FALSE;
+
+       selection = elm_radio_value_get(settingData->font_size_radio_group);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected value is %d", selection);
+
+       /* Save selected value. */
+       ret = msg_common_set_font_size(selection);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ret is %d", (int)ret);
+}
+
+static void
+__msg_ui_setting_font_size_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_save_font_size(settingData);
+}
+
+static Evas_Object *
+__msg_ui_setting_font_size_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       Evas_Object *radio;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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_font_size_radio_cb, (void *)settingData);
+
+               if (index == 0)
+                       settingData->font_size_radio_group = radio;
+               else
+                       elm_radio_group_add(radio, settingData->font_size_radio_group);
+
+               /* Set font size current value */
+               if (index == settingData->font_size_index)
+                       elm_radio_value_set(settingData->font_size_radio_group, settingData->font_size_index);
+
+               return radio;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_font_size_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       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->font_size_radio_group, index);
+
+       __msg_ui_setting_save_font_size((void *)settingData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *
+__msg_ui_setting_font_size_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *font_size_genlist;
+       int index = 0;
+
+       font_size_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->font_size_genlist = font_size_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(font_size_genlist, settingData);
+
+       // elm_object_theme_set(font_size_genlist, settingData->th);
+
+       settingData->font_size_itc.item_style = "dialogue/1text.1icon.6";
+       settingData->font_size_itc.func.text_get = __msg_ui_setting_font_size_gl_text_get;
+       settingData->font_size_itc.func.content_get = __msg_ui_setting_font_size_gl_content_get;
+       settingData->font_size_itc.func.state_get = NULL;
+       settingData->font_size_itc.func.del = NULL;
+
+       for (index = 0; font_size_menu_its[index].name; index++) {
+               elm_genlist_item_append(font_size_genlist, &settingData->font_size_itc, (void *)index,
+                       NULL, font_size_menu_its[index].type, __msg_ui_setting_font_size_gl_sel, (void *)index);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return font_size_genlist;
+}
+
+void msg_ui_setting_font_size_create_view(void *data, Evas_Object *obj, void *event_info)
+{
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *font_size_layout;
+       Evas_Object *font_size_genlist;
+       Elm_Object_Item *navi_it;
+
+       MSG_BOOL ret = FALSE;
+       int font_size = 0;
+
+       /* Initialize global variable. */
+       ret = msg_common_get_font_size(&settingData->font_size_index, &font_size);
+       if (ret == FALSE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ret is FALSE");
+               settingData->font_size_index = MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT;
+       }
+
+       font_size_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       font_size_genlist = __msg_ui_setting_font_size_create_menu(settingData->navi_frame, settingData);
+       elm_object_part_content_set(font_size_layout, "elm.swallow.content", font_size_genlist);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE"), NULL, NULL, font_size_layout, NULL);
+
+}
index 4e40389..b768614 100755 (executable)
@@ -30,15 +30,14 @@ static int __msg_ui_setting_check_msg_server_ready(void);
 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(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv);
-static void __msg_ui_setting_on_start(struct ui_gadget *ug, bundle *data, void *priv);
-static void __msg_ui_setting_on_pause(struct ui_gadget *ug, bundle *data, void *priv);
-static void __msg_ui_setting_on_resume(struct ui_gadget *ug, bundle *data, void *priv);
-static void __msg_ui_setting_on_destroy(struct ui_gadget *ug, bundle *data, void *priv);
-static void __msg_ui_setting_on_message(struct ui_gadget *ug, bundle *msg, bundle *data, void *priv);
-static void __msg_ui_setting_on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, void *priv);
-static void __msg_ui_setting_on_key_event(struct ui_gadget *ug, enum ug_key_event event, bundle *data, void *priv);
-
+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)
 {
@@ -134,7 +133,7 @@ static Evas_Object *__msg_ui_setting_create_frameview(Evas_Object *parent, void
        return base;
 }
 
-static void *__msg_ui_setting_on_create(struct ui_gadget *ug, enum ug_mode mode, bundle *data, void *priv)
+static void *__msg_ui_setting_on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -167,18 +166,14 @@ static void *__msg_ui_setting_on_create(struct ui_gadget *ug, enum ug_mode mode,
        return ugd->layout_main;
 }
 
-static void __msg_ui_setting_on_start(struct ui_gadget *ug, bundle *data, void *priv)
+static void __msg_ui_setting_on_start(ui_gadget_h ug, service_h data, void *priv)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        PMSG_SETTING_DATA ugd = (PMSG_SETTING_DATA)priv;
-       MSG_ERROR_T     err = MSG_SUCCESS;
-       MSG_HANDLE_T    msgHandle;
-
-       if (!__msg_ui_setting_check_msg_server_ready()) {
-               __msg_ui_setting_gadget_popup(ugd, dgettext(MESSAGE_PKGNAME, "Message server is not ready"));
-               return;
-       }
+       msg_error_t     err = MSG_SUCCESS;
+       msg_handle_t    msgHandle;
+       char *svc_value = NULL;
 
        /*Set Message Handler*/
        err = msg_open_msg_handle(&msgHandle);
@@ -190,35 +185,36 @@ static void __msg_ui_setting_on_start(struct ui_gadget *ug, bundle *data, void *
 
        ugd->msgHandle = msgHandle;
 
-       ugd->locale = msg_common_get_default_locale();
-
-       if (appcore_get_timeformat((enum appcore_time_format *)&ugd->time_format) < 0) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "appcore_get_timeformat() is failed!!");
-       }
+       if (data != NULL)
+               service_get_extra_data(data, MSG_BUNDLE_KEY_TYPE, &svc_value);
 
-       if (ugd->layout_main)
-               msg_ui_setting_launch(ugd);
-       else
+       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 {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "layout_main is NULL !!");
+       }
 }
 
-static void __msg_ui_setting_on_pause(struct ui_gadget *ug, bundle *data, void *priv)
+static void __msg_ui_setting_on_pause(ui_gadget_h ug, service_h data, void *priv)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 }
 
-static void __msg_ui_setting_on_resume(struct ui_gadget *ug, bundle *data, void *priv)
+static void __msg_ui_setting_on_resume(ui_gadget_h ug, service_h data, void *priv)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 }
 
-static void __msg_ui_setting_on_destroy(struct ui_gadget *ug, bundle *data, void *priv)
+static void __msg_ui_setting_on_destroy(ui_gadget_h ug, service_h data, void *priv)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        PMSG_SETTING_DATA ugd;
 
-       MSG_ERROR_T err = MSG_SUCCESS;
+       msg_error_t err = MSG_SUCCESS;
 
        if (!ug || !priv)
                return;
@@ -242,12 +238,12 @@ static void __msg_ui_setting_on_destroy(struct ui_gadget *ug, bundle *data, void
 
 }
 
-static void __msg_ui_setting_on_message(struct ui_gadget *ug, bundle *msg, bundle *data, void *priv)
+static void __msg_ui_setting_on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 }
 
-static void __msg_ui_setting_on_event(struct ui_gadget *ug, enum ug_event event, bundle *data, void *priv)
+static void __msg_ui_setting_on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -265,22 +261,22 @@ static void __msg_ui_setting_on_event(struct ui_gadget *ug, enum ug_event event,
                        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:
-
-                       ugd->locale = msg_common_get_default_locale();
-
-                       if (appcore_get_timeformat((enum appcore_time_format *)&ugd->time_format) < 0) {
-                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "appcore_get_timeformat() is failed!!");
-                               ugd->time_format = APPCORE_TIME_FORMAT_UNKNOWN;
-                       }
-
                        break;
                default:
                        break;
        }
 }
 
-static void __msg_ui_setting_on_key_event(struct ui_gadget *ug, enum ug_key_event event, bundle *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)
 {
        D_ENTER;
        D_LEAVE;
@@ -342,7 +338,7 @@ UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
 
 }
 
-UG_MODULE_API int setting_plugin_reset(bundle *data, void *priv)
+UG_MODULE_API int setting_plugin_reset(service_h data, void *priv)
 {
        /* To Do : Reset message settings. */
 
index 1d99403..78b9f25 100755 (executable)
  * 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_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE", msg_ui_setting_font_size_cb },
        /* 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 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 Evas_Object *__msg_ui_setting_create_main_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
 
@@ -51,6 +60,74 @@ __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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Eina_Bool set_val = EINA_FALSE;
+
+       set_val = elm_check_state_get(settingData->cb_activate_check);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_CBMSG;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_set_bool_value(settingData->msg_setting.setting_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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_main_save_cb_activation(settingData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *
+__msg_ui_setting_main_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool bReceive = false;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               check = elm_check_add(obj);
+               settingData->cb_activate_check = check;
+
+               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_CBMSG;
+               msg_ui_setting_msg_get_config(settingData);
+               msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_CB_RECEIVE_BOOL, &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);
+
+               msg_release_struct(&(settingData->msg_setting.setting_opt));
+               return check;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
 __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -63,8 +140,20 @@ __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info)
 
        elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
 
-       if (main_menu_its[index].func != NULL)
-               main_menu_its[index].func(settingData, obj, event_info);
+       if (index == MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES) {
+               Eina_Bool set_val = EINA_FALSE;
+
+               set_val = elm_check_state_get(settingData->cb_activate_check);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
+
+               elm_check_state_set(settingData->cb_activate_check, !set_val);
+
+               __msg_ui_setting_main_save_cb_activation((void *)settingData);
+
+       } else {
+               if (main_menu_its[index].func != NULL)
+                       main_menu_its[index].func(settingData, obj, event_info);
+       }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
@@ -88,9 +177,29 @@ __msg_ui_setting_create_main_menu(Evas_Object *parent, PMSG_SETTING_DATA setting
        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;
+
        for (index = 0; main_menu_its[index].name; index++) {
-               elm_genlist_item_append(main_genlist, &settingData->main_itc, (void *)index, NULL,
-                                       ELM_GENLIST_ITEM_NONE, __msg_ui_setting_main_gl_sel, (void *)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) {
+                       elm_genlist_item_append(main_genlist, &settingData->sub_title_itc, (void *)index, NULL,
+                                               ELM_GENLIST_ITEM_NONE, NULL, (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);
+               }
        }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
@@ -134,6 +243,10 @@ void msg_ui_setting_create_main_view(PMSG_SETTING_DATA settingData)
 
        Evas_Object *l_button;
 
+       /* 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");
 
@@ -187,3 +300,18 @@ Evas_Object *msg_ui_setting_create_layout_main(Evas_Object *parent)
 
        return layout;
 }
+
+void msg_ui_setting_launch_spam_setting(PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       /* Set global data. */
+       g_settingData = settingData;
+
+       /* Navigation Frame */
+       settingData->navi_frame = msg_ui_setting_create_navigation_layout(settingData->layout_main);
+
+       msg_ui_setting_general_create_view(settingData, NULL, NULL);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
index 73a8823..5b1e0c1 100755 (executable)
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
+
 #include "msg-ui-setting-msg-service-wrapper.h"
 
 
@@ -21,21 +22,33 @@ int msg_ui_setting_msg_set_config(PMSG_SETTING_DATA settingData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       MSG_ERROR_T err = MSG_SUCCESS;
-
-       MSG_SETTING_S setting_option;
+       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:
-               setting_option = settingData->msg_setting.sms_send_opt;
-               setting_option.type = MSG_SMS_SENDOPT;
+               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.setting_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.setting_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_CBMSG:
+               err = msg_set_cb_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
                break;
        default:
                MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[FAIL] TYPE err %d \n", settingData->msg_setting.type);
                return MSG_UI_RET_ERR;
        }
 
-       err = msg_set_config(settingData->msgHandle, &setting_option);
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
 
        MSG_UI_RETVM_IF(MSG_UI_LEVEL_ASSERT, err != MSG_SUCCESS, -1, "[FAIL] msg_set_config of MSG FW : err %d \n", err);
 
@@ -48,23 +61,38 @@ int msg_ui_setting_msg_get_config(PMSG_SETTING_DATA settingData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       MSG_ERROR_T err = MSG_SUCCESS;
-
-       MSG_SETTING_S *setting_option;
+       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:
-               memset(&(settingData->msg_setting.sms_send_opt), 0x00, sizeof(MSG_OPTION_TYPE_T)+sizeof(MSG_SMS_SENDOPT_S));
-               settingData->msg_setting.sms_send_opt.type = MSG_SMS_SENDOPT;
-               setting_option = &settingData->msg_setting.sms_send_opt;
+               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.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_SMSC_OPT);
+               err = msg_get_smsc_opt(settingData->msgHandle, settingData->msg_setting.setting_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.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_MMS_RECV_OPT);
+               err = msg_get_mms_recv_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               break;
+       case MSG_UI_SETTING_TYPE_CBMSG:
+               settingData->msg_setting.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_CB_OPT);
+               err = msg_get_cb_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
                break;
        default:
                MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT, "[FAIL] TYPE err %d \n", settingData->msg_setting.type);
                return MSG_UI_RET_ERR;
        }
 
-       err = msg_get_config(settingData->msgHandle, setting_option);
-
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 
        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..40e1707
--- /dev/null
@@ -0,0 +1,734 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "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_main, 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_main, 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 Evas_Object *__msg_ui_setting_mm_read_rep_create_view(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 Evas_Object *__msg_ui_setting_mm_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**************************
+ ***  Create mode menu  ***
+ **************************/
+
+static void __msg_ui_setting_mm_save_creation_mode(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected value is %d", selection);
+
+       /* Save selected value. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+       msg_ui_setting_msg_get_config(settingData);
+       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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_creation_mode_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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);
+
+               if (index == 0)
+                       settingData->list.mm_msg.creation_radio_group = radio;
+               else
+                       elm_radio_group_add(radio, settingData->list.mm_msg.creation_radio_group);
+
+               return radio;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_creation_mode_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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.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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return;
+}
+
+/**************************
+ ***  Read Report menu  ***
+ **************************/
+
+static char *__msg_ui_setting_mm_read_rep_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") || !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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_save_read_rep_request(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
+
+       /* Set requesting read report in sending option. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+       msg_ui_setting_msg_get_config(settingData);
+       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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
+
+       /* Set sending read report in receiving option. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_set_bool_value(settingData->msg_setting.setting_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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid obj = 0x%x", obj);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_mm_read_rep_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool bReadValue = false;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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;
+
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+                       msg_ui_setting_msg_get_config(settingData);
+                       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);
+
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+                       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;
+
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+                       msg_ui_setting_msg_get_config(settingData);
+                       msg_get_bool_value(settingData->msg_setting.setting_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);
+
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+                       return check;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_read_rep_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       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);
+
+       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);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_mm_read_rep_create_view(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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);
+       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 {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return mm_read_rep_genlist;
+}
+
+void msg_ui_setting_mm_read_rep_main(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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;
+       Elm_Object_Item *navi_it;
+
+       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);
+
+       read_rep_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       mm_read_rep_genlist = __msg_ui_setting_mm_read_rep_create_view(settingData->navi_frame, settingData);
+       elm_object_part_content_set(read_rep_layout, "elm.swallow.content", mm_read_rep_genlist);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_READ_REPORT"), NULL, NULL, read_rep_layout, NULL);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+/*********************************
+ ***  Multimedia message menu  ***
+ *********************************/
+
+static char *__msg_ui_setting_mm_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int creationMode = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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")) {
+               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+               msg_ui_setting_msg_get_config(settingData);
+               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
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid mode = %d", creationMode);
+               msg_release_struct(&(settingData->msg_setting.setting_opt));
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_save_delivery_rep(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
+
+       /* Set requesting delivery report in sending option. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+       msg_ui_setting_msg_get_config(settingData);
+       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_ui_setting_msg_get_config(settingData);
+       msg_set_bool_value(settingData->msg_setting.setting_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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid obj = 0x%x", obj);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_mm_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool bReadReply = false;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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. */
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+                       msg_ui_setting_msg_get_config(settingData);
+                       msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &bReadReply);
+                       if (bReadReply == 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);
+
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+                       return check;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_mm_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       Eina_Bool expand_state = EINA_FALSE;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       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);
+
+       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);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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);
+
+                       /* If expandable genlist item is expanded, it should be contracted.
+                        * Because, wrong radio button is selected when it is back from other sub menu.
+                        */
+                       expand_state = elm_genlist_item_expanded_get(settingData->list.mm_msg.creation_mode_item);
+                       if (expand_state == EINA_TRUE)
+                               elm_genlist_item_expanded_set(settingData->list.mm_msg.creation_mode_item, EINA_FALSE);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_mm_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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;
+
+               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 */
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+                       msg_ui_setting_msg_get_config(settingData);
+                       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);
+
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+               }
+       }
+}
+
+static void __msg_ui_setting_mm_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Elm_Object_Item *item = event_info;
+       elm_genlist_item_subitems_clear(item);
+}
+
+static Evas_Object *__msg_ui_setting_mm_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *mm_genlist;
+       Elm_Object_Item *it = NULL;
+
+       int index = 0;
+
+       mm_genlist = msg_ui_setting_common_create_genlist(parent);
+       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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return mm_genlist;
+}
+
+void msg_ui_setting_mm_create_view(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);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *mm_layout;
+       Evas_Object *mm_genlist;
+       Elm_Object_Item *navi_it;
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
+       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_menu(settingData->navi_frame, settingData);
+       elm_object_part_content_set(mm_layout, "elm.swallow.content", mm_genlist);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"), NULL, NULL, mm_layout, NULL);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
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..379cc69
--- /dev/null
@@ -0,0 +1,638 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "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_view(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**********************
+ ***  Home network  ***
+ **********************/
+
+static void
+__msg_ui_setting_mm_recv_save_home_network(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid selection = %d", selection);
+               set_val = MSG_HOME_AUTO_DOWNLOAD;
+               break;
+       }
+
+       /* Save selected value. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_set_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, set_val);
+       err = msg_ui_setting_msg_set_config(settingData);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       int retrieveType = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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);
+
+               if (index == 0)
+                       settingData->list.mm_msg.mm_recv_home_network_radio_group = radio;
+               else
+                       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) {
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+                       msg_ui_setting_msg_get_config(settingData);
+                       msg_get_int_value(settingData->msg_setting.setting_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);
+
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+               }
+
+               return radio;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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.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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return;
+}
+
+
+/*************************
+ ***  Foreign network  ***
+ *************************/
+
+static void
+__msg_ui_setting_mm_recv_save_foreign_network(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected value is %d", selection);
+
+       /* Save selected value. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_set_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, selection);
+       err = msg_ui_setting_msg_set_config(settingData);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       int retrieveType = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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);
+
+               if (index == 0)
+                       settingData->list.mm_msg.mm_recv_foreign_network_radio_group = radio;
+               else
+                       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) {
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+                       msg_ui_setting_msg_get_config(settingData);
+                       msg_get_int_value(settingData->msg_setting.setting_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);
+
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+               }
+
+               return radio;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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.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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return;
+}
+
+
+/************************************
+ ***  Receiving option main menu  ***
+ ************************************/
+
+static char *
+__msg_ui_setting_mm_recv_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int set_val = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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) {
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+                       msg_ui_setting_msg_get_config(settingData);
+                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &set_val);
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+                       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:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid value = %d", set_val);
+                               break;
+                       }
+               } else if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_FOREIGN) {
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+                       msg_ui_setting_msg_get_config(settingData);
+                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &set_val);
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+                       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:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid value = %d", set_val);
+                               break;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_mm_recv_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       Eina_Bool expand_state = EINA_FALSE;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       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);
+
+       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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void
+__msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       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;
+
+                       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) {
+                               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+                               msg_ui_setting_msg_get_config(settingData);
+                               msg_get_int_value(settingData->msg_setting.setting_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);
+
+                               msg_release_struct(&(settingData->msg_setting.setting_opt));
+                       }
+               } 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;
+
+                       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) {
+                               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+                               msg_ui_setting_msg_get_config(settingData);
+                               msg_get_int_value(settingData->msg_setting.setting_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);
+
+                               msg_release_struct(&(settingData->msg_setting.setting_opt));
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid it = 0x%x", it);
+               }
+       }
+}
+
+static void
+__msg_ui_setting_mm_recv_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Elm_Object_Item *item = event_info;
+       elm_genlist_item_subitems_clear(item);
+}
+
+static Evas_Object *
+__msg_ui_setting_mm_recv_create_view(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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 {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return mm_recv_genlist;
+}
+
+void msg_ui_setting_mm_recv_opt_main(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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;
+       Elm_Object_Item *navi_it;
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+       msg_ui_setting_msg_get_config(settingData);
+
+       recv_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       mm_recv_genlist = __msg_ui_setting_mm_recv_create_view(settingData->navi_frame, settingData);
+       elm_object_part_content_set(recv_layout, "elm.swallow.content", mm_recv_genlist);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVINGOPTIONS"), NULL, NULL, recv_layout, NULL);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
index 4d48d0b..44c9eef 100755 (executable)
  * 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_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 }
 };
@@ -50,6 +52,9 @@ __msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+
+       msg_error_t err = MSG_SUCCESS;
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
 
@@ -60,6 +65,22 @@ __msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part
                        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;
+                       msg_ui_setting_msg_get_config(settingData);
+                       err = msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMSC_SELECTED_ID_INT, &cur_index);
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "__msg_ui_setting_text_gl_text_get is %d", err);
+
+                       snprintf(smsc_name, sizeof(smsc_name), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD"), cur_index+1);
+                       return strdup(smsc_name);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %s", index);
+               }
        } else {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
        }
@@ -79,8 +100,8 @@ __msg_ui_setting_text_save_req_delivery_report(void *data)
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
 
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
-       settingData->msg_setting.sms_send_opt.option.smsSendOpt.bDeliveryReport = (unsigned char)set_val;
-
+       msg_ui_setting_msg_get_config(settingData);
+       msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_DELIVERY_REPORT_BOOL, set_val);
        msg_ui_setting_msg_set_config(settingData);
 }
 
@@ -107,6 +128,7 @@ __msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *p
        int index = (int)data;
        Evas_Object *check;
        PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool bReport = false;
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
 
@@ -115,7 +137,11 @@ __msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *p
                        check = elm_check_add(obj);
                        settingData->list.text_msg.req_delivery_rep_check = check;
 
-                       if (settingData->msg_setting.sms_send_opt.option.smsSendOpt.bDeliveryReport == EINA_TRUE)
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
+                       msg_ui_setting_msg_get_config(settingData);
+                       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);
@@ -158,6 +184,9 @@ __msg_ui_setting_text_gl_sel(void *data, Evas_Object *obj, void *event_info)
                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_SMSC) {
+               if (text_menu_its[index].func != NULL)
+                       text_menu_its[index].func(settingData, obj, event_info);
        } else {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid data : index = %d", index);
        }
@@ -171,6 +200,7 @@ __msg_ui_setting_text_create_menu(Evas_Object *parent, PMSG_SETTING_DATA setting
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        Evas_Object *text_genlist;
+       Elm_Object_Item *it = NULL;
 
        int index = 0;
 
@@ -179,6 +209,12 @@ __msg_ui_setting_text_create_menu(Evas_Object *parent, PMSG_SETTING_DATA setting
 
        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_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;
@@ -186,8 +222,15 @@ __msg_ui_setting_text_create_menu(Evas_Object *parent, PMSG_SETTING_DATA setting
        settingData->list.text_msg.text_1line_1icon_itc.func.del = NULL;
 
        for (index = 0; text_menu_its[index].name; index++) {
-               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);
+               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 {
+                       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);
+               }
        }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
@@ -203,9 +246,6 @@ void msg_ui_setting_text_create_view(void *data, Evas_Object *obj, void *event_i
        Evas_Object *text_genlist;
        Elm_Object_Item *navi_it;
 
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
-       msg_ui_setting_msg_get_config(settingData);
-
        /* Initialize global variable. */
        memset(&settingData->list.text_msg, 0x0, sizeof(settingData->list.text_msg));
 
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..29584b8
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-text-message.h"
+
+
+static struct _msg_ui_setting_mixed_list_item smsc_menu_its[] = {
+       { 1, "IDS_MSGF_BODY_PUSHADDRESS", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "Editfield", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static char *__msg_ui_setting_smsc_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_setting_smsc_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_setting_text_create_smsc_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+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);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/******************
+ ***  SMSC  menu ***
+ *******************/
+
+static void
+__msg_ui_setting_smsc_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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");
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void
+__msg_ui_setting_smsc_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(layout, "elm,state,eraser,show", "elm");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void
+__msg_ui_setting_smsc_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void
+__msg_ui_setting_smsc_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *entry = (Evas_Object *)data;
+
+       elm_entry_entry_set(entry, "");
+       elm_object_signal_emit(obj, "elm,state,eraser,hide", "elm");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static char *
+__msg_ui_setting_smsc_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") || !strcmp(part, "elm.text.1")) {
+               if (smsc_menu_its[index].name) {
+                       if (strstr(smsc_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", smsc_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, smsc_menu_its[index].name));
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *
+__msg_ui_setting_smsc_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+
+       int center_index = settingData->list.text_msg.center_index;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               if (index == MSG_UI_SETTING_SMSC_MENU_ADDRESS) {
+                       Evas_Object *smsc_addr_ly;
+                       Evas_Object *smsc_addr_entry;
+                       char *buf = NULL;
+                       char address[SMSC_NAME_MAX+1] = {0,};
+
+                       static Elm_Entry_Filter_Limit_Size smsc_addr_limit_filter_data;
+                       static Elm_Entry_Filter_Accept_Set smsc_addr_accept_filter_data;
+
+                       smsc_addr_ly = elm_layout_add(obj);
+                       elm_layout_theme_set(smsc_addr_ly, "layout", "editfield", "default");
+
+                       smsc_addr_entry = elm_entry_add(smsc_addr_ly);
+                       elm_entry_single_line_set(smsc_addr_entry, EINA_TRUE);
+                       elm_entry_autocapital_type_set(smsc_addr_entry, ELM_AUTOCAPITAL_TYPE_NONE);
+                       elm_entry_input_panel_layout_set(smsc_addr_entry, ELM_INPUT_PANEL_LAYOUT_PHONENUMBER);
+                       settingData->list.text_msg.smsc_addr_entry = smsc_addr_entry;
+
+                       evas_object_smart_callback_add(smsc_addr_entry, "changed", __msg_ui_setting_smsc_entry_changed_cb, (void *)smsc_addr_ly);
+                       evas_object_smart_callback_add(smsc_addr_entry, "focused", __msg_ui_setting_smsc_entry_focus_cb, (void *)smsc_addr_ly);
+                       evas_object_smart_callback_add(smsc_addr_entry, "unfocused", __msg_ui_setting_smsc_entry_unfocus_cb, (void *)smsc_addr_ly);
+                       elm_object_signal_callback_add(smsc_addr_ly, "elm,eraser,clicked", "elm", __msg_ui_setting_smsc_eraser_clicked_cb, (void *)smsc_addr_entry);
+
+                       /* Before giving focus to the entry object, the entry object should be shown. */
+                       evas_object_show(smsc_addr_entry);
+                       elm_object_part_content_set(smsc_addr_ly, "elm.swallow.content", smsc_addr_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(smsc_addr_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(smsc_addr_entry, elm_entry_filter_accept_set, &smsc_addr_accept_filter_data);
+                       elm_entry_cnp_mode_set(smsc_addr_entry, ELM_CNP_MODE_PLAINTEXT);
+
+                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+                       msg_ui_setting_msg_get_config(settingData);
+                       msg_get_list_handle(settingData->msg_setting.setting_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
+                       msg_get_str_value(settingData->msg_setting.smsc_list->msg_struct_info[center_index], MSG_SMSC_ADDR_STR, address, SMSC_ADDR_MAX);
+                       if (strlen(address) > 0) {
+                               buf = elm_entry_utf8_to_markup(address);
+                               elm_entry_entry_set(smsc_addr_entry, buf);
+
+                               if (buf != NULL)
+                                       free(buf);
+                       }
+
+                       if (settingData->list.text_msg.smsc_addr_entry != NULL)
+                               elm_object_focus_set(settingData->list.text_msg.smsc_addr_entry, EINA_TRUE);
+
+                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+                       return smsc_addr_ly;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Nothing to do.");
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *
+__msg_ui_setting_text_create_smsc_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !settingData, NULL);
+
+       Evas_Object *smsc_genlist;
+       int index = 0;
+
+       smsc_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->list.text_msg.smsc_genlist = smsc_genlist;
+
+       settingData->list.text_msg.smsc_title_itc.item_style = "dialogue/title";
+       settingData->list.text_msg.smsc_title_itc.func.text_get = __msg_ui_setting_smsc_gl_text_get;
+       settingData->list.text_msg.smsc_title_itc.func.content_get = NULL;
+       settingData->list.text_msg.smsc_title_itc.func.state_get = NULL;
+       settingData->list.text_msg.smsc_title_itc.func.del = NULL;
+
+       settingData->list.text_msg.smsc_1icon_itc.item_style = "dialogue/1icon";
+       settingData->list.text_msg.smsc_1icon_itc.func.text_get = NULL;
+       settingData->list.text_msg.smsc_1icon_itc.func.content_get = __msg_ui_setting_smsc_gl_content_get;
+       settingData->list.text_msg.smsc_1icon_itc.func.state_get = NULL;
+       settingData->list.text_msg.smsc_1icon_itc.func.del = NULL;
+
+       for (index = 0; smsc_menu_its[index].name; index++) {
+               if (index == MSG_UI_SETTING_SMSC_MENU_ADDRESS_TITLE) {
+                       elm_genlist_item_append(smsc_genlist, &settingData->list.text_msg.smsc_title_itc,
+                                                                                       (void *)index, NULL, smsc_menu_its[index].type,
+                                                                                       NULL, (void *)index);
+               } else if (index == MSG_UI_SETTING_SMSC_MENU_ADDRESS) {
+                       elm_genlist_item_append(smsc_genlist, &settingData->list.text_msg.smsc_1icon_itc,
+                                                                                       (void *)index, NULL, smsc_menu_its[index].type,
+                                                                                       NULL, (void *)index);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return smsc_genlist;
+}
+
+static Eina_Bool
+__msg_ui_setting_smsc_is_changed(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       char *addr_buf = NULL;
+       int index = 0;
+       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));
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_get_list_handle(settingData->msg_setting.setting_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
+       msg_get_str_value(settingData->msg_setting.smsc_list->msg_struct_info[index], MSG_SMSC_ADDR_STR, address, SMSC_ADDR_MAX);
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+       /* It will check whether value is changed or not. */
+       if (addr_buf != NULL) {
+               if (strcmp(addr_buf, address) != 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "No value");
+               goto smsc_exit;
+       }
+
+       if (__msg_ui_setting_smsc_is_changed(settingData) != EINA_TRUE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Nothing is changed.");
+               goto smsc_exit;
+       }
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_get_list_handle(settingData->msg_setting.setting_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
+       msg_get_str_value(settingData->msg_setting.smsc_list->msg_struct_info[index], MSG_SMSC_ADDR_STR, address, SMSC_ADDR_MAX);
+
+       strncpy(address, addr_buf, SMSC_ADDR_MAX);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMSC Addr = %s", 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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void
+__msg_ui_setting_smsc_cancel_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);
+
+       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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *center_layout;
+       Evas_Object *smsc_genlist;
+       Evas_Object *title_left_btn;
+       Evas_Object *title_right_btn;
+
+       Elm_Object_Item *navi_it;
+
+       char title[DEF_BUF_LEN_S] = {0, };
+
+       settingData->list.text_msg.center_index = index;
+
+       center_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       smsc_genlist = __msg_ui_setting_text_create_smsc_menu(settingData->navi_frame, settingData);
+       elm_object_part_content_set(center_layout, "elm.swallow.content", smsc_genlist);
+
+       snprintf(title, sizeof(title), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD"), index+1);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, title, NULL, NULL, center_layout, 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, 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, settingData);
+       elm_object_item_part_content_set(navi_it, "title_right_btn", title_right_btn);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+/***********************
+ ***  Service centre list  ***
+ ***********************/
+
+static void
+__msg_ui_setting_text_save_service_centre(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected value is %d", selection);
+
+       /* Save selected value. */
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_set_int_value(settingData->msg_setting.setting_opt, MSG_SMSC_SELECTED_ID_INT, selection);
+
+       err = msg_ui_setting_msg_set_config(settingData);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       char smsc_name[MAX_SMSC_NAME_LEN + 1] = {0, };
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               snprintf(smsc_name, sizeof(smsc_name), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD"), index+1);
+               return strdup(smsc_name);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_text_service_centre_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *radio;
+       Evas_Object *button;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       int selected = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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.
+                */
+               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+               msg_ui_setting_msg_get_config(settingData);
+               msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMSC_SELECTED_ID_INT, &selected);
+               if (index == selected)
+                       elm_radio_value_set(settingData->list.text_msg.service_centre_radio_group, index);
+
+               msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+               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 {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_text_service_centre_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return;
+}
+
+
+void msg_ui_setting_create_service_center_list(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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;
+
+       Elm_Object_Item *navi_it;
+
+       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);
+       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_ui_setting_msg_get_config(settingData);
+       msg_get_list_handle(settingData->msg_setting.setting_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
+       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMSC_SELECTED_ID_INT, &selected_smsc);
+       smsc_cnt = settingData->msg_setting.smsc_list->nCount;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "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);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SERVICECENTRE"), NULL, NULL, smsc_layout, NULL);
+
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
index b37a8e4..1245b02 100755 (executable)
 #define __DEF_MSG_UI_THREAD_MAIN_H__
 
 #include <stdio.h>
-
-#include <MsgStorageTypes.h>
-#include <MapiTransport.h>
-#include <MapiControl.h>
-#include <MapiStorage.h>
-#include <MapiMessage.h>
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
 
 #include <libintl.h>
 #include <bundle.h>
-#include <appcore-efl.h>
 #include <Ecore.h>
 #include <Ecore_IMF.h>
 #include <Elementary.h>
+#include <aul.h>
 #include <ui-gadget-module.h>
 #include <utilX.h>
 #include <time.h>
 
 #define MSG_THREAD_THEME       EDJDIR"/thread_genlist.edj"
 #define MSG_THREAD_CONTROLBAR_ITEM_NUM (4)
+#define MSG_THREAD_DELETE_NOTI_TIME 1.5
+#define MSG_THREAD_LIST_MAX_COUNT 10
+#define MSG_THREAD_LIST_LAUNCH_LOAD_MAX_CNT 20
+
+
+typedef struct _MSG_THREAD_LIST_DATA MSG_THREAD_LIST_DATA, *PMSG_THREAD_LIST_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 _THREAD_MORE_VIEW_DATA THREAD_MORE_VIEW_DATA, *PTHREAD_MORE_VIEW_DATA;
 
 typedef enum {
        THREAD_NORMAL_VIEW = 0,
-       THREAD_EDIT_VIEW,
+       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> */
+       THREAD_DRAFT_LIST_TYPE, /** <More -Draft Message list> */
+       THREAD_LOCKED_LIST_TYPE,        /** <More -Locked Message list> */
+       THREAD_SCHEDULED_LIST_TYPE,     /** <More -Scheduled 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 struct {
-       MSG_THREAD_ID_T threadId;
-       char threadAddr[DEF_THREAD_ADDR_LEN+1];
-       char threadName[DEF_THREAD_NAME_LEN+1];
-       char threadData[DEF_BUF_LEN_S+1];
-       time_t *threadTime;
-       MSG_DIRECTION_TYPE_T direction;
-       MSG_CONTACT_ID_T contactId;
-       int unreadCnt;
-       int smsCnt;
-       int msgType;
-
-       Evas_Object *chk;
-       Eina_Bool isCheck;
-} MSG_APP_THREAD_DATA_S, *PMSG_APP_THREAD_DATA_S;
+typedef enum {
+       THREAD_ITC_EMPTY = 0,
+       THREAD_ITC_SEARCH,
+       THREAD_ITC_SEARCH_UNREAD,
+       THREAD_ITC_BLANK,
+       THREAD_ITC_POPUP,
+       THREAD_ITC_DATE,
+} ThreadItcType;
+
+
+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 {
-       Elm_Theme *th;
 
+       msg_handle_t msgHandle;
+       int app_state;
+
+       Elm_Theme *th;
        Evas_Object *win_main;
        Evas_Object *navi_frame;
+
+       Elm_Genlist_Item_Class itc_empty;
+       Elm_Genlist_Item_Class itc_search;
+       Elm_Genlist_Item_Class itc_search_unread;
+       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;
+       msg_time_format time_fmt;
+       char locale[DEF_BUF_LEN];
+       int noti_fd;
+
+       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 *conform;
-       Elm_Object_Item *nf_it;
-       Evas_Object *toolbar;
        Evas_Object *content_ly;
        Evas_Object *noc_ly;
-       Evas_Object *sel_all_ly;
+       Elm_Object_Item *nf_it; //title, control bar naviframe item
+       Evas_Object *toolbar;
+       Elm_Object_Item *toolbar_item[MSG_THREAD_CONTROLBAR_ITEM_NUM];
        Evas_Object *back_btn;
+       Evas_Object *searchbar;
+       Ecore_Timer *search_timer;
 
-       Evas_Object *sel_all_box;
-       Eina_Bool sel_all_checked;
+       Elm_Genlist_Item_Class itc_default;
+       Elm_Genlist_Item_Class itc_unread;
 
-       Ecore_IMF_Context *imf_ctx;
+       ThreadViewMode view_mode;
+       ThreadMsgListType list_type;
+       ThreadMsgListAppDataType app_data_type;
+       ThreadSearchMode search_mode;
 
-       Elm_Object_Item *toolbar_item[MSG_THREAD_CONTROLBAR_ITEM_NUM];
+       Elm_Object_Item *sel_gen_item;
+       int sel_thread_id;
+       int sel_msg_id;
 
-       Evas_Object *genlist;
-       Evas_Object *noc;
+       struct ug_cbs cbs;
+       ui_gadget_h loaded_ug;
 
-       Evas_Object *searchbar;
+       Evas_Object *select_info;       //%d item selected
+       Evas_Object *delete_info;       //deleted
+       Evas_Object *selectioninfo_layout;
 
-       Evas_Object *tickernoti;
-       Ecore_Timer *e_timer;
+       Evas_Object *sel_all_ly;
+       Evas_Object *sel_all_box;
+       Eina_Bool sel_all_checked;
+       Eina_List *chk_list;
+       Ecore_Thread *del_thread;
+       int del_index;
+       int item_cnt;
+       int check_cnt;
 
        Evas_Object *popup;
        Evas_Object *progressbar;
        Evas_Object *progresslabel;
 
-       Evas_Object *select_info;
-       Evas_Object *selectioninfo_layout;
-
-       Elm_Genlist_Item_Class *itc;
-
-       Elm_Genlist_Item_Class itc_thread;
-       Elm_Genlist_Item_Class itc_empty;
-
-       MSG_HANDLE_T msgHandle;
-       ThreadViewMode viewmode;
-       ThreadSearchMode search_mode;
-       int app_state;
+       Ecore_Idler *launch_idler;
+       int loaded_cnt;
+} _MSG_THREAD_LIST_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;
 
-       Elm_Object_Item *sel_gen_item;
-       int sel_thread_id;
+       Evas_Object *chk;
+       Eina_Bool is_check;
+} _MSG_APP_THREAD_DATA_S;
 
-       Ecore_Thread *del_thread;
+typedef struct _MSG_APP_THREAD_MSG_DATA_S {
+       int msg_id;
+       int msg_type;
+       bool is_read;
+       msg_contact_id_t contact_id;
 
-       bundle *msg_b;
+       char display_name[MAX_DISPLAY_NAME_LEN];
+       char address[MAX_ADDRESS_VAL_LEN+1];
+       char msg_body[MAX_MSG_TEXT_LEN+1];
+       time_t *msg_time;
 
-       char *time_12h_ptn;
-       char *time_24h_ptn;
-       char *date_ptn;
-       msg_time_format time_fmt;
-       char locale[DEF_BUF_LEN];
-       int noti_fd;
+       Evas_Object *chk;
+       Eina_Bool is_check;
+} _MSG_APP_THREAD_MSG_DATA_S;
 
-       Eina_List *chk_list;
-       int del_index;
-       int thread_cnt;
-       int check_cnt;
+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;
 
-       bool isIncomingMsg;     /* Check there is new incoming message when it back from edit mode to normal. */
-} MSG_THREAD_DATA, *PMSG_THREAD_DATA;
 
-/* MAIN */
-#define MSG_THREAD_UNREAD_BADGE \
-       IMGDIR"/M01_btn_Unread_message.png"
-#define MSG_THREAD_OTA_BADGE \
-       IMGDIR"/M01_icon_OTA.png"
-#define MSG_THREAD_PUSH_BADGE \
-       IMGDIR"/M01_icon_Push.png"
-#define MSG_THREAD_BROADCAST_BADGE \
-       IMGDIR"/M01_icon_broadcasting.png"
 
 #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);
 
-void msg_ui_thread_load_thread_view(void *data, bundle *b);
-void msg_ui_thread_reset_thread_view(void *data, bundle *b);
+PMSG_THREAD_LIST_DATA msg_ui_thread_create_thread_list_data(ThreadMsgListType list_type, ThreadMsgListAppDataType app_data_type);
+void msg_ui_thread_destroy_thread_list_data(PMSG_THREAD_LIST_DATA pListData);
+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_fullview_launch(PMSG_THREAD_DATA pData);
-Evas_Object *msg_ui_thread_create_content_layout(PMSG_THREAD_DATA pData);
-Evas_Object *msg_ui_thread_create_nocontent_layout(PMSG_THREAD_DATA pData);
-Evas_Object *msg_ui_thread_create_layout_main(Evas_Object *parent);
-Evas_Object *msg_ui_thread_create_genlist(PMSG_THREAD_DATA pData);
-Evas_Object *msg_ui_thread_create_searchbar_layout(PMSG_THREAD_DATA pDatat);
+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_rotation_set(void *data, int rot);
 
-void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData);
+void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA pListData);
+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);
 
-PMSG_THREAD_DATA msg_ui_thread_get_data(void);
-void msg_ui_thread_add_navi_controlbar_item(PMSG_THREAD_DATA pData);
+void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData);
+Evas_Object *msg_ui_thread_create_toolbar(Evas_Object *parent);
+void msg_ui_thread_set_navi_controlbar_item(PMSG_THREAD_LIST_DATA pListData);
 
 
 /* THREAD LIST */
-void msg_ui_thread_set_msg_data(PMSG_APP_THREAD_DATA_S thread_data, msg_thread_view_t msgThreadInfo);
-void msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_info);
+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);
-void  msg_ui_thread_list_load(PMSG_THREAD_DATA ThreadData);
-void msg_ui_thread_list_update(PMSG_THREAD_DATA ThreadData);
-void msg_ui_thread_list_item_update(PMSG_THREAD_DATA ThreadData, MSG_THREAD_ID_T threadId);
-void msg_ui_thread_genlist_style_set(PMSG_THREAD_DATA ThreadData);
-void msg_ui_thread_genlist_frame_style_set(PMSG_THREAD_DATA ThreadData);
-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);
+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);
+void 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);
+void 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_MSGID_LIST_S *pMsgIdList, void *user_param);
+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_del_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_thread_ctlbar_edit_cb(void *data, Evas_Object *obj, void *event_info);
+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_cancel_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);
@@ -197,24 +290,36 @@ void msg_ui_thread_searchbar_entry_change_cb(void *data, Evas_Object *obj, void
 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(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);
+int 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_get_time_format(PMSG_THREAD_DATA pData);
 void msg_ui_thread_get_locale(PMSG_THREAD_DATA pData);
 
-bundle *msg_ui_thread_get_bubble_data(PMSG_APP_THREAD_DATA_S item_data);
-
-void msg_ui_thread_cancel_edit_mode(PMSG_THREAD_DATA pData);
-void msg_ui_thread_show_normal_mode(PMSG_THREAD_DATA pData);
-void msg_ui_thread_show_split_view(PMSG_THREAD_DATA pData);
-void msg_ui_thread_select_item_by_thread_id(PMSG_THREAD_DATA pData, int thread_id);
-void msg_ui_thread_show_notify(PMSG_THREAD_DATA threadData, const char *msg);
-void msg_ui_thread_show_del_popup(PMSG_THREAD_DATA threadData, const char *msg);
-Evas_Object* msg_ui_thread_show_notify_with_progressbar(PMSG_THREAD_DATA threadData, int count);
-void msg_ui_thread_show_select_info(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_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_del_popup(PMSG_THREAD_LIST_DATA pListData, 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_deleted_info(PMSG_THREAD_LIST_DATA pListData);
 
 void msg_ui_thread_set_app_state(int app_state);
 int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData);
 
+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__ */
index 3a2dc7d..0e408a8 100755 (executable)
  * limitations under the License.
  */
 
+
 #include "msg-ui-thread-main.h"
 
-static Eina_Bool  _search_list_load(void *data);
+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_del_finish(PMSG_THREAD_LIST_DATA pListData);
+static void __msg_ui_thread_del_thread_fn(void *data, Ecore_Thread *thread);
+static void __msg_ui_thread_del_thread_feedback_fn(void *data, Ecore_Thread *thread, void *msg_data);
+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);
+static void __msg_ui_thread_addr_select_popup(PMSG_THREAD_LIST_DATA pListData, const char *title, int thread_id);
+void __msg_ui_thread_popup_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_popup_gl_del(void *data, Evas_Object *obj);
+static char *__msg_ui_thread_popup_gl_text_get(void *data, Evas_Object *obj, const char *part);
 
 
-static void _sel_all_ly_mouse_down_cb(void *data, Evas *evas, 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();
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_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_thread_sel_all_clicked_cb(data, NULL, NULL);
-
-       MSG_UI_LEAVE();
-}
+       int i = 0;
+       if (!user_param || !pMsgIdList)
+               return;
 
-static void __add_navi_edit_controlbar(PMSG_THREAD_DATA pData)
-{
-       MSG_UI_ENTER();
+       PMSG_THREAD_DATA pData = user_param;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
 
-       if (!pData)
+       if (msg_ui_thread_get_app_state(pData) == MSG_UI_STATE_DESTROY)
                return;
 
-       int i;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "type is %d", type);
 
-       for (i = 0; i < MSG_THREAD_CONTROLBAR_ITEM_NUM; i++) {
-               if (pData->toolbar_item[i])
-                       elm_object_item_del(pData->toolbar_item[i]);
+       for (i = 0; i < MSG_THREAD_LIST_MAX_COUNT; i++) {
+               if (pData->list_data[i] != NULL)
+                       pListData = pData->list_data[i];
+               else
+                       break;
+
+               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) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete count is %d", pMsgIdList->nCount);
+                       if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG) {
+                               for (i = 0; i < pMsgIdList->nCount; i++) {
+                                       msg_ui_thread_list_msg_item_delete(pListData, pMsgIdList->msgIdList[i]);
+                               }
+                       }
+               } else if (type == MSG_STORAGE_CHANGE_UPDATE) {
+                       for (i = 0; i < pMsgIdList->nCount; i++) {
+                               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(pData->msgHandle, pMsgIdList->msgIdList[i], msgInfo, sendOpt);
+
+                               if (err != MSG_SUCCESS) {
+                                       msg_release_struct(&msgInfo);
+                                       msg_release_struct(&sendOpt);
+                                       return;
+                               }
+
+                               msg_folder_id_t folder_id = 0;
+                               msg_get_int_value(msgInfo, MSG_MESSAGE_FOLDER_ID_INT, (int *)&folder_id);
+
+                               if (folder_id != MSG_SPAMBOX_ID) {
+                                       if (pListData->app_data_type == THREAD_LIST_APP_DATA_THREAD) {
+                                               int thread_id = 0;
+                                               msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+                                               msg_ui_thread_list_item_update(pListData, thread_id);
+                                       } else {
+                                               int msg_id = 0;
+                                               msg_get_int_value(msgInfo, MSG_MESSAGE_ID_INT, &msg_id);
+                                               msg_ui_thread_list_msg_item_update(pListData, msg_id);
+                                       }
+                               }
+
+                               msg_release_struct(&msgInfo);
+                               msg_release_struct(&sendOpt);
+                       }
+               }
        }
 
-       pData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(pData->toolbar, MSG_CONTROLBAR_ICON_DELETE, NULL, \
-                                                                                                                               msg_ui_thread_ctlbar_del_cb, (void *)pData);
-       pData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, NULL);
-       pData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, NULL);
-       pData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(pData->toolbar, MSG_CONTROLBAR_ICON_CANCEL, NULL, \
-                                                                                                                               msg_ui_thread_ctlbar_cancel_cb, (void *)pData);
-       elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
-       elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
-       elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_3], EINA_TRUE);
-
        MSG_UI_LEAVE();
 }
 
-static void __add_navi_select_all_ly(PMSG_THREAD_DATA pData)
+static void __msg_ui_thread_insert_and_select_gen_item(PMSG_THREAD_LIST_DATA pListData)
 {
-       if (!pData->sel_all_ly) {
-               pData->sel_all_ly = elm_layout_add(pData->navi_frame);
-               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);
+       MSG_UI_ENTER();
 
-               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_thread_sel_all_clicked_cb, pData);
-               evas_object_show(pData->sel_all_box);
+       int sel_thread_id = 0, sel_msg_id = 0;
 
-               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"));
+       if (pListData->sel_gen_item) {
+               sel_thread_id = pListData->sel_thread_id;
+               sel_msg_id = pListData->sel_msg_id;
        }
 
-       evas_object_show(pData->sel_all_ly);
-       elm_object_part_content_unset(pData->content_ly, "sel_all");
-       evas_object_hide(pData->searchbar);
-       elm_object_part_content_set(pData->content_ly, "sel_all", pData->sel_all_ly);
+       if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG) {
+               msg_ui_thread_search_msg_list_load(pListData);
+               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);
+       }
+       MSG_UI_LEAVE();
 }
 
-static void _del_finish(PMSG_THREAD_DATA ThreadData)
+ void msg_ui_thread_ctlbar_del_cb(void *data, Evas_Object *obj, void *event_info)
 {
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
 
-       if (ThreadData->popup) {
-               evas_object_del(ThreadData->popup);
-               ThreadData->popup = NULL;
-       }
-
-       ThreadData->del_thread = NULL;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+        MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, pListData->del_thread);
 
-       msg_ui_thread_show_normal_mode(ThreadData);
-       msg_ui_thread_list_load(ThreadData);
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
 
+       pListData->popup = msg_ui_thread_show_notify_with_progressbar(pListData, pListData->check_cnt);
+       pListData->del_thread = ecore_thread_feedback_run(__msg_ui_thread_del_thread_fn, __msg_ui_thread_del_thread_feedback_fn, NULL, NULL, (void *)pListData, EINA_TRUE);
 }
 
-static void _del_thread_feedback_fn(void *data, Ecore_Thread *thread, void *msg_data)
+static void __msg_ui_thread_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_THREAD_DATA ThreadData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
        char buf[DEF_BUF_LEN_S] = {0,};
        int *ret = msg_data;
 
        if (*ret == MSG_SUCCESS) {
-               if (ThreadData->progressbar) {
-                       snprintf(buf, sizeof(buf), "%d/%d %s", ThreadData->del_index+1, ThreadData->check_cnt, dgettext("sys_string", "IDS_COM_POP_DELETED"));
-                       elm_object_text_set(ThreadData->progresslabel, buf);
-                       elm_progressbar_value_set(ThreadData->progressbar, (double)(ThreadData->del_index+1)/ThreadData->check_cnt);
+               if (pListData->progressbar) {
+                       snprintf(buf, sizeof(buf), "%d/%d %s", pListData->del_index+1, pListData->check_cnt, dgettext("sys_string", "IDS_COM_POP_DELETED"));
+                       elm_object_text_set(pListData->progresslabel, buf);
+                       elm_progressbar_value_set(pListData->progressbar, (double)(pListData->del_index+1)/pListData->check_cnt);
                }
        } else {
-               msg_ui_thread_show_notify(ThreadData, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
-               _del_finish(ThreadData);
+
+               /** __msg_ui_thread_del_finish function contains evas_object_del(thread_data->popup), */
+               /** so, call __msg_ui_thread_del_finish() first, after that make "unable to delete" popup  */
+               __msg_ui_thread_del_finish(pListData);
+               msg_ui_thread_show_notify(pListData, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
                return;
        }
 
-       if (ThreadData->del_index + 1 == ThreadData->check_cnt)
-               _del_finish(ThreadData);
-       else
-               ThreadData->del_index++;
+       if (pListData->del_index + 1 == pListData->check_cnt) {
+               msg_ui_thread_show_deleted_info(pListData);
+               __msg_ui_thread_del_finish(pListData);
+       } else {
+               pListData->del_index++;
+       }
 
        if (ret)
                free(ret);
-
 }
 
-static void _del_thread_fn(void *data, Ecore_Thread *thread)
+static void __msg_ui_thread_del_thread_fn(void *data, Ecore_Thread *thread)
 {
        D_ENTER;
 
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
 
-       PMSG_THREAD_DATA ThreadData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Eina_List *list;
 
-       Eina_List *l;
-       PMSG_APP_THREAD_DATA_S item_data = NULL;
+       void* item_data = NULL;
 
-       EINA_LIST_FOREACH(ThreadData->chk_list, l, item_data) {
+       EINA_LIST_FOREACH(pListData->chk_list, list, item_data) {
                int *ret = calloc(1, sizeof(int));
 
                if (item_data) {
-                       *ret = msg_delete_thread_message_list(ThreadData->msgHandle, item_data->threadId);
-
+                       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);
+                       } else {
+                               PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+                               *ret = msg_delete_message(msg_ui_thread_get_data_handle(), data->msg_id);
+                       }
                        ecore_thread_feedback(thread, (void *)ret);
 
                        if (*ret != MSG_SUCCESS)
@@ -157,136 +217,235 @@ static void _del_thread_fn(void *data, Ecore_Thread *thread)
                        return;
                }
        }
+}
+
+static void __msg_ui_thread_del_finish(PMSG_THREAD_LIST_DATA pListData)
+{
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       pListData->del_thread = 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);
 }
 
-static void _insert_and_select_gen_item(PMSG_THREAD_DATA ThreadData)
+void msg_ui_thread_ctlbar_checkbox_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       int sel_thread_id = 0;
+       MSG_UI_ENTER();
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
 
-       if (ThreadData->sel_gen_item)
-               sel_thread_id = ThreadData->sel_thread_id;
+       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->del_index = 0;
+
+       elm_object_item_part_content_unset(pListData->nf_it, "prev_btn");
+       if (pListData->back_btn) {
+               evas_object_del(pListData->back_btn);
+               pListData->back_btn = NULL;
+       }
+
+       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
 
-       if (ThreadData->search_mode == THREAD_SEARCH_ON)
-               _search_list_load(ThreadData);
+       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_LOCKED_LIST_TYPE || pListData->list_type == THREAD_SIM_LIST_TYPE || pListData->list_type == THREAD_SCHEDULED_LIST_TYPE)
+               snprintf(buf, sizeof(buf), "%s",  dgettext("sys_string", "IDS_COM_SK_EDIT"));
        else
-               msg_ui_thread_list_load(ThreadData);
+               snprintf(buf, sizeof(buf), "%s",  dgettext("sys_string", "IDS_COM_SK_DELETE"));
+
+       elm_object_item_text_set(pListData->nf_it, buf);
 
-       msg_ui_thread_select_item_by_thread_id(ThreadData, sel_thread_id);
+       msg_ui_thread_set_navi_controlbar_item(pListData);
+       __msg_ui_thread_add_navi_select_all_ly(pListData);
 
+       MSG_UI_LEAVE();
 }
 
-void msg_ui_thread_storage_change_cb(MSG_HANDLE_T handle, MSG_STORAGE_CHANGE_TYPE_T type, MSG_MSGID_LIST_S *pMsgIdList, void *user_param)
+static void __msg_ui_thread_add_navi_select_all_ly(PMSG_THREAD_LIST_DATA pListData)
 {
-       MSG_UI_ENTER();
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
 
-       if (!user_param || !pMsgIdList)
+       if (!pListData) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT,"[ASSERT] pListData is NULL");
                return;
+       }
 
-       PMSG_THREAD_DATA ThreadData = user_param;
-       if (msg_ui_thread_get_app_state(ThreadData) == MSG_UI_STATE_DESTROY)
-               return;
+       if (!pListData->sel_all_ly) {
+               pListData->sel_all_ly = elm_layout_add(pData->navi_frame);
+               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 (type == MSG_STORAGE_CHANGE_CONTACT) {
-               msg_ui_thread_list_update(ThreadData);
-       } else if (type == MSG_STORAGE_CHANGE_INSERT) {
-               if(ThreadData->viewmode == THREAD_EDIT_VIEW) {
-                       ThreadData->isIncomingMsg = true;
-                       D_MSG("Current mode is EDIT.");
-                       return;
-               }
-               _insert_and_select_gen_item(ThreadData);
-       } else if (type == MSG_STORAGE_CHANGE_UPDATE) {
-               int i;
+       evas_object_show(pListData->sel_all_ly);
+       elm_object_part_content_unset(pListData->content_ly, "sel_all");
+       evas_object_hide(pListData->searchbar);
+       elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->sel_all_ly);
+}
 
-               for (i = 0; i < pMsgIdList->nCount; i++) {
-                       msg_message_t msg = msg_new_message();
-                       MSG_SENDINGOPT_S sendOpt = {0};
-                       MSG_ERROR_T err = MSG_SUCCESS;
+static void __msg_ui_thread_sel_all_ly_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
 
-                       err = msg_get_message(ThreadData->msgHandle, pMsgIdList->msgIdList[i], msg, &sendOpt);
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
 
-                       if (err != MSG_SUCCESS) {
-                               msg_release_message(&msg);
-                               return;
-                       }
+       pListData->sel_all_checked = !pListData->sel_all_checked;
+       elm_check_state_pointer_set(pListData->sel_all_box, &pListData->sel_all_checked);
 
-                       msg_ui_thread_list_item_update(ThreadData, msg_get_ith_thread_id(msg, 0));
+       msg_ui_thread_sel_all_clicked_cb(pListData, NULL, NULL);
 
-                       msg_release_message(&msg);
-               }
+       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_LEAVE();
+       msg_ui_thread_launch_spam_setting(pListData);
 }
 
 
-void msg_ui_thread_ctlbar_del_cb(void *data, Evas_Object *obj, void *event_info)
+void msg_ui_thread_ctlbar_compose_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       D_ENTER;
+       MSG_UI_ENTER();
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
-
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item* it_sweep = NULL;
+       service_h svc_handle = NULL;
 
-       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, pData->del_thread);
+       if (service_create(&svc_handle) < 0 || svc_handle == NULL) {
+               D_EMSG("service_create() is failed !!");
+               return;
+       }
 
-       if (pData->popup) {
-               evas_object_del(pData->popup);
-               pData->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);
        }
 
-       pData->popup = msg_ui_thread_show_notify_with_progressbar(pData, pData->check_cnt);
+       if (msg_ui_load_composer_ug(svc_handle) == MSG_UI_RET_ERR)
+               D_MSG("Failed to load composer ug");
 
-       pData->del_thread = ecore_thread_feedback_run(_del_thread_fn, _del_thread_feedback_fn, NULL, NULL, (void *)pData, EINA_TRUE);
+       service_destroy(svc_handle);
 
+       MSG_UI_LEAVE();
 }
 
-void msg_ui_thread_ctlbar_edit_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)
 {
        MSG_UI_ENTER();
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item* it_sweep = NULL;
 
-       char buf[DEF_BUF_LEN_S] = {0};
-       pData->viewmode = THREAD_EDIT_VIEW;
-       pData->check_cnt = 0;
-       pData->del_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);
+       }
+
+       // Create pop-up (  Spam / SIM (it will be extended) )
+       Evas_Object *ctx_popup = NULL;
+       ctx_popup = elm_ctxpopup_add(pListData->content_ly);
+       evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_thread_ctxpopup_dismissed_cb, pListData);
 
-       elm_genlist_decorate_mode_set(pData->genlist, EINA_TRUE);
-       elm_genlist_select_mode_set(pData->genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+       elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_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_CB_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData);
 
-       snprintf(buf, sizeof(buf), "%s %s", dgettext("sys_string", "IDS_COM_SK_SELECT"), dgettext("sys_string", "IDS_COM_BODY_MESSAGES"));
-       elm_object_item_text_set(pData->nf_it, buf);
+       // move ctx popup
+       Evas_Coord x, y, w, h;
+       evas_object_geometry_get(pListData->toolbar, &x, &y, &w, &h);
+       evas_object_move(ctx_popup, ((w-x)*5)/6 , y);
+       evas_object_show(ctx_popup);
 
-       __add_navi_edit_controlbar(pData);
-       __add_navi_select_all_ly(pData);
+       pListData->popup = ctx_popup;
 
-       elm_object_item_part_content_unset(pData->nf_it, "prev_btn");
-       if (pData->back_btn) {
-               evas_object_del(pData->back_btn);
-               pData->back_btn = NULL;
+       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();
 }
 
-void msg_ui_thread_ctlbar_compose_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_thread_ctxpopup_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER();
-       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
 
-       bundle *b = bundle_create();
+       ThreadMsgListType list_type = THREAD_NORMAL_LIST_TYPE;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
 
-       if (!b)
-               return;
+       const char *label = elm_object_item_text_get((Elm_Object_Item *)event_info);
 
-       if (msg_ui_load_composer_ug(b) == MSG_UI_RET_ERR)
-               D_MSG("Failed to load composer ug");
+       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;
+       }
 
-       bundle_free(b);
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
 
+       msg_ui_thread_load_message_box(list_type);
        MSG_UI_LEAVE();
 }
 
@@ -295,15 +454,18 @@ void msg_ui_thread_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_in
        MSG_UI_ENTER();
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
 
        if (pData->isIncomingMsg == true) {
-               msg_ui_thread_list_load(pData);
+               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(pData);
-
+       msg_ui_thread_show_normal_mode(pListData);
        MSG_UI_LEAVE();
 }
 
@@ -311,33 +473,45 @@ void msg_ui_thread_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_
 {
        MSG_UI_ENTER();
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
-       PMSG_APP_THREAD_DATA_S item_data = NULL;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
        Elm_Object_Item *it;
 
-       if (pData->sel_all_checked)
-               pData->check_cnt = pData->thread_cnt;
-       else {
-               pData->check_cnt = 0;
-               pData->chk_list = eina_list_free(pData->chk_list);
+       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(pData->genlist);
+       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)
-                       item_data->isCheck = pData->sel_all_checked;
+               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 (pData->sel_all_checked && !eina_list_data_find(pData->chk_list, item_data))
-                       pData->chk_list = eina_list_append(pData->chk_list, item_data);
+               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(pData->genlist);
-
-       msg_ui_thread_show_select_info(pData);
+       elm_genlist_realized_items_update(pListData->genlist);
+       msg_ui_thread_show_select_info(pListData);
 
        MSG_UI_LEAVE();
 }
@@ -346,27 +520,35 @@ void msg_ui_thread_list_checked_cb(void *data, Evas_Object *obj, void *event_inf
 {
        MSG_UI_ENTER();
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
-       PMSG_APP_THREAD_DATA_S item_data = NULL;
+       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 (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);
+       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 {
-               pData->check_cnt--;
-               pData->chk_list = eina_list_remove(pData->chk_list, item_data);
+               PMSG_APP_THREAD_MSG_DATA_S data = (PMSG_APP_THREAD_MSG_DATA_S)item_data;
+               is_check = data->is_check;
        }
 
-       if (pData->thread_cnt == pData->check_cnt)
-               elm_check_state_set(pData->sel_all_box, EINA_TRUE);
-       else
-               elm_check_state_set(pData->sel_all_box, EINA_FALSE);
+       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);
+       }
 
-       msg_ui_thread_show_select_info(pData);
+       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();
 }
 
@@ -377,192 +559,383 @@ void msg_ui_thread_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event
        if (!data)
                return;
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       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);
 
-       elm_win_lower(pData->win_main);
+               msg_ui_thread_set_navi_controlbar_item(pPrevList);
+               elm_naviframe_item_pop(pData->navi_frame);
+               elm_genlist_clear(pListData->genlist);
+               msg_ui_thread_destroy_thread_list_data(pListData);
+       }
 
        MSG_UI_LEAVE();
 }
 
-static Eina_Bool  _search_list_load(void *data)
+void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !data, EINA_FALSE);
+       D_ENTER;
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ASSERT, !data, "[ASSERT] data is NULL");
 
-       Evas_Object *entry = NULL;
-       char *search_str = NULL;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Elm_Object_Item* it_sweep = NULL;
 
-       MSG_THREAD_VIEW_LIST_S search_list;
-       PMSG_APP_THREAD_DATA_S item_data = NULL;
-       int idx = 0;
-       MSG_ERROR_T err = MSG_SUCCESS;
+       pListData->search_mode = THREAD_SEARCH_ON;
+       elm_genlist_mode_set(pListData->genlist, ELM_LIST_COMPRESS);
 
-       if (pData->searchbar) {
-               entry = elm_object_part_content_get(pData->searchbar, "elm.swallow.content");
-               search_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry));
+       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_DEBUG(MSG_UI_LEVEL_DEBUG, "Search string word = [%s] ", search_str);
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,show", "elm");
 
-       err =  msg_search_message_for_thread_view(pData->msgHandle, search_str, &search_list);
+       elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,hide", "elm");
+       elm_object_signal_emit(pListData->searchbar, "cancel,in", "");
 
-       if (search_str)
-               free(search_str);
+       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;
+}
 
-       if (err != MSG_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_search_message failed!!");
-               msg_ui_thread_list_load(pData);
-               return EINA_FALSE;
-       }
+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;
 
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Search result [ count = %d ] ", search_list.nCount);
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
 
-       Evas_Object *swl_ly = elm_object_part_content_get(pData->content_ly, "thread_list");
+       elm_object_signal_emit(pListData->searchbar, "cancel,out", "");
+       elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,hide", "elm");
 
-       if (swl_ly != pData->genlist) {
-               evas_object_hide(swl_ly);
-               elm_object_part_content_unset(pData->content_ly, "thread_list");
-               elm_object_part_content_set(pData->content_ly, "thread_list", pData->genlist);
+       if (elm_entry_is_empty(obj)) {
+               elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm");
+               pListData->search_mode = THREAD_SEARCH_OFF;
+               elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
        }
+       D_LEAVE;
+}
 
-       if (search_list.nCount > 0) {
-               elm_genlist_clear(pData->genlist);
+void msg_ui_thread_searchbar_entry_change_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
 
-               while (idx < search_list.nCount) {
-                       item_data = (PMSG_APP_THREAD_DATA_S)calloc(1, sizeof(MSG_APP_THREAD_DATA_S));
-                       msg_ui_thread_set_msg_data(item_data, search_list.msgThreadInfo[idx]);
+       if (!data)
+               return;
 
-                       elm_genlist_item_append(pData->genlist, pData->itc, item_data, \
-                                                               NULL, ELM_GENLIST_ITEM_NONE, \
-                                                               msg_ui_thread_gl_sel, pData);
-                       idx++;
-               }
-       } else {
-               elm_genlist_clear(pData->genlist);
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
 
-               elm_genlist_item_append(pData->genlist, &pData->itc_empty, NULL, \
-                                                               NULL, ELM_GENLIST_ITEM_NONE, \
-                                                               msg_ui_thread_gl_empty_sel, NULL);
+       /* Make timer for check user's input */
+       if (pListData->search_timer) {
+               ecore_timer_del(pListData->search_timer);
+               pListData->search_timer = NULL;
        }
 
-       msg_release_thread_view_list(&search_list);
+       pListData->search_timer = ecore_timer_add(0.2, __msg_ui_thread_searchbar_entry_timer_cb, pListData);
 
-       return EINA_FALSE;
+       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;
 }
 
-void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+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);
+       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;
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
-       pData->search_mode = THREAD_SEARCH_ON;
+       if (!data)
+               return;
 
-       if (!elm_entry_is_empty(obj))
-               elm_object_signal_emit(pData->searchbar, "elm,state,eraser,show", "elm");
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Evas_Object *entry = NULL;
 
-       elm_object_signal_emit(pData->searchbar, "elm,state,guidetext,hide", "elm");
-       elm_object_signal_emit(pData->searchbar, "cancel,in", "");
+       pListData->search_mode = THREAD_SEARCH_OFF;
+       elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
 
-       evas_object_smart_callback_add(obj, "changed",  msg_ui_thread_searchbar_entry_change_cb, data);
+       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_focus_set(pListData->back_btn, EINA_TRUE);
+       evas_object_hide(obj);
+       elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", "");
+
+       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);
 
        D_LEAVE;
 }
 
-void msg_ui_thread_searchbar_entry_unfocus_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)
 {
        D_ENTER;
 
-       evas_object_smart_callback_del(obj, "changed", msg_ui_thread_searchbar_entry_change_cb);
-
        if (!data)
                return;
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
-
-       elm_object_signal_emit(pData->searchbar, "cancel,out", "");
-       elm_object_signal_emit(pData->searchbar, "elm,state,eraser,hide", "elm");
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Evas_Object *entry = NULL;
 
-       if (elm_entry_is_empty(obj)) {
-               elm_object_signal_emit(pData->searchbar, "elm,state,guidetext,show", "elm");
-               pData->search_mode = THREAD_SEARCH_OFF;
+       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_searchbar_entry_change_cb(void *data, Evas_Object *obj, void *event_info)
+void msg_ui_thread_sweep_btn_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !obj || !data);
 
-       if (!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);
+
+       if (g_strcmp0(label, dgettext("sys_string", "IDS_COM_SK_DELETE")) == 0) {
+               msg_ui_thread_show_del_popup(pListData, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
                return;
+       } else {
+               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");
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+               msg_struct_list_s addrList;
 
-       if (elm_object_focus_get(obj)) {
-               if (elm_entry_is_empty(obj))
-                       elm_object_signal_emit(pData->searchbar, "elm,state,eraser,hide", "elm");
-               else
-                       elm_object_signal_emit(pData->searchbar, "elm,state,eraser,show", "elm");
+               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 (addrList.nCount > 1) {
+                       __msg_ui_thread_addr_select_popup(pListData, label, sel_peer_item->thread_id);
+               }
+
+               msg_release_list_struct(&addrList);
        }
 
-       _search_list_load(data);
+       it = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
 
-       D_LEAVE;
+       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_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_thread_addr_select_popup(PMSG_THREAD_LIST_DATA pListData, const char *title, int thread_id)
 {
-       D_ENTER;
+       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;
+       msg_struct_list_s addrList;
+
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+       msg_get_address_list(pData->msgHandle, thread_id, &addrList);
+
+       /** create popup */
+       popup = elm_popup_add(pData->win_main);
+       if (!popup) {
+               D_EMSG("elm_popup_add returns NULL");
+               msg_release_list_struct(&addrList);
+               return;
+       }
 
-       if (!data)
+       elm_object_style_set(popup, "menustyle");
+
+       /** create menu genlist */
+       genlist = elm_genlist_add(popup);
+       if (!genlist) {
+               D_EMSG("elm_genlist_add failed");
+               msg_release_list_struct(&addrList);
                return;
+       }
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
-       pData->search_mode = THREAD_SEARCH_OFF;
+       evas_object_data_set(genlist, "title", title);
+       memset(&pData->itc_popup, 0x00, sizeof(Elm_Genlist_Item_Class));
 
-       Evas_Object *entry = NULL;
-       entry = elm_object_part_content_get(pData->searchbar, "elm.swallow.content");
-       elm_object_text_set(entry, "");
+       pData->itc_popup.item_style = "1text";
+       pData->itc_popup.func.text_get = __msg_ui_thread_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_popup_gl_del;
 
-       evas_object_hide(obj);
+       /** append addresses to genlist */
+       for (i=0; i<addrList.nCount; i++) {
+               int contact_id = 0;
+               char strNumber[MAX_ADDRESS_VAL_LEN + 1] = {0,};
+               char strName[MAX_DISPLAY_NAME_LEN + 1] = {0,};
+               msg_struct_t addrInfo = msg_create_struct(MSG_STRUCT_ADDRESS_INFO);
 
-       elm_object_focus_set(pData->back_btn, EINA_TRUE);
+               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, MAX_ADDRESS_VAL_LEN);
+               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, strName, MAX_DISPLAY_NAME_LEN);
+               msg_get_int_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
 
-       msg_ui_thread_list_load(pData);
+               msg_set_int_value(addrInfo, MSG_ADDRESS_INFO_CONTACT_ID_INT, contact_id);
+               msg_set_str_value(addrInfo, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, MAX_ADDRESS_VAL_LEN);
+               msg_set_str_value(addrInfo, MSG_ADDRESS_INFO_DISPLAYNAME_STR, strName, MAX_DISPLAY_NAME_LEN);
 
-       D_LEAVE;
+               elm_genlist_item_append(genlist, &pData->itc_popup, addrInfo, NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_popup_gl_sel, pListData);
+       }
+
+       msg_release_list_struct(&addrList);
+
+       elm_object_part_text_set(popup, "title,text", dgettext(MESSAGE_PKGNAME, "IDS_MSG_HEADER_SELECT_RECIPIENT"));
+       elm_object_content_set(popup, genlist);
+
+       /** close button */
+       Evas_Object * btn1 = elm_button_add(popup);
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_BODY_CLOSE"));
+       evas_object_smart_callback_add(btn1, "clicked", __msg_ui_thread_close_clicked_cb, pListData);
+
+       elm_object_part_content_set(popup, "button1", btn1);
+       evas_object_show(genlist);
+       evas_object_show(popup);
+
+       pListData->popup = popup;
 }
 
-void msg_ui_thread_searchbar_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+static char *__msg_ui_thread_popup_gl_text_get(void *data, Evas_Object *obj, const char *part)
 {
        D_ENTER;
+       msg_struct_t addr_info = (msg_struct_t)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !data, NULL);
 
-       if (!data)
-               return;
+       char strNumber[DEF_THREAD_ADDR_LEN + 1] = {0,};
+       char strName[DEF_THREAD_NAME_LEN + 1] = {0,};
+       int contact_id = 0;
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       msg_get_str_value(addr_info, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+       msg_get_str_value(addr_info, MSG_ADDRESS_INFO_DISPLAYNAME_STR, strName, DEF_THREAD_NAME_LEN);
+       msg_get_int_value(addr_info, MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
 
-       Evas_Object *entry = NULL;
-       entry = elm_object_part_content_get(pData->searchbar, "elm.swallow.content");
-       elm_object_text_set(entry, "");
+       if (contact_id > 0 && strlen(strName) > 0) {
+               return strdup(strName);
+       } else {
+               if (strlen(strNumber) > 0)
+                       return strdup(strNumber);
+               else
+                       return strdup(dgettext("sys_string","IDS_COM_BODY_UNKNOWN"));
+       }
+}
 
-       elm_object_signal_emit(pData->searchbar, "elm,state,eraser,hide", "elm");
+static void __msg_ui_thread_popup_gl_del(void *data, Evas_Object *obj)
+{
+       msg_struct_t del_data = (msg_struct_t)data;
 
-       D_LEAVE;
+       if (del_data) {
+               msg_release_struct(&del_data);
+               del_data = NULL;
+       }
+}
+
+static void __msg_ui_thread_close_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       D_ENTER;
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+               memset(&pData->itc_popup, 0x00, sizeof(Elm_Genlist_Item_Class));
+       }
+}
+
+void __msg_ui_thread_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;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+       msg_struct_t addr_info = (msg_struct_t)elm_object_item_data_get(item);
+       char strNumber[DEF_THREAD_ADDR_LEN + 1] = {0,};
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+               memset(&pData->itc_popup, 0x00, sizeof(Elm_Genlist_Item_Class));
+       }
+
+       char *title = (char *)evas_object_data_get(obj, "title");
+       if (!title) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] title is NULL");
+               return;
+       }
+
+       msg_get_str_value(addr_info, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, strNumber, DEF_THREAD_ADDR_LEN);
+
+       if (strncmp(title, dgettext("sys_string", "IDS_COM_BODY_CALL"), strlen(title)) == 0)
+               msg_ui_thread_launch_voice_call(strNumber);
+       else if (strncmp(title, dgettext("sys_string", "IDS_COM_BODY_VIDEO_CALL"), strlen(title)) == 0)
+               msg_ui_thread_launch_video_call(strNumber);
+       else
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[ERROR] invalid title");
 }
 
 void msg_ui_thread_timezone_change_cb(void *data)
 {
        D_ENTER;
 
-       PMSG_THREAD_DATA ThreadData = (PMSG_THREAD_DATA)data;
+       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);
 
@@ -576,14 +949,58 @@ void msg_ui_thread_timezone_change_cb(void *data)
        if (U_FAILURE(status))
                return;
 
-       msg_ui_thread_get_locale(ThreadData);
-       msg_ui_thread_get_time_format(ThreadData);
-       ThreadData->time_12h_ptn = msg_common_get_date_best_pattern(ThreadData->locale, MSG_UI_TIME_PATTERN_12H);
-       ThreadData->time_24h_ptn = msg_common_get_date_best_pattern(ThreadData->locale, MSG_UI_TIME_PATTERN_24H);
-       ThreadData->date_ptn = msg_common_get_date_best_pattern(ThreadData->locale, UDAT_YEAR_NUM_MONTH_DAY);
+       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 = msg_common_get_date_best_pattern(pData->locale, UDAT_YEAR_NUM_MONTH_DAY);
+
 
-       elm_genlist_realized_items_update(ThreadData->genlist);
+       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)
+               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();
+}
+
index ccaf24d..c904821 100755 (executable)
  * limitations under the License.
  */
 
+#include "msg-ui-image-resource.h"
 #include "msg-ui-thread-main.h"
 
-int msg_ui_thread_init_genlist(PMSG_THREAD_DATA ThreadData);
-char *msg_ui_thread_gl_text_get(void *data, Evas_Object *obj, const char *part);
-Evas_Object *msg_ui_thread_gl_content_get(void *data, Evas_Object *obj, const char *part);
-void msg_ui_thread_gl_del(void *data, Evas_Object *obj);
-char *msg_ui_thread_gl_empty_get(void *data, Evas_Object *obj, const char *part);
+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_msg_list_load_remain_item(void *data);
 
-int msg_ui_thread_init_genlist(PMSG_THREAD_DATA ThreadData)
+
+static int __msg_ui_thread_init_genlist(PMSG_THREAD_LIST_DATA pListData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       if (ThreadData->genlist)
-               elm_genlist_clear(ThreadData->genlist);
+       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_msg_data(PMSG_APP_THREAD_DATA_S thread_data, msg_thread_view_t msgThreadInfo)
+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;
 
-       thread_data->threadId = msg_thread_view_get_thread_id(msgThreadInfo);
+       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;
 
-       bzero(thread_data->threadAddr, sizeof(thread_data->threadAddr));
-       strncpy(thread_data->threadAddr, msg_thread_view_get_address(msgThreadInfo), DEF_THREAD_ADDR_LEN);
+       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);
 
-       bzero(thread_data->threadName, sizeof(thread_data->threadName));
-       strncpy(thread_data->threadName, msg_thread_view_get_name(msgThreadInfo), 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);
 
-       bzero(thread_data->threadData, sizeof(thread_data->threadData));
-       strncpy(thread_data->threadData, msg_thread_view_get_data(msgThreadInfo), DEF_BUF_LEN_S);
+       if (thread_data->thread_time == NULL)
+               thread_data->thread_time = (time_t *) calloc(1, sizeof(time_t));
 
-       if (thread_data->threadTime == NULL)
-               thread_data->threadTime = (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));
+       }
 
-       if (thread_data->threadTime) {
-               bzero(thread_data->threadTime, sizeof(time_t));
-               memcpy(thread_data->threadTime, msg_thread_view_get_time(msgThreadInfo), 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;
        }
+}
 
-       thread_data->direction = msg_thread_view_get_direction(msgThreadInfo);
-       thread_data->contactId = msg_thread_view_get_contact_id(msgThreadInfo);
-       thread_data->smsCnt = msg_thread_view_get_sms_cnt(msgThreadInfo);
-       thread_data->msgType = msg_thread_view_get_message_type(msgThreadInfo);
+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;
 
-       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       int msgId = 0;
+       int msgType = 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;
+
+       /* 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;
+
+       /* contact ID, display name  */
+       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);
+
+       msg_data->contact_id = contact_id;
+
+       if (strlen(strName) > 0)
+               strncpy(msg_data->display_name, strName, sizeof(msg_data->display_name) -1);
+       else
+               strncpy(msg_data->display_name, "", sizeof(msg_data->display_name)-1);
+
+       if (strlen(strNumber) > 0)
+               strncpy(msg_data->address, strNumber, sizeof(msg_data->address)-1);
+       else
+               strncpy(msg_data->address, "", sizeof(msg_data->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_NOTI)
+               pContent = subject;
+       else
+               pContent = msgText;
 
-       if (pData && pData->sel_thread_id == thread_data->threadId)
-               thread_data->unreadCnt = 0;
+       if (strlen(pContent) > 0)
+               strncpy(msg_data->msg_body, pContent, sizeof(msg_data->msg_body)-1);
        else
-               thread_data->unreadCnt = msg_thread_view_get_unread_cnt(msgThreadInfo);
+               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));
+       }
 }
 
-char *msg_ui_thread_gl_text_get(void *data, Evas_Object *obj, const char *part)
+static char *__msg_ui_thread_gl_text_get(void *data, Evas_Object *obj, const char *part)
 {
-
-       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
        PMSG_APP_THREAD_DATA_S item_data = (PMSG_APP_THREAD_DATA_S) data;
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !pData || !item_data, NULL);
+       char buf[DEF_BUF_LEN] = { 0, };
 
-       time_t *msg_t;
-       time_t cur_t;
-       unsigned long int msg_day, cur_day;
-       int diffday;
-       struct tm msg_time;
-       struct tm cur_time;
-       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->contactId > 0) {
-                       if (item_data->threadName[0] != '\0')
-                               snprintf(buf, sizeof(buf), "%s", item_data->threadName);
-                       else
-                               snprintf(buf, sizeof(buf), dgettext("sys_string", "IDS_COM_BODY_NO_NAME"));
-               }
-
-               else {
-                       if (item_data->threadAddr[0] != '\0')
-                               snprintf(buf, sizeof(buf), "%s", item_data->threadAddr);
-                       else
-                               snprintf(buf, sizeof(buf), dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
-               }
+               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->threadData[0] != '\0') {
-                       strncpy(msg, item_data->threadData, sizeof(msg) - 1);
+               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 (g_strcmp0(part, "elm.text.3") == 0) {
-               char *date_str = NULL;
-
-               msg_t = item_data->threadTime;
-               cur_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;
-
-               diffday = cur_day - msg_day;
-
-               if (diffday == 1)
-                       snprintf(buf, sizeof(buf), dgettext("sys_string", "IDS_COM_BODY_YESTERDAY"));
-               else if (diffday > 1) {
-                       date_str = msg_common_get_formatted_date(pData->locale, pData->date_ptn, msg_t);
-                       snprintf(buf, sizeof(buf), " %s ", date_str);
                } else {
-                       if (pData->time_fmt == MSG_TIME_FORMAT_24H) {
-                               date_str = msg_common_get_formatted_date(pData->locale, pData->time_24h_ptn, msg_t);
-                               snprintf(buf, sizeof(buf), " %s ", date_str);
-                       } else { /* MSG_TIME_FORMAT_12H */
-                               date_str = msg_common_get_formatted_date(pData->locale, pData->time_12h_ptn, msg_t);
-                               snprintf(buf, sizeof(buf), " %s ", date_str);
-                       }
+                       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"));
                }
-
-               if (date_str)
-                       free(date_str);
-       } else if (g_strcmp0(part, "elm.badge.text") == 0) {
-               if (item_data->unreadCnt > 0) {
-                       snprintf(buf, sizeof(buf), "%d", item_data->unreadCnt);
-               }
-       } else if (g_strcmp0(part, "elm.slide.text.1") == 0) {
-               if (item_data->contactId > 0) {
-                       if (item_data->threadName[0] != '\0')
-                               snprintf(buf, sizeof(buf), "%s", item_data->threadName);
+       } 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), dgettext("sys_string", "IDS_COM_BODY_NO_NAME"));
+                               snprintf(buf, sizeof(buf), "%d", item_data->unread_cnt);
                } else {
-                       if (item_data->threadAddr[0] != '\0')
-                               snprintf(buf, sizeof(buf), "%s", item_data->threadAddr);
-                       else
-                               snprintf(buf, sizeof(buf), dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+                       msg_struct_list_s draft_list;
+                       msg_get_message_list(msg_ui_thread_get_data_handle(), MSG_DRAFT_ID, item_data->thread_id, 0, MSG_STORAGE_PHONE, &draft_list);
+
+                       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);
 }
 
-Evas_Object *msg_ui_thread_gl_content_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)
 {
        PMSG_APP_THREAD_DATA_S item_data = (PMSG_APP_THREAD_DATA_S) data;
-       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !pData || !item_data, NULL);
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       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->unreadCnt) {
-                       char unreadCnt[DEF_BUF_LEN_L] = { 0, };
-                       ic = elm_layout_add(obj);
-                       elm_layout_file_set(ic, MSG_THREAD_THEME, "msg_frame_badge_ly");
-                       snprintf(unreadCnt, sizeof(unreadCnt), "%d", item_data->unreadCnt);
-                       edje_object_part_text_set(_EDJ(ic), "elm.badge.text", unreadCnt);
+       pListData = msg_ui_thread_get_current_list();
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !pListData, NULL);
+
+       if (g_strcmp0(part, "elm.icon.1") == 0) {
+               if (item_data->msg_type == MSG_TYPE_SMS_CB) {
+                       ic = elm_icon_add(obj);
+                       elm_icon_file_set(ic, MSG_UI_THREAD_LIST_CB_ICON, NULL);
+               } else if (item_data->msg_type == MSG_TYPE_SMS_WAPPUSH) {
+                       ic = elm_icon_add(obj);
+                       elm_icon_file_set(ic, MSG_UI_THREAD_LIST_PUSH_ICON, NULL);
+               } else if (item_data->msg_type == MSG_TYPE_SMS_SYNCML) {
+                       ic = elm_icon_add(obj);
+                       elm_icon_file_set(ic, MSG_UI_THREAD_LIST_OTA_ICON, NULL);
+               }
+
+               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) {
+               int i = 0;
+               bool bNumExist = false;
+
+               ic = elm_button_add(obj);
+               elm_object_style_set(ic, "text_only/sweep");
+               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);
+
+               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;
+                       }
+               }
+
+               msg_release_list_struct(&addrList);
+
+               if (bNumExist == false)
+                       elm_object_disabled_set(ic, EINA_TRUE);
+       } else if (g_strcmp0(part, "elm.slide.swallow.2") == 0) {
+               int i = 0;
+               bool bNumExist = false;
+
+               ic = elm_button_add(obj);
+               elm_object_style_set(ic, "text_only/sweep");
+               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);
+
+               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;
+                       }
                }
+
+               msg_release_list_struct(&addrList);
+
+               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/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->isCheck);
+                       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, pData);
+                       evas_object_smart_callback_add(ic, "changed", msg_ui_thread_list_checked_cb, pListData);
                        item_data->chk = ic;
                }
        }
@@ -197,71 +308,349 @@ Evas_Object *msg_ui_thread_gl_content_get(void *data, Evas_Object *obj, const ch
        return ic;
 }
 
-void msg_ui_thread_gl_del(void *data, Evas_Object *obj)
+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->threadTime) {
-                       free(del_data->threadTime);
-                       del_data->threadTime = NULL;
+               if (del_data->thread_time) {
+                       free(del_data->thread_time);
+                       del_data->thread_time = NULL;
                }
                free(del_data);
                del_data = NULL;
        }
 }
 
-char *msg_ui_thread_gl_empty_get(void *data, Evas_Object *obj, const char *part)
+static void __msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_info)
 {
-       char buf[DEF_BUF_LEN] = { '0', };
+       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;
 
-       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");
 
-       if (pData && pData->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"));
+       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.");
+
+       elm_genlist_item_selected_set(item, 0);
+
+       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);
+       }
+
+       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_ui_thread_get_bubble_data(item_data, svc_handle);
+
+                               if (msg_ui_load_composer_ug(svc_handle) == MSG_UI_RET_ERR)
+                                       D_MSG("Failed to load composer ug");
+
+                               service_destroy(svc_handle);
+                       }
+
+                       item_data->unread_cnt = 0;
+                       //elm_genlist_item_update(item);
+                       break;
+               case THREAD_EDIT_VIEW:
+                       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")) {
+               if (item_data->contact_id > 0 && item_data->display_name[0] != '\0') {
+                       snprintf(buf, sizeof(buf), "%s", item_data->display_name);
+               } else {
+                       if (item_data->address[0] != '\0')
+                               snprintf(buf, sizeof(buf), "%s", item_data->address);
+                       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->msg_time, buf, sizeof(buf));
+       } else if (g_strcmp0(part, "elm.text.3") == 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.4") == 0) {
+               if (item_data->is_read == 0)
+                       snprintf(buf, sizeof(buf), "1");
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+               return NULL;
+       }
 
        return strdup(buf);
 }
 
-void msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_info)
+char *msg_ui_thread_search_msg_gl_text_get(void *data, Evas_Object *obj, const char *part)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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->contact_id > 0 && item_data->display_name[0] != '\0') {
+                       snprintf(buf, sizeof(buf), "%s", item_data->display_name);
+               } else {
+                       if (item_data->address[0] != '\0') {
+                               snprintf(buf, sizeof(buf), "%s", item_data->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 (strlen(search_str) > 0) {
+                               const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result);
+                               free(search_str);
+                               return strdup(str);
+                       }
+               }
+       } else if (g_strcmp0(part, "elm.text.2") == 0) {
+               msg_ui_thread_make_time_string(item_data->msg_time, buf, sizeof(buf));
+       } else if (g_strcmp0(part, "elm.text.3") == 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);
+
+               if (item_data->msg_type < MSG_TYPE_MMS) {
+                       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 (strlen(search_str) > 0) {
+                               const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result);
+                               free(search_str);
+                               return strdup(str);
+                       }
+               }
+       } else if (g_strcmp0(part, "elm.text.4") == 0) {
+               if (item_data->is_read == 0)
+                       snprintf(buf, sizeof(buf), "1");
+       } 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.1") == 0) {
+               if (item_data->msg_type == MSG_TYPE_SMS_CB) {
+                       ic = elm_icon_add(obj);
+                       elm_icon_file_set(ic, MSG_UI_THREAD_LIST_CB_ICON, NULL);
+               } else if (item_data->msg_type == MSG_TYPE_SMS_WAPPUSH) {
+                       ic = elm_icon_add(obj);
+                       elm_icon_file_set(ic, MSG_UI_THREAD_LIST_PUSH_ICON, NULL);
+               } else if (item_data->msg_type == MSG_TYPE_SMS_SYNCML) {
+                       ic = elm_icon_add(obj);
+                       elm_icon_file_set(ic, MSG_UI_THREAD_LIST_OTA_ICON, NULL);
+               }
+
+               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/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;
+}
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA) data;
+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;
+               }
+               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;
-       PMSG_APP_THREAD_DATA_S item_data = NULL;
-       bundle *b = NULL;
+       Elm_Object_Item* it_sweep = NULL;
+
+       PMSG_APP_THREAD_MSG_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);
+       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, pData->sel_thread_id == item_data->threadId, "Already selected item.");
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, pListData->sel_msg_id == item_data->msg_id, "Already selected item");
 
        elm_genlist_item_selected_set(item, 0);
 
-       switch (pData->viewmode) {
+       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);
+       }
+
+       switch (pListData->view_mode) {
                case THREAD_NORMAL_VIEW:
                case THREAD_UNLOAD_VIEW:
-                       pData->sel_gen_item = item;
-                       pData->sel_thread_id = item_data->threadId;
-
-                       b = msg_ui_thread_get_bubble_data(item_data);
-
-                       if (msg_ui_load_composer_ug(b) == MSG_UI_RET_ERR)
-                               D_MSG("Failed to load composer ug");
-
-                       if (b)
-                               bundle_free(b);
+                       if (pListData->list_type >= THREAD_SPAM_LIST_TYPE) {
+                               pListData->sel_gen_item = item;
+                               pListData->sel_msg_id = item_data->msg_id;
+
+                               /** update read status */
+                               msg_update_read_status(msg_ui_thread_get_data_handle(), item_data->msg_id, true);
+
+                               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);
+                               } else {
+                                       /** in case of sms, its own SMS viewer view */
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "type SMS");
+                                       msg_ui_thread_launch_msg_detail_view(pListData, item_data);
+                               }
+                       } else {
+                               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;
+
+                               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);
+
+                               pListData->sel_gen_item = item;
+                               pListData->sel_msg_id = item_data->msg_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 {
+                                       msg_ui_thread_get_bubble_data(thread_data, svc_handle);
+
+                                       if (msg_ui_load_composer_ug(svc_handle) == MSG_UI_RET_ERR)
+                                               D_MSG("Failed to load composer ug");
+
+
+                                       service_destroy(svc_handle);
+                               }
+
+                               if (thread_data)
+                                       free(thread_data);
+
+                               msg_release_struct(&threadInfo);
+                               msg_release_struct(&sendOpt);
+                               msg_release_struct(&msgInfo);
+                       }
 
-                       item_data->unreadCnt = 0;
-                       elm_genlist_item_update(item);
+                       item_data->is_read = true;
+                       //elm_genlist_item_update(item);
                        break;
                case THREAD_EDIT_VIEW:
-                       item_data->isCheck = !item_data->isCheck;
+                       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;
@@ -272,6 +661,20 @@ void msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_info)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
+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);
@@ -286,212 +689,1178 @@ void msg_ui_thread_gl_empty_sel(void *data, Evas_Object *obj, void *event_info)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-void msg_ui_thread_list_load(PMSG_THREAD_DATA ThreadData)
+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, 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, 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, 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(PMSG_APP_THREAD_DATELINE_DATA_S));
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !dateline_data, NULL);
+               bzero(dateline_data, sizeof(dateline_data));
+
+               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);
 
-       if (!ThreadData)
+       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_SORT_RULE_S sortRule = { 0, };
-       MSG_THREAD_VIEW_LIST_S peerList = { 0, };
-       PMSG_APP_THREAD_DATA_S cur_sel_thread = NULL;
-       int row;
+       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(ThreadData);
+       __msg_ui_thread_init_genlist(pListData);
 
-       sortRule.sortType = MSG_SORT_BY_THREAD_DATE;
-       sortRule.bAscending = false;
+       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(ThreadData->msgHandle, &sortRule, &peerList);
+       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);
-       ThreadData->thread_cnt = peerList.nCount;
+       pListData->item_cnt = peerList.nCount;
 
-       Evas_Object *swl_ly = elm_object_part_content_get(ThreadData->content_ly, "thread_list");
+       Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list");
 
-       if (peerList.nCount <= 0 || err != MSG_SUCCESS) {
-               elm_object_item_disabled_set(ThreadData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+       pListData->app_data_type = THREAD_LIST_APP_DATA_THREAD;
+       msg_ui_thread_genlist_style_set(pListData);
 
-               if (!ThreadData->noc_ly)
-                       ThreadData->noc_ly = msg_ui_thread_create_nocontent_layout(ThreadData);
+       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 != ThreadData->noc_ly) {
+               if (swl_ly != pListData->noc_ly) {
                        evas_object_hide(swl_ly);
-                       elm_object_part_content_unset(ThreadData->content_ly, "thread_list");
-                       elm_object_part_content_set(ThreadData->content_ly, "thread_list", ThreadData->noc_ly);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly);
                }
 
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+
        } else {
-               if (swl_ly != ThreadData->genlist) {
+               if (swl_ly != pListData->genlist) {
                        evas_object_hide(swl_ly);
-                       elm_object_part_content_unset(ThreadData->content_ly, "thread_list");
-                       elm_object_part_content_set(ThreadData->content_ly, "thread_list", ThreadData->genlist);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
                }
 
-               elm_object_item_disabled_set(ThreadData->toolbar_item[CONTROLBAR_ITEM_1], EINA_FALSE);
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE);
+
+               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;
 
-               for (row = 0; row < peerList.nCount; row++) {
-                       cur_sel_thread = (PMSG_APP_THREAD_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATA_S));
-                       msg_ui_thread_set_msg_data(cur_sel_thread, peerList.msgThreadInfo[row]);
+               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;
 
-                       elm_genlist_item_append(ThreadData->genlist, ThreadData->itc, cur_sel_thread, NULL, ELM_GENLIST_ITEM_NONE, msg_ui_thread_gl_sel, ThreadData);
+                       if (pListData->launch_idler == NULL)
+                               pListData->launch_idler = ecore_idler_add(__msg_ui_thread_msg_list_load_remain_item, pListData);
+               } else {
+                       load_cnt = peerList.nCount;
                }
 
-               msg_release_thread_view_list(&peerList);
+               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;
+
+                       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_DATA ThreadData)
+void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       if (!ThreadData)
+       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_SORT_RULE_S sortRule = { 0, };
-       MSG_THREAD_VIEW_LIST_S peerList = { 0, };
+       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(ThreadData->content_ly, "thread_list");
+       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);
 
-       sortRule.sortType = MSG_SORT_BY_THREAD_DATE;
-       sortRule.bAscending = false;
+       err = msg_get_thread_view_list(pData->msgHandle, sort_rule_t, &peerList);
+       msg_release_struct(&sort_rule_t);
 
-       err = msg_get_thread_view_list(ThreadData->msgHandle, &sortRule, &peerList);
+       pListData->item_cnt = peerList.nCount;
 
        if (peerList.nCount <= 0 || err != MSG_SUCCESS) {
-               elm_object_item_disabled_set(ThreadData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
 
-               if (!ThreadData->noc_ly)
-                       ThreadData->noc_ly = msg_ui_thread_create_nocontent_layout(ThreadData);
+               if (!pListData->noc_ly)
+                       pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
 
-               if (swl_ly != ThreadData->noc_ly) {
+               if (swl_ly != pListData->noc_ly) {
                        evas_object_hide(swl_ly);
-                       elm_object_part_content_unset(ThreadData->content_ly, "thread_list");
-                       elm_object_part_content_set(ThreadData->content_ly, "thread_list", ThreadData->noc_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 (swl_ly != ThreadData->genlist) {
+               if (swl_ly != pListData->genlist) {
                        evas_object_hide(swl_ly);
-                       elm_object_part_content_unset(ThreadData->content_ly, "thread_list");
-                       elm_object_part_content_set(ThreadData->content_ly, "thread_list", ThreadData->genlist);
+                       elm_object_part_content_unset(pListData->content_ly, "thread_list");
+                       elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
                }
 
-               elm_object_item_disabled_set(ThreadData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE);
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE);
 
-               gen_item = elm_genlist_first_item_get(ThreadData->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;
+                       }
 
-               while(gen_item) {
                        cur_sel_thread = elm_object_item_data_get(gen_item);
-                       msg_ui_thread_set_msg_data(cur_sel_thread, peerList.msgThreadInfo[row]);
+                       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_thread_view_list(&peerList);
-
-       elm_genlist_realized_items_update(ThreadData->genlist);
+       msg_release_list_struct(&peerList);
+       elm_genlist_realized_items_update(pListData->genlist);
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-void msg_ui_thread_list_item_update(PMSG_THREAD_DATA ThreadData, MSG_THREAD_ID_T threadId)
+void 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_SORT_RULE_S sortRule = { 0, };
-       MSG_THREAD_VIEW_LIST_S peerList = { 0, };
-       PMSG_APP_THREAD_DATA_S item_data = NULL;
-       PMSG_APP_THREAD_DATA_S insert_data = NULL;
+       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;
 
-       sortRule.sortType = MSG_SORT_BY_THREAD_DATE;
-       sortRule.bAscending = false;
+       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(ThreadData->msgHandle, &sortRule, &peerList);
+       err = msg_get_thread_view_list(msg_ui_thread_get_data_handle(), sort_rule_t, &peerList);
+       msg_release_struct(&sort_rule_t);
        MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS);
 
-       gen_item = elm_genlist_first_item_get(ThreadData->genlist);
+       gen_item = elm_genlist_first_item_get(pListData->genlist);
 
        /* Update genlist item */
        while (gen_item) {
-               item_data = (PMSG_APP_THREAD_DATA_S) elm_object_item_data_get(gen_item);
-               if (item_data && threadId == item_data->threadId) {
+               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)
+       if (!gen_item) {
+               D_EMSG("gen_item is NULL");
+               msg_release_list_struct(&peerList);
                return;
+       }
 
        for (row = 0; row < peerList.nCount; row++) {
-               if (msg_thread_view_get_thread_id(peerList.msgThreadInfo[row]) == threadId) {
-                       insert_data = (PMSG_APP_THREAD_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATA_S));
-                       if (!insert_data)
+               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;
+       }
+
+       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);
+
+       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) {
+               if (old_data->thread_time) {
+                       free(old_data->thread_time);
+                       old_data->thread_time = NULL;
+               }
+               free(old_data);
+       }
+
+       MSG_UI_LEAVE();
+}
+
+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;
+               case THREAD_DRAFT_LIST_TYPE:
+               case THREAD_LOCKED_LIST_TYPE:
+               case THREAD_SCHEDULED_LIST_TYPE:
+               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) {
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+               // 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
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_FALSE);
+
+               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;
+
+                       item = dateline_data->date_it;
+
+                       if (cur_item->is_read == 0)
+                               elm_genlist_item_append(pListData->genlist, &pListData->itc_unread, cur_item, item, ELM_GENLIST_ITEM_NONE, msg_ui_thread_msg_gl_sel, (void *)pListData);
+                       else
+                               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;
+               }
+       }
+       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");
+                       elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", "");
+
+                       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+                               msg_ui_thread_list_update(pListData);
+                               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;
+                       case THREAD_DRAFT_LIST_TYPE:
+                       case THREAD_LOCKED_LIST_TYPE:
+                       case THREAD_SCHEDULED_LIST_TYPE:
+                       default:
+                               D_MSG("[WARNING] invalid view mode");
+                               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);
+               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;
+                       case THREAD_DRAFT_LIST_TYPE:
+                       case THREAD_LOCKED_LIST_TYPE:
+                       case THREAD_SCHEDULED_LIST_TYPE:
+                       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) {
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+
+               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 (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);
+               }
+
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE);
+
+               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]);
+                       if (pListData->search_mode == THREAD_SEARCH_ON) {
+                               if (item_data->is_read == 0)
+                                       elm_genlist_item_item_class_update(gen_item, &pData->itc_search_unread);
+                               else
+                                       elm_genlist_item_item_class_update(gen_item, &pData->itc_search);
+                       } else {
+                               if (item_data->is_read == 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, 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);
+}
+
+void 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");
+                       elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", "");
+
+                       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);
                                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;
+                       case THREAD_DRAFT_LIST_TYPE:
+                       case THREAD_LOCKED_LIST_TYPE:
+                       case THREAD_SCHEDULED_LIST_TYPE:
+                       default:
+                               D_MSG("[WARNING] invalid view mode");
+                               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);
+               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;
+                       case THREAD_DRAFT_LIST_TYPE:
+                       case THREAD_LOCKED_LIST_TYPE:
+                       case THREAD_SCHEDULED_LIST_TYPE:
+                       default:
+                               D_MSG("[WARNING] invalid view mode");
+                               return;
+               }
+               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS);
+       }
 
-                       msg_ui_thread_set_msg_data(insert_data, peerList.msgThreadInfo[row]);
+       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);
        }
 
-       msg_release_thread_view_list(&peerList);
+       if (!gen_item) {
+               D_EMSG("gen_item is NULL");
+               msg_release_list_struct(&msg_list);
+               return;
+       }
 
-       insert_data->chk = item_data->chk;
-       insert_data->isCheck = item_data->isCheck;
+       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);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_list.msgInfo[row]'s msgID = [%d] row = %d ", row_msg_id, row);
+               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;
+       }
+
+       new_data->chk = old_data->chk;
+       new_data->is_check = old_data->is_check;
 
-       elm_object_item_data_set(gen_item, insert_data);
+       if (pListData->search_mode == THREAD_SEARCH_ON) {
+               if (new_data->is_read == 0)
+                       elm_genlist_item_item_class_update(gen_item, &pData->itc_search_unread);
+               else
+                       elm_genlist_item_item_class_update(gen_item, &pData->itc_search);
+       } else {
+               if (new_data->is_read == 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);
 
-       if (ThreadData->viewmode == THREAD_EDIT_VIEW) {
-               if (eina_list_data_find(ThreadData->chk_list, item_data)) {
-                       ThreadData->chk_list = eina_list_remove(ThreadData->chk_list, item_data);
-                       ThreadData->chk_list = eina_list_append(ThreadData->chk_list, insert_data);
+       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 (item_data) {
-               if (item_data->threadTime) {
-                       free(item_data->threadTime);
+       if (old_data) {
+               if (old_data->msg_time) {
+                       free(old_data->msg_time);
+                       old_data->msg_time = NULL;
                }
-               free(item_data);
+               free(old_data);
        }
 
        MSG_UI_LEAVE();
 }
-void msg_ui_thread_genlist_style_set(PMSG_THREAD_DATA ThreadData)
+
+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) {
+               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);
+       }
+
+       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");
+               elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", "");
+
+               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);
+               return EINA_FALSE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Search string word = [%s] ", search_str);
+
+       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_ALLBOX_ID);
+       } else if (pListData->list_type == THREAD_SPAM_LIST_TYPE) {
+               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_SPAMBOX_ID);
+       } else if (pListData->list_type == 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);
+       } else if (pListData->list_type == THREAD_CBMSG_LIST_TYPE) {
+               msg_set_int_value(search_s, MSG_SEARCH_CONDITION_FOLDERID_INT, MSG_CBMSGBOX_ID);
+       }
+       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;
+
+       if (search_str)
+               free(search_str);
+
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_search_message failed!! [%d]", err);
+               elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", "");
+
+               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);
+               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);
+       elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,close", "");
+
+       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;
+               int sim_msg_count = 0;
+
+               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++;
+                                       continue;
+                               } else {
+                                       sim_msg_count++;
+                               }
+                       }
+
+                       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;
+
+                       item = dateline_data->date_it;
+
+                       if (item_data->is_read == 0)
+                               elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_SEARCH_UNREAD), item_data, item, ELM_GENLIST_ITEM_NONE, msg_ui_thread_msg_gl_sel, pListData);
+                       else
+                               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->list_type == THREAD_SIM_LIST_TYPE && sim_msg_count == 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_struct(&search_s);
+       msg_release_list_struct(&search_msg_list);
+
+       return EINA_TRUE;
+}
+
+Eina_Bool __msg_ui_thread_msg_list_load_remain_item(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !ThreadData);
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+
+       if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG)
+               return FALSE;
 
-       ThreadData->itc_thread.item_style = "3text.1icon.custom";
-       ThreadData->itc_thread.func.text_get = msg_ui_thread_gl_text_get;
-       ThreadData->itc_thread.func.content_get = msg_ui_thread_gl_content_get;
-       ThreadData->itc_thread.func.state_get = NULL;
-       ThreadData->itc_thread.func.del = msg_ui_thread_gl_del;
-       ThreadData->itc_thread.decorate_all_item_style = "edit_default";
+       msg_error_t err = MSG_SUCCESS;
+       msg_struct_t sort_rule_t = msg_create_struct(MSG_STRUCT_SORT_RULE);
+       msg_struct_list_s peerList;
 
-       ThreadData->itc_empty.item_style = "1text";
-       ThreadData->itc_empty.func.text_get = msg_ui_thread_gl_empty_get;
-       ThreadData->itc_empty.func.content_get = NULL;
-       ThreadData->itc_empty.func.state_get = NULL;
-       ThreadData->itc_empty.func.del = 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);
+
+       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;
+
+               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 = "4text.1icon.2";
+       pData->itc_search.func.text_get = msg_ui_thread_msg_gl_text_get;
+       pData->itc_search.func.content_get = NULL;
+       pData->itc_search.func.state_get = NULL;
+       pData->itc_search.func.del = msg_ui_thread_msg_gl_del;
+
+       pData->itc_search_unread.item_style = "4text.1icon.1";
+       pData->itc_search_unread.func.text_get = msg_ui_thread_msg_gl_text_get;
+       pData->itc_search_unread.func.content_get = NULL;
+       pData->itc_search_unread.func.state_get = NULL;
+       pData->itc_search_unread.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/slide3";
+               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/slide3";
+               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 = "4text.1icon.2";
+               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";
+
+               pListData->itc_unread.item_style = "4text.1icon.1";
+               pListData->itc_unread.func.text_get = msg_ui_thread_msg_gl_text_get;
+               pListData->itc_unread.func.content_get = msg_ui_thread_msg_gl_content_get;
+               pListData->itc_unread.func.state_get = NULL;
+               pListData->itc_unread.func.del = msg_ui_thread_msg_gl_del;
+               pListData->itc_unread.decorate_all_item_style = "edit_default";
+
+               if (pListData->list_type == THREAD_LOCKED_LIST_TYPE) {
+                       pListData->itc_default.decorate_item_style = "mode/slide4";
+                       pListData->itc_unread.decorate_item_style = "mode/slide4";
+               } else {
+                       pListData->itc_default.decorate_item_style = "mode/slide";
+                       pListData->itc_unread.decorate_item_style = "mode/slide";
+               }
+       }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
index a39bf68..fefb63b 100755 (executable)
  * limitations under the License.
  */
 
+
 #include "msg-ui-thread-main.h"
 
 PMSG_THREAD_DATA g_data = NULL;
 
-
-void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData)
+PMSG_THREAD_DATA msg_ui_thread_get_data(void)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, pData == NULL, "pData is NULL");
-
-       Evas_Object *back_btn = NULL;
-
-       pData->toolbar = elm_toolbar_add(pData->navi_frame);
-       elm_toolbar_shrink_mode_set(pData->toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
-       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, pData->toolbar == NULL, "Navigation controlbar is NULL");
-
-       msg_ui_thread_add_navi_controlbar_item(pData);
-
-       pData->content_ly = msg_ui_thread_create_content_layout(pData);
-       pData->noc_ly = msg_ui_thread_create_nocontent_layout(pData);
-
-       pData->searchbar = msg_ui_thread_create_searchbar_layout(pData);
-       elm_object_part_content_set(pData->content_ly, "sel_all", pData->searchbar);
-
-       pData->genlist = msg_ui_thread_create_genlist(pData);
-       elm_object_part_content_set(pData->content_ly, "thread_list", pData->genlist);
+       if (g_data)
+               return g_data;
+       else
+               return NULL;
+}
 
-       back_btn = elm_button_add(pData->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 *)pData);
-       pData->back_btn = back_btn;
+msg_handle_t msg_ui_thread_get_data_handle(void)
+{
+       if (g_data)
+               return g_data->msgHandle;
+       else
+               return NULL;
+}
 
-       elm_win_conformant_set(pData->win_main, 1);
-       pData->conform = elm_conformant_add(pData->navi_frame);
-       elm_object_style_set(pData->conform, "internal_layout");
+Elm_Genlist_Item_Class* msg_ui_thread_get_itc_type(ThreadItcType type)
+{
+       if (g_data ==  NULL)
+               return NULL;
 
-       evas_object_size_hint_weight_set(pData->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_show(pData->conform);
-       elm_object_content_set(pData->conform, pData->content_ly);
+       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_SEARCH_UNREAD)
+               return &g_data->itc_search_unread;
+       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;
+}
 
-       pData->nf_it = elm_naviframe_item_push(pData->navi_frame, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), back_btn, NULL, pData->conform, NULL);
-       elm_object_item_part_content_set(pData->nf_it, "controlbar", pData->toolbar);
 
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+/* 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 thread_data = NULL;
+       PMSG_THREAD_DATA pData = NULL;
 
-       thread_data = (PMSG_THREAD_DATA)calloc(1, sizeof(MSG_THREAD_DATA));
+       pData = (PMSG_THREAD_DATA)calloc(1, sizeof(MSG_THREAD_DATA));
 
-       if (!thread_data)
+       if (!pData) {
+               D_MSG("calloc error");
                return NULL;
+       }
+       bzero(pData, sizeof(PMSG_THREAD_DATA));
 
-       thread_data->msgHandle = ad->msgHandle;
-
-       thread_data->viewmode = THREAD_NORMAL_VIEW;
-
-       thread_data->win_main = ad->win_main;
-
-       thread_data->th = elm_theme_new();
-       elm_theme_ref_set(thread_data->th, NULL);
-       elm_theme_extension_add(thread_data->th, MSG_THREAD_THEME);
+       g_data = pData;
 
-       g_data = thread_data;
+       pData->msgHandle = ad->msgHandle;
+       pData->win_main = ad->win_main;
+       pData->th = elm_theme_new();
+       elm_theme_ref_set(pData->th, NULL);
+       elm_theme_extension_add(pData->th, MSG_THREAD_THEME);
 
-       msg_ui_thread_reg_msg_cb_func(thread_data);
-       msg_ui_thread_get_locale(thread_data);
-       msg_ui_thread_get_time_format(thread_data);
-       thread_data->time_12h_ptn = msg_common_get_date_best_pattern(thread_data->locale, MSG_UI_TIME_PATTERN_12H);
-       thread_data->time_24h_ptn = msg_common_get_date_best_pattern(thread_data->locale, MSG_UI_TIME_PATTERN_24H);
-       thread_data->date_ptn = msg_common_get_date_best_pattern(thread_data->locale, UDAT_YEAR_NUM_MONTH_DAY);
+       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 = msg_common_get_date_best_pattern(pData->locale, UDAT_YEAR_NUM_MONTH_DAY);
 
        /* Register callback to apply time change. */
-       thread_data->noti_fd = heynoti_init();
-       if (thread_data->noti_fd == -1) {
+       pData->noti_fd = heynoti_init();
+       if (pData->noti_fd == -1) {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_init() is failed!!");
-       }
-       else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "heynoti_init() is success : fd = %d\n", thread_data->noti_fd);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "heynoti_init() is success : fd = %d\n", pData->noti_fd);
 
-               if (heynoti_subscribe(thread_data->noti_fd, "setting_time_changed", msg_ui_thread_timezone_change_cb, (void *)thread_data) == -1) {
+               if (heynoti_subscribe(pData->noti_fd, "setting_time_changed", msg_ui_thread_timezone_change_cb, (void *)pData) == -1) {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_subscribe(setting_time_changed) is failed!!");
                } else {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "heynoti_subscribe(setting_time_changed) is success !!");
                }
 
-               if (heynoti_attach_handler(thread_data->noti_fd) == -1) {
+               if (heynoti_attach_handler(pData->noti_fd) == -1) {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_attach_handler() is failed !!");
                } else {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "heynoti_attach_handler() is success.");
                }
        }
 
-       return (void *)thread_data;
+       return (void *)pData;
 }
 
 void msg_ui_thread_deinit_thread_data(void *data)
@@ -118,73 +119,179 @@ void msg_ui_thread_deinit_thread_data(void *data)
        if (!data)
                return;
 
-       PMSG_THREAD_DATA thread_data = data;
+       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->date_ptn) {
+               free(pData->date_ptn);
+               pData->date_ptn = NULL;
+       }
 
-       if (thread_data->date_ptn) {
-               free(thread_data->date_ptn);
-               thread_data->date_ptn = NULL;
+       if (pData->time_12h_ptn) {
+               free(pData->time_12h_ptn);
+               pData->time_12h_ptn = NULL;
        }
 
-       if (thread_data->time_12h_ptn) {
-               free(thread_data->time_12h_ptn);
-               thread_data->time_12h_ptn = NULL;
+       if (pData->time_24h_ptn) {
+               free(pData->time_24h_ptn);
+               pData->time_24h_ptn = NULL;
        }
 
-       if (thread_data->time_24h_ptn) {
-               free(thread_data->time_24h_ptn);
-               thread_data->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 (thread_data->del_thread) {
-               if (ecore_thread_cancel(thread_data->del_thread) == EINA_FALSE) {
+       if (pData->noti_fd) {
+               if (heynoti_unsubscribe(pData->noti_fd, "setting_time_changed", msg_ui_thread_timezone_change_cb) == -1) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_unsubscribe() is failed !!");
+               }
+               heynoti_close(pData->noti_fd);
+       }
+
+}
+
+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;
+
+       for (i = 0; i < MSG_THREAD_LIST_MAX_COUNT; i++) {
+               if (pData->list_data[i] == NULL) {
+                       pData->list_data[i] = pListData;
+                       break;
+               }
+       }
+       return pListData;
+}
+
+void msg_ui_thread_destroy_thread_list_data(PMSG_THREAD_LIST_DATA pListData)
+{
+       int i = 0, j = 0;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pListData)
+               return;
+
+       if (pListData->del_thread) {
+               if (ecore_thread_cancel(pListData->del_thread) == EINA_FALSE) {
                        D_MSG("ecore_thread_cancel is done.");
                } else {
                        D_MSG("ecore_thread_cancel is failed.");
                }
-               thread_data->del_thread = NULL;
+               pListData->del_thread = NULL;
        }
 
-       if (thread_data->e_timer) {
-               ecore_timer_del(thread_data->e_timer);
-               thread_data->e_timer = 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;
+               }
        }
+}
+
+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;
 
-       if (thread_data->th) {
-               elm_theme_extension_del(thread_data->th, MSG_THREAD_THEME);
-               elm_theme_free(thread_data->th);
-               thread_data->th = 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;
+               }
        }
 
-       if (thread_data->noti_fd) {
-               if (heynoti_unsubscribe(thread_data->noti_fd, "setting_time_changed", msg_ui_thread_timezone_change_cb) == -1) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_unsubscribe() is failed !!");
+       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;
                }
-               heynoti_close(thread_data->noti_fd);
        }
+
+       return pListData;
 }
 
-Evas_Object *msg_ui_thread_create_layout_main(Evas_Object *parent)
+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, parent == NULL, NULL, "parent object is NULL");
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, pData == NULL || pData->win_main == NULL, NULL, "pData is NULL");
 
-       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
        Evas_Object *bg;
        Evas_Object *layout;
 
-       bg = elm_bg_add(parent);
+       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(parent);
+       layout = elm_layout_add(pData->win_main);
        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(parent, bg);
+       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->navi_frame = elm_naviframe_add(layout);
        elm_object_part_content_set(layout, "elm.swallow.content", pData->navi_frame);
 
@@ -193,15 +300,117 @@ Evas_Object *msg_ui_thread_create_layout_main(Evas_Object *parent)
        return layout;
 }
 
-Evas_Object *msg_ui_thread_create_searchbar_layout(PMSG_THREAD_DATA pData)
+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);
+
+       /* 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);
+
+       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->toolbar = msg_ui_thread_create_toolbar(pData->navi_frame);
+       msg_ui_thread_set_navi_controlbar_item(pListData);
+
+       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);
+       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->conform = elm_conformant_add(pData->navi_frame);
+       elm_object_style_set(pListData->conform, "internal_layout");
+       evas_object_size_hint_weight_set(pListData->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(pListData->conform);
+       elm_object_content_set(pListData->conform, pListData->content_ly);
+
+       pListData->back_btn = elm_button_add(pData->navi_frame);
+       elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default");
+       //evas_object_data_set(pListData->back_btn, "more_data", pListData);
+       evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
+
+       switch (pListData->list_type) {
+       case THREAD_NORMAL_LIST_TYPE:
+               strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(label));
+               break;
+       case THREAD_SPAM_LIST_TYPE:
+               strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), sizeof(label));
+               break;
+       case THREAD_SIM_LIST_TYPE:
+               strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), sizeof(label));
+               break;
+       case THREAD_CBMSG_LIST_TYPE:
+               strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), sizeof(label));
+               break;
+       case THREAD_SCHEDULED_LIST_TYPE:
+               strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_HEADER_SCHEDULED_MESSAGE"), sizeof(label));
+               break;
+       case THREAD_DRAFT_LIST_TYPE:
+               strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_DRAFT_ABB"), sizeof(label));
+               break;
+       case THREAD_LOCKED_LIST_TYPE:
+               strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), sizeof(label));
+               break;
+       default:
+               D_MSG("[ERROR] invalid viewmode");
+               return;
+       }
 
-       if (!pData)
+       pListData->nf_it = elm_naviframe_item_push(pData->navi_frame, label, pListData->back_btn, NULL, pListData->conform, NULL);
+       elm_object_item_part_content_set(pListData->nf_it, "controlbar", pListData->toolbar);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+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(pData->content_ly);
+       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);
@@ -215,8 +424,6 @@ Evas_Object *msg_ui_thread_create_searchbar_layout(PMSG_THREAD_DATA pData)
        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"));
 
-       pData->imf_ctx = elm_entry_imf_context_get(entry);
-
        Evas_Object *cancel_button = NULL;
        cancel_button = elm_button_add(layout);
        elm_object_part_content_set(layout, "button_cancel", cancel_button);
@@ -229,10 +436,10 @@ Evas_Object *msg_ui_thread_create_searchbar_layout(PMSG_THREAD_DATA pData)
        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 *)pData);
-       evas_object_smart_callback_add(entry, "unfocused",  msg_ui_thread_searchbar_entry_unfocus_cb, (void *)pData);
-       evas_object_smart_callback_add(cancel_button, "clicked", msg_ui_thread_searchbar_cancel_click_cb, (void *)pData);
-       elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", msg_ui_thread_searchbar_eraser_clicked_cb, (void *)pData);
+       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);
 
@@ -241,35 +448,38 @@ Evas_Object *msg_ui_thread_create_searchbar_layout(PMSG_THREAD_DATA pData)
        return layout;
 }
 
-Evas_Object *msg_ui_thread_create_genlist(PMSG_THREAD_DATA pData)
+Evas_Object *msg_ui_thread_create_genlist(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData)
 {
        D_ENTER;
 
-       if (!pData)
+       if (!pListData)
                return NULL;
 
        Evas_Object *genlist = NULL;
 
-       genlist = elm_genlist_add(pData->content_ly);
+       genlist = elm_genlist_add(parent);
        elm_genlist_homogeneous_set(genlist, EINA_TRUE);
-       elm_object_theme_set(genlist, pData->th);
 
-       msg_ui_thread_genlist_style_set(pData);
+       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);
 
-       pData->itc = &(pData->itc_thread); /* default setting */
+       /** "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(PMSG_THREAD_DATA pData)
+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(pData->navi_frame);
+       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);
@@ -279,14 +489,13 @@ Evas_Object *msg_ui_thread_create_content_layout(PMSG_THREAD_DATA pData)
        return layout;
 }
 
-
-Evas_Object *msg_ui_thread_create_nocontent_layout(PMSG_THREAD_DATA pData)
+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(pData->navi_frame);
+       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"));
 
@@ -295,6 +504,18 @@ Evas_Object *msg_ui_thread_create_nocontent_layout(PMSG_THREAD_DATA pData)
        return noc_layout;
 }
 
+Evas_Object *msg_ui_thread_create_toolbar(Evas_Object *parent)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *toolbar = NULL;
+
+       toolbar = elm_toolbar_add(parent);
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+       return toolbar;
+}
+
 void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -305,68 +526,137 @@ void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-void msg_ui_thread_load_thread_view(void *data, bundle *b)
+void msg_ui_thread_reset_thread_view(void *data, service_h service)
 {
        if (!data)
                return;
 
-       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
 
-       msg_ui_thread_fullview_launch(pData);
+       pListData = msg_ui_thread_get_current_list();
+       if (pListData == NULL)
+               return;
 
-       msg_ui_thread_list_load(pData);
+       if (pListData->search_mode == THREAD_SEARCH_ON)
+               elm_object_focus_set(pListData->searchbar, EINA_TRUE);
 
-       /* Search mode from live-box */
-       if (g_strcmp0(bundle_get_val(b, MSG_BUNDLE_KEY_TYPE), MSG_BUNDLE_VALUE_SEARCH_MODE) == 0) {
-               if (pData->searchbar)
-                       elm_object_focus_set(pData->searchbar, EINA_TRUE);
-       }
+       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);
 
-void msg_ui_thread_reset_thread_view(void *data, bundle *b)
-{
-       if (!data)
-               return;
+       pListData->sel_gen_item = NULL;
+       pListData->sel_thread_id = 0;
+       pListData->sel_msg_id = 0;
+
+       pListData->view_mode = THREAD_NORMAL_VIEW;
 }
 
-PMSG_THREAD_DATA msg_ui_thread_get_data(void)
+void msg_ui_thread_rotation_set(void *data, int rot)
 {
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
 
-       if (g_data)
-               return g_data;
-       else
-               return NULL;
+       if (!pData)
+               return;
 
+       if (rot == THREAD_ROTATE_ANGLE_LANDSCAPE || rot == THREAD_ROTATE_ANGLE_LANDSCAPE_UPSIDEDOWN)
+               pData->isRotate = true;
+       else
+               pData->isRotate = false;
 }
 
-void msg_ui_thread_add_navi_controlbar_item(PMSG_THREAD_DATA pData)
+void msg_ui_thread_set_navi_controlbar_item(PMSG_THREAD_LIST_DATA pListData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       if (!pData)
+       if (!pListData)
                return;
 
-       int i;
+       Evas_Object *toolbar = pListData->toolbar;
+       int i = 0;
 
        for (i = 0; i < MSG_THREAD_CONTROLBAR_ITEM_NUM; i++) {
-               if (pData->toolbar_item[i])
-                       elm_object_item_del(pData->toolbar_item[i]);
+               if (pListData->toolbar_item[i])
+                       elm_object_item_del(pListData->toolbar_item[i]);
        }
 
-       pData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(pData->toolbar, MSG_CONTROLBAR_ICON_EDIT, NULL, \
-                                                                                                                               msg_ui_thread_ctlbar_edit_cb, (void *)pData);
-       pData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, NULL);
-       pData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(pData->toolbar, MSG_CONTROLBAR_ICON_COMPOSE, NULL, \
-                                                                                                                               msg_ui_thread_ctlbar_compose_cb, (void *)pData);
-       pData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(pData->toolbar, NULL, NULL, NULL, NULL);
-
-       if (pData->thread_cnt <= 0)
-               elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
-
-       elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
-       elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_4], EINA_TRUE);
+       if (pListData->view_mode == THREAD_EDIT_VIEW) {
+               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                                                                                                                       msg_ui_thread_ctlbar_del_cb, (void *)pListData);
+               pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+               pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+               pListData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_CANCEL, NULL, \
+                                                                                                                               msg_ui_thread_ctlbar_cancel_cb, (void *)pListData);
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_3], EINA_TRUE);
+       } else {
+               switch (pListData->list_type) {
+                       case THREAD_NORMAL_LIST_TYPE:
+                               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_COMPOSE, NULL, \
+                                                                                                                                               msg_ui_thread_ctlbar_compose_cb, (void *)pListData);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                                                                                                                               msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_MORE, NULL, \
+                                                                                                                                               msg_ui_thread_ctlbar_message_box_cb, pListData);
+
+                               if (pListData->item_cnt <= 0)
+                                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+                               break;
+
+                       case THREAD_SPAM_LIST_TYPE:
+                               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                                                                                                                                       msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_SETTINGS, NULL, \
+                                                                                                                                                       msg_ui_thread_ctlbar_spam_setting_cb, (void *)pListData);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+
+                               if (pListData->item_cnt <=0)
+                                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+
+                               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+                               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_4], EINA_TRUE);
+                               break;
+
+                       case THREAD_CBMSG_LIST_TYPE:
+                       case THREAD_DRAFT_LIST_TYPE:
+                               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                                                                                                                                       msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+
+                               if (pListData->item_cnt <=0)
+                                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+
+                               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+                               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_3], EINA_TRUE);
+                               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_4], EINA_TRUE);
+                               break;
+
+                       case THREAD_LOCKED_LIST_TYPE:
+                       case THREAD_SIM_LIST_TYPE:
+                       case THREAD_SCHEDULED_LIST_TYPE:
+                               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_EDIT, NULL, \
+                                                                                                                                                       msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+                               pListData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+
+                               if (pListData->item_cnt <=0)
+                                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+
+                               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+                               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_3], EINA_TRUE);
+                               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_4], EINA_TRUE);
+                               break;
+                       default:
+                               D_MSG("[ERROR] invalid viewmode");
+                               return;
+               }
+       }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
-
index 0de6db4..1ed004f 100755 (executable)
 
 #include "msg-ui-thread-main.h"
 #include "appsvc.h"
+#include <status.h>
 
-void msg_ui_thread_get_time_format(PMSG_THREAD_DATA pData)
+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 Evas_Object* __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_del_popup_ok_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_thread_del_popup_cancel_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+int msg_ui_thread_launch_voice_call(const char *call_num)
 {
-       int r;
-       enum appcore_time_format timeformat;
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       r = appcore_get_timeformat(&timeformat);
-       if (r == MSG_UI_RET_ERR)
-               timeformat = APPCORE_TIME_FORMAT_UNKNOWN;
+       int ret = -1; /* negative values are error value */
+       service_h svc_handle;
 
-       if (timeformat == APPCORE_TIME_FORMAT_24)
-               pData->time_fmt = MSG_TIME_FORMAT_24H;
-       else
+       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;
+}
+
+int msg_ui_thread_launch_video_call(const char *call_num)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int ret = AUL_R_OK;
+
+       bundle *b = bundle_create();
+
+       if (b) {
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_TYPE, MSG_BUNDLE_VALUE_VCALL_MO);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_HANDLE, MSG_BUNDLE_VALUE_VCALL_HANDLE);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_PARTY_NUM, call_num);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_CLI_CAUSE, MSG_BUNDLE_VALUE_VCALL_FALSE);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_FORWARDED, MSG_BUNDLE_VALUE_VCALL_FALSE);
+
+               ret = aul_launch_app(VIDEO_CALL_PKG_NAME, b);
+
+               bundle_free(b);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return ret;
+}
+
+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);
+               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;
+}
+
+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);
+                       elm_win_resize_object_add(win, base);
+                       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;
+
+       if (ug == pListData->loaded_ug) {
+               ug_destroy(ug);
+               pListData->loaded_ug = NULL;
+       }
+
+       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) {
+               D_EMSG("[ERROR] pListData is NULL");
+               return;
+       }
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+       Evas_Object *detail_layout = NULL;
+       Evas_Object *content = NULL;
+
+       // create layout
+       detail_layout = __msg_ui_thread_create_msg_detail_layout(pData->navi_frame);
+
+       // create content layout
+       content = __msg_ui_thread_create_msg_detail_content(detail_layout, pData, item_data->msg_id);
+       elm_object_part_content_set(detail_layout, "elm.swallow.content", content);
+
+       //push navi item
+       char title[DEF_BUF_LEN] = {0, };
+
+       if (item_data->contact_id > 0 && item_data->display_name[0] != '\0') {
+               strncpy(title, item_data->display_name, sizeof(title)-1);
+       } else {
+               if (item_data->address[0] != '\0')
+                       strncpy(title, item_data->address, sizeof(title)-1);
+               else
+                       strncpy(title, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"), sizeof(title)-1);
+       }
+
+       elm_naviframe_item_push(pData->navi_frame, title, NULL, NULL, 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;
+       }
+
+       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");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       return layout;
+}
+
+static Evas_Object* __msg_ui_thread_create_msg_detail_content(Evas_Object *parent, void *data, int msg_id)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !data, NULL);
+
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+
+       Evas_Object *scroller;
+       Evas_Object *entry;
+
+       char buf[MAX_MSG_TEXT_LEN+1] = {0, };
+       char *str = NULL;
+       msg_error_t err =  MSG_SUCCESS;
+
+       int msgSize = 0;
+       /** create 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);
+
+       /** 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_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 NULL;
+       }
+
+       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 NULL;
+       }
+
+       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 NULL;
+       }
+
+       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(entry, str);
+
+       if (str != NULL) {
+               free(str);
+               str = NULL;
+       }
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       return scroller;
+}
+
+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");
 }
@@ -47,100 +356,146 @@ void msg_ui_thread_get_locale(PMSG_THREAD_DATA pData)
        D_MSG("Locale = %s", pData->locale);
 }
 
-bundle *msg_ui_thread_get_bubble_data(PMSG_APP_THREAD_DATA_S item_data)
+void msg_ui_thread_get_bubble_data(PMSG_APP_THREAD_DATA_S item_data, service_h svc_handle)
 {
        MSG_UI_ENTER();
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !item_data, NULL);
+       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',};
 
-       bundle *b = bundle_create();
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !b, NULL);
-
-       snprintf(buf, DEF_BUF_LEN_S, "%d", item_data->threadId);
-       bundle_add(b, MSG_BUNDLE_KEY_THREAD_ID, buf);
-       bundle_add(b, MSG_BUNDLE_KEY_THREAD_NAME, item_data->threadName);
-       bundle_add(b, MSG_BUNDLE_KEY_THREAD_ADDRESS, item_data->threadAddr);
-       snprintf(buf_contact, DEF_BUF_LEN_S, "%d", item_data->contactId);
-       bundle_add(b, MSG_BUNDLE_KEY_CONTACT_ID, buf_contact);
+       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);
 
        MSG_UI_LEAVE();
-       return b;
 }
 
-void msg_ui_thread_cancel_edit_mode(PMSG_THREAD_DATA pData)
+void msg_ui_thread_cancel_edit_mode(PMSG_THREAD_LIST_DATA pListData)
 {
        D_ENTER;
-
        Elm_Object_Item *it;
-       PMSG_APP_THREAD_DATA_S item_data = NULL;
 
-       elm_check_state_set(pData->sel_all_box, EINA_FALSE);
-
-       it = elm_genlist_first_item_get(pData->genlist);
+       elm_check_state_set(pListData->sel_all_box, EINA_FALSE);
 
+       it = elm_genlist_first_item_get(pListData->genlist);
        while (it) {
-               item_data = (PMSG_APP_THREAD_DATA_S)elm_object_item_data_get(it);
-               if (item_data)
-                       item_data->isCheck = EINA_FALSE;
+               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);
        }
 
-       pData->chk_list = eina_list_free(pData->chk_list);
+       pListData->chk_list = eina_list_free(pListData->chk_list);
 
-       elm_object_part_content_unset(pData->content_ly, "sel_all");
-       evas_object_hide(pData->sel_all_ly);
-       elm_object_part_content_set(pData->content_ly, "sel_all", pData->searchbar);
+       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);
 
-       elm_genlist_decorate_mode_set(pData->genlist, EINA_FALSE);
-       elm_genlist_select_mode_set(pData->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
-
-       pData->viewmode = THREAD_NORMAL_VIEW;
+       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_DATA pData)
+
+void msg_ui_thread_show_normal_mode(PMSG_THREAD_LIST_DATA pListData)
 {
        D_ENTER;
 
-       elm_object_item_text_set(pData->nf_it, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"));
-       elm_naviframe_item_title_visible_set(pData->nf_it, EINA_TRUE);
+       if (pListData->view_mode == THREAD_EDIT_VIEW)
+               msg_ui_thread_cancel_edit_mode(pListData);
 
-       if (pData->viewmode == THREAD_EDIT_VIEW)
-               msg_ui_thread_cancel_edit_mode(pData);
-
-       if (pData->select_info) {
-               evas_object_del(pData->select_info);
-               pData->select_info = NULL;
+       if (pListData->select_info) {
+               evas_object_del(pListData->select_info);
+               pListData->select_info = NULL;
        }
 
-       msg_ui_thread_add_navi_controlbar_item(pData);
+       if (!pListData->back_btn) {
+               PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
 
-       if (!pData->back_btn) {
-               pData->back_btn = elm_button_add(pData->navi_frame);
-               evas_object_smart_callback_add(pData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *) pData);
-               elm_object_style_set(pData->back_btn, "naviframe/back_btn/default");
+               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(pData->nf_it, "prev_btn", pData->back_btn);
+
+       msg_ui_thread_set_navi_controlbar_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"));
+
+       elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn);
+       elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_TRUE);
 
        D_LEAVE;
 }
 
-void msg_ui_thread_select_item_by_thread_id(PMSG_THREAD_DATA pData, int thread_id)
+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(pData->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;
+               }
+
                PMSG_APP_THREAD_DATA_S item_data = (PMSG_APP_THREAD_DATA_S)elm_object_item_data_get(gen_item);
-               if (thread_id == item_data->threadId) {
-                       pData->sel_gen_item = 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;
                }
 
@@ -150,57 +505,170 @@ void msg_ui_thread_select_item_by_thread_id(PMSG_THREAD_DATA pData, int thread_i
        elm_genlist_item_show(gen_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
 }
 
-static void __popup_response_cb(void *data, Evas_Object *obj, void *event_info)
+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->navi_frame);
+
+       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_DATA threadData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
 
        if ((int)event_info != 5 && obj) {
                evas_object_del(obj);
-               threadData->popup = NULL;
+               pListData->popup = NULL;
        }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-void msg_ui_thread_show_notify(PMSG_THREAD_DATA threadData, const char *msg)
+void msg_ui_thread_show_del_popup(PMSG_THREAD_LIST_DATA pListData, const char *msg)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !threadData);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pListData);
 
        Evas_Object *popup;
+       Evas_Object *btn_ok;
+       Evas_Object *btn_cancel;
 
-       popup = elm_popup_add(threadData->navi_frame);
+       popup = elm_popup_add(pListData->content_ly);
 
        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", __popup_response_cb, threadData);
-       elm_popup_timeout_set(popup, 0.8);
+       btn_ok = elm_button_add(popup);
+       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_del_popup_ok_clicked_cb, pListData);
+
+       btn_cancel = elm_button_add(popup);
+       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_del_popup_cancel_clicked_cb, pListData);
+
+       evas_object_data_set(popup, MSG_THREAD_POPUP_DATA, MSG_THREAD_DEL_CONFIRM);
        evas_object_show(popup);
 
-       threadData->popup = popup;
+       pListData->popup = popup;
+
+}
+
+static void __msg_ui_thread_del_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;
+       Elm_Object_Item *it_dateline = NULL;
+       PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
+
+       int err;
+       const Elm_Object_Item *it = NULL;
+
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+
+       it = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+
+       if (!it)
+               goto __UNABLE_TO_DELETE;
+
+       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;
+
+               err = msg_delete_thread_message_list(msg_ui_thread_get_data_handle(), item_data->thread_id);
+               if (err != MSG_SUCCESS)
+                       goto __UNABLE_TO_DELETE;
+       } else {
+               PMSG_APP_THREAD_MSG_DATA_S item_data = elm_object_item_data_get(it);
+               if (!item_data)
+                       goto __UNABLE_TO_DELETE;
+
+               err = msg_delete_message(msg_ui_thread_get_data_handle(), item_data->msg_id);
+               if (err != MSG_SUCCESS)
+                       goto __UNABLE_TO_DELETE;
+       }
+
+       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);
+
+       msg_ui_thread_show_deleted_info(pListData);
+       pListData->item_cnt--;
 
+       if (pListData->item_cnt == 0) {
+               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;
+
+__UNABLE_TO_DELETE:
+       msg_ui_thread_show_notify(pListData, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_DELETE"));
+
+       return;
 }
 
-Evas_Object* msg_ui_thread_show_notify_with_progressbar(PMSG_THREAD_DATA threadData, int count)
+static void __msg_ui_thread_del_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;
 
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, !threadData, NULL);
+       if (pListData->popup) {
+               evas_object_del(pListData->popup);
+               pListData->popup = NULL;
+       }
+}
+
+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);
 
        Evas_Object *popup, *progressbar, *box, *label;
        char buf[DEF_BUF_LEN_S] = {0,};
 
-       popup = elm_popup_add(threadData->navi_frame);
+       popup = elm_popup_add(pListData->content_ly);
 
        label = elm_label_add(popup);
        snprintf(buf, sizeof(buf), "0/%d %s", count, dgettext("sys_string", "IDS_COM_POP_DELETED"));
        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);
@@ -219,41 +687,54 @@ Evas_Object* msg_ui_thread_show_notify_with_progressbar(PMSG_THREAD_DATA threadD
 
        evas_object_show(popup);
 
-       threadData->progressbar = progressbar;
-       threadData->progresslabel = label;
+       pListData->progressbar = progressbar;
+       pListData->progresslabel = label;
 
        return popup;
 }
 
-void msg_ui_thread_show_select_info(PMSG_THREAD_DATA pData)
+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);
 
-       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pData);
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
 
-       if (!pData->select_info) {
-               pData->select_info = elm_notify_add(pData->navi_frame);
-               elm_notify_orient_set(pData->select_info, ELM_NOTIFY_ORIENT_BOTTOM);
+       if (!pListData->select_info) {
+               pListData->select_info = elm_notify_add(pData->navi_frame);
+               elm_notify_orient_set(pListData->select_info, ELM_NOTIFY_ORIENT_BOTTOM);
 
-               pData->selectioninfo_layout = elm_layout_add(pData->navi_frame);
-               elm_object_content_set(pData->select_info, pData->selectioninfo_layout);
+               pListData->selectioninfo_layout = elm_layout_add(pData->navi_frame);
+               elm_object_content_set(pListData->select_info, pListData->selectioninfo_layout);
        }
 
-       elm_layout_theme_set(pData->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_64");
+       if (pData->isRotate)
+               elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "horizontal/bottom_64");
+       else
+               elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_64");
 
-       if (pData->check_cnt == 0) {
-               evas_object_hide(pData->select_info);
-               elm_object_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+       if (pListData->check_cnt == 0) {
+               evas_object_hide(pListData->select_info);
+               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
        } else {
                char text[DEF_BUF_LEN_S] =  {'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_item_disabled_set(pData->toolbar_item[CONTROLBAR_ITEM_1], EINA_FALSE);
+               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_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_FALSE);
        }
 }
 
+void msg_ui_thread_show_deleted_info(PMSG_THREAD_LIST_DATA pListData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pListData);
+
+       status_message_post(dgettext("sys_string", "IDS_COM_POP_DELETED"));
+}
+
 void msg_ui_thread_set_app_state(int app_state)
 {
        if (app_state <= MSG_UI_STATE_NONE || app_state >= MSG_UI_STATE_MAX)
@@ -264,6 +745,17 @@ void msg_ui_thread_set_app_state(int app_state)
        if (!pData)
                return;
 
+       if (app_state == MSG_UI_STATE_PAUSE) {
+               Elm_Object_Item* it_sweep = NULL;
+               PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+
+               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;
 }
 
@@ -274,3 +766,109 @@ int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData)
 
        return pData->app_state;
 }
+
+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();
+
+       time_t cur_t;
+       unsigned long int msg_day, cur_day;
+       int diffday;
+       struct tm msg_time;
+       struct tm cur_time;
+
+       char *date_str = NULL;
+       cur_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;
+
+       diffday = cur_day - msg_day;
+
+       if (diffday == 1)
+               snprintf(buf, buf_len, dgettext("sys_string", "IDS_COM_BODY_YESTERDAY"));
+       else if (diffday > 1) {
+               date_str = msg_common_get_formatted_date(pData->locale, pData->date_ptn, msg_t);
+               snprintf(buf, buf_len, " %s ", date_str);
+       } else {
+               if (pData->time_fmt == MSG_TIME_FORMAT_24H) {
+                       date_str = msg_common_get_formatted_date(pData->locale, pData->time_24h_ptn, msg_t);
+                       snprintf(buf, buf_len, " %s ", date_str);
+               } else { /* MSG_TIME_FORMAT_12H */
+                       date_str = msg_common_get_formatted_date(pData->locale, pData->time_12h_ptn, msg_t);
+                       snprintf(buf, buf_len, " %s ", date_str);
+               }
+       }
+
+       if (date_str)
+               free(date_str);
+}
+
index 38e3f0a..d08ce90 100755 (executable)
@@ -1,15 +1,6 @@
-#define FONT_LIST_ITEM "HelveticaNeueRom"
-
-#define SLP_FONT_BOLD  "SLP:style=Bold";
-#define SLP_FONT_MEDIUM        "SLP:style=Medium";
-#define SLP_FONT_ROMAN "SLP:style=Roman";
-
 #define MSG_UI_SEL_ALL_H       90
-#define GENLIST_PART_LIST_BG_COLOR_INC 0 0 0 255
-#define GENLIST_PART_LIST_PRESS_COLOR_INC 0 140 210 255
-#define GENLIST_PART_LIST_LINE_COLOR_INC 68 68 68 255
 
-#define GENLIST_PART_BASE(param_item_height) \
+#define BEAT_GENLIST_PART_BASE(param_item_height) \
        part \
        { \
                name : "base"; \
                } \
        }
 
-#define GENLIST_PART_BG_IMAGE \
-       part { \
-               name: "bg_image"; \
-               type: RECT; \
-               clip_to: "disclip"; \
-               mouse_events: 0; \
-               description { state: "default" 0.0; \
-               color: GENLIST_PART_LIST_BG_COLOR_INC; \
-       } \
-       description { \
-               state: "selected" 0.0; \
-               inherit: "default" 0.0; \
-               color: GENLIST_PART_LIST_PRESS_COLOR_INC; \
-       } \
-}
-
-#define GENLIST_PART_BOTTOM_LINE \
-       part { \
-               name: "bottom_line"; \
-               type: RECT; \
-               mouse_events: 0; \
-               description { \
-                       state: "default" 0.0; \
-                       min: 0 1; \
-                       fixed: 0 1; \
-                       visible: 1; \
-                       color: GENLIST_PART_LIST_LINE_COLOR_INC; \
-                       rel1 { \
-                               relative: 0.0 1.0; \
-                               offset: 0 -1; \
-                       } \
-               } \
-       }
-
-#define GENLIST_PART_PADDING_TOP( param_padding_size ) \
-       part { name: "elm.padding.top"; \
-            type: RECT; \
-            scale: 1; \
-            description { \
-               state: "default" 0.0; \
-               min: 0 param_padding_size; \
-               fixed: 0 1; \
-               visible: 0; \
-               rel2.relative: 1.0 0.0; \
-               align: 0.0 0.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \
-       part { name: "elm.padding.bottom"; \
-            type: RECT; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               min: 0 param_padding_size; \
-               fixed: 0 1; \
-               visible: 0; \
-               rel1.relative: 0.0 1.0; \
-               align: 0.0 1.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \
-         part { name: "elm.padding.left"; \
-            type: RECT; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               min: param_padding_size 0; \
-               fixed: 1 0; \
-               visible: 0; \
-               rel2.relative: 0.0 1.0; \
-               align: 0.0 0.0; \
-            } \
-         }
-
-#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \
-       part { name: "elm.padding.right"; \
-            type: RECT; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               min: param_padding_size 0; \
-               fixed: 1 0; \
-               visible: 0; \
-               rel1.relative: 1.0  0.0; \
-               align: 1.0 0.0; \
-            } \
-         }
-
- #define GENLIST_DESCRIPTION_FLIP_ENABLED \
-            description { state: "flip_enabled" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 0; \
-            }
-
-
-#define GENLIST_PROGRAM_FLIP_3TEXT_1ICON \
-         program { name: "flip_enabled"; \
-            signal: "elm,state,flip,enabled"; \
-            source: "elm"; \
-            action: STATE_SET "flip_enabled" 0.0; \
-            target: "elm.text.1"; \
-            target: "elm.text.2"; \
-            target: "elm.text.3"; \
-            target: "elm.icon"; \
-            target: "elm.flip.content"; \
-         } \
-         program { name: "flip_disabled"; \
-            signal: "elm,state,flip,disabled"; \
-            source: "elm"; \
-            action: STATE_SET "default" 0.0; \
-            target: "elm.text.1"; \
-            target: "elm.text.2"; \
-            target: "elm.text.3"; \
-            target: "elm.icon"; \
-            target: "elm.flip.content"; \
-         }
-
-#define GENLIST_PART_FLIP \
-         part { name: "elm.flip.content"; \
-            clip_to: "disclip"; \
-            type: SWALLOW; \
-            mouse_events: 1; \
-            scale: 1; \
-            description { state: "default" 0.0; \
-               visible: 0; \
-               fixed: 1 1; \
-               rel1 { \
-                  relative: 1.0  0.5; \
-                  to_x: "elm.padding.left"; \
-               } \
-               rel2 { \
-                  relative: 0.0  0.5; \
-                  to_x: "elm.padding.right"; \
-               } \
-            } \
-            description { state: "flip_enabled" 0.0; \
-               inherit: "default" 0.0; \
-               visible: 1; \
-            } \
-         }
-
- #define GENLIST_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; \
-            } \
-         }
-
-
 collections{
 
        group{
@@ -230,320 +69,7 @@ collections{
                data.item: "treesize" "20";
 
                parts {
-                       GENLIST_PART_BASE(90)
-               }
-       }
-
-       group
-       {
-           name: "msg_frame_badge_ly";
-
-           images {
-                   image : "M01_btn_Unread_message_HD.png" COMP;
-                               image : "M01_btn_Unread_message_white_theme.png" COMP;
-           }
-
-           parts {
-                       part{
-                               name : "base";
-                               type : RECT;
-                               scale : 1;
-                               description{
-                                       state : "default" 0.0;
-                                       min : 64 64;
-                                       rel1 {relative: 0.0 0.0;}
-                                       rel2 {relative: 1.0 1.0;}
-                                       color: 0 0 0 0;
-                               }
-                       }
-               part {
-                   name: "elm.badge.bg";
-                   type: IMAGE;
-                   scale: 1;
-                   description {
-                       state: "default" 0.0;
-                       rel1 { relative: 0.0 0.0; to : "base"; }
-                       rel2 { relative: 1.0 1.0; to : "base"; }
-                       image.normal: "M01_btn_Unread_message_HD.png";
-                       image.border: 20 20 20 20;
-                       image.border_scale:1;
-                   }
-                   description {
-                       state: "white-theme" 0.0;
-                       inherit : "default" 0.0;
-                       image.normal: "M01_btn_Unread_message_white_theme.png";
-                       image.border: 5 5 5 5;
-                       image.border_scale:1;
-                   }
-
-               }
-
-               part {
-                   name: "elm.badge.text";
-                               type: TEXT;
-                   scale: 1;
-                   description {
-                       state: "default" 0.0;
-                       fixed: 1 1;
-                       rel1 { relative: 0.0 0.0; to: "elm.badge.bg"; }
-                       rel2 { relative: 1.0 1.0; to: "elm.badge.bg"; }
-                       text {
-                               font: "SLP";
-                               size: 32;
-                               min: 1 1;
-                               align: 0.5 0.5;
-                       }
-                       color: 0 0 0 255;
-                   }
-                   description {
-                       state: "white-theme" 0.0;
-                       inherit : "default" 0.0;
-                       color: 255 255 255 255;
-                   }
-               }
-           }
-               programs {
-                       program {
-                               name: "white_theme";
-                               signal: "unread_icon_change";
-                               action: STATE_SET "white-theme" 0.0;
-                               target: "elm.badge.bg";
-                               target: "elm.badge.text";
-                       }
-               }
-
-       }
-       group {
-               name: "elm/genlist/item/3text.1icon.custom/default";
-               alias: "elm/genlist/item_odd/3text.1icon.custom/default";
-               alias: "elm/genlist/item_compress/3text.1icon.custom/default";
-               alias: "elm/genlist/item_compress_odd/3text.1icon.custom/default";
-               data.item: "stacking" "above";
-               data.item: "selectraise" "on";
-               data.item: "texts" "elm.text.1 elm.text.2 elm.text.3";
-               data.item: "contents" "elm.icon";
-               data.item: "flips" "elm.flip.content";
-               images {
-                       image: "00_list_bar_press_1x80.png" COMP;
-               }
-               parts {
-                       GENLIST_PART_BASE(129)
-                       GENLIST_PART_BG_IMAGE
-                       GENLIST_PART_BOTTOM_LINE
-                       GENLIST_PART_PADDING_TOP( 10 )
-                       GENLIST_PART_PADDING_BOTTOM( 10 )
-                       GENLIST_PART_PADDING_LEFT( 16 )
-                       GENLIST_PART_PADDING_RIGHT( 16 )
-                       part {
-                               name: "elm.text.3";
-                               clip_to: "disclip";
-                               type: TEXT;
-                               mouse_events: 0;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 133 48;
-                                       fixed: 1 1;
-                                       rel1 {
-                                               relative: 0.0 0.0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.padding.bottom";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 0.0;
-                                               to_x: "elm.padding.right";
-                                               to_y: "elm.padding.bottom";
-                                       }
-                                       align: 1.0 1.0;
-                                       color: 100 100 100 255;
-                                       text {
-                                               font: "SLP:style=Medium";
-                                               size: 24;
-                                               min: 0 1;
-                                               align: 1.0 0.5;
-                                       }
-                               }
-                               description {
-                                       state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: 249 249 249 255;
-                               }
-                               GENLIST_DESCRIPTION_FLIP_ENABLED
-                       }
-
-                       part {
-                               name: "elm.padding.text3.left";
-                               clip_to: "disclip";
-                               type: RECT;
-                               mouse_events: 0;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 32 0;
-                                       fixed: 1 0;
-                                       rel1.to_x: "elm.text.3";
-                                       rel2 {
-                                               relative: 0.0 1.0;
-                                               to_x: "elm.text.3";
-                                       }
-                                       align: 1.0 0.5;
-                                       visible: 0;
-                               }
-                       }
-                       part {
-                               name: "elm.icon";
-                               clip_to: "disclip";
-                               type: SWALLOW;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       min: 32 32;
-                                       max: 32 32;
-                                       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.text.3";
-                                       }
-                                       align: 1.0 0.5;
-                               }
-                               GENLIST_DESCRIPTION_FLIP_ENABLED
-                       }
-                       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;
-                                       rel1 {
-                                               relative: 1.0 1.0;
-                                               to_x: "elm.padding.left";
-                                               to_y: "elm.padding.top";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 0.0;
-                                               to_x: "elm.padding.icon.left";
-                                               to_y: "elm.text.3";
-                                       }
-                                       align: 0.0 0.5;
-                                       color: 249 249 249 255;
-                                       text {
-                                               font: "SLP:style=Roman";
-                                               size: 44;
-                                               min: 0 1;
-                                               align: 0.0 0.5;
-                                       }
-                               }
-                               description {
-                                       state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: 249 249 249 255;
-                               }
-                               GENLIST_DESCRIPTION_FLIP_ENABLED
-                       }
-                       part { name: "elm.text.2";
-                               clip_to: "disclip";
-                               type: TEXT;
-                               mouse_events: 0;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       rel1 {
-                                               relative: 1.0 1.0;
-                                               to_x: "elm.padding.left";
-                                               to_y: "elm.text.1";
-                                       }
-                                       rel2 {
-                                               relative: 0.0 0.0;
-                                               to_x: "elm.padding.text3.left";
-                                               to_y: "elm.padding.bottom";
-                                       }
-                                       align: 0.0 0.5;
-                                       color: 100 100 100 255;
-                                       text {
-                                               font: "SLP:style=Medium";
-                                               size: 32;
-                                               min: 0 1;
-                                               align: 0.0 0.5;
-                                       }
-                               }
-                               description {
-                                       state: "selected" 0.0;
-                                       inherit: "default" 0.0;
-                                       color: 249 249 249 255;
-                               }
-                               GENLIST_DESCRIPTION_FLIP_ENABLED
-                       }
-                       GENLIST_PART_FLIP
-                       GENLIST_PART_DISCLIP
-               }
-               programs {
-               // signal: elm,state,%s,active
-               //   a "check" item named %s went active
-               // signal: elm,state,%s,passive
-               //   a "check" item named %s went passive
-               // default is passive
-                       program {
-                               name: "go_active";
-                               signal: "elm,state,selected";
-                               source: "elm";
-                               action: STATE_SET "selected" 0.0;
-                               target: "bg_image";
-                               target: "elm.text.1";
-                               target: "elm.text.2";
-                               target: "elm.text.3";
-                       }
-                       program {
-                               name: "go_passive";
-                               signal: "elm,state,unselected";
-                               source: "elm";
-                               action: STATE_SET "default" 0.0;
-                               target: "bg_image";
-                               target: "elm.text.1";
-                               target: "elm.text.2";
-                               target: "elm.text.3";
-                               transition: LINEAR 0.1;
-                       }
-                       program {
-                               name: "go_disabled";
-                               signal: "elm,state,disabled";
-                               source: "elm";
-                               action: STATE_SET "disabled" 0.0;
-                               target: "disclip";
-                       }
-                       program {
-                               name: "go_enabled";
-                               signal: "elm,state,enabled";
-                               source: "elm";
-                               action: STATE_SET "default" 0.0;
-                               target: "disclip";
-                       }
-                       GENLIST_PROGRAM_FLIP_3TEXT_1ICON
+                       BEAT_GENLIST_PART_BASE(90)
                }
        }
 }
diff --git a/viewer/CMakeLists.txt b/viewer/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..90f71c9
--- /dev/null
@@ -0,0 +1,65 @@
+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-item-list.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..64aead4
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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..eed71be
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_VIEWER_DRM_UTILITY_H__
+#define __MSG_VIEWER_DRM_UTILITY_H__
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include "msg-ui-viewer-types.h"
+#include <drm_trusted_client.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;
+
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef struct {
+       DRM_DECRYPT_HANDLE consume_handle;
+} MSG_UI_DRM_CONSUME_S;
+
+/*==================================================================================================
+ *                                                                     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);
+
+/*
+ *@fn          msg_ui_viewer_consume_ro_start(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type, MSG_UI_DRM_CONSUME_S *consume_t);
+ *@brief               This function is used to start to consume ro
+ * @param[in] filepath filepath
+ * @param[in] permission_type permission type to be shown/played
+ * @param[out] consume_t consume handle will be set
+ * @return     return TRUE if consume routine is started well, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_consume_ro_start(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type, MSG_UI_DRM_CONSUME_S *consume_t);
+
+/*
+ *@fn          msg_ui_viewer_consume_ro_pause(MSG_UI_DRM_CONSUME_S *consume_t);
+ *@brief               This function is used to pause consume ro, this is used for DRM 2.0(accumulated type)
+ * @param[in] consume_t consume handle
+ * @return     return TRUE if consume routine is puased well, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_consume_ro_pause(MSG_UI_DRM_CONSUME_S *consume_t);
+
+/*
+ *@fn          msg_ui_viewer_consume_ro_resume(MSG_UI_DRM_CONSUME_S *consume_t);
+ *@brief               This function is used to resume consume ro, this is used for DRM 2.0(accumulated type)
+ * @param[in] consume_t consume handle
+ * @return     return TRUE if consume routine is resumed well, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_consume_ro_resume(MSG_UI_DRM_CONSUME_S *consume_t);
+
+/*
+ *@fn          msg_ui_viewer_consume_ro_stop(MSG_UI_DRM_CONSUME_S *consume_t);
+ *@brief               This function is used to stop and close consume ro
+ * @param[in] consume_t consume handle
+ * @return     return TRUE if consume routine is stopped and closed well, else FALSE
+ */
+MSG_BOOL msg_ui_viewer_consume_ro_stop(MSG_UI_DRM_CONSUME_S *consume_t);
+
+/*
+ *@fn          msg_ui_viewer_get_buffer_from_drm_file(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type, unsigned int *buffer_size)
+ *@brief               This function is used to get raw data from drm file
+ *@param[in] filepath filepath of drm file
+ *@param[in] permission_type permission type to be shown/played
+ *@param[out] buffer_size buffer size of raw data
+ *@return      return allocated raw data pointer of drm file, else NULL.
+ *@Caution     Caller should free return pointer after using data.
+ */
+unsigned char *msg_ui_viewer_get_buffer_from_drm_file(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type, unsigned int *buffer_size);
+
+#endif
+
diff --git a/viewer/include/msg-ui-viewer-item-list.h b/viewer/include/msg-ui-viewer-item-list.h
new file mode 100755 (executable)
index 0000000..8671b82
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MSG_VIEWER_ITEM_LIST_H__
+#define __MSG_VIEWER_ITEM_LIST_H__
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include <msg.h>
+#include "msg-ui-viewer-types.h"
+
+#include <Ecore.h>
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_MAX_GROUP_LABEL 2
+#define MSG_BUFFER_SIZE_64 64
+/*==================================================================================================
+ *                                                                             ENUMERATIONS
+ *==================================================================================================*/
+typedef enum {
+       MSG_MEDIA_INVALID = 0,
+       MSG_MEDIA_IMG,
+       MSG_MEDIA_AUDIO,
+       MSG_MEDIA_VIDEO,
+       MSG_MEDIA_TEXT,
+       MSG_MEDIA_ANIMATE,
+       MSG_MEDIA_IMG_OR_VIDEO,
+       MSG_MEDIA_ATTACH,       /*for attachment*/
+       MSG_MEDIA_DRM,          /*for DRM content*/
+} MSG_MEDIA_TYPE_E;
+
+typedef enum {
+       ITEM_LIST_INFO_INVALID = 0,
+       ITEM_LIST_INFO_INSERT_FILE,
+       ITEM_LIST_INFO_ATTACH_FILE,
+} MSG_ITEM_LIST_INFO_E;
+
+/*==================================================================================================
+ *                                                                             STRUCTURES
+ *==================================================================================================*/
+typedef struct {
+       int     index;
+       char    *group_label;
+} MSG_GROUP_LABEL_S;
+
+typedef struct {
+       void    *viewer_main;
+       Evas_Object     *main_window;
+       Evas_Object     *navi_frame;
+       Evas_Object     *popup;
+       Evas_Object     *genlist;
+
+       msg_handle_t    msgHandle;      /*ipc handler between viewer and MF*/
+       msg_message_id_t        msgID;
+       msg_struct_t    mms_t;
+
+       int     insert_item_count;      /*inserted content's count, image, sound, video and etc.*/
+       int     attach_item_count;
+       Eina_List       *insert_list;
+       Eina_List       *attach_list;
+
+       Elm_Object_Item *group_item_class;
+       Elm_Genlist_Item_Class  item_class;
+       Elm_Genlist_Item_Class  title_class;
+
+       MSG_GROUP_LABEL_S       group_list[MSG_MAX_GROUP_LABEL];
+} MSG_ITEM_LIST_DATA_S;
+
+typedef struct {
+       char    pfile_name[MSG_VIEWER_FILENAME_MAX_LEN + 1];
+       char    pfile_path[MSG_VIEWER_FILEPATH_MAX_LEN + 1];
+       MSG_MEDIA_TYPE_E        emedia_type;
+       MSG_ITEM_LIST_DATA_S    *item_list_data;
+} MSG_MEDIA_INFO_S;
+
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+void msg_ui_viewer_init_item_list(void *data);
+MSG_BOOL msg_ui_viewer_create_item_list_view(void *data);
+void msg_ui_viewer_destroy_item_list(void *data);
+
+#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..14aa7f0
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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-item-list.h"
+#include "msg-ui-viewer-drm-list.h"
+#include "msg-ui-viewer-play-view.h"
+
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+/*==================================================================================================
+ *                                                                             DEFINITIONS
+ *==================================================================================================*/
+#define MSG_VIEWER_THEME       EDJDIR"/msg_viewer.edj"
+
+/*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_ITEM_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 include item list*/
+       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_ITEM_LIST_DATA_S    *item_list_view;
+       MSG_PLAY_DATA_S *player_view;
+
+       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);
+/* 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..cdac2a6
--- /dev/null
@@ -0,0 +1,310 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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.h>
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+/*==================================================================================================
+ *                                                                     DEFINITIONS
+ *==================================================================================================*/
+#define VIEWER_TITLE_MENU_GENLIST_MAX_ITEM 3
+#define VIEWER_TITLE_MENU_LINE_HEIGHT 129
+#define VIEWER_ATTACH_GL_ITEM_HEIGHT 114
+#define VIEWER_ATTACH_POPUP_WIDTH 620
+#define VIEWER_TITLE_FONT_LEN 100
+#define VIEWER_TITLE_FONT_STYLE_LEN 60
+#define VIEWER_SUBJECT_MAX_LEN 40
+#define VIEWER_SUBJECT_LINE_WRAP_LENGTH 560
+#define VIEWER_NAVI_FRAME_HEIGHT       98
+#define VIEWER_PAGE_NAVI_ICON_WIDTH    38
+#define VIEWER_PAGE_NAVI_ICON_HEIGHT   38
+#define VIEWER_COLOR_128 128
+#define VIEWER_COLOR_255 255
+
+#define VIEWER_PLAY_CONTROLLER_LIFETIME 3
+#define VIEWER_PLAY_CONTROLLER_PROGRESSBAR_TIME 1
+#define VIEWER_PLAY_CONTROLLER_HEIGHT 120
+#define VIEWER_NAVIFRAME_BOTTOM_H 114
+
+#define VIEWER_DETAILS_TEXT_SPACE " "
+#define VIEWER_DETAILS_TEXT_COMMA ", "
+#define VIEWER_DETAILS_TEXT_DASH " - "
+#define VIEWER_DETAILS_TEXT_LEFT_BRACE "("
+#define VIEWER_DETAILS_TEXT_RIGHT_BRACE ")"
+#define VIEWER_DETAILS_TEXT_LINE_FEED "<br>"
+#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_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_ADD_TO_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 {
+       VIEWER_NORMAL_POPUP,
+       VIEWER_SAVE_MODE_POPUP,
+       VIEWER_DELETE_MSG_MODE_POPUP,
+} MSG_VIEWER_POPUP_MODE_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;
+
+/*==================================================================================================
+ *                                                                             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 *ctrl_toolbar;                              /* control toolbar */
+       Evas_Object *title_toolbar;                     /* title tolbar(optionheader) */
+
+       Evas_Object *title_box_layout;                  /* title box layout for genlist */
+       Evas_Object *title_genlist;                             /* title genlist for multirecipients */
+       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 *prev_button;                               /* prev button */
+       Evas_Object *next_button;                               /* next button */
+       Evas_Object *help_page_gl;                      /* help page genlist */
+
+       Evas_Object *save_attachment_gl;                /* save attachments genlist(controlbar menu) */
+       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 */
+       Elm_Object_Item *toolbar_item[3];               /* title button toolbar items */
+       Elm_Object_Item *ctrltoolbar_item[4];   /* control toolbar items */
+
+       Evas_Object *popup;                                     /*simple popup*/
+       MSG_VIEWER_POPUP_MODE_E popup_mode;     /*simple popup or saved mode popup*/
+       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 bgcolor;
+       Ecore_Idler *del_idler;
+       Ecore_Timer *play_controller_timer;
+       Ecore_Timer *play_controller_progressbar_timer;
+
+       int ctrl_start_x;               /* play controller mouse pointer */
+       int ctrl_start_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_optionheader_opened; /* check if title button option is opened*/
+       bool playcontroller_opened;             /*check play controller is shown or not */
+
+       int totalProgressTime;          /* total progress time for all slide*/
+       int elapsedProgressTime;                /*progress time from 1st slide to current slide*/
+
+       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 */
+
+       MSG_VIEWER_ADDR_LIST addr_list;         /* current only thread address list*/
+
+       Elm_Theme *title_th;                    /* title button theme*/
+       Elm_Theme *progress_th;         /* progressbar theme*/
+} 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_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);
+Evas_Object *msg_ui_viewer_create_title_toolbar(void *data);
+void msg_ui_viewer_add_title_toolbar_item(Evas_Object *toolbar, void *data);
+Evas_Object *msg_ui_viewer_create_title_toolbar_btn(Evas_Object *parent, char *icon_path, char *button_text);
+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);
+
+/* ========================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);
+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_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_stop_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);
+
+/* 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);
+void msg_ui_viewer_command_play_pause(void *data);
+void msg_ui_viewer_update_player_state_after_save(void *data);
+
+/* 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_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 */
+void msg_ui_viewer_contact_info_update(MSG_PLAY_DATA_S *data);
+#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..1854997
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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/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
+
+#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..9dd6f26
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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
+
+/*==================================================================================================
+ *                                                                             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);
+
+/*
+ *@fn          msg_ui_viewer_auto_rename(char *src_path, char *dst_path);
+ *@brief               saving duplicated filename without collision by adding extenstion(_XX) in msg viewer
+ *@param[in] src_path src file path
+ *@param[in] dst_path dest file path to be saved
+ *@return      return TRUE when function operation was successful.
+ *@Caution     Caller should free returned temp path after using it.
+ */
+MSG_BOOL msg_ui_viewer_auto_rename(char *src_path, char *dst_path);
+#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..7b0f366
--- /dev/null
@@ -0,0 +1,234 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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_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..e4d4c6a
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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_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..69dbd94
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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_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..02dab1e
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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_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..4dd88c9
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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 {
+       int     font_size;
+       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;
+       Evas_Object     *viewer_body;   /*it shows text , entry*/
+
+       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*/
+       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;
+       void    *appUserData;
+
+       VIEWER_COLORREF bgcolor;
+       MSG_BOOL        ismute; /*sound, video mute mode when silent mode*/
+
+       MSG_UI_DRM_CONSUME_S    display_drm_consume;    /*drm consume handle for image*/
+       MSG_UI_DRM_CONSUME_S    play_drm_consume;       /*drm consume handle for sound, video*/
+
+       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);
+
+/**
+*@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);
+MSG_BOOL _msg_smil_render_show_help_page_attach_list(SMIL_RENDERER_DATA_S *viewerRenderData);
+
+/*==================================================================================================
+ *                                                                             Media related functions
+ *==================================================================================================*/
+MSG_BOOL _msg_smil_render_show_inserted_audio(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path);
+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 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..6cfada9
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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,
+       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,   /*Puase player by interrupted earjack off*/
+       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;
+} 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        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);
+
+#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..43e3039
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __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..0f956de
--- /dev/null
@@ -0,0 +1,1193 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ *==================================================================================================*/
+#include <mm_file.h>
+#include <mmf/mm_error.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");
+                               if (firstSlide == NULL) {
+                                       return NULL;
+                               } else
+                               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_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_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;
+
+       /*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);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "smilContMgrHndle->msg_info_t = 0x%x", smilContMgrHndle->msg_info_t);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       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;
+                       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);
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mediaCnt = %d", mediaCnt);
+                                       while (index < mediaCnt) {
+                                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+                                               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;
+
+                                                       //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;
+                                                               MMHandleType content_attrs = 0;
+
+                                                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "tempMedia->szFilePath is %s", szFilePath);
+
+                                                               ret = mm_file_create_content_attrs(&content_attrs, szFilePath);
+
+                                                               if (ret == MM_ERROR_NONE) {
+                                                                       char *error = NULL;
+
+                                                                       ret = mm_file_get_attrs(content_attrs, &error, MM_FILE_CONTENT_DURATION, &duration, NULL);
+
+                                                                       if (ret != MM_ERROR_NONE) {
+                                                                               if (error) {
+                                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mm_file_get_attrs is failed - ret(%x), error(%s)", ret, error);
+                                                                                       free(error);
+                                                                               } else {
+                                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mm_file_get_attrs is failed - ret(%x)", ret);
+                                                                               }
+                                                                       }
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "file : %s, duration : %f", szFilePath, (double)duration);
+
+                                                                       if (content_attrs)
+                                                                               mm_file_destroy_content_attrs(content_attrs);
+                                                               } else {
+                                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mm_file_create_content_attrs is failed - ret(%x)", ret);
+                                                               }
+                                                       }
+
+
+                                                       //ceiling duration time
+                                                       double ceilvalue = ceil((double)duration/1000)*1000;
+                                                       if (maximum_time <= ceilvalue)
+                                                               maximum_time = ceilvalue;
+                                               } else {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Current media type(%d) is follow page duration time. skip checking..", mediaType);
+                                               }
+                                               index++;
+                                       }
+                               }
+
+                               pagetime = maximum_time;
+                       }
+
+                       total_time += pagetime;
+
+                       slideIdx++;
+               }
+       }
+
+       *time = total_time;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "total slide time is %f", *time);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       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..0af9ffe
--- /dev/null
@@ -0,0 +1,1299 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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);
+
+       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)) {
+                                               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) {
+                                               /* 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) {
+                                               /* 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);
+               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);
+
+               _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;
+
+                               _msg_smil_event_mgr_set_render_event(smilEvntMgrHndle, SMIL_RENDER_EVENT_ERROR);
+                               slideTimerCbData->appSmilCb(&(slideTimerCbData->curSlideParam->clientCbParam), slideTimerCbData->appUserData);
+
+                               return err;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "smilRenderer is NULL");
+                       rendering_failed = TRUE;
+               }
+
+               /*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);
+                       }
+               }
+       } 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;
+       }
+
+       /* Update status as PLAYER_STATUS_PLAY_END */
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "CALL UPDATE AT PLAY END");
+       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_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_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..2855d96
--- /dev/null
@@ -0,0 +1,1411 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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 <mm_player.h>
+#include <mm_session.h>
+#include <utilX.h>
+#include <Ecore_X.h>
+#include <E_DBus.h>
+/*For Multimedia element width, height.*/
+#include "mm_file.h"
+
+/*for direct video displaying*/
+#include <mm_player_internal.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);
+static MSG_BOOL __msg_smil_render_player_mgr_mute(void *data);
+static MSG_BOOL __msg_smil_render_player_mgr_set_msg_cb(MMMessageCallback 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);
+static MSG_BOOL __msg_smil_render_play_video_file(SMIL_RENDERER_DATA_S *viewerRenderData, const char *path);
+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_msg_cb(int msg_type, void *msg_param, void *user_param);
+static int __msg_smil_render_video_stream_cb(void *stream, int stream_size, void *user_param, int width, int height);
+
+/*================================================================================================
+ *                                                             FUNCTION IMPLEMENTATIONS
+ *================================================================================================*/
+static MMHandleType _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 = MM_ERROR_NONE;
+
+       if (__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = mm_player_create(&_player)) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_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 = MM_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = mm_player_realize(_player)) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_realize Error = %x", 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);
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if (mm_player_unrealize(_player) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_unrealize is failed");
+               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 (mm_player_destroy(_player) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_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 = MM_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = mm_player_start(_player)) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_start is failed err = 0x%x", 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 = MM_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = mm_player_pause(_player)) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_pause is failed err = 0x%x", err);
+               return FALSE;
+       }
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_PAUSED;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_resume(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 = MM_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = mm_player_resume(_player)) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_resume is failed err = 0x%x", 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 = MM_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = mm_player_set_mute(_player, TRUE)) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_set_mute is failed err = 0x%x", 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 = MM_ERROR_NONE;
+               if ((err = mm_player_stop(_player)) != MM_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_stop is failed err = 0x%x", err);
+                       return FALSE;
+               }
+       }
+       viewerRenderData->player_state = MEDIA_PLAYER_STATE_STOP;
+
+       return TRUE;
+}
+
+
+static MSG_BOOL __msg_smil_render_player_mgr_set_msg_cb(MMMessageCallback cb, void *user_data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       int err = MM_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = mm_player_set_message_callback(_player, cb, user_data)) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_set_message_callback is failed err = 0x%x", 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 = MM_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       if ((err = mm_player_set_video_stream_callback(_player, cb, user_data)) != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_set_video_stream_callback is failed err = 0x%x", 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 = MM_ERROR_NONE;
+       char *perr_name = NULL;
+       int resized_width = 0;
+       int resized_height = 0;
+       int path_len = strlen(path);
+
+       if (!__msg_smil_render_is_player_active())
+               return FALSE;
+
+       /*avsysaudiosink volume table setting*/
+       err = mm_player_set_attribute(_player, &perr_name,
+                                                                       "sound_volume_type", MM_SOUND_VOLUME_TYPE_MEDIA,
+                                                                       "sound_priority", MM_SOUND_PRIORITY_1,
+                                                                       "sound_fadeup", 0,
+                                                                       "sound_route", MM_AUDIOROUTE_PLAYBACK_NORMAL,
+                                                                       NULL);
+       if (err != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_set_attribute is failed. err = %x, perr_name = (%s)", err, perr_name);
+               free(perr_name);
+               return FALSE;
+       }
+
+       err = mm_player_set_attribute(_player, &perr_name,
+                                                                       "profile_uri", path, path_len,
+                                                                       NULL);
+       if (err != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_set_attribute is failed. err = %x, perr_name = (%s)", err, perr_name);
+               free(perr_name);
+               return FALSE;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mediaType = %d", mediaType);
+       if (mediaType == MMS_SMIL_MEDIA_VIDEO) {
+               err = mm_player_set_attribute(_player, &perr_name,
+                                                                               "display_rotation", MM_DISPLAY_ROTATION_NONE,
+                                                                               NULL);
+               if (err != MM_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_set_attribute is failed. err = %x, perr_name = (%s)", err, perr_name);
+                       free(perr_name);
+                       return FALSE;
+               }
+
+               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;
+               }
+
+               err = mm_player_set_attribute(_player, &perr_name,
+                                                                               "display_width", resized_width,
+                                                                               "display_height", resized_height,
+                                                                               NULL);
+               if (err != MM_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_set_attribute is failed. err = %x, perr_name = (%s)", err, perr_name);
+                       free(perr_name);
+                       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;
+       char *perr_name = NULL;
+       int err = MM_ERROR_NONE;
+
+       if (!__msg_smil_render_is_player_active()) {
+               viewerRenderData->video_duration_idle = NULL;
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       err = mm_player_get_attribute(_player, &perr_name, "content_duration", &duration, NULL);
+       if (err != MM_ERROR_NONE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_get_attribute is failed err = %x, pErrName = (%s)", err, perr_name);
+               if (perr_name)
+                       free(perr_name);
+       }
+
+       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->display_drm_consume.consume_handle)
+               msg_ui_viewer_consume_ro_pause(&viewerRenderData->display_drm_consume);
+
+       if (viewerRenderData->play_drm_consume.consume_handle)
+               msg_ui_viewer_consume_ro_pause(&viewerRenderData->play_drm_consume);
+
+       if (viewerRenderData->video_update_timer)
+               ecore_timer_freeze(viewerRenderData->video_update_timer);
+
+       if (viewerRenderData->insert_image && elm_icon_animated_available_get(viewerRenderData->insert_image))
+               elm_icon_animated_play_set(viewerRenderData->insert_image, EINA_FALSE);
+
+       /* enable copy and paste popup */
+       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->display_drm_consume.consume_handle)
+               msg_ui_viewer_consume_ro_resume(&viewerRenderData->display_drm_consume);
+
+       if (viewerRenderData->play_drm_consume.consume_handle)
+               msg_ui_viewer_consume_ro_resume(&viewerRenderData->play_drm_consume);
+
+       if (viewerRenderData->video_update_timer)
+               ecore_timer_thaw(viewerRenderData->video_update_timer);
+
+       if (viewerRenderData->insert_image && elm_icon_animated_available_get(viewerRenderData->insert_image))
+               elm_icon_animated_play_set(viewerRenderData->insert_image, EINA_TRUE);
+
+       /* 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);
+
+       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);
+       }
+
+       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->display_drm_consume.consume_handle) {
+               msg_ui_viewer_consume_ro_stop(&viewerRenderData->display_drm_consume);
+               viewerRenderData->display_drm_consume.consume_handle = NULL;
+       }
+
+       if (viewerRenderData->play_drm_consume.consume_handle) {
+               msg_ui_viewer_consume_ro_stop(&viewerRenderData->play_drm_consume);
+               viewerRenderData->play_drm_consume.consume_handle = NULL;
+       }
+
+       if (viewerRenderData->video_update_timer) {
+               ecore_timer_del(viewerRenderData->video_update_timer);
+               viewerRenderData->video_update_timer = NULL;
+       }
+
+       if (viewerRenderData->insert_image && elm_icon_animated_available_get(viewerRenderData->insert_image))
+               elm_icon_animated_play_set(viewerRenderData->insert_image, EINA_FALSE);
+
+       /* enable copy and paste popup */
+       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) {
+               int video_width = 0;
+               int video_height = 0;
+               int err = MM_ERROR_NONE;
+               char *perr_name = NULL;
+
+               evas_object_image_size_get(viewerRenderData->video_image, &video_width, &video_height);
+               err = mm_player_set_attribute(_player, &perr_name,
+                                                                                                               "display_width", video_width,
+                                                                                                               "display_height", video_height,
+                                                                                                               NULL);
+               if (err != MM_ERROR_NONE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_player_set_attribute is failed. err = %x", err);
+                       if (perr_name)
+                               free(perr_name);
+
+                       viewerRenderData->video_resize_idle = NULL;
+                       return ECORE_CALLBACK_CANCEL;
+               }
+               viewerRenderData->video_image_buffer = NULL;
+
+               if (!viewerRenderData->video_image_buffer) {
+                       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);
+                       __msg_smil_render_update_video_screen(viewerRenderData);
+               }
+       }
+
+       viewerRenderData->video_resize_idle = NULL;
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+static int __msg_smil_render_video_stream_cb(void *stream, int stream_size, void *user_param, int width, int height)
+{
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, stream == NULL || stream_size <= 0, MSG_UI_RET_ERR);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, user_param == NULL, MSG_UI_RET_ERR);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)user_param;
+       int video_width = 0;
+       int video_height = 0;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "stream_size = %d, width = %d, height = %d", stream_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;
+               }
+               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, stream, stream_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 int __msg_smil_render_msg_cb(int msg_type, void *msg_param, void *user_param)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, user_param == NULL, MSG_UI_RET_ERR);
+       SMIL_RENDERER_DATA_S *viewerRenderData = (SMIL_RENDERER_DATA_S *)user_param;
+       MMMessageParamType *param = (MMMessageParamType *)msg_param;
+
+       if (!__msg_smil_render_is_player_active())
+               return MSG_UI_RET_ERR;
+
+       switch (msg_type) {
+       case MM_MESSAGE_BEGIN_OF_STREAM:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "receive MM_MESSAGE_BEGIN_OF_STREAM");
+               {
+                       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) {
+                               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;
+               }
+               break;
+
+       case MM_MESSAGE_ERROR:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "receive MM_MESSAGE_ERROR");
+               break;
+
+       case MM_MESSAGE_WARNING:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "receive MM_MESSAGE_WARNING");
+               break;
+
+       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);
+               break;
+
+       case MM_MESSAGE_STATE_CHANGED:
+               if (param) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "receive MM_MESSAGE_STATE_CHANGED with[%d]", param->state.current);
+                       switch (param->state.current) {
+                       case MM_PLAYER_STATE_NONE:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "==> [MediaPlayerApp] Player is [NONE]");
+                               break;
+                       case MM_PLAYER_STATE_READY:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "==> [MediaPlayerApp] Player is [READY]");
+                               break;
+                       case MM_PLAYER_STATE_PLAYING:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "==> [MediaPlayerApp] Player is [PLAYING]");
+                               {
+                                       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);
+                               }
+                               break;
+                       case MM_PLAYER_STATE_PAUSED:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "==> [MediaPlayerApp] Player is [PAUSED]");
+                               break;
+                       case MM_PLAYER_STATE_NULL:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "==> [MediaPlayerApp] Player is [NULL]");
+                               break;
+                       }
+               }
+               break;
+
+       case MM_MESSAGE_STATE_INTERRUPTED:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "receive MM_MESSAGE_STATE_INTERRUPTED");
+               if (param) {
+                       switch (param->code) {
+                       case MM_MSG_CODE_INTERRUPTED_BY_OTHER_APP:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_ERROR_PLAYER_BT_CONNECTION");
+                               break;
+
+                       case MM_MSG_CODE_INTERRUPTED_BY_CALL_START:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_MSG_CODE_INTERRUPTED_BY_CALL_START");
+                               break;
+
+                       case MM_MSG_CODE_INTERRUPTED_BY_CALL_END:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_MSG_CODE_INTERRUPTED_BY_CALL_END");
+                               break;
+
+                       case MM_MSG_CODE_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 MM_MSG_CODE_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 MM_MSG_CODE_INTERRUPTED_BY_ALARM_START:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_MSG_CODE_INTERRUPTED_BY_ALARM_START");
+                               break;
+
+                       case MM_MSG_CODE_INTERRUPTED_BY_ALARM_END:
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "MM_MSG_CODE_INTERRUPTED_BY_ALARM_END");
+                               break;
+                   }
+               }
+               break;
+
+       default:
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid msg_type = %d", msg_type);
+               return MSG_UI_RET_ERR;
+       }
+
+       return MSG_UI_RET_SUCCESS;
+}
+
+
+static MSG_BOOL __msg_smil_render_play_audio_file(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 (__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_msg_cb(__msg_smil_render_msg_cb, (void *)viewerRenderData))
+               return FALSE;
+
+       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)
+{
+       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)) {
+                       /*consume ro and play content*/
+                       if (viewerRenderData->play_drm_consume.consume_handle) {
+                               msg_ui_viewer_consume_ro_stop(&viewerRenderData->play_drm_consume);
+                               viewerRenderData->play_drm_consume.consume_handle = NULL;
+                       }
+
+                       //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) == 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;
+                       }
+
+                       msg_ui_viewer_consume_ro_start(path, MSG_UI_DRM_RIGHT_PLAY, &viewerRenderData->play_drm_consume);
+
+                       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) == 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);
+
+       MMHandleType content = (MMHandleType)NULL;
+       int err = 0;
+
+       err = mm_file_create_content_attrs(&content, file_path);
+       if (err == 0) {
+               err = mm_file_destroy_content_attrs(content);
+               if (err != 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_file_destroy_content_attrs FAILED err = %x", err);
+                       return FALSE;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_file_create_content_attrs 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);
+       MMHandleType content = (MMHandleType)NULL;
+       int err = 0;
+       char *err_msg = NULL;
+       MSG_BOOL iserror = FALSE;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "file_path = (%s)", file_path);
+       err = mm_file_create_content_attrs(&content, file_path);
+
+       if (err == 0) {
+               err = mm_file_get_attrs(content,  &err_msg,
+                                                                       MM_FILE_CONTENT_VIDEO_WIDTH, width,
+                                                                       MM_FILE_CONTENT_VIDEO_HEIGHT, height,
+                                                                       /*MM_FILE_CONTENT_VIDEO_THUMBNAIL, &thumbnail, &thumbnail_size,*/
+                                                                       NULL);
+               if (err != 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_file_get_attrs FAILED err = %d", err);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_file_get_attrs err_msg = %s", err_msg);
+                       if (err_msg) {
+                               free(err_msg);
+                               err_msg = NULL;
+                       }
+                       iserror = TRUE;
+               }
+
+               err = mm_file_destroy_content_attrs(content);
+               if (err != 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_file_destroy_content_attrs FAILED err = %x", err);
+                       iserror = TRUE;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mm_file_create_content_attrs FAILED err = %x", err);
+               iserror = TRUE;
+       }
+
+       if (iserror)
+               return FALSE;
+
+       return TRUE;
+}
+
+
+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);
+
+       /*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);
+
+#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)
+{
+       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))
+               return FALSE;
+
+       if (!__msg_smil_render_player_mgr_set_attribute(viewerRenderData, path, MMS_SMIL_MEDIA_VIDEO))
+               return FALSE;
+
+       if (!__msg_smil_render_player_mgr_set_msg_cb(__msg_smil_render_msg_cb, (void *)viewerRenderData))
+               return FALSE;
+
+       if (!__msg_smil_render_player_mgr_set_video_stream_cb(__msg_smil_render_video_stream_cb, (void *)viewerRenderData))
+               return FALSE;
+
+       if (!__msg_smil_render_player_mgr_realize((void *)viewerRenderData))
+               return FALSE;
+
+       if (!__msg_smil_render_player_mgr_play((void *)viewerRenderData)) {
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+
+MSG_BOOL _msg_smil_render_show_inserted_video(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);
+       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)) {
+                       /*consume ro and play content*/
+                       if (viewerRenderData->play_drm_consume.consume_handle) {
+                               msg_ui_viewer_consume_ro_stop(&viewerRenderData->play_drm_consume);
+                               viewerRenderData->play_drm_consume.consume_handle = NULL;
+                       }
+
+                       //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) == 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;
+                       }
+
+                       msg_ui_viewer_consume_ro_start(path, MSG_UI_DRM_RIGHT_PLAY, &viewerRenderData->play_drm_consume);
+
+                       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) == FALSE) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__msg_smil_render_play_video_file is failed");
+                       _msg_smil_render_stop_playing_file((void *)viewerRenderData);
+                       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 *image_layout = 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 layout for image*/
+       image_layout = elm_layout_add(viewerRenderData->layout_main);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, image_layout == NULL, "failed to create viewerRenderData->viewer_content_layout");
+
+       elm_layout_file_set(image_layout, MSG_VIEWER_THEME, "viewer_main");
+       evas_object_size_hint_weight_set(image_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(image_layout, 0.0, 0.0);
+       evas_object_show(image_layout);
+
+
+       /*create icon above image_layout*/
+       ic = elm_icon_add(image_layout);
+
+       if (imageType == VIEWER_IMAGE_TYPE_DRM_IMAGE_RAW_DATA) {        // rendering drm image by raw data
+               unsigned char *drm_raw_data = NULL;
+               unsigned int buf_size = 0;
+
+               drm_raw_data = msg_ui_viewer_get_buffer_from_drm_file(path, MSG_UI_DRM_RIGHT_DISPLAY, &buf_size);
+               if (drm_raw_data) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "buf_size = %d", buf_size);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "image buf size = %d", (contnet_w * contnet_h * 4));
+
+                       Eina_Bool result = elm_icon_memfile_set(ic, drm_raw_data, buf_size, NULL, NULL);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "result = %d", result);
+
+                       free(drm_raw_data);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_raw_data is NULL");
+                       elm_icon_file_set(ic, MSG_VIEWER_IMAGE_DRM_ICON, NULL);
+               }
+       } else {
+               elm_icon_file_set(ic, path, NULL);
+       }
+
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, ic == NULL, "attached image add failed");
+
+       if (elm_icon_animated_available_get(ic)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Animated image");
+               elm_icon_animated_set(ic, EINA_TRUE);
+               elm_icon_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) {
+               evas_object_size_hint_min_set(ic, contnet_w , contnet_h);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid case");
+       }
+
+       elm_object_part_content_set(image_layout, "viewer.body.content", ic);
+
+       if (imageType == VIEWER_IMAGE_TYPE_DRM_SOUND) {
+               if (!viewerRenderData->insert_sound_icon) {
+                       elm_box_pack_end(viewerRenderData->viewer_content_box, image_layout);   /*sound drm icon*/
+                       viewerRenderData->insert_sound_icon = image_layout;
+                       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, image_layout);   /*unsupported file icon*/
+                       viewerRenderData->insert_unsupported_icon = image_layout;
+                       evas_object_show(ic);
+               } else {
+                       evas_object_del(ic);
+               }
+       } else {
+               elm_box_pack_start(viewerRenderData->viewer_content_box, image_layout);/*image top*/
+               viewerRenderData->insert_image = image_layout;
+
+               /*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) {
+                       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, image_layout);
+                               elm_box_pack_after(viewerRenderData->viewer_content_box, image_layout, viewerRenderData->viewer_body);
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Text top message");
+                               elm_box_unpack(viewerRenderData->viewer_content_box, image_layout);
+                               elm_box_pack_end(viewerRenderData->viewer_content_box, image_layout);
+                       }
+               } 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)) {
+                               /*consume ro and display content*/
+                               if (viewerRenderData->display_drm_consume.consume_handle) {
+                                       msg_ui_viewer_consume_ro_stop(&viewerRenderData->display_drm_consume);
+                                       viewerRenderData->display_drm_consume.consume_handle = NULL;
+                               }
+
+                               //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);
+
+                               msg_ui_viewer_consume_ro_start(path, MSG_UI_DRM_RIGHT_DISPLAY, &viewerRenderData->display_drm_consume);
+
+                               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..fb040b7
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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);
+}
+
+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..4a09e1a
--- /dev/null
@@ -0,0 +1,449 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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);
+
+               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_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..d0e558f
--- /dev/null
@@ -0,0 +1,681 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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);
+/*================================================================================================
+ *                                                             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->display_drm_consume.consume_handle = NULL;
+       viewerRenderData->play_drm_consume.consume_handle = NULL;
+       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 x = 0;
+       int y = 0;
+       int w = 0;
+       int play_control_height = 0;
+       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);
+       edje_object_part_geometry_get(_EDJ(viewerRenderData->layout_main), "viewer.swallow.play.controller", &x, &y, &w, &play_control_height);
+
+       viewerRenderData->viewer_width = window_width;
+       viewerRenderData->viewer_height = (right_bottom->y - left_top->y - play_control_height);
+       viewerRenderData->button_height = (window_height - right_bottom->y);
+
+       viewerRenderData->viewer_landscape_width = window_height;
+       viewerRenderData->viewer_landscape_height = (window_width - (left_top->y + play_control_height + viewerRenderData->button_height));
+       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;
+
+       viewerRenderData->layout_main = layout;
+
+       /*create scroller*/
+       if (!viewerRenderData->viewer_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 */
+       if (!viewerRenderData->viewer_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 entry */
+       if (!viewerRenderData->viewer_body) {
+               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;
+       }
+
+       /*bg color rectangular*/
+       if (!viewerRenderData->viewer_bg_rect) {
+               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_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");
+
+               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);
+               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");
+
+               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);
+               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");
+               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);
+       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), "<font_size=%d color=#6ca8c7>%s",
+                                                               MMS_SMIL_FONT_SIZE_NORMAL,
+                                                               dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE"));
+
+                       elm_entry_entry_set(viewerRenderData->viewer_body, buf_font);
+
+                       _msg_smil_render_show_help_page_attach_list(viewerRenderData);
+
+               } 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)) {
+                       msg_list_handle_t attachlist_info = NULL;
+                       msg_struct_t attach_info = NULL;
+                       int nAttachCnt = 0;
+                       int mediaType = 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 (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), "<font_size=%d color=#6ca8c7>%s",
+                                                                               MMS_SMIL_FONT_SIZE_NORMAL,
+                                                                               dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_HELP_PAGE_MESSAGE"));
+
+                                       elm_entry_entry_set(viewerRenderData->viewer_body, buf_font);
+
+                                       _msg_smil_render_show_help_page_attach_list(viewerRenderData);
+                               }
+                       } 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"));
+
+                               elm_entry_entry_set(viewerRenderData->viewer_body, buf_font);
+
+                               _msg_smil_render_show_help_page_attach_list(viewerRenderData);
+                       }
+               } else {
+                       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) == 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) == 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;
+}
+
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..1c1895f
--- /dev/null
@@ -0,0 +1,253 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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, 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 size, color and style*/
+                               SMIL_FONT_SYTLE_S text_style = {0,};
+                               if (__msg_smil_render_get_font_style(viewerRenderData, &text_style) == FALSE) {
+                                       text_style.font_size = MMS_SMIL_FONT_SIZE_NORMAL;
+                                       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_size, text_style.font_color, text_style.font_style);
+
+                               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*/
+       pfont_style->font_size = font_size;
+       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;
+}
+
+MSG_BOOL _msg_smil_render_show_help_page_attach_list(SMIL_RENDERER_DATA_S *viewerRenderData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, viewerRenderData == NULL, FALSE);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_DEBUG, viewerRenderData->viewer_content_box == NULL, FALSE, "Invalid argument: viewer_content_box is NULL");
+
+       if (viewerRenderData->appSmilHelpPageCb) {
+               viewerRenderData->appSmilHelpPageCb(viewerRenderData->appUserData, (void**)&(viewerRenderData->attach_list), viewerRenderData->viewer_content_box);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
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..d9adbf8
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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..fdc3363
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                             INCLUDE 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;
+       }
+
+       Evas_Object *win = ug_get_window();
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(win, base);
+               evas_object_show(base);
+
+               break;
+       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_ADD_TO_CONTACT ||
+                                       viewer_main_data->player_view->cmd_type == MSG_VIEWER_CMD_LOAD_EMAIL_COMPOSER ||
+                                       viewer_main_data->player_view->cmd_type == MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER)) {
+
+                               /*update title button text after contact sync */
+                               if (viewer_main_data->player_view->cmd_type == MSG_VIEWER_CMD_LOAD_ADD_TO_CONTACT)
+                                       msg_ui_viewer_contact_info_update(viewer_main_data->player_view);
+
+                               /*connect handler again*/
+                               if (!viewer_main_data->player_view->mouse_down_event_handler)
+                                       viewer_main_data->player_view->mouse_down_event_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, msg_ui_viewer_mouse_down_cb, (void *)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..6172db4
--- /dev/null
@@ -0,0 +1,505 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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>
+#include "aul.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_icon_file_set(image, MSG_VIEWER_IMAGE_DRM_SMALL_ICON, NULL);
+               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;
+
+       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*/
+               aul_open_content(szurl);
+       } 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;
+       Elm_Object_Item *pitem = 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);
+                       pitem = 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..0f79a11
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+                                                                  INCLUDE 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;
+}
+
+MSG_BOOL msg_ui_viewer_consume_ro_start(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type, MSG_UI_DRM_CONSUME_S *consume_t)
+{
+       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, consume_t == NULL, FALSE);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "permission_type is %d", permission_type);
+
+       drm_permission_type_e permission = DRM_PERMISSION_TYPE_ANY;
+       DRM_DECRYPT_HANDLE pHandle = NULL;
+       int ret = DRM_TRUSTED_RETURN_SUCCESS;
+
+       permission = __get_permission_type(permission_type);
+
+       /* Open Decrypt Session*/
+       drm_trusted_open_decrypt_info_s open_input_data;
+       drm_trusted_open_decrypt_resp_data_s open_output_data;
+
+       strncpy(open_input_data.filePath, filepath, sizeof(open_input_data.filePath)-1);
+       open_input_data.file_type = DRM_TRUSTED_TYPE_OMA_V1;
+       open_input_data.permission = permission;
+
+       ret = drm_trusted_open_decrypt_session(&open_input_data, &open_output_data, &pHandle);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_open_decrypt_session is failed ret = %d", ret);
+               return FALSE;
+       }
+       consume_t->consume_handle = pHandle;
+
+       /*Start the consumption*/
+       drm_trusted_set_consumption_state_info_s state_input_data;
+       state_input_data.state = DRM_CONSUMPTION_STARTED;
+
+       ret = drm_trusted_set_decrypt_state(consume_t->consume_handle, &state_input_data);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "DRM_CONSUMPTION_STARTED is failed ret = %d", ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_ui_viewer_consume_ro_pause(MSG_UI_DRM_CONSUME_S *consume_t)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, consume_t == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, consume_t->consume_handle == NULL, FALSE);
+
+       int ret = DRM_TRUSTED_RETURN_SUCCESS;
+
+       /* Pause the consumption*/
+       drm_trusted_set_consumption_state_info_s state_input_data;
+       state_input_data.state = DRM_CONSUMPTION_PAUSED;
+
+       ret = drm_trusted_set_decrypt_state(consume_t->consume_handle, &state_input_data);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "DRM_CONSUMPTION_PAUSED is failed ret = %d", ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_ui_viewer_consume_ro_resume(MSG_UI_DRM_CONSUME_S *consume_t)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, consume_t == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, consume_t->consume_handle == NULL, FALSE);
+
+       int ret = DRM_TRUSTED_RETURN_SUCCESS;
+
+       /*Resume the consumption*/
+       drm_trusted_set_consumption_state_info_s state_input_data;
+       state_input_data.state = DRM_CONSUMPTION_RESUMED;
+
+       ret = drm_trusted_set_decrypt_state(consume_t->consume_handle, &state_input_data);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "DRM_CONSUMPTION_RESUMED is failed ret = %d", ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_ui_viewer_consume_ro_stop(MSG_UI_DRM_CONSUME_S *consume_t)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, consume_t == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, consume_t->consume_handle == NULL, FALSE);
+
+       int ret = DRM_TRUSTED_RETURN_SUCCESS;
+
+       /*stop the consumption*/
+       drm_trusted_set_consumption_state_info_s state_input_data;
+       state_input_data.state = DRM_CONSUMPTION_STOPPED;
+
+       ret = drm_trusted_set_decrypt_state(consume_t->consume_handle, &state_input_data);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "DRM_CONSUMPTION_STOPPED is failed ret = %d", ret);
+               return FALSE;
+       }
+
+       /*close the consumption*/
+       ret = drm_trusted_close_decrypt_session(&(consume_t->consume_handle));
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_close_decrypt_session is failed ret = %d", ret);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+unsigned char *msg_ui_viewer_get_buffer_from_drm_file(const char *filepath, MSG_UI_DRM_RIGHT_TYPE_E permission_type, 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;
+
+       if (!__get_drm_license_status(filepath, permission_type)) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "__get_drm_license_status is failed");
+               return NULL;
+       }
+
+       unsigned int size = 0;
+       drm_permission_type_e permission = __get_permission_type(permission_type);
+
+       /* Open Decrypt Session*/
+       drm_trusted_open_decrypt_info_s open_input_data;
+       drm_trusted_open_decrypt_resp_data_s open_output_data;
+       DRM_DECRYPT_HANDLE pHandle = NULL;
+       int ret = DRM_TRUSTED_RETURN_SUCCESS;
+       unsigned char *buffer = NULL;
+
+       memset(&open_input_data, 0x0, sizeof(drm_trusted_open_decrypt_info_s));
+       strncpy(open_input_data.filePath, filepath, sizeof(open_input_data.filePath)-1);
+       open_input_data.file_type = DRM_TRUSTED_TYPE_OMA_V1;
+       open_input_data.permission = permission;
+
+       ret = drm_trusted_open_decrypt_session(&open_input_data, &open_output_data, &pHandle);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_open_decrypt_session is failed ret = %d", ret);
+               return NULL;
+       }
+
+       /* Seek Decrypt Session*/
+       drm_trusted_seek_decrypt_info_s seek_input_data;
+       seek_input_data.offset = 0;
+       seek_input_data.seek_mode = DRM_SEEK_END;
+
+       ret = drm_trusted_seek_decrypt_session(pHandle, &seek_input_data);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_seek_decrypt_session is failed ret = %d", ret);
+               goto drm_error;
+       }
+
+       /* Tell Decrypt Session*/
+       drm_trusted_tell_decrypt_resp_data_s tell_output_data;
+
+       ret = drm_trusted_tell_decrypt_session(pHandle, &tell_output_data);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_tell_decrypt_session is failed ret = %d", ret);
+               goto drm_error;
+       }
+
+       if (tell_output_data.offset == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm file size is 0");
+               goto drm_error;
+       }
+
+       size = tell_output_data.offset;
+
+       /* Seek Decrypt Session*/
+       seek_input_data.offset = 0;
+       seek_input_data.seek_mode = DRM_SEEK_SET;
+
+       ret = drm_trusted_seek_decrypt_session(pHandle, &seek_input_data);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_seek_decrypt_session is failed ret = %d", ret);
+               goto drm_error;
+       }
+
+       buffer = (unsigned char *)malloc(size);
+       if (buffer == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "malloc is failed");
+               goto drm_error;
+       }
+
+       /* Read Decrypt Session */
+       drm_trusted_payload_info_s read_input_data = {0,};
+       drm_trusted_read_decrypt_resp_data_s read_output_data = {0, };
+
+       read_input_data.media_offset = 0;
+       read_input_data.payload_data = buffer;
+       read_input_data.payload_data_len = size;
+
+       ret = drm_trusted_read_decrypt_session(pHandle, &read_input_data, &read_output_data);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_read_decrypt_session is failed ret = %d", ret);
+               goto drm_error;
+       }
+
+       if (size != read_output_data.read_size)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "read is not perfect size = %d", size);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "read_size = %d", read_output_data.read_size);
+
+       *buffer_size = (unsigned int)size;
+
+       /* Close Decrypt Session */
+       ret = drm_trusted_close_decrypt_session(&pHandle);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_close_decrypt_session is failed ret = %d", ret);
+
+       return buffer;
+
+drm_error:
+       /* Close Decrypt Session */
+       ret = drm_trusted_close_decrypt_session(&pHandle);
+       if (ret != DRM_TRUSTED_RETURN_SUCCESS)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "drm_trusted_close_decrypt_session is failed ret = %d", ret);
+
+       if (buffer)
+               free(buffer);
+
+       return NULL;
+}
+
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..623c5d5
--- /dev/null
@@ -0,0 +1,533 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef 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 <Ecore_X.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_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 subject text for preview msg - mms_t doesn't have subject string */
+                               int strlenSubject = 0;
+                               char strSubject[MAX_SUBJECT_LEN] = {0};
+                               msg_t_pointer = __msg_ui_viewer_convert_atoh((const char*)preview_data);
+                               msg_get_str_value((msg_struct_t)msg_t_pointer, MSG_MESSAGE_SUBJECT_STR, strSubject, MAX_SUBJECT_LEN);
+
+                               /*create new msg info struct */
+                               viewer_main_data->msg_t = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+                               strlenSubject = strlen(strSubject);
+                               msg_set_str_value(viewer_main_data->msg_t, MSG_MESSAGE_SUBJECT_STR, strSubject, strlenSubject);
+
+                               /*create mms_t*/
+                               viewer_main_data->mms_t = msg_create_struct(MSG_STRUCT_MMS);
+                               err = msg_get_mms_struct((msg_struct_t)msg_t_pointer, viewer_main_data->mms_t);
+
+                               if (err != MSG_SUCCESS) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "failed in get mms data handler");
+                                       return FALSE;
+                               }
+                       } 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;
+                       }
+               }
+       } 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);
+               layout = msg_ui_viewer_create_layout_main(viewer_main_data->main_window);
+               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;
+
+       msg_common_apply_font_size("entry", viewer_main_data->layout_main);
+
+       if (msg_ui_viewer_launch(viewer_main_data) == FALSE) {
+               msg_common_reset_font_size("entry");
+               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);
+                               }
+
+                               Evas_Object *play_icon = elm_object_part_content_get(viewer_main_data->player_view->play_layout, "viewer.swallow.play.controller");
+                               if (play_icon != NULL)
+                                       edje_object_signal_emit(_EDJ(play_icon), "play", "*");
+                               viewer_main_data->player_view->status = MSG_VIEWER_PAUSE;
+                       }
+               }
+       }
+}
+
+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);
+
+       msg_common_apply_font_size("entry", viewer_main_data->layout_main);
+
+       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);
+                       /*connect handler again*/
+                       if (!viewer_main_data->player_view->mouse_down_event_handler)
+                               viewer_main_data->player_view->mouse_down_event_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_BUTTON_DOWN, msg_ui_viewer_mouse_down_cb, (void *)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->item_list_view) {
+               msg_ui_viewer_destroy_item_list(viewer_main_data->item_list_view);
+               free(viewer_main_data->item_list_view);
+               viewer_main_data->item_list_view = NULL;
+       }
+
+       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);
+}
+
+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)
+                       __msg_ui_viewer_destroy_viewer_ug(priv);
+
+               break;
+       }
+       case UG_EVENT_LANG_CHANGE:
+               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->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 if (viewer_main_data->view_mode == MSG_VIEWER_ITEM_LIST_VIEW) {
+                       if (viewer_main_data->item_list_view) {
+                               if (viewer_main_data->item_list_view->popup) {
+                                       elm_popup_timeout_set(viewer_main_data->item_list_view->popup, 0);
+                                       evas_object_del(viewer_main_data->item_list_view->popup);
+                                       viewer_main_data->item_list_view->popup = NULL;
+                                       ispopup = TRUE;
+                               }
+                       }
+               } 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_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->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 if (viewer_main_data->view_mode == MSG_VIEWER_ITEM_LIST_VIEW) {
+               if (viewer_main_data->item_list_view) {
+                       if (viewer_main_data->item_list_view->popup) {
+                               elm_popup_timeout_set(viewer_main_data->item_list_view->popup, 0);
+                               evas_object_del(viewer_main_data->item_list_view->popup);
+                               viewer_main_data->item_list_view->popup = NULL;
+                       }
+               }
+       } 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-item-list.c b/viewer/src/msg-ui-viewer-item-list.c
new file mode 100755 (executable)
index 0000000..a95b689
--- /dev/null
@@ -0,0 +1,896 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE HEADERS
+ * ==================================================================================================*/
+#include <msg.h>
+#include <msg_storage.h>
+#include <msg_transport.h>
+
+#include "msg-ui-viewer-item-list.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 "aul.h"
+#include <glib.h>
+#include <Ecore_X.h>
+#include "appsvc.h"
+/*==================================================================================================
+ *                                                                     FUNCTION DECLARATIONS
+ *==================================================================================================*/
+static void __viewer_back_button_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_item_list_popup(void *data, Evas_Object *parent, char *pcontent);
+static void __viewer_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __viewer_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
+
+static MSG_BOOL __msg_ui_viewer_auto_rename(char *src_path, char *dst_path);
+static void __viewer_save_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_viewer_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_viewer_content_get(void *data, Evas_Object *obj, const char *part);
+static char *__msg_ui_viewer_group_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_viewer_genlist_item_selected(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_viewer_item_selected(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_viewer_create_genlist(void *data);
+static void __msg_ui_viewer_set_list_styles(void *data);
+static void __msg_ui_viewer_item_list_set_list_data(Evas_Object *genlist, void *data);
+static MSG_BOOL __msg_ui_viewer_item_list_get_list_data(void *data);
+static MSG_BOOL  __msg_ui_viewer_get_body_message(void *data);
+static void __viewer_toolbar_play_cb(void *data, Evas_Object *obj, void *event_info);
+static void __viewer_toolbar_save_all_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_viewer_create_toolbar(Evas_Object *parent, void *data);
+
+/*==================================================================================================
+*                                                              FUNCTION IMPLEMENTATIONS
+*==================================================================================================*/
+void msg_ui_viewer_init_item_list(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       pitem_list_data->viewer_main = NULL;
+       pitem_list_data->main_window = NULL;
+       pitem_list_data->navi_frame = NULL;
+       pitem_list_data->popup = NULL;
+       pitem_list_data->genlist = NULL;
+       pitem_list_data->msgHandle = NULL;
+       pitem_list_data->msgID = 0;
+       pitem_list_data->mms_t = NULL;
+       pitem_list_data->insert_item_count = 0;
+       pitem_list_data->attach_item_count = 0;
+       pitem_list_data->insert_list = NULL;
+       pitem_list_data->attach_list = NULL;
+       pitem_list_data->group_list[0].index = 0;
+       pitem_list_data->group_list[0].group_label = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_INSERTED_ITEMS");
+       pitem_list_data->group_list[1].index = 1;
+       pitem_list_data->group_list[1].group_label = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_ATTACHED_ITEMS");
+
+       pitem_list_data->group_item_class = NULL;
+       memset(&pitem_list_data->item_class, 0x00, sizeof(Elm_Genlist_Item_Class));
+       memset(&pitem_list_data->title_class, 0x00, sizeof(Elm_Genlist_Item_Class));
+}
+
+void msg_ui_viewer_destroy_item_list(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       if (pitem_list_data->popup) {
+               evas_object_del(pitem_list_data->popup);
+               pitem_list_data->popup = NULL;
+       }
+
+
+       /*free insert list*/
+       if (pitem_list_data->insert_list) {
+               int index = 0;
+               int ntotal = 0;
+               ntotal = eina_list_count(pitem_list_data->insert_list);
+               for (index = 0; index < ntotal; index++) {
+                       MSG_MEDIA_INFO_S *pmedia_info = eina_list_nth(pitem_list_data->insert_list, index);
+                       if (pmedia_info) {
+                               free(pmedia_info);
+                               pmedia_info = NULL;
+                       }
+               }
+               eina_list_free(pitem_list_data->insert_list);
+               pitem_list_data->insert_list = NULL;
+       }
+
+       /*free attach list*/
+       if (pitem_list_data->attach_list) {
+               int index = 0;
+               int ntotal = 0;
+               ntotal = eina_list_count(pitem_list_data->attach_list);
+               for (index = 0; index < ntotal; index++) {
+                       MSG_MEDIA_INFO_S *pmedia_info = eina_list_nth(pitem_list_data->attach_list, index);
+                       if (pmedia_info) {
+                               free(pmedia_info);
+                               pmedia_info = NULL;
+                       }
+               }
+               eina_list_free(pitem_list_data->attach_list);
+               pitem_list_data->attach_list = NULL;
+       }
+
+       /* genlist must be destroyed before freeing itc */
+       if (pitem_list_data->genlist) {
+               evas_object_del(pitem_list_data->genlist);
+               pitem_list_data->genlist = NULL;
+       }
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __viewer_back_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_UI_RET_IF(MSG_UI_LEVEL_ERR, obj == NULL);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       msg_common_reset_font_size("entry");
+       ug_destroy_me(msg_ui_viewer_get_viewer_ug(pitem_list_data->viewer_main));
+       elm_object_disabled_set(obj, TRUE);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static MSG_BOOL __msg_ui_viewer_auto_rename(char *src_path, char *dst_path)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, src_path == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, dst_path == NULL, FALSE);
+       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;
+
+       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_util_get_next_number(file_name_without_ext);
+       if (ncount < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid filename");
+               return FALSE;
+       } else {
+               /*find new filename*/
+               Eina_Bool is_exists = FALSE;
+               do {
+                       if (strlen(file_ext) > 0)
+                               snprintf(new_file_name, sizeof(new_file_name), "%s_%d.%s", file_name_without_ext, ncount, file_ext);
+                       else
+                               snprintf(new_file_name, sizeof(new_file_name), "%s_%d", 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);
+
+               if (ecore_file_cp(src_path, new_file_name) == EINA_FALSE)
+                       return FALSE;
+       }
+
+       return TRUE;
+}
+
+static void __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_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       if (pitem_list_data->popup) {
+               evas_object_del(pitem_list_data->popup);
+               pitem_list_data->popup = NULL;
+       }
+}
+
+static void __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_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       if (pitem_list_data->popup) {
+               evas_object_del(pitem_list_data->popup);
+               pitem_list_data->popup = NULL;
+       }
+}
+
+static void __msg_ui_viewer_item_list_popup(void *data, Evas_Object *parent, char *pcontent)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, parent == NULL);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+       Evas_Object *popup = NULL;
+
+       if (pitem_list_data->popup) {
+               evas_object_del(pitem_list_data->popup);
+               pitem_list_data->popup = NULL;
+       }
+
+       popup = elm_popup_add(parent);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, popup == NULL);
+       pitem_list_data->popup = 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", __viewer_popup_block_clicked_cb, pitem_list_data);
+               evas_object_smart_callback_add(popup, "timeout", __viewer_popup_timeout_cb, pitem_list_data);
+       } else {
+               evas_object_del(pitem_list_data->popup);
+               pitem_list_data->popup = NULL;
+               return;
+       }
+
+       evas_object_show(popup);
+}
+
+static void __viewer_save_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_MEDIA_INFO_S *pmedia_info = (MSG_MEDIA_INFO_S *)data;
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)pmedia_info->item_list_data;
+
+       if (strlen(pmedia_info->pfile_path) == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pfile_path is NULL");
+               __msg_ui_viewer_item_list_popup(pitem_list_data, pitem_list_data->main_window, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+               return;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "source pfile_path = [%s]", pmedia_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, pmedia_info->pfile_name);
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "dst_path = [%s]", dst_path);
+
+                       /*check for same file*/
+                       if (ecore_file_exists(dst_path) == EINA_TRUE) {
+                               if (__msg_ui_viewer_auto_rename(pmedia_info->pfile_path, dst_path) == FALSE)
+                                       issave = FALSE;
+                       } else {
+                               if (ecore_file_cp(pmedia_info->pfile_path, dst_path) == EINA_FALSE)
+                                       issave = FALSE;
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_viewer_util_get_default_path is failed");
+                       __msg_ui_viewer_item_list_popup(pitem_list_data, pitem_list_data->main_window, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+                       return;
+               }
+
+               if (issave)
+                       __msg_ui_viewer_item_list_popup(pitem_list_data, pitem_list_data->main_window, dgettext("sys_string", "IDS_COM_POP_SAVED"));
+               else
+                       __msg_ui_viewer_item_list_popup(pitem_list_data, pitem_list_data->main_window, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+       }
+}
+
+static char *__msg_ui_viewer_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_MEDIA_INFO_S *pmedia_info = (MSG_MEDIA_INFO_S *)data;
+
+       if (strcmp(part, "elm.text") == 0) {
+               if (pmedia_info)
+                       return strdup(pmedia_info->pfile_name);
+       }
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_viewer_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) {
+               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_icon_file_set(icon, MSG_VIEWER_IMAGE_SAVE_ICON, NULL);
+               elm_object_part_content_set(button, "icon", icon);
+               evas_object_smart_callback_add(button, "clicked", __viewer_save_button_clicked_cb, data);
+               evas_object_show(button);
+               evas_object_show(box);
+               return box;
+       } else if (strcmp(part, "elm.icon.1") == 0) {
+               MSG_MEDIA_INFO_S *pmedia_info = (MSG_MEDIA_INFO_S *)data;
+               Evas_Object *image = NULL;
+
+               image = elm_icon_add(obj);
+
+               /*set attach file icon*/
+               if (pmedia_info->emedia_type == MSG_MEDIA_IMG ||
+                               pmedia_info->emedia_type == MSG_MEDIA_ANIMATE) {
+                       elm_icon_file_set(image, pmedia_info->pfile_path, NULL);
+               } else if (pmedia_info->emedia_type == MSG_MEDIA_DRM) {
+                       elm_icon_file_set(image, MSG_VIEWER_IMAGE_DRM_SMALL_ICON, NULL);
+               } else {
+                       if (strlen(pmedia_info->pfile_path)) {
+                               const char *icon_path = NULL;
+
+                               icon_path = msg_common_get_file_icon(pmedia_info->pfile_path);
+                               if (icon_path) {
+                                       elm_icon_file_set(image, icon_path, NULL);
+                               } else {
+                                       D_EMSG("icon_path is NULL");
+                                       elm_icon_file_set(image, MSG_VIEWER_IMAGE_ATTACH_ICON, NULL);
+                               }
+                       } 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 char *__msg_ui_viewer_group_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_GROUP_LABEL_S *group_label = (MSG_GROUP_LABEL_S *) data;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", group_label->index);
+
+       if (strcmp(part, "elm.text") == 0) {
+               if (group_label->group_label)
+                       return strdup(group_label->group_label);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_viewer_genlist_item_selected(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, event_info == NULL);
+       Elm_Object_Item *pitem = (Elm_Object_Item *)event_info;
+
+       elm_genlist_item_selected_set(pitem, FALSE);
+       return;
+}
+
+static void __msg_ui_viewer_item_selected(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_MEDIA_INFO_S *pmedia_info = (MSG_MEDIA_INFO_S *)data;
+       Elm_Object_Item *pselected_item = (Elm_Object_Item *)event_info;
+
+       elm_genlist_item_selected_set(pselected_item, FALSE);
+
+       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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "emedia_type = %d", pmedia_info->emedia_type);
+
+       char mimetype[MSG_BUFFER_SIZE_64 + 1] = {0,};
+       char defapp[MSG_BUFFER_SIZE_64 + 1] = {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_VIEW);
+       service_set_uri(svc_handle, pmedia_info->pfile_path);
+
+       /*get mime type*/
+       if (aul_get_mime_from_file(pmedia_info->pfile_path, mimetype, sizeof(mimetype)) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mime type failed");
+
+               if (SERVICE_ERROR_NONE != service_send_launch_request(svc_handle, NULL, NULL))
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed");
+
+               service_destroy(svc_handle);
+               return;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mime type [%s]", mimetype);
+       }
+
+       /*get default app*/
+       if (aul_get_defapp_from_mime(mimetype, defapp, sizeof(defapp)) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "default app failed");
+
+               if (SERVICE_ERROR_NONE != service_send_launch_request(svc_handle, NULL, NULL))
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_send_launch_request is failed");
+
+               service_destroy(svc_handle);
+               return;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "default app [%s]", defapp);
+       }
+
+       /*launch application*/
+       if (strcmp(defapp, VIDEO_PLAYER_PKG_NAME) == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Video content");
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_LAUNCH_APPLICATION, MESSAGE_PKGNAME);
+       }
+
+       if (SERVICE_ERROR_NONE != service_send_launch_request(svc_handle, NULL, NULL))
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "service_send_launch_request is failed");
+
+       service_destroy(svc_handle);
+
+       return;
+}
+
+static Evas_Object *__msg_ui_viewer_create_genlist(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+       Evas_Object *genlist = NULL;
+
+       genlist = elm_genlist_add(pitem_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);
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return genlist;
+}
+
+static void __msg_ui_viewer_set_list_styles(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       pitem_list_data->item_class.item_style  = "1text.2icon";
+       pitem_list_data->item_class.func.text_get = __msg_ui_viewer_text_get;
+       pitem_list_data->item_class.func.content_get  = __msg_ui_viewer_content_get;
+       pitem_list_data->item_class.func.del = NULL;
+       pitem_list_data->item_class.func.state_get = NULL;
+
+       pitem_list_data->title_class.item_style = "grouptitle.dialogue";
+       pitem_list_data->title_class.func.text_get = __msg_ui_viewer_group_text_get;
+       pitem_list_data->title_class.func.content_get = NULL;
+       pitem_list_data->title_class.func.del = NULL;
+       pitem_list_data->title_class.func.state_get = NULL;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_item_list_set_list_data(Evas_Object *genlist, void *data)
+{
+       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, genlist == NULL);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+       int nmedia_count = pitem_list_data->insert_item_count;
+       int attachment_count = pitem_list_data->attach_item_count;
+
+       /*add inserted items*/
+       if (nmedia_count > 0) {
+               int insert_index = 0;
+               pitem_list_data->group_item_class = elm_genlist_item_append(genlist, &pitem_list_data->title_class, (void *)(&pitem_list_data->group_list[0]), NULL, ELM_GENLIST_ITEM_GROUP, __msg_ui_viewer_genlist_item_selected, (void*)ITEM_LIST_INFO_INSERT_FILE);
+               for (insert_index = 0; insert_index < nmedia_count; insert_index++) {
+                       MSG_MEDIA_INFO_S *pmedia_info = eina_list_nth(pitem_list_data->insert_list, insert_index);
+                       if (pmedia_info == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL");
+                       } else {
+                               elm_genlist_item_append(genlist, &pitem_list_data->item_class, (void *)(pmedia_info), pitem_list_data->group_item_class, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_item_selected, (void*)(pmedia_info));
+                       }
+               }
+       }
+
+       /*add attached items*/
+       if (attachment_count > 0) {
+               int attach_index = 0;
+               pitem_list_data->group_item_class = elm_genlist_item_append(genlist, &pitem_list_data->title_class, (void *)(&pitem_list_data->group_list[1]), NULL, ELM_GENLIST_ITEM_GROUP, __msg_ui_viewer_genlist_item_selected, (void*)ITEM_LIST_INFO_ATTACH_FILE);
+               for (attach_index = 0; attach_index < attachment_count; attach_index++) {
+                       MSG_MEDIA_INFO_S *pmedia_info = eina_list_nth(pitem_list_data->attach_list, attach_index);
+                       if (pmedia_info == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL");
+                       } else {
+                               elm_genlist_item_append(genlist, &pitem_list_data->item_class, (void *)(pmedia_info), pitem_list_data->group_item_class, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_item_selected, (void*)(pmedia_info));
+                       }
+               }
+       }
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static MSG_BOOL __msg_ui_viewer_item_list_get_list_data(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+       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;
+
+       msg_list_handle_t attachlist_info = NULL;
+       msg_struct_t attach_info = NULL;
+
+       int nPageCnt = 0;
+       int nPageMediaCnt = 0;
+       int nAttachmentCnt = 0;
+       int nmedia_count = 0;
+       int attach_count = 0;
+
+       char strFileName[MSG_FILENAME_LEN_MAX] = {0,};
+       char strFilePath[MSG_FILEPATH_LEN_MAX] = {0,};
+
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, pitem_list_data->mms_t == NULL, FALSE);
+
+       msg_get_list_handle(pitem_list_data->mms_t, MSG_MMS_PAGE_LIST_HND, (void **)&pagelist_info);
+       if (!pagelist_info)     {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_list_handle(MSG_MMS_PAGE_LIST_HND) is failed");
+               return FALSE;
+       }
+
+       nPageCnt = msg_list_length(pagelist_info);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "pageCnt = %d", nPageCnt);
+
+       /*get inserted content list*/
+       if (nPageCnt) {
+               int page_idx = 0;
+
+               for (page_idx = 0; page_idx < nPageCnt; ++page_idx) {
+                       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_get_list_handle(page_info, MSG_MMS_PAGE_MEDIA_LIST_HND, (void **)&medialist_info);
+
+                       if (!medialist_info) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "medialist_info is NULL");
+                               continue;
+                       }
+                       nPageMediaCnt = msg_list_length(medialist_info);
+
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "page = %d, media count = %d", page_idx, nPageMediaCnt);
+
+                       int media_idx = 0;
+                       for (media_idx = 0; media_idx < nPageMediaCnt; ++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");
+                                       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, "filename [%s], 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_MEDIA_INFO_S *pmedia_info = (MSG_MEDIA_INFO_S *)calloc(1, sizeof(MSG_MEDIA_INFO_S));
+                               if (pmedia_info == NULL) {
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                                       return FALSE;
+                               } else {
+                                       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);
+
+                                       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 (1: Fowward Lock, 2:Combined Delivery, 3: Separated Delivery), drmpath: %s", drmType, szDrmFullPath);
+                                               pmedia_info->emedia_type = MSG_MEDIA_DRM;
+                                       } else {
+                                               if (mediaType == MMS_SMIL_MEDIA_IMG)
+                                                       pmedia_info->emedia_type = MSG_MEDIA_IMG;
+                                               else if (mediaType == MMS_SMIL_MEDIA_AUDIO)
+                                                       pmedia_info->emedia_type = MSG_MEDIA_AUDIO;
+                                               else if (mediaType == MMS_SMIL_MEDIA_VIDEO)
+                                                       pmedia_info->emedia_type = MSG_MEDIA_VIDEO;
+                                               else if (mediaType == MMS_SMIL_MEDIA_TEXT)
+                                                       pmedia_info->emedia_type = MSG_MEDIA_TEXT;
+                                               else if (mediaType == MMS_SMIL_MEDIA_ANIMATE)
+                                                       pmedia_info->emedia_type = MSG_MEDIA_ANIMATE;
+                                               else if (mediaType == MMS_SMIL_MEDIA_IMG_OR_VIDEO)
+                                                       pmedia_info->emedia_type = MSG_MEDIA_IMG_OR_VIDEO;
+                                               else {
+                                                       pmedia_info->emedia_type = MSG_MEDIA_INVALID;
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid mediaType : %d", mediaType);
+                                               }
+                                       }
+                                       pmedia_info->item_list_data = pitem_list_data;
+                                       /*append insert list*/
+                                       pitem_list_data->insert_list = eina_list_append(pitem_list_data->insert_list, pmedia_info);
+                                       nmedia_count++;
+                               }
+                       }
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Multipart Mixed");
+       }
+       pitem_list_data->insert_item_count = nmedia_count;
+
+       /*get attached content list*/
+       int attach_idx = 0;
+       msg_get_list_handle(pitem_list_data->mms_t, MSG_MMS_ATTACH_LIST_HND, (void **)&attachlist_info);
+
+       nAttachmentCnt = msg_list_length(attachlist_info);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "attachmentCnt = %d", nAttachmentCnt);
+
+       for (attach_idx = 0; attach_idx < nAttachmentCnt; ++attach_idx) {
+               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_MEDIA_INFO_S *pmedia_info = (MSG_MEDIA_INFO_S *)calloc(1, sizeof(MSG_MEDIA_INFO_S));
+                       if (pmedia_info == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                               return FALSE;
+                       } else {
+                               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->emedia_type = MSG_MEDIA_ATTACH;
+                               pmedia_info->item_list_data = pitem_list_data;
+                               /*append attach list*/
+                               pitem_list_data->attach_list = eina_list_append(pitem_list_data->attach_list, pmedia_info);
+                               attach_count++;
+                       }
+               }
+       }
+       pitem_list_data->attach_item_count = attach_count;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "insert_count = %d, attach_count = %d", nmedia_count, attach_count);
+
+       return TRUE;
+}
+
+static MSG_BOOL  __msg_ui_viewer_get_body_message(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       if (pitem_list_data->mms_t == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pitem_list_data->mms_t is failed");
+                       return FALSE;
+               }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
+
+static void __viewer_toolbar_play_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_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       msg_ui_viewer_destroy_item_list(pitem_list_data);
+       msg_ui_viewer_show_view_by_mode(pitem_list_data->viewer_main, MSG_VIEWER_PLAYER_VIEW, MSG_VIEWER_VIEW_CMD_PLAY);
+       elm_naviframe_item_pop(pitem_list_data->navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __viewer_toolbar_save_all_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_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+
+       int insert_cnt = eina_list_count(pitem_list_data->insert_list);
+       int attach_cnt = eina_list_count(pitem_list_data->attach_list);
+       int total_cnt = insert_cnt + attach_cnt;
+       int index = 0;
+       int insert_index = 0;
+       int attach_index = 0;
+       int failed_count = 0;
+       int saved_count = 0;
+       MSG_MEDIA_INFO_S *pmedia_info = NULL;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "insert_cnt = %d, attach_cnt = %d", insert_cnt, attach_cnt);
+
+       while (index < total_cnt) {
+               if (index < insert_cnt)
+                       pmedia_info = eina_list_nth(pitem_list_data->insert_list, insert_index++);
+               else
+                       pmedia_info = eina_list_nth(pitem_list_data->attach_list, attach_index++);
+
+               if (pmedia_info) {
+                       /*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, pmedia_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]", pmedia_info->pfile_path);
+
+                               char *result_path = msg_ui_viewer_util_copy_file(pmedia_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++;
+                       }
+
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "pmedia_info is NULL index = %d", index);
+                       failed_count++;
+               }
+
+               pmedia_info = NULL;
+
+               index++;
+       }
+
+       /* show popup */
+       if (failed_count == total_cnt) {
+               __msg_ui_viewer_item_list_popup(pitem_list_data, pitem_list_data->main_window, dgettext("sys_string", "IDS_COM_POP_UNABLE_TO_SAVE"));
+       } 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, total_cnt);
+               __msg_ui_viewer_item_list_popup(pitem_list_data, pitem_list_data->main_window, buf);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_viewer_create_toolbar(Evas_Object *parent, void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, parent == NULL, NULL);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+       Evas_Object *toolbar = elm_toolbar_add(parent);
+       Elm_Object_Item *toolbar_item = NULL;
+
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+       elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_SAVE, NULL, __viewer_toolbar_save_all_cb, pitem_list_data);
+       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, __viewer_toolbar_play_cb, pitem_list_data);
+       toolbar_item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+       elm_object_item_disabled_set(toolbar_item, EINA_TRUE);
+
+       evas_object_show(toolbar);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return toolbar;
+}
+
+MSG_BOOL  msg_ui_viewer_create_item_list_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, data == NULL, FALSE);
+       MSG_ITEM_LIST_DATA_S *pitem_list_data = (MSG_ITEM_LIST_DATA_S *)data;
+       Evas_Object *back_button = NULL;
+       Evas_Object *toolbar = NULL;
+       Evas_Object *layout_inner = NULL;
+       Evas_Object *genlist = NULL;
+       Evas_Object *bg_layout = NULL;
+
+       /*get message body*/
+       if (__msg_ui_viewer_get_body_message(pitem_list_data) == FALSE)
+               return FALSE;
+
+       /*get inserted and attached item list*/
+       if (__msg_ui_viewer_item_list_get_list_data(pitem_list_data) == FALSE)
+               return FALSE;
+
+       bg_layout = msg_ui_viewer_get_bg_layout(pitem_list_data->viewer_main);
+       if (bg_layout)
+               elm_object_style_set(bg_layout, "group_list");
+
+       layout_inner = elm_layout_add(pitem_list_data->navi_frame);
+       evas_object_size_hint_weight_set(layout_inner, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_layout_file_set(layout_inner, MSG_VIEWER_THEME, "item_list");
+
+       genlist = __msg_ui_viewer_create_genlist(pitem_list_data);
+       __msg_ui_viewer_set_list_styles(pitem_list_data);
+       pitem_list_data->genlist = genlist;
+
+       /*set list data*/
+       __msg_ui_viewer_item_list_set_list_data(genlist, pitem_list_data);
+       elm_object_part_content_set(layout_inner, "viewer.itemlist.body", genlist);
+
+       back_button = elm_button_add(pitem_list_data->navi_frame);
+       elm_object_style_set(back_button, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_button, "clicked", __viewer_back_button_cb, (void *)pitem_list_data);
+       Elm_Object_Item *navi_it = elm_naviframe_item_push(pitem_list_data->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_ITEM_LIST"), back_button, NULL, layout_inner, NULL);
+
+       /*create commandbar*/
+       toolbar = __msg_ui_viewer_create_toolbar(pitem_list_data->navi_frame, pitem_list_data);
+       elm_object_item_part_content_set(navi_it, "controlbar", toolbar);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
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..d4d9019
--- /dev/null
@@ -0,0 +1,494 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+                                                                         INCLUDE 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 void __msg_ui_viewer_launch_item_list(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->item_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);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_main_data->item_list_view = 0x%x", viewer_main_data->item_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 if (viewMode == MSG_VIEWER_ITEM_LIST_VIEW) {
+               __msg_ui_viewer_launch_item_list(viewer_main_data);
+               viewer_main_data->view_mode = MSG_VIEWER_ITEM_LIST_VIEW;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid viewMode!!");
+       }
+}
+
+static void __msg_ui_viewer_launch_item_list(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_ITEM_LIST_DATA_S *pitem_list_data = NULL;
+
+       if (!viewer_main_data->item_list_view) {
+               pitem_list_data = (MSG_ITEM_LIST_DATA_S *)calloc(1, sizeof(MSG_ITEM_LIST_DATA_S));
+               if (!pitem_list_data) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+                       return;
+               } else
+                       viewer_main_data->item_list_view = pitem_list_data;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "item list view is already created");
+               pitem_list_data = viewer_main_data->item_list_view;
+       }
+
+       msg_ui_viewer_init_item_list(pitem_list_data);
+
+       pitem_list_data->msgID = viewer_main_data->msgID;
+       pitem_list_data->msgHandle = viewer_main_data->msgHandle;
+       pitem_list_data->mms_t = viewer_main_data->mms_t;
+       pitem_list_data->main_window = viewer_main_data->main_window;
+       if (viewer_main_data->navi_frame)
+               pitem_list_data->navi_frame = viewer_main_data->navi_frame;
+
+       pitem_list_data->viewer_main = viewer_main_data;
+
+       if (msg_ui_viewer_create_item_list_view(pitem_list_data) == FALSE) {
+               if (viewer_main_data->item_list_view) {
+                       msg_ui_viewer_destroy_item_list(viewer_main_data->item_list_view);
+                       free(viewer_main_data->item_list_view);
+                       viewer_main_data->item_list_view = NULL;
+               }
+       }
+}
+
+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;
+       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;
+       int msg_id = viewer_main_data->msgID;
+       MSG_SMIL_ERROR_E Error = MSG_SMIL_SUCCESS;
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+       if (viewer_main_data->launchmode == MSG_VIEWER_FULLVIEW_MODE) {
+               msg_error_t err = MSG_SUCCESS;
+               err = msg_get_message(viewer_main_data->msgHandle, 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 FALSE;
+               }
+
+               viewer_main_data->mms_t = msg_create_struct(MSG_STRUCT_MMS);
+               err = msg_get_mms_struct(msgInfo, viewer_main_data->mms_t);
+
+               if (err != MSG_SUCCESS) {
+                       msg_release_struct(&msgInfo);
+                       msg_release_struct(&sendOpt);
+                       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;
+       }
+
+       msg_release_struct(&sendOpt);
+       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_error_t err = MSG_SUCCESS;
+       MSG_BOOL isdrm_content = FALSE;
+
+       /*get the SMIL content*/
+       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(viewer_main_data->msgHandle, viewer_main_data->msgID, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return FALSE;
+       }
+
+       msg_struct_t mms_data = msg_create_struct(MSG_STRUCT_MMS);
+       if (mms_data == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, " msg_mms_get_message_body is failed");
+
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return FALSE;
+       }
+       msg_get_mms_struct(msgInfo, mms_data);
+
+       /*check invalid sd, ssd type drm file*/
+       if (msg_ui_viewer_get_invalid_ro_drm_list(mms_data, &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");
+
+       /*destroy and free message data*/
+       msg_release_struct(&mms_data);
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       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)
+{
+       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);
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, layout);
+       evas_object_show(layout);
+
+       return layout;
+}
+
+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;
+}
+
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..f65355a
--- /dev/null
@@ -0,0 +1,2267 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "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 <aul.h>
+#include <contacts-ug.h>
+#include "contacts-svc.h"
+#include "appsvc.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_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);
+
+/*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_create_save_attachments_popup(MSG_PLAY_DATA_S *data);
+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);
+
+/*==================================================================================================
+ *                                                             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;
+
+       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_box_layout) {
+                                               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                                               msg_ui_viewer_close_title_menu_genlist(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);
+                                       }
+                                       //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;
+                                               //create play controller timer
+                                               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+                                       }
+                       }
+               }
+       } 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_box_layout) {
+                                               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                                               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+                                       }
+                                       //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;
+                                               //create play controller timer
+                                               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);
+                                       }
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return EINA_FALSE;
+}
+
+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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return EINA_FALSE;
+}
+
+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;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+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;
+       int start_point_x = 0;
+       int start_point_y = 0;
+       int end_point_x = 0;
+       int end_point_y = 0;
+       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 mouse move
+       start_point_x = viewer_play_data->ctrl_start_x;
+       end_point_x = ev->canvas.x;
+
+       start_point_y = viewer_play_data->ctrl_start_y;
+       end_point_y = ev->canvas.y;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "start point_x = %d", start_point_x);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "start point_y = %d", start_point_y);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "end point_x = %d", end_point_x);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "endpoint_y = %d", end_point_y);
+
+       if (viewer_play_data->playcontroller_opened) {
+               if (abs(start_point_x-end_point_x) < screen_width / 10 &&
+                       abs(start_point_y-end_point_y) < screen_height / 10 &&
+                       end_point_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");
+
+                       if (viewer_play_data->playcontroller_opened) {
+                               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);
+                       } else {
+                               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;
+                                       //create play controller timer
+                                       msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+                               }
+                       }
+               }
+       } else {
+               if (abs(start_point_x-end_point_x) < screen_width / 10 && abs(start_point_y-end_point_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;
+                               //create play controller timer
+                               msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+                       }
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+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_box_layout) {
+               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+               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);
+
+       elm_object_disabled_set(obj, TRUE);
+
+       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;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+
+       if (viewer_play_data->title_optionheader_opened) {
+               elm_object_item_signal_emit(viewer_play_data->navi_item, "elm,state,optionheader,close", "");
+               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+               viewer_play_data->title_optionheader_opened = EINA_FALSE;
+       } else if (viewer_play_data->title_box_layout) {
+               /* clear title box layout */
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "clear title box layout!");
+               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+       } else {
+               /* clear optionheader */
+               Evas_Object *content = NULL;
+
+               content = elm_object_item_part_content_unset(viewer_play_data->navi_item, "optionheader");
+               if (content) {
+                       if (content == viewer_play_data->title_toolbar) {
+                               int i = 0;
+                               for (i = 0; i < sizeof(viewer_play_data->toolbar_item)/sizeof(Elm_Object_Item *); i++) {
+                                       if (viewer_play_data->toolbar_item[i] != NULL) {
+                                               elm_object_item_del(viewer_play_data->toolbar_item[i]);
+                                               viewer_play_data->toolbar_item[i] = NULL;
+                                       }
+                               }
+                       }
+                       evas_object_del(content);
+               }
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "addr count is  : %d", viewer_play_data->addr_list.addr_cnt);
+
+               if (viewer_play_data->addr_list.addr_cnt == 1) {
+                       viewer_play_data->title_toolbar = msg_ui_viewer_create_title_toolbar(viewer_play_data);
+                       msg_ui_viewer_add_title_toolbar_item(viewer_play_data->title_toolbar, viewer_play_data);
+                       elm_object_item_part_content_set(viewer_play_data->navi_item, "optionheader", viewer_play_data->title_toolbar);
+                       elm_object_item_signal_emit(viewer_play_data->navi_item, "elm,state,optionheader,open", "");
+                       elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,show", "");
+                       viewer_play_data->title_optionheader_opened = EINA_TRUE;
+               } else if (viewer_play_data->addr_list.addr_cnt > 1) {
+                       elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,show", "");
+                       msg_ui_viewer_open_title_menu_genlist(viewer_play_data);
+               } else {
+                       D_EMSG("invalid address count [%d]", viewer_play_data->addr_list.addr_cnt);
+                       return;
+               }
+
+               /* set player state to pause and update icon */
+               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, "[Error] msg_smil_on_slide_event_handler failed! : %d", err);
+                               return;
+                       } 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);
+                               }
+                       }
+               }
+       }
+
+       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_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);
+
+       //no medias in msg
+       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, (char *)"No attachments");
+               return;
+       }
+
+       viewer_play_data->popup_mode = VIEWER_SAVE_MODE_POPUP;
+
+       //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;
+       }
+
+       //destroying popup code is added, because response_cb of saving result popup is sometimes not called
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+       }
+
+       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);
+
+       //Pause
+       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;
+               } 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);
+                       }
+               }
+       }
+
+       //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_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+       }
+
+       Evas_Object *popup = elm_popup_add(viewer_play_data->main_window);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       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_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;
+
+       /* set player state to pause*/
+       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;
+               } 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);
+                       }
+               }
+       }
+
+       /*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;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete 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);
+
+       snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_DELETE_MSG, 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;
+       }
+
+       /* connect mouse handler again*/
+       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);
+}
+
+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;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+       }
+
+       /* set player state to pause*/
+       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, "[Error] msg_smil_on_slide_event_handler failed! : %d", err);
+                       return;
+               } 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);
+                       }
+               }
+       }
+
+       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_FORWARD, buf);
+               ui_gadget_h loaded_ug;
+
+               viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+               viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER;
+               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);
+               } else {
+                       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+               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;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+       char str_id[DEF_BUF_LEN] = {0,};
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+       }
+
+       /* set player state to pause*/
+       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, "[Error] msg_smil_on_slide_event_handler failed! : %d", err);
+                       return;
+               } 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);
+                       }
+               }
+       }
+
+       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);
+
+       snprintf(str_id, DEF_BUF_LEN, "%d", viewer_play_data->msgID);
+       service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_RESEND, 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);
+
+       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;
+       service_h svc_handle;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+       }
+
+       /* set player state to pause*/
+       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, "[Error] msg_smil_on_slide_event_handler failed! : %d", err);
+                       return;
+               } 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);
+                       }
+               }
+       }
+
+       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, viewer_play_data->addr_list.addr_info[0].address);
+               ui_gadget_h loaded_ug;
+
+               viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+               viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_MESSAGE_COMPOSER;
+               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);
+               } else {
+                       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+               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_SMIL_ERROR_E smilErr = MSG_SMIL_SUCCESS;
+       MSG_BOOL hasText = FALSE;
+       int page_count = 0;
+       int media_count = 0;
+       int folder_id = MSG_MAX_FOLDER_ID;
+       msg_error_t err = MSG_SUCCESS;
+
+       /*Get msg info struct handle */
+       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(viewer_play_data->msgHandle, viewer_play_data->msgID, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+       }
+
+       /* set player state to pause*/
+       if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+               smilErr = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PAUSE);
+               if (smilErr != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "[Error] msg_smil_on_slide_event_handler failed! : %d", smilErr);
+                       msg_release_struct(&msgInfo);
+                       msg_release_struct(&sendOpt);
+                       return;
+               } 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);
+                       }
+               }
+       }
+       Evas_Object *ctx_popup = NULL;
+       ctx_popup = elm_ctxpopup_add(viewer_play_data->main_window);
+       evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_viewer_more_ctxpopup_dismissed_cb, (void *)viewer_play_data);
+
+       /* Get folder ID */
+       msg_get_int_value(msgInfo, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);      //get msg folder type
+
+       /* Add FORWARD menu if outbox/inbox msg */
+       if (folder_id == MSG_OUTBOX_ID || folder_id == MSG_INBOX_ID)
+               elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_BODY_FORWARD_A"), NULL, msg_ui_viewer_forward_button_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, (char *)"Copy message text", NULL, __msg_ui_viewer_more_ctxpopup_clicked_cb, (void *)viewer_play_data);
+
+       /* Add view message details menu */
+       elm_ctxpopup_item_append(ctx_popup, (char *)"View message details", 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->ctrl_toolbar, &x, &y, &w, &h);
+       evas_object_move(ctx_popup, ((w-x)*5)/6 , y);
+       evas_object_show(ctx_popup);
+
+       viewer_play_data->popup = ctx_popup;
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       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;
+
+       syspopup_launch("volume", NULL);
+
+       //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);
+
+               /* hide optionheader if current viewer status has changed to MSG_VIEWER_PLAY */
+               if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+                       if (viewer_play_data->title_optionheader_opened) {
+                               elm_object_item_signal_emit(viewer_play_data->navi_item, "elm,state,optionheader,close", "");
+                               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                               viewer_play_data->title_optionheader_opened = EINA_FALSE;
+                       }
+
+                       if (viewer_play_data->title_box_layout) {
+                               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                               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;
+
+       msg_ui_viewer_command_play_pause(viewer_play_data);
+
+       //create play controller timer repeatedly
+       msg_ui_viewer_create_play_controller_timer(viewer_play_data);
+
+       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);
+
+               /* hide optionheader if current viewer status has changed to MSG_VIEWER_PLAY */
+               if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+                       if (viewer_play_data->title_optionheader_opened) {
+                               elm_object_item_signal_emit(viewer_play_data->navi_item, "elm,state,optionheader,close", "");
+                               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                               viewer_play_data->title_optionheader_opened = EINA_FALSE;
+                       }
+
+                       if (viewer_play_data->title_box_layout) {
+                               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+                       }
+               }
+       }
+}
+
+void msg_ui_viewer_stop_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_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+       MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+
+       /*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;
+       }
+
+       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 {
+               msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
+
+               if (launchmode == MSG_VIEWER_PREVIEW_MODE) {
+                       if (viewer_play_data->play_controller) {
+                               edje_object_signal_emit(_EDJ(viewer_play_data->play_controller), "play", "*");
+                               msg_ui_viewer_destroy_play_controller_progressbar_timer(viewer_play_data);
+                       }
+               } else if (launchmode == MSG_VIEWER_FULLVIEW_MODE){
+                       msg_ui_viewer_disconnect_handler(viewer_play_data);
+                       msg_ui_viewer_show_view_by_mode(viewer_play_data->viewer_main, MSG_VIEWER_ITEM_LIST_VIEW, MSG_VIEWER_VIEW_CMD_NONE);
+                       if (viewer_play_data->title_optionheader_opened) {
+                               elm_object_item_signal_emit(viewer_play_data->navi_item, "elm,state,optionheader,close", "");
+                               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                               viewer_play_data->title_optionheader_opened = EINA_FALSE;
+                       } else if (viewer_play_data->title_box_layout) {
+                               elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                               msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid launchmode : %d", launchmode);
+               }
+
+               viewer_play_data->status = MSG_VIEWER_STOP;
+               msg_ui_viewer_update_play_controller(viewer_play_data, MSG_VIEWER_STOP);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+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_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);
+
+       err = msg_get_message(viewer_play_data->msgHandle, viewer_play_data->msgID, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+       msg_struct_list_s *addr_list = NULL;
+       msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+
+       int addr_count = addr_list->nCount;     //get address count
+
+       if (addr_count == 1) {
+               ui_gadget_h loaded_ug = NULL;
+               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_set_str_value(addr_info, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, szAddress, strlen(szAddress));
+
+               char *address = (char*)calloc(1, strlen(szAddress)+1);
+               memcpy(address, szAddress, strlen(szAddress));
+
+               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_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, address);
+
+               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_EMAIL_COMPOSER;
+               loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), EMAIL_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);
+               } else {
+                       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+
+               service_destroy(svc_handle);
+       }
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       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);
+
+       if (viewer_play_data->addr_list.addr_cnt == 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);
+               snprintf(telnum, sizeof(telnum), "tel:%s", viewer_play_data->addr_list.addr_info[0].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, "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);
+       }
+
+       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);
+
+       if (viewer_play_data->addr_list.addr_cnt == 1) {
+               int ret = 0;
+               bundle *b = bundle_create();
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_TYPE, MSG_BUNDLE_VALUE_VCALL_MO);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_HANDLE, MSG_BUNDLE_VALUE_VCALL_HANDLE);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_PARTY_NUM, viewer_play_data->addr_list.addr_info[0].address);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_CLI_CAUSE, MSG_BUNDLE_VALUE_VCALL_FALSE);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_FORWARDED, MSG_BUNDLE_VALUE_VCALL_FALSE);
+               if ((ret = aul_launch_app(VIDEO_CALL_PKG_NAME, b)) >= 0) {
+                       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_DEBUG, "aul_launch_app failed ret : %d", ret);
+               }
+               bundle_free(b);
+       }
+
+       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);
+
+       if (viewer_play_data->addr_list.addr_cnt == 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);
+
+               if (strstr(viewer_play_data->addr_list.addr_info[0].address, "@")) {
+                       snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_UPDATE_WITH_EMAIL);
+                       service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+                       service_add_extra_data(svc_handle, CT_UG_BUNDLE_EMAIL, viewer_play_data->addr_list.addr_info[0].address);
+               } else {
+                       snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_UPDATE_WITH_NUM);
+                       service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+                       service_add_extra_data(svc_handle, CT_UG_BUNDLE_NUM, viewer_play_data->addr_list.addr_info[0].address);
+               }
+
+               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_ADD_TO_CONTACT;
+               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);
+               } else {
+                       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+
+               service_destroy(svc_handle);
+       }
+
+       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);
+
+       if (viewer_play_data->addr_list.addr_cnt == 1) {
+               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", viewer_play_data->addr_list.addr_info[0].contact_id);
+               snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_DETAIL);
+
+               service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+               service_add_extra_data(svc_handle, CT_UG_BUNDLE_ID, contactId);
+
+               viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+               viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_ADD_TO_CONTACT;
+               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);
+               } else {
+                       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+
+               service_destroy(svc_handle);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+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!");
+       int i = 0;
+
+       /* create layout for title menu */
+       Evas_Object *layout = elm_layout_add(viewer_play_data->play_layout);
+       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);
+       elm_object_part_content_set(viewer_play_data->play_layout, "viewer.titlebtn.list", layout);
+
+       /* create box (for setting min size of genlist)*/
+       Evas_Object *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);
+       evas_object_show(box);
+       elm_object_part_content_set(layout, "elm.swallow.content", box);
+
+       /* create genlist */
+       Evas_Object *genlist = elm_genlist_add(box);
+       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);
+
+       /* set genlist styles */
+       viewer_play_data->itc_title.item_style = "2text.1icon.2";
+       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 = NULL;
+
+       /* genlist list load */
+       for (i = 0; i < viewer_play_data->addr_list.addr_cnt; i++)
+               elm_genlist_item_append(genlist, &(viewer_play_data->itc_title), &(viewer_play_data->addr_list.addr_info[i]), NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_viewer_title_menu_gl_sel, viewer_play_data);
+
+       viewer_play_data->title_genlist = genlist;
+       viewer_play_data->title_box_layout = layout;
+
+       /** emit signal for changing state of title menu list to open */
+       elm_object_signal_emit(viewer_play_data->title_box_layout, "elm,state,titlelist,open", "");
+
+       /** Determine genlist size to show - it shows maxmum 3 rows */
+       if (viewer_play_data->addr_list.addr_cnt >= 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);
+       else
+               evas_object_size_hint_min_set(box, 0, VIEWER_TITLE_MENU_LINE_HEIGHT * viewer_play_data->addr_list.addr_cnt);
+
+       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->title_box_layout, "elm,state,titlelist,close", "");
+
+       Evas_Object *layout = elm_object_part_content_unset(viewer_play_data->play_layout, "viewer.titlebtn.list");
+       if (layout) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "delete box layout");
+               evas_object_del(layout);
+       }
+
+       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_PLAY_DATA_S *viewer_play_data = evas_object_data_get(obj, "viewer_play_data");
+       MSG_VIEWER_ADDR_INFO *addrInfo = (MSG_VIEWER_ADDR_INFO *)data;
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !viewer_play_data || !addrInfo, NULL);
+
+       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
+       // TODO: add callerId
+       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;
+       }
+
+       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 {
+               D_MSG("invalid_numtype");
+       }
+
+       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);
+       }
+
+       elm_list_go(list);
+       elm_object_content_set(popup, list);
+       evas_object_show(popup);
+
+       viewer_play_data->popup = popup;
+
+       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;
+       }
+
+       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;
+       }
+
+       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) {
+               int ret = 0;
+               bundle *b = bundle_create();
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_TYPE, MSG_BUNDLE_VALUE_VCALL_MO);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_HANDLE, MSG_BUNDLE_VALUE_VCALL_HANDLE);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_PARTY_NUM, addrInfo->address);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_CLI_CAUSE, MSG_BUNDLE_VALUE_VCALL_FALSE);
+               bundle_add(b, MSG_BUNDLE_KEY_VCALL_FORWARDED, MSG_BUNDLE_VALUE_VCALL_FALSE);
+               if ((ret = aul_launch_app(VIDEO_CALL_PKG_NAME, b)) >= 0) {
+                       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_DEBUG, "aul_launch_app failed ret : %d", ret);
+               }
+               bundle_free(b);
+       } 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", CT_UG_REQUEST_UPDATE_WITH_EMAIL);
+                       service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+                       service_add_extra_data(svc_handle, CT_UG_BUNDLE_EMAIL, addrInfo->address);
+               } else {
+                       snprintf(buf, sizeof(buf), "%d", CT_UG_REQUEST_UPDATE_WITH_NUM);
+                       service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+                       service_add_extra_data(svc_handle, CT_UG_BUNDLE_NUM, addrInfo->address);
+               }
+
+               viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+               viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_ADD_TO_CONTACT;
+               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);
+               } else {
+                       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+               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", CT_UG_REQUEST_DETAIL);
+
+               service_add_extra_data(svc_handle, CT_UG_BUNDLE_TYPE, buf);
+               service_add_extra_data(svc_handle, CT_UG_BUNDLE_ID, contactId);
+
+               viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+               viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_ADD_TO_CONTACT;
+               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);
+               } else {
+                       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+               service_destroy(svc_handle);
+       } else if (g_strcmp0(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_SEND_EMAIL")) == 0) {
+               ui_gadget_h loaded_ug = NULL;
+               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_RUN_TYPE, MSG_BUNDLE_VALUE_EMAIL_COMPOSE);
+               service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TO, addrInfo->address);
+
+               viewer_play_data->launch_cmd = MSG_VIEWER_LOAD_OTHER_UG_MODE;
+               viewer_play_data->cmd_type = MSG_VIEWER_CMD_LOAD_EMAIL_COMPOSER;
+               loaded_ug = ug_create(msg_ui_viewer_get_viewer_ug(viewer_play_data->viewer_main), EMAIL_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);
+               } else {
+                       viewer_play_data->launch_cmd = MSG_VIEWER_DEFAULT_MODE;
+                       viewer_play_data->cmd_type = MSG_VIEWER_CMD_NONE;
+               }
+               service_destroy(svc_handle);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static 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;
+       Elm_Object_Item *gl_item = NULL;
+       Evas_Object *popup = NULL;
+       Evas_Object *genlist = NULL;
+       Evas_Object *btn_save = NULL;
+       Evas_Object *btn_close = NULL;
+       int index = 0;
+       int total_media_count = 0;
+
+       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", (char *)"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 */
+               gl_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++) {
+                       gl_item = 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++) {
+                       gl_item = 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 */
+       if (total_media_count > 3 ) {
+               /* set genlist part content in popup */
+               elm_object_content_set(popup, genlist);
+       } else {
+               Evas_Object *box = NULL;
+               box = elm_box_add(viewer_play_data->main_window);
+               evas_object_size_hint_min_set(box, VIEWER_ATTACH_POPUP_WIDTH * elm_scale_get(), VIEWER_ATTACH_GL_ITEM_HEIGHT * (viewer_play_data->insert_count + viewer_play_data->attach_count + ((total_media_count > 1) ? 1 : 0)) * elm_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;
+
+       /*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 = 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 mouse handler again*/
+       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_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 = 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 {
+               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 mouse handler again*/
+       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_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_icon_file_set(image, media_info->pfile_path, NULL);
+               } else if (media_info->media_type == MSG_VIEWER_MEDIA_DRM) {
+                       elm_icon_file_set(image, MSG_VIEWER_IMAGE_DRM_SMALL_ICON, NULL);
+               } 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_icon_file_set(image, icon_path, NULL);
+                               } else {
+                                       D_EMSG("icon_path is NULL");
+                                       elm_icon_file_set(image, MSG_VIEWER_IMAGE_ATTACH_ICON, NULL);
+                               }
+                       } 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 if (realIndex < total_count) {
+                       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 {
+               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);
+
+                       /*check for same file*/
+                       if (ecore_file_exists(dst_path) == EINA_TRUE) {
+                               if (msg_ui_viewer_auto_rename(pAttach_info->pfile_path, dst_path) == FALSE)
+                                       issave = FALSE;
+                       } else {
+                               if (ecore_file_cp(pAttach_info->pfile_path, dst_path) == EINA_FALSE)
+                                       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("sys_string", "IDS_COM_POP_SAVED"));
+               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;
+       }
+
+       if (strcmp(label, (char *)"Copy message text") == 0) {
+               msg_ui_viewer_copy_message_text_to_clipboard(viewer_play_data);
+       } else if (strcmp(label, (char *)"View message details") == 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;
+       }
+
+       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..bd287e8
--- /dev/null
@@ -0,0 +1,2635 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                                     INCLUDE 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 <aul.h>
+#include <Ecore_X.h>
+#include <glib.h>
+#include <contacts-ug.h>
+#include "contacts-svc.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 void __msg_ui_viewer_get_thread_addr_list(MSG_PLAY_DATA_S *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);
+
+/* 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);
+static void __msg_ui_viewer_make_details_text(MSG_PLAY_DATA_S *data, Evas_Object *entry);
+
+/*==================================================================================================
+ *                                                             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, "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/index", 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;
+                       }
+               } 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) {
+               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_mode = 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;
+       Evas_Object *left_btn_icon = NULL;
+       Evas_Object *right_btn_icon = NULL;
+       int r = VIEWER_COLOR_255;
+       int g = VIEWER_COLOR_255;
+       int b = VIEWER_COLOR_255;
+       int a = VIEWER_COLOR_255;
+       SMIL_SLIDE_INFO_S *slide = msg_smil_get_current_slide_info(viewer_play_data->SmilHandle);
+
+       if (status == MSG_VIEWER_STOP) {
+               elm_object_disabled_set(viewer_play_data->next_button, TRUE);
+               right_btn_icon = elm_object_part_content_get(viewer_play_data->next_button, "icon");
+               evas_object_color_get(right_btn_icon, &r, &g, &b, &a);
+               evas_object_color_set(right_btn_icon, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+               elm_object_disabled_set(viewer_play_data->prev_button, TRUE);
+               left_btn_icon = elm_object_part_content_get(viewer_play_data->prev_button, "icon");
+               evas_object_color_get(left_btn_icon, &r, &g, &b, &a);
+               evas_object_color_set(left_btn_icon, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128);
+               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*/
+                                       elm_object_disabled_set(viewer_play_data->prev_button, TRUE);
+                                       left_btn_icon = elm_object_part_content_get(viewer_play_data->prev_button, "icon");
+                                       evas_object_color_get(left_btn_icon, &r, &g, &b, &a);
+                                       evas_object_color_set(left_btn_icon, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128);
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+                       } else {
+                               elm_object_disabled_set(viewer_play_data->prev_button, FALSE);
+                               left_btn_icon = elm_object_part_content_get(viewer_play_data->prev_button, "icon");
+                               evas_object_color_get(left_btn_icon, &r, &g, &b, &a);
+                               evas_object_color_set(left_btn_icon, VIEWER_COLOR_255, VIEWER_COLOR_255, VIEWER_COLOR_255, VIEWER_COLOR_255);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Enable prev_button");
+                       }
+
+                       if (blast_page) {        /*lastpage*/
+                                       elm_object_disabled_set(viewer_play_data->next_button, TRUE);
+                                       right_btn_icon = elm_object_part_content_get(viewer_play_data->next_button, "icon");
+                                       evas_object_color_get(right_btn_icon, &r, &g, &b, &a);
+                                       evas_object_color_set(right_btn_icon, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128, 128);
+                                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+                       } else {
+                               elm_object_disabled_set(viewer_play_data->next_button, FALSE);
+                               right_btn_icon = elm_object_part_content_get(viewer_play_data->next_button, "icon");
+                               evas_object_color_get(right_btn_icon, &r, &g, &b, &a);
+                               evas_object_color_set(right_btn_icon, VIEWER_COLOR_255, VIEWER_COLOR_255, VIEWER_COLOR_255, VIEWER_COLOR_255);
+                               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) {
+                               elm_object_disabled_set(viewer_play_data->next_button, TRUE);
+                               right_btn_icon = elm_object_part_content_get(viewer_play_data->next_button, "icon");
+                               evas_object_color_get(right_btn_icon, &r, &g, &b, &a);
+                               evas_object_color_set(right_btn_icon, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable next_button");
+
+                               elm_object_disabled_set(viewer_play_data->prev_button, TRUE);
+                               left_btn_icon = elm_object_part_content_get(viewer_play_data->prev_button, "icon");
+                               evas_object_color_get(left_btn_icon, &r, &g, &b, &a);
+                               evas_object_color_set(left_btn_icon, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128);
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Disable prev_button");
+                       }
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Multipart.mixed message");
+                       elm_object_disabled_set(viewer_play_data->next_button, TRUE);
+                       right_btn_icon = elm_object_part_content_get(viewer_play_data->next_button, "icon");
+                       evas_object_color_get(right_btn_icon, &r, &g, &b, &a);
+                       evas_object_color_set(right_btn_icon, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128);
+
+                       elm_object_disabled_set(viewer_play_data->prev_button, TRUE);
+                       left_btn_icon = elm_object_part_content_get(viewer_play_data->prev_button, "icon");
+                       evas_object_color_get(left_btn_icon, &r, &g, &b, &a);
+                       evas_object_color_set(left_btn_icon, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128, VIEWER_COLOR_128);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_command_play_pause(void *data)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_SMIL_ERROR_E Error = 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;
+       }
+
+       /* play */
+       if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+               Error = msg_smil_on_slide_event_handler(&(viewer_play_data->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);
+                       return;
+               } 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);
+               }
+       } else if (viewer_play_data->status == MSG_VIEWER_STOP) {
+               Error = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_PLAY);
+               if (Error != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", Error);
+               } 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) {
+               Error = msg_smil_on_slide_event_handler(&(viewer_play_data->SmilHandle), PLAYER_EVENT_RESUME);
+               if (Error != MSG_SMIL_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_smil_on_slide_event_handler failed! : %d", Error);
+                       return;
+               } 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);
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid play status case");
+       }
+
+       /* hide optionheader if current viewer status has changed to MSG_VIEWER_PLAY */
+       if (viewer_play_data->status == MSG_VIEWER_PLAY) {
+               if (viewer_play_data->title_optionheader_opened) {
+                       elm_object_item_signal_emit(viewer_play_data->navi_item, "elm,state,optionheader,close", "");
+                       elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                       viewer_play_data->title_optionheader_opened = EINA_FALSE;
+               }
+
+               if (viewer_play_data->title_box_layout) {
+                       elm_object_signal_emit(viewer_play_data->navi_title_layout, "elm,state,title,hide", "");
+                       msg_ui_viewer_close_title_menu_genlist(viewer_play_data);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_viewer_update_player_state_after_save(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, data == NULL);
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+       MSG_PLAY_DATA_S *viewer_play_data = (MSG_PLAY_DATA_S *)data;
+
+       if (viewer_play_data->status == MSG_VIEWER_PAUSE && viewer_play_data->previous_status == MSG_VIEWER_PLAY) {
+               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;
+               } else {
+                       viewer_play_data->status = MSG_VIEWER_PLAY;
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->status : %d", viewer_play_data->status);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->previous_status : %d", viewer_play_data->previous_status);
+       }
+
+       viewer_play_data->previous_status = MSG_VIEWER_UNKOWN;
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+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->ctrl_toolbar = NULL;
+       viewer_play_data->title_toolbar = NULL;
+       viewer_play_data->title_box_layout = NULL;
+       viewer_play_data->title_genlist = NULL;
+       viewer_play_data->subject_index_layout = NULL;
+       viewer_play_data->play_controller = NULL;
+       viewer_play_data->play_layout = NULL;
+       viewer_play_data->prev_button = NULL;
+       viewer_play_data->next_button = NULL;
+       viewer_play_data->help_page_gl = NULL;
+       viewer_play_data->save_attachment_gl = 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->cmd_type = MSG_VIEWER_CMD_NONE;
+       viewer_play_data->bgcolor = 0x0;
+       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->prev_button = NULL;
+       viewer_play_data->next_button = NULL;
+       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_optionheader_opened = 0;
+       viewer_play_data->playcontroller_opened = 0;
+
+       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 (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;
+       }
+
+       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;
+       }
+
+       msg_ui_viewer_disconnect_handler(viewer_play_data);
+
+       //unset volume key type
+       sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_NONE);
+
+       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;
+       }
+       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;
+       int msg_id = viewer_play_data->msgID;
+       MSG_SMIL_ERROR_E err = MSG_SMIL_SUCCESS;
+       Evas_Object *layout = NULL;
+       MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+
+       /*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);
+       }
+
+       /* 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);
+
+       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);
+
+       /*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");
+
+       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) {
+               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);
+
+               err = msg_get_message(viewer_play_data->msgHandle, viewer_play_data->msgID, msgInfo, sendOpt);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+                       msg_release_struct(&msgInfo);
+                       msg_release_struct(&sendOpt);
+                       return FALSE;
+               }
+               /*set read status*/
+               bool readStatus = FALSE;
+               msg_get_bool_value(msgInfo, MSG_MESSAGE_READ_BOOL, &readStatus);
+
+               if (!readStatus)
+                       msg_update_read_status(viewer_play_data->msgHandle, msg_id, TRUE);
+
+               /* send read report*/
+               int folder_id = MSG_MAX_FOLDER_ID;
+               msg_get_int_value(msgInfo, 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, msg_id, MSG_READ_REPORT_IS_READ);
+
+                       } else {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_config is failed!");
+                       }
+                       msg_release_struct(&rcvSetting_info);
+               }
+
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+       }
+
+       //set volume key type as MEDIA, not SYSTEM
+       sound_manager_set_volume_key_type(VOLUME_KEY_TYPE_MEDIA);
+
+       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 mouse down signal*/
+       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);
+
+       /*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 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);
+       }
+
+       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;
+       char strSubject[MAX_SUBJECT_LEN] = {0};
+       msg_error_t err = MSG_SUCCESS;
+
+       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;
+
+       /*get msg info struct handle */
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+       if (viewer_play_data->msgID != -1) {
+               err = msg_get_message(viewer_play_data->msgHandle, viewer_play_data->msgID, msgInfo, sendOpt);
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+                       msg_release_struct(&msgInfo);
+                       msg_release_struct(&sendOpt);
+                       return;
+               }
+
+               msg_get_str_value(msgInfo, MSG_MESSAGE_SUBJECT_STR, strSubject, MAX_SUBJECT_LEN);
+       } else {                //preview data, subject string cannot be found in mms_t struct
+               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", strSubject);
+
+       elm_object_part_content_set(viewer_play_data->play_layout, "viewer.swallow.subject", viewer_play_data->subject_index_layout);
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       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;
+
+       //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;
+       Evas_Object *toolbar = NULL;
+       int folder_id = MSG_MAX_FOLDER_ID;
+       msg_error_t err = MSG_SUCCESS;
+       MSG_VIEWER_LAUNCH_VIEW_MODE_E launchmode = MSG_VIEWER_INVALID_MODE;
+
+       toolbar = elm_toolbar_add(viewer_play_data->navi_frame);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, toolbar == NULL);
+
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+       msg_ui_viewer_get_viewer_launchmode(viewer_play_data->viewer_main, &launchmode);
+
+       /*get msg info struct handle */
+       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(viewer_play_data->msgHandle, viewer_play_data->msgID, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+
+       //All item should be empty
+       if (launchmode == MSG_VIEWER_PREVIEW_MODE) {
+               // Toolbar item empty
+       } else if (launchmode == MSG_VIEWER_FULLVIEW_MODE) {
+               viewer_play_data->ctrltoolbar_item[0] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_ATTACH, NULL, msg_ui_viewer_save_button_cb, data);
+               viewer_play_data->ctrltoolbar_item[1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, NULL, msg_ui_viewer_delete_button_cb, data);
+
+               /* get folder ID */
+               msg_get_int_value(msgInfo, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);      //get msg folder type
+
+               if (folder_id == MSG_SENTBOX_ID) {
+                       viewer_play_data->ctrltoolbar_item[2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_FORWARD, NULL, msg_ui_viewer_forward_button_cb, data);
+               } else if (folder_id == MSG_OUTBOX_ID) {
+                       viewer_play_data->ctrltoolbar_item[2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_RESEND, NULL, msg_ui_viewer_resend_button_cb, data);
+               } else if (folder_id == MSG_INBOX_ID) {
+                       viewer_play_data->ctrltoolbar_item[2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_REPLY, NULL, msg_ui_viewer_reply_button_cb, data);
+               }
+
+               viewer_play_data->ctrltoolbar_item[3] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_MORE, NULL, msg_ui_viewer_more_button_cb, data);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid launch mode");
+       }
+
+       elm_object_item_part_content_set(viewer_play_data->navi_item, "controlbar", toolbar);
+
+       viewer_play_data->ctrl_toolbar = toolbar;
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       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;
+
+       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_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);
+
+       err = msg_get_message(viewer_play_data->msgHandle, viewer_play_data->msgID, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+
+       msg_get_int_value(msgInfo, 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);
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               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);
+                       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");
+                       evas_object_size_hint_weight_set(viewer_play_data->title_button, 0.0, 0.0);
+                       evas_object_size_hint_align_set(viewer_play_data->title_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+                       if (viewer_play_data->addr_list.addr_info[0].contact_id > 0) {
+                               display_name = msg_viewer_util_get_display_name_by_index(viewer_play_data->addr_list.addr_info[0].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"));
+                               }
+                       } else {
+                               snprintf(title_address, sizeof(title_address), "%s", viewer_play_data->addr_list.addr_info[0].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);
+                       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");
+                       evas_object_size_hint_weight_set(viewer_play_data->title_button, 0.0, 0.0);
+                       evas_object_size_hint_align_set(viewer_play_data->title_button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+                       if (viewer_play_data->addr_list.addr_info[0].contact_id > 0) {
+                               display_name = msg_viewer_util_get_display_name_by_index(viewer_play_data->addr_list.addr_info[0].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"));
+                               }
+                       } else {
+                               snprintf(title_address, sizeof(title_address), "%s", viewer_play_data->addr_list.addr_info[0].address);
+                       }
+
+                       if (viewer_play_data->addr_list.addr_cnt == 1) {
+                               elm_object_text_set(viewer_play_data->title_button, title_address);
+                       } else if (viewer_play_data->addr_list.addr_cnt  > 1) {
+                               char title_text[DEF_BUF_LEN+1] = {0,};
+                               snprintf(title_text, sizeof(title_text), "%s +%d", title_address, viewer_play_data->addr_list.addr_cnt -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);
+               }
+       }
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+Evas_Object *msg_ui_viewer_create_title_toolbar(void *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 *toolbar = elm_toolbar_add(viewer_play_data->navi_frame);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, toolbar == NULL, NULL);
+
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+       elm_object_style_set(toolbar, "naviframe");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return toolbar;
+}
+
+Evas_Object *msg_ui_viewer_create_title_toolbar_btn(Evas_Object *parent, char *icon_path, char *button_text)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       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_icon_file_set(icon, icon_path, NULL);
+               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);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return button;
+}
+
+void msg_ui_viewer_add_title_toolbar_item(Evas_Object *toolbar, 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 i;
+
+       /* create add/view contact button */
+       Evas_Object *addcontact_button = NULL;
+
+       /* clear toolbar items, max value is 3 */
+       for (i = 0; i < 3; i++) {
+               if (viewer_play_data->toolbar_item[i])
+                       elm_object_item_del(viewer_play_data->toolbar_item[i]);
+       }
+
+       if (viewer_play_data->addr_list.addr_info[0].contact_id <= 0) {
+               addcontact_button = msg_ui_viewer_create_title_toolbar_btn(toolbar, MSG_TITLE_ICON_ADD_TO_CONTACT, NULL);
+               evas_object_smart_callback_add(addcontact_button, "clicked", msg_ui_viewer_toolbar_add_to_contact_cb, (void *)viewer_play_data);
+       } else {
+               addcontact_button = msg_ui_viewer_create_title_toolbar_btn(toolbar, MSG_CONTROLBAR_ICON_VIEW_CONTACT, NULL);
+               evas_object_smart_callback_add(addcontact_button, "clicked", msg_ui_viewer_toolbar_view_contact_cb, (void *)viewer_play_data);
+       }
+
+       if (msg_common_is_valid_phone_number(viewer_play_data->addr_list.addr_info[0].address)) {
+               /* create voicecall button */
+               Evas_Object *voicecall_button = msg_ui_viewer_create_title_toolbar_btn(toolbar, MSG_TITLE_ICON_VOICECALL, NULL);
+               evas_object_smart_callback_add(voicecall_button, "clicked", msg_ui_viewer_toolbar_call_cb, (void *)viewer_play_data);
+               viewer_play_data->toolbar_item[0] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+               elm_object_item_part_content_set(viewer_play_data->toolbar_item[0], "object", voicecall_button);
+
+               /* create videocall button */
+               Evas_Object *videocall_button = msg_ui_viewer_create_title_toolbar_btn(toolbar, MSG_TITLE_ICON_VIDEOCALL, NULL);
+               evas_object_smart_callback_add(videocall_button, "clicked", msg_ui_viewer_toolbar_vcall_cb, (void *)viewer_play_data);
+               viewer_play_data->toolbar_item[1] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+               elm_object_item_part_content_set(viewer_play_data->toolbar_item[1], "object", videocall_button);
+
+               viewer_play_data->toolbar_item[2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+               elm_object_item_part_content_set(viewer_play_data->toolbar_item[2], "object", addcontact_button);
+       } else if (msg_common_is_valid_email_addr(viewer_play_data->addr_list.addr_info[0].address)) {
+               Evas_Object *email_button = msg_ui_viewer_create_title_toolbar_btn(toolbar, NULL, dgettext("sys_string","IDS_COM_BODY_EMAIL"));
+               evas_object_smart_callback_add(email_button, "clicked", msg_ui_viewer_toolbar_email_cb, (void *)viewer_play_data);
+               viewer_play_data->toolbar_item[0] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+               elm_object_item_part_content_set(viewer_play_data->toolbar_item[0], "object", email_button);
+
+               viewer_play_data->toolbar_item[1] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+               elm_object_item_part_content_set(viewer_play_data->toolbar_item[1], "object", addcontact_button);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "given address cannot be handled : %s", viewer_play_data->addr_list.addr_info[0].address);
+
+               viewer_play_data->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+               elm_object_item_part_content_set(viewer_play_data->toolbar_item[0], "object", addcontact_button);
+               elm_object_item_disabled_set(viewer_play_data->toolbar_item[0], EINA_TRUE);
+               elm_object_disabled_set(addcontact_button, EINA_TRUE);
+       }
+
+       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 x = 0;
+       int y = 0;
+       int w = 0;
+       int navi_frame_height = 0;
+       int toolbar_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);
+
+       /*get toolbar height*/
+       edje_object_part_geometry_get(_EDJ(viewer_play_data->play_layout), "viewer.swallow.toolbar", &x, &y, &w, &toolbar_height);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "window_width = %d, window_height = %d, toolbar_height = %d", window_width, window_height, toolbar_height);
+
+       left_top->x = 0;
+       left_top->y = navi_frame_height;
+       right_bottom->x = window_width;
+       right_bottom->y = (window_height - toolbar_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);
+       viewer_play_data->bgcolor = bgColor;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "viewer_play_data->bgcolor = 0x%x", viewer_play_data->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);
+
+       /* get address list(thread) */
+       __msg_ui_viewer_get_thread_addr_list(viewer_play_data);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return TRUE;
+}
+
+static void __msg_ui_viewer_get_thread_addr_list(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_error_t err =  MSG_SUCCESS;
+       msg_struct_list_s addrList;
+       int thread_id;
+
+       /* get address list(thread) */
+       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(viewer_play_data->msgHandle, viewer_play_data->msgID, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+       msg_get_int_value(msgInfo, 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");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+
+       /*initialize addr list*/
+       memset(&viewer_play_data->addr_list, 0x00, sizeof(MSG_VIEWER_ADDR_LIST));
+
+       viewer_play_data->addr_list.addr_cnt = addrList.nCount;
+
+       int i = 0;
+       for (i = 0; i < addrList.nCount; i++) {
+               msg_get_int_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_CONTACT_ID_INT, &viewer_play_data->addr_list.addr_info[i].contact_id);
+               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_DISPLAYNAME_STR, viewer_play_data->addr_list.addr_info[i].name, MAX_DISPLAY_NAME_LEN);
+               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, viewer_play_data->addr_list.addr_info[i].address, MAX_ADDRESS_VAL_LEN);
+       }
+
+       msg_release_list_struct(&addrList);
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+}
+
+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_contact_info_update(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;
+
+       /* reload thread address list */
+       __msg_ui_viewer_get_thread_addr_list(viewer_play_data);
+
+       /* change control bar button */
+       if (viewer_play_data->title_optionheader_opened) {
+               if (viewer_play_data->addr_list.addr_info[0].contact_id > 0) {
+                       Evas_Object *addcontact_button = msg_ui_viewer_create_title_toolbar_btn(viewer_play_data->title_toolbar, MSG_CONTROLBAR_ICON_VIEW_CONTACT, NULL);
+                       evas_object_smart_callback_add(addcontact_button, "clicked", msg_ui_viewer_toolbar_view_contact_cb, (void *)viewer_play_data);
+
+                       if (msg_common_is_valid_phone_number(viewer_play_data->addr_list.addr_info[0].address)) {
+                               elm_object_item_del(viewer_play_data->toolbar_item[2]);
+                               viewer_play_data->toolbar_item[2] = elm_toolbar_item_append(viewer_play_data->title_toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+                               elm_object_item_part_content_set(viewer_play_data->toolbar_item[2], "object", addcontact_button);
+                       } else if (msg_common_is_valid_email_addr(viewer_play_data->addr_list.addr_info[0].address)) {
+                               elm_object_item_del(viewer_play_data->toolbar_item[1]);
+                               viewer_play_data->toolbar_item[1] = elm_toolbar_item_append(viewer_play_data->title_toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+                               elm_object_item_part_content_set(viewer_play_data->toolbar_item[1], "object", addcontact_button);
+                       }
+               } else {
+                       Evas_Object *addcontact_button = msg_ui_viewer_create_title_toolbar_btn(viewer_play_data->title_toolbar, MSG_TITLE_ICON_ADD_TO_CONTACT, NULL);
+                       evas_object_smart_callback_add(addcontact_button, "clicked", msg_ui_viewer_toolbar_add_to_contact_cb, (void *)viewer_play_data);
+
+                       if (msg_common_is_valid_phone_number(viewer_play_data->addr_list.addr_info[0].address)) {
+                               elm_object_item_del(viewer_play_data->toolbar_item[2]);
+                               viewer_play_data->toolbar_item[2] = elm_toolbar_item_append(viewer_play_data->title_toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+                               elm_object_item_part_content_set(viewer_play_data->toolbar_item[2], "object", addcontact_button);
+                       } else if (msg_common_is_valid_email_addr(viewer_play_data->addr_list.addr_info[0].address)) {
+                               elm_object_item_del(viewer_play_data->toolbar_item[1]);
+                               viewer_play_data->toolbar_item[1] = elm_toolbar_item_append(viewer_play_data->title_toolbar, NULL, NULL, NULL, (void *)viewer_play_data);
+                               elm_object_item_part_content_set(viewer_play_data->toolbar_item[1], "object", addcontact_button);
+                       }
+               }
+       }
+
+       /* change title button */
+       if (viewer_play_data->addr_list.addr_cnt == 1) {
+               if (viewer_play_data->addr_list.addr_info[0].name[0] != '\0')
+                       elm_object_text_set(viewer_play_data->title_button, viewer_play_data->addr_list.addr_info[0].name);
+               else
+                       elm_object_text_set(viewer_play_data->title_button, viewer_play_data->addr_list.addr_info[0].address);
+       } else if (viewer_play_data->addr_list.addr_cnt > 1) {
+               char title_text[DEF_BUF_LEN+1] = {0,};
+
+               if (viewer_play_data->addr_list.addr_info[0].name[0] != '\0')
+                       snprintf(title_text, sizeof(title_text), "%s +%d", viewer_play_data->addr_list.addr_info[0].name, viewer_play_data->addr_list.addr_cnt-1);
+               else
+                       snprintf(title_text, sizeof(title_text), "%s +%d", viewer_play_data->addr_list.addr_info[0].address, viewer_play_data->addr_list.addr_cnt-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"));
+       }
+
+       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;
+       }
+
+       popup = elm_popup_add(parent);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, popup == NULL, "popup is NULL");
+       viewer_play_data->popup = 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;
+               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_mode == VIEWER_SAVE_MODE_POPUP)
+               msg_ui_viewer_update_player_state_after_save(data);
+
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+       }
+
+       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_mode == VIEWER_SAVE_MODE_POPUP) {
+               msg_ui_viewer_update_player_state_after_save(data);
+       } else if (viewer_play_data->popup_mode == VIEWER_DELETE_MSG_MODE_POPUP) {
+               //destroy ug
+               if (viewer_play_data->viewer_main) {
+                       MSG_VIEWER_MAIN_DATA_S *viewer_main_data = (MSG_VIEWER_MAIN_DATA_S *)viewer_play_data->viewer_main;
+                       ug_destroy_me(viewer_main_data->viewer_ug);
+                       return;
+               }
+       }
+       if (viewer_play_data->popup) {
+               evas_object_del(viewer_play_data->popup);
+               viewer_play_data->popup = NULL;
+       }
+
+       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_genlist_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));
+
+       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;
+
+               //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;
+
+               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);
+                       return strdup(pAttach_info->pfile_name);
+               }
+       }
+
+       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_icon_file_set(icon, MSG_VIEWER_IMAGE_SAVE_ICON, NULL);
+               elm_object_part_content_set(button, "icon", icon);
+               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_icon_file_set(image, pAttach_info->pfile_path, NULL);
+               } else if (pAttach_info->media_type == MSG_VIEWER_MEDIA_DRM) {
+                       elm_icon_file_set(image, MSG_VIEWER_IMAGE_DRM_SMALL_ICON, NULL);
+               } 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_icon_file_set(image, icon_path, NULL);
+                               } else {
+                                       D_EMSG("icon_path is NULL");
+                                       elm_icon_file_set(image, MSG_VIEWER_IMAGE_ATTACH_ICON, NULL);
+                               }
+                       } 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;
+
+       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;
+       }
+
+       char mimetype[MSG_BUFFER_SIZE_64 + 1] = {0,};
+       char defapp[MSG_BUFFER_SIZE_64 + 1] = {0,};
+
+       bundle *b = bundle_create();
+       appsvc_set_operation(b, APPSVC_OPERATION_VIEW);
+       appsvc_set_uri(b, pAttach_info->pfile_path);
+
+       /*get mime type*/
+       if (aul_get_mime_from_file(pAttach_info->pfile_path, mimetype, sizeof(mimetype)) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "mime type failed");
+
+               if (appsvc_run_service(b, 0, NULL, NULL) < 0)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "appsvc_run_service is failed");
+
+               bundle_free(b);
+               return;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "mime type [%s]", mimetype);
+       }
+
+       /*get default app*/
+       if (aul_get_defapp_from_mime(mimetype, defapp, sizeof(defapp)) < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "default app failed");
+
+               if (appsvc_run_service(b, 0, NULL, NULL) < 0)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "appsvc_run_service is failed");
+
+               bundle_free(b);
+               return;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "default app [%s]", defapp);
+       }
+
+       /*launch application*/
+       if (strcmp(defapp, VIDEO_PLAYER_PKG_NAME) == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Video content");
+               bundle_add(b, MSG_BUNDLE_KEY_LAUNCH_APPLICATION, MESSAGE_PKGNAME);
+       }
+
+       if (appsvc_run_service(b, 0, NULL, NULL) < 0)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "appsvc_run_service is failed");
+
+       bundle_free(b);
+
+       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;
+       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);
+
+       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;
+                       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;
+       }
+
+       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("sys_string", "IDS_COM_POP_COPIED_P"));
+
+       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;
+
+       /* 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", (char *)"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);
+       __msg_ui_viewer_make_details_text(viewer_play_data, entry);
+       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;
+       elm_object_content_set(popup, layout);
+
+       evas_object_show(popup);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_viewer_make_details_text(MSG_PLAY_DATA_S *data, Evas_Object *entry)
+{
+       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 folder_id = MSG_MAX_FOLDER_ID;
+       msg_error_t err = MSG_SUCCESS;
+       int thread_id = 0;
+       char addr_value[MAX_ADDRESS_VAL_LEN] = {0,};
+       char name[MAX_DISPLAY_NAME_LEN]= {0,};
+       int contact_id = 0;
+       msg_struct_list_s addrList;
+
+       /**********************
+       *       [ For sent/outbox msg]
+       *       1. Type:
+       *       2. To:
+       *       3. Sent time:
+       *       4. Subject:
+       *       5. Message size:
+       *       5. Delivery report:             //TBD : FW for multistatus
+       *       6. Read report:         //TBD : FW for multistatus
+       *
+       *       [For inbox msg]
+       *       1. Type:
+       *       2. From:
+       *       3. To:                          //TBD : FW for multistatus
+       *       4. Received time:
+       *       5. Subject:
+       *       6. Message size:
+       **********************/
+
+       /*get msg info struct handle */
+       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(viewer_play_data->msgHandle, viewer_play_data->msgID, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return;
+       }
+
+       /* create str buf */
+       Eina_Strbuf *text_data = eina_strbuf_new();
+
+       /* set font size */
+       eina_strbuf_append(text_data, "<font_size=32>");
+
+       /*message type*/
+       eina_strbuf_append(text_data, (char *)"Type : "); //TODO : change to string resource
+
+       /*message type value - current view details is supporting only multimedia message */
+       int msg_type;
+       msg_get_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, &msg_type);
+       if (msg_type == MSG_TYPE_MMS || msg_type == MSG_TYPE_MMS_NOTI)
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"));
+       else if (msg_type == MSG_TYPE_SMS)
+               eina_strbuf_append(text_data, (char *)"Text message"); //TODO : change to string resource
+       else
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid msg type!");
+
+       /*line change*/
+       eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+       /*get time format setting */
+       int timeformat = msg_common_get_timeformat();
+
+       /* get folder ID */
+       msg_get_int_value(msgInfo, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);      //get msg folder type
+
+       if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) {
+               int index = 0;
+               eina_strbuf_append(text_data, (char *)"To : " ); //TODO : change to string resource
+
+               memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+               msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+               err = msg_get_address_list(viewer_play_data->msgHandle, thread_id, &addrList);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address count = %d", addrList.nCount);
+
+               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, VIEWER_DETAILS_TEXT_LEFT_BRACE);
+                               eina_strbuf_append(text_data, addr_value);
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_RIGHT_BRACE);
+                       } else {
+                               eina_strbuf_append(text_data, addr_value);
+                       }
+                       if (index != addrList.nCount-1)
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_COMMA);
+               }
+
+               msg_release_list_struct(&addrList);
+
+               /*line change*/
+               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+               /*time*/
+               eina_strbuf_append(text_data, (char *)"Sent : "); //TODO : change to string resource
+               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, VIEWER_DETAILS_TEXT_LINE_FEED);
+       } else if (folder_id == MSG_INBOX_ID) {
+               int index = 0;
+
+               /*From address*/
+               eina_strbuf_append(text_data, (char *)"From : " ); //TODO : change to string resource
+
+               memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+               msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+               err = msg_get_address_list(viewer_play_data->msgHandle, thread_id, &addrList);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address count = %d", addrList.nCount);
+
+               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, VIEWER_DETAILS_TEXT_LEFT_BRACE);
+                               eina_strbuf_append(text_data, addr_value);
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_RIGHT_BRACE);
+                       } else {
+                               eina_strbuf_append(text_data, addr_value);
+                       }
+                       if (index != addrList.nCount-1)
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_COMMA);
+               }
+
+               msg_release_list_struct(&addrList);
+
+               /*To addess*/
+               //TODO : HOW to get??
+
+               /*line change*/
+               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+               /*time*/
+               eina_strbuf_append(text_data, (char *)"Received : "); //TODO : change to string resource
+               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, VIEWER_DETAILS_TEXT_LINE_FEED);
+       }
+
+       /*subject*/
+       eina_strbuf_append(text_data, (char *)"Subject : "); //TODO : change to string resource
+       char strSubject[MAX_SUBJECT_LEN] = {0};
+       msg_get_str_value(msgInfo, MSG_MESSAGE_SUBJECT_STR, strSubject, MAX_SUBJECT_LEN);
+       if (strSubject[0]  != '\0')
+               eina_strbuf_append(text_data, strSubject);
+       else
+               eina_strbuf_append(text_data, (char *)"Untitled"); //TODO : change to string resource
+
+       /*line change*/
+       eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+       /*msg size - make sure what is the mms size, pdu size? or media total size??*/
+       eina_strbuf_append(text_data, (char *)"Size : "); //TODO : change to string resource
+
+       int mediaindex = 0;
+       long long totalSize = 0;
+       long long sizeKB = 0;
+       long long sizeB = 0;
+       char count_str[DEF_BUF_LEN] = {0,};
+       int totalCnt = viewer_play_data->insert_count+viewer_play_data->attach_count;
+
+       for (mediaindex = 0; mediaindex<totalCnt; mediaindex++) {
+               MSG_VIEWER_ATTACH_MEDIA_INFO_S *media_info = NULL;
+
+               if (mediaindex < viewer_play_data->insert_count) {
+                       media_info = eina_list_nth(viewer_play_data->insert_list, mediaindex);
+               } else if (mediaindex < totalCnt) {
+                       media_info = eina_list_nth(viewer_play_data->attach_list, mediaindex-viewer_play_data->insert_count);
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid index!!", mediaindex);
+                       continue;
+               }
+
+               totalSize += ecore_file_size(media_info->pfile_path);
+       }
+
+       if (totalSize < VIEWER_DETAILS_TEXT_MSG_SIZE_KB) {
+               snprintf(count_str, sizeof(count_str), "1 %s", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
+       } else {
+               sizeKB = (long long)totalSize/VIEWER_DETAILS_TEXT_MSG_SIZE_KB;
+               sizeB = (long long)totalSize%VIEWER_DETAILS_TEXT_MSG_SIZE_KB;
+
+               if (sizeB >= (VIEWER_DETAILS_TEXT_MSG_SIZE_KB/2))
+                       sizeKB++;
+
+               snprintf(count_str, sizeof(count_str), "%lld %s", sizeKB, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MSGSIZE_KB"));
+       }
+
+       eina_strbuf_append(text_data, count_str);
+
+       /*line change*/
+       eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+       /*report status*/
+       if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) {
+               msg_struct_t msg_struct =  msg_create_struct(MSG_STRUCT_SETTING_MMS_SEND_OPT);
+               err = msg_get_mms_send_opt(viewer_play_data->msgHandle, msg_struct);
+
+               if (err != MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_mms_send_opt is failed");
+                       eina_strbuf_free(text_data);
+                       return;
+               }
+               /*delivery report*/
+               eina_strbuf_append(text_data, (char *)"Delivery report : "); //TODO : change to string resource
+               /*line change*/
+               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+               bool bValue = false;
+               err = msg_get_bool_value(msg_struct, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, &bValue);
+               if (!bValue) {
+                       eina_strbuf_append(text_data, (char *)"Not required"); //TODO : change to string resource
+               } else {
+                       //TODO : How to Get Multistatus delivery report?
+                       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+                       msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+                       err = msg_get_address_list(viewer_play_data->msgHandle, thread_id, &addrList);
+
+                       bzero(addr_value, sizeof(addr_value));
+                       msg_get_str_value(addrList.msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+
+                       msg_release_list_struct(&addrList);
+
+                       // now 1st address delivery status can be get only.
+                       eina_strbuf_append(text_data, addr_value);
+                       eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_DASH);
+
+                       msg_struct_t report_status = msg_create_struct(MSG_STRUCT_REPORT_STATUS_INFO);
+                       int msgId = 0;
+                       msg_get_int_value(msgInfo, MSG_MESSAGE_ID_INT, &msgId);
+                       msg_get_report_status(viewer_play_data->msgHandle, msgId, report_status);
+
+                       int deliveryStatus = 0;
+                       msg_get_int_value(report_status, MSG_REPORT_STATUS_DELIVERY_STATUS_INT, &deliveryStatus);
+
+                       if (deliveryStatus == MSG_DELIVERY_REPORT_NONE) {
+                               eina_strbuf_append(text_data, (char *)"Requested");      //TODO : change to string resource
+                       } else if (deliveryStatus == MSG_DELIVERY_REPORT_EXPIRED) {
+                               eina_strbuf_append(text_data, (char *)"Expired"); //TODO : change to string resource
+                       } else if (deliveryStatus == MSG_DELIVERY_REPORT_SUCCESS) {
+                               eina_strbuf_append(text_data, (char *)"Received "); //TODO : change to string resource
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LEFT_BRACE);
+
+                               int dsTime = 0;
+                               msg_get_int_value(report_status, MSG_REPORT_STATUS_DELIVERY_TIME_INT, &dsTime);
+                               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", &dsTime);
+                               else
+                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &dsTime);
+                               eina_strbuf_append(text_data, str_time);
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_RIGHT_BRACE);
+                       } else if (deliveryStatus == MSG_DELIVERY_REPORT_REJECTED) {
+                               eina_strbuf_append(text_data, (char *)"Rejected "); //TODO : change to string resource
+                       }
+
+                       msg_release_struct(&report_status);
+               }
+               /*line change*/
+               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+               /*read reportt*/
+               eina_strbuf_append(text_data, (char *)"Read report : "); //TODO : change to string resource
+               /*line change*/
+               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+               err = msg_get_bool_value(msg_struct, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &bValue);
+               if (!bValue) {
+                       eina_strbuf_append(text_data, (char *)"Not required"); //TODO : change to string resource
+               } else {
+                       //TODO : How to Get Multistatus read report?
+                       memset(&addrList, 0x00, sizeof(msg_struct_list_s));
+                       msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+                       err = msg_get_address_list(viewer_play_data->msgHandle, thread_id, &addrList);
+
+                       bzero(addr_value, sizeof(addr_value));
+                       msg_get_str_value(addrList.msg_struct_info[0], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+
+                       msg_release_list_struct(&addrList);
+
+                       // now 1st address delivery status can be get only.
+                       eina_strbuf_append(text_data, addr_value);
+                       eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_DASH);
+
+                       msg_struct_t report_status = msg_create_struct(MSG_STRUCT_REPORT_STATUS_INFO);
+                       int msgId = 0;
+                       msg_get_int_value(msgInfo, MSG_MESSAGE_ID_INT, &msgId);
+                       msg_get_report_status(viewer_play_data->msgHandle, msgId, report_status);
+
+                       int readStatus = 0;
+                       msg_get_int_value(report_status, MSG_REPORT_STATUS_READ_STATUS_INT, &readStatus);
+
+                       if (readStatus == MSG_READ_REPORT_NONE) {
+                               eina_strbuf_append(text_data, (char *)"Requested "); //TODO : change to string resource
+                       } else if (readStatus == MSG_READ_REPORT_IS_READ) {
+                               eina_strbuf_append(text_data, (char *)"Read "); //TODO : change to string resource
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LEFT_BRACE);
+
+                               int rsTime = 0;
+                               msg_get_int_value(report_status, MSG_REPORT_STATUS_READ_TIME_INT, &rsTime);
+
+                               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", &rsTime);
+                               else
+                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &rsTime);
+                               eina_strbuf_append(text_data, str_time);
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_RIGHT_BRACE);
+                               /*line change*/
+                               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+                       } else if (readStatus == MSG_READ_REPORT_IS_DELETED) {
+                               eina_strbuf_append(text_data, (char *)"Deleted "); //TODO : change to string resource
+                       }
+
+                       msg_release_struct(&report_status);
+               }
+               /*line change*/
+               eina_strbuf_append(text_data, VIEWER_DETAILS_TEXT_LINE_FEED);
+
+               msg_release_struct(&msg_struct);
+       }
+
+       /*display total text*/
+       elm_entry_entry_set(entry, eina_strbuf_string_get(text_data));
+       eina_strbuf_free(text_data);
+
+       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;
+       }
+}
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..628e0f8
--- /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://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*==================================================================================================
+ *                                                             INCLUDE HEADERS
+ * ==================================================================================================*/
+#include "msg-ui-viewer-utility.h"
+#include <msg-ui-util.h>
+#include "contacts-svc.h"
+
+#include <ctype.h>
+#include <Ecore_File.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);
+       CTSstruct *contact = NULL;
+       CTSvalue *name = NULL;
+       char *first = NULL;
+       char *last = NULL;
+       char *display = NULL;
+
+       contacts_svc_get_contact(index, &contact);
+       contacts_svc_struct_get_value(contact, CTS_CF_NAME_VALUE, &name);
+
+       first = g_strdup(contacts_svc_value_get_str(name, CTS_NAME_VAL_FIRST_STR));
+       last = g_strdup(contacts_svc_value_get_str(name, CTS_NAME_VAL_LAST_STR));
+
+       if (first != NULL && last != NULL) {
+               if (CTS_ORDER_NAME_FIRSTLAST == contacts_svc_get_order(CTS_ORDER_OF_DISPLAY)) {
+                       display = g_strconcat(first, " ", last, NULL);
+               } else {
+                       display = g_strconcat(last, " ", first, NULL);
+               }
+       } else if (first != NULL || last != NULL) {
+               display = (first != NULL) ? g_strdup(first) : g_strdup(last);
+       } else {
+               display = g_strdup(contacts_svc_value_get_str(name, CTS_NAME_VAL_FIRST_STR));
+       }
+
+       g_free(first);
+       g_free(last);
+       contacts_svc_value_free(name);
+       contacts_svc_struct_free(contact);
+
+       return display;
+}
+
+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;
+       }
+
+       unsigned char *buffer = NULL;
+
+       buffer = (unsigned char *)malloc(file_size);
+
+       if (fseek(pFile, 0, SEEK_SET) < 0) {
+               fclose(pFile);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "File seek Error");
+               return NULL;
+       }
+       if (fread(buffer, sizeof(char), file_size, pFile) != (size_t)file_size) {
+               fclose(pFile);
+               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);
+       }
+
+       if (ecore_file_cp(src_path, new_file_name) == EINA_FALSE) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ecore_file_cp is failed");
+               return NULL;
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "new_file_name = %s", new_file_name);
+
+       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;
+}
+
+MSG_BOOL msg_ui_viewer_auto_rename(char *src_path, char *dst_path)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, src_path == NULL, FALSE);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, dst_path == NULL, FALSE);
+       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;
+
+       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_util_get_next_number(file_name_without_ext);
+       if (ncount < 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid filename");
+               return FALSE;
+       } else {
+               /*find new filename*/
+               Eina_Bool is_exists = FALSE;
+               do {
+                       if (strlen(file_ext) > 0)
+                               snprintf(new_file_name, sizeof(new_file_name), "%s_%d.%s", file_name_without_ext, ncount, file_ext);
+                       else
+                               snprintf(new_file_name, sizeof(new_file_name), "%s_%d", 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);
+
+               if (ecore_file_cp(src_path, new_file_name) == EINA_FALSE)
+                       return FALSE;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return TRUE;
+}
diff --git a/viewer/theme/msg_viewer.edc b/viewer/theme/msg_viewer.edc
new file mode 100755 (executable)
index 0000000..956e5dd
--- /dev/null
@@ -0,0 +1,1051 @@
+#define MAIN_W 720
+#define BODY_TOP_PADDING_MIN_H 34
+#define SUBJECT_MIN_H 48
+#define COLOR_SUBJECT_BG 216 226 232 255
+#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 48
+#define PLAY_CTRBAR_PROGRESSBAR_PADDING_MIN_H 28
+#define PLAY_CTRBAR_MIDDLE_PADDING_MIN_H 54
+#define PLAY_CTRBAR_BOTTOM_PADDING_MIN_H 32
+#define PLAY_CTRBAR_PROGRESS_BAR_W 482
+#define PLAY_CTRBAR_PROGRESS_TEXT_START_X 20
+#define PLAY_CTRBAR_PROGRESS_TEXT_W 79
+#define PLAY_CTRBAR_PROGRESS_PADDING_W 22
+#define PLAY_CTRBAR_BUTTON_W 56
+#define PLAY_CTRBAR_BUTTON_PADDING_W 88
+#define PLAY_CTRBAR_BUTTON_VOLUME_START_X 44
+#define PLAY_CTRBAR_BUTTON_PREV_START_X (PLAY_CTRBAR_BUTTON_VOLUME_START_X+PLAY_CTRBAR_BUTTON_W+PLAY_CTRBAR_BUTTON_PADDING_W)
+#define PLAY_CTRBAR_BUTTON_PLAY_START_X (PLAY_CTRBAR_BUTTON_PREV_START_X+PLAY_CTRBAR_BUTTON_W+PLAY_CTRBAR_BUTTON_PADDING_W)
+#define PLAY_CTRBAR_BUTTON_NEXT_START_X (PLAY_CTRBAR_BUTTON_PLAY_START_X+PLAY_CTRBAR_BUTTON_W+PLAY_CTRBAR_BUTTON_PADDING_W)
+
+//msg details popup
+#define DETAIL_PADDING_V_MIN 30
+#define DETAIL_PADDING_H_MIN 20
+
+//edc images
+#define PLAYER_BG "M01_player_bg.png"
+#define VOL_BTN "M01_play_btn_volume.png"
+#define VOL_BTN_PRESS "M01_play_btn_volume_press.png"
+#define PREV_BTN "M01_play_btn_previous.png"
+#define PREV_BTN_PRESS "M01_play_btn_previous_press.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 PROGRESS_BAR "M01_player_progress_bar.png"
+#define PROGRESS_BG "M01_player_progress_bg.png"
+
+collections {
+       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: 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;
+               }
+               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; offset: PLAY_CTRBAR_PROGRESS_TEXT_START_X 0;}
+                                       rel2{to:"progressbar"; relative:0.0 1.0; offset: -PLAY_CTRBAR_PROGRESS_PADDING_W 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; offset: PLAY_CTRBAR_PROGRESS_PADDING_W 0;}
+                                       rel2{to:"rect/padding/progressbar"; relative:1.0 1.0; offset: -PLAY_CTRBAR_PROGRESS_PADDING_W 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: 56 56;
+                                       fixed: 1 1;
+                                       align: 0.5 0.5;
+                                       rel1 { relative: PLAY_CTRBAR_BUTTON_VOLUME_START_X/MAIN_W 0.0; to, "rect/padding/buttons";}
+                                       rel2 { relative: PLAY_CTRBAR_BUTTON_VOLUME_START_X/MAIN_W 1.0; to, "rect/padding/buttons"; offset: PLAY_CTRBAR_BUTTON_W 0;}
+                                       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 56;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1{to:"volume"; relative:1.0 0.0; offset: 35 0;}
+                                       rel2{to:"volume"; relative:1.0 1.0; offset: 35 0;}
+                                       color: 144 144 144 255;
+                               }
+                       }
+                       part { name: "prev";
+                               type : IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       visible: 1;
+                                       min: 56 56;
+                                       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_BUTTON_W 0;}
+                                       image { normal: PREV_BTN; }
+                               }
+                               description { state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: PREV_BTN_PRESS; }
+                               }
+                       }
+                       part { name: "next";
+                               type : IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       visible: 1;
+                                       min: 56 56;
+                                       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_BUTTON_W 0;}
+                                       image { normal: NEXT_BTN; }
+                               }
+                               description { state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       image { normal: NEXT_BTN_PRESS; }
+                               }
+                       }
+                       part { name: "play_pause";
+                               type : IMAGE;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                               state: "default" 0.0;
+                                       visible: 1;
+                                       min: 56 56;
+                                       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_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 {
+                                               emit ("prev_clicked", "");
+                                       }
+                               }
+                               program {
+                                       name: "prev_btn_down";
+                                       source: "prev";
+                                       signal: "mouse,down,1";
+                                       script {
+                                               set_state(PART:"prev", "pressed", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "prev_btn_up";
+                                       source: "prev";
+                                       signal: "mouse,up,1";
+                                       script {
+                                               set_state(PART:"prev", "default", 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 {
+                                               emit ("next_clicked", "");
+                                       }
+                               }
+                               program {
+                                       name: "next_btn_down";
+                                       source: "next";
+                                       signal: "mouse,down,1";
+                                       script {
+                                               set_state(PART:"next", "pressed", 0.0);
+                                       }
+                               }
+                               program {
+                                       name: "next_btn_up";
+                                       source: "next";
+                                       signal: "mouse,up,1";
+                                       script {
+                                               set_state(PART:"next", "default", 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;
+                                               //border: 0 0 1 1;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "elm.progress.progressbar";
+                               mouse_events: 0;
+                               scale: 1;
+                               clip_to: "elm.background.progressbar";
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_y: "elm.swallow.bar";
+                                               to_x: "elm.cur.progressbar";
+                                               offset: -1 -1;
+                                       }
+                                       image {
+                                               normal: PROGRESS_BAR;
+                                               //border: 0 0 1 1;
+                                       }
+                               }
+                               description {
+                                       state: "invert" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               to_y: "elm.swallow.bar";
+                                               to_x: "elm.cur.progressbar";
+                                       }
+                                       rel2 {
+                                               to: "elm.swallow.bar";
+                                               relative: 1.0 1.0;
+                                       }
+                               }
+                               description {
+                                       state: "state_begin" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.1 1.0;
+                                       }
+                               }
+                               description {
+                                       state: "state_end" 0.0;
+                                       inherit: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.swallow.bar";
+                                               relative: 0.9 0.0;
+                                       }
+                                       rel2 {
+                                               to: "elm.swallow.bar";
+                                               relative: 1.0 1.0;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "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";
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 SUBJECT_MIN_H;
+                                       color: COLOR_SUBJECT_BG;
+                               }
+                       }
+                       part {
+                               name: "subject";
+                               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_DETAIL_INFO_TEXT;
+                                       text {
+                                               font: SLP_FONT_REGULAR;
+                                               text_class: FONT_TEXT_CLASS_REGULAR;
+                                               size: 32;
+                                               align: 0.0 0.5;
+                                               ellipsis: 0.0;
+                                               text: "";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "page/index";
+                               type: TEXT;
+                               scale: 1;
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 1.0 0.5;
+                                       rel1{to:"rect"; relative:0.8 0.0;}
+                                       rel2{to:"rect"; relative:1.0 1.0; offset: -DETAIL_PADDING_H_MIN 0;}
+                                       color: COLOR_DETAIL_INFO_TEXT;
+                                       text {
+                                               font: SLP_FONT_REGULAR;
+                                               text_class: FONT_TEXT_CLASS_REGULAR;
+                                               size: 32;
+                                               align: 1.0 0.5;
+                                               ellipsis: 0.0;
+                                               text: "";
+                                       }
+                               }
+                       }
+               }
+       }
+
+       group {
+               name : "viewer_main";
+               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 1;
+                                       min: 0 0;
+                                       color: 0 0 0 0;
+                                       rel1 {to: "viewer.swallow.subject"; relative: 0.02 1.0; offset: 0 BODY_TOP_PADDING_MIN_H;}
+                                       rel2 {to: "rect"; relative: 0.98 1.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 0.0;}
+                                       rel2 {to: "rect"; relative: 0.98 1.0;}
+                                       align: 0.0 0.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.titlebtn.list";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 0 1;
+                                       rel1 {to: "rect"; relative: 0.0 0.0;}
+                                       rel2 {to: "rect"; relative: 1.0 0.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;
+                               }
+                       }
+                       programs
+                       {
+                               program {
+                                       name: "viewer.titlebtn.list.open";
+                                       signal: "elm,state,titlelist,open";
+                                       source: "";
+                                       action: STATE_SET "show" 0.0;
+                                       target: "viewer.titlebtn.list";
+                                       transition: LINEAR 0.2;
+                               }
+                               program {
+                                       name: "viewer.titlebtn.list.close";
+                                       signal: "elm,state,titlelist,close";
+                                       source: "";
+                                       action: STATE_SET "hide" 0.0;
+                                       target: "viewer.titlebtn.list";
+                                       transition: LINEAR 0.2;
+                               }
+                       }
+               }
+       }
+
+       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 : "item_list";
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "viewer.itemlist.body";
+                               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;}
+                               }
+                       }
+               }
+       }
+
+       group {
+               name : "title";
+               images {
+                       image: "optionheader_arrow.png" COMP;
+               }
+               script {
+                       public title_show = 0;
+               }
+               parts {
+                       part {
+                               name: "rect";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "title_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description     {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 0 78;
+                                       align: 0 0.5;
+                                       color: 255 0 0 255;
+                                       rel1{to: "rect"; relative: 0.0 0.5;}
+                                       rel2{to: "rect"; relative: 1.0 0.5;}
+                               }
+                       }
+                       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;
+                               }
+                       }
+               }
+               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_hide";
+                               signal: "elm,state,title,hide";
+                               source: "";
+                               script {
+                                       set_int(title_show, 0);
+                                       set_state(PART:"titlebtn_arrow", "default", 0.0);
+                               }
+                       }
+               }
+       }
+