Apply latest UX.
authorJaeyun Jeong <jyjeong@samsung.com>
Fri, 26 Oct 2012 01:22:11 +0000 (10:22 +0900)
committerJaeyun Jeong <jyjeong@samsung.com>
Fri, 26 Oct 2012 01:22:11 +0000 (10:22 +0900)
Change-Id: Id1f411c3c9edd38ef5dba17f707275047b5b5d8c

21 files changed:
setting/CMakeLists.txt
setting/include/msg-ui-setting-common-util.h
setting/include/msg-ui-setting-main.h
setting/include/msg-ui-setting-spam-setting.h [moved from setting/include/msg-ui-setting-general-setting.h with 54% similarity]
setting/include/msg-ui-setting-text-message.h
setting/include/msg-ui-setting-types.h
setting/src/general/msg-ui-setting-general-setting.c [deleted file]
setting/src/main/msg-ui-setting-callback.c
setting/src/main/msg-ui-setting-common-util.c
setting/src/main/msg-ui-setting-font-size.c
setting/src/main/msg-ui-setting-gadget.c
setting/src/main/msg-ui-setting-main.c
setting/src/main/msg-ui-setting-msg-service-wrapper.c
setting/src/multimedia/msg-ui-setting-mm-message.c
setting/src/multimedia/msg-ui-setting-mm-recv-option.c
setting/src/spam/msg-ui-setting-spam-block-number.c [new file with mode: 0755]
setting/src/spam/msg-ui-setting-spam-block-word.c [moved from setting/src/general/msg-ui-setting-general-block-message.c with 53% similarity]
setting/src/spam/msg-ui-setting-spam-setting.c [new file with mode: 0755]
setting/src/text/msg-ui-setting-text-message.c
setting/src/text/msg-ui-setting-text-service-center.c
setting/theme/setting_theme.edc [new file with mode: 0755]

index 318a5e6..bdac87e 100755 (executable)
@@ -1,6 +1,7 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6) 
 PROJECT(message C)
 
+SET (SETTING_THEME setting_theme)
 SET (MSG_UI_SETTING msg_ui_setting)
 
 ######################## 
@@ -13,8 +14,9 @@ SET(SETTING_SRCS
         ./src/main/msg-ui-setting-common-util.c
         ./src/main/msg-ui-setting-msg-service-wrapper.c
         ./src/main/msg-ui-setting-font-size.c
-        ./src/general/msg-ui-setting-general-setting.c
-        ./src/general/msg-ui-setting-general-block-message.c
+        ./src/spam/msg-ui-setting-spam-setting.c
+        ./src/spam/msg-ui-setting-spam-block-word.c
+        ./src/spam/msg-ui-setting-spam-block-number.c
         ./src/text/msg-ui-setting-text-message.c
         ./src/text/msg-ui-setting-text-service-center.c
         ./src/multimedia/msg-ui-setting-mm-message.c
@@ -40,7 +42,17 @@ ADD_DEFINITIONS("-DTARGET")
 ADD_DEFINITIONS("-DSLP_PROF")
 
 
+ADD_CUSTOM_TARGET(${SETTING_THEME}.edj
+                COMMAND edje_cc -id ${CMAKE_SOURCE_COMMON_DIR}/data/edc_image
+                ${CMAKE_SOURCE_SETTING_DIR}/theme/${SETTING_THEME}.edc ${CMAKE_SOURCE_SETTING_DIR}/theme/${SETTING_THEME}.edj
+                DEPENDS ${CMAKE_SOURCE_SETTING_DIR}/theme/${SETTING_THEME}.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} ${SETTING_THEME}.edj)
+
+
 # Install executable and .edj files. 
+INSTALL(FILES ${CMAKE_SOURCE_SETTING_DIR}/theme/${SETTING_THEME}.edj DESTINATION ${EDJDIR})
 ADD_LIBRARY(ug-msg-setting-efl SHARED ${SETTING_SRCS}) 
 TARGET_LINK_LIBRARIES(ug-msg-setting-efl ${pkgs_LDFLAGS} -L${CMAKE_SOURCE_COMMON_DIR} -lmsg-common)
 
index a79c16a..6220512 100755 (executable)
 #define __DEF_MSG_UI_SETTING_COMMON_UTIL_H__
 
 #include "msg-ui-setting-main.h"
-#include "msg-ui-setting-general-setting.h"
+#include "msg-ui-setting-spam-setting.h"
 #include "msg-ui-setting-text-message.h"
 #include "msg-ui-setting-mm-message.h"
+
 #define SETTING_MAX_FIELD_COUNT 20
 #define SETTING_MAX_VALUE_COUNT 10
 
@@ -51,6 +52,7 @@ Evas_Object *msg_ui_setting_common_create_controlbar(Evas_Object *parent);
 
 Evas_Object *msg_ui_setting_common_create_genlist(Evas_Object *parent);
 void msg_ui_setting_common_append_genlist_separator(Evas_Object *genlist, void *data);
+void msg_ui_setting_common_append_genlist_separator_without_bot_line(Evas_Object *genlist, void *data);
 
 Evas_Object *msg_ui_setting_common_create_scroller(Evas_Object *parent);
 Evas_Object *msg_ui_setting_common_create_conformant(Evas_Object *parent);
@@ -62,9 +64,11 @@ int msg_ui_setting_common_vconf_get(const char *pKey);
 int msg_ui_setting_common_vconf_set(const char *pKey, int nSetValue);
 
 void msg_ui_setting_common_show_popup(PMSG_SETTING_DATA settingData, char *str);
+void msg_ui_setting_common_show_btn_popup(void *data, char *str);
 void msg_ui_setting_common_show_notify(void *data, char *str);
 void msg_ui_setting_common_show_selectioninfo(Evas_Object *parent, char *str, void *data);
 void msg_ui_setting_common_destroy_selectioninfo(void *data);
 
+ui_gadget_h msg_ui_setting_common_call_phoneui_ug(void *data, void *result_cb);
 
 #endif
index 2dcaa7d..2a4ab34 100755 (executable)
@@ -22,6 +22,7 @@
 #include "msg-ui-util.h"
 #include <Elementary.h>
 #include "msg-ui-common-utility.h"
+#include "msg-ui-image-resource.h"
 #include "msg-ui-setting-types.h"
 #include "msg-ui-setting-gadget.h"
 #include "msg-ui-setting-callback.h"
@@ -40,6 +41,7 @@ typedef enum {
        MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES,
        MSG_UI_SETTING_MAIN_MENU_SUB_TITLE,
        MSG_UI_SETTING_MAIN_MENU_FONT_SIZE,
+       MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY,
 
        MSG_UI_SETTING_MAIN_MENU_MAX
 
similarity index 54%
rename from setting/include/msg-ui-setting-general-setting.h
rename to setting/include/msg-ui-setting-spam-setting.h
index f1136b2..80fe93a 100755 (executable)
  */
 
 
-#ifndef __DEF_MSG_UI_SETTING_GENERAL_SETTING_H__
-#define __DEF_MSG_UI_SETTING_GENERAL_SETTING_H__
+#ifndef __DEF_MSG_UI_SETTING_SPAM_SETTING_H__
+#define __DEF_MSG_UI_SETTING_SPAM_SETTING_H__
 
 
 #include <msg.h>
+#include <status.h>
+#include <Eina.h>
 #include "msg-ui-setting-main.h"
 
 
 
 
 typedef enum {
-       MSG_UI_SETTING_GENERAL_MENU_NUMBERS_TO_REJECT,
-       MSG_UI_SETTING_GENERAL_MENU_BLOCK_MESSAGE,
-       MSG_UI_SETTING_GENERAL_MENU_MAX
+       MSG_UI_SETTING_SPAM_MENU_NUMBERS_TO_REJECT,
+       MSG_UI_SETTING_SPAM_MENU_BLOCK_WORD,
+       MSG_UI_SETTING_SPAM_MENU_MAX
 
 } MSG_UI_SETTING_GENERAL_MENU_E;
 
 typedef enum {
-       MSG_UI_SETTING_BLOCK_DETAIL_MENU_TITLE,
        MSG_UI_SETTING_BLOCK_DETAIL_MENU_DATA,
        MSG_UI_SETTING_BLOCK_DETAIL_MENU_MAX
 
 } MSG_UI_SETTING_BLOCK_DETAIL_MENU_E;
 
+typedef enum {
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_DATA,
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_NAME,
+       MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_MAX
+
+} MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_E;
+
 
 /*============================================================================
                                FUNCTION DEFINE
 =============================================================================*/
-void msg_ui_setting_general_create_view(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_setting_spam_create_view(void *data, Evas_Object *obj, void *event_info);
+Eina_List *filter_chk_list_append(Eina_List* list, int filter_id, Eina_Bool block_filter_chk_state, Eina_Bool number_reject_chk_state);
 
+/*
+ *     Spam Setting - Blocked word
+ */
+void msg_ui_setting_spam_block_word_main(void *data, Evas_Object *obj, void *event_info);
 
 /*
- *     General Setting - Block Messsage
+ *     Spam Setting - Number to reject
  */
-void msg_ui_setting_block_message_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
-void msg_ui_setting_block_message_exit_edit_mode(void *data);
-void msg_ui_setting_destroy_block_message(void *data);
-void msg_ui_setting_show_block_message(void *data);
-void msg_ui_setting_block_filter_update_view(void *data);
-void msg_ui_setting_general_block_message_main(void *data, Evas_Object *obj, void *event_info);
+void msg_ui_setting_spam_block_number_main(void *data, Evas_Object *obj, void *event_info);
 
 
 #endif
index fa1d621..0c03feb 100755 (executable)
@@ -27,6 +27,7 @@
 =============================================================================*/
 typedef enum {
        MSG_UI_SETTING_TEXT_MENU_REQ_DELIVERY_REPORT,
+       MSG_UI_SETTING_TEXT_MENU_INPUT_MODE,
        MSG_UI_SETTING_TEXT_MENU_SMSC,
        MSG_UI_SETTING_TEXT_MENU_MAX
 
index 2968e33..ef2fef2 100755 (executable)
 
 
 #define MSG_SETTING_THEME      EDJDIR"/setting_theme.edj"
-#define MSG_SETTING_THEME_BLACK        EDJDIR"/setting_theme_black.edj"
 
 #define MAX_SETTING_CTRLBAR_BUTTON     4
-#define MAX_FILTER_LIST        100
 #define MAX_SMSC_LIST  SMSC_LIST_MAX
 #define MAX_SMSC_NAME_LEN      SMSC_NAME_MAX
 #define MAX_SMSC_ADDR_LEN      SMSC_ADDR_MAX
@@ -50,6 +48,18 @@ typedef unsigned int MSG_UI_SETTING_TYPE_T;
  */
 typedef unsigned int MSG_UI_GENERAL_TYPE_T;
 
+/**
+ *     The values for this type SHOULD be in MSG_UI_SETTING_BLOCK_TYPE_E.
+ */
+
+typedef unsigned int MSG_UI_SETTING_BLOCK_TYPE_T;
+
+/**
+ *     The values for this type SHOULD be in MSG_UI_SETTING_CRITERIA_TYPE_E.
+ */
+
+typedef unsigned int MSG_UI_SETTING_CRITERIA_TYPE_T;
+
 
 /*============================================================================
                                ENUMS
@@ -77,21 +87,33 @@ typedef enum {
 
 } MSG_UI_SETTING_BLOCK_VIEW_MODE_E;
 
+typedef enum {
+       MSG_UI_SETTING_BLOCK_ADDR_SAME,
+       MSG_UI_SETTING_BLOCK_ADDR_INCLUDE,
+
+} MSG_UI_SETTING_CRITERIA_TYPE_E;
+
 
 /*============================================================================
                                STRUCT DEFINE
 =============================================================================*/
 
 typedef struct {
-       Evas_Object *general_genlist;
-       Elm_Genlist_Item_Class general_itc;
+       Evas_Object *spam_genlist;
+       Elm_Genlist_Item_Class spam_itc;
 
-} MSG_UI_SETTING_GENERAL_S;
+} MSG_UI_SETTING_SPAM_S;
 
 typedef struct {
        Evas_Object *text_genlist;
        Elm_Genlist_Item_Class text_2line_itc;
        Elm_Genlist_Item_Class text_1line_1icon_itc;
+       Elm_Genlist_Item_Class text_2line_1icon_itc;
+
+       /* input mode */
+       Elm_Object_Item *text_input_mode_item;
+       Elm_Genlist_Item_Class text_input_mode_itc;
+       Evas_Object *text_input_mode_radio_group;
 
        Evas_Object *req_delivery_rep_check;
 
@@ -148,44 +170,66 @@ typedef struct _MSG_UI_SETTING_S {
        MSG_UI_SETTING_TYPE_T type;
 
        msg_struct_t setting_opt;
+       msg_struct_t smsc_opt;
+       msg_struct_t mms_recv_opt;
        msg_struct_list_s *smsc_list;
 
 } MSG_UI_SETTING_S;
 
+typedef struct _MSG_UI_SETTING_FILTER_LIST_S {
+       int filter_id;
+       Eina_Bool block_filter_chk_state;
+       Eina_Bool number_reject_chk_state;
+} MSG_UI_SETTING_FILTER_LIST_S;
+
 typedef struct _MSG_UI_SETTING_FILTER_S {
        Evas_Object *block_layout;
+       Evas_Object *delete_layout;
 
        msg_struct_list_s filterList;
+       MSG_UI_SETTING_BLOCK_TYPE_T block_type;
+       MSG_UI_SETTING_CRITERIA_TYPE_T criteria_type;
+       int word_cnt;
+       int addr_cnt;
 
        Evas_Object *block_filter_nocontents;
        Evas_Object *block_filter_box;
+       Evas_Object *delete_filter_box;
 
        Elm_Object_Item *ctrl_btn[MAX_SETTING_CTRLBAR_BUTTON];
        Elm_Object_Item *block_left_btn;
        Elm_Object_Item *block_right_btn;
 
        Evas_Object *block_ctrl_bar;
+       Evas_Object *delete_ctrl_bar;
 
        /* Filter list */
        Evas_Object *block_filter_genlist;
        Elm_Genlist_Item_Class block_filter_itc;
 
+       Evas_Object *delete_genlist;
+
        Evas_Object *block_filter_sel_all_layout;
        Evas_Object *block_filter_chk_sel_all;
        Eina_Bool block_filter_chk_sel_all_state;
-       Evas_Object *block_filter_chk[MAX_FILTER_LIST];
-       Eina_Bool block_filter_chk_state[MAX_FILTER_LIST];
+       Eina_List *block_filter_chk_state_list;
 
        /* Filter detail view. */
        int block_filter_sel_index;
        Evas_Object *block_filter_detail_layout;
        Evas_Object *block_filter_detail_genlist;
-       Elm_Genlist_Item_Class block_filter_detail_title_itc;
        Elm_Genlist_Item_Class block_filter_detail_1icon_itc;
        Evas_Object *block_filter_detail_done_btn;
        Evas_Object *block_filter_detail_entry_ly;
        Evas_Object *block_filter_detail_entry;
 
+       /* Match criteria */
+       int match_criteria;
+       Elm_Object_Item *block_filter_detail_match_criteria_item;
+       Elm_Genlist_Item_Class block_filter_detail_2line_1icon_itc;
+       Elm_Genlist_Item_Class block_filter_detail_match_criteria_itc;
+       Evas_Object *block_filter_detail_match_criteria_radio_group;
+
 } MSG_UI_SETTING_FILTER_S;
 
 typedef struct _MSG_SETTING_DATA {
@@ -193,6 +237,8 @@ typedef struct _MSG_SETTING_DATA {
        struct ug_cbs cbs;
        ui_gadget_h loaded_ug;
 
+       Elm_Theme *th;
+
        Evas_Object *layout_main;
        Evas_Object *bg;
        Evas_Object *navi_frame;
@@ -204,6 +250,7 @@ typedef struct _MSG_SETTING_DATA {
        MSG_UI_SETTING_S msg_setting;
 
        Elm_Genlist_Item_Class grp_sep_itc;
+       Elm_Genlist_Item_Class grp_sep_without_bot_line_itc;
 
        Evas_Object *main_genlist;
        Evas_Object *cb_activate_check;
@@ -218,8 +265,12 @@ typedef struct _MSG_SETTING_DATA {
        Evas_Object *font_size_radio_group;
        int font_size_index;
 
+       /* use the volume key */
+       Evas_Object *use_vol_key_activate_check;
+       Elm_Genlist_Item_Class use_vol_key_itc;
+
        union {
-               MSG_UI_SETTING_GENERAL_S general_setting;
+               MSG_UI_SETTING_SPAM_S spam_setting;
                MSG_UI_SETTING_TEXT_S text_msg;
                MSG_UI_SETTING_MM_S mm_msg;
        } list;
diff --git a/setting/src/general/msg-ui-setting-general-setting.c b/setting/src/general/msg-ui-setting-general-setting.c
deleted file mode 100755 (executable)
index 8fc6009..0000000
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright 2012  Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.tizenopensource.org/license
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-
-#include "msg-ui-setting-main.h"
-#include "msg-ui-setting-general-setting.h"
-
-
-static struct _msg_ui_setting_mixed_list_item general_menu_its[] = {
-       { 1, "Blocked word", msg_ui_setting_general_block_message_main, ELM_GENLIST_ITEM_NONE },
-       /* do not delete below */
-       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
-};
-
-
-/*============================================================================
-                               STATIC FUNCTION DEFINE
-=============================================================================*/
-static char *__msg_ui_setting_general_gl_text_get(void *data, Evas_Object *obj, const char *part);
-static void __msg_ui_setting_general_gl_sel(void *data, Evas_Object *obj, void *event_info);
-static Evas_Object *__msg_ui_setting_general_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
-static void __msg_ui_setting_general_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
-
-
-/*============================================================================
-                               FUNCTION IMPLEMENT
-=============================================================================*/
-
-static char *
-__msg_ui_setting_general_gl_text_get(void *data, Evas_Object *obj, const char *part)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       int index = (int)data;
-
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
-
-       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
-               if (general_menu_its[index].name) {
-                       if (strstr(general_menu_its[index].name, "IDS_COM") != NULL)
-                               return strdup(dgettext("sys_string", general_menu_its[index].name));
-                       else
-                               return strdup(dgettext(MESSAGE_PKGNAME, general_menu_its[index].name));
-               }
-       } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
-       }
-
-       return NULL;
-}
-
-static void
-__msg_ui_setting_general_gl_sel(void *data, Evas_Object *obj, void *event_info)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
-       int index = (int)data;
-
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
-       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
-
-       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
-
-       if (general_menu_its[index].func != NULL)
-               general_menu_its[index].func(settingData, obj, event_info);
-
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-static Evas_Object *
-__msg_ui_setting_general_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       Evas_Object *general_genlist;
-       int index = 0;
-
-       general_genlist = msg_ui_setting_common_create_genlist(parent);
-       settingData->list.general_setting.general_genlist = general_genlist;
-
-       msg_ui_setting_common_append_genlist_separator(general_genlist, settingData);
-
-       settingData->list.general_setting.general_itc.item_style = "dialogue/1text";
-       settingData->list.general_setting.general_itc.func.text_get = __msg_ui_setting_general_gl_text_get;
-       settingData->list.general_setting.general_itc.func.content_get = NULL;
-       settingData->list.general_setting.general_itc.func.state_get = NULL;
-       settingData->list.general_setting.general_itc.func.del = NULL;
-
-       for (index = 0; general_menu_its[index].name; index++) {
-               elm_genlist_item_append(general_genlist, &settingData->list.general_setting.general_itc, (void *)index,
-                       NULL, general_menu_its[index].type, __msg_ui_setting_general_gl_sel, (void *)index);
-       }
-
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-
-       return general_genlist;
-}
-
-static void __msg_ui_setting_general_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-
-       elm_naviframe_item_pop(settingData->navi_frame);
-
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-}
-
-void msg_ui_setting_general_create_view(void *data, Evas_Object *obj, void *event_info)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
-
-       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-
-       Evas_Object *general_layout;
-       Evas_Object *general_genlist;
-       Evas_Object *l_button;
-       Elm_Object_Item *navi_it;
-
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_GENERAL;
-       msg_ui_setting_msg_get_config(settingData);
-
-       /* Initialize global variable. */
-       memset(&settingData->list.general_setting, 0x0, sizeof(settingData->list.general_setting));
-
-       if (obj == NULL) {
-               /* Change background color from transparent to group_list. */
-               elm_object_style_set(settingData->bg, "group_list");
-       }
-
-       general_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
-
-       general_genlist = __msg_ui_setting_general_create_menu(settingData->navi_frame, settingData);
-       elm_object_part_content_set(general_layout, "elm.swallow.content", general_genlist);
-
-       /* Create Left Button */
-       l_button = elm_button_add(settingData->navi_frame);
-
-       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), l_button, NULL, general_layout, NULL);
-
-       /* Style set should be called after elm_naviframe_item_push(). */
-       elm_object_style_set(l_button, "naviframe/back_btn/default");
-       if (obj == NULL)
-               evas_object_smart_callback_add(l_button, "clicked", msg_ui_setting_quit_cb, (void *)settingData);
-       else
-               evas_object_smart_callback_add(l_button, "clicked", __msg_ui_setting_general_back_btn_cb, (void *)settingData);
-
-       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
-
-}
index 4f279b2..f3bf82c 100755 (executable)
@@ -40,7 +40,7 @@ void msg_ui_setting_spam_msg_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       msg_ui_setting_general_create_view(data, obj, event_info);
+       msg_ui_setting_spam_create_view(data, obj, event_info);
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
index 4d6bc53..467b04b 100755 (executable)
@@ -18,6 +18,9 @@
 #include "msg-ui-setting-main.h"
 #include "msg-ui-setting-common-util.h"
 
+#include <contacts-svc.h>
+#include <contacts-ug.h>
+
 
 /*============================================================================
                                                                STATIC FUNCTION DEFINE
@@ -29,6 +32,8 @@ static void __msg_ui_setting_common_eraser_clicked_cb(void *data, Evas_Object *o
 static void __msg_ui_setting_common_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
 static void __msg_ui_setting_common_popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
 static void __msg_ui_setting_common_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_common_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void __msg_ui_setting_common_ug_destroy_cb(ui_gadget_h ug, void *priv);
 
 /*============================================================================
                                                                FUNCTION IMPLEMENT
@@ -234,6 +239,28 @@ void msg_ui_setting_common_append_genlist_separator(Evas_Object *genlist, void *
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
+void msg_ui_setting_common_append_genlist_separator_without_bot_line(Evas_Object *genlist, void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, genlist == NULL, "genlist is NULL");
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = NULL;
+
+       settingData->grp_sep_without_bot_line_itc.item_style = "dialogue/seperator.4";
+       settingData->grp_sep_without_bot_line_itc.func.text_get = NULL;
+       settingData->grp_sep_without_bot_line_itc.func.content_get = NULL;
+       settingData->grp_sep_without_bot_line_itc.func.state_get = NULL;
+       settingData->grp_sep_without_bot_line_itc.func.del = NULL;
+
+       it = elm_genlist_item_append(genlist, &settingData->grp_sep_without_bot_line_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
 Evas_Object *msg_ui_setting_common_create_scroller(Evas_Object *parent)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -378,9 +405,12 @@ static void __msg_ui_setting_common_popup_btn_clicked_cb(void *data, Evas_Object
        PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
 
        if (settingData->popup) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Popup is exist !!");
                evas_object_del(settingData->popup);
                settingData->popup = NULL;
        }
+       else
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Popup is NULL !!");
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
@@ -415,6 +445,29 @@ void msg_ui_setting_common_show_popup(PMSG_SETTING_DATA settingData, char *str)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
+void msg_ui_setting_common_show_btn_popup(void *data, char *str)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       settingData->popup = elm_popup_add(settingData->layout_main);
+
+       evas_object_size_hint_weight_set(settingData->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_text_set(settingData->popup, str);
+
+       Evas_Object *btn1 = elm_button_add(settingData->popup);
+       elm_object_style_set(btn1, "popup_button/default");
+       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
+       elm_object_part_content_set(settingData->popup, "button1", btn1);
+       evas_object_smart_callback_add(btn1, "clicked", __msg_ui_setting_common_popup_btn_clicked_cb, settingData);
+
+       evas_object_show(settingData->popup);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
 void msg_ui_setting_common_show_notify(void *data, char *str)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -488,3 +541,84 @@ void msg_ui_setting_common_destroy_selectioninfo(void *data)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
+static void __msg_ui_setting_common_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !ug);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !priv);
+
+       Evas_Object *base;
+
+       base = ug_get_layout(ug);
+
+       if (!base) {
+               ug_destroy(ug);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "base is NULL !!");
+               return;
+       }
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(ug_get_window(), base);
+               evas_object_show(base);
+               break;
+       case UG_MODE_FRAMEVIEW:
+               break;
+       default:
+               break;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_common_ug_destroy_cb(ui_gadget_h ug, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !ug);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !priv);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA) priv;
+
+       settingData->loaded_ug = ug;
+
+       if (settingData->loaded_ug) {
+               ug_destroy(settingData->loaded_ug);
+               settingData->loaded_ug = NULL;
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+ui_gadget_h msg_ui_setting_common_call_phoneui_ug(void *data, void *result_cb)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, data == NULL, NULL, "PMSG_SETTING_DATA is NULL");
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, result_cb == NULL, NULL, "result_cb is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       ui_gadget_h ug = NULL;
+       struct ug_cbs cbs = {0, };
+
+       service_h svc_h = NULL;
+       char request_number[DEF_BUF_LEN_D + 1] = {0, };
+
+       if (service_create(&svc_h) < 0 || svc_h == NULL) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "service_create() is failed !!");
+               return NULL;
+       }
+
+       snprintf(request_number, sizeof(request_number)-1, "%d", CT_UG_REQUEST_SELECT_NUMBER);
+       service_add_extra_data(svc_h, MSG_BUNDLE_KEY_TYPE, request_number);
+
+       cbs.layout_cb = __msg_ui_setting_common_ug_layout_cb;
+       cbs.result_cb = result_cb;
+       cbs.destroy_cb = __msg_ui_setting_common_ug_destroy_cb;
+       cbs.priv = data;
+
+       ug = ug_create(settingData->ug, "contacts-tabui-efl", UG_MODE_FULLVIEW, svc_h, &cbs);
+       if (ug == NULL)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "ug_create is failed !!");
+
+       return ug;
+}
index c288c79..1f9cf73 100755 (executable)
 
 static struct _msg_ui_setting_mixed_list_item font_size_menu_its[] = {
        { 1, "Follow system font size", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "Giant", NULL, ELM_GENLIST_ITEM_NONE },
        { 1, "Huge", NULL, ELM_GENLIST_ITEM_NONE },
        { 1, "IDS_MSGF_BODY_LARGE", NULL, ELM_GENLIST_ITEM_NONE },
        { 1, "IDS_MSGF_BODY_DEFAULTSTYLE_NORMAL", NULL, ELM_GENLIST_ITEM_NONE },
        { 1, "IDS_MSGF_BODY_SMALL", NULL, ELM_GENLIST_ITEM_NONE },
-       { 1, "IDS_MSGF_BODY_TINY", NULL, ELM_GENLIST_ITEM_NONE },
        /* do not delete below */
        { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
 };
