Remove unused layout style
[apps/native/ug-wifi-direct.git] / ug-wifidirect / src / wfd_ug_genlist.c
index 836c5b3..329d26c 100755 (executable)
 */
 
 #include <libintl.h>
-
-#include <assert.h>
 #include <glib.h>
 
 #include <Elementary.h>
 #include <vconf.h>
 #include <ui-gadget-module.h>
-#include <wifi-direct.h>
 
 #include "wfd_ug.h"
 #include "wfd_ug_view.h"
 #include "wfd_client.h"
 
-Elm_Gen_Item_Class sep_itc;
-Elm_Gen_Item_Class sep_itc_end;
-Elm_Gen_Item_Class head_itc;
-Elm_Gen_Item_Class name_itc;
+Elm_Gen_Item_Class device_name_title_itc;
+#ifdef WFD_ON_OFF_GENLIST
+Elm_Gen_Item_Class wfd_onoff_itc;
+#endif
+Elm_Gen_Item_Class device_name_itc;
 Elm_Gen_Item_Class title_itc;
+Elm_Gen_Item_Class multi_view_title_itc;
 Elm_Gen_Item_Class peer_itc;
+Elm_Gen_Item_Class title_no_device_itc;
 Elm_Gen_Item_Class noitem_itc;
-Elm_Gen_Item_Class help_itc;
-Elm_Gen_Item_Class button_itc;
+Elm_Gen_Item_Class title_available_itc;
 
 Elm_Gen_Item_Class title_conn_itc;
 Elm_Gen_Item_Class peer_conn_itc;
@@ -49,754 +48,948 @@ Elm_Gen_Item_Class peer_busy_itc;
 
 Elm_Gen_Item_Class title_multi_connect_itc;
 Elm_Gen_Item_Class peer_multi_connect_itc;
+Elm_Gen_Item_Class select_all_multi_connect_itc;
 
 Elm_Gen_Item_Class title_conn_failed_itc;
 Elm_Gen_Item_Class peer_conn_failed_itc;
 
