Apply EFL migration of thread, common
authoryumi82.ko <yumi82.ko@samsung.com>
Fri, 7 Dec 2012 01:13:47 +0000 (10:13 +0900)
committeryumi82.ko <yumi82.ko@samsung.com>
Fri, 7 Dec 2012 01:47:01 +0000 (10:47 +0900)
Change-Id: I8189c7a0a54e3d74ea6a370b5aa4e213de94594f

92 files changed:
common/CMakeLists.txt
common/data/edc_image/00_MessageBubble_BG_receive.png
common/data/edc_image/00_MessageBubble_BG_send.png
common/data/edc_image/00_button.png [new file with mode: 0755]
common/data/edc_image/00_button_dim.png [new file with mode: 0755]
common/data/edc_image/00_button_press.png [moved from common/data/edc_image/00_contacts_button_bg_press.png with 56% similarity]
common/data/edc_image/M01_icon_locked.png
common/data/edc_image/M01_subject_bg.png [moved from common/data/edc_image/00_index list_bg.png with 94% similarity]
common/data/edj_image_list/01_controlbar_icon_compose.png [new file with mode: 0755]
common/data/edj_image_list/01_controllbar_icon_add_to_contact.png [moved from common/data/image/01_controllbar_icon_add_to_contact.png with 100% similarity]
common/data/edj_image_list/01_header_icon_cancel.png [moved from common/data/image/01_header_icon_cancel.png with 100% similarity]
common/data/edj_image_list/01_header_icon_done.png [moved from common/data/image/01_header_icon_done.png with 100% similarity]
common/data/edj_image_list/60_myfiles_file_etc.png [moved from common/data/image/60_myfiles_file_etc.png with 100% similarity]
common/data/edj_image_list/M01_btn_delete.png [moved from common/data/image/M01_btn_delete.png with 100% similarity]
common/data/edj_image_list/M01_btn_delete_press.png [moved from common/data/image/M01_btn_delete_press.png with 100% similarity]
common/data/edj_image_list/M01_btn_message_send.png [moved from common/data/image/M01_btn_message_send.png with 100% similarity]
common/data/edj_image_list/M01_btn_message_send_dim.png [moved from common/data/image/M01_btn_message_send_dim.png with 100% similarity]
common/data/edj_image_list/M01_btn_mms_message_send.png [moved from common/data/image/M01_btn_mms_message_send.png with 100% similarity]
common/data/edj_image_list/M01_btn_mms_message_send_dim.png [moved from common/data/image/M01_btn_mms_message_send_dim.png with 100% similarity]
common/data/edj_image_list/M01_btn_scheduled_message_send.png [moved from common/data/image/M01_btn_scheduled_message_send.png with 100% similarity]
common/data/edj_image_list/M01_btn_scheduled_message_send_dim.png [moved from common/data/image/M01_btn_scheduled_message_send_dim.png with 100% similarity]
common/data/edj_image_list/M01_contact_default_image.png [moved from common/data/edc_image/M01_title_btn_bg.png with 54% similarity]
common/data/edj_image_list/M01_icon_DRM.png [moved from common/data/image/M01_icon_DRM.png with 100% similarity]
common/data/edj_image_list/M01_icon_DRM_64x64.png [moved from common/data/image/M01_icon_DRM_64x64.png with 100% similarity]
common/data/edj_image_list/M01_icon_OTA.png [moved from common/data/image/M01_icon_OTA.png with 100% similarity]
common/data/edj_image_list/M01_icon_Push.png [moved from common/data/image/M01_icon_Push.png with 100% similarity]
common/data/edj_image_list/M01_icon_SOS.png [moved from common/data/image/M01_icon_SOS.png with 71% similarity, mode: 0644]
common/data/edj_image_list/M01_icon_Unsupported.png [moved from common/data/image/M01_icon_Unsupported.png with 100% similarity]
common/data/edj_image_list/M01_icon_attach_voice.png [moved from common/data/image/M01_icon_attach_voice.png with 100% similarity]
common/data/edj_image_list/M01_icon_block.png [moved from common/data/image/M01_icon_block.png with 100% similarity]
common/data/edj_image_list/M01_icon_broadcasting.png [moved from common/data/image/M01_icon_broadcasting.png with 100% similarity]
common/data/edj_image_list/M01_icon_message_status_mms_read_n.png [moved from common/data/image/M01_icon_message_status_mms_read_n.png with 100% similarity]
common/data/edj_image_list/M01_icon_message_status_mms_sent_n.png [moved from common/data/image/M01_icon_message_status_mms_sent_n.png with 100% similarity]
common/data/edj_image_list/M01_icon_message_status_mms_unread_n.png [moved from common/data/image/M01_icon_message_status_mms_unread_n.png with 100% similarity]
common/data/edj_image_list/M01_icon_message_status_sms_read_n.png [moved from common/data/image/M01_icon_message_status_sms_read_n.png with 100% similarity]
common/data/edj_image_list/M01_icon_message_status_sms_sent_n.png [moved from common/data/image/M01_icon_message_status_sms_sent_n.png with 100% similarity]
common/data/edj_image_list/M01_icon_message_status_sms_unread_n.png [moved from common/data/image/M01_icon_message_status_sms_unread_n.png with 100% similarity]
common/data/edj_image_list/M01_icon_save.png [moved from common/data/image/M01_icon_save.png with 100% similarity]
common/data/edj_image_list/M01_icon_unblock.png [moved from common/data/image/M01_icon_unblock.png with 100% similarity]
common/data/edj_image_list/M01_icon_video_call.png [moved from common/data/image/M01_icon_video_call.png with 100% similarity]
common/data/edj_image_list/M01_icon_view_contact.png [moved from common/data/image/M01_icon_view_contact.png with 100% similarity]
common/data/edj_image_list/M01_icon_voice_call.png [moved from common/data/image/M01_icon_voice_call.png with 100% similarity]
common/data/edj_image_list/M01_photo_btn_delete.png [moved from common/data/image/M01_photo_btn_delete.png with 100% similarity]
common/data/edj_image_list/M01_photo_btn_delete_press.png [moved from common/data/image/M01_photo_btn_delete_press.png with 100% similarity]
common/data/edj_image_list/M01_title_icon_attach.png [new file with mode: 0644]
common/data/edj_image_list/M01_title_icon_attach_dim.png [new file with mode: 0755]
common/data/edj_image_list/M01_title_icon_compose.png [new file with mode: 0644]
common/data/edj_image_list/M01_title_icon_search.png [new file with mode: 0644]
common/data/edj_image_list/M01_title_icon_search_dim.png [moved from common/data/edc_image/M01_title_btn_bg_press.png with 51% similarity, mode: 0644]
common/data/edj_image_list/attach_icon.png [new file with mode: 0755]
common/data/edj_image_list/myfile_icon_etc.png [moved from common/data/image/myfile_icon_etc.png with 100% similarity]
common/data/edj_image_list/myfile_icon_excel.png [moved from common/data/image/myfile_icon_excel.png with 100% similarity]
common/data/edj_image_list/myfile_icon_html.png [moved from common/data/image/myfile_icon_html.png with 100% similarity]
common/data/edj_image_list/myfile_icon_images.png [moved from common/data/image/myfile_icon_images.png with 100% similarity]
common/data/edj_image_list/myfile_icon_java.png [moved from common/data/image/myfile_icon_java.png with 100% similarity]
common/data/edj_image_list/myfile_icon_music.png [moved from common/data/image/myfile_icon_music.png with 100% similarity]
common/data/edj_image_list/myfile_icon_pdf.png [moved from common/data/image/myfile_icon_pdf.png with 100% similarity]
common/data/edj_image_list/myfile_icon_ppt.png [moved from common/data/image/myfile_icon_ppt.png with 100% similarity]
common/data/edj_image_list/myfile_icon_rss.png [moved from common/data/image/myfile_icon_rss.png with 100% similarity]
common/data/edj_image_list/myfile_icon_svg.png [moved from common/data/image/myfile_icon_svg.png with 100% similarity]
common/data/edj_image_list/myfile_icon_swf.png [moved from common/data/image/myfile_icon_swf.png with 100% similarity]
common/data/edj_image_list/myfile_icon_text.png [moved from common/data/image/myfile_icon_text.png with 100% similarity]
common/data/edj_image_list/myfile_icon_video.png [moved from common/data/image/myfile_icon_video.png with 100% similarity]
common/data/edj_image_list/myfile_icon_word.png [moved from common/data/image/myfile_icon_word.png with 100% similarity]
common/data/image/com.samsung.message.cb.png [deleted file]
common/data/image/com.samsung.message.noti.png [deleted file]
common/data/image/com.samsung.message.png [deleted file]
common/data/image/com.samsung.message.voice.png [deleted file]
common/data/image/org.tizen.message.cb.png [changed mode: 0755->0644]
common/data/image/org.tizen.message.noti.png [changed mode: 0755->0644]
common/data/image/org.tizen.message.png [changed mode: 0755->0644]
common/data/image/org.tizen.message.voice.png [changed mode: 0755->0644]
common/data/msg_bubble_entry.edc
common/data/msg_button.edc
common/data/msg_common.edc
common/data/msg_genlist.edc
common/data/msg_image_macro.edc [new file with mode: 0644]
common/data/msg_images.edc [new file with mode: 0755]
common/msg-ui-bundle.h
common/msg-ui-common-utility.c
common/msg-ui-common-utility.h
common/msg-ui-image-resource.h
common/msg-ui-util.h
main/message.c
main/message.h
packaging/org.tizen.message.spec
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

index 27438e3..62c8987 100755 (executable)
@@ -18,11 +18,10 @@ INCLUDE(FindPkgConfig)
 pkg_check_modules(pkgs REQUIRED
        appsvc
        bundle
-       capi-appfw-application contacts-service
+       capi-appfw-application contacts-service2
        dlog drm-client
        elementary ecore ecore-x ecore-input ecore-imf ecore-file eina
        glib-2.0
-       heynoti
        icu-i18n
        msg-service
        mm-common mm-player mm-session
@@ -36,8 +35,10 @@ pkg_check_modules(pkgs REQUIRED
        capi-media-metadata-extractor
        capi-media-image-util
        capi-media-player
+       capi-content-media-content
        status
        libexif
+       tapi
 )
 
 FOREACH(flag ${pkgs_CFLAGS})
@@ -72,10 +73,21 @@ ADD_CUSTOM_TARGET(msg_custom_winset.edj
                        DEPENDS ${CMAKE_SOURCE_COMMON_DIR}/data/msg_custom_winset.edc
 )
 
+ADD_CUSTOM_TARGET(msg_images.edj
+               COMMAND edje_cc -id
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/edj_image_list
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edc
+                       ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edj
+                       DEPENDS ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edc
+)
+
 ADD_DEPENDENCIES(${PROJECT_NAME} msg_common.edj)
 ADD_DEPENDENCIES(${PROJECT_NAME} msg_custom_winset.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} msg_images.edj)
 
 # Install so files.
 INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIBDIR})
 INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_common.edj DESTINATION ${EDJDIR})
 INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_custom_winset.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edj DESTINATION ${EDJDIR})
+
index a768d91..bf98eae 100755 (executable)
Binary files a/common/data/edc_image/00_MessageBubble_BG_receive.png and b/common/data/edc_image/00_MessageBubble_BG_receive.png differ
index aaab0f7..799910b 100755 (executable)
Binary files a/common/data/edc_image/00_MessageBubble_BG_send.png and b/common/data/edc_image/00_MessageBubble_BG_send.png differ
diff --git a/common/data/edc_image/00_button.png b/common/data/edc_image/00_button.png
new file mode 100755 (executable)
index 0000000..b1dfb75
Binary files /dev/null and b/common/data/edc_image/00_button.png differ
diff --git a/common/data/edc_image/00_button_dim.png b/common/data/edc_image/00_button_dim.png
new file mode 100755 (executable)
index 0000000..2d7db00
Binary files /dev/null and b/common/data/edc_image/00_button_dim.png differ
similarity index 56%
rename from common/data/edc_image/00_contacts_button_bg_press.png
rename to common/data/edc_image/00_button_press.png
index 496ee88..7c61d6a 100755 (executable)
Binary files a/common/data/edc_image/00_contacts_button_bg_press.png and b/common/data/edc_image/00_button_press.png differ
index 00c46cd..477c619 100755 (executable)
Binary files a/common/data/edc_image/M01_icon_locked.png and b/common/data/edc_image/M01_icon_locked.png differ
similarity index 94%
rename from common/data/edc_image/00_index list_bg.png
rename to common/data/edc_image/M01_subject_bg.png
index f41ec7c..5b7a32d 100755 (executable)
Binary files a/common/data/edc_image/00_index list_bg.png and b/common/data/edc_image/M01_subject_bg.png differ
diff --git a/common/data/edj_image_list/01_controlbar_icon_compose.png b/common/data/edj_image_list/01_controlbar_icon_compose.png
new file mode 100755 (executable)
index 0000000..20b71f7
Binary files /dev/null and b/common/data/edj_image_list/01_controlbar_icon_compose.png differ
similarity index 54%
rename from common/data/edc_image/M01_title_btn_bg.png
rename to common/data/edj_image_list/M01_contact_default_image.png
index b109553..01ab2b1 100755 (executable)
Binary files a/common/data/edc_image/M01_title_btn_bg.png and b/common/data/edj_image_list/M01_contact_default_image.png differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 71%
rename from common/data/image/M01_icon_SOS.png
rename to common/data/edj_image_list/M01_icon_SOS.png
index 21b6b45..bd2062c
Binary files a/common/data/image/M01_icon_SOS.png and b/common/data/edj_image_list/M01_icon_SOS.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_attach.png b/common/data/edj_image_list/M01_title_icon_attach.png
new file mode 100644 (file)
index 0000000..1a1e7c3
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_attach.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_attach_dim.png b/common/data/edj_image_list/M01_title_icon_attach_dim.png
new file mode 100755 (executable)
index 0000000..9b31bec
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_attach_dim.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_compose.png b/common/data/edj_image_list/M01_title_icon_compose.png
new file mode 100644 (file)
index 0000000..6c90e8c
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_compose.png differ
diff --git a/common/data/edj_image_list/M01_title_icon_search.png b/common/data/edj_image_list/M01_title_icon_search.png
new file mode 100644 (file)
index 0000000..cf8f197
Binary files /dev/null and b/common/data/edj_image_list/M01_title_icon_search.png differ
old mode 100755 (executable)
new mode 100644 (file)
similarity index 51%
rename from common/data/edc_image/M01_title_btn_bg_press.png
rename to common/data/edj_image_list/M01_title_icon_search_dim.png
index ba66399..0ae026b
Binary files a/common/data/edc_image/M01_title_btn_bg_press.png and b/common/data/edj_image_list/M01_title_icon_search_dim.png differ
diff --git a/common/data/edj_image_list/attach_icon.png b/common/data/edj_image_list/attach_icon.png
new file mode 100755 (executable)
index 0000000..062ce45
Binary files /dev/null and b/common/data/edj_image_list/attach_icon.png differ
diff --git a/common/data/image/com.samsung.message.cb.png b/common/data/image/com.samsung.message.cb.png
deleted file mode 100755 (executable)
index 3a26d57..0000000
Binary files a/common/data/image/com.samsung.message.cb.png and /dev/null differ
diff --git a/common/data/image/com.samsung.message.noti.png b/common/data/image/com.samsung.message.noti.png
deleted file mode 100755 (executable)
index dcc17dc..0000000
Binary files a/common/data/image/com.samsung.message.noti.png and /dev/null differ
diff --git a/common/data/image/com.samsung.message.png b/common/data/image/com.samsung.message.png
deleted file mode 100755 (executable)
index 5ba762c..0000000
Binary files a/common/data/image/com.samsung.message.png and /dev/null differ
diff --git a/common/data/image/com.samsung.message.voice.png b/common/data/image/com.samsung.message.voice.png
deleted file mode 100755 (executable)
index 85b6d51..0000000
Binary files a/common/data/image/com.samsung.message.voice.png and /dev/null differ
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 8005f80..b156ba9 100755 (executable)
@@ -1,6 +1,4 @@
 #define ENTRY_SELECTION_BG_COLOR 90 123 138 127
-#define ENTRY_TEXT_COLOR_INC "#000000"
-#define ENTRY_TEXT_SIZE_INC 44
 #define ENTRY_BUBBLE_EX_PAD 46
 #define ENTRY_BUBBLE_EX_CALLERID_PAD 140
 #define ENTRY_BUBBLE_IX_PAD 20
@@ -10,6 +8,13 @@
 #define ENTRY_BUBBLE_CALLERID_WIDTH 84
 #define ENTRY_BUBBLE_CALLERID_HEIGHT 84
 #define ENTRY_SELECTION_BG_COLOR 90 123 138 127