@@ -65,6 +65,9 @@ __msg_ui_setting_font_size_gl_text_get(void *data, Evas_Object *obj, const char
                                strncpy(tmp_str, dgettext(MESSAGE_PKGNAME, font_size_menu_its[index].name), sizeof(tmp_str)-1);
 
                        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;
@@ -77,9 +80,6 @@ __msg_ui_setting_font_size_gl_text_get(void *data, Evas_Object *obj, const char
                        case MSG_APP_FONT_SIZE_INDEX_SMALL :
                                font_size = MSG_APP_FONT_SIZE_SMALL;
                                break;
-                       case MSG_APP_FONT_SIZE_INDEX_TINY :
-                               font_size = MSG_APP_FONT_SIZE_TINY;
-                               break;
                        case MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT :
                        default :
                                break;
@@ -143,10 +143,7 @@ __msg_ui_setting_font_size_gl_content_get(void *data, Evas_Object *obj, const ch
                evas_object_propagate_events_set(radio, EINA_FALSE);
                evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_font_size_radio_cb, (void *)settingData);
 
-               if (index == 0)
-                       settingData->font_size_radio_group = radio;
-               else
-                       elm_radio_group_add(radio, settingData->font_size_radio_group);
+               elm_radio_group_add(radio, settingData->font_size_radio_group);
 
                /* Set font size current value */
                if (index == settingData->font_size_index)
@@ -202,6 +199,8 @@ __msg_ui_setting_font_size_create_menu(Evas_Object *parent, PMSG_SETTING_DATA se
        settingData->font_size_itc.func.state_get = NULL;
        settingData->font_size_itc.func.del = NULL;
 
+       settingData->font_size_radio_group = elm_radio_add(font_size_genlist);
+
        for (index = 0; font_size_menu_its[index].name; index++) {
                elm_genlist_item_append(font_size_genlist, &settingData->font_size_itc, (void *)index,
                        NULL, font_size_menu_its[index].type, __msg_ui_setting_font_size_gl_sel, (void *)index);
index b768614..ba55be5 100755 (executable)
 #include "msg-ui-setting-types.h"
 #include "msg-ui-setting-main.h"
 #include "msg-ui-common-utility.h"
+#include <contacts-svc.h>
 
 
 static void __msg_ui_setting_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info);
 static void __msg_ui_setting_popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static int __msg_ui_setting_check_msg_server_ready(void);
 static void __msg_ui_setting_gadget_popup(PMSG_SETTING_DATA settingData, char *str);
 static Evas_Object *__msg_ui_setting_create_fullview(Evas_Object *parent, void *ugd);
 static Evas_Object *__msg_ui_setting_create_frameview(Evas_Object *parent, void *ugd);
@@ -71,19 +71,6 @@ __msg_ui_setting_popup_block_clicked_cb(void *data, Evas_Object *obj, void *even
        ug_destroy_me(settingData->ug);
 }
 
-static int __msg_ui_setting_check_msg_server_ready(void)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       int bMsgServerReady = 0;
-
-       if (vconf_get_bool(VCONFKEY_MSG_SERVER_READY, &bMsgServerReady) < 0) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_get_bool() is failed!!");
-               return MSG_UI_RET_ERR;
-       }
-
-       return bMsgServerReady;
-}
-
 static void __msg_ui_setting_gadget_popup(PMSG_SETTING_DATA settingData, char *str)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -148,6 +135,10 @@ static void *__msg_ui_setting_on_create(ui_gadget_h ug, enum ug_mode mode, servi
        ugd = (PMSG_SETTING_DATA)priv;
        ugd->ug = ug;
 
+       ugd->th = elm_theme_new();
+       elm_theme_ref_set(ugd->th, NULL);
+       elm_theme_extension_add(ugd->th, MSG_CUSTOM_WINSET_EDJ);
+
        ugd->cbs.layout_cb = NULL;
        ugd->cbs.result_cb = NULL;
        ugd->cbs.destroy_cb = NULL;
@@ -173,6 +164,7 @@ static void __msg_ui_setting_on_start(ui_gadget_h ug, service_h data, void *priv
        PMSG_SETTING_DATA ugd = (PMSG_SETTING_DATA)priv;
        msg_error_t     err = MSG_SUCCESS;
        msg_handle_t    msgHandle;
+       int ct_ret = CTS_ERR_FAIL;
        char *svc_value = NULL;
 
        /*Set Message Handler*/
@@ -185,6 +177,10 @@ static void __msg_ui_setting_on_start(ui_gadget_h ug, service_h data, void *priv
 
        ugd->msgHandle = msgHandle;
 
+       ct_ret = contacts_svc_connect();
+       if (ct_ret != CTS_SUCCESS)
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "contacts_svc_connect failed : ct_ret = [%d]", ct_ret);
+
        if (data != NULL)
                service_get_extra_data(data, MSG_BUNDLE_KEY_TYPE, &svc_value);
 
@@ -215,12 +211,22 @@ static void __msg_ui_setting_on_destroy(ui_gadget_h ug, service_h data, void *pr
        PMSG_SETTING_DATA ugd;
 
        msg_error_t err = MSG_SUCCESS;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       int ct_ret = CTS_ERR_FAIL;
 
        if (!ug || !priv)
                return;
 
        ugd = (PMSG_SETTING_DATA)priv;
 
+       EINA_LIST_FREE(ugd->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       ct_ret = contacts_svc_disconnect();
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "contacts_svc_connect return [%d]", ct_ret);
+
        if (ugd->msgHandle) {
                err = msg_close_msg_handle(&ugd->msgHandle);
                if (err != MSG_SUCCESS) {
@@ -236,6 +242,23 @@ static void __msg_ui_setting_on_destroy(ui_gadget_h ug, service_h data, void *pr
        evas_object_del(ugd->layout_main);
        ugd->layout_main = NULL;
 
+       if (ugd->th) {
+               elm_theme_extension_del(ugd->th, MSG_CUSTOM_WINSET_EDJ);
+               elm_theme_free(ugd->th);
+               ugd->th = NULL;
+       }
+
+       if (ugd->msg_setting.setting_opt) {
+               msg_release_struct(&(ugd->msg_setting.setting_opt));
+       }
+
+       if (ugd->msg_setting.smsc_opt) {
+               msg_release_struct(&(ugd->msg_setting.smsc_opt));
+       }
+
+       if (ugd->msg_setting.mms_recv_opt) {
+               msg_release_struct(&(ugd->msg_setting.mms_recv_opt));
+       }
 }
 
 static void __msg_ui_setting_on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv)
index 78b9f25..b342bea 100755 (executable)
@@ -25,6 +25,7 @@ static struct _msg_ui_setting_list_item main_menu_its[] = {
        { "IDS_MSGF_BODY_BROADCASTMESSAGES", NULL },
        { "IDS_COM_BODY_DISPLAY", NULL },
        { "IDS_MSGF_BODY_DEFUALTSTYLE_FONT_SIZE", msg_ui_setting_font_size_cb },
+       { "Use the volume key", NULL },
        /* do not delete below */
        { NULL, NULL }
 };
@@ -33,6 +34,8 @@ static struct _msg_ui_setting_list_item main_menu_its[] = {
 static char *__msg_ui_setting_main_gl_text_get(void *data, Evas_Object *obj, const char *part);
 static void __msg_ui_setting_main_save_cb_activation(void *data);
 static void __msg_ui_setting_main_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_main_save_use_vol_key_activation(void *data);
+static void __msg_ui_setting_main_gl_use_vol_key_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
 static Evas_Object *__msg_ui_setting_main_gl_content_get(void *data, Evas_Object *obj, const char *part);
 static void __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info);
 static Evas_Object *__msg_ui_setting_create_main_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
@@ -41,8 +44,7 @@ static Evas_Object *__msg_ui_setting_create_main_menu(Evas_Object *parent, PMSG_
 static PMSG_SETTING_DATA g_settingData = NULL;
 
 
-static char *
-__msg_ui_setting_main_gl_text_get(void *data, Evas_Object *obj, const char *part)
+static char *__msg_ui_setting_main_gl_text_get(void *data, Evas_Object *obj, const char *part)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -59,8 +61,7 @@ __msg_ui_setting_main_gl_text_get(void *data, Evas_Object *obj, const char *part
        return NULL;
 }
 
-static void
-__msg_ui_setting_main_save_cb_activation(void *data)
+static void __msg_ui_setting_main_save_cb_activation(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -71,13 +72,11 @@ __msg_ui_setting_main_save_cb_activation(void *data)
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
 
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_CBMSG;
-       msg_ui_setting_msg_get_config(settingData);
        msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_CB_RECEIVE_BOOL, set_val);
        msg_ui_setting_msg_set_config(settingData);
 }
 
-static void
-__msg_ui_setting_main_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_main_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -88,8 +87,33 @@ __msg_ui_setting_main_gl_check_clicked_cb(void *data, Evas_Object *obj, void *ev
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static Evas_Object *
-__msg_ui_setting_main_gl_content_get(void *data, Evas_Object *obj, const char *part)
+static void __msg_ui_setting_main_save_use_vol_key_activation(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       Eina_Bool set_val = EINA_FALSE;
+       bool use_vol_key = false;
+
+       set_val = elm_check_state_get(settingData->use_vol_key_activate_check);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (bool)set_val);
+
+       use_vol_key = (bool)set_val;
+       vconf_set_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, use_vol_key);
+}
+
+static void __msg_ui_setting_main_gl_use_vol_key_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_main_save_use_vol_key_activation(settingData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_main_gl_content_get(void *data, Evas_Object *obj, const char *part)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -97,29 +121,46 @@ __msg_ui_setting_main_gl_content_get(void *data, Evas_Object *obj, const char *p
        Evas_Object *check;
        PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
        bool bReceive = false;
+       int use_vol_key = 0;
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
 
        if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
-               check = elm_check_add(obj);
-               settingData->cb_activate_check = check;
+               if (index == MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES) {
+                       check = elm_check_add(obj);
+                       settingData->cb_activate_check = check;
+
+                       msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_CB_RECEIVE_BOOL, &bReceive);
+
+                       if (bReceive == true)
+                               elm_check_state_set(check, EINA_TRUE);
+                       else
+                               elm_check_state_set(check, EINA_FALSE);
 
-               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_CBMSG;
-               msg_ui_setting_msg_get_config(settingData);
-               msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_CB_RECEIVE_BOOL, &bReceive);
+                       elm_object_style_set(check, "on&off");
 
-               if (bReceive == true)
-                       elm_check_state_set(check, EINA_TRUE);
-               else
-                       elm_check_state_set(check, EINA_FALSE);
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_main_gl_check_clicked_cb, settingData);
+
+                       return check;
+               } else if (index == MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY) {
+                       check = elm_check_add(obj);
+                       settingData->use_vol_key_activate_check = check;
+
+                       vconf_get_bool(VCONFKEY_MSG_APP_USE_VOLUME_KEY, &use_vol_key);
+
+                       if (use_vol_key == true)
+                               elm_check_state_set(check, EINA_TRUE);
+                       else
+                               elm_check_state_set(check, EINA_FALSE);
 
-               elm_object_style_set(check, "on&off");
+                       elm_object_style_set(check, "on&off");
 
-               evas_object_propagate_events_set(check, EINA_FALSE);
-               evas_object_smart_callback_add(check, "changed", __msg_ui_setting_main_gl_check_clicked_cb, settingData);
+                       evas_object_propagate_events_set(check, EINA_FALSE);
+                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_main_gl_use_vol_key_check_clicked_cb, settingData);
 
-               msg_release_struct(&(settingData->msg_setting.setting_opt));
-               return check;
+                       return check;
+               }
        } else {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
        }
@@ -127,13 +168,13 @@ __msg_ui_setting_main_gl_content_get(void *data, Evas_Object *obj, const char *p
        return NULL;
 }
 
-static void
-__msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
        int index = (int)data;
+       Eina_Bool set_val = EINA_FALSE;
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
@@ -141,8 +182,6 @@ __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info)
        elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
 
        if (index == MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES) {
-               Eina_Bool set_val = EINA_FALSE;
-
                set_val = elm_check_state_get(settingData->cb_activate_check);
                MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
 
@@ -150,6 +189,14 @@ __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info)
 
                __msg_ui_setting_main_save_cb_activation((void *)settingData);
 
+       } else if (index == MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY) {
+               set_val = elm_check_state_get(settingData->use_vol_key_activate_check);
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
+
+               elm_check_state_set(settingData->use_vol_key_activate_check, !set_val);
+
+               __msg_ui_setting_main_save_use_vol_key_activation((void *)settingData);
+
        } else {
                if (main_menu_its[index].func != NULL)
                        main_menu_its[index].func(settingData, obj, event_info);
@@ -158,8 +205,7 @@ __msg_ui_setting_main_gl_sel(void *data, Evas_Object *obj, void *event_info)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static Evas_Object *
-__msg_ui_setting_create_main_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+static Evas_Object *__msg_ui_setting_create_main_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -189,6 +235,12 @@ __msg_ui_setting_create_main_menu(Evas_Object *parent, PMSG_SETTING_DATA setting
        settingData->sub_title_itc.func.state_get = NULL;
        settingData->sub_title_itc.func.del = NULL;
 
+       settingData->use_vol_key_itc.item_style = "dialogue/1text.1icon";
+       settingData->use_vol_key_itc.func.text_get = __msg_ui_setting_main_gl_text_get;
+       settingData->use_vol_key_itc.func.content_get = __msg_ui_setting_main_gl_content_get;
+       settingData->use_vol_key_itc.func.state_get = NULL;
+       settingData->use_vol_key_itc.func.del = NULL;
+
        for (index = 0; main_menu_its[index].name; index++) {
                if (index == MSG_UI_SETTING_MAIN_MENU_CB_MESSAGES) {
                        elm_genlist_item_append(main_genlist, &settingData->cb_msg_itc, (void *)index, NULL,
@@ -196,6 +248,9 @@ __msg_ui_setting_create_main_menu(Evas_Object *parent, PMSG_SETTING_DATA setting
                } else if (index == MSG_UI_SETTING_MAIN_MENU_SUB_TITLE) {
                        elm_genlist_item_append(main_genlist, &settingData->sub_title_itc, (void *)index, NULL,
                                                ELM_GENLIST_ITEM_NONE, NULL, (void *)index);
+               } else if (index == MSG_UI_SETTING_MAIN_MENU_USE_VOLUME_KEY) {
+                       elm_genlist_item_append(main_genlist, &settingData->use_vol_key_itc, (void *)index, NULL,
+                                               ELM_GENLIST_ITEM_NONE, __msg_ui_setting_main_gl_sel, (void *)index);
                } else {
                        elm_genlist_item_append(main_genlist, &settingData->main_itc, (void *)index, NULL,
                                                ELM_GENLIST_ITEM_NONE, __msg_ui_setting_main_gl_sel, (void *)index);
@@ -311,7 +366,7 @@ void msg_ui_setting_launch_spam_setting(PMSG_SETTING_DATA settingData)
        /* Navigation Frame */
        settingData->navi_frame = msg_ui_setting_create_navigation_layout(settingData->layout_main);
 
-       msg_ui_setting_general_create_view(settingData, NULL, NULL);
+       msg_ui_setting_spam_create_view(settingData, NULL, NULL);
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
index 5b1e0c1..ef992b3 100755 (executable)
@@ -32,13 +32,13 @@ int msg_ui_setting_msg_set_config(PMSG_SETTING_DATA settingData)
                err = msg_set_sms_send_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
                break;
        case MSG_UI_SETTING_TYPE_SMSC_LIST:
-               err = msg_set_smsc_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               err = msg_set_smsc_opt(settingData->msgHandle, settingData->msg_setting.smsc_opt);
                break;
        case MSG_UI_SETTING_TYPE_MMS_SEND:
                err = msg_set_mms_send_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
                break;
        case MSG_UI_SETTING_TYPE_MMS_RECEIVE:
-               err = msg_set_mms_recv_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               err = msg_set_mms_recv_opt(settingData->msgHandle, settingData->msg_setting.mms_recv_opt);
                break;
        case MSG_UI_SETTING_TYPE_CBMSG:
                err = msg_set_cb_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
@@ -48,8 +48,6 @@ int msg_ui_setting_msg_set_config(PMSG_SETTING_DATA settingData)
                return MSG_UI_RET_ERR;
        }
 
-       msg_release_struct(&(settingData->msg_setting.setting_opt));
-
        MSG_UI_RETVM_IF(MSG_UI_LEVEL_ASSERT, err != MSG_SUCCESS, -1, "[FAIL] msg_set_config of MSG FW : err %d \n", err);
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
@@ -73,16 +71,16 @@ int msg_ui_setting_msg_get_config(PMSG_SETTING_DATA settingData)
                err = msg_get_sms_send_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
                break;
        case MSG_UI_SETTING_TYPE_SMSC_LIST:
-               settingData->msg_setting.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_SMSC_OPT);
-               err = msg_get_smsc_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               settingData->msg_setting.smsc_opt = msg_create_struct(MSG_STRUCT_SETTING_SMSC_OPT);
+               err = msg_get_smsc_opt(settingData->msgHandle, settingData->msg_setting.smsc_opt);
                break;
        case MSG_UI_SETTING_TYPE_MMS_SEND:
                settingData->msg_setting.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_MMS_SEND_OPT);
                err = msg_get_mms_send_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
                break;
        case MSG_UI_SETTING_TYPE_MMS_RECEIVE:
-               settingData->msg_setting.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_MMS_RECV_OPT);
-               err = msg_get_mms_recv_opt(settingData->msgHandle, settingData->msg_setting.setting_opt);
+               settingData->msg_setting.mms_recv_opt = msg_create_struct(MSG_STRUCT_SETTING_MMS_RECV_OPT);
+               err = msg_get_mms_recv_opt(settingData->msgHandle, settingData->msg_setting.mms_recv_opt);
                break;
        case MSG_UI_SETTING_TYPE_CBMSG:
                settingData->msg_setting.setting_opt = msg_create_struct(MSG_STRUCT_SETTING_CB_OPT);
@@ -93,6 +91,8 @@ int msg_ui_setting_msg_get_config(PMSG_SETTING_DATA settingData)
                return MSG_UI_RET_ERR;
        }
 
+       MSG_UI_RETVM_IF(MSG_UI_LEVEL_ASSERT, err != MSG_SUCCESS, -1, "[FAIL] msg_get_config of MSG FW : err %d \n", err);
+
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 
        return err;
index 40e1707..6903801 100755 (executable)
@@ -68,6 +68,7 @@ static Evas_Object *__msg_ui_setting_mm_gl_content_get(void *data, Evas_Object *
 static void __msg_ui_setting_mm_gl_sel(void *data, Evas_Object *obj, void *event_info);
 static void __msg_ui_setting_mm_gl_exp(void *data, Evas_Object *obj, void *event_info);
 static void __msg_ui_setting_mm_gl_con(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_mm_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
 static Evas_Object *__msg_ui_setting_mm_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
 
 
@@ -92,7 +93,6 @@ static void __msg_ui_setting_mm_save_creation_mode(void *data)
 
        /* Save selected value. */
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
-       msg_ui_setting_msg_get_config(settingData);
        if (selection == 1)
                msg_set_int_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_CREATION_MODE_INT, MSG_CREATION_MODE_WARNING);
        else if (selection == 2)
@@ -152,10 +152,7 @@ static Evas_Object *__msg_ui_setting_mm_creation_mode_gl_content_get(void *data,
                evas_object_propagate_events_set(radio, EINA_FALSE);
                evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_mm_creation_mode_radio_cb, (void *)settingData);
 
-               if (index == 0)
-                       settingData->list.mm_msg.creation_radio_group = radio;
-               else
-                       elm_radio_group_add(radio, settingData->list.mm_msg.creation_radio_group);
+               elm_radio_group_add(radio, settingData->list.mm_msg.creation_radio_group);
 
                return radio;
        } else {
@@ -227,7 +224,6 @@ static void __msg_ui_setting_mm_save_read_rep_request(void *data)
 
        /* Set requesting read report in sending option. */
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
-       msg_ui_setting_msg_get_config(settingData);
        msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, set_val);
        msg_ui_setting_msg_set_config(settingData);
 }
@@ -245,8 +241,7 @@ static void __msg_ui_setting_mm_save_read_rep_send(void *data)
 
        /* Set sending read report in receiving option. */
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-       msg_ui_setting_msg_get_config(settingData);
-       msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_READ_REPORT_BOOL, set_val);
+       msg_set_bool_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_READ_REPORT_BOOL, set_val);
        msg_ui_setting_msg_set_config(settingData);
 }
 
@@ -283,8 +278,6 @@ static Evas_Object *__msg_ui_setting_mm_read_rep_gl_content_get(void *data, Evas
                        check = elm_check_add(obj);
                        settingData->list.mm_msg.mm_read_rep_request_check = check;
 
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
-                       msg_ui_setting_msg_get_config(settingData);
                        msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &bReadValue);
                        if (bReadValue == true)
                                elm_check_state_set(check, EINA_TRUE);
@@ -296,16 +289,12 @@ static Evas_Object *__msg_ui_setting_mm_read_rep_gl_content_get(void *data, Evas
                        evas_object_propagate_events_set(check, EINA_FALSE);
                        evas_object_smart_callback_add(check, "changed", __msg_ui_setting_mm_read_rep_gl_check_clicked_cb, settingData);
 
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
-
                        return check;
                } else if (index == MSG_UI_SETTING_MM_READ_REP_MENU_SEND) {
                        check = elm_check_add(obj);
                        settingData->list.mm_msg.mm_read_rep_send_check = check;
 
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-                       msg_ui_setting_msg_get_config(settingData);
-                       msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_READ_REPORT_BOOL, &bReadValue);
+                       msg_get_bool_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_READ_REPORT_BOOL, &bReadValue);
                        if (bReadValue == true)
                                elm_check_state_set(check, EINA_TRUE);
                        else