+#ifdef WFD_ON_OFF_GENLIST
+static char *_gl_wfd_onoff_text_get(void *data, Evas_Object *obj,
+               const char *part)
+{
+       __FUNC_ENTER__;
 
-static char *_gl_header_label_get(void *data, Evas_Object * obj, const char *part)
+       struct ug_data *ugd = (struct ug_data *) data;
+       char *dev_name = NULL;
+       DBG(LOG_INFO, "%s", part);
+       WFD_RETV_IF(ugd == NULL, NULL, "Incorrect parameter(NULL)\n");
+       wfd_get_vconf_device_name(ugd);
+
+       if (!strcmp("elm.text.sub", part)) {
+               __FUNC_EXIT__;
+               return g_strdup(D_("IDS_ST_HEADER_MY_DEVICE_NAME"));
+       } else if (!strcmp("elm.text", part)) {
+               DBG(LOG_INFO, "%s", ugd->dev_name);
+               if (ugd->dev_name) {
+                       dev_name = elm_entry_utf8_to_markup(ugd->dev_name);
+                       if (NULL == dev_name)
+                               DBG(LOG_ERROR, "elm_entry_utf8_to_markup failed.\n");
+               }
+       }
+
+       __FUNC_EXIT__;
+       return dev_name;
+}
+
+static Evas_Object *_gl_wfd_onoff_content_get(void *data, Evas_Object *obj,
+               const char *part)
 {
-    __FUNC_ENTER__;
-    struct ug_data *ugd = (struct ug_data*) data;
-    DBG(LOG_VERBOSE, "%s", part);
-
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
-
-    if(!strcmp(part, "elm.text.1"))
-    {
-        DBG(LOG_VERBOSE, "Current text mode [%d]\n", ugd->head_text_mode);
-        switch(ugd->head_text_mode)
-        {
-            case HEAD_TEXT_TYPE_DIRECT:
-           case HEAD_TEXT_TYPE_ACTIVATED:
-           case HEAD_TEXT_TYPE_SCANING:
-                return strdup(dgettext("sys_string", "IDS_COM_OPT1_WI_FI_DIRECT"));
-                break;
-            case HEAD_TEXT_TYPE_DEACTIVATING:
-                return strdup(_("IDS_WFD_BODY_DEACTIVATING")); // "Deactivating Wi-Fi Direct..."
-                break;
-            case HEAD_TEXT_TYPE_ACTIVATING:
-                return strdup(_("IDS_WFD_BODY_ACTIVATING")); //"Activating Wi-Fi Direct..."
-                break;
-            default:
-                break;
-        }
-    }
-    else if(!strcmp(part, "elm.text.1"))
-    {
-       return strdup(dgettext("sys_string", "IDS_COM_OPT1_WI_FI_DIRECT"));
-    } else if(!strcmp(part, "elm.text.2"))
-    {
-        return strdup(ugd->dev_name);
-    }
-
-    __FUNC_EXIT__;
-    return NULL;
+       __FUNC_ENTER__;
+
+       struct ug_data *ugd = (struct ug_data *) data;
+       WFD_RETV_IF(ugd == NULL, NULL, "Incorrect parameter(NULL)\n");
+       Evas_Object *btn = NULL;
+       Evas_Object *icon = NULL;
+
+       if (!strcmp("elm.swallow.end", part)) {
+               icon = elm_layout_add(obj);
+               elm_layout_theme_set(icon, "layout", "list/C/type.3", "default");
+
+               /* Wi-Fi on indication button */
+               btn = elm_check_add(icon);
+               elm_object_style_set(btn, "on&off");
+               elm_check_state_set(btn, ugd->wfd_onoff);
+               evas_object_propagate_events_set(btn, EINA_FALSE);
+               evas_object_smart_callback_add(btn, "changed", _onoff_changed_cb, ugd);
+               ugd->on_off_check = btn;
+               evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND,
+                               EVAS_HINT_EXPAND);
+               elm_layout_content_set(icon, "elm.swallow.content", btn);
+       }
+
+       __FUNC_EXIT__;
+       return icon;
+}
+#endif
+
+/**
+ *     This function let the ug get the label of header
+ *     @return   the label of header
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_device_name_label_get(void *data, Evas_Object *obj,
+               const char *part)
+{
+       __FUNC_ENTER__;
+
+       struct ug_data *ugd = (struct ug_data *) data;
+       DBG(LOG_INFO, "%s", part);
+       WFD_RETV_IF(ugd == NULL, NULL, "Incorrect parameter(NULL)\n");
+       wfd_get_vconf_device_name(ugd);
+       char *dev_name = NULL;
+       char str[WFD_GLOBALIZATION_STR_LENGTH] = {0, };
+       char buf[WFD_GLOBALIZATION_STR_LENGTH] = {0, };
+       char *format_str = NULL;
+
+       if (!strcmp("elm.text.multiline", part)) {
+               DBG(LOG_INFO, "%s", ugd->dev_name);
+               if (ugd->dev_name) {
+                       dev_name = elm_entry_utf8_to_markup(ugd->dev_name);
+                       if (NULL == dev_name) {
+                               DBG(LOG_ERROR, "elm_entry_utf8_to_markup failed.\n");
+                               __FUNC_EXIT__;
+                               return NULL;
+                       }
+
+                       format_str = D_("IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES");
+                       snprintf(str, WFD_GLOBALIZATION_STR_LENGTH, format_str, dev_name);
+
+                       snprintf(buf, WFD_GLOBALIZATION_STR_LENGTH,
+                               "<font_size=30>%s</font_size>", str);
+
+                       WFD_IF_FREE_MEM(dev_name);
+                       __FUNC_EXIT__;
+                       return g_strdup(buf);
+               }
+       }
+       __FUNC_EXIT__;
+       return NULL;
 }
 
-static Evas_Object *_gl_header_icon_get(void *data, Evas_Object * obj, const char *part)
+/**
+ *     This function let the ug get the label of title
+ *     @return   the label of titile
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_title_label_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
-    struct ug_data *ugd = (struct ug_data*) data;
-    Evas_Object *onoff = NULL;
-
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
-
-    if(ugd->head_text_mode == HEAD_TEXT_TYPE_ACTIVATING ||
-        ugd->head_text_mode == HEAD_TEXT_TYPE_DEACTIVATING)
-        return NULL;
-
-    DBG(LOG_VERBOSE, "%s", part);
-    onoff = elm_check_add(obj);
-    elm_object_style_set(onoff, "on&off");
-    elm_check_state_set(onoff, ugd->wfd_onoff);
-    evas_object_smart_callback_add(onoff, "changed", _wfd_onoff_btn_cb, ugd);
-    evas_object_show(onoff);
-
-    __FUNC_EXIT__;
-
-    return onoff;
+       __FUNC_ENTER__;
+
+       WFD_RETV_IF(data == NULL, NULL, "Incorrect parameter(NULL)\n");
+       DBG(LOG_INFO, "%s", part);
+       if (!strcmp("elm.text", part))
+               return g_strdup(D_("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB"));
+
+       __FUNC_EXIT__;
+       return NULL;
 }
 
 
-static char *_gl_name_label_get(void *data, Evas_Object *obj, const char *part)
+static char *_gl_title_no_device_label_get(void *data, Evas_Object *obj,
+               const char *part)
 {
-    __FUNC_ENTER__;
-    struct ug_data *ugd = (struct ug_data*) data;
+       __FUNC_ENTER__;
 
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
+       WFD_RETV_IF(data == NULL, NULL, "Incorrect parameter(NULL)\n");
+       DBG(LOG_INFO, "%s", part);
+       if (!strcmp("elm.text", part))
+               return g_strdup(D_("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB"));
 
-    DBG(LOG_VERBOSE, "%s", part);
+       __FUNC_EXIT__;
+       return NULL;
+}
 
-    if(!strcmp(part, "elm.text"))
-    {
-        return strdup(_("IDS_WFD_TITLE_ABOUT_WIFI")); // "Device name"
-    }
-    else if(!strcmp(part, "elm.text.2"))
-    {
-        return strdup(ugd->dev_name);
-    }
+static char *_gl_multi_title_label_get(void *data, Evas_Object *obj, const char *part)
+{
+       __FUNC_ENTER__;
 
-    __FUNC_EXIT__;
+       WFD_RETV_IF(data == NULL, NULL, "Incorrect parameter(NULL)\n");
+       if (!strcmp("elm.text", part))
+               return g_strdup(D_("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB"));
 
-    return NULL;
+       __FUNC_EXIT__;
+       return NULL;
 }
 
+static Evas_Object *_gl_multi_title_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       __FUNC_ENTER__;
+
+       Evas_Object *progressbar = NULL;
+       struct ug_data *ugd = (struct ug_data *) data;
+       WFD_RETV_IF(ugd == NULL, NULL, "Incorrect parameter(NULL)\n");
+
+       if (TITLE_CONTENT_TYPE_SCANNING == ugd->title_content_mode) {
+               progressbar = elm_progressbar_add(obj);
+               elm_object_style_set(progressbar, "process_small");
+               elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+               elm_progressbar_pulse(progressbar, EINA_TRUE);
+               evas_object_show(progressbar);
+       }
 
-static char *_gl_title_label_get(void *data, Evas_Object *obj,
-               const char *part)
+       __FUNC_EXIT__;
+       return progressbar;
+}
+
+static char *_gl_available_title_label_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
-    struct ug_data *ugd = (struct ug_data*) data;
-
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
-
-    if (!strcmp(part, "elm.text"))
-    {
-       if (ugd->multiconn_view_genlist != NULL)
-       {
-               // It's called at Multi connect view...
-                       if(ugd->gl_available_dev_cnt_at_multiconn_view > 0)
-                               return strdup(_("IDS_WFD_BODY_AVAILABLE_DEVICES")); // "Available devices"
-                       else
-                               return strdup(_("IDS_WFD_BODY_WIFI_DIRECT_DEVICES")); // "Wi-Fi Direct devices"
-       }
-       else
-       {
-               // It's called at Main View
-                       if(ugd->gl_available_peer_cnt > 0)
-                               return strdup(_("IDS_WFD_BODY_AVAILABLE_DEVICES")); // "Available devices"
-                       else
-                               return strdup(_("IDS_WFD_BODY_WIFI_DIRECT_DEVICES")); // "Wi-Fi Direct devices"
-       }
-    }
+       __FUNC_ENTER__;
 
-    __FUNC_EXIT__;
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
+       DBG(LOG_INFO, "available- %s", part);
+       if (!strcmp("elm.text", part))
+               return g_strdup(D_("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB"));
 
-    return NULL;
+       __FUNC_EXIT__;
+       return NULL;
 }
 
+/**
+ *     This function let the ug get the content of titile
+ *     @return   the content of titile
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
 static Evas_Object *_gl_title_content_get(void *data, Evas_Object *obj, const char *part)
 {
+       __FUNC_ENTER__;
+
        Evas_Object *progressbar = NULL;
-       struct ug_data *ugd = (struct ug_data*) data;
+       struct ug_data *ugd = (struct ug_data *) data;
 
        if (data == NULL) {
            DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
            return NULL;
        }
 
-       if (!strcmp(part, "elm.icon")) {
-               if (HEAD_TEXT_TYPE_SCANING == ugd->head_text_mode) {
-                       progressbar = elm_progressbar_add(obj);
-                       elm_object_style_set(progressbar, "list_process_small");
-                       elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
-                       elm_progressbar_pulse(progressbar, EINA_TRUE);
-                       evas_object_show(progressbar);
-               } else {
-                       return NULL;
-               }
+       DBG(LOG_INFO, "Title content- %s", part);
+
+       if (TITLE_CONTENT_TYPE_SCANNING == ugd->title_content_mode) {
+               progressbar = elm_progressbar_add(obj);
+               elm_object_style_set(progressbar, "process_small");
+               elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+               elm_progressbar_pulse(progressbar, EINA_TRUE);
+               evas_object_show(progressbar);
        }
 
+       __FUNC_EXIT__;
        return progressbar;
 }
 
-static char *_gl_peer_label_get(void *data, Evas_Object * obj, const char *part)
+/**
+ *     This function let the ug get the label of peer item
+ *     @return   the label of peer item
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_peer_label_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
-    assertm_if(NULL == obj, "NULL!!");
-    assertm_if(NULL == part, "NULL!!");
-
-   device_type_s *peer = (device_type_s*) data;
-   char buf[WFD_GLOBALIZATION_STR_LENGTH] = { 0, };
-   DBG(LOG_VERBOSE, "%s", part);
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
-
-    if (!strcmp(part, "elm.text.1"))
-    {
-       __FUNC_EXIT__;
-        return strdup(peer->ssid);
-    }
-    else if (!strcmp(part, "elm.text.2"))
-    {
-        switch (peer->conn_status) {
-        case PEER_CONN_STATUS_DISCONNECTED:
-            g_strlcpy(buf, _("IDS_WFD_TAP_TO_CONNECT"),
-                            WFD_GLOBALIZATION_STR_LENGTH);
-        break;
-
-        case PEER_CONN_STATUS_CONNECTING:
-            g_strlcpy(buf, _("IDS_WFD_CONNECTING"),
-                    WFD_GLOBALIZATION_STR_LENGTH);
-        break;
-
-        case PEER_CONN_STATUS_CONNECTED:
-            g_strlcpy(buf, _("IDS_WFD_CONNECTED"),
-                WFD_GLOBALIZATION_STR_LENGTH);
-        break;
-
-        case PEER_CONN_STATUS_FAILED_TO_CONNECT:
-            g_strlcpy(buf, _("IDS_WFD_FAILED_TO_CONNECT"),
-                WFD_GLOBALIZATION_STR_LENGTH);
-        break;
-
-        case PEER_CONN_STATUS_WAIT_FOR_CONNECT:
-            g_strlcpy(buf, _("IDS_WFD_WAITING_FOR_CONNECT"),
-                WFD_GLOBALIZATION_STR_LENGTH);
-        break;
-
-        default:
-            g_strlcpy(buf, _("IDS_WFD_TAP_TO_CONNECT"),
-                WFD_GLOBALIZATION_STR_LENGTH);
-        break;
-        }
-    }
-    else
-    {
-       __FUNC_EXIT__;
-       return NULL;
-    }
-
-    __FUNC_EXIT__;
-    return strdup(buf);
+       __FUNC_ENTER__;
+
+       assertm_if(NULL == obj, "NULL!!");
+       assertm_if(NULL == part, "NULL!!");
+       device_type_s *peer = (device_type_s *) data;
+       char buf[WFD_GLOBALIZATION_STR_LENGTH] = { 0, };
+       char *ssid;
+
+       DBG(LOG_INFO, "%s", part);
+
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
+
+       if (!strcmp("elm.text", part)) {
+               if (strlen(peer->ssid) != 0) {
+                       ssid = elm_entry_utf8_to_markup(peer->ssid);
+                       if (NULL == ssid) {
+                               DBG(LOG_ERROR, "elm_entry_utf8_to_markup failed.\n");
+                               __FUNC_EXIT__;
+                               return NULL;
+                       }
+                       __FUNC_EXIT__;
+                       return ssid;
+               }
+       } else if (!strcmp("elm.text.sub", part)) {
+               switch (peer->conn_status) {
+               case PEER_CONN_STATUS_DISCONNECTED:
+                       g_strlcpy(buf, D_("IDS_CHATON_BODY_AVAILABLE"), WFD_GLOBALIZATION_STR_LENGTH);
+                       break;
+               case PEER_CONN_STATUS_CONNECTING:
+                       g_strlcpy(buf, D_("IDS_WIFI_BODY_CONNECTING_ING"), WFD_GLOBALIZATION_STR_LENGTH);
+                       break;
+               case PEER_CONN_STATUS_CONNECTED:
+                       if (peer->is_group_owner == FALSE)
+                               g_strlcpy(buf, D_("IDS_COM_BODY_CONNECTED_M_STATUS"), WFD_GLOBALIZATION_STR_LENGTH);
+                       else
+                               g_strlcpy(buf, D_("IDS_CHATON_BODY_AVAILABLE"), WFD_GLOBALIZATION_STR_LENGTH);
+                       break;
+               case PEER_CONN_STATUS_FAILED_TO_CONNECT:
+                       g_strlcpy(buf, D_("IDS_CHATON_HEADER_CONNECTION_FAILED_ABB2"), WFD_GLOBALIZATION_STR_LENGTH);
+                       break;
+               case PEER_CONN_STATUS_WAIT_FOR_CONNECT:
+                       g_strlcpy(buf, D_("IDS_WIFI_BODY_WAITING_FOR_CONNECTION_M_STATUS_ABB"), WFD_GLOBALIZATION_STR_LENGTH);
+                       break;
+               default:
+                       g_strlcpy(buf, D_("IDS_CHATON_BODY_AVAILABLE"), WFD_GLOBALIZATION_STR_LENGTH);
+                       break;
+               }
+       } else {
+               __FUNC_EXIT__;
+               return NULL;
+       }
+
+       __FUNC_EXIT__;
+       return g_strdup(buf);
 }
 
-static Evas_Object *_gl_peer_icon_get(void *data, Evas_Object * obj, const char *part)
+/**
+ *     This function let the ug get the icon of peer item
+ *     @return   the icon of peer item
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static Evas_Object *_gl_peer_icon_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
-    assertm_if(NULL == obj, "NULL!!");
-    assertm_if(NULL == part, "NULL!!");
-
-    device_type_s *peer = (device_type_s*) data;
-    Evas_Object *icon = NULL;
-
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
-
-    if(!strcmp(part, "elm.icon.2"))
-    {
-        DBG(LOG_VERBOSE, "elm.icon.2 - connection status [%d]\n", peer->conn_status);
-        if(peer->conn_status == PEER_CONN_STATUS_CONNECTING)
-        {
-            icon = elm_progressbar_add(obj);
-            elm_object_style_set(icon, "list_process");
-            elm_progressbar_pulse(icon, EINA_TRUE);
-        }
-        else if(peer->conn_status == PEER_CONN_STATUS_CONNECTED)
-        {
-#if 0
-            icon = elm_icon_add(obj);
-            elm_icon_file_set(icon, WFD_ICON_CONNECTED, NULL);
-#endif
-               return NULL;
-        }
-
-        evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-        elm_icon_resizable_set(icon, 1, 1);
-        evas_object_show(icon);
-    }
-    else if(!strcmp(part, "elm.icon.1"))
-    {
-        DBG(LOG_VERBOSE, "elm.icon.1 - category [%d]\n", peer->category);
-        char *img_path = NULL;
-        switch(peer->category)
-        {
+       __FUNC_ENTER__;
+
+       assertm_if(NULL == obj, "NULL!!");
+       assertm_if(NULL == part, "NULL!!");
+       device_type_s *peer = (device_type_s *) data;
+       Evas_Object *icon = NULL;
+
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
+       DBG(LOG_INFO, "part = %s", part);
+
+       if (!strcmp("elm.swallow.icon", part)) {
+               char *img_name = NULL;
+               DBG(LOG_INFO, "elm.swallow.icon - category [%d]\n", peer->category);
+               /*
+               * the icon of connected device is
+               * different from available and busy device
+               */
+               switch (peer->category) {
                case WFD_DEVICE_TYPE_COMPUTER:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_COMPUTER_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_COMPUTER;
-                       }
+                       img_name = WFD_ICON_DEVICE_COMPUTER;
                        break;
                case WFD_DEVICE_TYPE_INPUT_DEVICE:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_INPUT_DEVICE_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_INPUT_DEVICE;