+#define ENTRY_BUBBLE_SENT_TEXT_COLOR "#000000"
+#define ENTRY_BUBBLE_SENT_TEXT_SHADOW_STYLE "far_shadow,bottom"
+#define ENTRY_BUBBLE_SENT_TEXT_SHADOW_COLOR "#ffffff7f"
+#define ENTRY_BUBBLE_RECEV_TEXT_COLOR "#FFFFFF"
+#define ENTRY_BUBBLE_RECEV_TEXT_SHADOW_STYLE "far_shadow,top"
+#define ENTRY_BUBBLE_RECEV_TEXT_SHADOW_COLOR "#0000009f"
+#define ENTRY_BUBBLE_TEXT_SIZE 38
 
 images {
        image: "00_MessageBubble_BG_receive.png" COMP;
@@ -47,8 +52,19 @@ group {
 
 styles {
        style {
-               name: "entry_textblock_style";
-               base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color="ENTRY_TEXT_COLOR_INC" left_margin=1 right_margin=2 wrap=mixed text_class=entry";
+               name: "entry_bubble_sent_textblock_style";
+               base: "font=SLP:style=Roman style="ENTRY_BUBBLE_SENT_TEXT_SHADOW_STYLE" shadow_color="ENTRY_BUBBLE_SENT_TEXT_SHADOW_COLOR" font_size="ENTRY_BUBBLE_TEXT_SIZE" color="ENTRY_BUBBLE_SENT_TEXT_COLOR" left_margin=1 right_margin=2 wrap=mixed text_class=bubble";
+               tag:  "br" "\n";
+               tag:  "ps" "ps";
+               tag:  "tab" "\t";
+               tag:  "em" "+ font=SLP:style=Oblique";
+               tag:  "b" "+ font=SLP:style=Bold";
+               tag:  "link" "+ color=#800 underline=on underline_color=#8008";
+               tag:  "hilight" "+ font=SLP:style=Bold";
+       }
+       style {
+               name: "entry_bubble_receive_textblock_style";
+               base: "font=SLP:style=Roman style="ENTRY_BUBBLE_RECEV_TEXT_SHADOW_STYLE" shadow_color="ENTRY_BUBBLE_RECEV_TEXT_SHADOW_COLOR" font_size="ENTRY_BUBBLE_TEXT_SIZE" color="ENTRY_BUBBLE_RECEV_TEXT_COLOR" left_margin=1 right_margin=2 wrap=mixed text_class=bubble";
                tag:  "br" "\n";
                tag:  "ps" "ps";
                tag:  "tab" "\t";
@@ -59,7 +75,7 @@ styles {
        }
        style {
                name: "entry_textblock_disabled_style";
-               base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color=#00000080 left_margin=1 right_margin=2 wrap=mixed text_class=entry";
+               base: "font=SLP:style=Roman font_size="ENTRY_BUBBLE_TEXT_SIZE" color=#00000080 left_margin=1 right_margin=2 wrap=mixed text_class=bubble";
                tag:  "br" "\n";
                tag:  "ps" "ps";
                tag:  "tab" "\t";
@@ -188,7 +204,7 @@ group {
                                state: "default" 0.0;
                                align: 0.0 0.0;
                                text {
-                                       style: "entry_textblock_style";
+                                       style: "entry_bubble_receive_textblock_style";
                                        min: 0 1;
                                }
                                rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.top.pad"; }
@@ -262,7 +278,7 @@ group {
                                rel2 { relative: 1.0 1.0; to_y: "elm.rect.subject.line"; }
                                min: 200 0;
                                text {
-                                       style: "entry_textblock_style";
+                                       style: "entry_bubble_receive_textblock_style";
                                        min: 0 1;
                                        max: 1 0;
                                }
@@ -580,7 +596,7 @@ group {
                                state: "default" 0.0;
                                align: 0.0 0.0;
                                text {
-                                       style: "entry_textblock_style";
+                                       style: "entry_bubble_sent_textblock_style";
                                        min: 0 1;
                                }
                                rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.top.pad"; }
@@ -650,7 +666,7 @@ group {
                rel1 { relative: 0.0 1.0; to_y: "elm.rect.subject.line";}
                rel2 { relative: 0.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.subject.line"; }
               text {
-                 style: "entry_textblock_style";
+                 style: "entry_bubble_sent_textblock_style";
                  min: 0 1;
                   max: 1 0;
               }
index 3fc1168..b3714a6 100755 (executable)
 BUTTON_CIRCLE_STYLES("add_plus", "M01_btn_add_plus.png", "M01_btn_add_plus.png", 64, 64);
 ///////////////////////////////////////////////////////////////////////////////////////
 
-//#define CONTACT_BUTTON_CIRCLE_BG_NORMAL  "00_btn_circle_bg_normal.png"
 #define CONTACT_BUTTON_CIRCLE_BG_PRESS  "00_btn_circle_bg_press.png"
-
 #define CONTACT_BUTTON_CIRCLE_BG_NORMAL  "00_contacts_circle_bg.png"
-//#define CONTACT_BUTTON_CIRCLE_BG_PRESS  "00_contacts_button_bg_press.png"
 
 #define CONTACT_BUTTON_CIRCLE_STYLES(style_name, image_normal, image_press, min_width, min_height) \
    group { name: "elm/button/base/circle/"style_name; \
@@ -761,14 +758,156 @@ CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_bu
 ///////////////////////////////////////////////////////////////////////////////////////
 
 
+///////////////////////////////////////////////////////////////////////////////////////
+//contac button
+///////////////////////////////////////////////////////////////////////////////////////
+#define BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC 68 68
+#define BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC 68 68
+
+  group { name: "elm/button/base/msg/contact_btn";
+      parts {
+         part { name: "button_image";
+            type: RECT;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               min: BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC;
+               max: BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC;
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            clip_to: "elm.icon.clipper";
+            description { state: "default" 0.0;
+               visible: 0;
+               rel1.to: "button_image";
+               rel2.to: "button_image";
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               min: BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC;
+               max: BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC;
+            }
+         }
+         part { name: "over2";
+            type: RECT;
+            repeat_events: 1;
+            ignore_flags: ON_HOLD;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "over3";
+            type: RECT;
+            repeat_events: 1;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part { name: "elm.icon.clipper";
+            type: RECT;
+            description { state: "default" 0.0;
+               //color: 101 101 101 255;
+               color: 201 201 201 255;
+            }
+            description { state: "clicked" 0.0;
+               color: 64 147 247 255;
+            }
+            description { state: "disabled" 0.0;
+               color: 101 101 101 102;
+            }
+         }
+         part { name: "disabler";
+            type: RECT;
+            description { state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program { name: "button_click";
+            signal: "mouse,down,1";
+            source: "over2";
+            action: SIGNAL_EMIT "elm,action,press" "";
+            after: "button_click_anim";
+         }
+         program { name: "button_click_anim";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            target: "elm.icon.clipper";
+         }
+         program { name: "button_unpress";
+            action: SIGNAL_EMIT "elm,action,unpress" "";
+         }
+         program { name: "button_mouseout_clicked";
+            signal: "mouse,up,1";
+            source: "over3";
+            action: STATE_SET "default" 0.0;
+            target: "elm.icon.clipper";
+            after: button_unpress;
+         }
+         program { name: "touch_snd";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            //action: PLAY_SAMPLE "touch_sound" 1.0;
+            after: button_unclick3;
+         }
+         program { name: "button_unclick3";
+            action: SIGNAL_EMIT "elm,action,click" "";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action: STATE_SET "visible" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "disabler";
+            target: "elm.icon.clipper";
+         }
+         program { name: "enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "elm.icon.clipper";
+            target: "disabler";
+         }
+      }
+   }
+
+
 ///////////////////////////////////////////////////////////////////
 // button for navi title
 ///////////////////////////////////////////////////
    group { name: "elm/button/base/title_button";
       images {
-         image: "M01_title_btn_bg.png" COMP;
-         image: "M01_title_btn_bg_press.png" COMP;
-        image: "00_button_04_press.png" COMP;
+         image: "00_button.png" COMP;
+         image: "00_button_press.png" COMP;
+        image: "00_button_dim.png" COMP;
       }
       script {
          public button_state = BUTTON_STATE_ENABLED;
@@ -778,22 +917,22 @@ CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_bu
             scale: 1;
             description { state: "default" 0.0;
                image {
-                  normal: "M01_title_btn_bg.png";
-                  border: 1 1 1 1;
-                  border_scale: 0;
+                 normal: "00_button.png";
+                  border: 12 12 12 12;
+                  border_scale: 1;
                }
             }
             description { state: "clicked" 0.0;
                inherit: "default" 0.0;
-               image.normal: "M01_title_btn_bg_press.png";
+               image.normal:  "00_button_press.png";
             }
             description { state: "disabled" 0.0;
                inherit: "default" 0.0;
-               image.normal: "M01_title_btn_bg.png"; //"00_button_04_press.png";
+               image.normal: "00_button_dim.png";
             }
             description { state: "focused" 0.0;
                inherit: "default" 0.0;
-               image.normal:  "M01_title_btn_bg.png"; //"00_button_04_press.png";
+               image.normal:  "00_button.png";
             }
          }
          part { name: "padding_left_top";
@@ -983,7 +1122,7 @@ CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_bu
                   to: "padding_right_bottom";
                }
                align: 0.0 0.5;
-               color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+               color: 59 115 182 255;
                text {
                   font: "SLP:style=Medium";
                   size: 52;
@@ -999,7 +1138,7 @@ CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_bu
             description { state: "clicked" 0.0;
                inherit: "default" 0.0;
                visible: 1;
-               color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
+               color: 248 246 239 255;
             }
             description { state: "disabled" 0.0;
                inherit: "default" 0.0;
index 5566814..f2b34c4 100755 (executable)
@@ -32,14 +32,49 @@ collections {
                                description {
                                        state: "default" 0.0;
                                        fixed: 0 1;
-                                       min: 0 16;
+                                       min: 0 10;
                                        align: 0.5 1;
                                        rel1.relative: 0.0 1.0;
                                        rel2.relative: 1.0 1.0;
                                        visible: 0;
                                }
                        }
-
+                       part {
+                               name: "more_btn";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 1 1;
+                                       align: 0 0.5;
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                               }
+                       }
+                       part {
+                               name: "more_separator";
+                               type: IMAGE;
+                               scale: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 2 48;
+                                       max: 2 48;
+                                       align: 0 0.5;
+                                       rel1.to: "more_btn";
+                                       rel2.to: "more_btn";
+                                       rel1.relative: 1 0;
+                                       rel2.relative: 1 1;
+                                       image.normal: "nf_title_separator.png";
+                                       visible: 0;
+                               }
+                               description {
+                                       state: "visible" 0.0;
+                                       inherit: "default";
+                                       visible: 1;
+                               }
+                       }
                        part {
                                name: "padding1";
                                type: RECT;
@@ -49,11 +84,15 @@ collections {
                                        fixed: 1 0;
                                        min: 16 0;
                                        align: 0 0.5;
-                                       rel1.relative: 0 0;
-                                       rel2.relative: 0 1;
-                                       visible: 0;
+                                       rel1.to: "more_separator";
+                                       rel2.to: "more_separator";
+                                       rel1.relative: 1 0;
+                                       rel2.relative: 1 1;
+                                       color: 255 255 255 0;
+                                       visible: 1;
                                }
                        }
+
                        part {
                                name: "title_btn";
                                type: SWALLOW;
@@ -63,7 +102,7 @@ collections {
                                        fixed: 0 0;
                                        min: 0 72;
                                        align: 0 0.5;
-                                       rel1 { relative: 0.0 1.0; to_y: "padding_top";}
+                                       rel1 { relative: 0.0 1.0; to_x: "padding1"; to_y: "padding_top";}
                                        rel2 { relative: 0.0 0.0; to_x: "padding2"; to_y: "padding_bottom";}
                                        color: 255 0 0 255;
                                }
@@ -76,12 +115,12 @@ collections {
                                        state: "default" 0.0;
                                        text {
                                                font: "SLP:style=Medium";
-                                               size: 48;
+                                               size: 56;
                                                min: 0 0;
                                                max: 1 0;
                                                align: 0.5 0.5;
                                        }
-                                       color: 249 249 249 255;
+                                       color: 59 115 182 255;
                                        align: 0.0 0.5;
                                        min: 0 72;
                                        fixed: 1 0;
@@ -98,66 +137,27 @@ collections {
                                        fixed: 1 0;
                                        min: 5 0;
                                        align: 1.0 0.5;
-                                       rel1.to: "more_separator";
-                                       rel2.to: "more_separator";
-                                       rel1.relative: 0 0;
-                                       rel2.relative: 0 1;
-                                       visible: 0;
-                               }
-                       }
-                       part {
-                               name: "more_separator";
-                               type: IMAGE;
-                               scale: 0;
-                               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";
-                                       visible: 0;
-                               }
-                               description {
-                                       state: "visible" 0.0;
-                                       inherit: "default";
-                                       visible: 1;
-                               }
-                       }
-                       part {
-                               name: "more_btn";
-                               type: SWALLOW;
-                               scale: 1;
-                               description {
-                                       state: "default" 0.0;
-                                       fixed: 0 1;
-                                       min: 1 1;
-                                       align: 1 0.5;
                                        rel1.to: "compose_separator";
                                        rel2.to: "compose_separator";
                                        rel1.relative: 0 0;
                                        rel2.relative: 0 1;
+                                       visible: 0;
                                }
                        }
                        part {
                                name: "compose_separator";
-                               type: IMAGE;
+                               type: SWALLOW;
                                scale: 0;
                                description {
                                        state: "default" 0.0;
                                        fixed: 1 1;
-                                       min: 2 48;
-                                       max: 2 48;
+                                       min: 18 68;
+                                       max: 18 68;
                                        align: 1 0.5;
                                        rel1.to: "compose_btn";
                                        rel2.to: "compose_btn";
                                        rel1.relative: 0 0;
                                        rel2.relative: 0 1;
-                                       image.normal: "nf_title_separator.png";
                                        visible: 0;
                                }
                                description {
@@ -172,7 +172,7 @@ collections {
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       fixed: 0 1;
+                                       fixed: 1 1;
                                        min: 1 1;
                                        align: 1 0.5;
                                        rel1.to: "prev_separator";
@@ -183,19 +183,18 @@ collections {
                        }
                        part {
                                name: "prev_separator";
-                               type: IMAGE;
+                               type: SWALLOW;
                                scale: 0;
                                description {
                                        state: "default" 0.0;
                                        fixed: 1 0;
-                                       min: 2 48;
-                                       max: 2 48;
+                                       min: 18 68;
+                                       max: 18 68;
                                        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";
                                        visible: 0;
                                }
                                description {
@@ -210,11 +209,28 @@ collections {
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       fixed: 0 1;
-                                       min: 0 72;
+                                       fixed: 1 1;
+                                       min: 0 68;
+                                       align: 1 0.5;
+                                       rel1.to: "title_right_padding";
+                                       rel2.to: "title_right_padding";
+                                       rel1.relative: 0 0;
+                                       rel2.relative: 0 1;
+                               }
+                       }
+                       part {
+                               name: "title_right_padding";
+                               type: SWALLOW;
+                               scale: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 26 68;
+                                       max: 26 68;
                                        align: 1 0.5;
                                        rel1.relative: 1 0;
                                        rel2.relative: 1 1;
+                                       visible: 0;
                                }
                        }
                        part {
@@ -369,7 +385,7 @@ collections {
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min : 16 0;
+                                       min : 36 0;
                                        fixed: 1 0;
                                        align: 0.0 0.0;
                                        rel1.relative: 0.0 0.0;
@@ -428,7 +444,7 @@ collections {
                                scale : 1;
                                description {
                                        state: "default" 0.0;
-                                       min: 380 0;
+                                       min: 574 0;
                                        align: 0.5 0.5;
                                        fixed: 1 0;
                                        rel1 { relative: 0.5 1.0;       to: "pad_top"; }
@@ -451,7 +467,7 @@ collections {
                                        }
                                        color: 0 0 0 255;
                                        align: 0 0.5;
-                                       rel1 { relative: 0.07 0.5; to: "pad_bottom"; }
+                                       rel1 { relative: 0.11 0.5; to: "pad_bottom"; }
                                        rel2 { relative: 1.0 1.0; to: "pad_bottom"; }
                                }
                        }
index 42a773d..f41e481 100755 (executable)
@@ -76,9 +76,219 @@ part {      name: "elm.flip.content"; \
             target: "elm.flip.content"; \
          }
 
+#define GENLIST_PROGRAM_FLIP_1TEXT \
+         program { name: "flip_enabled"; \
+            signal: "elm,state,flip,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "flip_enabled" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         } \
+         program { name: "flip_disabled"; \
+            signal: "elm,state,flip,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+            target: "elm.flip.content"; \
+         }
+
+
 
 //////////////////////////////////////////////////////////////////////////////
+group {
+       name: "elm/genlist/item/1text.custom/default";
+       alias: "elm/genlist/item_odd/1text.custom/default";
+       alias: "elm/genlist/item_compress/1text.custom/default";
+       alias: "elm/genlist/item_compress_odd/itext.custom/default";
+       data.item: "stacking" "above";
+       data.item: "selectraise" "on";
+       data.item: "flips" "elm.flip.icon elm.flip.content";
+       data.item: "treesize" 26;
+       data.item: "texts" "elm.text";
+       data.item: "contents" "elm.icon.edit";
 
+       parts {
+               part {
+                       name: "base";
+                       type: RECT;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 112;
+                               color: 0 0 0 0; // 2nd depth color
+                               //color: 153 176 195 255; // 2nd depth color
+                       }
+               }
+
+               part {
+                       name: "bg_image";
+                       type: RECT;
+                       clip_to: "disclip";
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               color: 0 0 0 0;
+                               //color: 153 176 195 255;
+                       }
+                       description {
+                               state: "selected" 0.0;
+                               color: 42 137 194 255;
+                       }
+               }
+
+               part {
+                       name: "bottom_line";
+                       type: RECT;
+                       mouse_events: 0;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               visible: 1;
+                               color: 169 169 169 255;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       offset: 0 -1;
+                               }
+                       }
+               }
+               part {
+                       name: "elm.padding.top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 16;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel2.relative: 1.0 0.0;
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 1;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1.relative: 0.0 1.0;
+                               align: 0.0 1.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 16 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel2.relative: 0.0 1.0;
+                               align: 0.0 0.0;
+                       }
+               }
+               part {
+                       name: "elm.padding.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 0; //16 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel1.relative: 1.0 0.0;
+                               align: 1.0 0.0;
+                       }
+               }
+
+               part {
+                       name: "elm.text";
+                       clip_to: "disclip";
+                       type: TEXT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 61;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "elm.padding.left";
+                                       to_y: "elm.padding.top";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to_x: "elm.padding.right";
+                                       to_y: "elm.padding.top";
+                               }
+                               align: 0.0 0.0;
+                               color: 0 0 0 255;
+                               text {
+                                       font: "SLP:style=Roman";
+                                       size: 44;
+                                       min: 0 1;
+                                       align: 0.0 0.5;
+                                       text_class: "list_item";
+                               }
+                       }
+                       description {
+                               state: "selected" 0.0;
+                               inherit: "default" 0.0;
+                               color: 249 249 249 255;
+                       }
+                       description {
+                               state: "flip_enabled" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               GENLIST_PART_FLIP
+               GENLIST_PART_DISCLIP
+       }
+       programs {
+        // signal: elm,state,%s,active
+        //   a "check" item named %s went active
+        // signal: elm,state,%s,passive
+        //   a "check" item named %s went passive
+        // default is passive
+               program {
+                       name: "go_active";
+                       signal: "elm,state,selected";
+                       source: "elm";
+                       action: STATE_SET "selected" 0.0;
+                       target: "bg_image";
+                       target: "elm.text";
+               }
+               program {
+                       name: "go_passive";
+                       signal: "elm,state,unselected";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "bg_image";
+                       target: "elm.text";
+                       transition: LINEAR 0.1;
+               }
+               program {
+                       name: "go_disabled";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       action: STATE_SET "disabled" 0.0;
+                       target: "disclip";
+               }
+               program { name: "go_enabled";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "disclip";
+               }
+               GENLIST_PROGRAM_FLIP_1TEXT
+       }
+}
 group {
        name: "elm/genlist/item/2text.1icon.2.custom/default";
        alias: "elm/genlist/item_odd/2text.1icon.2.custom/default";
diff --git a/common/data/msg_image_macro.edc b/common/data/msg_image_macro.edc
new file mode 100644 (file)
index 0000000..daf298e
--- /dev/null
@@ -0,0 +1,31 @@
+#define RESOURCE_IMAGE( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME COMP; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+#define RESOURCE_IMAGE_LOSSY( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME LOSSY 85; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
diff --git a/common/data/msg_images.edc b/common/data/msg_images.edc
new file mode 100755 (executable)
index 0000000..0cfd9f8
--- /dev/null
@@ -0,0 +1,59 @@
+#include "msg_image_macro.edc"
+
+collections {
+       RESOURCE_IMAGE("01_controllbar_icon_add_to_contact.png");
+       RESOURCE_IMAGE("01_header_icon_cancel.png");
+       RESOURCE_IMAGE("01_header_icon_done.png");
+       RESOURCE_IMAGE("60_myfiles_file_etc.png");
+       RESOURCE_IMAGE("attach_icon.png");
+       RESOURCE_IMAGE("M01_btn_delete.png");
+       RESOURCE_IMAGE("M01_btn_delete_press.png");
+       RESOURCE_IMAGE("M01_btn_message_send.png");
+       RESOURCE_IMAGE("M01_btn_message_send_dim.png");
+       RESOURCE_IMAGE("M01_btn_mms_message_send.png");
+       RESOURCE_IMAGE("M01_btn_mms_message_send_dim.png");
+       RESOURCE_IMAGE("M01_btn_scheduled_message_send.png");
+       RESOURCE_IMAGE("M01_btn_scheduled_message_send_dim.png");
+       RESOURCE_IMAGE("M01_icon_attach_voice.png");
+       RESOURCE_IMAGE("M01_icon_block.png");
+       RESOURCE_IMAGE("M01_icon_broadcasting.png");
+       RESOURCE_IMAGE("M01_icon_DRM_64x64.png");
+       RESOURCE_IMAGE("M01_icon_message_status_mms_read_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_mms_sent_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_mms_unread_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_sms_read_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_sms_sent_n.png");
+       RESOURCE_IMAGE("M01_icon_message_status_sms_unread_n.png");
+       RESOURCE_IMAGE("M01_icon_OTA.png");
+       RESOURCE_IMAGE("M01_icon_Push.png");
+       RESOURCE_IMAGE("M01_icon_save.png");
+       RESOURCE_IMAGE("M01_icon_SOS.png");
+       RESOURCE_IMAGE("M01_icon_unblock.png");
+       RESOURCE_IMAGE("M01_icon_video_call.png");
+       RESOURCE_IMAGE("M01_icon_view_contact.png");
+       RESOURCE_IMAGE("M01_icon_voice_call.png");
+       RESOURCE_IMAGE("M01_photo_btn_delete.png");
+       RESOURCE_IMAGE("M01_photo_btn_delete_press.png");
+       RESOURCE_IMAGE("myfile_icon_etc.png");
+       RESOURCE_IMAGE("myfile_icon_excel.png");
+       RESOURCE_IMAGE("myfile_icon_html.png");
+       RESOURCE_IMAGE("myfile_icon_images.png");
+       RESOURCE_IMAGE("myfile_icon_java.png");
+       RESOURCE_IMAGE("myfile_icon_music.png");
+       RESOURCE_IMAGE("myfile_icon_pdf.png");
+       RESOURCE_IMAGE("myfile_icon_ppt.png");
+       RESOURCE_IMAGE("myfile_icon_rss.png");
+       RESOURCE_IMAGE("myfile_icon_svg.png");
+       RESOURCE_IMAGE("myfile_icon_swf.png");
+       RESOURCE_IMAGE("myfile_icon_text.png");
+       RESOURCE_IMAGE("myfile_icon_video.png");
+       RESOURCE_IMAGE("myfile_icon_word.png");
+       RESOURCE_IMAGE("M01_icon_Unsupported.png");
+       RESOURCE_IMAGE("M01_icon_DRM.png");
+       RESOURCE_IMAGE("M01_title_icon_compose.png");
+       RESOURCE_IMAGE("M01_title_icon_search.png");
+       RESOURCE_IMAGE("M01_title_icon_search_dim.png");
+       RESOURCE_IMAGE("M01_title_icon_attach.png");
+       RESOURCE_IMAGE("M01_title_icon_attach_dim.png");
+       RESOURCE_IMAGE("M01_contact_default_image.png");
+}
index 69e32fa..f35fb7f 100755 (executable)
 #define MSG_BUNDLE_KEY_ATTACHFILE              "ATTACHFILE"
 #define MSG_BUNDLE_KEY_SUBJECT                 "SUBJECT"
 #define MSG_BUNDLE_KEY_BODY                    "BODY"
-#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_REFRESH_CONV            "refresh_conv"
 #define MSG_BUNDLE_KEY_MESSAGE_BOX             "messagebox"
 #define MSG_BUNDLE_KEY_INDICATOR_MODE          "indicator_mode"
 
 #define MSG_BUNDLE_KEY_DRMTYPE                 "drm_type"
 #define MSG_BUNDLE_KEY_SYSPOPUP_CONTENT "_SYSPOPUP_CONTENT_"
 
+/* contact bundle key */
+#define MSG_CT_UG_BUNDLE_TYPE "type"
+#define MSG_CT_UG_BUNDLE_MAX "ct_max"
+#define MSG_CT_UG_BUNDLE_EMAIL "ct_email"
+#define MSG_CT_UG_BUNDLE_NUM "ct_num"
+#define MSG_CT_UG_BUNDLE_ID "person_id"
+
 /* Bundle value name */
 #define MSG_BUNDLE_VALUE_COMPOSE               "compose"
 #define MSG_BUNDLE_VALUE_SMS_URI               "sms"
 #define MSG_BUNDLE_VALUE_INTERNAL              "internal"
 #define MSG_BUNDLE_VALUE_EDIT                  "edit"
 #define MSG_BUNDLE_VALUE_FORWARD               "forward"
+#define MSG_BUNDLE_VALUE_RESEND                        "resend"
+#define MSG_BUNDLE_VALUE_REPLY                 "reply"
+#define MSG_BUNDLE_VALUE_DELETE_MSG            "delete_msg"
+#define MSG_BUNDLE_VALUE_REFRESH_CONV          "refresh_conv"
 #define MSG_BUNDLE_VALUE_NORMAL                        "normal"
 
 #define MSG_BUNDLE_VALUE_IMAGE                 "IMAGE"
 #define MSG_BUNDLE_VALUE_INDICATOR             "indicator"
 #define MSG_BUNDLE_VALUE_NO_INDICATOR          "no_indicator"
 
+/* contact bundle value */
+#define MSG_CT_UG_REQUEST_DETAIL 0
+#define MSG_CT_UG_REQUEST_SELECT_CONTACT 11
+#define MSG_CT_UG_REQUEST_SELECT_NUMBER 12
+#define MSG_CT_UG_REQUEST_UPDATE_WITH_NUM 21
+#define MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL 22
+#define MSG_CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL 34
+
+
+/* contact result */
+#define MSG_CT_UG_BUNDLE_RESULT_NUMBER_ID "num_id"
+#define MSG_CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST "num_id_list"
+#define MSG_CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST "email_id_list"
+
 #endif /* __MSG_BUNDLE_H__ */
 
index df95b24..40f8893 100755 (executable)
@@ -21,6 +21,8 @@
 #include <msg-ui-util.h>
 #include <msg-ui-common-utility.h>
 #include <msg-ui-image-resource.h>
+#include <msg_storage.h>
+#include <elm_widget.h>
 
 /* for i18n */
 #include <unicode/uloc.h>
@@ -56,6 +58,18 @@ static char *icon_array[MSG_APP_FILE_TYPE_MAX] = {
        [MSG_APP_FILE_TYPE_ETC] = MSG_COMMON_FILE_ETC_ICON,
 };
 
+typedef struct {
+       int     status;
+       time_t time;
+} MSG_DETAIL_REPORT_STRUCT;
+
+typedef struct {
+       char address[MAX_ADDRESS_VAL_LEN+1];
+       MSG_DETAIL_REPORT_STRUCT delivery;
+       MSG_DETAIL_REPORT_STRUCT read;
+} MSG_DETAIL_REPORT_LIST_S;
+
+
 /*==========================
  * FUNCTION IMPLEMENTATIONS
  *========================== */
@@ -87,8 +101,9 @@ int msg_common_get_timeformat()
 
 char *msg_common_get_date_best_pattern(const char* locale, char* skeleton)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, locale == NULL || skeleton == NULL, NULL);
+       D_ENTER;
+       D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL");
+       D_MSG_RETVM_IF(skeleton == NULL, NULL, "skeleton is NULL");
 
        UErrorCode status = U_ZERO_ERROR;
        UDateTimePatternGenerator *generator = NULL;
@@ -118,14 +133,15 @@ char *msg_common_get_date_best_pattern(const char* locale, char* skeleton)
 
        udatpg_close(generator);
 
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       D_LEAVE;
 
        return strdup(bestPatternString);
 }
 
 char *msg_common_get_formatted_date(const char* locale, char* bestPattern, void *time)
 {
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, locale == NULL || bestPattern == NULL || time == NULL, NULL);
+       D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL");
+       D_MSG_RETVM_IF(bestPattern == NULL, NULL, "bestPattern is NULL");
 
        UErrorCode status = U_ZERO_ERROR;
        UDate date;
@@ -147,8 +163,9 @@ char *msg_common_get_formatted_date(const char* locale, char* bestPattern, void
        if (time) {
                time_t msg_time = *(time_t *) time;
                date = (UDate) msg_time * 1000; /* Equivalent to Date = ucal_getNow() in Milliseconds */
-       } else
+       } else {
                date = ucal_getNow();
+       }
 
        date_format = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, uBestPattern, -1, &status);
        formattedCapacity = MSG_COMMON_MAX_UCHAR_PATTERN_LEN;
@@ -164,9 +181,9 @@ char *msg_common_get_formatted_date(const char* locale, char* bestPattern, void
 
 char *msg_common_get_date_text(const char* locale, char* skeleton, void* time)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, locale == NULL, NULL);
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, skeleton == NULL, NULL);
+       D_ENTER;
+       D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL");
+       D_MSG_RETVM_IF(skeleton == NULL, NULL, "skeleton is NULL");
 
        UChar customSkeleton[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,};
        int skeletonLength = 0;
@@ -255,16 +272,16 @@ char *msg_common_get_display_date(const char* locale, char* bestPattern, char* y
 
 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);
+       D_MSG_RETVM_IF(markup_text == NULL, FALSE, "markup_text is NULL");
+       D_MSG_RETVM_IF(font_style == NULL, FALSE, "font_style is NULL");
+       D_MSG_RETVM_IF(src == NULL, FALSE, "src is NULL");
 
        char *tmp_body_buf = NULL;
        tmp_body_buf = (char *) calloc(strlen + 1, sizeof(char));
        if (tmp_body_buf) {
                strncpy(tmp_body_buf, src, strlen);
        } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed");
+               D_EMSG("calloc is failed");
                return FALSE;
        }
 
@@ -277,10 +294,10 @@ static MSG_BOOL __msg_common_make_normal_markup_text(Eina_Strbuf *markup_text, E
        return TRUE;
 }
 
-Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fontcolor, char *fontstyle)
+Eina_Strbuf *msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, src == NULL, NULL);
+       D_ENTER;
+       D_MSG_RETVM_IF(src == NULL, NULL, "src is NULL");
 
        const char *src_text = src;
 
@@ -293,16 +310,16 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon
                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);
+               D_MSG("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!");
+                       D_EMSG("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!");
+                       D_EMSG("font_buf eina_strbuf_new is failed!");
                        if (tmp_buf) {
                                free(tmp_buf);
                                tmp_buf = NULL;
@@ -312,7 +329,7 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon
 
                markup_text = eina_strbuf_new();
                if (markup_text == NULL) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "markup_text eina_strbuf_new is failed!");
+                       D_EMSG("markup_text eina_strbuf_new is failed!");
                        if (tmp_buf) {
                                free(tmp_buf);
                                tmp_buf = NULL;
@@ -329,14 +346,9 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon
                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));
+               D_MSG("font_buf : (%s)", eina_strbuf_string_get(font_buf));
 
                snprintf(tmp_buf, src_text_len + 1, "%s\n", (char *) src_text);
 
@@ -345,15 +357,25 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon
                int token_len = 0;
 
                while (token) {
-                       token_len = strlen(token);
+                       char *tmp_str = elm_entry_utf8_to_markup(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");
+                       if (!tmp_str) {
+                               D_EMSG("elm_entry_utf8_to_markup() is failed, [%s]. Stop parsing entry text", token);
+                               break;
+                       }
+
+                       token_len = strlen(tmp_str);
+
+                       if (tmp_str[token_len - 1] == 0x0D) { /* if Enter is added via Window system, CR+LF is added. */
+                               D_MSG("CR length is decreased");
                                token_len = token_len - 1;
                        }
 
-                       if (!__msg_common_make_normal_markup_text(markup_text, font_buf, token, token_len))
-                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "__msg_common_make_normal_markup_text is failed");
+                       if (!__msg_common_make_normal_markup_text(markup_text, font_buf, tmp_str, token_len))
+                               D_MSG("__msg_common_make_normal_markup_text is failed");
+
+                       if (tmp_str)
+                               free(tmp_str);
 
                        token = strtok_r(NULL, "\n", &remained_string);
                        if (token)
@@ -378,8 +400,8 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon
 
 MSG_BOOL msg_common_is_valid_phone_number(const char *address)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, address == NULL, FALSE, "address is NULL");
+       D_ENTER;
+       D_MSG_RETVM_IF(address == NULL, FALSE, "address is NULL");
 
        int addr_len = 0;
        addr_len = strlen(address);
@@ -403,40 +425,40 @@ MSG_BOOL msg_common_is_valid_phone_number(const char *address)
 
                return TRUE;
        } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid address length [%d]", addr_len);
+               D_MSG("invalid address length [%d]", addr_len);
                return FALSE;
        }
 }
 
 MSG_BOOL msg_common_is_valid_email_addr(const char *address)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, address == NULL, FALSE, "address is NULL");
+       D_ENTER;
+       D_MSG_RETVM_IF(address == NULL, FALSE, "address is NULL");
 
        char *token1 = NULL;
        char *token2 = NULL;
 
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address = %s", address);
+       D_MSG("address = %s", address);
 
        token1 = strchr(address, '@');
        if (!token1) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address has no @");
-                               return FALSE;
-                       }
+               D_EMSG("address has no @");
+               return FALSE;
+       }
 
        if (strchr(&token1[1], '@')) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address cannot have two more @");
