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