-                       }
+                       img_name = WFD_ICON_DEVICE_INPUT_DEVICE;
                        break;
                case WFD_DEVICE_TYPE_PRINTER:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_PRINTER_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_PRINTER;
-                       }
+                       img_name = WFD_ICON_DEVICE_PRINTER;
                        break;
                case WFD_DEVICE_TYPE_CAMERA:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_CAMERA_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_CAMERA;
-                       }
+                       img_name = WFD_ICON_DEVICE_CAMERA;
                        break;
                case WFD_DEVICE_TYPE_STORAGE:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_STORAGE_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_STORAGE;
-                       }
+                       img_name = WFD_ICON_DEVICE_STORAGE;
                        break;
                case WFD_DEVICE_TYPE_NW_INFRA:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_NETWORK_INFRA_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_NETWORK_INFRA;
-                       }
+                       img_name = WFD_ICON_DEVICE_NETWORK_INFRA;
                        break;
                case WFD_DEVICE_TYPE_DISPLAYS:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_DISPLAY_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_DISPLAY;
-                       }
+                       img_name = WFD_ICON_DEVICE_DISPLAY;
                        break;
                case WFD_DEVICE_TYPE_MM_DEVICES:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_MULTIMEDIA_DEVICE_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_MULTIMEDIA_DEVICE;
