Apply EFL migration of thread, common
[apps/core/preloaded/message-app.git] / common / msg-ui-common-utility.c
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;
+}
+