@@ -316,8 +305,6 @@ static Evas_Object *__msg_ui_setting_mm_read_rep_gl_content_get(void *data, Evas
                        evas_object_propagate_events_set(check, EINA_FALSE);
                        evas_object_smart_callback_add(check, "changed", __msg_ui_setting_mm_read_rep_gl_check_clicked_cb, settingData);
 
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
-
                        return check;
                } else {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
@@ -413,12 +400,6 @@ void msg_ui_setting_mm_read_rep_main(void *data, Evas_Object *obj, void *event_i
        Evas_Object *mm_read_rep_genlist;
        Elm_Object_Item *navi_it;
 
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
-       msg_ui_setting_msg_get_config(settingData);
-
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-       msg_ui_setting_msg_get_config(settingData);
-
        read_rep_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
 
        mm_read_rep_genlist = __msg_ui_setting_mm_read_rep_create_view(settingData->navi_frame, settingData);
@@ -452,9 +433,8 @@ static char *__msg_ui_setting_mm_gl_text_get(void *data, Evas_Object *obj, const
                                return strdup(dgettext(MESSAGE_PKGNAME, mm_menu_its[index].name));
                }
        } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
-               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
-               msg_ui_setting_msg_get_config(settingData);
                msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_CREATION_MODE_INT, &creationMode);
+
                if (creationMode == MSG_CREATION_MODE_FREE)
                        return strdup(dgettext(MESSAGE_PKGNAME, mm_creation_mode_menu_its[0].name));
                else if (creationMode == MSG_CREATION_MODE_WARNING)
@@ -463,7 +443,6 @@ static char *__msg_ui_setting_mm_gl_text_get(void *data, Evas_Object *obj, const
                        return strdup(dgettext(MESSAGE_PKGNAME, mm_creation_mode_menu_its[2].name));
                else
                        MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid mode = %d", creationMode);
-               msg_release_struct(&(settingData->msg_setting.setting_opt));
        } else {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
        }
@@ -484,14 +463,12 @@ static void __msg_ui_setting_mm_save_delivery_rep(void *data)
 
        /* Set requesting delivery report in sending option. */
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
-       msg_ui_setting_msg_get_config(settingData);
        msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, set_val);
        msg_ui_setting_msg_set_config(settingData);
 
        /* Set sending delivery report in receiving option. */
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-       msg_ui_setting_msg_get_config(settingData);
-       msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_DELIVERY_REPORT_BOOL, set_val);
+       msg_set_bool_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_DELIVERY_REPORT_BOOL, set_val);
        msg_ui_setting_msg_set_config(settingData);
 }
 
@@ -517,7 +494,7 @@ static Evas_Object *__msg_ui_setting_mm_gl_content_get(void *data, Evas_Object *
        int index = (int)data;
        Evas_Object *check;
        PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
-       bool bReadReply = false;
+       bool bDeliveryReport = false;
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
 
@@ -527,10 +504,9 @@ static Evas_Object *__msg_ui_setting_mm_gl_content_get(void *data, Evas_Object *
                        settingData->list.mm_msg.mm_delivery_report_check = check;
 
                        /* We decide delivery report setting based on sending option setting. */
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
-                       msg_ui_setting_msg_get_config(settingData);
-                       msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &bReadReply);
-                       if (bReadReply == true)
+                       msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, &bDeliveryReport);
+
+                       if (bDeliveryReport == true)
                                elm_check_state_set(check, EINA_TRUE);
                        else
                                elm_check_state_set(check, EINA_FALSE);
@@ -540,8 +516,6 @@ static Evas_Object *__msg_ui_setting_mm_gl_content_get(void *data, Evas_Object *
                        evas_object_propagate_events_set(check, EINA_FALSE);
                        evas_object_smart_callback_add(check, "changed", __msg_ui_setting_mm_gl_check_clicked_cb, settingData);
 
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
-
                        return check;
                } else {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
@@ -617,6 +591,8 @@ static void __msg_ui_setting_mm_gl_exp(void *data, Evas_Object *obj, void *event
                settingData->list.mm_msg.mm_creation_mode_itc.func.state_get = NULL;
                settingData->list.mm_msg.mm_creation_mode_itc.func.del = NULL;
 
+               settingData->list.mm_msg.creation_radio_group = elm_radio_add(obj);
+
                for (index = 0; mm_creation_mode_menu_its[index].name; index++) {
                        elm_genlist_item_append(settingData->list.mm_msg.mm_genlist,
                                                                                &settingData->list.mm_msg.mm_creation_mode_itc,
@@ -626,8 +602,6 @@ static void __msg_ui_setting_mm_gl_exp(void *data, Evas_Object *obj, void *event
 
                if (settingData->list.mm_msg.creation_radio_group) {
                        /* Set creation mode current value */
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
-                       msg_ui_setting_msg_get_config(settingData);
                        msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_SENDOPT_CREATION_MODE_INT, &creationMode);
                        if (creationMode == MSG_CREATION_MODE_WARNING)
                                elm_radio_value_set(settingData->list.mm_msg.creation_radio_group, 1);
@@ -635,8 +609,6 @@ static void __msg_ui_setting_mm_gl_exp(void *data, Evas_Object *obj, void *event
                                elm_radio_value_set(settingData->list.mm_msg.creation_radio_group, 2);
                        else
                                elm_radio_value_set(settingData->list.mm_msg.creation_radio_group, 0);
-
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
                }
        }
 }
@@ -649,6 +621,22 @@ static void __msg_ui_setting_mm_gl_con(void *data, Evas_Object *obj, void *event
        elm_genlist_item_subitems_clear(item);
 }
 
+static void __msg_ui_setting_mm_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+       msg_release_struct(&(settingData->msg_setting.mms_recv_opt));
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return;
+}
+
 static Evas_Object *__msg_ui_setting_mm_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -716,9 +704,14 @@ void msg_ui_setting_mm_create_view(void *data, Evas_Object *obj, void *event_inf
        Evas_Object *mm_genlist;
        Elm_Object_Item *navi_it;
 
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_SEND;
        msg_ui_setting_msg_get_config(settingData);
 
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
+       msg_ui_setting_msg_get_config(settingData);
+
        /* Initialize global variable. */
        memset(&settingData->list.mm_msg, 0x0, sizeof(settingData->list.mm_msg));
 
@@ -729,6 +722,9 @@ void msg_ui_setting_mm_create_view(void *data, Evas_Object *obj, void *event_inf
 
        navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SETTINGS_MULTIMEDIAMESSAGE"), NULL, NULL, mm_layout, NULL);
 
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
+                       __msg_ui_setting_mm_back_btn_cb, settingData);
+
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
index 379cc69..e514ba4 100755 (executable)
@@ -107,9 +107,7 @@ __msg_ui_setting_mm_recv_save_home_network(void *data)
        }
 
        /* Save selected value. */
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-       msg_ui_setting_msg_get_config(settingData);
-       msg_set_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, set_val);
+       msg_set_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, set_val);
        err = msg_ui_setting_msg_set_config(settingData);
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_ui_setting_msg_set_config(home network) is %d", err);
 
@@ -167,28 +165,20 @@ __msg_ui_setting_mm_recv_home_network_gl_content_get(void *data, Evas_Object *ob
                elm_radio_state_value_set(radio, index);
                evas_object_propagate_events_set(radio, EINA_FALSE);
                evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_mm_recv_home_network_radio_cb, (void *)settingData);
-
-               if (index == 0)
-                       settingData->list.mm_msg.mm_recv_home_network_radio_group = radio;
-               else
-                       elm_radio_group_add(radio, settingData->list.mm_msg.mm_recv_home_network_radio_group);
+               elm_radio_group_add(radio, settingData->list.mm_msg.mm_recv_home_network_radio_group);
 
                /* When user contract expanded genlist item, genlist is updated.
                 * In this case, radio button is set to first item.
                 * Therefore, we should check and set radio value when last item is redrawn.
                 */
                if (index == 2) {
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-                       msg_ui_setting_msg_get_config(settingData);
-                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &retrieveType);
+                       msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &retrieveType);
                        if (retrieveType == MSG_HOME_MANUAL)
                                elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 1);
                        else if (retrieveType == MSG_HOME_REJECT)
                                elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 2);
                        else
                                elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 0);
-
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
                }
 
                return radio;
@@ -242,9 +232,7 @@ __msg_ui_setting_mm_recv_save_foreign_network(void *data)
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected value is %d", selection);
 
        /* Save selected value. */
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-       msg_ui_setting_msg_get_config(settingData);
-       msg_set_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, selection);
+       msg_set_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, selection);
        err = msg_ui_setting_msg_set_config(settingData);
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_ui_setting_msg_set_config(Foreign network) is %d", err);
 
@@ -302,20 +290,14 @@ __msg_ui_setting_mm_recv_foreign_network_gl_content_get(void *data, Evas_Object
                elm_radio_state_value_set(radio, index);
                evas_object_propagate_events_set(radio, EINA_FALSE);
                evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_mm_recv_foreign_network_radio_cb, (void *)settingData);
-
-               if (index == 0)
-                       settingData->list.mm_msg.mm_recv_foreign_network_radio_group = radio;
-               else
-                       elm_radio_group_add(radio, settingData->list.mm_msg.mm_recv_foreign_network_radio_group);
+               elm_radio_group_add(radio, settingData->list.mm_msg.mm_recv_foreign_network_radio_group);
 
                /* When user contract expanded genlist item, genlist is updated.
                 * In this case, radio button is set to first item.
                 * Therefore, we should check and set radio value when last item is redrawn.
                 */
                if (index == 3) {
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-                       msg_ui_setting_msg_get_config(settingData);
-                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &retrieveType);
+                       msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &retrieveType);
                        if (retrieveType == MSG_ABROAD_MANUAL)
                                elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 1);
                        else if (retrieveType == MSG_ABROAD_RESTRICTED)
@@ -324,8 +306,6 @@ __msg_ui_setting_mm_recv_foreign_network_gl_content_get(void *data, Evas_Object
                                elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 3);
                        else
                                elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 0);
-
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
                }
 
                return radio;
@@ -385,10 +365,7 @@ __msg_ui_setting_mm_recv_gl_text_get(void *data, Evas_Object *obj, const char *p
                }
        } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
                if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_HOME) {
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-                       msg_ui_setting_msg_get_config(settingData);
-                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &set_val);
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+                       msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &set_val);
 
                        switch (set_val) {
                        case MSG_HOME_AUTO_DOWNLOAD:
@@ -408,10 +385,7 @@ __msg_ui_setting_mm_recv_gl_text_get(void *data, Evas_Object *obj, const char *p
                                break;
                        }
                } else if (index == MSG_UI_SETTING_MM_RECV_OPT_MENU_FOREIGN) {
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-                       msg_ui_setting_msg_get_config(settingData);
-                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &set_val);
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+                       msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &set_val);
 
                        switch (set_val) {
                        case MSG_ABROAD_AUTO_DOWNLOAD:
@@ -500,6 +474,8 @@ __msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info)
                        settingData->list.mm_msg.mm_recv_home_network_itc.func.state_get = NULL;
                        settingData->list.mm_msg.mm_recv_home_network_itc.func.del = NULL;
 
+                       settingData->list.mm_msg.mm_recv_home_network_radio_group = elm_radio_add(obj);
+
                        for (index = 0; mm_recv_home_network_menu_its[index].name; index++) {
                                elm_genlist_item_append(settingData->list.mm_msg.mm_recv_genlist,
                                                                                        &settingData->list.mm_msg.mm_recv_home_network_itc,
@@ -508,9 +484,7 @@ __msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info)
                        }
 
                        if (settingData->list.mm_msg.mm_recv_home_network_radio_group) {
-                               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-                               msg_ui_setting_msg_get_config(settingData);
-                               msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &retrieveType);
+                               msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_HOME_RETRIEVE_TYPE_INT, &retrieveType);
 
                                if (retrieveType == MSG_HOME_MANUAL)
                                        elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 1);
@@ -518,8 +492,6 @@ __msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info)
                                        elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 2);
                                else
                                        elm_radio_value_set(settingData->list.mm_msg.mm_recv_home_network_radio_group, 0);
-
-                               msg_release_struct(&(settingData->msg_setting.setting_opt));
                        }
                } else if (it == settingData->list.mm_msg.mm_recv_foreign_network_item) {
                        settingData->list.mm_msg.mm_recv_foreign_network_itc.item_style = "dialogue/1text.1icon.2/expandable2";
@@ -528,6 +500,8 @@ __msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info)
                        settingData->list.mm_msg.mm_recv_foreign_network_itc.func.state_get = NULL;
                        settingData->list.mm_msg.mm_recv_foreign_network_itc.func.del = NULL;
 
+                       settingData->list.mm_msg.mm_recv_foreign_network_radio_group = elm_radio_add(obj);
+
                        for (index = 0; mm_recv_foreign_network_menu_its[index].name; index++) {
                                elm_genlist_item_append(settingData->list.mm_msg.mm_recv_genlist,
                                                                                        &settingData->list.mm_msg.mm_recv_foreign_network_itc,
@@ -536,9 +510,7 @@ __msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info)
                        }
 
                        if (settingData->list.mm_msg.mm_recv_foreign_network_radio_group) {
-                               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-                               msg_ui_setting_msg_get_config(settingData);
-                               msg_get_int_value(settingData->msg_setting.setting_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &retrieveType);
+                               msg_get_int_value(settingData->msg_setting.mms_recv_opt, MSG_MMS_RECVOPT_ABROAD_RETRIEVE_TYPE_INT, &retrieveType);
 
                                if (retrieveType == MSG_ABROAD_MANUAL)
                                        elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 1);
@@ -548,8 +520,6 @@ __msg_ui_setting_mm_recv_gl_exp(void *data, Evas_Object *obj, void *event_info)
                                        elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 3);
                                else
                                        elm_radio_value_set(settingData->list.mm_msg.mm_recv_foreign_network_radio_group, 0);
