+void wfd_genlist_select_all_check_changed_cb(void *data, Evas_Object * obj, void *event_info)
+{
+ __FUNC_ENTER__;
+ Elm_Object_Item *item = NULL;
+ Evas_Object *chk_box = NULL;
+ Evas_Object *content = NULL;
+ const char *object_type;
+ Eina_Bool state;
+
+
+ struct ug_data *ugd = (struct ug_data *)data;
+ if (NULL == ugd || NULL == obj) {
+ DBG(LOG_ERROR, "NULL parameters.\n");
+ return;
+ }
+
+ if (ugd->multi_conn_dev_list_start == NULL) {
+ elm_genlist_item_selected_set(ugd->select_all_view_genlist, EINA_FALSE);
+ elm_check_state_set(ugd->select_all_icon, EINA_FALSE);
+ ugd->is_select_all_checked = FALSE;
+
+ DBG(LOG_INFO, "No devices in multi-connect view.\n");
+ return;
+ }
+
+ device_type_s *peer = ugd->multi_conn_dev_list_start;
+ elm_genlist_item_selected_set(ugd->select_all_view_genlist, EINA_FALSE);
+
+
+ object_type = evas_object_type_get(obj);
+ if (g_strcmp0(object_type, "elm_genlist") == 0) {
+ state = elm_check_state_get(ugd->select_all_icon);
+ elm_check_state_set(ugd->select_all_icon, !state);
+ ugd->is_select_all_checked = !state;
+ }
+
+ state = elm_check_state_get(ugd->select_all_icon);
+ DBG(LOG_INFO, "state = %d",state);
+ if (state == EINA_TRUE) {
+ if (ugd->is_multi_check_all_selected == FALSE) {
+ int sel_count = 0;
+ while (peer != NULL) {
+ peer->dev_sel_state = TRUE;
+ item = peer->gl_item;
+ content = elm_object_item_part_content_get(item, "elm.icon.2");
+ chk_box = elm_object_part_content_get(content, "elm.swallow.content");
+ elm_check_state_set(chk_box, TRUE);
+ sel_count++;
+ peer = peer->next;
+ }
+ ugd->is_multi_check_all_selected = TRUE;
+
+ char title[MAX_POPUP_TEXT_SIZE] = {0};
+ snprintf(title, MAX_POPUP_TEXT_SIZE,
+ _("IDS_ST_HEADER_PD_SELECTED"), sel_count);
+ wfd_naviframe_title_set(ugd, title);
+
+ if (ugd->multiconn_layout) {
+ wfd_ug_view_refresh_button(ugd->multiconn_conn_btn,
+ "IDS_WIFI_SK_CONNECT", TRUE);
+ }
+ }
+ } else {
+ while (peer != NULL) {
+ peer->dev_sel_state = FALSE;
+ item = peer->gl_item;
+ content = elm_object_item_part_content_get(item, "elm.icon.2");
+ chk_box = elm_object_part_content_get(content, "elm.swallow.content");
+ elm_check_state_set(chk_box, FALSE);
+ peer = peer->next;
+ }
+ ugd->is_multi_check_all_selected = FALSE;
+ wfd_naviframe_title_set(ugd,
+ _("IDS_DLNA_HEADER_SELECT_DEVICES_ABB"));
+
+ if (ugd->multiconn_layout) {
+ wfd_ug_view_refresh_button(ugd->multiconn_conn_btn,
+ "IDS_WIFI_SK_CONNECT", FALSE);
+ }
+ }
+}
+
+/**
+ * This function let the ug call it when click 'scan' button
+ * @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
+ */
+void _multi_scan_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __FUNC_ENTER__;
+ int ret = -1;
+ const char *btn_text = NULL;
+ device_type_s *peer = NULL;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (NULL == ugd) {
+ DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
+ return;
+ }
+
+ if (ugd->multiconn_conn_btn) {
+ peer = ugd->multi_conn_dev_list_start;
+ while (peer) {
+ if(peer->dev_sel_state) {
+ wfd_ug_view_refresh_button(ugd->multiconn_conn_btn, "IDS_WIFI_SK_CONNECT", TRUE);
+ break;
+ }
+ peer = peer->next;
+ }
+ if (!peer) {
+ wfd_ug_view_refresh_button(ugd->multiconn_conn_btn, "IDS_WIFI_SK_CONNECT", FALSE);
+ }
+ }
+
+ btn_text = elm_object_text_get(ugd->multiconn_scan_stop_btn);
+ if (NULL == btn_text) {
+ DBG(LOG_ERROR, "Incorrect button text(NULL)\n");
+ return;
+ }
+
+ if (0 == strcmp(btn_text, _("IDS_WIFI_SK4_SCAN"))) {
+ wfd_refresh_wifi_direct_state(ugd);
+ DBG(LOG_INFO, "Start discovery again, status: %d\n", ugd->wfd_status);
+
+ /* if connected, show the popup*/
+ if (ugd->wfd_status >= WIFI_DIRECT_STATE_CONNECTED) {
+ wfd_ug_act_popup(ugd, _("IDS_WIFI_BODY_CURRENT_CONNECTION_WILL_BE_DISCONNECTED_SO_THAT_SCANNING_CAN_START_CONTINUE_Q"), POP_TYPE_SCAN_AGAIN);
+ } else if (WIFI_DIRECT_STATE_DEACTIVATED == ugd->wfd_status) {
+ wfd_client_switch_on(ugd);
+ __FUNC_EXIT__;
+ return;
+ } else {
+ WFD_IF_DEL_ITEM(ugd->mcview_nodevice_item);
+ ugd->wfd_discovery_status = WIFI_DIRECT_DISCOVERY_SOCIAL_CHANNEL_START;
+ ret = wifi_direct_start_discovery_specific_channel(false, 1, WIFI_DIRECT_DISCOVERY_SOCIAL_CHANNEL);
+ if (ret != WIFI_DIRECT_ERROR_NONE) {
+ ugd->wfd_discovery_status = WIFI_DIRECT_DISCOVERY_NONE;
+ DBG(LOG_ERROR, "Failed to start discovery. [%d]\n", ret);
+ wifi_direct_cancel_discovery();
+ }
+ }
+ elm_object_domain_translatable_text_set(ugd->multiconn_scan_stop_btn,
+ PACKAGE, "IDS_WIFI_SK_STOP");
+ } else if (0 == strcmp(btn_text, _("IDS_WIFI_SK_STOP"))) {
+ DBG(LOG_INFO, "Stop pressed.\n");
+ ugd->wfd_discovery_status = WIFI_DIRECT_DISCOVERY_STOPPED;
+ wfd_cancel_progressbar_stop_timer(ugd);
+ wfd_delete_progressbar_cb(ugd);
+ wfd_cancel_not_alive_delete_timer(ugd);
+ }
+
+ __FUNC_EXIT__;
+ return;
+}
+