-                               return FALSE;
-                       }
+               D_EMSG("address cannot have two more @");
+               return FALSE;
+       }
 
        token2 = strchr(token1, '.');
        if (!token2) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "there's no . character");
+               D_EMSG("there's no . character");
                return FALSE;
-               }
+       }
 
        if ((token2 == token1 + 1) || (*(token2 + 1) == '\0')) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address type should be \'xxx.xxx\'");
+               D_EMSG("address type should be \'xxx.xxx\'");
                return FALSE;
        }
 
@@ -450,7 +472,7 @@ MSG_BOOL msg_common_is_connected_call(void)
        if (vconf_get_int(VCONFKEY_CALL_STATE, &call_status) < 0)
                return FALSE;
 
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "call_status = %d", call_status);
+       D_MSG("call_status = %d", call_status);
 
        if (call_status != VCONFKEY_CALL_OFF)
                return TRUE;
@@ -465,7 +487,7 @@ MSG_BOOL msg_common_is_sim_inserted(void)
        if (vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &sim_slot_status) < 0)
                return FALSE;
 
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sim_slot_status = %d", sim_slot_status);
+       D_MSG("sim_slot_status = %d", sim_slot_status);
 
        if (sim_slot_status == VCONFKEY_TELEPHONY_SIM_INSERTED)
                return TRUE;
@@ -473,39 +495,21 @@ MSG_BOOL msg_common_is_sim_inserted(void)
                return FALSE;
 }
 
-MSG_BOOL msg_common_get_font_size(int *index, int *font_size)
+MSG_BOOL msg_common_get_font_size(int *index)
 {
-       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);
+       D_ENTER;
+       D_MSG_RETVM_IF(index == NULL, FALSE, "font_size is NULL");
 
        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 !!");
+               D_EMSG("vconf_get_int(font_size) is failed !!");
                return FALSE;
-       } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", *index);
        }
 
-       switch (*index) {
-       case MSG_APP_FONT_SIZE_INDEX_GIANT :
-               *font_size = MSG_APP_FONT_SIZE_GIANT;
-               break;
-       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_SYSTEM_FONT :
-       default :
-               *font_size = MSG_APP_FONT_SIZE_NORMAL;
-               break;
+       if (*index < MSG_APP_FONT_SIZE_INDEX_SMALL || *index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", *index);
+               return FALSE;
+       } else {
+               D_MSG("index = %d", *index);
        }
 
        return TRUE;
@@ -513,18 +517,17 @@ MSG_BOOL msg_common_get_font_size(int *index, int *font_size)
 
 MSG_BOOL msg_common_set_font_size(int index)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       D_ENTER;
 
-       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);
+       if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", index);
                return FALSE;
        } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", index);
+               D_MSG("index = %d", index);
        }
 
        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 !!");
+               D_EMSG("vconf_set_int(font_size) is failed !!");
                return FALSE;
        }
 
@@ -533,15 +536,15 @@ MSG_BOOL msg_common_set_font_size(int index)
 
 MSG_BOOL msg_common_increase_font_size()
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       D_ENTER;
 
        int index = -1;
        int increase = -1;
        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 !!");
+               D_EMSG("vconf_get_int(font_size) is failed !!");
                return FALSE;
        } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font size = %d", index);
+               D_MSG("index = %d", index);
        }
 
        switch (index) {
@@ -560,26 +563,30 @@ MSG_BOOL msg_common_increase_font_size()
                increase = MSG_APP_FONT_SIZE_INDEX_NORMAL;
                break;
        default :
-               increase = MSG_APP_FONT_SIZE_NORMAL;
+               increase = MSG_APP_FONT_SIZE_INDEX_NORMAL;
                break;
        }
-       if (increase != -1)
-               msg_common_set_font_size(increase);
 
+       if (increase != -1) {
+               if (msg_common_set_font_size(increase) == FALSE) {
+                       D_EMSG("msg_common_set_font_size is failed");
+                       return FALSE;
+               }
+       }
        return TRUE;
 }
 
 MSG_BOOL msg_common_decrease_font_size()
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       D_ENTER;
 
        int index = -1;
        int decrease = -1;
        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 !!");
+               D_EMSG("vconf_get_int(font_size) is failed !!");
                return FALSE;
        } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font size = %d", index);
+               D_MSG("index = %d", index);
        }
 
        switch (index) {
@@ -598,53 +605,171 @@ MSG_BOOL msg_common_decrease_font_size()
        case MSG_APP_FONT_SIZE_INDEX_SMALL :
                break;
        default :
-               decrease = MSG_APP_FONT_SIZE_NORMAL;
+               decrease = MSG_APP_FONT_SIZE_INDEX_NORMAL;
                break;
        }
-       if (decrease != -1)
-               msg_common_set_font_size(decrease);
 
+       if (decrease != -1) {
+               if (msg_common_set_font_size(decrease) == FALSE) {
+                       D_EMSG("msg_common_set_font_size is failed");
+                       return FALSE;
+               }
+       }
        return TRUE;
 
 }
 
+int msg_common_get_font_size_from_index(int index)
+{
+       D_ENTER;
+
+       if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", index);
+               return -1;
+       } else {
+               D_MSG("index = %d", index);
+       }
+       int font_size = 0;
+
+       switch (index) {
+       case MSG_APP_FONT_SIZE_INDEX_SMALL :
+               font_size = MSG_APP_FONT_SIZE_SMALL;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_NORMAL :
+               font_size = MSG_APP_FONT_SIZE_NORMAL;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_LARGE :
+               font_size = MSG_APP_FONT_SIZE_LARGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_HUGE :
+               font_size = MSG_APP_FONT_SIZE_HUGE;
+               break;
+       case MSG_APP_FONT_SIZE_INDEX_GIANT :
+               font_size = MSG_APP_FONT_SIZE_GIANT;
+               break;
+       default :
+               font_size = MSG_APP_FONT_SIZE_NORMAL;
+               break;
+       }
+
+       return font_size;
+}
+
+
+int msg_common_get_index_from_font_size(int font_size)
+{
+       D_ENTER;
+
+       if (font_size < MSG_APP_FONT_SIZE_SMALL || font_size >= MSG_APP_FONT_SIZE_MAX) {
+               D_EMSG("invalid font_size = %d", font_size);
+               return -1;
+       } else {
+               D_MSG("font_size = %d", font_size);
+       }
+       int index = 0;
+
+       switch (font_size) {
+       case MSG_APP_FONT_SIZE_SMALL :
+               index = MSG_APP_FONT_SIZE_INDEX_SMALL;
+               break;
+       case MSG_APP_FONT_SIZE_NORMAL :
+               index = MSG_APP_FONT_SIZE_INDEX_NORMAL;
+               break;
+       case MSG_APP_FONT_SIZE_LARGE :
+               index = MSG_APP_FONT_SIZE_INDEX_LARGE;
+               break;
+       case MSG_APP_FONT_SIZE_HUGE :
+               index = MSG_APP_FONT_SIZE_INDEX_HUGE;
+               break;
+       case MSG_APP_FONT_SIZE_GIANT :
+               index = MSG_APP_FONT_SIZE_INDEX_GIANT;
+               break;
+       default :
+               index = MSG_APP_FONT_SIZE_INDEX_NORMAL;
+               break;
+       }
+
+       return index;
+}
+
+MSG_BOOL msg_common_get_access_font_size(int *index)
+{
+       D_ENTER;
+       D_MSG_RETVM_IF(index == NULL, FALSE, "index is NULL");
+
+       if (vconf_get_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE, index) < 0) {
+               D_EMSG("vconf_get_int(font_size) is failed !!");
+               return FALSE;
+       }
+
+       if (*index < MSG_APP_FONT_SIZE_INDEX_SMALL || *index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", *index);
+               return FALSE;
+       } else {
+               D_MSG("index = %d", *index);
+       }
+
+       return TRUE;
+}
+
+MSG_BOOL msg_common_set_access_font_size(int index)
+{
+       D_ENTER;
+
+       if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) {
+               D_EMSG("invalid index = %d", index);
+               return FALSE;
+       } else {
+               D_MSG("index = %d", index);
+       }
+
+       if (vconf_set_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE, index) < 0) {
+               D_EMSG("vconf_set_int(font_size) is failed !!");
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
 MSG_BOOL msg_common_apply_font_size(const char *widget_name, Evas_Object *obj)
 {
-       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);
+       D_ENTER;
+       D_MSG_RETVM_IF(widget_name == NULL, FALSE, "widget_name is NULL");
+       D_MSG_RETVM_IF(obj == NULL, FALSE, "obj is NULL");
 
        int index = 0;
        int font_size = 0;
        Evas_Font_Size font_size_scale = 0;
 
-       if (msg_common_get_font_size(&index, &font_size) != TRUE) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_get_font_size() is failed !!");
+       if (msg_common_get_font_size(&index) != TRUE) {
+               D_EMSG("msg_common_get_font_size() is failed !!");
                return FALSE;
        } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", index);
+               D_MSG("selected index = %d", index);
        }
 
-       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;
+       font_size = msg_common_get_font_size_from_index(index);
+       if (font_size == -1) {
+               D_EMSG("msg_common_get_font_size_from_index() is failed !!");
+               return FALSE;
+       }
 
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font_size = %d, font_size_scale = %d", font_size, font_size_scale);
+       /* Calculate the scale factor */
+       font_size_scale -= (font_size * 100) / MSG_APP_FONT_SIZE_NORMAL;
 
-               edje_text_class_del(widget_name);
-               edje_text_class_set(widget_name, NULL, font_size_scale);
-               elm_widget_theme_specific(obj, NULL, EINA_TRUE);
-       }
+       D_MSG("font_size = %d, font_size_scale = %d", font_size, font_size_scale);
+
+       edje_text_class_del(widget_name);
+       edje_text_class_set(widget_name, NULL, font_size_scale);
+       elm_widget_theme_specific(obj, NULL, EINA_TRUE);
 
        return TRUE;
 }
 
 void msg_common_reset_font_size(const char *widget_name)
 {
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, widget_name == NULL);
+       D_ENTER;
+       D_MSG_RETM_IF(widget_name == NULL, "widget_name is NULL");
 
        edje_text_class_del(widget_name);
 
@@ -969,7 +1094,7 @@ static MSG_APP_FILE_TYPE_E __msg_common_get_file_type_by_file_ext(const char *fi
 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) {
+       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;
        }
@@ -1026,8 +1151,8 @@ int msg_common_add_block_number(msg_handle_t msgHandle, const char *address)
 int msg_common_delete_block_number(msg_handle_t msgHandle, const char *address)
 {
        D_ENTER;
-
-       MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !msgHandle || !address, false);
+       D_MSG_RETVM_IF(!msgHandle, FALSE, "msgHandle is NULL");
+       D_MSG_RETVM_IF(!address, FALSE, "address is NULL");
 
        msg_struct_list_s filter_list = {0,};
        msg_error_t err = MSG_SUCCESS;
@@ -1071,7 +1196,8 @@ int msg_common_delete_block_number(msg_handle_t msgHandle, const char *address)
 int msg_common_check_block_number(msg_handle_t msgHandle, const char *address, bool *result)
 {
        D_ENTER;
-       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, !msgHandle || !address, FALSE, "NULL_POINTER");
+       D_MSG_RETVM_IF(!msgHandle, FALSE, "msgHandle is NULL");
+       D_MSG_RETVM_IF(!address, FALSE, "address is NULL");
 
        msg_struct_list_s filter_list = {0,};
        msg_error_t err = MSG_SUCCESS;
@@ -1108,3 +1234,471 @@ int msg_common_check_block_number(msg_handle_t msgHandle, const char *address, b
        return err;
 }
 