-
-                               msg_release_struct(&(settingData->msg_setting.setting_opt));
                        }
                } else {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid it = 0x%x", it);
@@ -624,7 +594,6 @@ void msg_ui_setting_mm_recv_opt_main(void *data, Evas_Object *obj, void *event_i
        Elm_Object_Item *navi_it;
 
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_MMS_RECEIVE;
-       msg_ui_setting_msg_get_config(settingData);
 
        recv_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
 
diff --git a/setting/src/spam/msg-ui-setting-spam-block-number.c b/setting/src/spam/msg-ui-setting-spam-block-number.c
new file mode 100755 (executable)
index 0000000..08e9ead
--- /dev/null
@@ -0,0 +1,1735 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-spam-setting.h"
+
+#include <contacts-svc.h>
+#include <contacts-ug.h>
+
+static struct _msg_ui_setting_mixed_list_item title_menu_its[] = {
+       { 1, "Add number", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "Edit number", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item detail_menu_its[] = {
+       { 1, " ", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "Match Criteria", NULL, ELM_GENLIST_ITEM_TREE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+static struct _msg_ui_setting_mixed_list_item match_criteria_mode_menu_its[] = {
+       { 2, "Exactly the same as", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "Start with", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "Include", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 2, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static void __msg_ui_setting_block_number_match_criteria_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static char *__msg_ui_setting_block_number_match_criteria_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_match_criteria_mode_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_number_match_criteria_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_match_criteria_select_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_match_criteria_gl_exp(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_match_criteria_gl_con(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_setting_block_number_detail_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static void __msg_ui_setting_block_number_detail_phonui_ug_result_cb(ui_gadget_h ug, service_h result, void *priv);
+static void __msg_ui_setting_block_number_detail_ct_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_number_detail_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_setting_block_number_create_detail_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_number_detail_trans_finished(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_save(void *data);
+static void __msg_ui_setting_block_number_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_detail_view(void *data, int index);
+
+static char *__msg_ui_setting_block_number_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_gl_dialogue_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_number_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_create_block_number_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_number_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_setting_block_number_delete_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_number_delete_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_number_delete_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_number_delete_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_create_number_delete_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_number_check_select_all(void *data);
+static void __msg_ui_setting_block_number_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_sel_all_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_delete_mode_exit(void *data);
+static void __msg_ui_setting_block_number_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_delete_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_number_delete_view_controlbar(void *data);
+static void __msg_ui_setting_block_number_delete_view(void *data);
+
+static void __msg_ui_setting_block_number_update_view(void *data);
+static void __msg_ui_setting_destroy_block_number_main(void *data);
+static void __msg_ui_setting_init_block_number_main(void *data);
+static void __msg_ui_setting_show_block_number_main(void *data);
+static void __msg_ui_setting_block_number_update_controlbar(void *data);
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+
+/**********************************
+ ***  Match Criteria detail view  ***
+ **********************************/
+
+static void __msg_ui_setting_block_number_match_criteria_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       Eina_Bool expand_state = EINA_FALSE;
+
+       if (index > MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_MAX)
+               return;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_NAME) {
+               expand_state = elm_genlist_item_expanded_get(settingData->block_msg.block_filter_detail_match_criteria_item);
+               if (expand_state == EINA_FALSE) {
+                       elm_genlist_item_expanded_set(settingData->block_msg.block_filter_detail_match_criteria_item, EINA_TRUE);
+                       elm_object_focus_set(settingData->block_msg.block_filter_detail_entry, EINA_FALSE);
+               } else {
+                       elm_genlist_item_expanded_set(settingData->block_msg.block_filter_detail_match_criteria_item, EINA_FALSE);
+               }
+       } else {
+               if (match_criteria_mode_menu_its[index].func != NULL) {
+                       match_criteria_mode_menu_its[index].func(settingData, obj, event_info);
+
+                       /* If expandable genlist item is expanded, it should be contracted.
+                        * Because, wrong radio button is selected when it is back from other sub menu.
+                        */
+                       expand_state = elm_genlist_item_expanded_get(settingData->block_msg.block_filter_detail_match_criteria_item);
+                       if (expand_state == EINA_TRUE)
+                               elm_genlist_item_expanded_set(settingData->block_msg.block_filter_detail_match_criteria_item, EINA_FALSE);
+               }
+       }
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "expand_state = %d", expand_state);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static char *__msg_ui_setting_block_number_match_criteria_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if(index >= sizeof(match_criteria_mode_menu_its) / sizeof(match_criteria_mode_menu_its[0])) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (match_criteria_mode_menu_its[index].name) {
+                       if (strstr(match_criteria_mode_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", match_criteria_mode_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[index].name));
+               }
+       }
+        else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_match_criteria_mode_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Save selected Criteria value. */
+       settingData->block_msg.match_criteria = elm_radio_value_get(settingData->block_msg.block_filter_detail_match_criteria_radio_group) + 1;
+
+       elm_genlist_item_update(settingData->block_msg.block_filter_detail_match_criteria_item);
+}
+
+static Evas_Object *__msg_ui_setting_block_number_match_criteria_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               evas_object_propagate_events_set(radio, EINA_FALSE);
+               evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_block_number_match_criteria_mode_radio_cb, (void *)settingData);
+
+               if (index == 0)
+                       settingData->block_msg.block_filter_detail_match_criteria_radio_group = radio;
+               else
+                       elm_radio_group_add(radio, settingData->block_msg.block_filter_detail_match_criteria_radio_group);
+
+               return radio;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_match_criteria_select_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = NULL;
+       int index = (int)data;
+
+       settingData = msg_ui_setting_get_data();
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       /* Change radio selection. */
+       elm_radio_value_set(settingData->block_msg.block_filter_detail_match_criteria_radio_group, index);
+
+       /* Save selected Criteria value. */
+       settingData->block_msg.match_criteria = elm_radio_value_get(settingData->block_msg.block_filter_detail_match_criteria_radio_group) + 1;
+
+       elm_genlist_item_update(settingData->block_msg.block_filter_detail_match_criteria_item);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return;
+}
+
+static void __msg_ui_setting_block_number_match_criteria_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = event_info;
+       int index = 0;
+       int depth = 0;
+       int matchCriteria = -1;
+
+       depth = elm_genlist_item_expanded_depth_get(it);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "depth = %d", depth);
+
+       if (depth == 0) {
+               settingData->block_msg.block_filter_detail_match_criteria_itc.item_style="dialogue/1text.1icon.2/expandable2";
+               settingData->block_msg.block_filter_detail_match_criteria_itc.func.text_get = __msg_ui_setting_block_number_match_criteria_gl_text_get;
+               settingData->block_msg.block_filter_detail_match_criteria_itc.func.content_get = __msg_ui_setting_block_number_match_criteria_gl_content_get;
+               settingData->block_msg.block_filter_detail_match_criteria_itc.func.state_get = NULL;
+               settingData->block_msg.block_filter_detail_match_criteria_itc.func.del = NULL;
+
+               for (index = 0; match_criteria_mode_menu_its[index].name; index++) {
+                       elm_genlist_item_append(settingData->block_msg.block_filter_detail_genlist,
+                                                                       &settingData->block_msg.block_filter_detail_match_criteria_itc,
+                                                                               (void *)index, it, match_criteria_mode_menu_its[index].type,
+                                                                               __msg_ui_setting_block_number_match_criteria_select_gl_sel, (void *)index);
+               }
+               matchCriteria = settingData->block_msg.match_criteria;
+
+               /* Set Match Criteria current value */
+               if (matchCriteria == MSG_FILTER_BY_ADDRESS_SAME)
+                       elm_radio_value_set(settingData->block_msg.block_filter_detail_match_criteria_radio_group, 0);
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_START)
+                       elm_radio_value_set(settingData->block_msg.block_filter_detail_match_criteria_radio_group, 1);
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_INCLUDE)
+                       elm_radio_value_set(settingData->block_msg.block_filter_detail_match_criteria_radio_group, 2);
+       }
+}
+
+static void __msg_ui_setting_block_number_match_criteria_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Elm_Object_Item *item = event_info;
+       elm_genlist_item_subitems_clear(item);
+}
+
+/**********************************
+ ***  Block filter detail view  ***
+ **********************************/
+
+static char *__msg_ui_setting_block_number_detail_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       int matchCriteria = -1;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (index > MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_MAX)
+               return NULL;
+
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (index == MSG_UI_SETTING_BLOCK_NUMBER_DETAIL_MENU_NAME) {
+                       return strdup(dgettext(MESSAGE_PKGNAME, detail_menu_its[1].name));
+               }
+               else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
+               }
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               matchCriteria = settingData->block_msg.match_criteria;
+
+               if (matchCriteria == MSG_FILTER_BY_ADDRESS_SAME)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[0].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_START)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[1].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_INCLUDE)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[2].name));
+               else
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Match Criteria mode fail = %d", matchCriteria);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       char *buf = NULL;
+
+       if (elm_object_focus_get(settingData->block_msg.block_filter_detail_entry_ly)) {
+               if (elm_entry_is_empty(obj))
+                       elm_object_signal_emit(settingData->block_msg.block_filter_detail_entry_ly, "elm,state,eraser,hide", "elm");
+               else
+                       elm_object_signal_emit(settingData->block_msg.block_filter_detail_entry_ly, "elm,state,eraser,show", "elm");
+       }
+
+       buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
+
+       /* If input strings are composed of only space or empty, Done button should be disabled. */
+       if (!buf || strlen(g_strstrip(buf)) == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "No value");
+               if (elm_object_disabled_get(settingData->block_msg.block_filter_detail_done_btn) == EINA_FALSE)
+                       elm_object_disabled_set(settingData->block_msg.block_filter_detail_done_btn, EINA_TRUE);
+       } else {
+               if (elm_object_disabled_get(settingData->block_msg.block_filter_detail_done_btn) == EINA_TRUE)
+                       elm_object_disabled_set(settingData->block_msg.block_filter_detail_done_btn, EINA_FALSE);
+       }
+
+       if (buf != NULL)
+               free(buf);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_number_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(layout, "elm,state,eraser,show", "elm");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_number_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *layout = (Evas_Object *)data;
+
+       elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_number_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *entry = (Evas_Object *)data;
+
+       elm_entry_entry_set(entry, "");
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_number_detail_phonui_ug_result_cb(ui_gadget_h ug, service_h result, void *priv)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !ug);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !result);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !priv);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)priv;
+
+       int contact_index = 0;
+       int person_index = 0;
+       int num_id = 0;
+       int ct_ret = CTS_SUCCESS;
+       char *number_str = NULL;
+       char *service_val = NULL;
+       MSG_BOOL bInvalidNum = FALSE;
+       MSG_BOOL isContactId = FALSE;
+
+       service_get_extra_data(result, CT_UG_BUNDLE_RESULT_NUMBER_ID, &service_val);
+
+       if (service_val) {
+               num_id = atoi(service_val);
+               isContactId = TRUE;
+       } else {
+               /* phonelog id list*/
+               service_get_extra_data(result, "plog_id", &service_val);
+               MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !service_val);
+
+               num_id = atoi(service_val);
+       }
+
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, num_id <= 0);
+
+       if (isContactId) {
+               /* contact id list */
+               CTSvalue *value = NULL;
+               CTSstruct *contact = NULL;
+
+               contact_index = contacts_svc_get_contact_value(CTS_GET_NUMBER_VALUE, num_id, &value);
+               if (contact_index <= 0) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Fail to get contact value contact_index = %d", contact_index);
+                       goto ERROR_EXIT;
+               }
+
+               /* get number str */
+               number_str = strdup(contacts_svc_value_get_str(value, CTS_NUM_VAL_NUMBER_STR));
+
+               contacts_svc_value_free(value);
+               value = NULL;
+
+               /* get person id */
+               ct_ret = contacts_svc_get_contact(contact_index, &contact);
+               if (ct_ret != CTS_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "contacts_svc_get_contact is failed ct_ret = %d", ct_ret);
+                       if (number_str) {
+                               free(number_str);
+                               number_str = NULL;
+                       }
+                       goto ERROR_EXIT;
+               }
+
+               ct_ret = contacts_svc_struct_get_value(contact, CTS_CF_BASE_INFO_VALUE, &value);
+               if (ct_ret != CTS_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "contacts_svc_struct_get_value is failed ct_ret = %d", ct_ret);
+                       contacts_svc_struct_free(contact);
+                       if (number_str) {
+                               free(number_str);
+                               number_str = NULL;
+                       }
+                       goto ERROR_EXIT;
+               }
+
+               person_index = contacts_svc_value_get_int(value, CTS_BASE_VAL_PERSON_ID_INT);
+
+               contacts_svc_value_free(value);
+               contacts_svc_struct_free(contact);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected number_id = %d, contact_id = %d, person_id = %d, number = %s", num_id, contact_index, person_index, number_str);
+
+               if (number_str) {
+                       if (strlen(number_str) == 0) {
+                               bInvalidNum = TRUE;
+                       } else {
+                               elm_entry_entry_set(settingData->block_msg.block_filter_detail_entry, number_str);
+                       }
+
+                       free(number_str);
+                       number_str = NULL;
+               } else {
+                       D_EMSG("contact id %d, person id %d is unuseable !!", contact_index, person_index);
+               }
+       } else {
+               /* phonelog id list */
+               CTSvalue *plog = NULL;
+               int ret = contacts_svc_get_phonelog(num_id, &plog);
+               if (ret != CTS_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Fail to get phonlog value ret = %d", ret);
+                       goto ERROR_EXIT;
+               }
+
+               number_str = strdup(contacts_svc_value_get_str(plog, CTS_PLOG_VAL_NUMBER_STR));
+               contact_index = contacts_svc_value_get_int(plog, CTS_PLOG_VAL_RELATED_ID_INT);
+
+               contacts_svc_value_free(plog);
+
+               if (number_str) {
+                       if (strlen(number_str) == 0) {
+                               bInvalidNum = TRUE;
+                       } else {
+                               elm_entry_entry_set(settingData->block_msg.block_filter_detail_entry, number_str);
+                       }
+
+                       free(number_str);
+                       number_str = NULL;
+               }
+       }
+
+ERROR_EXIT:
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "bInvalidNum = %d", bInvalidNum);
+       if (bInvalidNum) {
+               msg_ui_setting_common_show_notify(settingData, "Invalid address!!");
+       }
+       D_LEAVE;
+}
+
+static void __msg_ui_setting_block_number_detail_ct_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       settingData->loaded_ug = msg_ui_setting_common_call_phoneui_ug(settingData, __msg_ui_setting_block_number_detail_phonui_ug_result_cb);
+}
+
+static Evas_Object *__msg_ui_setting_block_number_detail_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+
+       int sel_index = settingData->block_msg.block_filter_sel_index;
+       char filter_val[MAX_FILTER_VALUE_LEN+1] = {0,};
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sel_index = %d", sel_index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               if (index == MSG_UI_SETTING_BLOCK_DETAIL_MENU_DATA) {
+                       char *buf = NULL;
+                       static Elm_Entry_Filter_Limit_Size block_number_limit_filter_data;
+                       static Elm_Entry_Filter_Accept_Set block_number_accept_filter_data;
+
+                       Evas_Object *block_filter_ly = NULL;
+                       Evas_Object *block_filter_entry = NULL;
+                       Evas_Object *ct_ly;
+                       Evas_Object *ct_button;
+                       Evas_Object *icon;
+
+                       ct_ly = elm_layout_add(obj);
+                       elm_layout_file_set(ct_ly, MSG_SETTING_THEME, "editfield_layout_with_contact_button");
+
+                       block_filter_ly = elm_layout_add(obj);
+                       if (block_filter_ly == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "block_filter_ly failed");
+                               return NULL;
+                       }
+                       elm_layout_theme_set(block_filter_ly, "layout", "editfield", "title");
+                       elm_object_part_content_set(ct_ly, "elm.swallow.content", block_filter_ly);
+                       settingData->block_msg.block_filter_detail_entry_ly = block_filter_ly;
+
+                       block_filter_entry = elm_entry_add(block_filter_ly);
+                       if (block_filter_entry == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "block_filter_entry failed");
+                               return NULL;
+                       }
+                       elm_entry_single_line_set(block_filter_entry, EINA_TRUE);
+                       elm_entry_scrollable_set(block_filter_entry, EINA_TRUE);
+                       elm_entry_autocapital_type_set(block_filter_entry, ELM_AUTOCAPITAL_TYPE_NONE);
+                       elm_entry_input_panel_layout_set(block_filter_entry, ELM_INPUT_PANEL_LAYOUT_PHONENUMBER);
+                       settingData->block_msg.block_filter_detail_entry = block_filter_entry;
+
+                       evas_object_smart_callback_add(block_filter_entry, "changed", __msg_ui_setting_block_number_detail_entry_changed_cb, (void *)settingData);
+                       evas_object_smart_callback_add(block_filter_entry, "preedit,changed", __msg_ui_setting_block_number_detail_entry_changed_cb, (void *)settingData);
+                       evas_object_smart_callback_add(block_filter_entry, "focused", __msg_ui_setting_block_number_detail_entry_focus_cb, (void *)block_filter_ly);
+                       evas_object_smart_callback_add(block_filter_entry, "unfocused", __msg_ui_setting_block_number_detail_entry_unfocus_cb, (void *)block_filter_ly);
+                       elm_object_signal_callback_add(block_filter_ly, "elm,eraser,clicked", "elm", __msg_ui_setting_block_number_detail_eraser_clicked_cb, (void *)block_filter_entry);
+
+                       /* Before giving focus to the entry object, the entry object should be shown. */
+                       evas_object_show(block_filter_entry);
+                       elm_object_part_content_set(block_filter_ly, "elm.swallow.content", block_filter_entry);
+                       elm_object_part_text_set(block_filter_ly, "elm.text", "Enter number");
+
+                       block_number_limit_filter_data.max_char_count = 0;
+                       block_number_limit_filter_data.max_byte_count = MAX_FILTER_VALUE_LEN;
+                       elm_entry_markup_filter_append(block_filter_entry, elm_entry_filter_limit_size, &block_number_limit_filter_data);
+
+                       /* If '*', '#', 'P' are inputed, it will be ignored. */
+                       block_number_accept_filter_data.accepted = "*+#0123456789";
+                       block_number_accept_filter_data.rejected = NULL;
+                       elm_entry_markup_filter_append(block_filter_entry, elm_entry_filter_accept_set, &block_number_accept_filter_data);
+                       elm_entry_cnp_mode_set(block_filter_entry, ELM_CNP_MODE_PLAINTEXT);
+
+                       /* Set data only in edit case. */
+                       if (sel_index != MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+                               msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[sel_index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+                               if (strlen(filter_val) > 0) {
+                                       buf = elm_entry_utf8_to_markup(filter_val);
+                                       elm_entry_entry_set(block_filter_entry, buf);
+                                       if (buf != NULL) {
+                                               free(buf);
+                                               buf = NULL;
+                                       }
+                               }
+                       }
+
+                       elm_object_focus_set(settingData->block_msg.block_filter_detail_entry, EINA_TRUE);
+                       elm_entry_cursor_end_set(block_filter_entry);
+
+                       ct_button = elm_button_add(ct_ly);
+                       elm_object_theme_set(ct_button, settingData->th);
+                       elm_object_style_set(ct_button, "circle/contact_button");
+
+                       icon = elm_icon_add(ct_button);
+                       elm_icon_file_set(icon, MSGC_IMG_CONTACT_BUTTON_ICON, NULL);
+                       elm_object_part_content_set(ct_button, "icon", icon);
+
+                       elm_object_part_content_set(ct_ly, "ct_button", ct_button);
+                       evas_object_smart_callback_add(ct_button, "clicked", __msg_ui_setting_block_number_detail_ct_btn_clicked_cb, settingData);
+
+                       return ct_ly;
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Nothing to do.");
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_setting_block_number_create_detail_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *detail_genlist;
+
+       Elm_Object_Item *it = NULL;
+
+       int index = 0;
+
+       detail_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->block_msg.block_filter_detail_genlist = detail_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(detail_genlist, settingData);
+
+       settingData->block_msg.block_filter_detail_1icon_itc.item_style = "dialogue/1icon";
+       settingData->block_msg.block_filter_detail_1icon_itc.func.text_get = NULL;
+       settingData->block_msg.block_filter_detail_1icon_itc.func.content_get = __msg_ui_setting_block_number_detail_gl_content_get;
+       settingData->block_msg.block_filter_detail_1icon_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_detail_1icon_itc.func.del = NULL;
+
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.item_style = "dialogue/2text.3/expandable";
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.func.text_get = __msg_ui_setting_block_number_detail_gl_text_get;
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.func.content_get = NULL;
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_detail_2line_1icon_itc.func.del = NULL;
+
+       elm_genlist_item_append(detail_genlist, &settingData->block_msg.block_filter_detail_1icon_itc,
+                                                                       (void *)index, NULL, ELM_GENLIST_ITEM_NONE,
+                                                                       NULL, (void *)index);
+       index++;
+
+       it = elm_genlist_item_append(detail_genlist, &settingData->block_msg.block_filter_detail_2line_1icon_itc,
+                                                                       (void *)index, NULL, ELM_GENLIST_ITEM_TREE,
+                                                                       __msg_ui_setting_block_number_match_criteria_gl_sel, (void *)index);
+
+       settingData->block_msg.block_filter_detail_match_criteria_item = it;
+
+       evas_object_smart_callback_add(detail_genlist, "expanded",      __msg_ui_setting_block_number_match_criteria_gl_exp, settingData);
+       evas_object_smart_callback_add(detail_genlist, "contracted", __msg_ui_setting_block_number_match_criteria_gl_con, settingData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return detail_genlist;
+}
+
+static void __msg_ui_setting_block_number_detail_trans_finished(void *data, Evas_Object *obj, void *event_info)
+{
+       /* Enable pushing the prev button. */
+       elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
+
+       evas_object_smart_callback_del(obj, "transition,finished", \
+                       __msg_ui_setting_block_number_detail_trans_finished);
+}
+
+static void __msg_ui_setting_block_number_detail_save(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       char *buf = NULL;
+       int index;
+       msg_error_t err = MSG_SUCCESS;
+       int filter_id = 0;
+       char filter_val[MAX_FILTER_VALUE_LEN+1] = {0, };
+       int db_criteria = -1;
+       char db_str[MAX_FILTER_VALUE_LEN+1] = {0, };
+       int total_cnt = 0;
+       int filter_type = -1;
+       int i = 0;
+
+       msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+       index = settingData->block_msg.block_filter_sel_index;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
+
+       /* If input strings are composed of only space, it isn't saved. */
+       if (!buf || strlen(g_strstrip(buf)) == 0) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "No value");
+               goto block_filter_detail_exist;
+       }
+
+       /* Check whether value is existed or not. */
+       total_cnt = settingData->block_msg.filterList.nCount;
+       for (i = 0; i < total_cnt; i++) {
+               if (index == i)
+                       continue;
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_VALUE_STR, db_str, sizeof(db_str));
+                       if (strcmp(db_str, buf) == 0) {
+                               status_message_post(dgettext(MESSAGE_PKGNAME, "Same Number Exist !"));
+                               goto block_filter_detail_exist;
+                       }
+               }
+       }
+
+       /* Check whether value is changed or not. */
+       if (index != MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0') {
+                       msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &db_criteria);
+                       if (strcmp(filter_val, buf) == 0 && settingData->block_msg.match_criteria == db_criteria) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Value is not changed.");
+                               goto block_filter_detail_exit;
+                       }
+               }
+       }
+
+       memset(filter_val, 0x0, sizeof(filter_val));
+       strncpy(filter_val, buf, MAX_FILTER_VALUE_LEN);
+
+       /* Save Match Criteria selected value. */
+       err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, settingData->block_msg.match_criteria);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_int_value(MSG_FILTER_TYPE_INT) is failed : err = %d", err);
+               goto block_filter_detail_exist;
+       }
+
+       err = msg_set_str_value(filter, MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_str_value(MSG_FILTER_VALUE_STR) is failed : err = %d", err);
+               goto block_filter_detail_exist;
+       }
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               err = msg_add_filter(settingData->msgHandle, filter);
+               if (err != MSG_SUCCESS)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_add_filter() is failed : err = %d", err);
+       } else {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+               if (err != MSG_SUCCESS)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_int_value() (filter_id) is failed : err = %d", err);
+
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "filterID = %d", filter_id);
+               msg_set_int_value(filter, MSG_FILTER_ID_INT, filter_id);
+
+               err = msg_update_filter(settingData->msgHandle, filter);
+               if (err != MSG_SUCCESS)
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_update_filter() is failed : err = %d", err);
+       }
+
+       if (err == MSG_ERR_FILTER_DUPLICATED) {
+               msg_ui_setting_common_show_popup(settingData, dgettext(MESSAGE_PKGNAME, "Number is duplicated."));
+       }
+
+       __msg_ui_setting_block_number_update_view(settingData);
+
+
+block_filter_detail_exit:
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+block_filter_detail_exist:
+       if (buf)
+               free(buf);
+
+       if (filter)
+               msg_release_struct(&filter);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_number_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_block_number_detail_save(settingData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static void __msg_ui_setting_block_number_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+}
+
+static void __msg_ui_setting_block_number_detail_view(void *data, int index)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *detail_layout;
+       Evas_Object *detail_genlist;
+
+       Elm_Object_Item *navi_it;
+
+       char title[DEF_BUF_LEN_S] = {0, };
+
+       Evas_Object *title_left_btn;
+       Evas_Object *title_right_btn;
+
+       if (index ==  MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
+               settingData->block_msg.match_criteria = MSG_FILTER_BY_ADDRESS_SAME;
+       } else {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &((settingData->block_msg).match_criteria));
+       }
+
+       settingData->block_msg.block_filter_sel_index = index;
+
+       detail_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       detail_genlist = __msg_ui_setting_block_number_create_detail_genlist(settingData->navi_frame, settingData);
+       elm_object_part_content_set(detail_layout, "elm.swallow.content", detail_genlist);
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
+               strncpy(title, dgettext(MESSAGE_PKGNAME, title_menu_its[0].name), sizeof(title)-1);
+       else
+               strncpy(title, dgettext(MESSAGE_PKGNAME, title_menu_its[1].name), sizeof(title)-1);
+
+       /* Disable pushing the prev button automatically. */
+       elm_naviframe_prev_btn_auto_pushed_set(settingData->navi_frame, EINA_FALSE);
+       evas_object_smart_callback_add(settingData->navi_frame, "transition,finished", \
+                       __msg_ui_setting_block_number_detail_trans_finished, NULL);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, title, NULL, NULL, detail_layout, NULL);
+
+       title_left_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, \
+                                       dgettext("sys_string", "IDS_COM_SK_DONE"), \
+                                       __msg_ui_setting_block_number_detail_done_btn_cb, (void *)settingData);
+       elm_object_item_part_content_set(navi_it, "title_left_btn", title_left_btn);
+       settingData->block_msg.block_filter_detail_done_btn = title_left_btn;
+
+       title_right_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, \
+                                       dgettext("sys_string", "IDS_COM_SK_CANCEL"), \
+                                       __msg_ui_setting_block_number_detail_cancel_btn_cb, (void *)settingData);
+       elm_object_item_part_content_set(navi_it, "title_right_btn", title_right_btn);
+
+       if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
+               elm_object_disabled_set(title_left_btn, EINA_TRUE);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+
+/********************************
+ ***  Block filter main view  ***
+ ********************************/
+
+static char *__msg_ui_setting_block_number_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       msg_error_t err = MSG_SUCCESS;
+       char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+       int matchCriteria = -1;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0')
+                       return strdup(filter_val);
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &matchCriteria);
+
+               if (matchCriteria == MSG_FILTER_BY_ADDRESS_SAME)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[0].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_START)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[1].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_INCLUDE)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[2].name));
+               else
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Match Criteria get fail = %d", matchCriteria);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_gl_dialogue_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       msg_error_t err = MSG_SUCCESS;
+       Eina_Bool filter_active = EINA_FALSE;
+       int filter_id = 0;
+       void *cur_index = NULL;
+       int index = -1;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       cur_index = evas_object_data_get(obj, "cur_index_on/off");
+       index = (int)cur_index;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "cur_index_on/off = %d", index);
+
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       filter_active = list_data->number_reject_chk_state;
+
+       msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+
+       /* Set the filter_active on/off  database*/
+       msg_set_filter_active(settingData->msgHandle, (msg_filter_id_t)filter_id, (bool)filter_active);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "filter_active = %d", filter_active);
+
+       /* Set the bool value for sync with database */
+       err = msg_set_bool_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ACTIVE_BOOL, (bool)filter_active);
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_filter_active(MSG_FILTER_ACTIVE_BOOL) is failed : err = %d", err);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_block_number_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       bool filter_active = false;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       check = elm_check_add(obj);
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       elm_check_state_pointer_set(check, &list_data->number_reject_chk_state);
+       evas_object_data_set(check, "cur_index_on/off", data);
+
+       msg_get_bool_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ACTIVE_BOOL, &filter_active);
+
+       if (filter_active == true)
+               elm_check_state_set(check, EINA_TRUE);
+       else
+               elm_check_state_set(check, EINA_FALSE);
+
+       elm_object_style_set(check, "on&off");
+
+       evas_object_propagate_events_set(check, EINA_FALSE);
+       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_block_number_gl_dialogue_clicked_cb, settingData);
+
+       return check;
+}
+
+static void __msg_ui_setting_block_number_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       __msg_ui_setting_block_number_detail_view(settingData, index);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_create_block_number_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *block_filter_genlist;
+
+       int index = 0;
+       int filter_type = 0;
+       int total_cnt = 0;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       block_filter_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->block_msg.block_filter_genlist = block_filter_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(block_filter_genlist, settingData);
+
+       settingData->block_msg.block_filter_itc.item_style = "dialogue/2text.1icon.6";
+       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_number_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = __msg_ui_setting_block_number_gl_content_get;
+       settingData->block_msg.block_filter_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_itc.func.del = NULL;
+       settingData->block_msg.block_filter_itc.decorate_all_item_style = "dialogue/edit";
+
+       for (index = 0; index < total_cnt; index++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       elm_genlist_item_append(block_filter_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                               NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_block_number_gl_sel, (void *)index);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return block_filter_genlist;
+}
+
+static void __msg_ui_setting_block_number_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to detail view. */
+       __msg_ui_setting_block_number_detail_view(settingData, MSG_UI_SETTING_BLOCKED_DETAIL_CREATE);
+
+}
+
+static void __msg_ui_setting_block_number_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to block filter delete view. */
+       __msg_ui_setting_block_number_delete_view(settingData);
+
+}
+
+static void __msg_ui_setting_block_number_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       EINA_LIST_FREE(settingData->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       memset(&settingData->block_msg, 0x0, sizeof(MSG_UI_SETTING_FILTER_S));
+}
+
+
+/********************************
+ ***  Block filter main delete view  ***
+ ********************************/
+
+static char *__msg_ui_setting_block_number_delete_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       msg_error_t err = MSG_SUCCESS;
+       char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+       int matchCriteria = -1;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0')
+                       return strdup(filter_val);
+       } else if (!strcmp(part, "elm.text.sub") || !strcmp(part, "elm.text.2")) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &matchCriteria);
+
+               if (matchCriteria == MSG_FILTER_BY_ADDRESS_SAME)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[0].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_START)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[1].name));
+               else if (matchCriteria == MSG_FILTER_BY_ADDRESS_INCLUDE)
+                       return strdup(dgettext(MESSAGE_PKGNAME, match_criteria_mode_menu_its[2].name));
+               else
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Match Criteria get fail = %d", matchCriteria);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_number_delete_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int count = 0;
+       int total_cnt = 0;
+       int addr_cnt = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+       addr_cnt = settingData->block_msg.addr_cnt;
+
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == TRUE) {
+                                       count++;
+                               }
+                       }
+               }
+       }
+
+       if (count == addr_cnt) {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       } else {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_FALSE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       }
+
+       if (count == 0) {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       } else {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       }
+
+       if (count == 0)
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+       else
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_number_delete_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       Evas_Object *check;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       check = elm_check_add(obj);
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       elm_check_state_pointer_set(check, &list_data->block_filter_chk_state);
+       evas_object_data_set(check, "cur_index_delete_chk", data);
+
+       evas_object_propagate_events_set(check, EINA_FALSE);
+       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_block_number_delete_gl_check_clicked_cb, settingData);
+
+       return check;
+}
+
+static void __msg_ui_setting_number_delete_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       int count = 0;
+       int total_cnt = 0;
+       int addr_cnt = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+       addr_cnt = settingData->block_msg.addr_cnt;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       list_data->block_filter_chk_state = !list_data->block_filter_chk_state;
+
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == TRUE) {
+                                       count++;
+                               }
+                       }
+               }
+       }
+
+       if (count == addr_cnt) {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       } else {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_FALSE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       }
+
+       elm_genlist_item_fields_update((Elm_Object_Item *)event_info, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+       elm_genlist_realized_items_update(settingData->block_msg.delete_genlist);
+
+       if (count == 0) {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       } else {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       }
+
+       if (count == 0)
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+       else
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_create_number_delete_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = 0;
+       int total_cnt = 0;
+       int filter_type;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       Evas_Object *delete_genlist;
+
+       delete_genlist = elm_genlist_add(parent);
+       evas_object_size_hint_weight_set(delete_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(delete_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       settingData->block_msg.delete_genlist = delete_genlist;
+
+       settingData->block_msg.block_filter_itc.item_style = "2text.1icon.8";
+       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_number_delete_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = __msg_ui_setting_number_delete_gl_content_get;
+       settingData->block_msg.block_filter_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_itc.func.del = NULL;
+       settingData->block_msg.block_filter_itc.decorate_all_item_style = "edit";
+
+       for (index = 0; index < total_cnt; index++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       elm_genlist_item_append(delete_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                               NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_number_delete_gl_sel, (void *)index);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return delete_genlist;
+}
+
+static void __msg_ui_setting_block_number_check_select_all(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Eina_Bool sel_all_state = EINA_FALSE;
+       int i = 0;
+       int total_cnt = 0;
+       int filter_type;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       sel_all_state = settingData->block_msg.block_filter_chk_sel_all_state;
+
+       for (i = 0; i < total_cnt; i++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, i);
+                       list_data->block_filter_chk_state = sel_all_state;
+               }
+       }
+
+       elm_genlist_realized_items_update(settingData->block_msg.delete_genlist);
+
+       if (sel_all_state == EINA_TRUE) {
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), settingData->block_msg.addr_cnt);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
+       } else {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
+       }
+
+       if (sel_all_state == EINA_TRUE)
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+       else
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+}
+
+static void __msg_ui_setting_block_number_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       settingData->block_msg.block_filter_chk_sel_all_state = !settingData->block_msg.block_filter_chk_sel_all_state;
+       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+
+       __msg_ui_setting_block_number_check_select_all(settingData);
+}
+
+static void __msg_ui_setting_block_number_sel_all_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sel_all_chk_state = [%d]", settingData->block_msg.block_filter_chk_sel_all_state);
+
+       __msg_ui_setting_block_number_check_select_all(data);
+}
+
+static void __msg_ui_setting_block_number_delete_mode_exit(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_block_number_update_view(settingData);
+
+       if (settingData->block_msg.delete_genlist) {
+               evas_object_del(settingData->block_msg.delete_genlist);
+               settingData->block_msg.delete_genlist = NULL;
+       }
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       return;
+}
+
+static void __msg_ui_setting_block_number_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       int index = 0;
+       int total_cnt = 0;
+       int filter_id = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       /* Delete selected filter item. */
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == EINA_TRUE) {
+                                       msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+                                       if (list_data->filter_id == filter_id) {
+                                               msg_delete_filter(settingData->msgHandle, (msg_filter_id_t)filter_id);
+                                               settingData->block_msg.block_filter_chk_state_list = eina_list_remove(settingData->block_msg.block_filter_chk_state_list, (const void *)list_data);
+                                               free(list_data);
+                                       }
+                               }
+                       }
+                       index++;
+               }
+       }
+
+       __msg_ui_setting_block_number_delete_mode_exit(settingData);
+
+}
+
+static void __msg_ui_setting_block_number_delete_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Cancel block filter deletion. */
+       __msg_ui_setting_block_number_delete_mode_exit(settingData);
+}
+
+static void __msg_ui_setting_block_number_delete_view_controlbar(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       Elm_Object_Item *ctrl_btn[MAX_SETTING_CTRLBAR_BUTTON];
+       int i = 0;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       for (i = 0; i < MAX_SETTING_CTRLBAR_BUTTON; i++) {
+               if (settingData->block_msg.ctrl_btn[i] != NULL) {
+                       elm_object_item_del(settingData->block_msg.ctrl_btn[i]);
+                       settingData->block_msg.ctrl_btn[i] = NULL;
+               }
+       }
+
+       ctrl_btn[0] = elm_toolbar_item_append(settingData->block_msg.delete_ctrl_bar, \
+                                               MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                               __msg_ui_setting_block_number_delete_btn_clicked_cb, \
+                                               (void *)settingData);
+       settingData->block_msg.ctrl_btn[0] = ctrl_btn[0];
+
+       ctrl_btn[1] = elm_toolbar_item_append(settingData->block_msg.delete_ctrl_bar, NULL, NULL, NULL, NULL);
+       settingData->block_msg.ctrl_btn[1] = ctrl_btn[1];
+       elm_object_item_disabled_set(ctrl_btn[1], EINA_TRUE);
+
+       ctrl_btn[2] = elm_toolbar_item_append(settingData->block_msg.delete_ctrl_bar, NULL, NULL, NULL, NULL);
+       settingData->block_msg.ctrl_btn[2] = ctrl_btn[2];
+       elm_object_item_disabled_set(ctrl_btn[2], EINA_TRUE);
+
+       ctrl_btn[3] = elm_toolbar_item_append(settingData->block_msg.delete_ctrl_bar, \
+                                                       MSG_CONTROLBAR_ICON_CANCEL, NULL, \
+                                                       __msg_ui_setting_block_number_delete_cancel_btn_clicked_cb, \
+                                                       (void *)settingData);
+       settingData->block_msg.ctrl_btn[3] = ctrl_btn[3];
+
+}
+
+static void __msg_ui_setting_block_number_delete_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *filter_layout_sel_all;
+       Evas_Object *filter_check_sel_all;
+
+       Evas_Object *delete_filter_box;
+       Evas_Object *delete_filter_list;
+       Elm_Object_Item *navi_it;
+       Evas_Object *ctrl_bar;
+
+       Evas_Object *delete_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+       settingData->block_msg.delete_layout = delete_layout;
+
+       delete_filter_box = elm_box_add(settingData->navi_frame);
+       settingData->block_msg.delete_filter_box = delete_filter_box;
+       evas_object_size_hint_weight_set(delete_filter_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(delete_filter_box);
+       elm_object_part_content_set(settingData->block_msg.delete_layout, "elm.swallow.content", delete_filter_box);
+
+       delete_filter_list = __msg_ui_setting_create_number_delete_genlist(settingData->navi_frame, settingData);
+       elm_box_pack_end(delete_filter_box, delete_filter_list);
+       evas_object_show(delete_filter_list);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "Delete number"), NULL, NULL, delete_layout, NULL);
+
+       /* Disable back_button */
+       elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
+
+       ctrl_bar = msg_ui_setting_common_create_controlbar(settingData->navi_frame);
+       settingData->block_msg.delete_ctrl_bar = ctrl_bar;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, ctrl_bar == NULL, "ctrl_bar is NULL !!");
+
+       elm_object_item_part_content_set(navi_it, "controlbar", ctrl_bar);
+
+       __msg_ui_setting_block_number_delete_view_controlbar(settingData);
+
+       /* Append 'Select All' layout. */
+       filter_layout_sel_all = elm_layout_add(settingData->block_msg.delete_filter_box);
+       settingData->block_msg.block_filter_sel_all_layout = filter_layout_sel_all;
+       elm_layout_theme_set(filter_layout_sel_all, "genlist", "item", "select_all/default");
+       evas_object_size_hint_weight_set(filter_layout_sel_all, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
+       evas_object_size_hint_align_set(filter_layout_sel_all, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_event_callback_add(filter_layout_sel_all, EVAS_CALLBACK_MOUSE_DOWN, __msg_ui_setting_block_number_sel_all_mouse_down_cb, settingData);
+
+       filter_check_sel_all = elm_check_add(filter_layout_sel_all);
+       settingData->block_msg.block_filter_chk_sel_all = filter_check_sel_all;
+       elm_check_state_pointer_set(filter_check_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+       evas_object_smart_callback_add(filter_check_sel_all, "changed", __msg_ui_setting_block_number_sel_all_check_clicked_cb, settingData);
+       evas_object_propagate_events_set(filter_check_sel_all, EINA_FALSE);
+       elm_object_part_content_set(filter_layout_sel_all, "elm.icon", filter_check_sel_all);
+
+       elm_object_part_text_set(filter_layout_sel_all, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
+       elm_box_pack_start(settingData->block_msg.delete_filter_box, filter_layout_sel_all);
+       evas_object_show(filter_layout_sel_all);
+
+       elm_genlist_decorate_mode_set(settingData->block_msg.delete_genlist, EINA_FALSE);
+       elm_genlist_select_mode_set(settingData->block_msg.delete_genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+
+       /* Default state of "Delete" button is disable. */
+       elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+}
+
+/**********************************
+ ***  Block filter main  ***
+ **********************************/
+
+void __msg_ui_setting_block_number_update_view(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_destroy_block_number_main(settingData);
+       __msg_ui_setting_init_block_number_main(settingData);
+       __msg_ui_setting_show_block_number_main(settingData);
+       __msg_ui_setting_block_number_update_controlbar(settingData);
+}
+
+void __msg_ui_setting_destroy_block_number_main(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       msg_ui_setting_common_destroy_selectioninfo(settingData);
+
+       /* Remove 'Select All' layout. */
+       if (settingData->block_msg.block_filter_sel_all_layout) {
+               elm_box_unpack(settingData->block_msg.block_filter_box, settingData->block_msg.block_filter_sel_all_layout);
+               evas_object_del(settingData->block_msg.block_filter_sel_all_layout);
+               settingData->block_msg.block_filter_sel_all_layout = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_genlist) {
+               evas_object_del(settingData->block_msg.block_filter_genlist);
+               settingData->block_msg.block_filter_genlist = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_box) {
+               evas_object_del(settingData->block_msg.block_filter_box);
+               settingData->block_msg.block_filter_box = NULL;
+       }
+
+       if (settingData->block_msg.block_filter_nocontents) {
+               evas_object_del(settingData->block_msg.block_filter_nocontents);
+               settingData->block_msg.block_filter_nocontents = NULL;
+       }
+
+}
+
+static void __msg_ui_setting_init_block_number_main(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       msg_error_t err = MSG_SUCCESS;
+       int total_cnt = 0;
+       int i = 0;
+       int filter_type = 0;
+       int filter_id = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       err = msg_get_filter_list(settingData->msgHandle, &(settingData->block_msg.filterList));
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_filter_list() fail - err [%d]", err);
+               return;
+       }
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+       settingData->block_msg.addr_cnt = 0;
+
+       EINA_LIST_FREE(settingData->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       for (i = 0; i < total_cnt; i++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_ID_INT, &filter_id);
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               settingData->block_msg.block_filter_chk_state_list = filter_chk_list_append(settingData->block_msg.block_filter_chk_state_list, filter_id, EINA_FALSE, EINA_TRUE);
+               if (filter_type != MSG_FILTER_BY_WORD) {
+                       settingData->block_msg.addr_cnt++;
+               }
+       }
+}
+
+void __msg_ui_setting_show_block_number_main(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *block_filter_box;
+       Evas_Object *block_filter_nocontents;
+       Evas_Object *block_filter_list;
+
+       if (settingData->block_msg.addr_cnt == 0) {
+               block_filter_nocontents = msg_ui_setting_common_create_no_content_view(settingData->block_msg.block_layout, NULL);
+               settingData->block_msg.block_filter_nocontents = block_filter_nocontents;
+               elm_object_part_content_set(settingData->block_msg.block_layout, "elm.swallow.content", block_filter_nocontents);
+       } else {
+               block_filter_box = elm_box_add(settingData->navi_frame);
+               settingData->block_msg.block_filter_box = block_filter_box;
+               evas_object_size_hint_weight_set(block_filter_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_show(block_filter_box);
+               elm_object_part_content_set(settingData->block_msg.block_layout, "elm.swallow.content", block_filter_box);
+
+               block_filter_list = __msg_ui_setting_create_block_number_genlist(settingData->navi_frame, settingData);
+               elm_box_pack_end(block_filter_box, block_filter_list);
+               evas_object_show(block_filter_list);
+       }
+}
+
+static void __msg_ui_setting_block_number_update_controlbar(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       Elm_Object_Item *ctrl_btn[MAX_SETTING_CTRLBAR_BUTTON];
+       int i = 0;
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       for (i = 0; i < MAX_SETTING_CTRLBAR_BUTTON; i++) {
+               if (settingData->block_msg.ctrl_btn[i] != NULL) {
+                       elm_object_item_del(settingData->block_msg.ctrl_btn[i]);
+                       settingData->block_msg.ctrl_btn[i] = NULL;
+               }
+       }
+
+       ctrl_btn[0] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
+                                                       MSG_CONTROLBAR_ICON_CREATE, NULL, \
+                                                       __msg_ui_setting_block_number_add_btn_clicked_cb, \
+                                                       (void *)settingData);
+       settingData->block_msg.ctrl_btn[0] = ctrl_btn[0];
+
+       /* Add NULL button */
+       ctrl_btn[1] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
+       settingData->block_msg.ctrl_btn[1] = ctrl_btn[1];
+       elm_object_item_disabled_set(ctrl_btn[1], EINA_TRUE);
+
+       ctrl_btn[2] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
+                                               MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                               __msg_ui_setting_block_number_del_btn_clicked_cb, \
+                                               (void *)settingData);
+       settingData->block_msg.ctrl_btn[2] = ctrl_btn[2];
+
+       /* If no item exist in block filter, delete button should be disabled. */
+       if (settingData->block_msg.addr_cnt == 0)
+               elm_object_item_disabled_set(ctrl_btn[2], EINA_TRUE);
+       else
+               elm_object_item_disabled_set(ctrl_btn[2], EINA_FALSE);
+
+       /* Add NULL button */
+       ctrl_btn[3] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
+       settingData->block_msg.ctrl_btn[3] = ctrl_btn[3];
+       elm_object_item_disabled_set(ctrl_btn[3], EINA_TRUE);
+
+}
+
+void msg_ui_setting_spam_block_number_main(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *block_layout;
+       Elm_Object_Item *navi_it;
+
+       Evas_Object *ctrl_bar;
+
+       /* Init block message data. */
+       __msg_ui_setting_init_block_number_main(settingData);
+
+       block_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+       settingData->block_msg.block_layout = block_layout;
+
+       __msg_ui_setting_show_block_number_main(settingData);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "Numbers to reject"), NULL, NULL, block_layout, NULL);
+
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
+                       __msg_ui_setting_block_number_back_btn_cb, settingData);
+
+       ctrl_bar = msg_ui_setting_common_create_controlbar(settingData->navi_frame);
+       settingData->block_msg.block_ctrl_bar = ctrl_bar;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, ctrl_bar == NULL, "ctrl_bar is NULL !!");
+
+       __msg_ui_setting_block_number_update_controlbar(settingData);
+
+       elm_object_item_part_content_set(navi_it, "controlbar", ctrl_bar);
+
+}
  */
 
 