-                       }
+                       if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_MULTIMEDIA_STB)
+                               img_name = WFD_ICON_DEVICE_STB;
+                       else if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_MULTIMEDIA_MS_MA_ME)
+                               img_name = WFD_ICON_DEVICE_DONGLE;
+                       else if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_MULTIMEDIA_PVP)
+                               img_name = WFD_ICON_DEVICE_BD;
+                       else
+                               img_name = WFD_ICON_DEVICE_MULTIMEDIA;
                        break;
                case WFD_DEVICE_TYPE_GAME_DEVICES:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_GAMING_DEVICE_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_GAMING_DEVICE;
-                       }
+                       img_name = WFD_ICON_DEVICE_GAMING;
                        break;
                case WFD_DEVICE_TYPE_TELEPHONE:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_TELEPHONE_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_TELEPHONE;
-                       }
+                       img_name = WFD_ICON_DEVICE_TELEPHONE;
                        break;
                case WFD_DEVICE_TYPE_AUDIO:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_AUDIO_DEVICE_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_AUDIO_DEVICE;
-                       }
+                       if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_AUDIO_TUNER)
+                               img_name = WFD_ICON_DEVICE_HOME_THEATER;
+                       else
+                               img_name = WFD_ICON_DEVICE_HEADSET;
                        break;
                default:
-                       if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
-                               img_path = WFD_ICON_DEVICE_COMPUTER_CONNECT;
-                       } else {
-                               img_path = WFD_ICON_DEVICE_COMPUTER;
-                       }
+                       img_name = WFD_ICON_DEVICE_UNKNOWN;
                        break;
-        }
-
-        if(img_path != NULL)
-        {
-            icon = elm_icon_add(obj);
-            elm_icon_file_set(icon, img_path, NULL);
-            evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-            elm_icon_resizable_set(icon, 1, 1);
-            evas_object_show(icon);
-        }
-        else
-        {
-               return NULL;
-        }
-    }
-
-    __FUNC_EXIT__;
-    return icon;
-}
+               }
+
+               icon = elm_image_add(obj);
+               elm_image_file_set(icon, WFD_UG_EDJ_PATH, img_name);
+               evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(WFD_UG_EDJ_ICON_SIZE),
+                               ELM_SCALE_SIZE(WFD_UG_EDJ_ICON_SIZE));
+               evas_object_color_set(icon, 2, 61, 132, 204);
+               if(img_name)
+                       DBG(LOG_INFO, "img_name = %s", img_name);
+
+       } else if (!strcmp("elm.swallow.end", part)) {
+               DBG(LOG_INFO, "elm.icon.2 - connection status [%d]\n", peer->conn_status);
+               if (peer->conn_status == PEER_CONN_STATUS_CONNECTING) {
+                       icon = elm_progressbar_add(obj);
+                       elm_object_style_set(icon, "process_medium");
+                       elm_progressbar_pulse(icon, EINA_TRUE);
+               } else if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
+                       return NULL;
+               }
+       }
+
+       __FUNC_EXIT__;
 
+       return icon;
+}
 
-static char *_gl_noitem_text_get(void *data, Evas_Object * obj,
-                                         const char *part)
+/**
+ *     This function let the ug get the icon of peer item
+ *     @return   the icon of peer item
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static Evas_Object *_gl_conn_peer_icon_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
+       __FUNC_ENTER__;
+       assertm_if(NULL == obj, "NULL!!");
+       assertm_if(NULL == part, "NULL!!");
+       device_type_s *peer = (device_type_s *) data;
+       Evas_Object *icon = NULL;
 
-       if(data == NULL)
-       {
+       if (data == NULL) {
                DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
 
+       DBG(LOG_INFO, "part[%s]\n", part);
+       if (!strcmp("elm.swallow.icon", part)) {
+               DBG(LOG_INFO, "elm.swallow.icon - category [%d]\n", peer->category);
+               char *img_name = NULL;
+               /*
+               * the icon of connected device is
+               * different from available and busy device
+               */
+               switch (peer->category) {
+               case WFD_DEVICE_TYPE_COMPUTER:
+                       img_name = WFD_ICON_DEVICE_COMPUTER;
+                       break;
+               case WFD_DEVICE_TYPE_INPUT_DEVICE:
+                       img_name = WFD_ICON_DEVICE_INPUT_DEVICE;
+                       break;
+               case WFD_DEVICE_TYPE_PRINTER:
+                       img_name = WFD_ICON_DEVICE_PRINTER;
+                       break;
+               case WFD_DEVICE_TYPE_CAMERA:
+                       img_name = WFD_ICON_DEVICE_CAMERA;
+                       break;
+               case WFD_DEVICE_TYPE_STORAGE:
+                       img_name = WFD_ICON_DEVICE_STORAGE;
+                       break;
+               case WFD_DEVICE_TYPE_NW_INFRA:
+                       img_name = WFD_ICON_DEVICE_NETWORK_INFRA;
+                       break;
+               case WFD_DEVICE_TYPE_DISPLAYS:
+                       img_name = WFD_ICON_DEVICE_DISPLAY;
+                       break;
+               case WFD_DEVICE_TYPE_MM_DEVICES:
+                       if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_MULTIMEDIA_STB)
+                               img_name = WFD_ICON_DEVICE_STB;
+                       else if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_MULTIMEDIA_MS_MA_ME)
+                               img_name = WFD_ICON_DEVICE_DONGLE;
+                       else if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_MULTIMEDIA_PVP)
+                               img_name = WFD_ICON_DEVICE_BD;
+                       else
+                               img_name = WFD_ICON_DEVICE_MULTIMEDIA;
+                       break;
+               case WFD_DEVICE_TYPE_GAME_DEVICES:
+                       img_name = WFD_ICON_DEVICE_GAMING;
+                       break;
+               case WFD_DEVICE_TYPE_TELEPHONE:
+                       img_name = WFD_ICON_DEVICE_TELEPHONE;
+                       break;
+               case WFD_DEVICE_TYPE_AUDIO:
+                       if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_AUDIO_TUNER)
+                               img_name = WFD_ICON_DEVICE_HOME_THEATER;
+                       else
+                               img_name = WFD_ICON_DEVICE_HEADSET;
+                       break;
+               default:
+                       img_name = WFD_ICON_DEVICE_UNKNOWN;
+                       break;
+               }
+
+               icon = elm_image_add(obj);
+               elm_image_file_set(icon, WFD_UG_EDJ_PATH, img_name);
+               evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(WFD_UG_EDJ_ICON_SIZE),
+                               ELM_SCALE_SIZE(WFD_UG_EDJ_ICON_SIZE));
+               evas_object_color_set(icon, 2, 61, 132, 204);
+       }
+
        __FUNC_EXIT__;
