#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>
[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
*========================== */
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;
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;
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;
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;
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;
}
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;
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;
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;
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);
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)
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);
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;
}
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;
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;
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;
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;
}
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) {
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) {
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);
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;
}
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;
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;
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;
+}
+