-#include "msg-ui-setting-general-setting.h"
-
+#include "msg-ui-setting-spam-setting.h"
 
 /*============================================================================
                                STATIC FUNCTION DEFINE
 =============================================================================*/
-static void __msg_ui_setting_block_filter_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
-static char *__msg_ui_setting_block_filter_detail_gl_text_get(void *data, Evas_Object *obj, const char *part);
-static Evas_Object *__msg_ui_setting_block_filter_detail_gl_content_get(void *data, Evas_Object *obj, const char *part);
-static Evas_Object *__msg_ui_setting_block_filter_create_detail_view(Evas_Object *parent, PMSG_SETTING_DATA settingData);
-static void __msg_ui_setting_block_filter_detail_save(void *data);
-static void __msg_ui_setting_block_filter_detail_popup_yes_btn_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_detail_popup_no_btn_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_general_block_filter_detail_trans_finished(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_detail_main(void *data, int index);
-
-static char *__msg_ui_setting_block_filter_gl_text_get(void *data, Evas_Object *obj, const char *part);
-static void __msg_ui_setting_block_filter_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static Evas_Object *__msg_ui_setting_block_filter_gl_content_get(void *data, Evas_Object *obj, const char *part);
-static void __msg_ui_setting_block_filter_gl_sel(void *data, Evas_Object *obj, void *event_info);
-static Evas_Object *__msg_ui_setting_create_block_filter_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
-static void __msg_ui_setting_block_filter_check_select_all(void *data);
-static void __msg_ui_setting_block_filter_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_sel_all_chk_changed_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_filter_delete_view_update_controlbar(void *data);
-static void __msg_ui_setting_block_filter_delete_view(void *data);
-static void __msg_ui_setting_init_block_message(void *data);
-static void __msg_ui_setting_block_message_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_message_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void __msg_ui_setting_block_message_update_controlbar(void *data);
-
+static void __msg_ui_setting_block_word_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+static Evas_Object *__msg_ui_setting_block_word_detail_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_setting_block_word_create_detail_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_general_block_word_detail_trans_finished(void *data, Evas_Object *obj, void *event_info);
+static bool __msg_ui_setting_block_word_detail_exist_check(void *data);
+static void __msg_ui_setting_block_word_detail_save(void *data);
+static void __msg_ui_setting_block_word_detail_popup_yes_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_popup_no_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_word_filter_detail_view(void *data, int index);
+
+static char *__msg_ui_setting_block_word_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_word_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_create_block_word_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_word_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
+static char *__msg_ui_setting_block_word_delete_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_word_delete_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_block_word_delete_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_block_word_delete_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_create_block_word_delete_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_block_word_check_select_all(void *data);
+static void __msg_ui_setting_block_word_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_sel_all_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_delete_mode_exit(void *data);
+static void __msg_ui_setting_block_word_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_delete_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_block_word_delete_view_controlbar(void *data);
+static void __msg_ui_setting_block_word_delete_view(void *data);
+
+static void __msg_ui_setting_block_word_update_view(void *data);
+static void __msg_ui_setting_destroy_block_word_main(void *data);
+static void __msg_ui_setting_init_block_word_main(void *data);
+static void __msg_ui_setting_show_block_word_main(void *data);
+static void __msg_ui_setting_block_word_update_controlbar(void *data);
 
 /*============================================================================
                                FUNCTION IMPLEMENT
@@ -62,7 +70,7 @@ static void __msg_ui_setting_block_message_update_controlbar(void *data);
  ***  Block filter detail view  ***
  **********************************/
 
-static void __msg_ui_setting_block_filter_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_detail_entry_changed_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -71,9 +79,9 @@ static void __msg_ui_setting_block_filter_detail_entry_changed_cb(void *data, Ev
 
        if (elm_object_focus_get(settingData->block_msg.block_filter_detail_entry_ly)) {
                if (elm_entry_is_empty(obj))
-                       elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+                       elm_object_signal_emit(settingData->block_msg.block_filter_detail_entry_ly, "elm,state,eraser,hide", "elm");
                else
-                       elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+                       elm_object_signal_emit(settingData->block_msg.block_filter_detail_entry_ly, "elm,state,eraser,show", "elm");
        }
 
        buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
@@ -94,7 +102,7 @@ static void __msg_ui_setting_block_filter_detail_entry_changed_cb(void *data, Ev
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static void __msg_ui_setting_block_filter_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_detail_entry_focus_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -108,7 +116,7 @@ static void __msg_ui_setting_block_filter_detail_entry_focus_cb(void *data, Evas
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static void __msg_ui_setting_block_filter_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_detail_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -122,40 +130,18 @@ static void __msg_ui_setting_block_filter_detail_entry_unfocus_cb(void *data, Ev
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static void __msg_ui_setting_block_filter_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+static void __msg_ui_setting_block_word_detail_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        Evas_Object *entry = (Evas_Object *)data;
 
        elm_entry_entry_set(entry, "");
-       elm_object_signal_emit(obj, "elm,state,eraser,hide", "elm");
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static char *__msg_ui_setting_block_filter_detail_gl_text_get(void *data, Evas_Object *obj, const char *part)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       int index = (int)data;
-
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
-
-       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
-               if (index == MSG_UI_SETTING_BLOCK_DETAIL_MENU_TITLE) {
-                       return strdup(dgettext(MESSAGE_PKGNAME, "Word"));
-               } else {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %d", index);
-               }
-       } else {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
-       }
-
-       return NULL;
-}
-
-static Evas_Object *__msg_ui_setting_block_filter_detail_gl_content_get(void *data, Evas_Object *obj, const char *part)
+static Evas_Object *__msg_ui_setting_block_word_detail_gl_content_get(void *data, Evas_Object *obj, const char *part)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -166,36 +152,45 @@ static Evas_Object *__msg_ui_setting_block_filter_detail_gl_content_get(void *da
        char filter_val[MAX_FILTER_VALUE_LEN+1] = {0,};
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
-       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "ch_index = %d", sel_index);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sel_index = %d", sel_index);
 
        if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
                if (index == MSG_UI_SETTING_BLOCK_DETAIL_MENU_DATA) {
                        char *buf = NULL;
                        static Elm_Entry_Filter_Limit_Size block_filter_limit_filter_data;
 
-                       Evas_Object *block_filter_ly;
-                       Evas_Object *block_filter_entry;
+                       Evas_Object *block_filter_ly = NULL;
+                       Evas_Object *block_filter_entry = NULL;
 
                        block_filter_ly = elm_layout_add(obj);
-                       elm_layout_theme_set(block_filter_ly, "layout", "editfield", "default");
-                       elm_object_part_text_set(block_filter_ly, "elm.guidetext", dgettext("sys_string", "IDS_COM_BODY_TAP_TO_ADD_TEXT"));
+                       if (block_filter_ly == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "block_filter_ly failed");
+                               return NULL;
+                       }
+                       elm_layout_theme_set(block_filter_ly, "layout", "editfield", "title");
                        settingData->block_msg.block_filter_detail_entry_ly = block_filter_ly;
 
                        block_filter_entry = elm_entry_add(block_filter_ly);
+                       if (block_filter_entry == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "block_filter_entry failed");
+                               return NULL;
+                       }
                        elm_entry_single_line_set(block_filter_entry, EINA_TRUE);
                        elm_entry_scrollable_set(block_filter_entry, EINA_TRUE);
                        elm_entry_autocapital_type_set(block_filter_entry, ELM_AUTOCAPITAL_TYPE_NONE);
                        elm_entry_input_panel_layout_set(block_filter_entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
                        settingData->block_msg.block_filter_detail_entry = block_filter_entry;
 
-                       evas_object_smart_callback_add(block_filter_entry, "changed", __msg_ui_setting_block_filter_detail_entry_changed_cb, (void *)settingData);
-                       evas_object_smart_callback_add(block_filter_entry, "focused", __msg_ui_setting_block_filter_detail_entry_focus_cb, (void *)block_filter_ly);
-                       evas_object_smart_callback_add(block_filter_entry, "unfocused", __msg_ui_setting_block_filter_detail_entry_unfocus_cb, (void *)block_filter_ly);
-                       elm_object_signal_callback_add(block_filter_ly, "elm,eraser,clicked", "elm", __msg_ui_setting_block_filter_detail_eraser_clicked_cb, (void *)block_filter_entry);
+                       evas_object_smart_callback_add(block_filter_entry, "changed", __msg_ui_setting_block_word_detail_entry_changed_cb, (void *)settingData);
+                       evas_object_smart_callback_add(block_filter_entry, "preedit,changed", __msg_ui_setting_block_word_detail_entry_changed_cb, (void *)settingData);
+                       evas_object_smart_callback_add(block_filter_entry, "focused", __msg_ui_setting_block_word_detail_entry_focus_cb, (void *)block_filter_ly);
+                       evas_object_smart_callback_add(block_filter_entry, "unfocused", __msg_ui_setting_block_word_detail_entry_unfocus_cb, (void *)block_filter_ly);
+                       elm_object_signal_callback_add(block_filter_ly, "elm,eraser,clicked", "elm", __msg_ui_setting_block_word_detail_eraser_clicked_cb, (void *)block_filter_entry);
 
                        /* Before giving focus to the entry object, the entry object should be shown. */
                        evas_object_show(block_filter_entry);
                        elm_object_part_content_set(block_filter_ly, "elm.swallow.content", block_filter_entry);
+                       elm_object_part_text_set(block_filter_ly, "elm.text", "Enter word");
 
                        block_filter_limit_filter_data.max_char_count = 0;
                        block_filter_limit_filter_data.max_byte_count = MAX_FILTER_VALUE_LEN;
@@ -214,8 +209,8 @@ static Evas_Object *__msg_ui_setting_block_filter_detail_gl_content_get(void *da
                                }
                        }
 
-                       if (settingData->block_msg.block_filter_detail_entry != NULL)
-                               elm_object_focus_set(settingData->block_msg.block_filter_detail_entry, EINA_TRUE);
+                       elm_object_focus_set(settingData->block_msg.block_filter_detail_entry, EINA_TRUE);
+                       elm_entry_cursor_end_set(block_filter_entry);
 
                        return block_filter_ly;
                } else {
@@ -228,7 +223,7 @@ static Evas_Object *__msg_ui_setting_block_filter_detail_gl_content_get(void *da
        return NULL;
 }
 
-static Evas_Object *__msg_ui_setting_block_filter_create_detail_view(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+static Evas_Object *__msg_ui_setting_block_word_create_detail_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -239,23 +234,14 @@ static Evas_Object *__msg_ui_setting_block_filter_create_detail_view(Evas_Object
        block_filter_detail_genlist = msg_ui_setting_common_create_genlist(parent);
        settingData->block_msg.block_filter_detail_genlist = block_filter_detail_genlist;
 
-       settingData->block_msg.block_filter_detail_title_itc.item_style = "dialogue/title";
-       settingData->block_msg.block_filter_detail_title_itc.func.text_get = __msg_ui_setting_block_filter_detail_gl_text_get;
-       settingData->block_msg.block_filter_detail_title_itc.func.content_get = NULL;
-       settingData->block_msg.block_filter_detail_title_itc.func.state_get = NULL;
-       settingData->block_msg.block_filter_detail_title_itc.func.del = NULL;
+       msg_ui_setting_common_append_genlist_separator(block_filter_detail_genlist, settingData);
 
        settingData->block_msg.block_filter_detail_1icon_itc.item_style = "dialogue/1icon";
        settingData->block_msg.block_filter_detail_1icon_itc.func.text_get = NULL;
-       settingData->block_msg.block_filter_detail_1icon_itc.func.content_get = __msg_ui_setting_block_filter_detail_gl_content_get;
+       settingData->block_msg.block_filter_detail_1icon_itc.func.content_get = __msg_ui_setting_block_word_detail_gl_content_get;
        settingData->block_msg.block_filter_detail_1icon_itc.func.state_get = NULL;
        settingData->block_msg.block_filter_detail_1icon_itc.func.del = NULL;
 
-       elm_genlist_item_append(block_filter_detail_genlist, &settingData->block_msg.block_filter_detail_title_itc,
-                                                                       (void *)index, NULL, ELM_GENLIST_ITEM_NONE,
-                                                                       NULL, (void *)index);
-       index++;
-
        elm_genlist_item_append(block_filter_detail_genlist, &settingData->block_msg.block_filter_detail_1icon_itc,
                                                                        (void *)index, NULL, ELM_GENLIST_ITEM_NONE,
                                                                        NULL, (void *)index);
@@ -265,7 +251,16 @@ static Evas_Object *__msg_ui_setting_block_filter_create_detail_view(Evas_Object
        return block_filter_detail_genlist;
 }
 
-static void __msg_ui_setting_block_filter_detail_save(void *data)
+static void __msg_ui_setting_general_block_word_detail_trans_finished(void *data, Evas_Object *obj, void *event_info)
+{
+       /* Enable pushing the prev button. */
+       elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
+
+       evas_object_smart_callback_del(obj, "transition,finished", \
+                       __msg_ui_setting_general_block_word_detail_trans_finished);
+}
+
+static bool __msg_ui_setting_block_word_detail_exist_check(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -274,8 +269,12 @@ static void __msg_ui_setting_block_filter_detail_save(void *data)
        char *buf = NULL;
        int index;
        msg_error_t err = MSG_SUCCESS;
-       int filter_id = 0;
        char filter_val[MAX_FILTER_VALUE_LEN+1] = {0,};
+       char db_str[MAX_FILTER_VALUE_LEN+1] = {0, };
+       int total_cnt = 0;
+       int filter_type = -1;
+       int i = 0;
+       bool is_exist = FALSE;
 
        msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
        index = settingData->block_msg.block_filter_sel_index;
@@ -289,20 +288,65 @@ static void __msg_ui_setting_block_filter_detail_save(void *data)
                goto block_filter_detail_exit;
        }
 
+       /* Check whether value is existed or not. */
+       total_cnt = settingData->block_msg.filterList.nCount;
+       for (i = 0; i < total_cnt; i++) {
+               if (index == i)
+                       continue;
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_VALUE_STR, db_str, sizeof(db_str));
+                       if (strcmp(db_str, buf) == 0) {
+                               status_message_post(dgettext(MESSAGE_PKGNAME, "Same word Exist !"));
+                               is_exist = TRUE;
+                               goto block_filter_detail_exit;
+                       }
+               }
+       }
+
        /* Check whether value is changed or not. */
        if (index != MSG_UI_SETTING_BLOCKED_DETAIL_CREATE) {
                err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
-               if (strlen(filter_val) > 0) {
+               if (filter_val[0] != '\0') {
                        if (strcmp(filter_val, buf) == 0) {
                                MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Value is not changed.");
-                               goto block_filter_detail_exit;
                        }
                }
        }
 
-       memset(filter_val, 0x0, sizeof(filter_val));
+block_filter_detail_exit:
+       if (buf)
+               free(buf);
+
+       if (filter)
+               msg_release_struct(&filter);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return is_exist;
+
+}
+
+static void __msg_ui_setting_block_word_detail_save(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       int index;
+       msg_error_t err = MSG_SUCCESS;
+       int filter_id = 0;
+       char *buf = NULL;
+       char filter_val[MAX_FILTER_VALUE_LEN+1] = {0,};
+
+       msg_struct_t filter = msg_create_struct(MSG_STRUCT_FILTER);
+       index = settingData->block_msg.block_filter_sel_index;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->block_msg.block_filter_detail_entry));
        strncpy(filter_val, buf, MAX_FILTER_VALUE_LEN);
 
+       /* Save value. */
        err = msg_set_int_value(filter, MSG_FILTER_TYPE_INT, MSG_FILTER_BY_WORD);
        if (err != MSG_SUCCESS) {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_int_value(MSG_FILTER_TYPE_INT) is failed : err = %d", err);
@@ -336,7 +380,7 @@ static void __msg_ui_setting_block_filter_detail_save(void *data)
                msg_ui_setting_common_show_popup(settingData, dgettext(MESSAGE_PKGNAME, "Word is duplicated."));
        }
 
-       msg_ui_setting_block_filter_update_view(settingData);
+       __msg_ui_setting_block_word_update_view(settingData);
 
 block_filter_detail_exit:
        if (buf)
@@ -345,12 +389,10 @@ block_filter_detail_exit:
        if (filter)
                msg_release_struct(&filter);
 
-       elm_naviframe_item_pop(settingData->navi_frame);
-
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static void __msg_ui_setting_block_filter_detail_popup_yes_btn_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_detail_popup_yes_btn_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -360,11 +402,12 @@ static void __msg_ui_setting_block_filter_detail_popup_yes_btn_cb(void *data, Ev
                evas_object_del(settingData->popup);
                settingData->popup = NULL;
        }
+       __msg_ui_setting_block_word_detail_save(settingData);
 
-       __msg_ui_setting_block_filter_detail_save(settingData);
+        elm_naviframe_item_pop(settingData->navi_frame);
 }
 
