Replaced g_free() with free()
[apps/native/ug-wifi-direct.git] / ug-wifidirect / src / wfd_ug_genlist.c
index 64474ce..31405cc 100755 (executable)
@@ -7,7 +7,7 @@
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 
-* http://floralicense.org/license
+* 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,
 */
 
 #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 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 button_itc;
+Elm_Gen_Item_Class title_available_itc;
 
 Elm_Gen_Item_Class title_conn_itc;
 Elm_Gen_Item_Class peer_conn_itc;
@@ -46,185 +48,201 @@ 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;
 
-/**
- *     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_header_label_get(void *data, Evas_Object *obj, const char *part)
+#ifdef WFD_ON_OFF_GENLIST
+static char *_gl_wfd_onoff_text_get(void *data, Evas_Object *obj,
+               const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
-       struct ug_data *ugd = (struct ug_data *) data;
-       WDUG_LOGI("%s", part);
+       __FUNC_ENTER__;
 
-       if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
-               return NULL;
-       }
-
-       if (!strcmp(part, "elm.text.1")) {
-               WDUG_LOGI("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"));
-                       break;
-               case HEAD_TEXT_TYPE_ACTIVATING:
-                       return strdup(_("IDS_WFD_BODY_ACTIVATING"));
-                       break;
-               default:
-                       break;
+       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");
+                       }
                }
-       } 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);
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
-       return NULL;
+       __FUNC_EXIT__;
+       return dev_name;
 }
 
-/**
- *  This function let the ug call it when click header
- *  @return   void
- *  @param[in] data the pointer to the main data structure
- *  @param[in] obj the pointer to the evas object
- *  @param[in] event_info the pointer to the event information
- */
-static void _gl_header_sel(void *data, Evas_Object *obj, void *event_info)
+static Evas_Object *_gl_wfd_onoff_content_get(void *data,Evas_Object *obj,
+               const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __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;
 
-       Elm_Object_Item *item = (Elm_Object_Item *)event_info;
-       if (item != NULL)
-               elm_genlist_item_selected_set(item, EINA_FALSE);
-
-       if (ugd == NULL)
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
-       else {
-               if(!ugd->wfd_onoff) {
-                       WDUG_LOGD("Wi-Fi direct switch on\n");
-                       wfd_client_switch_on(ugd);
-               } else {
-                       WDUG_LOGD("Wi-Fi direct switch off\n");
-                       wfd_client_switch_off(ugd);
-               }
+       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);
        }
-       __WDUG_LOG_FUNC_EXIT__;
+
+       __FUNC_EXIT__;
+       return icon;
 }
+#endif
 
 /**
- *     This function let the ug get the icon of header
- *     @return   the icon of header
+ *     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 Evas_Object *_gl_header_icon_get(void *data, Evas_Object *obj, const char *part)
+static char *_gl_device_name_label_get(void *data, Evas_Object *obj,
+               const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __FUNC_ENTER__;
+
        struct ug_data *ugd = (struct ug_data *) data;
-       Evas_Object *onoff = NULL;
+       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;
+                       }
 
-       if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
-               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);
 
-       if (ugd->head_text_mode == HEAD_TEXT_TYPE_ACTIVATING ||
-               ugd->head_text_mode == HEAD_TEXT_TYPE_DEACTIVATING) {
-               return NULL;
-       }
+                       snprintf(buf, WFD_GLOBALIZATION_STR_LENGTH,
+                               "<font_size=30>%s</font_size>", str);
 
-       if (!strcmp(part, "elm.icon")) {
-               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", _gl_header_sel , ugd);
-               evas_object_show(onoff);
+                       WFD_IF_FREE_MEM(dev_name);
+                       __FUNC_EXIT__;
+                       return g_strdup(buf);
+               }
        }
-
-       __WDUG_LOG_FUNC_EXIT__;
-       return onoff;
+       __FUNC_EXIT__;
+       return NULL;
 }
 
 /**
- *     This function let the ug get the label of about item
- *     @return   the label of about item
+ *     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_name_label_get(void *data, Evas_Object *obj, const char *part)
+static char *_gl_title_label_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
-       struct ug_data *ugd = (struct ug_data *) data;
+       __FUNC_ENTER__;
 
-       if (data == NULL) {
-               WDUG_LOGE("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"));
        }
+       __FUNC_EXIT__;
+       return NULL;
+}
 
-       WDUG_LOGI("%s", part);
 
-       if (!strcmp(part, "elm.text")) {
-               return strdup(IDS_WFD_TITLE_ABOUT_WIFI_DIRECT);
-       } else if (!strcmp(part, "elm.text.2")) {
-               return strdup(ugd->dev_name);
+static char *_gl_title_no_device_label_get(void *data, Evas_Object *obj,
+               const char *part)
+{
+       __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"));
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
+       __FUNC_EXIT__;
        return NULL;
 }
 
-/**
- *     This function let the ug get the label of titile
- *     @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)
+static char *_gl_multi_title_label_get(void *data, Evas_Object *obj, const char *part)
+{
+       __FUNC_ENTER__;
+
+       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"));
+       }
+
+       __FUNC_EXIT__;
+       return NULL;
+}
+
+static Evas_Object *_gl_multi_title_content_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __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);
+       }
+
+       __FUNC_EXIT__;
+       return progressbar;
+}
+
+static char *_gl_available_title_label_get(void *data, Evas_Object *obj, const char *part)
+{
+       __FUNC_ENTER__;
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               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"));
-                       } else {
-                               return strdup(_("IDS_WFD_BODY_WIFI_DIRECT_DEVICES"));
-                       }
-               } else {
-                       // It's called at Main View
-                       if (ugd->gl_available_peer_cnt > 0) {
-                               return strdup(_("IDS_WFD_BODY_AVAILABLE_DEVICES"));
-                       } else {
-                               return strdup(_("IDS_WFD_BODY_WIFI_DIRECT_DEVICES"));
-                       }
-               }
+       DBG(LOG_INFO, "available- %s", part);
+       if (!strcmp("elm.text", part)) {
+               return g_strdup(D_("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB"));
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
+       __FUNC_EXIT__;
        return NULL;
 }
 
@@ -237,26 +255,27 @@ static char *_gl_title_label_get(void *data, Evas_Object *obj, const char *part)
  */
 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;
 
        if (data == NULL) {
-           WDUG_LOGE("Incorrect parameter(NULL)\n");
+           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;
 }
 