+/*********************
+* [SMS]
+*      [sent / outbox]
+*      1. Type:
+*      2. To:
+*      3. sent time:
+*      4. delivery report
+*      5. Status:
+*
+*      [inbox]
+*      1. Type:
+*      2. From
+*      3. Received time:
+*
+* [MMS notification]
+*      1. Type:
+*      2. From:
+*      3: Expire:
+*      4. Subject:
+*      5. Message size: KB
+*
+* [MMS]
+*      [ For sent/outbox msg]
+*      1. Type:
+*      2. To:
+*      3. Sent time:
+*      4. Subject:
+*      5. Message size:
+*      6. Delivery report:
+*      7. Read report:
+*
+*      [For inbox msg]
+*      1. Type:
+*      2. From:
+*      3. Received time:
+*      4. Subject:
+*      5. Message size: KB
+**********************/
+
+char *msg_common_make_message_detail_text(msg_handle_t msgHandle, int msgId)
+{
+       msg_error_t err = MSG_SUCCESS;
+       int msg_type = MSG_TYPE_INVALID;
+       int folder_id = MSG_MAX_FOLDER_ID;
+       int thread_id = 0;
+       int contact_id = 0;
+       int timeformat = 0;
+       bool delivery_flag = false;
+       bool read_flag = false;
+       char addr_value[MAX_ADDRESS_VAL_LEN+1] = {0,};
+       char name[MAX_DISPLAY_NAME_LEN]= {0,};
+
+       msg_struct_list_s addrList = {0,};
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
+       /** Get message **/
+       err = msg_get_message(msgHandle, msgId, msgInfo, sendOpt);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return NULL;
+       }
+
+       msg_get_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, &msg_type);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_FOLDER_ID_INT, &folder_id);
+       msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id);
+
+       /** Get address list **/
+       err = msg_get_address_list(msgHandle, thread_id, &addrList);
+       if (err != MSG_SUCCESS) {
+               D_EMSG("msg_get_message has failed");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+               return NULL;
+       }
+
+       /* create str buf */
+       Eina_Strbuf *text_data = eina_strbuf_new();
+
+       /* set font size */
+       eina_strbuf_append(text_data, "<font_size=32>");
+
+
+       /*** Type ***/
+       eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_DETAILS_TYPE"));
+       eina_strbuf_append(text_data, ": ");
+
+       if (msg_type == MSG_TYPE_MMS) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE"));
+       } else if (msg_type == MSG_TYPE_MMS_NOTI) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION"));
+       } else if (msg_type == MSG_TYPE_SMS) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_TEXT_MESSAGE"));
+       } else {
+               D_EMSG("invalid msg type!");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+
+               eina_strbuf_free(text_data);
+               return NULL;
+       }
+       eina_strbuf_append(text_data, "<br>");
+
+       /*** From / To ***/
+       if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO"));
+               eina_strbuf_append(text_data, ": ");
+       } else if (folder_id == MSG_INBOX_ID) {
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_FROM"));
+               eina_strbuf_append(text_data, ": ");
+       } else {
+               D_EMSG("invalid msg type!");
+               msg_release_struct(&msgInfo);
+               msg_release_struct(&sendOpt);
+
+               eina_strbuf_free(text_data);
+               return NULL;
+       }
+
+       int index = 0;
+       for (index  = 0; index < addrList.nCount; index ++) {
+               bzero(name, sizeof(name));
+               bzero(addr_value, sizeof(addr_value));
+
+               msg_get_int_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id);
+               msg_get_str_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_DISPLAYNAME_STR, name, MAX_DISPLAY_NAME_LEN);
+               msg_get_str_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+
+               if (name[0] != '\0') {
+                       eina_strbuf_append(text_data, name);
+                       eina_strbuf_append(text_data, "(");
+                       eina_strbuf_append(text_data, addr_value);
+                       eina_strbuf_append(text_data, ")");
+               } else {
+                       eina_strbuf_append(text_data, addr_value);
+               }
+               if (index != addrList.nCount-1)
+                       eina_strbuf_append(text_data, ", ");
+       }
+       eina_strbuf_append(text_data, "<br>");
+
+       /*** Sent / Received / Expire Time ***/
+       timeformat = msg_common_get_timeformat();
+
+       if (msg_type == MSG_TYPE_MMS_NOTI) {
+               msg_struct_t mmsSendOpt = NULL;
+               int expiry_time;
+               char *str_time = NULL;
+
+               char msg[DEF_BUF_LEN] = {0,};
+               const char *expire_str = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_EXPIRES_C_PS");
+
+               msg_get_struct_handle(sendOpt, MSG_SEND_OPT_MMS_OPT_HND, &mmsSendOpt);
+               msg_get_int_value(mmsSendOpt, MSG_MMS_SENDOPTION_EXPIRY_TIME_INT, &expiry_time);
+
+               if (timeformat == MSG_TIME_FORMAT_24H)
+                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM y", &expiry_time);
+               else
+                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM y", &expiry_time);
+
+               snprintf(msg, sizeof(msg), expire_str, str_time);
+               eina_strbuf_append(text_data, msg);
+       } else {
+               if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) {
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT"));
+               } else if (folder_id == MSG_INBOX_ID) {
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVED"));
+               }
+               eina_strbuf_append(text_data, ": ");
+
+               int dptime = 0;
+               msg_get_int_value(msgInfo, MSG_MESSAGE_DISPLAY_TIME_INT, &dptime);
+
+               char *str_time = NULL;
+               if (timeformat == MSG_TIME_FORMAT_24H)
+                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM y", &dptime);
+               else
+                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM y", &dptime);
+               eina_strbuf_append(text_data, str_time);
+       }
+
+       /*line change*/
+       eina_strbuf_append(text_data, "<br>");
+
+       if (msg_type == MSG_TYPE_SMS) { /*** SMS ***/
+               int status;
+
+               switch (folder_id) {
+               case MSG_SENTBOX_ID:
+               case MSG_OUTBOX_ID:
+                       /** delivery report */
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELIVERY_REPORT"));
+                       eina_strbuf_append(text_data, ": ");
+                       // get delivery report setting value
+                       msg_get_bool_value(sendOpt, MSG_SEND_OPT_DELIVER_REQ_BOOL, &delivery_flag);
+
+                       if (delivery_flag) {
+                               eina_strbuf_append(text_data, "<br>");
+                               // report status
+                               msg_struct_list_s report_list = {0,};
+                               err = msg_get_report_status(msgHandle, msgId, &report_list);
+
+                               int i = 0;
+                               int j = 0;
+
+                               if (report_list.nCount != 0) {
+                                       msg_struct_t report = NULL;
+                                       int type;
+                                       int status;
+                                       time_t time;
+                                       char address[MAX_ADDRESS_VAL_LEN+1] = {0,};
+
+
+                                       for (i=0; i < addrList.nCount; i++) {
+                                               bool report_found = false;
+
+                                               bzero(addr_value, sizeof(addr_value));
+                                               bzero(address, sizeof(address));
+                                               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+
+                                               eina_strbuf_append(text_data, addr_value);
+                                               eina_strbuf_append(text_data, " - ");
+
+                                               for (j=0; j<report_list.nCount; j++) {
+                                                       report = report_list.msg_struct_info[j];
+                                                       msg_get_str_value(report, MSG_REPORT_ADDRESS_STR, address, sizeof(address));
+
+                                                       if (!strcmp(addr_value, address)) {
+                                                               report_found = true;
+                                                               msg_get_int_value(report, MSG_REPORT_TYPE_INT, &type);
+                                                               msg_get_int_value(report, MSG_REPORT_STATUS_INT, &status);
+                                                               msg_get_int_value(report, MSG_REPORT_TIME_INT, (int *)&time);
+
+                                                               if (type == MSG_REPORT_TYPE_DELIVERY) {
+                                                                       if (status == MSG_DELIVERY_REPORT_NONE) {
+                                                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+                                                                       } else if (status == MSG_DELIVERY_REPORT_EXPIRED) {
+                                                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_EXPIRED"));
+                                                                       } else if (status == MSG_DELIVERY_REPORT_SUCCESS) {
+                                                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVED"));
+                                                                               eina_strbuf_append(text_data, " (");
+                                                                               char *str_time = NULL;
+                                                                               if (timeformat == MSG_TIME_FORMAT_24H)
+                                                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM", &time);
+                                                                               else
+                                                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &time);
+                                                                               eina_strbuf_append(text_data, str_time);
+                                                                               eina_strbuf_append(text_data, ")");
+                                                                       } else if (status == MSG_DELIVERY_REPORT_REJECTED) {
+                                                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_REJECTED"));
+                                                                       } else {
+                                                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                               if (!report_found)
+                                                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+
+                                               eina_strbuf_append(text_data, "<br>");
+                                       }
+                               } else {
+                                       for (i=0; i < addrList.nCount; i++) {
+                                               bzero(addr_value, sizeof(addr_value));
+                                               msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+                                               eina_strbuf_append(text_data, addr_value);
+                                               eina_strbuf_append(text_data, " - ");
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+                                               eina_strbuf_append(text_data, "<br>");
+                                       }
+                               }
+
+                               msg_release_list_struct(&report_list);
+                       } else {
+                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_NOT_REQUESTED"));
+                       }
+
+                       eina_strbuf_append(text_data, "<br>");
+
+                       /** status **/
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_STATUS"));
+                       eina_strbuf_append(text_data, ": ");
+                       msg_get_int_value(msgInfo, MSG_MESSAGE_NETWORK_STATUS_INT, &status);
+                       if (status == MSG_NETWORK_SENDING)
+                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENDING"));
+                       else if (status == MSG_NETWORK_SEND_SUCCESS)
+                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENT"));
+                       else if (status == MSG_NETWORK_SEND_FAIL)
+                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENDING_FAILED"));
+
+                       eina_strbuf_append(text_data, "<br>");
+                       break;
+               default:
+                       break;
+               }
+       } else if (msg_type == MSG_TYPE_MMS || msg_type == MSG_TYPE_MMS_NOTI) { /*** MMS ***/
+               /** subject **/
+               char subject[DEF_BUF_LEN_S] = {0,};
+               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_SUBJECT"));
+               eina_strbuf_append(text_data, ": ");
+               msg_get_str_value(msgInfo, MSG_MESSAGE_SUBJECT_STR, subject, sizeof(subject));
+               if (subject[0] != '\0')
+                       eina_strbuf_append(text_data, subject);
+               else
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_UNTITLED_M_MMS"));
+               eina_strbuf_append(text_data, "<br>");
+
+               /** messae size **/
+               int msgSize = 0;
+               int sizeKB = 0;
+               char strSize[DEF_BUF_LEN_D] = {0,};
+               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MESSAGE_SIZE"));
+               eina_strbuf_append(text_data, ": ");
+               msg_get_int_value(msgInfo, MSG_MESSAGE_DATA_SIZE_INT, &msgSize);
+
+               sizeKB = msgSize/1024;
+               if (msgSize%1024 > 512)
+                       sizeKB++;
+               snprintf(strSize, sizeof(strSize), "%d%s", sizeKB, dgettext(MESSAGE_PKGNAME, "KB"));
+               eina_strbuf_append(text_data, strSize);
+               eina_strbuf_append(text_data, "<br>");
+
+               if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) {
+                       msg_struct_list_s report_list = {0,};
+                       MSG_DETAIL_REPORT_LIST_S *report_data_list = NULL;
+                       msg_struct_t mms_send_opt = NULL;
+                       msg_get_struct_handle(sendOpt, MSG_SEND_OPT_MMS_OPT_HND, &mms_send_opt);
+
+                       msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, &delivery_flag);
+                       msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &read_flag);
+
+                       // getting delivery & read report information
+                       if (delivery_flag || read_flag) {
+                               int i;
+                               report_data_list = (MSG_DETAIL_REPORT_LIST_S *)calloc(addrList.nCount, sizeof(MSG_DETAIL_REPORT_LIST_S));
+                               if (report_data_list == NULL)
+                                       D_EMSG("report_list is null");
+
+                               // get report status from FW
+                               msg_get_report_status(msgHandle, msgId, &report_list);
+
+                               for (i=0; i<addrList.nCount; i++) {
+                                       bzero(addr_value, sizeof(addr_value));
+                                       msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+
+                                       strncpy(report_data_list[i].address, addr_value, MAX_ADDRESS_VAL_LEN);
+                                       report_data_list[i].delivery.status = MSG_DELIVERY_REPORT_NONE;
+                                       report_data_list[i].read.status = MSG_READ_REPORT_NONE;
+                               }
+
+                               for (i = 0; i < report_list.nCount; i++) {
+                                       int type;
+                                       int status;
+                                       time_t time;
+
+                                       bzero(addr_value, sizeof(addr_value));
+
+                                       msg_get_int_value(report_list.msg_struct_info[i], MSG_REPORT_TYPE_INT, (int *)&type);
+                                       msg_get_int_value(report_list.msg_struct_info[i], MSG_REPORT_STATUS_INT, (int *)&status);
+                                       msg_get_str_value(report_list.msg_struct_info[i], MSG_REPORT_ADDRESS_STR, addr_value, MAX_ADDRESS_VAL_LEN);
+                                       msg_get_int_value(report_list.msg_struct_info[i], MSG_REPORT_TIME_INT, (int *)&time);
+
+                                       int j = 0;
+                                       /* fill values for viewer report list */
+                                       for (j=0; j < addrList.nCount; j++) {
+                                               if (!strncmp(report_data_list[j].address, addr_value, MAX_ADDRESS_VAL_LEN)) {
+                                                       if (type == MSG_REPORT_TYPE_DELIVERY) {
+                                                               report_data_list[j].delivery.status = status;
+                                                               report_data_list[j].delivery.time = time;
+                                                       } else {
+                                                               report_data_list[j].read.status = status;
+                                                               report_data_list[j].read.time = time;
+                                                       }
+                                               }
+                                       }
+                               }
+                               msg_release_list_struct(&report_list);
+                       }
+
+                       /** delivery report **/
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELIVERY_REPORT"));
+                       eina_strbuf_append(text_data, " : ");
+                       //
+                       if (!delivery_flag || report_data_list == NULL) {
+                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_NOT_REQUESTED"));
+                       } else {
+                               int i;
+                               for (i = 0; i < addrList.nCount; i++) {
+                                       eina_strbuf_append(text_data, report_data_list[i].address);
+                                       eina_strbuf_append(text_data, " - ");
+
+                                       if (report_data_list[i].delivery.status == MSG_DELIVERY_REPORT_NONE) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+                                       } else if (report_data_list[i].delivery.status == MSG_DELIVERY_REPORT_EXPIRED) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_EXPIRED"));
+                                       } else if (report_data_list[i].delivery.status == MSG_DELIVERY_REPORT_SUCCESS) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVED"));
+                                               eina_strbuf_append(text_data, " (");
+
+                                               char *str_time = NULL;
+                                               if (timeformat == MSG_TIME_FORMAT_24H)
+                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM", &(report_data_list[i].delivery.time));
+                                               else
+                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &(report_data_list[i].delivery.time));
+                                               eina_strbuf_append(text_data, str_time);
+                                               eina_strbuf_append(text_data, ")");
+                                       } else if (report_data_list[i].delivery.status == MSG_DELIVERY_REPORT_REJECTED) {
+                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_REJECTED"));
+                                       } else {
+                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_UNKNOWN"));
+                                       }
+
+                                       if (i != addrList.nCount-1)
+                                               eina_strbuf_append(text_data, "<br>");
+                               }
+
+                       }
+                       eina_strbuf_append(text_data, "<br>");
+
+                       /** read report **/
+                       eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_READ_REPORT"));
+                       eina_strbuf_append(text_data, ": ");
+                       //
+                       if (!read_flag) {
+                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_NOT_REQUESTED"));
+                       } else {
+                               int i = 0;
+                               for (i = 0; i < addrList.nCount; i++) {
+                                       eina_strbuf_append(text_data, report_data_list[i].address);
+                                       eina_strbuf_append(text_data, " - ");
+                                       if (report_data_list[i].read.status == MSG_READ_REPORT_NONE) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED"));
+                                       } else if (report_data_list[i].read.status == MSG_READ_REPORT_IS_READ) {
+                                               eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MMSREADREPLYMSGREAD"));
+                                               eina_strbuf_append(text_data, " (");
+
+                                               char *str_time = NULL;
+                                               if (timeformat == MSG_TIME_FORMAT_24H)
+                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM", &(report_data_list[i].read.time));
+                                               else
+                                                       str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &(report_data_list[i].read.time));
+                                               eina_strbuf_append(text_data, str_time);
+                                               eina_strbuf_append(text_data, ")");
+                                       } else if (report_data_list[i].read.status == MSG_READ_REPORT_IS_DELETED) {
+                                               eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_DELETED"));
+                                       }
+
+                                       if (i != addrList.nCount-1)
+                                               eina_strbuf_append(text_data, "<br>");
+                               }
+                       }
+                       eina_strbuf_append(text_data, "<br>");
+               }
+       }
+
+       char *str = strdup(eina_strbuf_string_get(text_data));
+
+       msg_release_list_struct(&addrList);
+       eina_strbuf_free(text_data);
+
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       return str;
+}
+
index 22ce6b2..54ebf36 100755 (executable)
 
 /* Define vconf key */
 #define VCONFKEY_MSG_APP_FONT_SIZE             "db/private/org.tizen.message/font_size"
+#define VCONFKEY_MSG_APP_ACCESS_FONT_SIZE "db/private/org.tizen.message/accessibility_font_size"
 #define VCONFKEY_MSG_APP_USE_VOLUME_KEY "db/private/org.tizen.message/use_volume_key"
 #define MSG_COMMON_EDJ         EDJDIR"/msg_common.edj"
 #define MSG_CUSTOM_WINSET_EDJ  EDJDIR"/msg_custom_winset.edj"
+#define MSG_IMAGES_EDJ         EDJDIR"/msg_images.edj"
+
 
 /*==================================================================================================
  ENUMERATIONS
@@ -53,19 +56,16 @@ typedef enum {
        MSG_APP_FONT_SIZE_LARGE = 64,
        MSG_APP_FONT_SIZE_HUGE = 81,
        MSG_APP_FONT_SIZE_GIANT = 106,
-
        MSG_APP_FONT_SIZE_MAX
 
 } MSG_APP_FONT_SIZE_E;
 
 typedef enum {
-       MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT,
-       MSG_APP_FONT_SIZE_INDEX_GIANT,
-       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_NORMAL,
+       MSG_APP_FONT_SIZE_INDEX_LARGE,
+       MSG_APP_FONT_SIZE_INDEX_HUGE,
+       MSG_APP_FONT_SIZE_INDEX_GIANT,
        MSG_APP_FONT_SIZE_INDEX_MAX
 
 } MSG_APP_FONT_SIZE_INDEX_E;
@@ -146,17 +146,15 @@ char *msg_common_get_date_text(const char *locale, char *skeleton, void *time);
 char *msg_common_get_display_date(const char *locale, char *bestPattern, char* yearPattern, time_t *msg_t);
 
 /*
- *@fn  msg_common_get_markup_text(const char *src, int fontsize, char *fontcolor, char *fontstyle);
+ *@fn  msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle);
  *@brief       This function is used to get marked up string from src text.
  *             Caller must free returned string by using eina_strbuf_free(), else memory will be leaked
  *@return      Eina_Strbuf* marked up string on success, else NULL pointer on failure
  *@param[in]   src     original text to be displayed
- *@param[in]   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);
-
+Eina_Strbuf *msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle);
 /*
  *@fn  msg_common_is_valid_phone_number(const char *address);
  *@brief       This function is used to check address is valid number or not
@@ -207,22 +205,65 @@ char *msg_common_get_formatted_date(const char *locale, char *bestPattern, 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.
+ *@fn  msg_common_get_font_size(int *index);
+ *@brief       This function is used to get the index of font size.
  *@param[in]   index   index of font size. It is used in message setting.
- *@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);
+MSG_BOOL msg_common_get_font_size(int *index);
 
 /*
- *@fn  msg_common_set_font_size(void);
- *@brief       This function is used to set the font size.
+ *@fn  msg_common_set_font_size(int index);
+ *@brief       This function is used to set the index of font size.
  *@return      return TRUE if vconf API is success, else FALSE
  */
 MSG_BOOL msg_common_set_font_size(int index);
 
 /*
+ *@fn  msg_common_increase_font_size(void);
+ *@brief       This function is used to set the increased index of font size.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_increase_font_size();
+
+/*
+ *@fn  msg_common_decrease_font_size(void);
+ *@brief       This function is used to set the decreased index of font size.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_decrease_font_size();
+
+/*
+ *@fn  msg_common_get_index_from_font_size(int font_size);
+ *@brief       This function is used to get index from font size.
+ *@return      return font size, else -1
+ */
+int msg_common_get_index_from_font_size(int font_size);
+
+/*
+ *@fn  msg_common_get_font_size_from_index(int index);
+ *@brief       This function is used to get font size from index.
+ *@return      return index of font size, else -1
+ */
+int msg_common_get_font_size_from_index(int index);
+
+/*
+ *@fn  msg_common_get_access_font_size(int *index);
+ *@brief       This function is used to get the index of accessibility font size.
+ *@param[in]   index   index of font size. It is used in message setting.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_get_access_font_size(int *index);
+
+/*
+ *@fn  msg_common_set_access_font_size(int index);
+ *@brief       This function is used to set the index of accessibility font size.
+ *@return      return TRUE if vconf API is success, else FALSE
+ */
+MSG_BOOL msg_common_set_access_font_size(int index);
+
+
+/*
  *@fn  msg_common_apply_font_size(void);
  *@brief       This function is used to change the font size.
  *@param[in]   widget_name     The widget name which font size is changed.
@@ -282,5 +323,8 @@ int msg_common_delete_block_number(msg_handle_t msgHandle, const char *address);
  */
 int msg_common_check_block_number(msg_handle_t msgHandle, const char *address, bool *result);
 
+char *msg_common_make_message_detail_text(msg_handle_t msgHandle, int msgId);
+
+
 #endif
 
index 08f0700..882e584 100755 (executable)
 #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"
+#define MSG_VIEWER_IMAGE_ATTACH_ICON                           "attach_icon.png"
+#define MSG_VIEWER_IMAGE_DRM_SMALL_ICON                        "M01_icon_DRM_64x64.png"
+#define MSG_VIEWER_IMAGE_SAVE_ICON                                     "M01_icon_save.png"
+#define MSG_VIEWER_IMAGE_UNSUPPORT_ICON                        "M01_icon_Unsupported.png"
+#define MSG_VIEWER_IMAGE_DRM_ICON                                      "M01_icon_DRM.png"
+#define MSG_VIEWER_IMAGE_ATTACH_LIST_ICON                                      "M01_title_icon_attach.png"
+#define MSG_VIEWER_IMAGE_ATTACH_LIST_DIM_ICON                  "M01_title_icon_attach_dim.png"
 
 /* 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_SMS_SEND_ICON                                     MSGC_UI_IMG_PATH"/M01_btn_message_send.png"
-#define MSGC_SMS_SEND_DIM_ICON                         MSGC_UI_IMG_PATH"/M01_btn_message_send_dim.png"
-#define MSGC_MMS_SEND_ICON                                     MSGC_UI_IMG_PATH"/M01_btn_mms_message_send.png"
-#define MSGC_MMS_SEND_DIM_ICON                         MSGC_UI_IMG_PATH"/M01_btn_mms_message_send_dim.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_IMG_INSERT_DEL_PRESS_ICON                 MSGC_UI_IMG_PATH"/M01_photo_btn_delete_press.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"
-
-#define MSGC_IMG_DEL_BTN_PRESS_ICON                    MSGC_UI_IMG_PATH"/M01_btn_delete_press.png"
-
-
-#define MSGC_IMG_CONTACT_BUTTON_ICON           MSGC_UI_IMG_PATH"/M01_button_contact.png"
+#define MSGC_IMG_ATTACHMENT_ICON                       "60_myfiles_file_etc.png"
+#define MSGC_IMG_ATTACHMENT_DEL_ICON           "M01_btn_delete.png"
+
+#define MSGC_SMS_SEND_ICON                                     "M01_btn_message_send.png"
+#define MSGC_SMS_SEND_DIM_ICON                         "M01_btn_message_send_dim.png"
+#define MSGC_MMS_SEND_ICON                                     "M01_btn_mms_message_send.png"
+#define MSGC_MMS_SEND_DIM_ICON                 "M01_btn_mms_message_send_dim.png"
+#define MSGC_IMG_INSERT_VOICE_ICON                     "M01_icon_attach_voice.png"
+#define MSGC_IMG_INSERT_ETC_ICON                       "60_myfiles_file_etc.png"
+#define MSGC_IMG_INSERT_DEL_ICON                       "M01_photo_btn_delete.png"
+#define MSGC_IMG_INSERT_DEL_PRESS_ICON         "M01_photo_btn_delete_press.png"
+#define MSGC_SOUND_INSERT_DEL_ICON                     "M01_btn_delete.png"
+#define MSGC_IMG_PAGE_DEL_ICON                         "M01_btn_delete.png"
+#define MSGC_IMG_SUBJECT_DEL_ICON                      "M01_btn_delete.png"
+
+#define MSGC_IMG_DEL_BTN_PRESS_ICON            "M01_btn_delete_press.png"
+#define MSGC_IMG_CONTACT_BUTTON_ICON           "M01_contact_default_image.png"
 
 /* thread list image resources */
-#define MSG_UI_THREAD_LIST_PATH                                IMGDIR
-
-#define MSG_UI_THREAD_LIST_SOS_ICON                    MSG_UI_THREAD_LIST_PATH"/M01_icon_SOS.png"
-#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"
+#define MSG_UI_THREAD_LIST_SOS_ICON                    "M01_icon_SOS.png"
+#define MSG_UI_THREAD_LIST_PUSH_ICON                   "M01_icon_Push.png"
+#define MSG_UI_THREAD_LIST_OTA_ICON                    "M01_icon_OTA.png"
+#define MSG_UI_THREAD_LIST_CB_ICON                             "M01_icon_broadcasting.png"
 
 /* thread list message status icon*/
-#define MSG_UI_THREAD_LIST_STATUS_MMS_READ             MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_mms_read_n.png"
-#define MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD           MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_mms_unread_n.png"
-#define MSG_UI_THREAD_LIST_STATUS_MMS_SENT             MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_mms_sent_n.png"
-#define MSG_UI_THREAD_LIST_STATUS_SMS_READ             MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_sms_read_n.png"
-#define MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD           MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_sms_unread_n.png"
-#define MSG_UI_THREAD_LIST_STATUS_SMS_SENT             MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_sms_sent_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_MMS_READ             "M01_icon_message_status_mms_read_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD           "M01_icon_message_status_mms_unread_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_MMS_SENT             "M01_icon_message_status_mms_sent_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_SMS_READ             "M01_icon_message_status_sms_read_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD           "M01_icon_message_status_sms_unread_n.png"
+#define MSG_UI_THREAD_LIST_STATUS_SMS_SENT             "M01_icon_message_status_sms_sent_n.png"
 
+#define MSG_UI_THREAD_LIST_TITLE_ICON_COMPOSE                  "M01_title_icon_compose.png"
+#define MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH                   "M01_title_icon_search.png"
+#define MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM               "M01_title_icon_search_dim.png"
 
 /* common image resources */
-#define MSG_COMMON_FILE_ETC_ICON                       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"
+#define MSG_COMMON_FILE_ETC_ICON                       "myfile_icon_etc.png"
+
+#define MSG_COMMON_FILE_IMAGE_ICON             "myfile_icon_images.png"
+#define MSG_COMMON_FILE_VIDEO_ICON             "myfile_icon_video.png"
+#define MSG_COMMON_FILE_MUSIC_ICON             "myfile_icon_music.png"
+#define MSG_COMMON_FILE_SOUND_ICON             "myfile_icon_music.png"
+#define MSG_COMMON_FILE_PDF_ICON                       "myfile_icon_pdf.png"
+#define MSG_COMMON_FILE_DOC_ICON                       "myfile_icon_word.png"
+#define MSG_COMMON_FILE_PPT_ICON                       "myfile_icon_ppt.png"
+#define MSG_COMMON_FILE_EXCEL_ICON             "myfile_icon_excel.png"
+#define MSG_COMMON_FILE_VOICE_ICON             "myfile_icon_music.png"
+#define MSG_COMMON_FILE_HTML_ICON                      "myfile_icon_html.png"
+#define MSG_COMMON_FILE_FLASH_ICON             "myfile_icon_swf.png"
+#define MSG_COMMON_FILE_TXT_ICON                       "myfile_icon_text.png"
+#define MSG_COMMON_FILE_VCONTACT_ICON  "myfile_icon_svg.png"
+#define MSG_COMMON_FILE_VCALENDAR_ICON "myfile_icon_svg.png"
+#define MSG_COMMON_FILE_VNOTE_ICON             "myfile_icon_text.png"
+#define MSG_COMMON_FILE_RSS_ICON                       "myfile_icon_rss.png"
+#define MSG_COMMON_FILE_JAVA_ICON                      "myfile_icon_java.png"
 
 
 #endif /*__MSG_UI_IMAGE_RESOURCE__*/
index ef80a88..4c52584 100755 (executable)
@@ -22,7 +22,6 @@
 #include <string.h>
 #include "dlog.h"
 #include <vconf.h>
-#include <heynoti.h>
 #include "msg-ui-bundle.h"
 
 #include <unicode/udat.h>
@@ -57,7 +56,7 @@
 
 #define DEF_PATH_MAX   (4096)
 #define DEF_IMG_PATH_LEN       (1024)
-#define DEF_MAX_MSG_TEXT_LEN   (1530)
+#define DEF_MAX_MSG_TEXT_LEN   (153*15)
 #define MSG_UI_URL_MAX_LEN      (1024)
 #define DEF_MAX_EMAIL_LEN      (255)
 #define DEF_MAX_FILTER_LEN     (40)