-       return strdup(_("IDS_WFD_NOCONTENT"));
+       return icon;
 }
 
-
-static char *_gl_help_label_get(void *data, Evas_Object * obj, const char *part)
+/**
+ *     This function let the ug get the text of no device item
+ *     @return   the text of no device item
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_noitem_text_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
-    DBG(LOG_VERBOSE, "%s", part);
-    __FUNC_EXIT__;
-    return strdup("Help");
-}
+       __FUNC_ENTER__;
 
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
+
+       DBG(LOG_INFO, "part = %s", part);
+       if (!strcmp("elm.text", part))
+               return g_strdup(D_("IDS_BT_BODY_NO_DEVICES_FOUND_ABB"));
 
-static Evas_Object *_gl_button_get(void *data, Evas_Object * obj, const char *part)
+       __FUNC_EXIT__;
+       return NULL;
+}
+
+/**
+ *     This function let the ug get the title label of connected device list
+ *     @return   the title label of connected device list
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_conn_dev_title_label_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
-    struct ug_data *ugd = (struct ug_data*) data;
+       __FUNC_ENTER__;
 
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
+       DBG(LOG_INFO, "part = %s", part);
+       if (!strcmp("elm.text", part))
+               return g_strdup(D_("IDS_ST_HEADER_CONNECTED_DEVICES"));
 
-    DBG(LOG_VERBOSE, "%s", part);
+       __FUNC_EXIT__;
+       return NULL;
+}
 
-    ugd->multi_btn = elm_button_add(obj);
+char* ConvertRGBAtoHex(int r, int g, int b, int a)
+{
+       int hexcolor = 0;
+       char *string = NULL;
+       string = g_try_malloc0(MAX_HEX_COLOR_LENGTH);
+       if (string == NULL)
+               return string;
+
+       hexcolor = (r << 24) + (g << 16) + (b << 8) + a;
+       snprintf(string, MAX_HEX_COLOR_LENGTH, "%08x", hexcolor);
+       return string;
+}
 
-       wfd_refresh_wifi_direct_state(ugd);
+/**
+ *     This function let the ug get the label of connected device
+ *     @return   the label of connected device
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_peer_conn_dev_label_get(void *data, Evas_Object *obj, const char *part)
+{
+       __FUNC_ENTER__;
 
-       if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_COMPLETED)
-       {
-               elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_DISCONNECT"));
-               DBG(LOG_VERBOSE, "button: Disconnect\n");
+       assertm_if(NULL == obj, "NULL!!");
+       assertm_if(NULL == part, "NULL!!");
+       device_type_s *peer = (device_type_s *) data;
+       DBG(LOG_INFO, "%s", part);
+       char *det = NULL;
+       char *buf = NULL;
+       char *ssid;
+       char *convertedColor = NULL;
 
-               // Don't connect "clicked" callback.
-               return ugd->multi_btn;
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
        }
 
-       if (ugd->wfd_status == WFD_LINK_STATUS_CONNECTING)
-       {
-               elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_CANCEL"));
-               DBG(LOG_VERBOSE, "button: Cancel connect\n");
-       }
-       else if (ugd->wfd_status >= WFD_LINK_STATUS_CONNECTED)
-       {
-               if (ugd->gl_connected_peer_cnt > 1)
-               {
-                       elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_DISCONNECT_ALL"));
-                       DBG(LOG_VERBOSE, "button: Disconnect All\n");
-               }
-               else
-               {
-                       elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_DISCONNECT"));
-                       DBG(LOG_VERBOSE, "button: Disconnect\n");
+       if (!strcmp("elm.text", part)) {
+               if (strlen(peer->ssid) != 0) {
+                       ssid = elm_entry_utf8_to_markup(peer->ssid);
+                       if (NULL == ssid) {
+                               DBG(LOG_ERROR, "elm_entry_utf8_to_markup failed.\n");
+                               __FUNC_EXIT__;
+                               return NULL;
+                       }
+                       __FUNC_EXIT__;
+                       return ssid;
                }
+       } else if (!strcmp("elm.text.sub", part)) {
+               det = elm_entry_utf8_to_markup(D_("IDS_COM_BODY_CONNECTED_M_STATUS"));
+               convertedColor = ConvertRGBAtoHex(2, 61, 132, 255);
+               buf = g_strdup_printf("<color=#%s>%s</color>",
+                       convertedColor, det);
+               WFD_IF_FREE_MEM(det);
+               g_free(convertedColor);
+               __FUNC_EXIT__;
+               return buf;
        }
-       else
-       {
-               elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_MULTI"));
-               DBG(LOG_VERBOSE, "button: Multi connect\n");
-       }
-
-    evas_object_smart_callback_add(ugd->multi_btn, "clicked", _wifid_create_multibutton_cb, ugd);
-    evas_object_show(ugd->multi_btn);
-
-    __FUNC_EXIT__;
-
-    return ugd->multi_btn;
+       __FUNC_EXIT__;
+       return NULL;
 }
 
-
-static char *_gl_conn_dev_title_label_get(void *data, Evas_Object *obj,
+/**
+ *     This function let the ug get the title label of connected failed device list
+ *     @return   the label of connected device
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_conn_failed_dev_title_label_get(void *data, Evas_Object *obj,
                const char *part)
 {
-    __FUNC_ENTER__;
-
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
+       __FUNC_ENTER__;
 
-    if (!strcmp(part, "elm.text"))
-    {
-            return strdup(_("IDS_WFD_BODY_CONNECTED_DEVICES"));
-    }
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
 
-    __FUNC_EXIT__;
+       if (!strcmp("elm.text", part))
+               return g_strdup(D_("IDS_WIFI_SBODY_NOT_CONNECTED_M_STATUS_ABB"));
 
-    return NULL;
+       __FUNC_EXIT__;
+       return NULL;
 }
 
-
-static char *_gl_peer_conn_dev_label_get(void *data, Evas_Object * obj, const char *part)
+/**
+ *     This function let the ug get the label of connected failed device
+ *     @return   the label of connected device
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_peer_conn_failed_dev_label_get(void *data, Evas_Object *obj, const char *part)
 {
        __FUNC_ENTER__;
+
        assertm_if(NULL == obj, "NULL!!");
        assertm_if(NULL == part, "NULL!!");
-
-       device_type_s *peer = (device_type_s*) data;
-
+       device_type_s *peer = (device_type_s *) data;
        char buf[WFD_GLOBALIZATION_STR_LENGTH] = { 0, };
-       DBG(LOG_VERBOSE, "%s", part);
-       if(data == NULL)
-       {
+       char *ssid;
+       DBG(LOG_INFO, "%s", part);
+
+       if (data == NULL) {
                DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
 
-       if (!strcmp(part, "elm.text.1"))
-       {
-               return strdup(peer->ssid);
-       }
-       else
-       {
-               g_strlcpy(buf, _("IDS_WFD_CONNECTED"),
-                                               WFD_GLOBALIZATION_STR_LENGTH);
+       if (!strcmp("elm.text", part)) {
+               if (strlen(peer->ssid) != 0) {
+                       ssid = elm_entry_utf8_to_markup(peer->ssid);
+                       if (NULL == ssid) {
+                               DBG(LOG_ERROR, "elm_entry_utf8_to_markup failed.\n");
+                               __FUNC_EXIT__;
+                               return NULL;
+                       }
+                       __FUNC_EXIT__;
+                       return ssid;
+               }
+       } else if (!strcmp("elm.text.sub", part)) {
+               g_strlcpy(buf, D_("IDS_CHATON_HEADER_CONNECTION_FAILED_ABB2"),
+                       WFD_GLOBALIZATION_STR_LENGTH);
                __FUNC_EXIT__;
-               return strdup(buf);
+               return g_strdup(buf);
        }
+       return NULL;
 }
 
-static char *_gl_conn_failed_dev_title_label_get(void *data, Evas_Object *obj,
-               const char *part)
+/**
+ *     This function let the ug get the title label of multi connect list
+ *     @return   the label of connected device
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_multi_connect_dev_title_label_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
-
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
+       __FUNC_ENTER__;
+       struct ug_data *ugd = wfd_get_ug_data();
 
-    if (!strcmp(part, "elm.text"))
-    {
-            return strdup(IDS_WFD_BODY_FAILED_DEVICES);
-    }
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
+       DBG(LOG_INFO, "%s", part);
 
-    __FUNC_EXIT__;
+       if (!strcmp("elm.text", part) && ugd) {
+               if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_IN_PROGRESS)
+                       return g_strdup(D_("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB"));
+               else if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_COMPLETED)
+                       return g_strdup(D_("IDS_WIFI_SBODY_NOT_CONNECTED_M_STATUS_ABB"));
+       }
 
-    return NULL;
+       __FUNC_EXIT__;
+       return NULL;
 }
 
-
-static char *_gl_peer_conn_failed_dev_label_get(void *data, Evas_Object * obj, const char *part)
+/**
+ *     This function let the ug get the title label of select all in multi connect
+ *     @return   the label of select all string
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_multi_connect_select_all_title_label_get(void *data, Evas_Object *obj, const char *part)
 {
        __FUNC_ENTER__;
-       assertm_if(NULL == obj, "NULL!!");
-       assertm_if(NULL == part, "NULL!!");
 
-       device_type_s *peer = (device_type_s*) data;
-
-       char buf[WFD_GLOBALIZATION_STR_LENGTH] = { 0, };
-       DBG(LOG_VERBOSE, "%s", part);
-       if(data == NULL)
-       {
+       if (data == NULL) {
                DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
+       DBG(LOG_INFO, "%s", part);
 
-       if (!strcmp(part, "elm.text.1"))
-       {
-               return strdup(peer->ssid);
-       }
-       else
-       {
-               g_strlcpy(buf, _("IDS_WFD_FAILED_TO_CONNECT"),
-                                               WFD_GLOBALIZATION_STR_LENGTH);
+       if (!strcmp("elm.text", part)) {
                __FUNC_EXIT__;
-               return strdup(buf);
+               return g_strdup(D_("IDS_WIFI_BODY_SELECT_ALL"));
        }
+       __FUNC_EXIT__;
+       return NULL;
 }
 
-static char *_gl_multi_connect_dev_title_label_get(void *data, Evas_Object *obj,
-               const char *part)
+/**
+ *     This function let the ug get the icon of select all genlist
+ *     @return   the icon of select all genlist
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static Evas_Object *_wfd_gl_select_all_icon_get(void *data, Evas_Object *obj, const char *part)
 {
-    __FUNC_ENTER__;
-    struct ug_data *ugd = wfd_get_ug_data();
-
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
-
-    if (!strcmp(part, "elm.text"))
-    {
-       if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_IN_PROGRESS)
-               return strdup(_("IDS_WFD_BODY_AVAILABLE_DEVICES")); // "Available devices"
-       else if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_COMPLETED)
-               return strdup(IDS_WFD_BODY_FAILED_DEVICES); // "Available devices"
-    }
-
-    __FUNC_EXIT__;
-
-    return NULL;
-}
+       __FUNC_ENTER__;
 
+       struct ug_data *ugd = (struct ug_data *) data;
+       Evas_Object *check = NULL;
+       Evas_Object *icon_layout = NULL;
+
+       DBG(LOG_INFO, "Part %s", part);
+
+       if (!strcmp("elm.swallow.end", part)) {
+               icon_layout = elm_layout_add(obj);
+               elm_layout_theme_set(icon_layout, "layout", "list/C/type.2", "default");
+               DBG(LOG_INFO, "Part %s", part);
+               check = elm_check_add(icon_layout);
+               ugd->select_all_icon = check;
+               if (ugd->is_select_all_checked == EINA_TRUE)
+                       elm_check_state_set(ugd->select_all_icon, TRUE);
+
+               elm_object_style_set(check, "default/genlist");
+               evas_object_propagate_events_set(check, EINA_FALSE);
+               evas_object_smart_callback_add(check, "changed",
+                       wfd_genlist_select_all_check_changed_cb, (void *)data);
+               elm_layout_content_set(icon_layout, "elm.swallow.content", check);
+       }
+       __FUNC_EXIT__;
+       return icon_layout;
+}
 
+/**
+ *     This function let the ug get the title label of busy device list
+ *     @return   the label of connected device
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
 static char *_gl_busy_dev_title_label_get(void *data, Evas_Object *obj,
                const char *part)
 {
-    __FUNC_ENTER__;
-
-    if(data == NULL)
-    {
-        DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
-        return NULL;
-    }
+       __FUNC_ENTER__;
 
-    if (!strcmp(part, "elm.text"))
-    {
-            return strdup(_("IDS_WFD_BODY_BUSY_DEVICES"));
-    }
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
+       DBG(LOG_INFO, "%s", part);
 
-    __FUNC_EXIT__;
+       if (!strcmp("elm.text", part))
+               return g_strdup(D_("IDS_ST_HEADER_BUSY_DEVICES"));
 
-    return NULL;
+       __FUNC_EXIT__;
+       return NULL;
 }
 
-
-static char *_gl_peer_busy_dev_label_get(void *data, Evas_Object * obj, const char *part)
+/**
+ *     This function let the ug get the label of busy device
+ *     @return   the label of connected device
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ *     @param[in] part the pointer to the part of item
+ */
+static char *_gl_peer_busy_dev_label_get(void *data, Evas_Object *obj, const char *part)
 {
        __FUNC_ENTER__;
        assertm_if(NULL == obj, "NULL!!");
        assertm_if(NULL == part, "NULL!!");
-       device_type_s *peer = (device_type_s*) data;
+       device_type_s *peer = (device_type_s *) data;
        char buf[WFD_GLOBALIZATION_STR_LENGTH] = { 0, };
-       DBG(LOG_VERBOSE, "%s", part);
-       if(data == NULL)
-       {
+       char *ssid;
+       DBG(LOG_INFO, "%s", part);
+
+       if (data == NULL) {
                DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
-       DBG(LOG_VERBOSE, "peer->ssid = %s", peer->ssid);
-       if (!strcmp(part, "elm.text.1"))
-       {
-               return strdup(peer->ssid);
-       }
-       else
-       {
-               g_strlcpy(buf, _("IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"),
-                                               WFD_GLOBALIZATION_STR_LENGTH);
+
+       DBG(LOG_INFO, "peer->ssid = %s", peer->ssid);
+
+       if (!strcmp("elm.text", part)) {
+               if (strlen(peer->ssid) != 0) {
+                       ssid = elm_entry_utf8_to_markup(peer->ssid);
+                       if (NULL == ssid) {
+                               DBG(LOG_ERROR, "elm_entry_utf8_to_markup failed.\n");
+                               __FUNC_EXIT__;
+                               return NULL;
+                       }
+                       __FUNC_EXIT__;
+                       return ssid;
+               }
+       } else if (!strcmp("elm.text.sub", part)) {
+               g_strlcpy(buf, D_("IDS_ST_BODY_CONNECTED_WITH_ANOTHER_DEVICE_ABB"),
+                       WFD_GLOBALIZATION_STR_LENGTH);
                __FUNC_EXIT__;
-               return strdup(buf);
+               return g_strdup(buf);
        }
+
+       return NULL;
 }
 
-static void _gl_peer_del(void *data, Evas_Object * obj)
+/**
+ *     This function let the ug delete the peer item
+ *     @return   void
+ *     @param[in] data the pointer to the main data structure
+ *     @param[in] obj the pointer to the evas object
+ */
+static void _gl_peer_del(void *data, Evas_Object *obj)
 {
-    __FUNC_ENTER__;
-    assertm_if(NULL == obj, "NULL!!");
-    assertm_if(NULL == data, "NULL!!");
+       __FUNC_ENTER__;
 
-    __FUNC_EXIT__;
-    return;
+       assertm_if(NULL == obj, "NULL!!");
+       assertm_if(NULL == data, "NULL!!");
+
+       __FUNC_EXIT__;
+       return;
 }
 
+/**
+ *     This function let the ug initialize the items of genlist
+ *     @return   void
+ */
 void initialize_gen_item_class()
 {
-    sep_itc.item_style = "dialogue/separator";
-    sep_itc.func.text_get = NULL;
-    sep_itc.func.content_get = NULL;
-    sep_itc.func.state_get = NULL;
-    sep_itc.func.del = NULL;
-
-    sep_itc_end.item_style = "dialogue/separator/end";
-    sep_itc_end.func.text_get = NULL;
-    sep_itc_end.func.content_get = NULL;
-    sep_itc_end.func.state_get = NULL;
-    sep_itc_end.func.del = NULL;
-
-    head_itc.item_style = "dialogue/2text.1icon.6";
-    head_itc.func.text_get = _gl_header_label_get;
-    head_itc.func.content_get = _gl_header_icon_get;
-    head_itc.func.state_get = NULL;
-
-    name_itc.item_style = "dialogue/1text";
-    name_itc.func.text_get = _gl_name_label_get;
-    name_itc.func.content_get = NULL;
-    name_itc.func.state_get = NULL;
-    name_itc.func.del = NULL;
-
-    title_itc.item_style = "dialogue/title";
-    title_itc.func.text_get = _gl_title_label_get;
-    title_itc.func.content_get = _gl_title_content_get;
-    title_itc.func.state_get = NULL;
-    title_itc.func.del = NULL;
-
-    peer_itc.item_style = "dialogue/2text.2icon.3";
-    peer_itc.func.text_get = _gl_peer_label_get;
-    peer_itc.func.content_get = _gl_peer_icon_get;
-    peer_itc.func.state_get = NULL;
-    peer_itc.func.del = _gl_peer_del;
-
-    noitem_itc.item_style ="dialogue/1text";
-    noitem_itc.func.text_get = _gl_noitem_text_get;
-    noitem_itc.func.content_get = NULL;
-    noitem_itc.func.state_get = NULL;
-    noitem_itc.func.del = NULL;
-
-    help_itc.item_style = "dialogue/1text";
-    help_itc.func.text_get = _gl_help_label_get;
-    help_itc.func.content_get = NULL;
-    help_itc.func.state_get = NULL;
-    help_itc.func.del = NULL;
-
-    button_itc.item_style = "1icon";
-    button_itc.func.text_get = NULL;
-    button_itc.func.content_get = _gl_button_get;
-    button_itc.func.state_get = NULL;
-    button_itc.func.del = NULL;
-
-    title_conn_itc.item_style = "dialogue/title";
-    title_conn_itc.func.text_get = _gl_conn_dev_title_label_get;
-    title_conn_itc.func.content_get = NULL;
-    title_conn_itc.func.state_get = NULL;
-    title_conn_itc.func.del = NULL;
-
-    peer_conn_itc.item_style = "dialogue/2text.2icon.3";
-    peer_conn_itc.func.text_get = _gl_peer_conn_dev_label_get;
-    peer_conn_itc.func.content_get = _gl_peer_icon_get;
-    peer_conn_itc.func.state_get = NULL;
-    peer_conn_itc.func.del = _gl_peer_del;
-
-    title_conn_failed_itc.item_style = "dialogue/title";
-    title_conn_failed_itc.func.text_get = _gl_conn_failed_dev_title_label_get;
-    title_conn_failed_itc.func.content_get = NULL;
-    title_conn_failed_itc.func.state_get = NULL;
-    title_conn_failed_itc.func.del = NULL;
-
-    peer_conn_failed_itc.item_style = "dialogue/2text.2icon.3";
-    peer_conn_failed_itc.func.text_get = _gl_peer_conn_failed_dev_label_get;
-    peer_conn_failed_itc.func.content_get = _gl_peer_icon_get;
-    peer_conn_failed_itc.func.state_get = NULL;
-    peer_conn_failed_itc.func.del = _gl_peer_del;
-
-    title_busy_itc.item_style = "dialogue/title";
-    title_busy_itc.func.text_get = _gl_busy_dev_title_label_get;
-    title_busy_itc.func.content_get = NULL;
-    title_busy_itc.func.state_get = NULL;
-    title_busy_itc.func.del = NULL;
-
-    peer_busy_itc.item_style = "dialogue/2text.2icon.3";
-    peer_busy_itc.func.text_get = _gl_peer_busy_dev_label_get;
-    peer_busy_itc.func.content_get = _gl_peer_icon_get;
-    peer_busy_itc.func.state_get = NULL;
-    peer_busy_itc.func.del = _gl_peer_del;
-
-    title_multi_connect_itc.item_style = "dialogue/title";
-    title_multi_connect_itc.func.text_get = _gl_multi_connect_dev_title_label_get;
-    title_multi_connect_itc.func.content_get = NULL;
-    title_multi_connect_itc.func.state_get = NULL;
-    title_multi_connect_itc.func.del = NULL;
-
-#if 0
-    peer_multi_connect_itc.item_style = "dialogue/2text.2icon.3";
-    peer_multi_connect_itc.func.text_get = _gl_peer_label_get;
-    peer_multi_connect_itc.func.content_get = _gl_peer_icon_get;
-    peer_multi_connect_itc.func.state_get = NULL;
-    peer_multi_connect_itc.func.del = _gl_peer_del;
+       elm_theme_extension_add(NULL, WFD_UG_EDJ_PATH);
+
+       device_name_itc.item_style = WFD_GENLIST_MULTILINE_TEXT_STYLE;
+       device_name_itc.func.text_get = _gl_device_name_label_get;
+       device_name_itc.func.content_get = NULL;
+       device_name_itc.func.state_get = NULL;
+
+#ifdef WFD_ON_OFF_GENLIST
+       wfd_onoff_itc.item_style = WFD_GENLIST_2LINE_BOTTOM_TEXT_ICON_STYLE;
+       wfd_onoff_itc.func.text_get = _gl_wfd_onoff_text_get;
+       wfd_onoff_itc.func.content_get = _gl_wfd_onoff_content_get;
+       wfd_onoff_itc.func.state_get = NULL;
+       wfd_onoff_itc.func.del = NULL;
 #endif
+
+       title_itc.item_style = WFD_GENLIST_GROUP_INDEX_STYLE;
+       title_itc.func.text_get = _gl_title_label_get;
+       title_itc.func.content_get = _gl_title_content_get;
+       title_itc.func.state_get = NULL;
+       title_itc.func.del = NULL;
+
+       multi_view_title_itc.item_style = WFD_GENLIST_GROUP_INDEX_STYLE;
+       multi_view_title_itc.func.text_get = _gl_multi_title_label_get;
+       multi_view_title_itc.func.content_get = _gl_multi_title_content_get;
+       multi_view_title_itc.func.state_get = NULL;
+       multi_view_title_itc.func.del = NULL;
+
+       title_no_device_itc.item_style = WFD_GENLIST_GROUP_INDEX_STYLE;
+       title_no_device_itc.func.text_get = _gl_title_no_device_label_get;
+       title_no_device_itc.func.content_get = NULL;
+       title_no_device_itc.func.state_get = NULL;
+       title_no_device_itc.func.del = NULL;
+
+       title_available_itc.item_style = WFD_GENLIST_GROUP_INDEX_STYLE;
+       title_available_itc.func.text_get = _gl_available_title_label_get;
+       title_available_itc.func.content_get = _gl_title_content_get;
+       title_available_itc.func.state_get = NULL;
+       title_available_itc.func.del = NULL;
+
+       peer_itc.item_style = WFD_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
+       peer_itc.func.text_get = _gl_peer_label_get;
+       peer_itc.func.content_get = _gl_peer_icon_get;
+       peer_itc.func.state_get = NULL;
+       peer_itc.func.del = _gl_peer_del;
+
+       noitem_itc.item_style = WFD_GENLIST_1LINE_TEXT_STYLE;
+       noitem_itc.func.text_get = _gl_noitem_text_get;
+       noitem_itc.func.content_get = NULL;
+       noitem_itc.func.state_get = NULL;
+       noitem_itc.func.del = NULL;
+
+       title_conn_itc.item_style = WFD_GENLIST_GROUP_INDEX_STYLE;
+       title_conn_itc.func.text_get = _gl_conn_dev_title_label_get;
+       title_conn_itc.func.content_get = NULL;
+       title_conn_itc.func.state_get = NULL;
+       title_conn_itc.func.del = NULL;
+
+       peer_conn_itc.item_style = WFD_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
+       peer_conn_itc.func.text_get = _gl_peer_conn_dev_label_get;
+       peer_conn_itc.func.content_get = _gl_conn_peer_icon_get;
+       peer_conn_itc.func.state_get = NULL;
+       peer_conn_itc.func.del = _gl_peer_del;
+
+       title_conn_failed_itc.item_style = WFD_GENLIST_1LINE_TEXT_STYLE;
+       title_conn_failed_itc.func.text_get = _gl_conn_failed_dev_title_label_get;
+       title_conn_failed_itc.func.content_get = NULL;
+       title_conn_failed_itc.func.state_get = NULL;
+       title_conn_failed_itc.func.del = NULL;
+
+       peer_conn_failed_itc.item_style = WFD_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
+       peer_conn_failed_itc.func.text_get = _gl_peer_conn_failed_dev_label_get;
+       peer_conn_failed_itc.func.content_get = _gl_peer_icon_get;
+       peer_conn_failed_itc.func.state_get = NULL;
+       peer_conn_failed_itc.func.del = _gl_peer_del;
+
+       title_busy_itc.item_style = WFD_GENLIST_GROUP_INDEX_STYLE;
+       title_busy_itc.func.text_get = _gl_busy_dev_title_label_get;
+       title_busy_itc.func.content_get = NULL;
+       title_busy_itc.func.state_get = NULL;
+       title_busy_itc.func.del = NULL;
+
+       peer_busy_itc.item_style = WFD_GENLIST_2LINE_TOP_TEXT_ICON_STYLE;
+       peer_busy_itc.func.text_get = _gl_peer_busy_dev_label_get;
+       peer_busy_itc.func.content_get = _gl_peer_icon_get;
+       peer_busy_itc.func.state_get = NULL;
+       peer_busy_itc.func.del = _gl_peer_del;
+
+       title_multi_connect_itc.item_style = WFD_GENLIST_GROUP_INDEX_STYLE;
+       title_multi_connect_itc.func.text_get = _gl_multi_connect_dev_title_label_get;
+       title_multi_connect_itc.func.content_get = NULL;
+       title_multi_connect_itc.func.state_get = NULL;
+       title_multi_connect_itc.func.del = NULL;
+
+       select_all_multi_connect_itc.item_style = WFD_GENLIST_1LINE_TEXT_ICON_STYLE;
+       select_all_multi_connect_itc.func.text_get =
+               _gl_multi_connect_select_all_title_label_get;
+       select_all_multi_connect_itc.func.content_get = _wfd_gl_select_all_icon_get;
+       select_all_multi_connect_itc.func.state_get = NULL;
+       select_all_multi_connect_itc.func.del = NULL;
 }