@@ -269,53 +288,64 @@ static Evas_Object *_gl_title_content_get(void *data, Evas_Object *obj, const ch
  */
 static char *_gl_peer_label_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __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, };
-       WDUG_LOGI("%s", part);
+       char *ssid;
+
+       DBG(LOG_INFO, "%s", part);
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
 
-       if (!strcmp(part, "elm.text.1")) {
-               __WDUG_LOG_FUNC_EXIT__;
-               return strdup(peer->ssid);
-       } else if (!strcmp(part, "elm.text.2")) {
+       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, _("IDS_WFD_TAP_TO_CONNECT"), WFD_GLOBALIZATION_STR_LENGTH);
+                       g_strlcpy(buf, D_("IDS_CHATON_BODY_AVAILABLE"), WFD_GLOBALIZATION_STR_LENGTH);
                        break;
                case PEER_CONN_STATUS_CONNECTING:
-                       g_strlcpy(buf, _("IDS_WFD_CONNECTING"), WFD_GLOBALIZATION_STR_LENGTH);
+                       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, _("IDS_WFD_CONNECTED"), WFD_GLOBALIZATION_STR_LENGTH);
+                               g_strlcpy(buf, D_("IDS_COM_BODY_CONNECTED_M_STATUS"), WFD_GLOBALIZATION_STR_LENGTH);
                        } else {
-                               g_strlcpy(buf, _("IDS_WFD_TAP_TO_CONNECT"), WFD_GLOBALIZATION_STR_LENGTH);
+                               g_strlcpy(buf, D_("IDS_CHATON_BODY_AVAILABLE"), WFD_GLOBALIZATION_STR_LENGTH);
                        }
                        break;
                case PEER_CONN_STATUS_FAILED_TO_CONNECT:
-                       g_strlcpy(buf, _("IDS_WFD_FAILED_TO_CONNECT"), WFD_GLOBALIZATION_STR_LENGTH);
+                       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, _("IDS_WFD_WAITING_FOR_CONNECT"), WFD_GLOBALIZATION_STR_LENGTH);
+                       g_strlcpy(buf, D_("IDS_WIFI_BODY_WAITING_FOR_CONNECTION_M_STATUS_ABB"), WFD_GLOBALIZATION_STR_LENGTH);
                        break;
                default:
-                       g_strlcpy(buf, _("IDS_WFD_TAP_TO_CONNECT"), WFD_GLOBALIZATION_STR_LENGTH);
+                       g_strlcpy(buf, D_("IDS_CHATON_BODY_AVAILABLE"), WFD_GLOBALIZATION_STR_LENGTH);
                        break;
                }
        } else {
-               __WDUG_LOG_FUNC_EXIT__;
+               __FUNC_EXIT__;
                return NULL;
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
-       return strdup(buf);
+       __FUNC_EXIT__;
+       return g_strdup(buf);
 }
 
 /**
@@ -327,201 +357,231 @@ static char *_gl_peer_label_get(void *data, Evas_Object *obj, const char *part)
  */
 static Evas_Object *_gl_peer_icon_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_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;