@@ -84,7 +83,7 @@ enum {
        LOG(LOG_DEBUG, TAG_MSG_UI, "\n[%s %s() #%d ]" fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__,  __LINE__, ##args);
 
 #define D_EMSG(fmt, args...)       \
-       LOG(LOG_DEBUG, TAG_MSG_UI, "\n[ERROR][%s %s() #%d ]" fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, ##args);
+       LOG(LOG_ERROR, TAG_MSG_UI, "\n[ERROR][%s %s() #%d ]" fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, ##args);
 
 #define D_ENTER\
        LOG(LOG_DEBUG, TAG_MSG_UI, "\n[ENTER][%s %s(%p) #%d ]>>>>>\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __FUNCTION__,  __LINE__);
@@ -161,15 +160,15 @@ enum {
 #define MSG_UI_NOTI_ALREADY_BLOCKED    "Already blocked for this address"
 
 /* Navigation icon*/
-#define MSG_HEADER_ICON_CANCEL                 IMGDIR"/01_header_icon_cancel.png"
-#define MSG_HEADER_ICON_DONE                   IMGDIR"/01_header_icon_done.png"
+#define MSG_HEADER_ICON_CANCEL                 "01_header_icon_cancel.png"
+#define MSG_HEADER_ICON_DONE                   "01_header_icon_done.png"
 
-#define MSG_TITLE_ICON_VOICECALL               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_TITLE_ICON_BLOCK                   IMGDIR"/M01_icon_block.png"
-#define MSG_TITLE_ICON_UNBLOCK                 IMGDIR"/M01_icon_unblock.png"
-#define MSG_CONTROLBAR_ICON_VIEW_CONTACT       IMGDIR"/M01_icon_view_contact.png"
+#define MSG_TITLE_ICON_VOICECALL                       "M01_icon_voice_call.png"
+#define MSG_TITLE_ICON_VIDEOCALL                       "M01_icon_video_call.png"
+#define MSG_TITLE_ICON_ADD_TO_CONTACT  "01_controllbar_icon_add_to_contact.png"
+#define MSG_TITLE_ICON_BLOCK                           "M01_icon_block.png"
+#define MSG_TITLE_ICON_UNBLOCK                         "M01_icon_unblock.png"
+#define MSG_CONTROLBAR_ICON_VIEW_CONTACT       "M01_icon_view_contact.png"
 
 /* Controlbar Icon */
 #define MSG_CONTROLBAR_IMG_PATH                IMGDIR"/controlbar/"
@@ -178,19 +177,19 @@ enum {
 #define MSG_CONTROLBAR_ICON_CANCEL             MSG_CONTROLBAR_IMG_PATH"01_controllbar_icon_close.png"
 #define MSG_CONTROLBAR_ICON_DELETE             MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_delete.png"
 #define MSG_CONTROLBAR_ICON_FORWARD            MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_forward.png"
-#define MSG_CONTROLBAR_ICON_MORE               MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_more.png"
+#define MSG_CONTROLBAR_ICON_MORE                       MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_more.png"
 #define MSG_CONTROLBAR_ICON_SETTINGS           MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_settings.png"
-#define MSG_CONTROLBAR_ICON_EDIT               MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_edit.png"
+#define MSG_CONTROLBAR_ICON_EDIT                       MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_edit.png"
 #define MSG_CONTROLBAR_ICON_MESSAGEBOX         MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_message_boxes.png"
-#define MSG_CONTROLBAR_ICON_PROTECTION_OFF             MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_protection_off.png"
+#define MSG_CONTROLBAR_ICON_PROTECTION_OFF     MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_protection_off.png"
 #define MSG_CONTROLBAR_ICON_CANCEL_MSG         MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_cancel_message.png"
 #define MSG_CONTROLBAR_ICON_COPY_PHONE         MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_copy_to_phone.png"
-#define MSG_CONTROLBAR_ICON_RESTORE            MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_restore.png"
+#define MSG_CONTROLBAR_ICON_RESTORE                    MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_restore.png"
 
 /* viewer */
-#define MSG_CONTROLBAR_ICON_PLAY               MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_Play.png"
+#define MSG_CONTROLBAR_ICON_PLAY                       MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_Play.png"
 #define MSG_CONTROLBAR_ICON_ATTACH             MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_attach.png"
-#define MSG_CONTROLBAR_ICON_REPLY              MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_reply.png"
+#define MSG_CONTROLBAR_ICON_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 */
index 0812a24..116ba09 100755 (executable)
@@ -51,8 +51,11 @@ static void main_quit_cb(void *data, Evas_Object *obj, void *event_info)
 static void lang_changed(void *data)
 {
        D_ENTER;
+       struct appdata *ad = data;
 
        ug_send_event(UG_EVENT_LANG_CHANGE);
+
+       msg_ui_thread_lang_changed(ad->thread_data);
 }
 
 static void low_battery_cb(void *data)
@@ -419,6 +422,27 @@ static service_h __get_service_app_svc_op(const char *operation, service_h servi
                }
 
                service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_COMPOSE);
+       } else if (g_strcmp0(operation, SERVICE_OPERATION_DEFAULT) == 0) {
+               char *key_type = NULL;
+
+               service_get_extra_data(service, MSG_BUNDLE_KEY_TYPE, &key_type);
+               if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_MSG_ID) == 0) {
+                       msg_error_t err = MSG_SUCCESS;
+                       msg_struct_t count_info = msg_create_struct(MSG_STRUCT_COUNT_INFO);
+                       int unread_cnt = 0;
+
+                       err = msg_count_message(gAppData->msgHandle, MSG_INBOX_ID, count_info);
+                       if (err != MSG_SUCCESS) {
+                               msg_release_struct(&count_info);
+                               return NULL;
+                       }
+
+                       msg_get_int_value(count_info, MSG_COUNT_INFO_UNREAD_INT, &unread_cnt);
+                       if (unread_cnt == 1)
+                               svc_handle = __get_service_with_msg_id(gAppData, service);
+
+                       msg_release_struct(&count_info);
+               }
        }
 
        D_LEAVE;
@@ -596,6 +620,7 @@ static Evas_Object* create_win(const char *name)
                evas_object_smart_callback_add(eo, "delete,request", win_del, NULL);
                ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
                evas_object_resize(eo, w, h);
+               elm_win_conformant_set(eo, EINA_TRUE);
        }
 
        D_LEAVE;
@@ -624,13 +649,13 @@ void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
        win = ug_get_window();
 
        switch (mode) {
-           case UG_MODE_FULLVIEW:
+               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:
+               default:
                        break;
        }
 
@@ -712,6 +737,7 @@ void result_cb(ui_gadget_h ug, service_h result, void *priv)
                        if (buf) {
                                update_id = atoi(buf);
                                msg_ui_thread_list_item_update(pListData, update_id);
+                               pListData->sel_thread_id = update_id;
                        }
                }
        }
@@ -739,24 +765,26 @@ void destroy_cb(ui_gadget_h ug, void *priv)
                PMSG_THREAD_LIST_DATA pListData = NULL;
 
                pListData = msg_ui_thread_get_current_list();
-
                if (pListData == NULL) {
                        elm_exit();
                        return;
                }
 
-               if (pData->isRotate == true) {
-                       if (!pData->split_data) {
-                               msg_ui_thread_create_split_data();
-                               msg_ui_thread_splitview_launch(pData, pData->split_data);
+               if (pData) {
+                       if (pData->isRotate == true) {
+                               if (!pData->split_data) {
+                                       msg_ui_thread_create_split_data();
+                                       msg_ui_thread_splitview_launch(pData, pData->split_data);
+                               }
+                               if (ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) {
+                                       msg_ui_thread_cancel_search_mode(pListData);
+                                       elm_win_lower(pData->win_main);
+                               }
+                       } else {
+                               elm_object_part_content_set(pData->panes, "left", pData->layout_main);
+                               elm_object_part_content_unset(pData->panes, "right");
+                               elm_panes_content_left_size_set(pData->panes, 1.0);
                        }
-
-                       if (ug_type == MSG_COMPOSER_UG_TYPE_VIEWER)
-                               elm_win_lower(pData->win_main);
-               } else {
-                       elm_object_part_content_set(pData->panes, "left", pData->layout_main);
-                       elm_object_part_content_unset(pData->panes, "right");
-                       elm_panes_content_left_size_set(pData->panes, 1.0);
                }
 
                if (pListData->sel_thread_id > 0)
@@ -789,13 +817,19 @@ int msg_ui_load_composer_ug(service_h svc_handle, MessageComposerUgType ug_type)
                        gAppData->ug_type = MSG_COMPOSER_UG_TYPE_NONE;
 
                        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 (ug_type == MSG_COMPOSER_UG_TYPE_COMPOSER)
+                               gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs);
+                       else
+                               gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FRAMEVIEW, svc_handle, &gAppData->cbs);
                } else {
                        ug_send_message(gAppData->composer_ug, svc_handle);
                }
        } else {
                service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL);
-               gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs);
+               if (ug_type == MSG_COMPOSER_UG_TYPE_COMPOSER)
+                       gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs);
+               else
+                       gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FRAMEVIEW, svc_handle, &gAppData->cbs);
        }
 
        if (!gAppData->composer_ug)
@@ -815,7 +849,6 @@ int msg_ui_load_composer_ug(service_h svc_handle, MessageComposerUgType ug_type)
                        evas_object_hide(pData->layout_main);
                }
        }
-
        D_LEAVE;
        return MSG_UI_RET_SUCCESS;
 }
@@ -882,6 +915,18 @@ static bool app_create(void *data)
 
        ad->win_main = win;
 
+       ad->bg = elm_bg_add(ad->win_main);
+       evas_object_size_hint_weight_set(ad->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(ad->win_main, ad->bg);
+
+       ad->conform = elm_conformant_add(win);
+       if (ad->conform == NULL)
+               return FALSE;
+
+       evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(win, ad->conform);
+       evas_object_show(ad->conform);
+
        err = sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE);
        if (err != SOUND_MANAGER_ERROR_NONE)
                D_MSG("sound_manager_set_session_type is failed, ret = [%d]", err);
@@ -1032,6 +1077,7 @@ static void app_service(service_h service, void *data)
        }
 
        if (isDefaultView) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "show DefaultView");
                if (ad->composer_ug) {
                        ug_destroy(ad->composer_ug);
                        ad->composer_ug = NULL;
@@ -1044,7 +1090,7 @@ static void app_service(service_h service, void *data)
                if (!ad->layout_main) {
                        ad->layout_main = msg_ui_thread_create_layout_main(ad->thread_data);
                        evas_object_size_hint_weight_set(ad->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-                       elm_win_resize_object_add(ad->win_main, ad->layout_main);
+                       elm_object_content_set(ad->conform, ad->layout_main);
 
                        msg_ui_thread_load_thread_view(ad->thread_data, service);
                } else {
@@ -1052,37 +1098,72 @@ static void app_service(service_h service, void *data)
                }
                __rotate(app_get_device_orientation(), ad);
        } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "show app-service view");
                /* If message app is called by app-service to display composer view,
                 * list view should be destroyed because previous screen should be displayed
                 * when user tap back button.
                 */
+                MessageComposerUgType ug_type = MSG_COMPOSER_UG_TYPE_NONE;
+
                if (operation != NULL) {
+                       int i = 0;
+                       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data;
+
                        if (g_strcmp0(operation, SERVICE_OPERATION_SEND) == 0 ||
                                g_strcmp0(operation, SERVICE_OPERATION_SEND_TEXT) == 0) {
                                if (ad->layout_main) {
+                                       /* content unset composer */
+                                       if (ad->ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) {
+                                               if (pData)
+                                                       elm_object_part_content_unset(pData->panes, "right");
+                                       }
+
+                                       if (pData) {
+                                               for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+                                                       if (pData->list_data[i] != NULL) {
+                                                               msg_ui_thread_destroy_thread_list_data(pData->list_data[i]);
+                                                       }
+                                               }
+                                       }
                                        evas_object_del(ad->layout_main);
                                        ad->layout_main = NULL;
                                }
+                               ug_type = MSG_COMPOSER_UG_TYPE_COMPOSER;
+                       } else if (g_strcmp0(operation, SERVICE_OPERATION_DEFAULT) == 0) {
+                               char *key_type = NULL;
+
+                               service_get_extra_data(service, MSG_BUNDLE_KEY_TYPE, &key_type);
+                               if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_MSG_ID) == 0) {
+                                       if (ad->layout_main) {
+                                               /* content unset composer */
+                                               if (ad->ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) {
+                                                       if (pData)
+                                                               elm_object_part_content_unset(pData->panes, "right");
+                                               }
+
+                                               if (pData) {
+                                                       for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+                                                               if (pData->list_data[i] != NULL) {
+                                                                       msg_ui_thread_destroy_thread_list_data(pData->list_data[i]);
+                                                               }
+                                                       }
+                                               }
+                                               evas_object_del(ad->layout_main);
+                                               ad->layout_main = NULL;
+                                       }
+                                       ug_type = MSG_COMPOSER_UG_TYPE_VIEWER;
+                               }
                        }
                }
 
-               if (!ad->composer_ug)
-                       ad->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &ad->cbs);
-               else
-                       ug_send_message(ad->composer_ug, svc_handle);
-
-               PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data;
-               char *thread_id_s = NULL;
-
-               service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, &thread_id_s);
-
-               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 (ad->composer_ug) {
+                       ug_destroy(ad->composer_ug);
+                       ad->composer_ug = NULL;
+                       ad->ug_type = MSG_COMPOSER_UG_TYPE_NONE;
                }
+
+               ad->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &ad->cbs);
+               ad->ug_type = ug_type;
        }
 
        if (svc_handle)
index 1be1e32..65b8fc4 100755 (executable)
@@ -46,6 +46,8 @@ typedef enum {
 struct appdata
 {
        Evas_Object *win_main;
+       Evas_Object *conform;
+       Evas_Object *bg;
        Evas_Object *layout_main;
 
        struct ug_cbs cbs;
index e9bf14d..6f22854 100755 (executable)
@@ -11,6 +11,7 @@ Requires: pkgmgr
 BuildRequires:  pkgconfig(appsvc)
 BuildRequires:  pkgconfig(bundle)
 BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(capi-appfw-app-manager)
 BuildRequires:  pkgconfig(capi-media-metadata-extractor)
 BuildRequires:  pkgconfig(capi-media-sound-manager)
 BuildRequires:  pkgconfig(capi-system-info)
@@ -18,7 +19,8 @@ BuildRequires:  pkgconfig(capi-system-system-settings)
 BuildRequires:  pkgconfig(capi-media-metadata-extractor)
 BuildRequires:  pkgconfig(capi-media-image-util)
 BuildRequires:  pkgconfig(capi-media-player)
-BuildRequires:  pkgconfig(contacts-service)
+BuildRequires: pkgconfig(capi-content-media-content)
+BuildRequires:  pkgconfig(contacts-service2)
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(drm-client)
 BuildRequires:  pkgconfig(elementary)
@@ -27,16 +29,20 @@ BuildRequires:  pkgconfig(ecore-x)
 BuildRequires:  pkgconfig(ecore-input)
 BuildRequires:  pkgconfig(ecore-imf)
 BuildRequires:  pkgconfig(ecore-file)
+BuildRequires:  pkgconfig(ecore-evas)
 BuildRequires:  pkgconfig(eina)
+BuildRequires:  pkgconfig(evas)
 BuildRequires:  pkgconfig(glib-2.0)
 BuildRequires:  pkgconfig(heynoti)
 BuildRequires:  pkgconfig(icu-i18n)
+BuildRequires:  pkgconfig(libexif)
 BuildRequires:  pkgconfig(msg-service)
 BuildRequires:  pkgconfig(mm-common)
 BuildRequires:  pkgconfig(mm-player)
 BuildRequires:  pkgconfig(mm-session)
 BuildRequires:  pkgconfig(syspopup-caller)
 BuildRequires:  pkgconfig(status)
+BuildRequires:  pkgconfig(tapi)
 BuildRequires:  pkgconfig(ui-gadget-1)
 BuildRequires:  pkgconfig(utilX)
 BuildRequires:  pkgconfig(libexif)
index c9dd10f..02f792a 100755 (executable)
 #include <ui-gadget-module.h>
 #include <utilX.h>
 #include <time.h>
-#include <contacts-svc.h>
+#include <contacts.h>
 
 #include "message.h"
 #include "msg-ui-util.h"
+#include "msg-ui-image-resource.h"
 #include "msg-ui-common-utility.h"
 
 #define MSG_THREAD_THEME       EDJDIR"/thread_genlist.edj"
-#define MSG_THREAD_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
@@ -109,6 +109,7 @@ typedef struct _MSG_THREAD_DATA {
 
        Elm_Theme *th;
        Evas_Object *win_main;
+       Evas_Object *conform;
        Evas_Object *panes;
        Evas_Object *layout_main;
        Evas_Object *navi_frame;
@@ -128,7 +129,6 @@ typedef struct _MSG_THREAD_DATA {
        char *date_ptn_year;
        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. */
@@ -140,13 +140,12 @@ typedef struct _MSG_THREAD_DATA {
 typedef struct _MSG_THREAD_LIST_DATA {
 
        Evas_Object *genlist;
-       Evas_Object *conform;
        Evas_Object *content_ly;
        Evas_Object *noc_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 *toolbar_btn[CONTROLBAR_ITEM_MAX];
        Evas_Object *back_btn;
+       Evas_Object *search_btn;
        Evas_Object *searchbar;
        Ecore_Timer *search_timer;
 
@@ -266,7 +265,6 @@ void msg_ui_thread_reset_thread_view(void *data, service_h service);
 
 void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA pListData);
 void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DATA pSplitData);
-void msg_ui_thread_splitview_set_title(PMSG_THREAD_SPLIT_DATA pSplitData);
 Evas_Object *msg_ui_thread_create_content_layout(Evas_Object *parent);
 Evas_Object *msg_ui_thread_create_nocontent_layout(Evas_Object *parent);
 Evas_Object *msg_ui_thread_create_layout_main(PMSG_THREAD_DATA pData);
@@ -274,10 +272,12 @@ Evas_Object *msg_ui_thread_create_genlist(Evas_Object *parent, PMSG_THREAD_LIST_
 Evas_Object *msg_ui_thread_create_searchbar_layout(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData);
 
 void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData);
-Evas_Object *msg_ui_thread_create_toolbar(Evas_Object *parent);
-void msg_ui_thread_set_navi_controlbar_item(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_set_navi_toolbar_item(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_show_toolbar(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_hide_toolbar(PMSG_THREAD_LIST_DATA pListData, bool bDeleteBtn);
 void msg_ui_thread_rotation_set(void *data, int rot);
 bool msg_ui_thread_rotation_get(void);
+void msg_ui_thread_lang_changed(void *data);
 void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData);
 void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData);
 
@@ -297,13 +297,13 @@ 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);
+Eina_Bool msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id);
 void msg_ui_thread_list_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id);
 
 void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType);
 void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData);
 void msg_ui_thread_list_msg_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id);
-void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id);
+Eina_Bool msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id);
 Eina_Bool  msg_ui_thread_search_msg_list_load(void *data);
 
 void msg_ui_thread_common_style_set(PMSG_THREAD_DATA pData);
@@ -317,12 +317,12 @@ void msg_ui_thread_multi_action_thread_feedback_fn(void *data, Ecore_Thread *thr
 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);
 void msg_ui_thread_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_thread_search_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
 void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
 void msg_ui_thread_searchbar_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
 void msg_ui_thread_searchbar_entry_change_cb(void *data, Evas_Object *obj, void *event_info);
@@ -330,7 +330,7 @@ void msg_ui_thread_searchbar_entry_click_cb(void *data, Evas_Object *obj, void *
 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_timezone_change_cb(keynode_t *key, void *data);
 void msg_ui_thread_gl_mode_right(void *data, Evas_Object *obj, void *event_info);
 void msg_ui_thread_gl_mode_left(void *data, Evas_Object *obj, void *event_info);
 
@@ -360,6 +360,9 @@ void msg_ui_thread_addr_select_popup(PMSG_THREAD_LIST_DATA pListData, const char
 
 void msg_ui_thread_set_app_state(int app_state);
 int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData);
+void msg_ui_thread_cancel_search_mode(PMSG_THREAD_LIST_DATA pListData);
+void msg_ui_thread_button_disabled_set(PMSG_THREAD_LIST_DATA pListData, Eina_Bool disabled, int controlbar_btn);
+void msg_ui_thread_get_title_text(PMSG_THREAD_LIST_DATA pListData, char *label, int label_len);
 
 const char *msg_ui_thread_make_search_result_string(const char *string, char *searchword, bool *result);
 void msg_ui_thread_make_time_string(time_t *msg_t, char *buf, int buf_len);
index f332268..121d6e7 100755 (executable)
@@ -71,6 +71,41 @@ void msg_ui_thread_storage_change_cb(msg_handle_t handle, msg_storage_change_typ
                                        for (idx = 0; idx < pMsgIdList->nCount; idx++) {
                                                msg_ui_thread_list_msg_item_delete(pListData, pMsgIdList->msgIdList[idx]);
                                        }
+                               } else {
+                                       Elm_Object_Item *gen_item = NULL;
+                                       PMSG_APP_THREAD_DATA_S item_data = NULL;
+                                       msg_struct_t threadInfo = msg_create_struct(MSG_STRUCT_THREAD_INFO);
+                                       int smsCnt = 0;
+                                       int mmsCnt = 0;
+                                       msg_error_t err =  MSG_SUCCESS;
+
+                                       gen_item = elm_genlist_first_item_get(pListData->genlist);
+                                       while (gen_item) {
+                                               if (elm_genlist_item_parent_get(gen_item) == NULL) {
+                                                       gen_item = elm_genlist_item_next_get(gen_item);
+                                                       continue;
+                                               }
+
+                                               item_data = (PMSG_APP_THREAD_DATA_S) elm_object_item_data_get(gen_item);
+
+                                               err = msg_get_thread(msg_ui_thread_get_data_handle(), item_data->thread_id, threadInfo);
+                                               if (err != MSG_SUCCESS) {
+                                                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_thread() is failed : err = %d", err);
+                                                       msg_ui_thread_list_item_delete(pListData, item_data->thread_id);
+                                                       break;
+                                               }
+
+                                               msg_get_int_value(threadInfo, MSG_THREAD_MMS_COUNT_INT, &mmsCnt);
+                                               msg_get_int_value(threadInfo, MSG_THREAD_SMS_COUNT_INT, &smsCnt);
+
+                                               if (smsCnt+mmsCnt == 0)
+                                                       msg_ui_thread_list_item_delete(pListData, item_data->thread_id);
+                                               else if ((item_data->sms_cnt + item_data->mms_cnt) != (smsCnt+mmsCnt))
+                                                       msg_ui_thread_list_item_update(pListData, item_data->thread_id);
+
+                                               gen_item = elm_genlist_item_next_get(gen_item);
+                                       }
+                                       msg_release_struct(&threadInfo);
                                }
                        } else if (type == MSG_STORAGE_CHANGE_UPDATE) {
                                int idx = 0;
@@ -96,9 +131,11 @@ void msg_ui_thread_storage_change_cb(msg_handle_t handle, msg_storage_change_typ
                                                msg_release_struct(&msgInfo);
                                                msg_release_struct(&sendOpt);
 
-                                               msg_ui_thread_list_item_update(pListData, thread_id);
+                                               if (msg_ui_thread_list_item_update(pListData, thread_id) == EINA_FALSE)
+                                                       __msg_ui_thread_insert_and_select_gen_item(pListData);
                                        } else {
-                                               msg_ui_thread_list_msg_item_update(pListData, pMsgIdList->msgIdList[idx]);
+                                               if (msg_ui_thread_list_msg_item_update(pListData, pMsgIdList->msgIdList[idx]) == EINA_FALSE)
+                                                       __msg_ui_thread_insert_and_select_gen_item(pListData);
                                        }
                                }
                        }