-static void __msg_ui_setting_block_filter_detail_popup_no_btn_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_detail_popup_no_btn_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -374,39 +417,41 @@ static void __msg_ui_setting_block_filter_detail_popup_no_btn_cb(void *data, Eva
                evas_object_del(settingData->popup);
                settingData->popup = NULL;
        }
-
-       elm_naviframe_item_pop(settingData->navi_frame);
 }
-
-static void __msg_ui_setting_block_filter_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_detail_done_btn_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-       Evas_Object *btn1;
-       Evas_Object *btn2;
 
-       /* Create a popup. */
-       settingData->popup = elm_popup_add(settingData->layout_main);
-       evas_object_size_hint_weight_set(settingData->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_object_text_set(settingData->popup, dgettext(MESSAGE_PKGNAME, "If added words are contained to received message from a person in my phonebook, the message will not be blocked. \n Continue?"));
+       if (__msg_ui_setting_block_word_detail_exist_check(settingData) == FALSE) {
+               Evas_Object *btn1;
+               Evas_Object *btn2;
+
+               /* Create a popup. */
+               settingData->popup = elm_popup_add(settingData->layout_main);
+               evas_object_size_hint_weight_set(settingData->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               elm_object_text_set(settingData->popup, dgettext(MESSAGE_PKGNAME, "If added words are contained to received message from a person in my phonebook, the message will not be blocked. \n Continue?"));
 
-       btn1 = elm_button_add(settingData->popup);
-       elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_YES"));
-       elm_object_part_content_set(settingData->popup, "button1", btn1);
-       evas_object_smart_callback_add(btn1, "clicked", __msg_ui_setting_block_filter_detail_popup_yes_btn_cb, settingData);
+               btn1 = elm_button_add(settingData->popup);
+               elm_object_style_set(btn1, "popup_button/default");
+               elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_YES"));
+               elm_object_part_content_set(settingData->popup, "button1", btn1);
+               evas_object_smart_callback_add(btn1, "clicked", __msg_ui_setting_block_word_detail_popup_yes_btn_cb, settingData);
 
-       btn2 = elm_button_add(settingData->popup);
-       elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_NO"));
-       elm_object_part_content_set(settingData->popup, "button2", btn2);
-       evas_object_smart_callback_add(btn2, "clicked", __msg_ui_setting_block_filter_detail_popup_no_btn_cb, settingData);
+               btn2 = elm_button_add(settingData->popup);
+               elm_object_style_set(btn2, "popup_button/default");
+               elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_SK_NO"));
+               elm_object_part_content_set(settingData->popup, "button2", btn2);
+               evas_object_smart_callback_add(btn2, "clicked", __msg_ui_setting_block_word_detail_popup_no_btn_cb, settingData);
 
-       evas_object_show(settingData->popup);
+               evas_object_show(settingData->popup);
+       }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static void __msg_ui_setting_block_filter_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_detail_cancel_btn_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
        MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data);
@@ -416,16 +461,7 @@ static void __msg_ui_setting_block_filter_detail_cancel_btn_cb(void *data, Evas_
        elm_naviframe_item_pop(settingData->navi_frame);
 }
 
-static void __msg_ui_setting_general_block_filter_detail_trans_finished(void *data, Evas_Object *obj, void *event_info)
-{
-       /* Enable pushing the prev button. */
-       elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
-
-       evas_object_smart_callback_del(obj, "transition,finished", \
-                       __msg_ui_setting_general_block_filter_detail_trans_finished);
-}
-
-static void __msg_ui_setting_block_filter_detail_main(void *data, int index)
+static void __msg_ui_setting_word_filter_detail_view(void *data, int index)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -445,7 +481,7 @@ static void __msg_ui_setting_block_filter_detail_main(void *data, int index)
 
        block_filter_detail_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
 
-       block_filter_detail_genlist = __msg_ui_setting_block_filter_create_detail_view(settingData->navi_frame, settingData);
+       block_filter_detail_genlist = __msg_ui_setting_block_word_create_detail_genlist(settingData->navi_frame, settingData);
        elm_object_part_content_set(block_filter_detail_layout, "elm.swallow.content", block_filter_detail_genlist);
 
        if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
@@ -456,19 +492,19 @@ static void __msg_ui_setting_block_filter_detail_main(void *data, int index)
        /* Disable pushing the prev button automatically. */
        elm_naviframe_prev_btn_auto_pushed_set(settingData->navi_frame, EINA_FALSE);
        evas_object_smart_callback_add(settingData->navi_frame, "transition,finished", \
-                       __msg_ui_setting_general_block_filter_detail_trans_finished, NULL);
+                       __msg_ui_setting_general_block_word_detail_trans_finished, NULL);
 
        navi_it = elm_naviframe_item_push(settingData->navi_frame, title, NULL, NULL, block_filter_detail_layout, NULL);
 
        title_left_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, \
                                        dgettext("sys_string", "IDS_COM_SK_DONE"), \
-                                       __msg_ui_setting_block_filter_detail_done_btn_cb, (void *)settingData);
+                                       __msg_ui_setting_block_word_detail_done_btn_cb, (void *)settingData);
        elm_object_item_part_content_set(navi_it, "title_left_btn", title_left_btn);
        settingData->block_msg.block_filter_detail_done_btn = title_left_btn;
 
        title_right_btn = msg_ui_setting_common_create_title_btn(settingData->navi_frame, \
                                        dgettext("sys_string", "IDS_COM_SK_CANCEL"), \
-                                       __msg_ui_setting_block_filter_detail_cancel_btn_cb, (void *)settingData);
+                                       __msg_ui_setting_block_word_detail_cancel_btn_cb, (void *)settingData);
        elm_object_item_part_content_set(navi_it, "title_right_btn", title_right_btn);
 
        if (index == MSG_UI_SETTING_BLOCKED_DETAIL_CREATE)
@@ -482,7 +518,129 @@ static void __msg_ui_setting_block_filter_detail_main(void *data, int index)
  ***  Block filter main view  ***
  ********************************/
 
-static char *__msg_ui_setting_block_filter_gl_text_get(void *data, Evas_Object *obj, const char *part)
+static char *__msg_ui_setting_block_word_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       msg_error_t err = MSG_SUCCESS;
+       char filter_val[MAX_FILTER_VALUE_LEN] = {0,};
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
+               if (filter_val[0] != '\0')
+                       return strdup(filter_val);
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_block_word_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       __msg_ui_setting_word_filter_detail_view(settingData, index);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *__msg_ui_setting_create_block_word_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *block_filter_genlist;
+
+       int index = 0;
+       int filter_type;
+       int total_cnt = 0;
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       block_filter_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->block_msg.block_filter_genlist = block_filter_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(block_filter_genlist, settingData);
+
+       settingData->block_msg.block_filter_itc.item_style = "dialogue/1text";
+       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_word_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = NULL;
+       settingData->block_msg.block_filter_itc.func.state_get = NULL;
+       settingData->block_msg.block_filter_itc.func.del = NULL;
+       settingData->block_msg.block_filter_itc.decorate_all_item_style = "dialogue/edit";
+
+       for (index = 0; index < total_cnt; index++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       elm_genlist_item_append(block_filter_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                               NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_block_word_gl_sel, (void *)index);
+               }
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return block_filter_genlist;
+}
+
+static void __msg_ui_setting_block_word_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to detail view. */
+       __msg_ui_setting_word_filter_detail_view(settingData, MSG_UI_SETTING_BLOCKED_DETAIL_CREATE);
+
+}
+
+static void __msg_ui_setting_block_word_del_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Go to block filter delete view. */
+       __msg_ui_setting_block_word_delete_view(settingData);
+
+}
+
+static void __msg_ui_setting_block_word_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       EINA_LIST_FREE(settingData->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       memset(&settingData->block_msg, 0x0, sizeof(MSG_UI_SETTING_FILTER_S));
+}
+
+/********************************
+ ***  Block filter main delete view  ***
+ ********************************/
+
+ static char *__msg_ui_setting_block_word_delete_gl_text_get(void *data, Evas_Object *obj, const char *part)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -495,7 +653,7 @@ static char *__msg_ui_setting_block_filter_gl_text_get(void *data, Evas_Object *
 
        if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
                err = msg_get_str_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_VALUE_STR, filter_val, sizeof(filter_val));
-               if (strlen(filter_val) > 0)
+               if (filter_val[0] != '\0')
                        return strdup(filter_val);
        } else {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
@@ -504,23 +662,31 @@ static char *__msg_ui_setting_block_filter_gl_text_get(void *data, Evas_Object *
        return NULL;
 }
 
-static void __msg_ui_setting_block_filter_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_delete_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-       int i = 0;
        int count = 0;
        int total_cnt = 0;
+       int word_cnt = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
 
        total_cnt = settingData->block_msg.filterList.nCount;
+       word_cnt = settingData->block_msg.word_cnt;
 
-       for (i = 0; i < total_cnt; i++) {
-               if (settingData->block_msg.block_filter_chk_state[i] == EINA_TRUE)
-                       count++;
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == TRUE) {
+                                       count++;
+                               }
+                       }
+               }
        }
 
-       if (count == total_cnt) {
+       if (count == word_cnt) {
                if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
                        settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
                        elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
@@ -533,12 +699,12 @@ static void __msg_ui_setting_block_filter_gl_check_clicked_cb(void *data, Evas_O
        }
 
        if (count == 0) {
-               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, NULL, settingData);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
        } else {
                char str[DEF_BUF_LEN_S] = {0, };
 
-               snprintf(str, sizeof(str), dgettext("sys_string", "IDS_COM_BODY_PD_SELECTED"), count);
-               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, str, settingData);
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
        }
 
        if (count == 0)
@@ -549,34 +715,28 @@ static void __msg_ui_setting_block_filter_gl_check_clicked_cb(void *data, Evas_O
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static Evas_Object *__msg_ui_setting_block_filter_gl_content_get(void *data, Evas_Object *obj, const char *part)
+static Evas_Object *__msg_ui_setting_block_word_delete_gl_content_get(void *data, Evas_Object *obj, const char *part)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        int index = (int)data;
        Evas_Object *check;
        PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
 
-       if (elm_genlist_decorate_mode_get(obj)) {
-               if (!strcmp(part, "elm.edit.icon.1")) {
-                       check = elm_check_add(obj);
-                       elm_check_state_pointer_set(check, &settingData->block_msg.block_filter_chk_state[index]);
-
-                       evas_object_propagate_events_set(check, EINA_FALSE);
-                       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_block_filter_gl_check_clicked_cb, settingData);
+       check = elm_check_add(obj);
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       elm_check_state_pointer_set(check, &list_data->block_filter_chk_state);
 
-                       return check;
-               } else {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
-               }
-       }
+       evas_object_propagate_events_set(check, EINA_FALSE);
+       evas_object_smart_callback_add(check, "changed", __msg_ui_setting_block_word_delete_gl_check_clicked_cb, settingData);
 
-       return NULL;
+       return check;
 }
 
-static void __msg_ui_setting_block_filter_gl_sel(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_delete_gl_sel(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -586,91 +746,101 @@ static void __msg_ui_setting_block_filter_gl_sel(void *data, Evas_Object *obj, v
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
 
-       int i = 0;
        int count = 0;
        int total_cnt = 0;
+       int word_cnt = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
+       Eina_List *l = NULL;
 
        total_cnt = settingData->block_msg.filterList.nCount;
+       word_cnt = settingData->block_msg.word_cnt;
 
        elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
 
-       if (elm_genlist_decorate_mode_get(obj)) {
-               settingData->block_msg.block_filter_chk_state[index] = !settingData->block_msg.block_filter_chk_state[index];
+       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, index);
+       list_data->block_filter_chk_state = !list_data->block_filter_chk_state;
 
-               for (i = 0; i < total_cnt; i++) {
-                       if (settingData->block_msg.block_filter_chk_state[i] == EINA_TRUE)
-                               count++;
-               }
-
-               if (count == total_cnt) {
-                       if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
-                               settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
-                               elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
-                       }
-               } else {
-                       if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_FALSE) {
-                               settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
-                               elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == TRUE) {
+                                       count++;
+                               }
                        }
                }
+       }
 
-               elm_genlist_item_fields_update((Elm_Object_Item *)event_info, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
-
-               if (count == 0) {
-                       msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, NULL, settingData);
-               } else {
-                       char str[DEF_BUF_LEN_S] = {0, };
-
-                       snprintf(str, sizeof(str), dgettext("sys_string", "IDS_COM_BODY_PD_SELECTED"), count);
-                       msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, str, settingData);
+       if (count == word_cnt) {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_TRUE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_TRUE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
                }
+       } else {
+               if (settingData->block_msg.block_filter_chk_sel_all_state != EINA_FALSE) {
+                       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+                       elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
+               }
+       }
 
-               if (count == 0)
-                       elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
-               else
-                       elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+       elm_genlist_item_fields_update((Elm_Object_Item *)event_info, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
+       elm_genlist_realized_items_update(settingData->block_msg.delete_genlist);
 
+       if (count == 0) {
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
        } else {
-               __msg_ui_setting_block_filter_detail_main(settingData, index);
+               char str[DEF_BUF_LEN_S] = {0, };
+
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), count);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
        }
 
+       if (count == 0)
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
+       else
+               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
+
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static Evas_Object *__msg_ui_setting_create_block_filter_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+static Evas_Object *__msg_ui_setting_create_block_word_delete_genlist(Evas_Object *parent, PMSG_SETTING_DATA settingData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
-       Evas_Object *block_filter_genlist;
-
        int index = 0;
        int total_cnt = 0;
+       int filter_type;
 
        total_cnt = settingData->block_msg.filterList.nCount;
 
-       block_filter_genlist = msg_ui_setting_common_create_genlist(parent);
-       settingData->block_msg.block_filter_genlist = block_filter_genlist;
+       Evas_Object *delete_genlist;
 
-       msg_ui_setting_common_append_genlist_separator(block_filter_genlist, settingData);
+       delete_genlist = elm_genlist_add(parent);
+       evas_object_size_hint_weight_set(delete_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(delete_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       settingData->block_msg.delete_genlist = delete_genlist;
 
-       settingData->block_msg.block_filter_itc.item_style = "dialogue/1text";
-       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_filter_gl_text_get;
-       settingData->block_msg.block_filter_itc.func.content_get = __msg_ui_setting_block_filter_gl_content_get;
+       settingData->block_msg.block_filter_itc.item_style = "1text.1icon.2";
+       settingData->block_msg.block_filter_itc.func.text_get = __msg_ui_setting_block_word_delete_gl_text_get;
+       settingData->block_msg.block_filter_itc.func.content_get = __msg_ui_setting_block_word_delete_gl_content_get;
        settingData->block_msg.block_filter_itc.func.state_get = NULL;
        settingData->block_msg.block_filter_itc.func.del = NULL;
-       settingData->block_msg.block_filter_itc.decorate_all_item_style = "dialogue/edit";
+       settingData->block_msg.block_filter_itc.decorate_all_item_style = "edit";
 
        for (index = 0; index < total_cnt; index++) {
-               elm_genlist_item_append(block_filter_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
-                       NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_block_filter_gl_sel, (void *)index);
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_TYPE_INT, &filter_type);
+
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       elm_genlist_item_append(delete_genlist, &settingData->block_msg.block_filter_itc, (void *)index,
+                               NULL, ELM_GENLIST_ITEM_NONE, __msg_ui_setting_block_word_delete_gl_sel, (void *)index);
+               }
        }
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 
-       return block_filter_genlist;
+       return delete_genlist;
 }
 
-static void __msg_ui_setting_block_filter_check_select_all(void *data)
+static void __msg_ui_setting_block_word_check_select_all(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -679,31 +849,31 @@ static void __msg_ui_setting_block_filter_check_select_all(void *data)
        Eina_Bool sel_all_state = EINA_FALSE;
        int i = 0;
        int total_cnt = 0;
-
-       Elm_Object_Item *it;
+       int filter_type;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data = NULL;
 
        total_cnt = settingData->block_msg.filterList.nCount;
 
        sel_all_state = settingData->block_msg.block_filter_chk_sel_all_state;
 
        for (i = 0; i < total_cnt; i++) {
-               settingData->block_msg.block_filter_chk_state[i] = sel_all_state;
-       }
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
 
-       /* Update all realized items. */
-       it = elm_genlist_first_item_get(settingData->block_msg.block_filter_genlist);
-       for (i = 0; i < total_cnt; i++) {
-               elm_genlist_item_fields_update(it, "elm.edit.icon.1", ELM_GENLIST_ITEM_FIELD_CONTENT);
-               it = elm_genlist_item_next_get(it);
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       list_data = (MSG_UI_SETTING_FILTER_LIST_S *) eina_list_nth(settingData->block_msg.block_filter_chk_state_list, i);
+                       list_data->block_filter_chk_state = sel_all_state;
+               }
        }
 
+       elm_genlist_realized_items_update(settingData->block_msg.delete_genlist);
+
        if (sel_all_state == EINA_TRUE) {
                char str[DEF_BUF_LEN_S] = {0, };
 
-               snprintf(str, sizeof(str), dgettext("sys_string", "IDS_COM_BODY_PD_SELECTED"), total_cnt);
-               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, str, settingData);
+               snprintf(str, sizeof(str), "%s (%d)", dgettext(MESSAGE_PKGNAME, "IDS_MSGC_POP_SPACE_SELECTED"), settingData->block_msg.word_cnt);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, str, settingData);
        } else {
-               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.block_layout, NULL, settingData);
+               msg_ui_setting_common_show_selectioninfo(settingData->block_msg.delete_layout, NULL, settingData);
        }
 
        if (sel_all_state == EINA_TRUE)
@@ -712,7 +882,7 @@ static void __msg_ui_setting_block_filter_check_select_all(void *data)
                elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
 }
 
-static void __msg_ui_setting_block_filter_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_sel_all_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -721,10 +891,10 @@ static void __msg_ui_setting_block_filter_sel_all_mouse_down_cb(void *data, Evas
        settingData->block_msg.block_filter_chk_sel_all_state = !settingData->block_msg.block_filter_chk_sel_all_state;
        elm_check_state_pointer_set(settingData->block_msg.block_filter_chk_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
 
-       __msg_ui_setting_block_filter_check_select_all(settingData);
+       __msg_ui_setting_block_word_check_select_all(settingData);
 }
 
-static void __msg_ui_setting_block_filter_sel_all_chk_changed_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_sel_all_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -732,46 +902,74 @@ static void __msg_ui_setting_block_filter_sel_all_chk_changed_cb(void *data, Eva
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sel_all_chk_state = [%d]", settingData->block_msg.block_filter_chk_sel_all_state);
 
-       __msg_ui_setting_block_filter_check_select_all(data);
+       __msg_ui_setting_block_word_check_select_all(data);
 }
 
-static void __msg_ui_setting_block_filter_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_delete_mode_exit(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
 
        PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
 
-       /* Cancel block filter deletion. */
-       msg_ui_setting_block_message_exit_edit_mode(settingData);
+       __msg_ui_setting_block_word_update_view(settingData);
 
+       if (settingData->block_msg.delete_genlist) {
+               evas_object_del(settingData->block_msg.delete_genlist);
+               settingData->block_msg.delete_genlist = NULL;
+       }
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       return;
 }
 
-static void __msg_ui_setting_block_filter_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_block_word_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
 
-       int i = 0;
+       int index = 0;
        int total_cnt = 0;
        int filter_id = 0;
-       msg_error_t err = MSG_SUCCESS;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data;
+       Eina_List *l = NULL;
 
        total_cnt = settingData->block_msg.filterList.nCount;
 
        /* Delete selected filter item. */
-       for (i = 0; i < total_cnt; i++) {
-               if (settingData->block_msg.block_filter_chk_state[i] == EINA_TRUE) {
-                       err = msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_ID_INT, &filter_id);
-                       msg_delete_filter(settingData->msgHandle, (msg_filter_id_t)filter_id);
+       if (total_cnt != 0) {
+               EINA_LIST_FOREACH(settingData->block_msg.block_filter_chk_state_list, l, list_data) {
+                       if (list_data) {
+                               if (list_data->block_filter_chk_state == EINA_TRUE) {
+                                       msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[index], MSG_FILTER_ID_INT, &filter_id);
+                                       if (list_data->filter_id == filter_id) {
+                                               msg_delete_filter(settingData->msgHandle, (msg_filter_id_t)filter_id);
+                                               settingData->block_msg.block_filter_chk_state_list = eina_list_remove(settingData->block_msg.block_filter_chk_state_list, (const void *)list_data);
+                                               free(list_data);
+                                       }
+                               }
+                       }
+                       index++;
                }
        }
 
-       msg_ui_setting_block_message_exit_edit_mode(settingData);
+       __msg_ui_setting_block_word_delete_mode_exit(settingData);
+
+}
 