-       struct ug_data *ugd = wfd_get_ug_data();
+       Evas_Object *layout = NULL;
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
+       DBG(LOG_INFO, "part = %s", part);
 
-       if (!strcmp(part, "elm.icon.2")) {
-               WDUG_LOGI("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) {
-                       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")) {
-               WDUG_LOGI("elm.icon.1 - category [%d]\n", peer->category);
-               char *img_path = NULL;
-               int status = -1;
-
-               status = wfd_get_device_status(ugd, peer);
-
+       if (!strcmp("elm.swallow.icon", part)) {
+               DBG(LOG_INFO, "elm.swallow.icon - category [%d]\n", peer->category);
+               char *img_name = NULL;
+               layout = elm_layout_add(obj);
+               elm_layout_theme_set(layout, "layout", "list/B/type.3", "default");
                /*
                * the icon of connected device is
                * different from available and busy device
                */
                switch (peer->category) {
                case WFD_DEVICE_TYPE_COMPUTER:
-                       if (1 == status) {
-                               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 (1 == status) {
-                               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 (1 == status) {
-                               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 (1 == status) {
-                               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 (1 == status) {
-                               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 (1 == status) {
-                               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 (1 == status) {
-                               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 (1 == status) {
-                               img_path = WFD_ICON_DEVICE_MULTIMEDIA_DEVICE_CONNECT;
+                       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_path = WFD_ICON_DEVICE_MULTIMEDIA_DEVICE;
+                               img_name = WFD_ICON_DEVICE_MULTIMEDIA;
                        }
                        break;
                case WFD_DEVICE_TYPE_GAME_DEVICES:
-                       if (1 == status) {
-                               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 (1 == status) {
-                               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 (1 == status) {
-                               img_path = WFD_ICON_DEVICE_AUDIO_DEVICE_CONNECT;
+                       if (peer->sub_category == WIFI_DIRECT_SECONDARY_DEVICE_TYPE_AUDIO_TUNER) {
+                               img_name = WFD_ICON_DEVICE_HOME_THEATER;
                        } else {
-                               img_path = WFD_ICON_DEVICE_AUDIO_DEVICE;
+                               img_name = WFD_ICON_DEVICE_HEADSET;
                        }
                        break;
                default:
-                       if (1 == status) {
-                               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 {
+               icon = elm_image_add(layout);
+               elm_image_file_set(icon, WFD_UG_EDJ_PATH, img_name);
+               evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_color_set(icon, 2, 61, 132, 204);
+               evas_object_show(icon);
+               evas_object_propagate_events_set(icon, EINA_FALSE);
+               elm_layout_content_set(layout, "elm.swallow.content", icon);
+       } 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) {
+                       layout = elm_layout_add(obj);
+                       elm_layout_theme_set(layout, "layout", "list/C/type.2", "default");
+                       icon = elm_progressbar_add(layout);
+                       elm_object_style_set(icon, "process_medium");
+                       elm_progressbar_pulse(icon, EINA_TRUE);
+               } else if (peer->conn_status == PEER_CONN_STATUS_CONNECTED) {
                        return NULL;
                }
+               evas_object_show(icon);
+               elm_layout_content_set(layout, "elm.swallow.content", icon);
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
-       return icon;
+       if (layout)
+               evas_object_show(layout);
+
+       __FUNC_EXIT__;
+       return layout;
 }
 
 /**
- *     This function let the ug get the text of no device item
- *     @return   the text of no device item
+ *     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 char *_gl_noitem_text_get(void *data, Evas_Object *obj, const char *part)
+static Evas_Object *_gl_conn_peer_icon_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_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;
+       Evas_Object *layout = NULL;
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
-       return strdup(_("IDS_WFD_NOCONTENT"));
+       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;
+               layout = elm_layout_add(obj);
+               elm_layout_theme_set(layout, "layout", "list/B/type.3", "default");
+               /*
+               * 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(layout);
+               elm_image_file_set(icon, WFD_UG_EDJ_PATH, img_name);
+               evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_color_set(icon, 2, 61, 132, 204);
+               evas_object_show(icon);
+               evas_object_propagate_events_set(icon, EINA_FALSE);
+               elm_layout_content_set(layout, "elm.swallow.content", icon);
+       }
+
+       if (layout)
+               evas_object_show(layout);
+
+       __FUNC_EXIT__;
+       return layout;
 }
 
 /**
- *     This function let the ug get the multi connect button
- *     @return   the multi connect button
+ *     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 Evas_Object *_gl_button_get(void *data, Evas_Object *obj, const char *part)
+static char *_gl_noitem_text_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
-       struct ug_data *ugd = (struct ug_data *) data;
-
-       WDUG_LOGI("%s", part);
-       ugd->multi_btn = elm_button_add(obj);
-       wfd_refresh_wifi_direct_state(ugd);
+       __FUNC_ENTER__;
 
-       if (ugd->wfd_status == WIFI_DIRECT_STATE_CONNECTING) {
-               elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_CANCEL"));
-               WDUG_LOGI("button: Cancel connect\n");
-       } else {
-               if (ugd->gl_connected_peer_cnt > 1) {
-                       elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_DISCONNECT_ALL"));
-                       WDUG_LOGI("button: Disconnect All\n");
-               } else if (ugd->gl_connected_peer_cnt == 1) {
-                       elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_DISCONNECT"));
-                       WDUG_LOGI("button: Disconnect\n");
-               } else {
-                       elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_MULTI"));
-                       WDUG_LOGI("button: Multi connect\n");
-               }
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
        }
 
-       evas_object_smart_callback_add(ugd->multi_btn, "clicked", _wifid_create_multibutton_cb, ugd);
-       evas_object_show(ugd->multi_btn);
-
-       __WDUG_LOG_FUNC_EXIT__;
-       return ugd->multi_btn;
+       DBG(LOG_INFO,"part = %s",part);
+       if (!strcmp("elm.text", part)) {
+               return g_strdup(D_("IDS_BT_BODY_NO_DEVICES_FOUND_ABB"));
+       }
+       __FUNC_EXIT__;
+       return NULL;
 }
 
 /**
@@ -533,21 +593,34 @@ static Evas_Object *_gl_button_get(void *data, Evas_Object *obj, const char *par
  */
 static char *_gl_conn_dev_title_label_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __FUNC_ENTER__;
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
-
-       if (!strcmp(part, "elm.text")) {
-               return strdup(_("IDS_WFD_BODY_CONNECTED_DEVICES"));
+       DBG(LOG_INFO,"part = %s",part);
+       if (!strcmp("elm.text", part)) {
+               return g_strdup(D_("IDS_ST_HEADER_CONNECTED_DEVICES"));
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
+       __FUNC_EXIT__;
        return NULL;
 }
 
+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;
+}
+
 /**
  *     This function let the ug get the label of connected device
  *     @return   the label of connected device
@@ -557,25 +630,42 @@ static char *_gl_conn_dev_title_label_get(void *data, Evas_Object *obj, const ch
  */
 static char *_gl_peer_conn_dev_label_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __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, };
-       WDUG_LOGI("%s", part);
+       DBG(LOG_INFO, "%s", part);
+       char *det = NULL;
+       char *buf = NULL;
+       char *ssid;
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               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);
-               __WDUG_LOG_FUNC_EXIT__;
-               return strdup(buf);
-       }
+       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"));
+               buf = g_strdup_printf("<color=#%s>%s</color>",
+                       ConvertRGBAtoHex(2, 61, 132, 255), det);
+               WFD_IF_FREE_MEM(det);
+               __FUNC_EXIT__;
+               return buf;
+       }
+       __FUNC_EXIT__;
+       return NULL;
 }
 
 /**
@@ -588,18 +678,18 @@ static char *_gl_peer_conn_dev_label_get(void *data, Evas_Object *obj, const cha
 static char *_gl_conn_failed_dev_title_label_get(void *data, Evas_Object *obj,
                const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __FUNC_ENTER__;
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
 
-       if (!strcmp(part, "elm.text")) {
-               return strdup(IDS_WFD_BODY_FAILED_DEVICES);
+       if (!strcmp("elm.text", part)) {
+               return g_strdup(D_("IDS_WIFI_SBODY_NOT_CONNECTED_M_STATUS_ABB"));
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
+       __FUNC_EXIT__;
        return NULL;
 }
 
@@ -612,25 +702,38 @@ static char *_gl_conn_failed_dev_title_label_get(void *data, Evas_Object *obj,
  */
 static char *_gl_peer_conn_failed_dev_label_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __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, };
-       WDUG_LOGI("%s", part);
+       char *ssid;
+       DBG(LOG_INFO, "%s", part);
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               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_FAILED_TO_CONNECT"), WFD_GLOBALIZATION_STR_LENGTH);
-               __WDUG_LOG_FUNC_EXIT__;
-               return strdup(buf);
+       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 g_strdup(buf);
        }
+       return NULL;
 }
 
 /**
@@ -642,27 +745,89 @@ static char *_gl_peer_conn_failed_dev_label_get(void *data, Evas_Object *obj, co
  */
 static char *_gl_multi_connect_dev_title_label_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __FUNC_ENTER__;
        struct ug_data *ugd = wfd_get_ug_data();
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
+       DBG(LOG_INFO, "%s", part);
 
-       if (!strcmp(part, "elm.text")) {
+       if (!strcmp("elm.text", part)) {
                if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_IN_PROGRESS) {
-                       return strdup(_("IDS_WFD_BODY_AVAILABLE_DEVICES"));
+                       return g_strdup(D_("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB"));
                } else if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_COMPLETED) {
-                       return strdup(IDS_WFD_BODY_FAILED_DEVICES);
+                       return g_strdup(D_("IDS_WIFI_SBODY_NOT_CONNECTED_M_STATUS_ABB"));
                }
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
+       __FUNC_EXIT__;
        return NULL;
 }
 
 /**
+ *     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__;
+
+       if (data == NULL) {
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+               return NULL;
+       }
+       DBG(LOG_INFO, "%s", part);
+
+       if (!strcmp("elm.text", part)) {
+               __FUNC_EXIT__;
+               return g_strdup(D_("IDS_WIFI_BODY_SELECT_ALL"));
+       }
+       __FUNC_EXIT__;
+       return NULL;
+}
+
+/**
+ *     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 = (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
@@ -672,18 +837,19 @@ static char *_gl_multi_connect_dev_title_label_get(void *data, Evas_Object *obj,
 static char *_gl_busy_dev_title_label_get(void *data, Evas_Object *obj,
                const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __FUNC_ENTER__;
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
+       DBG(LOG_INFO, "%s", part);
 
-       if (!strcmp(part, "elm.text")) {
-               return strdup(_("IDS_WFD_BODY_BUSY_DEVICES"));
+       if (!strcmp("elm.text", part)) {
+               return g_strdup(D_("IDS_ST_HEADER_BUSY_DEVICES"));
        }
 
-       __WDUG_LOG_FUNC_EXIT__;
+       __FUNC_EXIT__;
        return NULL;
 }
 
@@ -696,27 +862,40 @@ static char *_gl_busy_dev_title_label_get(void *data, Evas_Object *obj,
  */
 static char *_gl_peer_busy_dev_label_get(void *data, Evas_Object *obj, const char *part)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __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, };
-       WDUG_LOGI("%s", part);
+       char *ssid;
+       DBG(LOG_INFO, "%s", part);
 
        if (data == NULL) {
-               WDUG_LOGE("Incorrect parameter(NULL)\n");
+               DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
                return NULL;
        }
 
-       WDUG_LOGI("peer->ssid = %s", peer->ssid);
+       DBG(LOG_INFO, "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);
-               __WDUG_LOG_FUNC_EXIT__;
-               return strdup(buf);
+       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 g_strdup(buf);
        }
+
+       return NULL;
 }
 
 /**
@@ -727,11 +906,12 @@ static char *_gl_peer_busy_dev_label_get(void *data, Evas_Object *obj, const cha
  */
 static void _gl_peer_del(void *data, Evas_Object *obj)
 {
-       __WDUG_LOG_FUNC_ENTER__;
+       __FUNC_ENTER__;
+
        assertm_if(NULL == obj, "NULL!!");
        assertm_if(NULL == data, "NULL!!");
 
-       __WDUG_LOG_FUNC_EXIT__;
+       __FUNC_EXIT__;
        return;
 }
 
@@ -741,84 +921,103 @@ static void _gl_peer_del(void *data, Evas_Object *obj)
  */
 void initialize_gen_item_class()
 {
-       __WDUG_LOG_FUNC_ENTER__;
-       head_itc.item_style = "dialogue/2text.1icon.10";
-       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";
+       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;
 
-       peer_itc.item_style = "dialogue/2text.2icon.3";
+       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 = "dialogue/1text";
+       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;
 
-       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.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 = "dialogue/2text.2icon.3";
+       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_peer_icon_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 = "dialogue/title";
+       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 = "dialogue/2text.2icon.3";
+       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 = "dialogue/title";
+       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 = "dialogue/2text.2icon.3";
+       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 = "dialogue/title";
+       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;
 
-       __WDUG_LOG_FUNC_EXIT__;
-
+       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;
 }