@@ -139,12 +176,9 @@ static void __msg_ui_thread_insert_and_select_gen_item(PMSG_THREAD_LIST_DATA pLi
 void msg_ui_thread_ctlbar_multi_action_cb(void *data, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
-
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
 
        PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
-       const char *label = elm_object_item_text_get((Elm_Object_Item *)event_info);
-
        MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, pListData->multi_action_thread);
 
        if (pListData->popup) {
@@ -152,14 +186,16 @@ void msg_ui_thread_ctlbar_multi_action_cb(void *data, Evas_Object *obj, void *ev
                pListData->popup = NULL;
        }
 
-       if (strcmp(label, dgettext("sys_string", "IDS_COM_SK_DELETE")) == 0) {
+       if (obj == pListData->toolbar_btn[CONTROLBAR_ITEM_1]) {
                pListData->action_type = THREAD_ACTION_DELETE;
                msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_DELETE, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q"));
-       } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE")) == 0) {
-               pListData->action_type = THREAD_ACTION_RESTORE;
-               msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_RESTORE, dgettext(MESSAGE_PKGNAME, "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"));
-       } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE")) == 0) {
-               pListData->action_type = THREAD_ACTION_COPY_TO_PHONE;
+       } else if (obj == pListData->toolbar_btn[CONTROLBAR_ITEM_2]) {
+               if (pListData->list_type == THREAD_SPAM_LIST_TYPE) {
+                       pListData->action_type = THREAD_ACTION_RESTORE;
+                       msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_RESTORE, dgettext(MESSAGE_PKGNAME, "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED"));
+               } else if (pListData->list_type == THREAD_SIM_LIST_TYPE) {
+                       pListData->action_type = THREAD_ACTION_COPY_TO_PHONE;
+               }
        }
 
        if (pListData->popup == NULL) {
@@ -343,14 +379,12 @@ void msg_ui_thread_ctlbar_checkbox_cb(void *data, Evas_Object *obj, void *event_
        pListData->check_cnt = 0;
        pListData->sel_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;
+       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);
@@ -367,23 +401,24 @@ void msg_ui_thread_ctlbar_checkbox_cb(void *data, Evas_Object *obj, void *event_
 
        elm_object_item_text_set(pListData->nf_it, buf);
 
-       msg_ui_thread_set_navi_controlbar_item(pListData);
        __msg_ui_thread_add_navi_select_all_ly(pListData);
+       msg_ui_thread_set_navi_toolbar_item(pListData);
+
+       evas_object_hide(pListData->search_btn);
+       elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
 
        MSG_UI_LEAVE();
 }
 
 static void __msg_ui_thread_add_navi_select_all_ly(PMSG_THREAD_LIST_DATA pListData)
 {
-       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
-
        if (!pListData) {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT,"[ASSERT] pListData is NULL");
                return;
        }
 
        if (!pListData->sel_all_ly) {
-               pListData->sel_all_ly = elm_layout_add(pData->navi_frame);
+               pListData->sel_all_ly = elm_layout_add(pListData->content_ly);
                elm_layout_theme_set(pListData->sel_all_ly, "genlist", "item", "select_all/default");
                evas_object_size_hint_weight_set(pListData->sel_all_ly, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
                evas_object_size_hint_align_set(pListData->sel_all_ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -399,9 +434,13 @@ static void __msg_ui_thread_add_navi_select_all_ly(PMSG_THREAD_LIST_DATA pListDa
                elm_object_part_text_set(pListData->sel_all_ly, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
        }
 
+       if (msg_ui_thread_rotation_get() == true) {
+               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+               evas_object_hide(pListData->searchbar);
+       } else {
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+       }
        evas_object_show(pListData->sel_all_ly);
-       elm_object_part_content_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);
 }
 
@@ -487,16 +526,20 @@ void msg_ui_thread_ctlbar_message_box_cb(void *data, Evas_Object *obj, void *eve
        ctx_popup = elm_ctxpopup_add(pData->navi_frame);
        evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_thread_ctxpopup_dismissed_cb, pListData);
 
+       if (pListData->item_cnt > 0)
+               elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_SK_DELETE"), NULL, msg_ui_thread_ctlbar_checkbox_cb, pListData);
+
+
        elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData);
        elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData);
        elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData);
 
        // move ctx popup
        Evas_Coord x, y, w, h;
-       evas_object_geometry_get(pListData->toolbar, &x, &y, &w, &h);
-       evas_object_move(ctx_popup, ((w-x)*5)/6 , y);
-       evas_object_show(ctx_popup);
+       evas_object_geometry_get(obj, &x, &y, &w, &h);
+       evas_object_move(ctx_popup, x , y);
 
+       evas_object_show(ctx_popup);
        pListData->popup = ctx_popup;
 
        MSG_UI_LEAVE();
@@ -544,26 +587,6 @@ static void __msg_ui_thread_ctxpopup_clicked_cb(void *data, Evas_Object *obj, vo
        MSG_UI_LEAVE();
 }
 
-void msg_ui_thread_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       MSG_UI_ENTER();
-       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj);
-
-       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
-       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
-
-       if (pData->isIncomingMsg == true) {
-               if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG)
-                       msg_ui_thread_msg_list_load(pListData, pListData->list_type);
-               else
-                       msg_ui_thread_list_load(pListData, FALSE);
-               pData->isIncomingMsg = false;
-       }
-
-       msg_ui_thread_show_normal_mode(pListData);
-       MSG_UI_LEAVE();
-}
-
 void msg_ui_thread_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER();
@@ -675,26 +698,67 @@ void msg_ui_thread_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event
                        return;
        }
 
-       if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
-               elm_win_lower(pData->win_main);
+       if (pListData->search_mode == THREAD_SEARCH_ON) {
+               msg_ui_thread_cancel_search_mode(pListData);
+               return;
+       }
+
+       if (pListData->view_mode == THREAD_EDIT_VIEW) {
+               if (pData->isIncomingMsg == true) {
+                       if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG)
+                               msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+                       else
+                               msg_ui_thread_list_load(pListData, FALSE);
+                       pData->isIncomingMsg = false;
+               }
+
+               msg_ui_thread_show_normal_mode(pListData);
        } else {
-               PMSG_THREAD_LIST_DATA pPrevList = msg_ui_thread_get_prev_list(pListData);
-               msg_ui_thread_set_navi_controlbar_item(pPrevList);
+               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
+                       elm_win_lower(pData->win_main);
+               } else {
+                       PMSG_THREAD_LIST_DATA pPrevList = msg_ui_thread_get_prev_list(pListData);
+                       msg_ui_thread_set_navi_toolbar_item(pPrevList);
 
-               evas_object_del(pListData->toolbar);
-               elm_naviframe_item_pop(pData->navi_frame);
-               elm_genlist_clear(pListData->genlist);
-               msg_ui_thread_destroy_thread_list_data(pListData);
+                       elm_naviframe_item_pop(pData->navi_frame);
+                       elm_genlist_clear(pListData->genlist);
+                       msg_ui_thread_destroy_thread_list_data(pListData);
 
-               if (pData->isRotate == true) {
-                       msg_ui_thread_destroy_split_data(pData->split_data);
-                       msg_ui_thread_split_view_show(pData);
+                       if (pData->isRotate == true) {
+                               msg_ui_thread_destroy_split_data(pData->split_data);
+                               msg_ui_thread_split_view_show(pData);
+                       }
                }
        }
 
        MSG_UI_LEAVE();
 }
 
+void msg_ui_thread_search_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER();
+
+       if (!data)
+               return;
+
+       PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
+       Evas_Object *entry = NULL;
+
+       if (pListData->item_cnt <= 0)
+               return;
+
+       edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+       elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+
+       entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
+       elm_object_focus_set(entry, EINA_TRUE);
+
+       evas_object_hide(pListData->search_btn);
+       elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
+
+       MSG_UI_LEAVE();
+}
+
 void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
 {
        D_ENTER;
@@ -721,6 +785,7 @@ void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *
 
        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;
 }
 
@@ -736,12 +801,13 @@ void msg_ui_thread_searchbar_entry_unfocus_cb(void *data, Evas_Object *obj, void
        PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
 
        elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,hide", "elm");
+       msg_ui_thread_set_navi_toolbar_item(pListData);
 
        if (elm_entry_is_empty(obj)) {
                elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm");
-               pListData->search_mode = THREAD_SEARCH_OFF;
                elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
        }
+
        D_LEAVE;
 }
 
@@ -795,9 +861,6 @@ void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void
        PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data;
        Evas_Object *entry = NULL;
 
-       pListData->search_mode = THREAD_SEARCH_OFF;
-       elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
-
        if (pListData->search_timer) {
                ecore_timer_del(pListData->search_timer);
                pListData->search_timer = NULL;
@@ -805,9 +868,13 @@ void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void
 
        entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
        elm_object_text_set(entry, "");
-
+       elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm");
        evas_object_hide(obj);
        elm_object_signal_emit(pListData->searchbar, "cancel,out", "");
+       elm_object_focus_set(entry, EINA_FALSE);
+
+       pListData->search_mode = THREAD_SEARCH_OFF;
+       elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
 
        if (pListData->list_type== THREAD_NORMAL_LIST_TYPE)
                msg_ui_thread_list_load(pListData, FALSE);
@@ -815,10 +882,14 @@ void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void
                msg_ui_thread_msg_list_load(pListData, pListData->list_type);
 
        if (msg_ui_thread_rotation_get() == false) {
-               elm_object_focus_set(pListData->back_btn, EINA_TRUE);
-               elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", "");
-       } else {
-               elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,close", "");
+               evas_object_show(pListData->search_btn);
+               elm_object_item_part_content_set(pListData->nf_it, "title_right_btn", pListData->search_btn);
+
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+               evas_object_hide(pListData->searchbar);
+
+               msg_ui_thread_show_toolbar(pListData);
        }
 
        D_LEAVE;
@@ -964,7 +1035,7 @@ 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_timezone_change_cb(keynode_t *key, void *data)
 {
        D_ENTER;
 
index fa3918f..333d54e 100755 (executable)
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-#include "msg-ui-image-resource.h"
 #include "msg-ui-thread-main.h"
 
 static int __msg_ui_thread_init_genlist(PMSG_THREAD_LIST_DATA pListData);
@@ -266,13 +265,13 @@ static Evas_Object *__msg_ui_thread_gl_content_get(void *data, Evas_Object *obj,
        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);
+                       elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_CB_ICON);
                } else if (item_data->msg_type == MSG_TYPE_SMS_WAPPUSH) {
                        ic = elm_icon_add(obj);
-                       elm_icon_file_set(ic, MSG_UI_THREAD_LIST_PUSH_ICON, NULL);
+                       elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_PUSH_ICON);
                } else if (item_data->msg_type == MSG_TYPE_SMS_SYNCML) {
                        ic = elm_icon_add(obj);
-                       elm_icon_file_set(ic, MSG_UI_THREAD_LIST_OTA_ICON, NULL);
+                       elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_OTA_ICON);
                }
 
                if (ic) {
@@ -368,6 +367,9 @@ static void __msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_inf
                elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
        }
 
+       if (pListData->search_mode == THREAD_SEARCH_ON)
+               msg_ui_thread_show_toolbar(pListData);
+
        switch (pListData->view_mode) {
                case THREAD_NORMAL_VIEW:
                case THREAD_UNLOAD_VIEW:
@@ -393,9 +395,13 @@ static void __msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_inf
 
                                msg_release_list_struct(&draft_list);
 
-                               if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR)
+                               if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR) {
                                        D_MSG("Failed to load composer ug");
 
+                                       pListData->sel_gen_item = NULL;
+                                       pListData->sel_thread_id = 0;
+                               }
+
                                service_destroy(svc_handle);
                        }
 
@@ -498,10 +504,13 @@ char *msg_ui_thread_search_msg_gl_text_get(void *data, Evas_Object *obj, const c
                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);
+                       if (search_str) {
+                               if (strlen(search_str) > 0) {
+                                       const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result);
+                                       free(search_str);
+                                       return strdup(str);
+                               }
                                free(search_str);
-                               return strdup(str);
                        }
                }
        } else if (g_strcmp0(part, "elm.text.2") == 0) {
@@ -522,10 +531,13 @@ char *msg_ui_thread_search_msg_gl_text_get(void *data, Evas_Object *obj, const c
 
                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);
+               if (search_str) {
+                       if (strlen(search_str) > 0) {
+                               const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result);
+                               free(search_str);
+                               return strdup(str);
+                       }
                        free(search_str);
-                       return strdup(str);
                }
        } else if (g_strcmp0(part, "elm.text.3") == 0) {
                msg_ui_thread_make_time_string(item_data->msg_time, buf, sizeof(buf));
@@ -544,27 +556,26 @@ Evas_Object *msg_ui_thread_msg_gl_content_get(void *data, Evas_Object *obj, cons
        MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !item_data, NULL);
 
        Evas_Object *ic = NULL;
-       bool bNumExist = false;
 
-       if (g_strcmp0(part, "elm.icon.2") == 0) {
+       if (g_strcmp0(part, "elm.icon") == 0) {
                if (item_data->msg_type >= MSG_TYPE_MMS && item_data->msg_type <= MSG_TYPE_MMS_NOTI) {
                        ic = elm_icon_add(obj);
 
                        if (item_data->direction == MSG_DIRECTION_TYPE_MO)
-                               elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_MMS_SENT, NULL);
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_SENT);
                        else if (item_data->is_read == 0)
-                               elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD, NULL);
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD);
                        else
-                               elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_MMS_READ, NULL);
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_READ);
                } else {
                        ic = elm_icon_add(obj);
 
                        if (item_data->direction == MSG_DIRECTION_TYPE_MO)
-                               elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_SMS_SENT, NULL);
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_SENT);
                        else if (item_data->is_read == 0)
-                               elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD, NULL);
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD);
                        else
-                               elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_SMS_READ, NULL);
+                               elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_READ);
                }
 
                if (ic) {
@@ -661,6 +672,9 @@ void msg_ui_thread_msg_gl_sel(void *data, Evas_Object *obj, void *event_info)
                elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
        }
 
+       if (pListData->search_mode == THREAD_SEARCH_ON)
+               msg_ui_thread_show_toolbar(pListData);
+
        switch (pListData->view_mode) {
                case THREAD_NORMAL_VIEW:
                case THREAD_UNLOAD_VIEW:
@@ -690,10 +704,10 @@ void msg_ui_thread_msg_gl_sel(void *data, Evas_Object *obj, void *event_info)
                                /** update read status */
                                msg_update_read_status(msg_ui_thread_get_data_handle(), item_data->msg_id, true);
                        } else {
-                               __msg_ui_thread_create_bubble_by_msgid(pListData, item_data);
-
                                pListData->sel_gen_item = item;
                                pListData->sel_msg_id = item_data->msg_id;
+
+                               __msg_ui_thread_create_bubble_by_msgid(pListData, item_data);
                        }
 
                        item_data->is_read = true;
@@ -753,9 +767,13 @@ void __msg_ui_thread_create_bubble_by_msgid(PMSG_THREAD_LIST_DATA pListData, PMS
                msg_ui_thread_get_bubble_data(thread_data, svc_handle);
                ug_type = MSG_COMPOSER_UG_TYPE_VIEWER;
 
-               if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR)
+               if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR) {
                        D_MSG("Failed to load composer ug");
 
+                       pListData->sel_gen_item = NULL;
+                       pListData->sel_msg_id = 0;
+               }
+
                service_destroy(svc_handle);
        }
 
@@ -808,7 +826,7 @@ char *msg_ui_thread_date_gl_text_get(void *data, Evas_Object *obj, const char *p
                date_str = msg_common_get_display_date(pData->locale, pData->date_ptn_default, pData->date_ptn_year, item_data->thread_time);
 
                if (date_str) {
-                       snprintf(buf, sizeof(buf), " %s ", date_str);
+                       snprintf(buf, sizeof(buf), "%s", date_str);
                        free(date_str);
                }
                return strdup(buf);
@@ -857,9 +875,9 @@ PMSG_APP_THREAD_DATELINE_DATA_S msg_ui_thread_list_insert_dateline(PMSG_THREAD_L
        }
 
        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));
+               dateline_data = (PMSG_APP_THREAD_DATELINE_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATELINE_DATA_S));
                MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !dateline_data, NULL);
-               bzero(dateline_data, sizeof(dateline_data));
+               bzero(dateline_data, sizeof(MSG_APP_THREAD_DATELINE_DATA_S));
 
                dateline_data->thread_time = (time_t *) calloc(1, sizeof(time_t));
                bzero(dateline_data->thread_time, sizeof(time_t));
@@ -914,8 +932,7 @@ void msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch)
                        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);
-
+               msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2);
        } else {
                if (swl_ly != pListData->genlist) {
                        evas_object_hide(swl_ly);
@@ -923,7 +940,7 @@ void msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch)
                        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);
+               msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2);
 
                PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL;
                PMSG_APP_THREAD_DATA_S cur_thread = NULL;
@@ -956,7 +973,8 @@ void msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch)
                        if (tmp_date_line != NULL)
                                dateline_data = tmp_date_line;
 
-                       item = dateline_data->date_it;
+                       if (dateline_data != NULL)
+                               item = dateline_data->date_it;
 
                        if (cur_thread->unread_cnt > 0)
                                elm_genlist_item_append(pListData->genlist, &pListData->itc_unread, cur_thread, item, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_gl_sel, pListData);
@@ -1004,7 +1022,7 @@ void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData)
        pListData->item_cnt = peerList.nCount;
 
        if (peerList.nCount <= 0 || err != MSG_SUCCESS) {
-               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+               msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2);
 
                if (!pListData->noc_ly)
                        pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
@@ -1016,14 +1034,14 @@ void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData)
                }
 
        } else {
+               msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2);
+
                if (swl_ly != pListData->genlist) {
                        evas_object_hide(swl_ly);
                        elm_object_part_content_unset(pListData->content_ly, "thread_list");
                        elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
                }
 
-               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) {
@@ -1050,7 +1068,7 @@ void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id)
+Eina_Bool msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id)
 {
        MSG_UI_ENTER();
 
@@ -1067,7 +1085,7 @@ void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_
 
        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);
+       MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE);
 
        gen_item = elm_genlist_first_item_get(pListData->genlist);
 
@@ -1088,7 +1106,12 @@ void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_
        if (!gen_item) {
                D_EMSG("gen_item is NULL");
                msg_release_list_struct(&peerList);
-               return;
+               return EINA_FALSE;
+       }
+
+       if (!old_data) {
+               D_EMSG("old_data is NULL");
+               return EINA_FALSE;
        }
 
        for (row = 0; row < peerList.nCount; row++) {
@@ -1108,20 +1131,17 @@ void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_
 
        if (!new_data) {
                D_EMSG("new_data is NULL");
-               return;
+               return EINA_FALSE;
        }
 
-       if (*new_data->thread_time != *old_data->thread_time){
+       if (new_data->thread_time && (*new_data->thread_time != *old_data->thread_time)){
                msg_ui_thread_list_load(pListData, FALSE);
                msg_ui_thread_select_item_by_thread_id(pListData, thread_id);
 
-               if (new_data) {
-                       if (new_data->thread_time) {
-                               free(new_data->thread_time);
-                               new_data->thread_time = NULL;
-                       }
-                       free(new_data);
-               }
+               free(new_data->thread_time);
+               new_data->thread_time = NULL;
+
+               free(new_data);
        } else {
                new_data->chk = old_data->chk;
                new_data->is_check = old_data->is_check;
@@ -1141,16 +1161,15 @@ void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_
                        }
                }
 
-               if (old_data) {
-                       if (old_data->thread_time) {
-                               free(old_data->thread_time);
-                               old_data->thread_time = NULL;
-                       }
-                       free(old_data);
+               if (old_data->thread_time) {
+                       free(old_data->thread_time);
+                       old_data->thread_time = NULL;
                }
+               free(old_data);
        }
 
        MSG_UI_LEAVE();
+       return EINA_TRUE;
 }
 
 void msg_ui_thread_list_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id)
@@ -1245,7 +1264,8 @@ void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType)
        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);
+               msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1);
+
                // show non cotent
                if (!pListData->noc_ly)
                        pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
@@ -1257,7 +1277,7 @@ void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType)
                }
        } else {
                // fill the genlist
-               elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_FALSE);
+               msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_1);
 
                pListData->app_data_type = THREAD_LIST_APP_DATA_MSG;
                msg_ui_thread_genlist_style_set(pListData);
@@ -1288,7 +1308,8 @@ void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType)
                        if (tmp_date_line != NULL)
                                dateline_data = tmp_date_line;
 
-                       item = dateline_data->date_it;
+                       if (dateline_data != NULL)
+                               item = dateline_data->date_it;
                        elm_genlist_item_append(pListData->genlist, &pListData->itc_default, cur_item, item, ELM_GENLIST_ITEM_NONE, msg_ui_thread_msg_gl_sel, (void *)pListData);
 
                        if (dateline_data != NULL)
@@ -1298,11 +1319,14 @@ void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType)
                }
 
                if (pListData->item_cnt == 0) {
-                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+                       msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1);
+
                        // show non cotent
                        if (!pListData->noc_ly)
                                pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
 
+                       Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list");
+
                        if (swl_ly != pListData->noc_ly) {
                                evas_object_hide(swl_ly);
                                elm_object_part_content_unset(pListData->content_ly, "thread_list");
@@ -1346,11 +1370,11 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData)
 
                if (!search_str || strlen(search_str) == 0) {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str");
-                       if (pData->isRotate == false)
-                               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);
+                               if (search_str)
+                                       free(search_str);
+                               msg_release_struct(&search_s);
                                return;
                        }
                }
@@ -1378,6 +1402,9 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData)
                msg_set_str_value(search_s, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, search_str, strlen(search_str));
 
                err =  msg_search_message(pData->msgHandle, search_s, 0, 0, &msg_list);
+               free(search_str);
+               msg_release_struct(&search_s);
+
                MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS);
        } else {
                switch (pListData->list_type) {
@@ -1399,7 +1426,10 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData)
        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->list_type == THREAD_NORMAL_LIST_TYPE)
+                       msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2);
+               else
+                       msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1);
 
                if (!pListData->noc_ly)
                        pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame);
@@ -1410,14 +1440,17 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData)
                        elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly);
                }
        } else {
+               if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
+                       msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2);
+               else
+                       msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_1);
+
                if (swl_ly != pListData->genlist) {
                        evas_object_hide(swl_ly);
                        elm_object_part_content_unset(pListData->content_ly, "thread_list");
                        elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist);
                }
 
-               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) {
@@ -1441,7 +1474,7 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData)
        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)
+Eina_Bool msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id)
 {
        MSG_UI_ENTER();
 
@@ -1468,9 +1501,6 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes
 
                if (!search_str || strlen(search_str) == 0) {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str");
-                       if (pData->isRotate == false)
-                               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);
@@ -1482,7 +1512,10 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes
                                msg_release_struct(&sendOpt);
 
                                msg_ui_thread_list_item_update(pListData, thread_id);
-                               return;
+                               if (search_str)
+                                       free(search_str);
+                               msg_release_struct(&search_s);
+                               return EINA_TRUE;
                        }
                }
 
@@ -1504,12 +1537,15 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes
                                break;
                        default:
                                D_MSG("[WARNING] invalid view mode");
-                               return;
+                               return EINA_FALSE;
                }
                msg_set_str_value(search_s, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, search_str, strlen(search_str));
 
                err =  msg_search_message(pData->msgHandle, search_s, 0, 0, &msg_list);