+static void __msg_ui_setting_block_word_delete_cancel_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       /* Cancel block filter deletion. */
+       __msg_ui_setting_block_word_delete_mode_exit(settingData);
 }
 
-static void __msg_ui_setting_block_filter_delete_view_update_controlbar(void *data)
+static void __msg_ui_setting_block_word_delete_view_controlbar(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
@@ -788,29 +986,29 @@ static void __msg_ui_setting_block_filter_delete_view_update_controlbar(void *da
                }
        }
 
-       ctrl_btn[0] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
+       ctrl_btn[0] = elm_toolbar_item_append(settingData->block_msg.delete_ctrl_bar, \
                                                MSG_CONTROLBAR_ICON_DELETE, NULL, \
-                                               __msg_ui_setting_block_filter_delete_btn_clicked_cb, \
+                                               __msg_ui_setting_block_word_delete_btn_clicked_cb, \
                                                (void *)settingData);
        settingData->block_msg.ctrl_btn[0] = ctrl_btn[0];
 
-       ctrl_btn[1] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
+       ctrl_btn[1] = elm_toolbar_item_append(settingData->block_msg.delete_ctrl_bar, NULL, NULL, NULL, NULL);
        settingData->block_msg.ctrl_btn[1] = ctrl_btn[1];
        elm_object_item_disabled_set(ctrl_btn[1], EINA_TRUE);
 
-       ctrl_btn[2] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
+       ctrl_btn[2] = elm_toolbar_item_append(settingData->block_msg.delete_ctrl_bar, NULL, NULL, NULL, NULL);
        settingData->block_msg.ctrl_btn[2] = ctrl_btn[2];
        elm_object_item_disabled_set(ctrl_btn[2], EINA_TRUE);
 
-       ctrl_btn[3] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
+       ctrl_btn[3] = elm_toolbar_item_append(settingData->block_msg.delete_ctrl_bar, \
                                                        MSG_CONTROLBAR_ICON_CANCEL, NULL, \
-                                                       __msg_ui_setting_block_filter_cancel_btn_clicked_cb, \
+                                                       __msg_ui_setting_block_word_delete_cancel_btn_clicked_cb, \
                                                        (void *)settingData);
        settingData->block_msg.ctrl_btn[3] = ctrl_btn[3];
 
 }
 
-static void __msg_ui_setting_block_filter_delete_view(void *data)
+static void __msg_ui_setting_block_word_delete_view(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -819,140 +1017,81 @@ static void __msg_ui_setting_block_filter_delete_view(void *data)
        Evas_Object *filter_layout_sel_all;
        Evas_Object *filter_check_sel_all;
 
-       Elm_Object_Item *it = NULL;
+       Evas_Object *delete_filter_box;
+       Evas_Object *delete_filter_list;
+       Elm_Object_Item *navi_it;
+       Evas_Object *ctrl_bar;
 
-       if (elm_genlist_decorate_mode_get(settingData->block_msg.block_filter_genlist)) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid state : block_filter_genlist is in edit mode!!");
-               return;
-       }
+       Evas_Object *delete_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+       settingData->block_msg.delete_layout = delete_layout;
+
+       delete_filter_box = elm_box_add(settingData->navi_frame);
+       settingData->block_msg.delete_filter_box = delete_filter_box;
+       evas_object_size_hint_weight_set(delete_filter_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(delete_filter_box);
+       elm_object_part_content_set(settingData->block_msg.delete_layout, "elm.swallow.content", delete_filter_box);
+
+       delete_filter_list = __msg_ui_setting_create_block_word_delete_genlist(settingData->navi_frame, settingData);
+       elm_box_pack_end(delete_filter_box, delete_filter_list);
+       evas_object_show(delete_filter_list);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "Delete word"), NULL, NULL, delete_layout, NULL);
 
        /* Disable back_button */
-       Elm_Object_Item *navi_it = elm_naviframe_top_item_get(settingData->navi_frame);
        elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
 
-       __msg_ui_setting_block_filter_delete_view_update_controlbar(settingData);
+       ctrl_bar = msg_ui_setting_common_create_controlbar(settingData->navi_frame);
+       settingData->block_msg.delete_ctrl_bar = ctrl_bar;
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, ctrl_bar == NULL, "ctrl_bar is NULL !!");
 
-       /* Remove dialogue separator. */
-       it = elm_genlist_first_item_get(settingData->block_msg.block_filter_genlist);
-       if (it)
-               elm_object_item_del(it);
+       elm_object_item_part_content_set(navi_it, "controlbar", ctrl_bar);
+
+       __msg_ui_setting_block_word_delete_view_controlbar(settingData);
 
        /* Append 'Select All' layout. */
-       filter_layout_sel_all = elm_layout_add(settingData->block_msg.block_filter_box);
+       filter_layout_sel_all = elm_layout_add(settingData->block_msg.delete_filter_box);
        settingData->block_msg.block_filter_sel_all_layout = filter_layout_sel_all;
        elm_layout_theme_set(filter_layout_sel_all, "genlist", "item", "select_all/default");
        evas_object_size_hint_weight_set(filter_layout_sel_all, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
        evas_object_size_hint_align_set(filter_layout_sel_all, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_event_callback_add(filter_layout_sel_all, EVAS_CALLBACK_MOUSE_DOWN, __msg_ui_setting_block_filter_sel_all_mouse_down_cb, settingData);
+       evas_object_event_callback_add(filter_layout_sel_all, EVAS_CALLBACK_MOUSE_DOWN, __msg_ui_setting_block_word_sel_all_mouse_down_cb, settingData);
 
        filter_check_sel_all = elm_check_add(filter_layout_sel_all);
        settingData->block_msg.block_filter_chk_sel_all = filter_check_sel_all;
        elm_check_state_pointer_set(filter_check_sel_all, &settingData->block_msg.block_filter_chk_sel_all_state);
-       evas_object_smart_callback_add(filter_check_sel_all, "changed", __msg_ui_setting_block_filter_sel_all_chk_changed_cb, settingData);
+       evas_object_smart_callback_add(filter_check_sel_all, "changed", __msg_ui_setting_block_word_sel_all_check_clicked_cb, settingData);
        evas_object_propagate_events_set(filter_check_sel_all, EINA_FALSE);
        elm_object_part_content_set(filter_layout_sel_all, "elm.icon", filter_check_sel_all);
 
        elm_object_part_text_set(filter_layout_sel_all, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL"));
-       elm_box_pack_start(settingData->block_msg.block_filter_box, filter_layout_sel_all);
+       elm_box_pack_start(settingData->block_msg.delete_filter_box, filter_layout_sel_all);
        evas_object_show(filter_layout_sel_all);
 
-       elm_genlist_decorate_mode_set(settingData->block_msg.block_filter_genlist, EINA_TRUE);
-       elm_genlist_select_mode_set(settingData->block_msg.block_filter_genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
+       elm_genlist_decorate_mode_set(settingData->block_msg.delete_genlist, EINA_FALSE);
+       elm_genlist_select_mode_set(settingData->block_msg.delete_genlist, ELM_OBJECT_SELECT_MODE_ALWAYS);
 
        /* Default state of "Delete" button is disable. */
        elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
 }
 
-static void __msg_ui_setting_init_block_message(void *data)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-       int i = 0;
-       int total_cnt = 0;
-       msg_error_t err = MSG_SUCCESS;
-
-       msg_release_list_struct(&settingData->block_msg.filterList);
-       err = msg_get_filter_list(settingData->msgHandle, &(settingData->block_msg.filterList));
-       if (err != MSG_SUCCESS) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_filter_list() fail - err [%d]", err);
-               return;
-       }
-
-       total_cnt = settingData->block_msg.filterList.nCount;
-
-       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
-
-       for (i = 0; i < total_cnt; i++)
-               settingData->block_msg.block_filter_chk_state[i] = EINA_FALSE;
-}
-
-void msg_ui_setting_block_message_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
-
-       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-
-       elm_naviframe_item_pop(settingData->navi_frame);
-
-       msg_release_list_struct(&settingData->block_msg.filterList);
-       memset(&settingData->block_msg, 0x0, sizeof(MSG_UI_SETTING_FILTER_S));
-}
+/**********************************
+ ***  Block filter main  ***
+ **********************************/
 
-void msg_ui_setting_block_message_exit_edit_mode(void *data)
+static void __msg_ui_setting_block_word_update_view(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
 
        PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
 
-       if (!elm_genlist_decorate_mode_get(settingData->block_msg.block_filter_genlist)) {
-               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Block filter list isn't in edit mode!!");
-               return;
-       }
-
-       /* Create back button. */
-       msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
-                       msg_ui_setting_block_message_back_btn_cb, settingData);
-
-       /*************************/
-       /* Update option header. */
-       /*************************/
-       __msg_ui_setting_block_message_update_controlbar(settingData);
-
-       /* Unset edit mode */
-       elm_genlist_decorate_mode_set(settingData->block_msg.block_filter_genlist, EINA_FALSE);
-       elm_genlist_select_mode_set(settingData->block_msg.block_filter_genlist, ELM_OBJECT_SELECT_MODE_DEFAULT);
-
-       /* Update view. */
-       msg_ui_setting_block_filter_update_view(settingData);
-
+       __msg_ui_setting_destroy_block_word_main(settingData);
+       __msg_ui_setting_init_block_word_main(settingData);
+       __msg_ui_setting_show_block_word_main(settingData);
+       __msg_ui_setting_block_word_update_controlbar(settingData);
 }
 
-static void __msg_ui_setting_block_message_delete_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-
-       /* Go to block filter delete view. */
-       __msg_ui_setting_block_filter_delete_view(settingData);
-
-}
-
-static void __msg_ui_setting_block_message_add_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-
-       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-
-       /* Go to detail view. */
-       __msg_ui_setting_block_filter_detail_main(settingData, MSG_UI_SETTING_BLOCKED_DETAIL_CREATE);
-
-}
-
-void msg_ui_setting_destroy_block_message(void *data)
+static void __msg_ui_setting_destroy_block_word_main(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
@@ -982,10 +1121,48 @@ void msg_ui_setting_destroy_block_message(void *data)
                evas_object_del(settingData->block_msg.block_filter_nocontents);
                settingData->block_msg.block_filter_nocontents = NULL;
        }
+}
+
+static void __msg_ui_setting_init_block_word_main(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       msg_error_t err = MSG_SUCCESS;
+       int total_cnt = 0;
+       int i = 0;
+       int filter_type = 0;
+       int filter_id = 0;
+       MSG_UI_SETTING_FILTER_LIST_S *list_data;
 
+       msg_release_list_struct(&settingData->block_msg.filterList);
+       err = msg_get_filter_list(settingData->msgHandle, &(settingData->block_msg.filterList));
+       if (err != MSG_SUCCESS) {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_get_filter_list() fail - err [%d]", err);
+               return;
+       }
+
+       total_cnt = settingData->block_msg.filterList.nCount;
+
+       settingData->block_msg.block_filter_chk_sel_all_state = EINA_FALSE;
+       settingData->block_msg.word_cnt = 0;
+
+       EINA_LIST_FREE(settingData->block_msg.block_filter_chk_state_list, list_data) {
+               if (list_data)
+                       free(list_data);
+       }
+
+       for (i = 0; i < total_cnt; i++) {
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_ID_INT, &filter_id);
+               msg_get_int_value(settingData->block_msg.filterList.msg_struct_info[i], MSG_FILTER_TYPE_INT, &filter_type);
+               settingData->block_msg.block_filter_chk_state_list = filter_chk_list_append(settingData->block_msg.block_filter_chk_state_list, filter_id, EINA_FALSE, EINA_TRUE);
+               if (filter_type == MSG_FILTER_BY_WORD) {
+                       settingData->block_msg.word_cnt++;
+               }
+       }
 }
 
-void msg_ui_setting_show_block_message(void *data)
+static void __msg_ui_setting_show_block_word_main(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
@@ -996,7 +1173,7 @@ void msg_ui_setting_show_block_message(void *data)
        Evas_Object *block_filter_nocontents;
        Evas_Object *block_filter_list;
 
-       if (settingData->block_msg.filterList.nCount == 0) {
+       if (settingData->block_msg.word_cnt == 0) {
                block_filter_nocontents = msg_ui_setting_common_create_no_content_view(settingData->block_msg.block_layout, NULL);
                settingData->block_msg.block_filter_nocontents = block_filter_nocontents;
                elm_object_part_content_set(settingData->block_msg.block_layout, "elm.swallow.content", block_filter_nocontents);
@@ -1007,13 +1184,13 @@ void msg_ui_setting_show_block_message(void *data)
                evas_object_show(block_filter_box);
                elm_object_part_content_set(settingData->block_msg.block_layout, "elm.swallow.content", block_filter_box);
 
-               block_filter_list = __msg_ui_setting_create_block_filter_genlist(settingData->navi_frame, settingData);
+               block_filter_list = __msg_ui_setting_create_block_word_genlist(settingData->navi_frame, settingData);
                elm_box_pack_end(block_filter_box, block_filter_list);
                evas_object_show(block_filter_list);
        }
 }
 
-static void __msg_ui_setting_block_message_update_controlbar(void *data)
+static void __msg_ui_setting_block_word_update_controlbar(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
@@ -1031,9 +1208,9 @@ static void __msg_ui_setting_block_message_update_controlbar(void *data)
        }
 
        ctrl_btn[0] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
-                                               MSG_CONTROLBAR_ICON_DELETE, NULL, \
-                                               __msg_ui_setting_block_message_delete_btn_clicked_cb, \
-                                               (void *)settingData);
+                                                       MSG_CONTROLBAR_ICON_CREATE, NULL, \
+                                                       __msg_ui_setting_block_word_add_btn_clicked_cb, \
+                                                       (void *)settingData);
        settingData->block_msg.ctrl_btn[0] = ctrl_btn[0];
 
        /* Add NULL button */
@@ -1042,11 +1219,17 @@ static void __msg_ui_setting_block_message_update_controlbar(void *data)
        elm_object_item_disabled_set(ctrl_btn[1], EINA_TRUE);
 
        ctrl_btn[2] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, \
-                                                       MSG_CONTROLBAR_ICON_CREATE, NULL, \
-                                                       __msg_ui_setting_block_message_add_btn_clicked_cb, \
-                                                       (void *)settingData);
+                                               MSG_CONTROLBAR_ICON_DELETE, NULL, \
+                                               __msg_ui_setting_block_word_del_btn_clicked_cb, \
+                                               (void *)settingData);
        settingData->block_msg.ctrl_btn[2] = ctrl_btn[2];
 
+       /* If no item exist in block filter, delete button should be disabled. */
+       if (settingData->block_msg.word_cnt == 0)
+               elm_object_item_disabled_set(ctrl_btn[2], EINA_TRUE);
+       else
+               elm_object_item_disabled_set(ctrl_btn[2], EINA_FALSE);
+
        /* Add NULL button */
        ctrl_btn[3] = elm_toolbar_item_append(settingData->block_msg.block_ctrl_bar, NULL, NULL, NULL, NULL);
        settingData->block_msg.ctrl_btn[3] = ctrl_btn[3];
@@ -1054,30 +1237,7 @@ static void __msg_ui_setting_block_message_update_controlbar(void *data)
 
 }
 
-void msg_ui_setting_block_filter_update_view(void *data)
-{
-       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
-       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
-
-       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
-
-       msg_ui_setting_destroy_block_message(settingData);
-
-       __msg_ui_setting_init_block_message(settingData);
-
-       msg_ui_setting_show_block_message(settingData);
-
-       __msg_ui_setting_block_message_update_controlbar(settingData);
-
-       if (settingData->block_msg.filterList.nCount == 0) {
-               /* If no item exist in block filter, delete button should be disabled. */
-               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
-       } else {
-               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_FALSE);
-       }
-}
-
-void msg_ui_setting_general_block_message_main(void *data, Evas_Object *obj, void *event_info)
+void msg_ui_setting_spam_block_word_main(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
@@ -1087,43 +1247,27 @@ void msg_ui_setting_general_block_message_main(void *data, Evas_Object *obj, voi
        Evas_Object *block_layout;
        Elm_Object_Item *navi_it;
 
-       bool filter_set = EINA_FALSE;
-
        Evas_Object *ctrl_bar;
 
        /* Init block message data. */
-       __msg_ui_setting_init_block_message(settingData);
+       __msg_ui_setting_init_block_word_main(settingData);
 
        block_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
        settingData->block_msg.block_layout = block_layout;
 
-       /* Block should be always enabled. */
-       msg_get_filter_operation(settingData->msgHandle, (bool *)&filter_set);
-       if (filter_set == EINA_FALSE) {
-               if (msg_set_filter_operation(settingData->msgHandle, EINA_TRUE) == MSG_SUCCESS) {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Block is enabled !!");
-               }
-               else {
-                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_filter_operation() is failed !!");
-               }
-       }
-
-       msg_ui_setting_show_block_message(settingData);
+       __msg_ui_setting_show_block_word_main(settingData);
 
        navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "Blocked word"), NULL, NULL, block_layout, NULL);
 
        msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
-                       msg_ui_setting_block_message_back_btn_cb, settingData);
+                       __msg_ui_setting_block_word_back_btn_cb, settingData);
 
        ctrl_bar = msg_ui_setting_common_create_controlbar(settingData->navi_frame);
        settingData->block_msg.block_ctrl_bar = ctrl_bar;
        MSG_UI_RETM_IF(MSG_UI_LEVEL_DEBUG, ctrl_bar == NULL, "ctrl_bar is NULL !!");
 
-       __msg_ui_setting_block_message_update_controlbar(settingData);
+       __msg_ui_setting_block_word_update_controlbar(settingData);
 
        elm_object_item_part_content_set(navi_it, "controlbar", ctrl_bar);
 
-       /* If no item exist in block filter, delete button should be disabled. */
-       if (settingData->block_msg.filterList.nCount == 0)
-               elm_object_item_disabled_set(settingData->block_msg.ctrl_btn[0], EINA_TRUE);
 }
diff --git a/setting/src/spam/msg-ui-setting-spam-setting.c b/setting/src/spam/msg-ui-setting-spam-setting.c
new file mode 100755 (executable)
index 0000000..f170c60
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include "msg-ui-setting-main.h"
+#include "msg-ui-setting-spam-setting.h"
+
+
+static struct _msg_ui_setting_mixed_list_item spam_menu_its[] = {
+       { 1, "Numbers to reject", msg_ui_setting_spam_block_number_main, ELM_GENLIST_ITEM_NONE },
+       { 1, "Blocked word", msg_ui_setting_spam_block_word_main, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
+
+
+/*============================================================================
+                               STATIC FUNCTION DEFINE
+=============================================================================*/
+static char *__msg_ui_setting_spam_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_spam_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static Evas_Object *__msg_ui_setting_spam_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
+static void __msg_ui_setting_spam_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
+
+
+/*============================================================================
+                               FUNCTION IMPLEMENT
+=============================================================================*/
+Eina_List *filter_chk_list_append(Eina_List* list, int filter_id, Eina_Bool block_filter_chk_state, Eina_Bool number_reject_chk_state)
+{
+    MSG_UI_SETTING_FILTER_LIST_S *data = NULL;
+
+    data = (MSG_UI_SETTING_FILTER_LIST_S *) malloc(sizeof(MSG_UI_SETTING_FILTER_LIST_S));
+    data->filter_id = filter_id;
+    data->block_filter_chk_state = block_filter_chk_state;
+    data->number_reject_chk_state = number_reject_chk_state;
+
+    return eina_list_append(list, (const void *)data);
+}
+
+static char *
+__msg_ui_setting_spam_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (spam_menu_its[index].name) {
+                       if (strstr(spam_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", spam_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, spam_menu_its[index].name));
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void
+__msg_ui_setting_spam_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (spam_menu_its[index].func != NULL)
+               spam_menu_its[index].func(settingData, obj, event_info);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+static Evas_Object *
+__msg_ui_setting_spam_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *spam_genlist;
+       int index = 0;
+
+       spam_genlist = msg_ui_setting_common_create_genlist(parent);
+       settingData->list.spam_setting.spam_genlist = spam_genlist;
+
+       msg_ui_setting_common_append_genlist_separator(spam_genlist, settingData);
+
+       settingData->list.spam_setting.spam_itc.item_style = "dialogue/1text";
+       settingData->list.spam_setting.spam_itc.func.text_get = __msg_ui_setting_spam_gl_text_get;
+       settingData->list.spam_setting.spam_itc.func.content_get = NULL;
+       settingData->list.spam_setting.spam_itc.func.state_get = NULL;
+       settingData->list.spam_setting.spam_itc.func.del = NULL;
+
+       for (index = 0; spam_menu_its[index].name; index++) {
+               elm_genlist_item_append(spam_genlist, &settingData->list.spam_setting.spam_itc, (void *)index,
+                       NULL, spam_menu_its[index].type, __msg_ui_setting_spam_gl_sel, (void *)index);
+       }
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+       return spam_genlist;
+}
+
+static void __msg_ui_setting_spam_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+}
+
+void msg_ui_setting_spam_create_view(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Evas_Object *spam_layout;
+       Evas_Object *spam_genlist;
+       Evas_Object *l_button;
+       Elm_Object_Item *navi_it;
+
+       bool filter_set = EINA_FALSE;
+
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_GENERAL;
+       msg_ui_setting_msg_get_config(settingData);
+
+       /* Block should be always enabled. */
+       msg_get_filter_operation(settingData->msgHandle, (bool *)&filter_set);
+       if (filter_set == EINA_FALSE) {
+               if (msg_set_filter_operation(settingData->msgHandle, EINA_TRUE) == MSG_SUCCESS) {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "Block is enabled !!");
+               } else {
+                       MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_set_filter_operation() is failed !!");
+               }
+       }
+
+       /* Initialize global variable. */
+       memset(&settingData->list.spam_setting, 0x0, sizeof(settingData->list.spam_setting));
+
+       if (obj == NULL) {
+               /* Change background color from transparent to group_list. */
+               elm_object_style_set(settingData->bg, "group_list");
+       }
+
+       spam_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
+
+       spam_genlist = __msg_ui_setting_spam_create_menu(settingData->navi_frame, settingData);
+       elm_object_part_content_set(spam_layout, "elm.swallow.content", spam_genlist);
+
+       /* Create Left Button */
+       l_button = elm_button_add(settingData->navi_frame);
+
+       navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), l_button, NULL, spam_layout, NULL);
+
+       /* Style set should be called after elm_naviframe_item_push(). */
+       elm_object_style_set(l_button, "naviframe/back_btn/default");
+       if (obj == NULL)
+               evas_object_smart_callback_add(l_button, "clicked", msg_ui_setting_quit_cb, (void *)settingData);
+       else
+               evas_object_smart_callback_add(l_button, "clicked", __msg_ui_setting_spam_back_btn_cb, (void *)settingData);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+
+}
index 44c9eef..23f3658 100755 (executable)
 #include "msg-ui-setting-main.h"
 #include "msg-ui-setting-text-message.h"
 
-
 static struct _msg_ui_setting_mixed_list_item text_menu_its[] = {
        { 1, "IDS_MSGF_BODY_REQUEST_DELIVERY_REPORT", NULL, ELM_GENLIST_ITEM_NONE },
+       { 1, "Input mode", NULL, ELM_GENLIST_ITEM_TREE },
        { 1, "IDS_MSGF_BODY_SERVICECENTRE", msg_ui_setting_create_service_center_list, ELM_GENLIST_ITEM_NONE },
        /* do not delete below */
        { 1, NULL, NULL, ELM_GENLIST_ITEM_NONE }
 };
 
+static struct _msg_ui_setting_mixed_list_item input_mode_menu_its[] = {
+       { 2, "GSM alphabet", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "Unicode", NULL, ELM_GENLIST_ITEM_NONE },
+       { 2, "Automatic", NULL, ELM_GENLIST_ITEM_NONE },
+       /* do not delete below */
+       { 2, NULL, NULL, ELM_GENLIST_ITEM_NONE }
+};
 
 /*============================================================================
                                STATIC FUNCTION DEFINE
 =============================================================================*/
+static char *__msg_ui_setting_text_input_mode_gl_text_get(void *data, Evas_Object *obj, const char *part);
+static Evas_Object *__msg_ui_setting_text_input_mode_gl_content_get(void *data, Evas_Object *obj, const char *part);
+static void __msg_ui_setting_text_input_mode_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_input_mode_radio_cb(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_input_mode_save(void *data);
+
+static void __msg_ui_setting_text_gl_exp(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_gl_con(void *data, Evas_Object *obj, void *event_info);
 static char *__msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part);
 static void __msg_ui_setting_text_save_req_delivery_report(void *data);
 static void __msg_ui_setting_text_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info);
 static Evas_Object *__msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *part);
 static void __msg_ui_setting_text_gl_sel(void *data, Evas_Object *obj, void *event_info);
+static void __msg_ui_setting_text_back_btn_cb(void *data, Evas_Object *obj, void *event_info);
 static Evas_Object *__msg_ui_setting_text_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData);
 
-
 /*============================================================================
                                FUNCTION IMPLEMENT
 =============================================================================*/
 
+/**********************************
+ ***  input mode view  ***
+ **********************************/
+static char *__msg_ui_setting_text_input_mode_gl_text_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       int index = (int)data;
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if(index >= sizeof(input_mode_menu_its) / sizeof(input_mode_menu_its[0])) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
+               if (input_mode_menu_its[index].name) {
+                       if (strstr(input_mode_menu_its[index].name, "IDS_COM") != NULL)
+                               return strdup(dgettext("sys_string", input_mode_menu_its[index].name));
+                       else
+                               return strdup(dgettext(MESSAGE_PKGNAME, input_mode_menu_its[index].name));
+               }
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *__msg_ui_setting_text_input_mode_gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Evas_Object *radio;
+
+       PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int index = (int)data;
+       int inputMode = -1;
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               evas_object_propagate_events_set(radio, EINA_FALSE);
+               evas_object_smart_callback_add(radio, "changed", __msg_ui_setting_text_input_mode_radio_cb, (void *)settingData);
+
+               elm_radio_group_add(radio, settingData->list.text_msg.text_input_mode_radio_group);
+
+               msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, &inputMode);
+               if (inputMode == MSG_ENCODE_GSM7BIT)
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 0);
+               else if (inputMode == MSG_ENCODE_UCS2)
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 1);
+               else
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 2);
+
+               return radio;
+       } else {
+               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
+       }
+
+       return NULL;
+}
+
+static void __msg_ui_setting_text_input_mode_gl_sel(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = NULL;
+       int index = (int)data;
+
+       settingData = msg_ui_setting_get_data();
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       /* Change radio selection. */
+       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, index);
+
+       __msg_ui_setting_text_input_mode_save((void *)settingData);
+
+       elm_genlist_item_update(settingData->list.text_msg.text_input_mode_item);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return;
+}
+
+static void __msg_ui_setting_text_input_mode_radio_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       __msg_ui_setting_text_input_mode_save((void *)settingData);
+
+       elm_genlist_item_update(settingData->list.text_msg.text_input_mode_item);
+}
+
+static void __msg_ui_setting_text_input_mode_save(void *data)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+       int inputMode = -1;
+       msg_error_t     err = MSG_SUCCESS;
+
+       /* Save selected input mode value. */
+       inputMode = elm_radio_value_get(settingData->list.text_msg.text_input_mode_radio_group);
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
+       if (inputMode == MSG_ENCODE_GSM7BIT)
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, MSG_ENCODE_GSM7BIT);
+       else if (inputMode == MSG_ENCODE_UCS2 - 1)
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, MSG_ENCODE_UCS2);
+       else
+               msg_set_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, MSG_ENCODE_AUTO);
+
+       err = msg_ui_setting_msg_set_config(settingData);
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_ui_setting_msg_set_config(input_mode) is %d", err);
+}
+
+
 /************************
  ***  Text message menu ***
  *************************/
+ static void __msg_ui_setting_text_gl_exp(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       Elm_Object_Item *it = event_info;
+       int index = 0;
+       int depth = 0;
+       int inputMode = -1;
+
+       depth = elm_genlist_item_expanded_depth_get(it);
+
+       MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "depth = %d", depth);
+
+       if (depth == 0) {
+               settingData->list.text_msg.text_input_mode_itc.item_style = "dialogue/1text.1icon.2/expandable2";
+               settingData->list.text_msg.text_input_mode_itc.func.text_get = __msg_ui_setting_text_input_mode_gl_text_get;
+               settingData->list.text_msg.text_input_mode_itc.func.content_get = __msg_ui_setting_text_input_mode_gl_content_get;
+               settingData->list.text_msg.text_input_mode_itc.func.state_get = NULL;
+               settingData->list.text_msg.text_input_mode_itc.func.del = NULL;
+
+               settingData->list.text_msg.text_input_mode_radio_group = elm_radio_add(obj);
+
+               for (index = 0; input_mode_menu_its[index].name; index++) {
+                       elm_genlist_item_append(settingData->list.text_msg.text_genlist,
+                                                                       &settingData->list.text_msg.text_input_mode_itc,
+                                                                               (void *)index, it, input_mode_menu_its[index].type,
+                                                                               __msg_ui_setting_text_input_mode_gl_sel, (void *)index);
+               }
 
-static char *
-__msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part)
+               msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, &inputMode);
+
+               /* Input mode current radio value set */
+               if (inputMode == MSG_ENCODE_GSM7BIT)
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 0);
+               else if (inputMode == MSG_ENCODE_UCS2)
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 1);
+               else
+                       elm_radio_value_set(settingData->list.text_msg.text_input_mode_radio_group, 2);
+       }
+}
+
+static void __msg_ui_setting_text_gl_con(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+       Elm_Object_Item *item = event_info;
+       elm_genlist_item_subitems_clear(item);
+}
+
+static char *__msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        int index = (int)data;
        PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
+       int inputMode = -1;
 
        msg_error_t err = MSG_SUCCESS;
 
@@ -71,13 +258,24 @@ __msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part
                        int cur_index = 0;
 
                        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
-                       msg_ui_setting_msg_get_config(settingData);
-                       err = msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMSC_SELECTED_ID_INT, &cur_index);
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+                       err = msg_get_int_value(settingData->msg_setting.smsc_opt, MSG_SMSC_SELECTED_ID_INT, &cur_index);
                        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "__msg_ui_setting_text_gl_text_get is %d", err);
 
-                       snprintf(smsc_name, sizeof(smsc_name), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD"), cur_index+1);
+                       char *dgetbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD");
+                       char *g_buf = g_strdup_printf(dgetbuf, cur_index+1);
+                       strncpy(smsc_name, g_buf, sizeof(smsc_name) - 1);
+                       free(g_buf);
                        return strdup(smsc_name);
+               } else if (index == MSG_UI_SETTING_TEXT_MENU_INPUT_MODE) {
+                       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_ENCODE_TYPE_INT, &inputMode);
+                       if (inputMode == MSG_ENCODE_GSM7BIT)
+                               return strdup(dgettext(MESSAGE_PKGNAME, input_mode_menu_its[0].name));
+                       else if (inputMode == MSG_ENCODE_UCS2)
+                               return strdup(dgettext(MESSAGE_PKGNAME, input_mode_menu_its[1].name));
+                       else if (inputMode == MSG_ENCODE_AUTO)
+                               return strdup(dgettext(MESSAGE_PKGNAME, input_mode_menu_its[2].name));
+                       else
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "input Mode fail = %d", inputMode);
                } else {
                        MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid index = %s", index);
                }
@@ -88,8 +286,7 @@ __msg_ui_setting_text_gl_text_get(void *data, Evas_Object *obj, const char *part
        return NULL;
 }
 
-static void
-__msg_ui_setting_text_save_req_delivery_report(void *data)
+static void __msg_ui_setting_text_save_req_delivery_report(void *data)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -100,13 +297,11 @@ __msg_ui_setting_text_save_req_delivery_report(void *data)
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "set_val = %d", (int)set_val);
 
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
-       msg_ui_setting_msg_get_config(settingData);
        msg_set_bool_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_DELIVERY_REPORT_BOOL, set_val);
        msg_ui_setting_msg_set_config(settingData);
 }
 
-static void
-__msg_ui_setting_text_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_text_gl_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -120,8 +315,7 @@ __msg_ui_setting_text_gl_check_clicked_cb(void *data, Evas_Object *obj, void *ev
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static Evas_Object *
-__msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *part)
+static Evas_Object *__msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *part)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -137,8 +331,6 @@ __msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *p
                        check = elm_check_add(obj);
                        settingData->list.text_msg.req_delivery_rep_check = check;
 
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
-                       msg_ui_setting_msg_get_config(settingData);
                        msg_get_bool_value(settingData->msg_setting.setting_opt, MSG_SMS_SENDOPT_DELIVERY_REPORT_BOOL, &bReport);
 
                        if (bReport == true)
@@ -162,13 +354,13 @@ __msg_ui_setting_text_gl_content_get(void *data, Evas_Object *obj, const char *p
        return NULL;
 }
 
-static void
-__msg_ui_setting_text_gl_sel(void *data, Evas_Object *obj, void *event_info)
+static void __msg_ui_setting_text_gl_sel(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
        PMSG_SETTING_DATA settingData = msg_ui_setting_get_data();
        int index = (int)data;
+       Eina_Bool expand_state = EINA_FALSE;
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "index = %d", index);
        MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, settingData == NULL, "PMSG_THREAD_DATA is NULL");
@@ -184,6 +376,12 @@ __msg_ui_setting_text_gl_sel(void *data, Evas_Object *obj, void *event_info)
                elm_check_state_set(settingData->list.text_msg.req_delivery_rep_check, !set_val);
 
                __msg_ui_setting_text_save_req_delivery_report((void *)settingData);
+       } else if (index == MSG_UI_SETTING_TEXT_MENU_INPUT_MODE) {
+               expand_state = elm_genlist_item_expanded_get(settingData->list.text_msg.text_input_mode_item);
+               if (expand_state == EINA_FALSE)
+                       elm_genlist_item_expanded_set(settingData->list.text_msg.text_input_mode_item, EINA_TRUE);
+               else
+                       elm_genlist_item_expanded_set(settingData->list.text_msg.text_input_mode_item, EINA_FALSE);
        } else if (index == MSG_UI_SETTING_TEXT_MENU_SMSC) {
                if (text_menu_its[index].func != NULL)
                        text_menu_its[index].func(settingData, obj, event_info);
@@ -194,8 +392,23 @@ __msg_ui_setting_text_gl_sel(void *data, Evas_Object *obj, void *event_info)
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
-static Evas_Object *
-__msg_ui_setting_text_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
+static void __msg_ui_setting_text_back_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+       MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, data == NULL, "PMSG_SETTING_DATA is NULL");
+
+       PMSG_SETTING_DATA settingData = (PMSG_SETTING_DATA)data;
+
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+       msg_release_struct(&(settingData->msg_setting.smsc_opt));
+
+       elm_naviframe_item_pop(settingData->navi_frame);
+
+       MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
+       return;
+}
+
+static Evas_Object *__msg_ui_setting_text_create_menu(Evas_Object *parent, PMSG_SETTING_DATA settingData)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
 
@@ -215,6 +428,12 @@ __msg_ui_setting_text_create_menu(Evas_Object *parent, PMSG_SETTING_DATA setting
        settingData->list.text_msg.text_2line_itc.func.state_get = NULL;
        settingData->list.text_msg.text_2line_itc.func.del = NULL;
 
+       settingData->list.text_msg.text_2line_1icon_itc.item_style = "dialogue/2text.3/expandable";
+       settingData->list.text_msg.text_2line_1icon_itc.func.text_get = __msg_ui_setting_text_gl_text_get;
+       settingData->list.text_msg.text_2line_1icon_itc.func.content_get = NULL;
+       settingData->list.text_msg.text_2line_1icon_itc.func.state_get = NULL;
+       settingData->list.text_msg.text_2line_1icon_itc.func.del = NULL;
+
        settingData->list.text_msg.text_1line_1icon_itc.item_style = "dialogue/1text.1icon";
        settingData->list.text_msg.text_1line_1icon_itc.func.text_get = __msg_ui_setting_text_gl_text_get;
        settingData->list.text_msg.text_1line_1icon_itc.func.content_get = __msg_ui_setting_text_gl_content_get;
@@ -227,12 +446,20 @@ __msg_ui_setting_text_create_menu(Evas_Object *parent, PMSG_SETTING_DATA setting
                                                                                        (void *)index, NULL, text_menu_its[index].type,
                                                                                        __msg_ui_setting_text_gl_sel, (void *)index);
                        settingData->list.text_msg.service_centre_item = it;
+               } else if (index == MSG_UI_SETTING_TEXT_MENU_INPUT_MODE) {
+                       it = elm_genlist_item_append(text_genlist, &settingData->list.text_msg.text_2line_1icon_itc,
+                                                                       (void *)index, NULL, ELM_GENLIST_ITEM_TREE,
+                                                                       __msg_ui_setting_text_gl_sel, (void *)index);
+                       settingData->list.text_msg.text_input_mode_item = it;
                } else {
                        elm_genlist_item_append(text_genlist, &settingData->list.text_msg.text_1line_1icon_itc, (void *)index,
                                NULL, text_menu_its[index].type, __msg_ui_setting_text_gl_sel, (void *)index);
                }
        }
 
+       evas_object_smart_callback_add(text_genlist, "expanded", __msg_ui_setting_text_gl_exp, settingData);
+       evas_object_smart_callback_add(text_genlist, "contracted", __msg_ui_setting_text_gl_con, settingData);
+
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 
        return text_genlist;
@@ -248,6 +475,13 @@ void msg_ui_setting_text_create_view(void *data, Evas_Object *obj, void *event_i
 
        /* Initialize global variable. */
        memset(&settingData->list.text_msg, 0x0, sizeof(settingData->list.text_msg));
+       msg_release_struct(&(settingData->msg_setting.setting_opt));
+
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMS_SEND;
+       msg_ui_setting_msg_get_config(settingData);
+       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
+       msg_ui_setting_msg_get_config(settingData);
+       msg_get_list_handle(settingData->msg_setting.smsc_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
 
        text_layout = msg_ui_setting_common_create_layout(settingData->navi_frame);
 
@@ -256,5 +490,8 @@ void msg_ui_setting_text_create_view(void *data, Evas_Object *obj, void *event_i
 
        navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_TEXT_MESSAGES"), NULL, NULL, text_layout, NULL);
 
+       msg_ui_setting_common_create_back_btn(settingData->navi_frame, \
+                       __msg_ui_setting_text_back_btn_cb, settingData);
+
 }
 
index 940c614..3336958 100755 (executable)
@@ -102,7 +102,6 @@ __msg_ui_setting_smsc_eraser_clicked_cb(void *data, Evas_Object *obj, const char
        Evas_Object *entry = (Evas_Object *)data;
 
        elm_entry_entry_set(entry, "");
-       elm_object_signal_emit(obj, "elm,state,eraser,hide", "elm");
 
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
@@ -144,8 +143,8 @@ __msg_ui_setting_smsc_gl_content_get(void *data, Evas_Object *obj, const char *p
 
        if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
                if (index == MSG_UI_SETTING_SMSC_MENU_ADDRESS) {
-                       Evas_Object *smsc_addr_ly;
-                       Evas_Object *smsc_addr_entry;
+                       Evas_Object *smsc_addr_ly = NULL;
+                       Evas_Object *smsc_addr_entry = NULL;
                        char *buf = NULL;
                        char address[SMSC_NAME_MAX+1] = {0,};
 
@@ -153,9 +152,18 @@ __msg_ui_setting_smsc_gl_content_get(void *data, Evas_Object *obj, const char *p
                        static Elm_Entry_Filter_Accept_Set smsc_addr_accept_filter_data;
 
                        smsc_addr_ly = elm_layout_add(obj);
+                       if (smsc_addr_ly == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "smsc_addr_ly failed");
+                               return NULL;
+                       }
                        elm_layout_theme_set(smsc_addr_ly, "layout", "editfield", "default");
 
                        smsc_addr_entry = elm_entry_add(smsc_addr_ly);
+                       if (smsc_addr_entry == NULL) {
+                               MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "smsc_addr_entry failed");
+                               return NULL;
+                       }
+                       elm_entry_scrollable_set(smsc_addr_entry, EINA_TRUE);
                        elm_entry_single_line_set(smsc_addr_entry, EINA_TRUE);
                        elm_entry_autocapital_type_set(smsc_addr_entry, ELM_AUTOCAPITAL_TYPE_NONE);
                        elm_entry_input_panel_layout_set(smsc_addr_entry, ELM_INPUT_PANEL_LAYOUT_PHONENUMBER);
@@ -180,9 +188,6 @@ __msg_ui_setting_smsc_gl_content_get(void *data, Evas_Object *obj, const char *p
                        elm_entry_markup_filter_append(smsc_addr_entry, elm_entry_filter_accept_set, &smsc_addr_accept_filter_data);
                        elm_entry_cnp_mode_set(smsc_addr_entry, ELM_CNP_MODE_PLAINTEXT);
 
-                       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
-                       msg_ui_setting_msg_get_config(settingData);
-                       msg_get_list_handle(settingData->msg_setting.setting_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
                        msg_get_str_value(settingData->msg_setting.smsc_list->msg_struct_info[center_index], MSG_SMSC_ADDR_STR, address, SMSC_ADDR_MAX);
                        if (strlen(address) > 0) {
                                buf = elm_entry_utf8_to_markup(address);
@@ -192,10 +197,8 @@ __msg_ui_setting_smsc_gl_content_get(void *data, Evas_Object *obj, const char *p
                                        free(buf);
                        }
 
-                       if (settingData->list.text_msg.smsc_addr_entry != NULL)
-                               elm_object_focus_set(settingData->list.text_msg.smsc_addr_entry, EINA_TRUE);
-
-                       msg_release_struct(&(settingData->msg_setting.setting_opt));
+                       elm_object_focus_set(settingData->list.text_msg.smsc_addr_entry, EINA_TRUE);
+                       elm_entry_cursor_end_set(smsc_addr_entry);
 
                        return smsc_addr_ly;
                } else {
@@ -266,11 +269,7 @@ __msg_ui_setting_smsc_is_changed(void *data)
 
        addr_buf = elm_entry_markup_to_utf8(elm_entry_entry_get(settingData->list.text_msg.smsc_addr_entry));
 
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
-       msg_ui_setting_msg_get_config(settingData);
-       msg_get_list_handle(settingData->msg_setting.setting_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
        msg_get_str_value(settingData->msg_setting.smsc_list->msg_struct_info[index], MSG_SMSC_ADDR_STR, address, SMSC_ADDR_MAX);
-       msg_release_struct(&(settingData->msg_setting.setting_opt));
 
        /* It will check whether value is changed or not. */
        if (addr_buf != NULL) {
@@ -308,10 +307,6 @@ __msg_ui_setting_smsc_done_btn_cb(void *data, Evas_Object *obj, void *event_info
                goto smsc_exit;
        }
 
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
-       msg_ui_setting_msg_get_config(settingData);
-       msg_get_list_handle(settingData->msg_setting.setting_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
-
        strncpy(address, addr_buf, SMSC_ADDR_MAX);
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "SMSC Addr = %s", address);
        msg_set_str_value(settingData->msg_setting.smsc_list->msg_struct_info[index], MSG_SMSC_ADDR_STR, address, strlen(address));
@@ -369,7 +364,10 @@ void msg_ui_setting_service_center_selected_main(void *data, int index)
        smsc_genlist = __msg_ui_setting_text_create_smsc_menu(settingData->navi_frame, settingData);
        elm_object_part_content_set(center_layout, "elm.swallow.content", smsc_genlist);
 
-       snprintf(title, sizeof(title), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD"), index+1);
+       char *dgetbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD");
+       char *g_buf = g_strdup_printf(dgetbuf, index+1);
+       strncpy(title, g_buf, sizeof(title) - 1);
+       free(g_buf);
 
        navi_it = elm_naviframe_item_push(settingData->navi_frame, title, NULL, NULL, center_layout, NULL);
 
@@ -405,9 +403,7 @@ __msg_ui_setting_text_save_service_centre(void *data)
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected value is %d", selection);
 
        /* Save selected value. */
-       settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
-       msg_ui_setting_msg_get_config(settingData);
-       msg_set_int_value(settingData->msg_setting.setting_opt, MSG_SMSC_SELECTED_ID_INT, selection);
+       msg_set_int_value(settingData->msg_setting.smsc_opt, MSG_SMSC_SELECTED_ID_INT, selection);
 
        err = msg_ui_setting_msg_set_config(settingData);
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "msg_ui_setting_msg_set_config(service centre) is %d", err);
@@ -423,7 +419,10 @@ __msg_ui_setting_text_service_centre_gl_text_get(void *data, Evas_Object *obj, c
        char smsc_name[MAX_SMSC_NAME_LEN + 1] = {0, };
 
        if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
-               snprintf(smsc_name, sizeof(smsc_name), dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD"), index+1);
+               char *dgetbuf = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CENTRE_PD");
+               char *g_buf = g_strdup_printf(dgetbuf, index+1);
+               strncpy(smsc_name, g_buf, sizeof(smsc_name) - 1);
+               free(g_buf);
                return strdup(smsc_name);
        } else {
                MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "Invalid part = %s", part);
@@ -486,14 +485,10 @@ __msg_ui_setting_text_service_centre_gl_content_get(void *data, Evas_Object *obj
                /* Radio value should be updated when user back from service centre setting.
                 * If it is omitted, radio will be set to first item.
                 */
-               settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
-               msg_ui_setting_msg_get_config(settingData);
-               msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMSC_SELECTED_ID_INT, &selected);
+               msg_get_int_value(settingData->msg_setting.smsc_opt, MSG_SMSC_SELECTED_ID_INT, &selected);
                if (index == selected)
                        elm_radio_value_set(settingData->list.text_msg.service_centre_radio_group, index);
 
-               msg_release_struct(&(settingData->msg_setting.setting_opt));
-
                return radio;
        } else if (!strcmp(part, "elm.icon.2")) {
                button = elm_button_add(obj);
@@ -534,7 +529,6 @@ __msg_ui_setting_text_service_centre_gl_sel(void *data, Evas_Object *obj, void *
        return;
 }
 
-
 void msg_ui_setting_create_service_center_list(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
@@ -567,9 +561,8 @@ void msg_ui_setting_create_service_center_list(void *data, Evas_Object *obj, voi
        msg_ui_setting_common_append_genlist_separator(smsc_all_genlist, settingData);
 
        settingData->msg_setting.type = MSG_UI_SETTING_TYPE_SMSC_LIST;
-       msg_ui_setting_msg_get_config(settingData);
-       msg_get_list_handle(settingData->msg_setting.setting_opt, MSG_SMSC_LIST_STRUCT, (void **)&(settingData->msg_setting.smsc_list));
-       msg_get_int_value(settingData->msg_setting.setting_opt, MSG_SMSC_SELECTED_ID_INT, &selected_smsc);
+
+       msg_get_int_value(settingData->msg_setting.smsc_opt, MSG_SMSC_SELECTED_ID_INT, &selected_smsc);
        smsc_cnt = settingData->msg_setting.smsc_list->nCount;
 
        MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "smsc_cnt = %d, selected_smsc = %d", smsc_cnt, selected_smsc);
@@ -594,8 +587,6 @@ void msg_ui_setting_create_service_center_list(void *data, Evas_Object *obj, voi
 
        navi_it = elm_naviframe_item_push(settingData->navi_frame, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SERVICECENTRE"), NULL, NULL, smsc_layout, NULL);
 
-       msg_release_struct(&(settingData->msg_setting.setting_opt));
-
        MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG);
 }
 
diff --git a/setting/theme/setting_theme.edc b/setting/theme/setting_theme.edc
new file mode 100755 (executable)
index 0000000..16a9f7c
--- /dev/null
@@ -0,0 +1,47 @@
+
+collections{
+
+       group
+       {
+               name: "editfield_layout_with_contact_button";
+               parts
+               {
+                       part {
+                               name: "base";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "elm.swallow.content";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 1 0;
+                                       max: 578 128;
+                                       rel1 { to: "base"; relative: 0.0 0.0; }
+                                       rel2 { to: "base"; relative: 1.0 1.0; }
+                                }
+                        }
+                       part {
+                               name: "ct_button";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.5 0.5;
+                                       fixed: 1 1;
+                                       max: 64 64;
+                                       rel1 { to_x: "elm.swallow.content"; to_y: "base"; relative: 1.0 0.0; }
+                                       rel2 { to: "base"; relative: 1.0 1.0; }
+                                }
+                        }
+               }
+       }
+}
+