-               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS);
+               free(search_str);
+               msg_release_struct(&search_s);
+
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE);
        } else {
                switch (pListData->list_type) {
                        case THREAD_SPAM_LIST_TYPE:
@@ -1523,9 +1559,9 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes
                                break;
                        default:
                                D_MSG("[WARNING] invalid view mode");
-                               return;
+                               return EINA_FALSE;
                }
-               MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS);
+               MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE);
        }
 
        gen_item = elm_genlist_first_item_get(pListData->genlist);
@@ -1548,7 +1584,12 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes
        if (!gen_item) {
                D_EMSG("gen_item is NULL");
                msg_release_list_struct(&msg_list);
-               return;
+               return EINA_FALSE;
+       }
+
+       if (!old_data) {
+               D_EMSG("old_data is NULL");
+               return EINA_FALSE;
        }
 
        for (row = 0; row <msg_list.nCount; row++) {
@@ -1568,7 +1609,7 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes
 
        if (!new_data) {
                D_EMSG("new_data is NULL");
-               return;
+               return EINA_FALSE;
        }
 
        new_data->chk = old_data->chk;
@@ -1585,15 +1626,14 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes
                }
        }
 
-       if (old_data) {
-               if (old_data->msg_time) {
-                       free(old_data->msg_time);
-                       old_data->msg_time = NULL;
-               }
-               free(old_data);
+       if (old_data->msg_time) {
+               free(old_data->msg_time);
+               old_data->msg_time = NULL;
        }
+       free(old_data);
 
        MSG_UI_LEAVE();
+       return EINA_TRUE;
 }
 
 void msg_ui_thread_list_msg_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id)
@@ -1682,14 +1722,13 @@ Eina_Bool  msg_ui_thread_search_msg_list_load(void *data)
 
        if (!search_str || strlen(search_str) == 0) {
                MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str");
-               if (msg_ui_thread_rotation_get() == false)
-                       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);
+               if (search_str)
+                       free(search_str);
                return EINA_FALSE;
        }
 
@@ -1718,20 +1757,17 @@ Eina_Bool  msg_ui_thread_search_msg_list_load(void *data)
        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);
+       free(search_str);
+       msg_release_struct(&search_s);
 
        if (err != MSG_SUCCESS) {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_search_message failed!! [%d]", err);
-               if (msg_ui_thread_rotation_get() == false)
-                       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;
        }
 
@@ -1747,7 +1783,6 @@ Eina_Bool  msg_ui_thread_search_msg_list_load(void *data)
 
        /** 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;
@@ -1783,7 +1818,8 @@ Eina_Bool  msg_ui_thread_search_msg_list_load(void *data)
                        if (tmp_date_line != NULL)
                                dateline_data = tmp_date_line;
 
-                       item = dateline_data->date_it;
+                       if (dateline_data != NULL)
+                               item = dateline_data->date_it;
                        elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_SEARCH), item_data, item, ELM_GENLIST_ITEM_NONE, msg_ui_thread_msg_gl_sel, pListData);
 
                        if (dateline_data != NULL)
@@ -1799,7 +1835,6 @@ Eina_Bool  msg_ui_thread_search_msg_list_load(void *data)
                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;
@@ -1856,7 +1891,8 @@ Eina_Bool __msg_ui_thread_list_load_remain_item(void *data)
                if (tmp_date_line != NULL)
                        dateline_data = tmp_date_line;
 
-               item = dateline_data->date_it;
+               if (dateline_data != NULL)
+                       item = dateline_data->date_it;
 
                if (cur_thread->unread_cnt > 0)
                        elm_genlist_item_append(pListData->genlist, &pListData->itc_unread, cur_thread, item, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_gl_sel, pListData);
@@ -1905,7 +1941,7 @@ void msg_ui_thread_common_style_set(PMSG_THREAD_DATA pData)
        pData->itc_date.func.state_get = NULL;
        pData->itc_date.func.del = msg_ui_thread_date_gl_del;
 
-       pData->itc_search.item_style = "3text.2icon.tb";
+       pData->itc_search.item_style = "3text.1icon.tb";
        pData->itc_search.func.text_get = msg_ui_thread_search_msg_gl_text_get;
        pData->itc_search.func.content_get = msg_ui_thread_msg_gl_content_get;
        pData->itc_search.func.state_get = NULL;
@@ -1936,7 +1972,7 @@ void msg_ui_thread_genlist_style_set(PMSG_THREAD_LIST_DATA pListData)
                pListData->itc_unread.func.del = __msg_ui_thread_gl_del;
                pListData->itc_unread.decorate_all_item_style = "edit_default";
        } else {
-               pListData->itc_default.item_style = "3text.2icon";
+               pListData->itc_default.item_style = "3text.1icon";
                pListData->itc_default.func.text_get = msg_ui_thread_msg_gl_text_get;
                pListData->itc_default.func.content_get = msg_ui_thread_msg_gl_content_get;
                pListData->itc_default.func.state_get = NULL;
index 97bf779..6dba635 100755 (executable)
@@ -71,12 +71,13 @@ void *msg_ui_thread_init_thread_data(struct appdata *ad)
                D_MSG("calloc error");
                return NULL;
        }
-       bzero(pData, sizeof(PMSG_THREAD_DATA));
+       bzero(pData, sizeof(MSG_THREAD_DATA));
 
        g_data = pData;
 
        pData->msgHandle = ad->msgHandle;
        pData->win_main = ad->win_main;
+       pData->conform = ad->conform;
        pData->th = elm_theme_new();
        elm_theme_ref_set(pData->th, NULL);
        elm_theme_extension_add(pData->th, MSG_THREAD_THEME);
@@ -91,24 +92,10 @@ void *msg_ui_thread_init_thread_data(struct appdata *ad)
        pData->date_ptn_year = msg_common_get_date_best_pattern(pData->locale, MSG_UI_DATE_PATTERN_YEAR);
 
        /* Register callback to apply time change. */
-       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", pData->noti_fd);
-
-               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(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.");
-               }
+       if (vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, msg_ui_thread_timezone_change_cb, (void *)pData) < 0) {
+               D_EMSG("Fail to register vconf CB with [%s]", VCONFKEY_SYSTEM_TIME_CHANGED);
        }
+
        return (void *)pData;
 }
 
@@ -156,11 +143,8 @@ void msg_ui_thread_deinit_thread_data(void *data)
                pData->th = NULL;
        }
 
-       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);
+       if (vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, msg_ui_thread_timezone_change_cb) < 0) {
+               D_EMSG("Fail to remove vconf CB with [%s]", VCONFKEY_SYSTEM_TIME_CHANGED);
        }
 }
 
@@ -210,6 +194,7 @@ PMSG_THREAD_SPLIT_DATA msg_ui_thread_create_split_data(void)
 
 void msg_ui_thread_destroy_thread_list_data(PMSG_THREAD_LIST_DATA pListData)
 {
+       D_ENTER;
        int i = 0, j = 0;
        PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
 
@@ -232,6 +217,16 @@ void msg_ui_thread_destroy_thread_list_data(PMSG_THREAD_LIST_DATA pListData)
                pListData->job_popup_end = NULL;
        }
 
+       for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) {
+               if (pListData->toolbar_btn[i]) {
+                       evas_object_del(pListData->toolbar_btn[i]);
+                       pListData->toolbar_btn[i] = NULL;
+               }
+       }
+
+       evas_object_del(pListData->back_btn);
+       pListData->back_btn = NULL;
+
        for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
                if (pData->list_data[i] != NULL && pData->list_data[i] == pListData) {
                        free(pListData);
@@ -328,7 +323,7 @@ Evas_Object *msg_ui_thread_create_layout_main(PMSG_THREAD_DATA pData)
        evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        evas_object_show(bg);
 
-       layout = elm_layout_add(pData->win_main);
+       layout = elm_layout_add(pData->conform);
        MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, layout == NULL, NULL, "Failed elm_layout_add.\n");
 
        elm_layout_theme_set(layout, "layout", "application", "default");
@@ -408,6 +403,10 @@ void msg_ui_thread_load_message_box(int list_type)
                msg_ui_thread_destroy_split_data(pData->split_data);
                pSplitData = msg_ui_thread_create_split_data();
                msg_ui_thread_splitview_launch(pData, pSplitData);
+       } else {
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+               evas_object_hide(pListData->searchbar);
        }
 
        D_LEAVE;
@@ -420,14 +419,11 @@ void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA
        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);
-       if (pData->isRotate == false)
+       if (pData->isRotate == true)
                elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
 
        pListData->genlist = msg_ui_thread_create_genlist(pListData->content_ly, pListData);
@@ -436,37 +432,14 @@ void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA
 
        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_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;
-       default:
-               D_MSG("[ERROR] invalid viewmode");
-               return;
-       }
-
-       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);
-       evas_object_show(pListData->toolbar);
+       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+       pListData->nf_it = elm_naviframe_item_push(pData->navi_frame, label, pListData->back_btn, NULL, pListData->content_ly, NULL);
+       msg_ui_thread_set_navi_toolbar_item(pListData);
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
@@ -477,6 +450,7 @@ void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DA
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !pData || !pSplitData, "pData or pSplitData is NULL");
 
        PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+       char label[DEF_BUF_LEN_S+1] = {0,};
 
        if (!pSplitData->content_ly)
                pSplitData->content_ly= elm_layout_add(pData->panes);
@@ -511,18 +485,19 @@ void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DA
        evas_object_size_hint_align_set(pSplitData->title_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
        evas_object_show(pSplitData->title_layout);
 
-       msg_ui_thread_splitview_set_title(pData->split_data);
+       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+       elm_object_part_text_set(pSplitData->title_layout, "title_text", label);
        elm_object_item_part_content_set(pSplitData->nf_it, "title", pSplitData->title_layout);
 
        /*Create composer button*/
        if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) {
                if (!pSplitData->composer_btn)
                        pSplitData->composer_btn = elm_button_add(pSplitData->navi_frame);
-               elm_object_style_set(pSplitData->composer_btn, "naviframe/title/default");
+               elm_object_style_set(pSplitData->composer_btn, "naviframe/title_icon");
 
                Evas_Object *icon = elm_icon_add(pSplitData->composer_btn);
-               elm_icon_file_set(icon, MSG_CONTROLBAR_ICON_COMPOSE, NULL);
-               elm_icon_resizable_set(icon, 1, 1);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_COMPOSE);
+               elm_image_resizable_set(icon, 1, 1);
                evas_object_image_smooth_scale_set(icon, 0);
                elm_object_content_set(pSplitData->composer_btn, icon);
 
@@ -530,10 +505,8 @@ void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DA
                evas_object_show(pSplitData->composer_btn);
 
                elm_object_part_content_set(pSplitData->title_layout, "compose_btn", pSplitData->composer_btn);
-               elm_object_signal_emit(pSplitData->title_layout, "elm,state,compose_btn,show", "");
        }
        elm_object_part_content_set(pSplitData->title_layout, "prev_btn", pSplitData->back_btn);
-       elm_object_signal_emit(pSplitData->title_layout, "elm,state,prev_btn,show", "");
 
        elm_object_part_content_set(pData->panes, "right", pSplitData->content_ly);
        evas_object_show(pSplitData->content_ly);
@@ -541,38 +514,6 @@ void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DA
        D_LEAVE;
 }
 
-void msg_ui_thread_splitview_set_title(PMSG_THREAD_SPLIT_DATA pSplitData)
-{
-       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !pSplitData, "pData or pSplitData is NULL");
-
-       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
-       char label[DEF_BUF_LEN_S+1] = {0,};
-
-       if (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;
-               default:
-                       D_MSG("[ERROR] invalid viewmode");
-                       return;
-               }
-       } else {
-               strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(label));
-       }
-
-       elm_object_part_text_set(pSplitData->title_layout, "title_text", label);
-}
-
 Evas_Object *msg_ui_thread_create_searchbar_layout(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -675,18 +616,6 @@ Evas_Object *msg_ui_thread_create_nocontent_layout(Evas_Object *parent)
        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);
@@ -699,136 +628,263 @@ void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData)
 
 void msg_ui_thread_reset_thread_view(void *data, service_h service)
 {
+       D_ENTER;
+
        if (!data)
                return;
 
        PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       int i = 0;
+
+       if (pData->detail_layout) {
+               if (pData->isRotate == true)
+                       elm_naviframe_item_pop(pData->split_data->navi_frame);
+               else
+                       elm_naviframe_item_pop(pData->navi_frame);
+               pData->detail_layout = NULL;
+       }
+
+       for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) {
+               if (pData->list_data[i] != NULL && pData->list_data[i]->list_type != THREAD_NORMAL_LIST_TYPE) {
+                        if (pData->list_data[i]->loaded_ug) {
+                               ug_destroy(pData->list_data[i]->loaded_ug);
+                               pData->list_data[i]->loaded_ug = NULL;
+                       }
+                       elm_naviframe_item_pop(pData->navi_frame);
+                       elm_genlist_clear(pData->list_data[i]->genlist);
+                       msg_ui_thread_destroy_thread_list_data(pData->list_data[i]);
+               }
+       }
+
        PMSG_THREAD_LIST_DATA pListData = NULL;
 
-       pListData = msg_ui_thread_get_current_list();
+       pListData = msg_ui_thread_get_default_list();
        if (pListData == NULL)
                return;
 
-       if (pListData->search_mode == THREAD_SEARCH_ON)
-               elm_object_focus_set(pListData->searchbar, EINA_TRUE);
-
-       if (pListData->sel_thread_id > 0)
-               msg_ui_thread_list_item_update(pListData, pListData->sel_thread_id);
+       if (pListData->view_mode == THREAD_EDIT_VIEW)
+               msg_ui_thread_show_normal_mode(pListData);
 
-       if (pListData->sel_msg_id > 0)
-               msg_ui_thread_list_msg_item_update(pListData, pListData->sel_msg_id);
+       msg_ui_thread_cancel_search_mode(pListData);
 
        if (pData->isRotate == true) {
-               PMSG_THREAD_SPLIT_DATA pSplitData = NULL;
                msg_ui_thread_destroy_split_data(pData->split_data);
-               pSplitData = msg_ui_thread_create_split_data();
-               msg_ui_thread_splitview_launch(pData, pSplitData);
+               msg_ui_thread_split_view_show(pData);
+       } else {
+               msg_ui_thread_split_view_hide(pData);
        }
 
        pListData->sel_gen_item = NULL;
        pListData->sel_thread_id = 0;
        pListData->sel_msg_id = 0;
-
        pListData->view_mode = THREAD_NORMAL_VIEW;
+
+       msg_ui_thread_list_load(pListData, FALSE);
+
+       D_LEAVE;
 }
 
-void msg_ui_thread_set_navi_controlbar_item(PMSG_THREAD_LIST_DATA pListData)
+void msg_ui_thread_set_navi_toolbar_item(PMSG_THREAD_LIST_DATA pListData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        if (!pListData)
                return;
 
-       Evas_Object *toolbar = pListData->toolbar;
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       Evas_Object *btn = NULL;
+       Evas_Object *btn2 = NULL;
        int i = 0;
 
-       for (i = 0; i < MSG_THREAD_CONTROLBAR_ITEM_NUM; i++) {
-               if (pListData->toolbar_item[i])
-                       elm_object_item_del(pListData->toolbar_item[i]);
+       for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) {
+               if (pListData->toolbar_btn[i])
+                       evas_object_del(pListData->toolbar_btn[i]);
+       }
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button1");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button2");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_more_btn");
+
+       if (pListData->search_mode == THREAD_SEARCH_ON)
+               return;
+
+       if (!pListData->search_btn) {
+               pListData->search_btn = elm_button_add(pData->navi_frame);
+               elm_object_style_set(pListData->search_btn, "naviframe/title_icon");
+
+               Evas_Object *icon = elm_icon_add(pListData->search_btn);
+               elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH);
+               elm_image_resizable_set(icon, 1, 1);
+               evas_object_image_smooth_scale_set(icon, 0);
+               elm_object_content_set(pListData->search_btn, icon);
+               evas_object_smart_callback_add(pListData->search_btn, "clicked", msg_ui_thread_search_btn_clicked_cb, (void *)pListData);
        }
 
        if (pListData->view_mode == THREAD_EDIT_VIEW) {
-               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), \
-                                                                                                                                       msg_ui_thread_ctlbar_multi_action_cb, (void *)pListData);
-               if (pListData->list_type == THREAD_SIM_LIST_TYPE)
-                       pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_COPY_PHONE, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE"), \
-                                                                                                                                       msg_ui_thread_ctlbar_multi_action_cb, (void *)pListData);
-               else if (pListData->list_type == THREAD_SPAM_LIST_TYPE)
-                       pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_RESTORE, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE"), \
-                                                                                                                                       msg_ui_thread_ctlbar_multi_action_cb, (void *)pListData);
-               else
-                       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_CANCEL, dgettext("sys_string", "IDS_COM_SK_CANCEL"), \
-                                                                                                                               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);
+               btn = elm_button_add(pData->navi_frame);
+               elm_object_style_set(btn, "naviframe/toolbar/default");
+               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_multi_action_cb, pListData);
+               elm_object_item_part_content_set(pListData->nf_it, "toolbar_button1", btn);
+               pListData->toolbar_btn[CONTROLBAR_ITEM_1] = btn;
+
+               switch (pListData->list_type) {
+                       case THREAD_SIM_LIST_TYPE:
+                       case THREAD_SPAM_LIST_TYPE:
+                               btn2 = elm_button_add(pData->navi_frame);
+                               elm_object_style_set(btn, "naviframe/toolbar/left");
+                               elm_object_style_set(btn2, "naviframe/toolbar/right");
+                               evas_object_smart_callback_add(btn2, "clicked", msg_ui_thread_ctlbar_multi_action_cb, pListData);
+                               elm_object_item_part_content_set(pListData->nf_it, "toolbar_button2", btn2);
+
+                               pListData->toolbar_btn[CONTROLBAR_ITEM_2] = btn2;
+
+                               if (pListData->list_type == THREAD_SIM_LIST_TYPE)
+                                       elm_object_text_set(btn2, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE"));
+                               else if (pListData->list_type == THREAD_SPAM_LIST_TYPE)
+                                       elm_object_text_set(btn2, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE"));
+                               break;
+
+                       case THREAD_CBMSG_LIST_TYPE:
+                       default:
+                               break;
+               }
+
+               if (pListData->check_cnt <= 0) {
+                       elm_object_disabled_set(btn, EINA_TRUE);
+                       if (btn2 != NULL)
+                               elm_object_disabled_set(btn2, EINA_TRUE);
+               }
+
+               evas_object_hide(pListData->search_btn);
+               elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
        } else {
+               btn = elm_button_add(pData->navi_frame);
+               elm_object_style_set(btn, "naviframe/toolbar/default");
+               elm_object_item_part_content_set(pListData->nf_it, "toolbar_button1", btn);
+               pListData->toolbar_btn[CONTROLBAR_ITEM_1] = btn;
+
                switch (pListData->list_type) {
-                       case THREAD_NORMAL_LIST_TYPE:
-                               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_COMPOSE, dgettext("sys_string", "IDS_COM_SK3_COMPOSE"), \
-                                                                                                                                               msg_ui_thread_ctlbar_compose_cb, (void *)pListData);
-                               pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), \
-                                                                                                                                               msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData);
-                               pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_MESSAGEBOX, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_MESSAGE_BOXES"), \
-                                                                                                                                               msg_ui_thread_ctlbar_message_box_cb, pListData);
+                       case THREAD_CBMSG_LIST_TYPE:
+                               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_DELETE"));
+                               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData);
 
                                if (pListData->item_cnt <= 0)
-                                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE);
+                                       elm_object_disabled_set(btn, EINA_TRUE);
                                break;
 
-                       case THREAD_SPAM_LIST_TYPE:
-                               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_EDIT, dgettext("sys_string", "IDS_COM_SK_EDIT"), \
-                                                                                                                                                       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, dgettext("sys_string", "IDS_COM_BODY_SETTINGS"), \
-                                                                                                                                                       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);
+                       case THREAD_SIM_LIST_TYPE:
+                               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_EDIT"));
+                               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData);
 
-                               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);
+                               if (pListData->item_cnt <= 0)
+                                       elm_object_disabled_set(btn, EINA_TRUE);
                                break;
 
-                       case THREAD_CBMSG_LIST_TYPE:
-                               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), \
-                                                                                                                                                       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);
+                       case THREAD_NORMAL_LIST_TYPE:
+                               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK3_COMPOSE"));
+                               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_compose_cb, pListData);
 
-                               if (pListData->item_cnt <=0)
-                                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+                               Evas_Object *btn3 = elm_button_add(pData->navi_frame);
+                               elm_object_style_set(btn3, "naviframe/more/default");
+                               evas_object_smart_callback_add(btn3, "clicked", msg_ui_thread_ctlbar_message_box_cb, pListData);
+                               elm_object_item_part_content_set(pListData->nf_it, "toolbar_more_btn", btn3);
+                               pListData->toolbar_btn[CONTROLBAR_ITEM_3] = btn3;
 
-                               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_SIM_LIST_TYPE:
-                               pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_EDIT, dgettext("sys_string", "IDS_COM_SK_EDIT"), \
-                                                                                                                                                       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);
+                       case THREAD_SPAM_LIST_TYPE:
+                               elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_EDIT"));
+                               evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData);
 
-                               if (pListData->item_cnt <=0)
-                                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE);
+                               btn2 = elm_button_add(pData->navi_frame);
+                               elm_object_style_set(btn, "naviframe/toolbar/left");
+                               elm_object_style_set(btn2, "naviframe/toolbar/right");
+                               elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_BODY_SETTINGS"));
+                               evas_object_smart_callback_add(btn2, "clicked", msg_ui_thread_ctlbar_spam_setting_cb, pListData);
+                               elm_object_item_part_content_set(pListData->nf_it, "toolbar_button2", btn2);
+                               pListData->toolbar_btn[CONTROLBAR_ITEM_2] = btn2;
 
-                               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);
+                               if (pListData->item_cnt <=0)
+                                       elm_object_disabled_set(btn, EINA_TRUE);
                                break;
+
                        default:
                                D_MSG("[ERROR] invalid viewmode");
                                return;
                }
+
+               Evas_Object *search_icon = elm_object_content_get(pListData->search_btn);
+               if (pListData->item_cnt > 0)
+                       elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH);
+               else
+                       elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM);
+
+               if (pListData->search_mode == THREAD_SEARCH_OFF && msg_ui_thread_rotation_get() == false) {
+                       elm_object_item_part_content_set(pListData->nf_it, "title_right_btn", pListData->search_btn);
+               } else {
+                       evas_object_hide(pListData->search_btn);
+                       elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
+               }
        }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
+void msg_ui_thread_show_toolbar(PMSG_THREAD_LIST_DATA pListData)
+{
+       D_ENTER;
+
+       if (!pListData)
+               return;
+
+       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
+
+       if (!pListData->back_btn) {
+               pListData->back_btn = elm_button_add(pData->navi_frame);
+               evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
+               elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default");
+               elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn);
+       }
+       elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn);
+
+       msg_ui_thread_set_navi_toolbar_item(pListData);
+       elm_object_item_signal_emit(pListData->nf_it, "elm,state,toolbar,open", "");
+
+       D_LEAVE;
+}
+
+void msg_ui_thread_hide_toolbar(PMSG_THREAD_LIST_DATA pListData, bool bDeleteBtn)
+{
+       D_ENTER;
+
+       if (!pListData)
+               return;
+
+       if (bDeleteBtn) {
+               int i = 0;
+
+               if (pListData->back_btn) {
+                       evas_object_del(pListData->back_btn);
+                       pListData->back_btn = NULL;
+               }
+
+               for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) {
+                       if (pListData->toolbar_btn[i]) {
+                               evas_object_del(pListData->toolbar_btn[i]);
+                               pListData->toolbar_btn[i] = NULL;
+                       }
+               }
+       }
+       elm_object_item_part_content_unset(pListData->nf_it, "prev_btn");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button1");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button2");
+       elm_object_item_part_content_unset(pListData->nf_it, "toolbar_more_btn");
+
+       elm_object_item_signal_emit(pListData->nf_it, "elm,state,toolbar,close", "");
+       D_LEAVE;
+}
+
 void msg_ui_thread_rotation_set(void *data, int rot)
 {
        PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
@@ -855,63 +911,76 @@ bool msg_ui_thread_rotation_get(void)
        return pData->isRotate;
 }
 
-void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData)
+void msg_ui_thread_lang_changed(void *data)
 {
-       D_ENTER;
+       PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data;
+       PMSG_THREAD_LIST_DATA pListData = NULL;
+       int i = 0;
 
-       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+       if (!pData)
+               return;
 
-       elm_panes_content_left_size_set(pData->panes, 0.4);
-       if (pListData) {
-               if (pListData->search_mode == THREAD_SEARCH_ON) {
-                       Evas_Object *entry = NULL;
+       for (i = 0; i < MSG_THREAD_LIST_MAX_COUNT; i++) {
+               if (pData->list_data[i] != NULL) {
+                       char label[DEF_BUF_LEN_S+1] = {0,};
 
-                       pListData->search_mode = THREAD_SEARCH_OFF;
-                       elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
+                       pListData = pData->list_data[i];
 
-                       if (pListData->search_timer) {
-                               ecore_timer_del(pListData->search_timer);
-                               pListData->search_timer = NULL;
-                       }
+                       elm_genlist_realized_items_update(pListData->genlist);
+                       elm_object_part_text_set(pListData->noc_ly, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NOMESSAGES"));
+                       elm_object_part_text_set(pListData->searchbar, "elm.guidetext", dgettext("sys_string", "IDS_COM_BODY_SEARCH"));
 
-                       entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
-                       elm_object_text_set(entry, "");
-                       elm_object_signal_emit(pListData->searchbar, "cancel,out", "");
+                       if (pListData->popup) {
+                               evas_object_del(pListData->popup);
+                               pListData->popup = NULL;
+                       }
 
-                       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_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+                       elm_object_item_text_set(pListData->nf_it, label);
+                       msg_ui_thread_set_navi_toolbar_item(pListData);
                }
+       }
 
-               if (pListData->view_mode == THREAD_NORMAL_VIEW) {
-                       edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
-                       elm_object_part_content_unset(pListData->content_ly, "sel_all");
-                       evas_object_hide(pListData->searchbar);
-               }
+       if (pData->split_data) {
+               char label[DEF_BUF_LEN_S+1] = {0,};
+               pListData = msg_ui_thread_get_current_list();
 
-               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;
+               msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+               elm_object_part_text_set(pData->split_data->title_layout, "title_text", label);
+               elm_object_part_text_set(pData->split_data->noc_ly, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NOMESSAGES"));
+       }
+}
+
+void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData)
+{
+       D_ENTER;
+
+       PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
+
+       elm_panes_content_left_size_set(pData->panes, 0.4);
+
+       if (pListData) {
+               if (pListData->view_mode == THREAD_NORMAL_VIEW && pListData->item_cnt > 0) {
+                       edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+                       evas_object_show(pListData->searchbar);
+                       elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
                }
+
                elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_FALSE);
-               evas_object_hide(pListData->toolbar);
-               elm_object_item_part_content_unset(pListData->nf_it, "controlbar");
-               elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,close", "");
+               msg_ui_thread_hide_toolbar(pListData, true);
+               if (pListData->search_btn) {
+                       evas_object_hide(pListData->search_btn);
+                       elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn");
+               }
 
                elm_object_part_content_set(pData->panes, "left", pData->layout_main);
                evas_object_show(pData->layout_main);
-
                Evas_Object * layout = msg_ui_get_composer_ug_viewer_layout();
                if (layout) {
                        elm_object_part_content_set(pData->panes, "right", layout);
                        evas_object_show(layout);
-                       msg_ui_thread_destroy_split_data(pData->split_data);
-               } else if (pListData->loaded_ug) {
-                       elm_object_part_content_set(pData->panes, "right", (Evas_Object *)ug_get_layout(pListData->loaded_ug));
-                       evas_object_show(layout);
-                       msg_ui_thread_destroy_split_data(pData->split_data);
+                       if (pData->split_data)
+                               msg_ui_thread_destroy_split_data(pData->split_data);
                } else {
                        if (!pData->split_data) {
                                msg_ui_thread_create_split_data();
@@ -925,10 +994,9 @@ void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData)
                                        msg_ui_thread_launch_msg_detail_view(pListData, elm_object_item_data_get(pListData->sel_gen_item));
                        }
                }
-
-               if (pListData->selectioninfo_layout)
-                       elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "horizontal/bottom_12");
        }
+
+       elm_object_signal_emit(pData->panes, "elm,panes,pair", "");
 }
 
 void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData)
@@ -937,32 +1005,24 @@ void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData)
 
        PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list();
 
+       elm_object_part_content_set(pData->panes, "left", pData->layout_main);
        elm_panes_content_left_size_set(pData->panes, 1.0);
+       if (pData->split_data) {
+               elm_object_part_content_unset(pData->panes, "right");
+               msg_ui_thread_destroy_split_data(pData->split_data);
+       }
+
        if (pListData) {
-               if (pListData->view_mode == THREAD_NORMAL_VIEW) {
-                       edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
-                       evas_object_show(pListData->searchbar);
-                       elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+               if (pListData->search_mode == THREAD_SEARCH_OFF) {
+                       msg_ui_thread_show_toolbar(pListData);
 
-                       if (!pListData->back_btn) {
-                               pListData->back_btn = elm_button_add(pData->navi_frame);
-                               evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
-                               elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default");
+                       if (pListData->view_mode == THREAD_NORMAL_VIEW) {
+                               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+                               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+                               evas_object_hide(pListData->searchbar);
                        }
-                       elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn);
                }
-
                elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_TRUE);
-               msg_ui_thread_set_navi_controlbar_item(pListData);
-               elm_object_item_part_content_set(pListData->nf_it, "controlbar", pListData->toolbar);
-               elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", "");
-               evas_object_show(pListData->toolbar);
-
-               elm_object_part_content_unset(pData->panes, "right");
-               msg_ui_thread_destroy_split_data(pData->split_data);
-
-               if (pListData->selectioninfo_layout)
-                       elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_12");
 
                Evas_Object * layout = msg_ui_get_composer_ug_viewer_layout();
                if (layout) {
@@ -970,15 +1030,11 @@ void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData)
                        elm_object_part_content_unset(pData->panes, "left");
                        elm_panes_content_left_size_set(pData->panes, 0.0);
                        evas_object_hide(pData->layout_main);
-               } else if (pListData->loaded_ug) {
-                       elm_object_part_content_set(pData->panes, "right", (Evas_Object *)ug_get_layout(pListData->loaded_ug));
-                       elm_object_part_content_unset(pData->panes, "left");
-                       elm_panes_content_left_size_set(pData->panes, 0.0);
-                       evas_object_hide(pData->layout_main);
                } else if (pData->detail_layout) {
                        pData->detail_layout = NULL;
                        if (pListData->sel_gen_item > 0)
                                msg_ui_thread_launch_msg_detail_view(pListData, elm_object_item_data_get(pListData->sel_gen_item));
                }
        }
+       elm_object_signal_emit(pData->panes, "elm,panes,unpair", "");
 }
index 9eb6432..a3202c8 100755 (executable)
@@ -138,17 +138,6 @@ void msg_ui_thread_launch_viewer_ug(PMSG_THREAD_LIST_DATA pListData, int nMsgId)
                return;
        }
 
-       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
-       Evas_Object * layout = (Evas_Object *)ug_get_layout(pListData->loaded_ug);
-       elm_object_part_content_set(pData->panes, "right", layout);
-       msg_ui_thread_destroy_split_data(pData->split_data);
-
-       if (pData->isRotate == false) {
-               elm_object_part_content_unset(pData->panes, "left");
-               elm_panes_content_left_size_set(pData->panes, 0.0);
-               evas_object_hide(pData->layout_main);
-       }
-
        D_LEAVE;
        return;
 }
@@ -171,13 +160,13 @@ static void __msg_ui_thread_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void
        win = ug_get_window();
 
        switch (mode) {
-           case UG_MODE_FULLVIEW:
+               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:
+               default:
                        break;
        }
 }
@@ -198,6 +187,17 @@ static void __msg_ui_thread_ug_destroy_cb(ui_gadget_h ug, void *priv)
                        elm_object_part_content_set(pData->panes, "left", pData->layout_main);
                        elm_object_part_content_unset(pData->panes, "right");
                        elm_panes_content_left_size_set(pData->panes, 1.0);
+               } else {
+                       char label[DEF_BUF_LEN_S+1] = {0,};
+
+                       if (!pData->split_data) {
+                               msg_ui_thread_create_split_data();
+                               msg_ui_thread_splitview_launch(pData, pData->split_data);
+                       }
+                       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+
+                       if (pData->split_data)
+                               elm_object_part_text_set(pData->split_data->title_layout, "title_text", label);
                }
        }
 
@@ -306,21 +306,15 @@ void msg_ui_thread_launch_msg_detail_view(PMSG_THREAD_LIST_DATA pListData, PMSG_
                elm_object_part_content_set(title_layout, "prev_btn", back_btn);
 
                elm_object_item_part_content_unset(nf_it, "prev_btn");
-               elm_object_item_part_content_unset(nf_it, "controlbar");
-               elm_object_item_signal_emit(nf_it, "elm,state,controlbar,close", "");
+               elm_object_item_signal_emit(nf_it, "elm,state,toolbar,close", "");
        } else {
-               Evas_Object *toolbar = NULL;
                Evas_Object *back_btn = NULL;
 
-               toolbar = elm_toolbar_add(navi_frame);
-               elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
-
                back_btn = elm_button_add(navi_frame);
                elm_object_style_set(back_btn, "naviframe/back_btn/default");
                evas_object_smart_callback_add(back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
 
                nf_it = elm_naviframe_item_push(navi_frame, title, back_btn, NULL, detail_layout, NULL);
-               elm_object_item_part_content_set(nf_it, "controlbar", toolbar);
        }
        pData->detail_layout = detail_layout;
        pData->detail_nf_it = nf_it;
@@ -387,7 +381,9 @@ static Evas_Object *__msg_ui_thread_create_msg_detail_layout(Evas_Object* parent
        layout = elm_layout_add(parent);
 
        elm_layout_theme_set(layout, "layout", "application", "noindicator");
+       elm_layout_file_set(layout, MSG_THREAD_THEME, "thread_detail_layout");
        evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
 
        return layout;
 }
@@ -562,6 +558,10 @@ void msg_ui_thread_cancel_edit_mode(PMSG_THREAD_LIST_DATA pListData)
        elm_object_part_content_unset(pListData->content_ly, "sel_all");
        evas_object_hide(pListData->sel_all_ly);
        elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+       if (msg_ui_thread_rotation_get() == false)
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+       else
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
 
        elm_genlist_decorate_mode_set(pListData->genlist, EINA_FALSE);
        elm_genlist_select_mode_set(pListData->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
@@ -576,12 +576,17 @@ void msg_ui_thread_show_normal_mode(PMSG_THREAD_LIST_DATA pListData)
        if (pListData->view_mode == THREAD_EDIT_VIEW)
                msg_ui_thread_cancel_edit_mode(pListData);
 
+       if (pListData->selectioninfo_layout) {
+               evas_object_del(pListData->selectioninfo_layout);
+               pListData->selectioninfo_layout = NULL;
+       }
+
        if (pListData->select_info) {
                evas_object_del(pListData->select_info);
                pListData->select_info = NULL;
        }
 
-       msg_ui_thread_set_navi_controlbar_item(pListData);
+       msg_ui_thread_set_navi_toolbar_item(pListData);
 
        if (pListData->list_type == THREAD_NORMAL_LIST_TYPE)
                elm_object_item_text_set(pListData->nf_it, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"));
@@ -592,23 +597,16 @@ void msg_ui_thread_show_normal_mode(PMSG_THREAD_LIST_DATA pListData)
        else if (pListData->list_type == THREAD_CBMSG_LIST_TYPE)
                elm_object_item_text_set(pListData->nf_it, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"));
 
-       if (msg_ui_thread_rotation_get() == true) {
+       if (msg_ui_thread_rotation_get() == false) {
                edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
                elm_object_part_content_unset(pListData->content_ly, "sel_all");
                evas_object_hide(pListData->searchbar);
 
-               elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,close", "");
-               elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_FALSE);
-       } else {
-               if (!pListData->back_btn) {
-                       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
-
-                       pListData->back_btn = elm_button_add(pData->navi_frame);
-                       evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData);
-                       elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default");
-               }
-               elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn);
                elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_TRUE);
+               msg_ui_thread_show_toolbar(pListData);
+       } else {
+               elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_FALSE);
+               msg_ui_thread_hide_toolbar(pListData, true);
        }
 
        D_LEAVE;
@@ -796,10 +794,9 @@ void msg_ui_thread_show_action_popup(PMSG_THREAD_LIST_DATA pListData, int action
                        Evas_Object *layout;
 
                        label_text = elm_label_add(popup);
-                       elm_object_style_set(label_text, "popup/default");
-                       elm_label_line_wrap_set(label_text, ELM_WRAP_MIXED);
+                       elm_layout_file_set(label_text, MSG_COMMON_EDJ, "popup_with_checkbox");
                        elm_object_text_set(label_text, msg);
-                       evas_object_size_hint_weight_set(label_text, EVAS_HINT_EXPAND, 0.0);
+                       evas_object_size_hint_weight_set(label_text, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
                        evas_object_size_hint_align_set(label_text, EVAS_HINT_FILL, EVAS_HINT_FILL);
                        evas_object_show(label_text);
 
@@ -813,7 +810,7 @@ void msg_ui_thread_show_action_popup(PMSG_THREAD_LIST_DATA pListData, int action
                        evas_object_smart_callback_add(check, "changed", __msg_ui_thread_action_popup_checked_cb, pListData);
                        evas_object_show(check);
 
-                       elm_object_part_text_set(layout, "elm.text", "Include protected messages");
+                       elm_object_part_text_set(layout, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE"));
                        elm_object_part_content_set(layout, "elm.swallow.check", check);
                        elm_object_part_content_set(layout, "elm.swallow.content", label_text);
                        evas_object_show(layout);
@@ -976,7 +973,12 @@ static void __msg_ui_thread_action_popup_ok_clicked_cb(void *data, Evas_Object *
                                        msg_ui_thread_create_split_data();
                                        msg_ui_thread_splitview_launch(pData, pData->split_data);
                                }
-                               msg_ui_thread_splitview_set_title(pData->split_data);
+                               if (pData->split_data) {
+                                       char label[DEF_BUF_LEN_S+1] = {0,};
+
+                                       msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S);
+                                       elm_object_part_text_set(pData->split_data->title_layout, "title_text", label);
+                               }
                        }
 
                        Elm_Object_Item *it_dateline = NULL;
@@ -1146,25 +1148,19 @@ 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);
 
-       PMSG_THREAD_DATA pData = msg_ui_thread_get_data();
-
        if (!pListData->select_info) {
                pListData->select_info = elm_notify_add(pListData->content_ly);
-               elm_notify_orient_set(pListData->select_info, ELM_NOTIFY_ORIENT_BOTTOM);
+               elm_notify_align_set(pListData->select_info, ELM_NOTIFY_ALIGN_FILL, 1.0);
 
                pListData->selectioninfo_layout = elm_layout_add(pListData->content_ly);
+               elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "center_text");
                elm_object_content_set(pListData->select_info, pListData->selectioninfo_layout);
        }
 
-       if (pData->isRotate)
-               elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "horizontal/bottom_12");
-       else
-               elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_12");
-
        if (pListData->check_cnt == 0) {
                evas_object_hide(pListData->select_info);
-               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_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_1], EINA_TRUE);
+               elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_2], EINA_TRUE);
        } else {
                char text[DEF_BUF_LEN_S] =  {'0',};
 
@@ -1172,9 +1168,9 @@ void msg_ui_thread_show_select_info(PMSG_THREAD_LIST_DATA pListData)
                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);
-               if (elm_toolbar_item_icon_get(pListData->toolbar_item[CONTROLBAR_ITEM_2]) != NULL)
-                       elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE);
+               elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_1], EINA_FALSE);
+               if (pListData->toolbar_btn[CONTROLBAR_ITEM_2] != NULL)
+                       elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_2], EINA_FALSE);
        }
 }
 
@@ -1255,9 +1251,8 @@ void msg_ui_thread_addr_select_popup(PMSG_THREAD_LIST_DATA pListData, const char
        evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
 
        popup_title = (char *) calloc(1, strlen(title) + 1);
-       bzero(popup_title, sizeof(popup_title));
        if (strlen(title) > 0)
-               strncpy(popup_title, title, sizeof(popup_title));
+               strncpy(popup_title, title, sizeof(char)* strlen(title));
 
        evas_object_data_set(genlist, "title", popup_title);
        memset(&pData->itc_popup, 0x00, sizeof(Elm_Genlist_Item_Class));
@@ -1415,6 +1410,8 @@ static void __msg_ui_thread_addr_select_popup_destroy(void *data)
 
 void msg_ui_thread_set_app_state(int app_state)
 {
+       D_ENTER;
+
        if (app_state <= MSG_UI_STATE_NONE || app_state >= MSG_UI_STATE_MAX)
                return;
 
@@ -1424,17 +1421,21 @@ void msg_ui_thread_set_app_state(int app_state)
                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);
+               if (pListData) {
+                       Elm_Object_Item* it_sweep = NULL;
+
+                       it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist);
+                       if (it_sweep) {
+                               elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE);
+                               elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT);
+                       }
                }
        }
 
        pData->app_state = app_state;
+       D_LEAVE;
 }
 
 int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData)
@@ -1445,6 +1446,110 @@ int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData)
        return pData->app_state;
 }
 
+void msg_ui_thread_cancel_search_mode(PMSG_THREAD_LIST_DATA pListData)
+{
+       if (pListData == NULL || pListData->search_mode == THREAD_SEARCH_OFF)
+               return;
+
+       pListData->search_mode = THREAD_SEARCH_OFF;
+       elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL);
+
+       if (pListData->search_timer) {
+               ecore_timer_del(pListData->search_timer);
+               pListData->search_timer = NULL;
+       }
+
+       Evas_Object *entry = NULL;
+
+       elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm");
+       entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content");
+       elm_object_text_set(entry, "");
+       elm_object_signal_emit(pListData->searchbar, "cancel,out", "");
+
+       if (msg_ui_thread_rotation_get() == false) {
+               evas_object_show(pListData->search_btn);
+               elm_object_item_part_content_set(pListData->nf_it, "title_right_btn", pListData->search_btn);
+
+               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+               evas_object_hide(pListData->searchbar);
+
+               msg_ui_thread_show_toolbar(pListData);
+       }
+
+       if (pListData->list_type== THREAD_NORMAL_LIST_TYPE)
+               msg_ui_thread_list_load(pListData, FALSE);
+       else
+               msg_ui_thread_msg_list_load(pListData, pListData->list_type);
+}
+
+void msg_ui_thread_button_disabled_set(PMSG_THREAD_LIST_DATA pListData, Eina_Bool disabled, int controlbar_btn)
+{
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pListData);
+
+       if (disabled == EINA_TRUE) {
+               if (pListData->view_mode == THREAD_NORMAL_VIEW) {
+                       if (pListData->toolbar_btn[controlbar_btn])
+                               elm_object_disabled_set(pListData->toolbar_btn[controlbar_btn], EINA_TRUE);
+
+                       if (msg_ui_thread_rotation_get() == true) {
+                               edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all");
+                               elm_object_part_content_unset(pListData->content_ly, "sel_all");
+                               evas_object_hide(pListData->searchbar);
+                       } else {
+                               if (pListData->search_btn) {
+                                       Evas_Object *search_icon = elm_object_content_get(pListData->search_btn);
+                                       elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM);
+                               }
+                       }
+               }
+       } else {
+               if (pListData->view_mode == THREAD_NORMAL_VIEW) {
+                       if (pListData->toolbar_btn[controlbar_btn])
+                               elm_object_disabled_set(pListData->toolbar_btn[controlbar_btn], EINA_FALSE);
+
+                       if (msg_ui_thread_rotation_get() == true) {
+                               edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all");
+                               evas_object_show(pListData->searchbar);
+                               elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar);
+                       } else {
+                               if (pListData->search_btn) {
+                                       Evas_Object *search_icon = elm_object_content_get(pListData->search_btn);
+                                       elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH);
+                               }
+                       }
+               }
+       }
+}
+
+void msg_ui_thread_get_title_text(PMSG_THREAD_LIST_DATA pListData, char *label, int label_len)
+{
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !label || !pListData, "label or pListData is NULL");
+
+       if (pListData) {
+               switch (pListData->list_type) {
+               case THREAD_NORMAL_LIST_TYPE:
+                       strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(char)*label_len);
+                       break;
+               case THREAD_SPAM_LIST_TYPE:
+                       strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), sizeof(char)*label_len);
+                       break;
+               case THREAD_SIM_LIST_TYPE:
+                       strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), sizeof(char)*label_len);
+                       break;
+               case THREAD_CBMSG_LIST_TYPE:
+                       strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), sizeof(char)*label_len);
+                       break;
+               default:
+                       D_MSG("[ERROR] invalid viewmode");
+                       return;
+               }
+       } else {
+               strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(char)*label_len);
+       }
+}
+
+
 const char *msg_ui_thread_make_search_result_string(const char *string, char *searchword, bool *result)
 {
        char pstr[DEF_BUF_LEN + 1] = {0,};
index 39f85a4..bd83bea 100755 (executable)
@@ -99,6 +99,77 @@ collections{
                        }
                }
        }
+       group{
+               name : "thread_detail_layout";
+
+               parts{
+                       part {
+                               name: "pad_left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min : 70 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "pad_right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min : 70 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                               }
+                       }
+                       part {
+                               name: "pad_top";
+                               type: RECT;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 0.0; to_x: "pad_left"; }
+                                       rel2 { relative: 0.0 0.0; to_x: "pad_right"; }
+                               }
+                       }
+                       part {
+                               name: "pad_bottom";
+                               type: RECT;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1 { relative: 1.0 1.0; to_x: "pad_left"; }
+                                       rel2 { relative: 0.0 1.0; to_x: "pad_right"; }
+                               }
+                       }
+                       part{
+                               name:"elm.swallow.content";
+                               type: SWALLOW;
+                               scale : 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       align: 0 0;
+                                       fixed: 1 0;
+                                       rel1 { relative: 0.0 1.0;       to: "pad_top"; }
+                                       rel2 { relative: 1.0 1.0;       to: "pad_bottom"; }
+                               }
+                       }
+               }
+       }
        group
        {
                name : "elm/genlist/item/thread_list_blank/default";