summaryrefslogtreecommitdiff
path: root/ug-wifidirect
diff options
context:
space:
mode:
Diffstat (limited to 'ug-wifidirect')
-rwxr-xr-xug-wifidirect/CMakeLists.txt47
-rw-r--r--ug-wifidirect/include/wfd_client.h143
-rwxr-xr-xug-wifidirect/include/wfd_ug.h268
-rwxr-xr-xug-wifidirect/include/wfd_ug_view.h304
-rw-r--r--ug-wifidirect/po/CMakeLists.txt24
-rw-r--r--ug-wifidirect/po/POTFILES.in2
-rw-r--r--ug-wifidirect/po/ar.po117
-rw-r--r--ug-wifidirect/po/az.po117
-rw-r--r--ug-wifidirect/po/bg.po117
-rw-r--r--ug-wifidirect/po/ca.po117
-rw-r--r--ug-wifidirect/po/cs.po117
-rw-r--r--ug-wifidirect/po/da.po117
-rw-r--r--ug-wifidirect/po/de_DE.po117
-rw-r--r--ug-wifidirect/po/el_GR.po117
-rwxr-xr-xug-wifidirect/po/en.po117
-rw-r--r--ug-wifidirect/po/en_PH.po117
-rw-r--r--ug-wifidirect/po/en_US.po117
-rw-r--r--ug-wifidirect/po/es_ES.po117
-rw-r--r--ug-wifidirect/po/es_US.po117
-rw-r--r--ug-wifidirect/po/et.po117
-rw-r--r--ug-wifidirect/po/eu.po117
-rw-r--r--ug-wifidirect/po/fi.po117
-rw-r--r--ug-wifidirect/po/fr_CA.po117
-rw-r--r--ug-wifidirect/po/fr_FR.po117
-rw-r--r--ug-wifidirect/po/ga.po117
-rw-r--r--ug-wifidirect/po/gl.po117
-rw-r--r--ug-wifidirect/po/hi.po118
-rw-r--r--ug-wifidirect/po/hr.po117
-rw-r--r--ug-wifidirect/po/hu.po117
-rw-r--r--ug-wifidirect/po/hy.po117
-rw-r--r--ug-wifidirect/po/is.po117
-rw-r--r--ug-wifidirect/po/it_IT.po117
-rw-r--r--ug-wifidirect/po/ja_JP.po117
-rw-r--r--ug-wifidirect/po/ka.po117
-rw-r--r--ug-wifidirect/po/kk.po117
-rw-r--r--ug-wifidirect/po/ko_KR.po117
-rw-r--r--ug-wifidirect/po/lt.po117
-rw-r--r--ug-wifidirect/po/lv.po117
-rw-r--r--ug-wifidirect/po/mk.po117
-rw-r--r--ug-wifidirect/po/nb.po117
-rw-r--r--ug-wifidirect/po/nl_NL.po117
-rw-r--r--ug-wifidirect/po/pl.po117
-rw-r--r--ug-wifidirect/po/pt_BR.po117
-rw-r--r--ug-wifidirect/po/pt_PT.po117
-rw-r--r--ug-wifidirect/po/ro.po117
-rw-r--r--ug-wifidirect/po/ru_RU.po117
-rw-r--r--ug-wifidirect/po/sk.po117
-rw-r--r--ug-wifidirect/po/sl.po117
-rw-r--r--ug-wifidirect/po/sr.po117
-rw-r--r--ug-wifidirect/po/sv.po114
-rw-r--r--ug-wifidirect/po/tr_TR.po117
-rw-r--r--ug-wifidirect/po/ug-wifi-qdirect.pot324
-rw-r--r--ug-wifidirect/po/uk.po117
-rwxr-xr-xug-wifidirect/po/update-po.sh60
-rw-r--r--ug-wifidirect/po/uz.po117
-rw-r--r--ug-wifidirect/po/zh_CN.po117
-rw-r--r--ug-wifidirect/po/zh_HK.po117
-rw-r--r--ug-wifidirect/po/zh_SG.po117
-rw-r--r--ug-wifidirect/po/zh_TW.po117
-rwxr-xr-xug-wifidirect/resources/images/00_list_bar_press_1x80.pngbin0 -> 2872 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_Connect.pngbin0 -> 3428 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_NoDevice.pngbin0 -> 4279 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_audio_devices.pngbin0 -> 1626 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_audio_devices_connect.pngbin0 -> 3735 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_camera.pngbin0 -> 1678 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_camera_connect.pngbin0 -> 3750 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_computer.pngbin0 -> 1220 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_computer_connect.pngbin0 -> 3249 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_display.pngbin0 -> 1275 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_display_connect.pngbin0 -> 3246 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_gaming_devices.pngbin0 -> 1713 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_input_device.pngbin0 -> 1422 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_input_device_connect.pngbin0 -> 3478 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_multimedia_devices.pngbin0 -> 1282 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_multimedia_devices_connect.pngbin0 -> 3283 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_network_infrastructure.pngbin0 -> 1401 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_network_infrastructure_connect.pngbin0 -> 3437 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_printer.pngbin0 -> 1414 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_printer_connect.pngbin0 -> 3412 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_storage.pngbin0 -> 1109 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_storage_connect.pngbin0 -> 3048 bytes
-rwxr-xr-xug-wifidirect/resources/images/A09_device_telephone.pngbin0 -> 1284 bytes
-rw-r--r--ug-wifidirect/resources/images/A09_device_telephone_connect.pngbin0 -> 3230 bytes
-rw-r--r--ug-wifidirect/resources/wfd_ug.edc248
-rwxr-xr-xug-wifidirect/src/wfd_client.c1431
-rwxr-xr-xug-wifidirect/src/wfd_ug.c524
-rwxr-xr-xug-wifidirect/src/wfd_ug_about_view.c116
-rwxr-xr-xug-wifidirect/src/wfd_ug_genlist.c793
-rwxr-xr-xug-wifidirect/src/wfd_ug_main_view.c1190
-rwxr-xr-xug-wifidirect/src/wfd_ug_multiconnect_view.c807
-rwxr-xr-xug-wifidirect/src/wfd_ug_popup.c379
91 files changed, 12625 insertions, 0 deletions
diff --git a/ug-wifidirect/CMakeLists.txt b/ug-wifidirect/CMakeLists.txt
new file mode 100755
index 0000000..012896b
--- /dev/null
+++ b/ug-wifidirect/CMakeLists.txt
@@ -0,0 +1,47 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-setting-wifidirect-efl C)
+SET(PACKAGE_NAME ug-setting-wifidirect-efl)
+
+SET(PREFIX "/usr/ug")
+SET(LIBDIR "${PREFIX}/lib")
+SET(RESDIR "${PREFIX}/res")
+SET(EDJDIR "${RESDIR}/edje/${PROJECT_NAME}")
+SET(IMGDIR "${RESDIR}/images/${PROJECT_NAME}")
+
+SET(SRCS
+ src/wfd_ug.c
+ src/wfd_client.c
+ src/wfd_ug_popup.c
+ src/wfd_ug_genlist.c
+ src/wfd_ug_main_view.c
+ src/wfd_ug_multiconnect_view.c
+ src/wfd_ug_about_view.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+
+SET(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -fvisibility=hidden -Wall")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DUSE_DLOG")
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION 0.1.0)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
+
+ADD_CUSTOM_TARGET(wfd_ug.edj
+ COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/resources/images
+ ${CMAKE_CURRENT_SOURCE_DIR}/resources/wfd_ug.edc ${CMAKE_BINARY_DIR}/wfd_ug.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/resources/wfd_ug.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} wfd_ug.edj)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIBDIR})
+INSTALL(FILES ${CMAKE_BINARY_DIR}/wfd_ug.edj DESTINATION ${EDJDIR})
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/resources/images/ DESTINATION ${IMGDIR} FILES_MATCHING PATTERN "*.png")
+
+ADD_SUBDIRECTORY(po)
diff --git a/ug-wifidirect/include/wfd_client.h b/ug-wifidirect/include/wfd_client.h
new file mode 100644
index 0000000..067fb08
--- /dev/null
+++ b/ug-wifidirect/include/wfd_client.h
@@ -0,0 +1,143 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#ifndef __WFD_CLIENT_H__
+#define __WFD_CLIENT_H__
+
+
+typedef enum {
+ WFD_DEVICE_TYPE_COMPUTER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_COMPUTER,
+ WFD_DEVICE_TYPE_INPUT_DEVICE = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_INPUT_DEVICE,
+ WFD_DEVICE_TYPE_PRINTER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_PRINTER,
+ WFD_DEVICE_TYPE_CAMERA = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_CAMERA,
+ WFD_DEVICE_TYPE_STORAGE = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_STORAGE,
+ WFD_DEVICE_TYPE_NW_INFRA = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_NETWORK_INFRA,
+ WFD_DEVICE_TYPE_DISPLAYS = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_DISPLAY,
+ WFD_DEVICE_TYPE_MM_DEVICES = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_MULTIMEDIA_DEVICE,
+ WFD_DEVICE_TYPE_GAME_DEVICES = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_GAME_DEVICE,
+ WFD_DEVICE_TYPE_TELEPHONE = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_TELEPHONE,
+ WFD_DEVICE_TYPE_AUDIO = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_AUDIO,
+ WFD_DEVICE_TYPE_OTHER = WIFI_DIRECT_PRIMARY_DEVICE_TYPE_OTHER,
+} device_type_e;
+
+typedef enum {
+ WFD_LINK_STATUS_DEACTIVATED = WIFI_DIRECT_STATE_DEACTIVATED,
+ WFD_LINK_STATUS_DEACTIVATING = WIFI_DIRECT_STATE_DEACTIVATING,
+ WFD_LINK_STATUS_ACTIVATING = WIFI_DIRECT_STATE_ACTIVATING,
+ WFD_LINK_STATUS_ACTIVATED = WIFI_DIRECT_STATE_ACTIVATED,
+ WFD_LINK_STATUS_DISCOVERING = WIFI_DIRECT_STATE_DISCOVERING,
+ WFD_LINK_STATUS_CONNECTING = WIFI_DIRECT_STATE_CONNECTING,
+ WFD_LINK_STATUS_DISCONNECTING = WIFI_DIRECT_STATE_DISCONNECTING,
+ WFD_LINK_STATUS_CONNECTED = WIFI_DIRECT_STATE_CONNECTED,
+ WFD_LINK_STATUS_GROUP_OWNER = WIFI_DIRECT_STATE_GROUP_OWNER,
+} link_status_e;
+
+/**
+ * This function let the ug get wi-fi direct status from vconf
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_get_vconf_status(void *data);
+
+/**
+ * This function let the ug turn wifi off
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_wifi_off(void *data);
+
+/**
+ * This function let the ug turn AP on
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_mobile_ap_on(void *data);
+
+/**
+ * This function let the ug turn AP off
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_mobile_ap_off(void *data);
+
+/**
+ * This function let the ug do initialization
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int init_wfd_client(void *data);
+
+/**
+ * This function let the ug do de-initialization
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int deinit_wfd_client(void *data);
+
+/**
+ * This function let the ug turn wi-fi direct on
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_client_switch_on(void *data);
+
+/**
+ * This function let the ug turn wi-fi direct off
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_client_switch_off(void *data);
+
+/**
+ * This function let the ug turn wi-fi direct on/off forcely
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ * @param[in] onoff whether to turn on/off wi-fi direct
+ */
+int wfd_client_swtch_force(void *data, int onoff);
+
+/**
+ * This function let the ug create a group
+ * @return If success, return 0, else return -1
+ */
+int wfd_client_group_add();
+
+/**
+ * This function let the ug connect to the device by mac address
+ * @return If success, return 0, else return -1
+ * @param[in] mac_addr the pointer to the mac address of device
+ */
+int wfd_client_connect(const char *mac_addr);
+
+/**
+ * This function let the ug disconnect to the device by mac address
+ * @return If success, return 0, else return -1
+ * @param[in] mac_addr the pointer to the mac address of device
+ */
+int wfd_client_disconnect(const char *mac_addr);
+
+/**
+ * This function let the ug set the intent of a group owner
+ * @return If success, return 0, else return -1
+ * @param[in] go_intent the intent parameter
+ */
+int wfd_client_set_p2p_group_owner_intent(int go_intent);
+
+#endif /* __WFD_CLIENT_H__ */
diff --git a/ug-wifidirect/include/wfd_ug.h b/ug-wifidirect/include/wfd_ug.h
new file mode 100755
index 0000000..ff16f49
--- /dev/null
+++ b/ug-wifidirect/include/wfd_ug.h
@@ -0,0 +1,268 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#ifndef __WFD_UG_H__
+#define __WFD_UG_H__
+
+#include <ui-gadget-module.h>
+#include <tethering.h>
+#include <wifi-direct.h>
+
+#define PACKAGE "ug-setting-wifidirect-efl"
+#define LOCALEDIR "/usr/ug/res/locale"
+#define VCONF_WFD_APNAME "db/setting/device_name"
+
+#ifdef USE_DLOG
+#include <dlog.h>
+
+#undef LOG_TAG
+#define LOG_TAG "UG_WIFI_DIRECT"
+
+#define WDUG_LOGV(format, args...) LOGV(format, ##args)
+#define WDUG_LOGD(format, args...) LOGD(format, ##args)
+#define WDUG_LOGI(format, args...) LOGI(format, ##args)
+#define WDUG_LOGW(format, args...) LOGW(format, ##args)
+#define WDUG_LOGE(format, args...) LOGE(format, ##args)
+#define WDUG_LOGF(format, args...) LOGF(format, ##args)
+
+#define __WDUG_LOG_FUNC_ENTER__ LOGV("Enter")
+#define __WDUG_LOG_FUNC_EXIT__ LOGV("Quit")
+
+#define assertm_if(expr, fmt, args...) do { \
+ if (expr) { \
+ WDUG_LOGF(" ##(%s) -> assert!!## "fmt, #expr, ##args); \
+ assert(1); \
+ } \
+} while (0)
+
+#else /** _DLOG_UTIL */
+
+#define WDUG_LOGV(format, args...) \
+ printf("[V/UG_WIFI_DIRECT] %s: %s()(%4d)> "format, __FILE__, __FUNCTION__, __LINE__, ##args)
+#define WDUG_LOGD(format, args...) \
+ printf("[D/UG_WIFI_DIRECT] %s: %s()(%4d)> "format, __FILE__, __FUNCTION__, __LINE__, ##args)
+#define WDUG_LOGI(format, args...) \
+ printf("[I/UG_WIFI_DIRECT] %s: %s()(%4d)> "format, __FILE__, __FUNCTION__, __LINE__, ##args)
+#define WDUG_LOGW(format, args...) \
+ printf("[W/UG_WIFI_DIRECT] %s: %s()(%4d)> "format, __FILE__, __FUNCTION__, __LINE__, ##args)
+#define WDUG_LOGE(format, args...) \
+ printf("[E/UG_WIFI_DIRECT] %s: %s()(%4d)> "format, __FILE__, __FUNCTION__, __LINE__, ##args)
+#define WDUG_LOGF(format, args...) \
+ printf("[F/UG_WIFI_DIRECT] %s: %s()(%4d)> "format, __FILE__, __FUNCTION__, __LINE__, ##args)
+
+#define __WDUG_LOG_FUNC_ENTER__ \
+ printf("[V/UG_WIFI_DIRECT] %s: %s()(%4d)> Enter", __FILE__, __FUNCTION__, __LINE__)
+#define __WDUG_LOG_FUNC_EXIT__ \
+ printf("[V/UG_WIFI_DIRECT] %s: %s()(%4d)> Exit", __FILE__, __FUNCTION__, __LINE__)
+
+#endif /** _DLOG_UTIL */
+
+#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
+#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x"
+
+#define AP_NAME_LENGTH_MAX 32
+#define AP_PASSWORD_LENGTH_MAX 64
+#define AP_PASSWORD_LENGTH_MIN 8
+#define AP_REJECT_CHAR_LIST "=,"
+
+#define DEFAULT_DEV_NAME "Tizen"
+#define MAC_LENGTH 18
+#define SSID_LENGTH 32
+#define MAX_PEER_NUM 10
+#define MAX_POPUP_PEER_NUM 7
+#define MAX_POPUP_TEXT_SIZE 256
+#define MAX_DISPLAY_TIME_OUT 30
+#define MAX_NO_ACTION_TIME_OUT 300 /*5min*/
+#define MAX_SCAN_TIME_OUT 30
+
+#define _(s) dgettext(PACKAGE, s)
+#define N_(s) dgettext_noop(s)
+#define S_(s) dgettext("sys_string", s)
+
+#if 1
+/* To-Do : Text should be translated. */
+#define IDS_WFD_POP_SCAN_AGAIN "Current connection will be disconnected so that scanning can start.Continue?"
+#define IDS_WFD_POP_WARN_BUSY_DEVICE "Unavailable device. Device is connected to another device."
+#define IDS_WFD_POP_AUTOMATIC_TURN_OFF "There has been no activity for 5 minutes since Wi-Fi Direct was enabled. To extend battery life, Wi-Fi Direct has been disabled."
+#define IDS_WFD_BODY_FAILED_DEVICES "Failed Devices"
+#define IDS_WFD_TITLE_ABOUT_WIFI_DIRECT "About Wi-Fi Direct"
+#endif
+
+
+#define WFD_GLOBALIZATION_STR_LENGTH 256
+
+typedef enum {
+ WFD_MULTI_CONNECT_MODE_NONE,
+ WFD_MULTI_CONNECT_MODE_IN_PROGRESS,
+ WFD_MULTI_CONNECT_MODE_COMPLETED,
+} wfd_multi_connect_mode_e;
+
+typedef enum {
+ PEER_CONN_STATUS_DISCONNECTED,
+ PEER_CONN_STATUS_DISCONNECTING,
+ PEER_CONN_STATUS_CONNECTING = PEER_CONN_STATUS_DISCONNECTING,
+ PEER_CONN_STATUS_CONNECTED,
+ PEER_CONN_STATUS_FAILED_TO_CONNECT,
+ PEER_CONN_STATUS_WAIT_FOR_CONNECT,
+} conn_status_e;
+
+
+typedef struct {
+ char ssid[SSID_LENGTH];
+ unsigned int category;
+ char mac_addr[MAC_LENGTH];
+ char if_addr[MAC_LENGTH];
+ conn_status_e conn_status;
+ bool is_group_owner; /** Is an active P2P Group Owner */
+ bool is_persistent_group_owner; /** Is a stored Persistent GO */
+ bool is_connected; /** Is peer connected*/
+ Elm_Object_Item *gl_item;
+} device_type_s;
+
+typedef struct {
+ bool dev_sel_state;
+ device_type_s peer;
+} wfd_multi_sel_data_s;
+
+struct ug_data {
+ Evas_Object *base;
+ ui_gadget_h ug;
+
+ Evas_Object *win;
+ Evas_Object *bg;
+ Evas_Object *naviframe;
+ Evas_Object *genlist;
+ Evas_Object *multiconn_view_genlist;
+ Evas_Object *popup;
+ Evas_Object *act_popup;
+ Evas_Object *warn_popup;
+
+ Elm_Object_Item *head;
+ Evas_Object *scan_btn;
+ Evas_Object *multi_scan_btn;
+ Evas_Object *multi_connect_btn;
+
+ Elm_Object_Item *nodevice_title_item;
+ Elm_Object_Item *nodevice_item;
+
+ Elm_Object_Item *about_wfd_item;
+ Elm_Object_Item *about_wfd_sep_high_item;
+ Elm_Object_Item *about_wfd_sep_low_item;
+
+ Elm_Object_Item *conn_wfd_item;
+ Elm_Object_Item *conn_failed_wfd_item;
+ Elm_Object_Item *avlbl_wfd_item;
+ Elm_Object_Item *busy_wfd_item;
+ Elm_Object_Item *multi_connect_wfd_item;
+
+ Elm_Object_Item *multi_button_item;
+ Elm_Object_Item *multi_button_sep_item;
+
+ Elm_Object_Item *mcview_select_all_item;
+ Elm_Object_Item *mcview_title_item;
+ Elm_Object_Item *mcview_nodevice_item;
+
+ Evas_Object *back_btn;
+ Evas_Object *multi_btn;
+
+ // Notify
+ Evas_Object *notify;
+ Evas_Object *notify_layout;
+
+ int head_text_mode;
+
+ // Raw peer data
+ device_type_s raw_connected_peers[MAX_PEER_NUM];
+ int raw_connected_peer_cnt;
+ device_type_s raw_discovered_peers[MAX_PEER_NUM];
+ int raw_discovered_peer_cnt;
+
+ // Peer data in the Genlist
+ device_type_s gl_connected_peers[MAX_PEER_NUM];
+ int gl_connected_peer_cnt;
+
+ device_type_s gl_connected_failed_peers[MAX_PEER_NUM];
+ int gl_connected_failed_peer_cnt;
+
+ device_type_s gl_available_peers[MAX_PEER_NUM];
+ int gl_available_peer_cnt;
+
+ device_type_s gl_busy_peers[MAX_PEER_NUM];
+ int gl_busy_peer_cnt;
+
+ device_type_s raw_multi_selected_peers[MAX_PEER_NUM];
+ int raw_multi_selected_peer_cnt;
+
+ device_type_s gl_multi_connect_peers[MAX_PEER_NUM];
+ int gl_multi_connect_peer_cnt;
+
+ // My status
+ bool I_am_group_owner;
+ bool I_am_connected;
+
+ // Following variables are used at the Multi connect view.
+ wfd_multi_connect_mode_e multi_connect_mode;
+ wfd_multi_sel_data_s multi_conn_dev_list[MAX_PEER_NUM];
+ int gl_available_dev_cnt_at_multiconn_view;
+ int g_source_multi_connect_next;
+
+ int wfd_onoff;
+ wifi_direct_state_e wfd_status;
+ char *dev_name;
+ char *dev_pass;
+
+ // For connect failed peers
+ int last_display_time;
+ Ecore_Timer *display_timer;
+
+ // Tethering
+ bool is_hotspot_off;
+ tethering_h hotspot_handle;
+
+ // Used for automatic turn off
+ int last_wfd_status;
+ int last_wfd_time;
+ Ecore_Timer *monitor_timer;
+
+ // Re-discover or not
+ bool is_re_discover;
+};
+
+extern Elm_Gen_Item_Class head_itc;
+extern Elm_Gen_Item_Class name_itc;
+extern Elm_Gen_Item_Class title_itc;
+extern Elm_Gen_Item_Class peer_itc;
+extern Elm_Gen_Item_Class noitem_itc;
+extern Elm_Gen_Item_Class button_itc;
+
+extern Elm_Gen_Item_Class title_conn_itc;
+extern Elm_Gen_Item_Class peer_conn_itc;
+
+extern Elm_Gen_Item_Class title_busy_itc;
+extern Elm_Gen_Item_Class peer_busy_itc;
+
+extern Elm_Gen_Item_Class title_multi_connect_itc;
+extern Elm_Gen_Item_Class peer_multi_connect_itc;
+
+extern Elm_Gen_Item_Class title_conn_failed_itc;
+extern Elm_Gen_Item_Class peer_conn_failed_itc;
+
+
+#endif /* __WFD_UG_H__ */
diff --git a/ug-wifidirect/include/wfd_ug_view.h b/ug-wifidirect/include/wfd_ug_view.h
new file mode 100755
index 0000000..7a6359b
--- /dev/null
+++ b/ug-wifidirect/include/wfd_ug_view.h
@@ -0,0 +1,304 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#ifndef __WFD_UG_VIEW_H__
+#define __WFD_UG_VIEW_H__
+
+#include <glib.h>
+#include <syspopup_caller.h>
+
+#define EDJDIR "/usr/ug/res/edje/ug-setting-wifidirect-efl"
+#define WFD_UG_EDJ_PATH EDJDIR"/wfd_ug.edj"
+#define WFD_IMG_DIR "/usr/ug/res/images/ug-setting-wifidirect-efl"
+#define TICKERNOTI_SYSPOPUP "tickernoti-syspopup"
+
+
+/* Define icons */
+
+#define WFD_ICON_DEVICE_COMPUTER WFD_IMG_DIR"/A09_device_computer.png"
+#define WFD_ICON_DEVICE_INPUT_DEVICE WFD_IMG_DIR"/A09_device_input_device.png"
+#define WFD_ICON_DEVICE_PRINTER WFD_IMG_DIR"/A09_device_printer.png"
+#define WFD_ICON_DEVICE_CAMERA WFD_IMG_DIR"/A09_device_camera.png"
+#define WFD_ICON_DEVICE_STORAGE WFD_IMG_DIR"/A09_device_storage.png"
+#define WFD_ICON_DEVICE_NETWORK_INFRA WFD_IMG_DIR"/A09_device_network_infrastructure.png"
+#define WFD_ICON_DEVICE_DISPLAY WFD_IMG_DIR"/A09_device_display.png"
+#define WFD_ICON_DEVICE_MULTIMEDIA_DEVICE WFD_IMG_DIR"/A09_device_multimedia_devices.png"
+#define WFD_ICON_DEVICE_GAMING_DEVICE WFD_IMG_DIR"/A09_device_gaming_devices.png"
+#define WFD_ICON_DEVICE_TELEPHONE WFD_IMG_DIR"/A09_device_telephone.png"
+#define WFD_ICON_DEVICE_AUDIO_DEVICE WFD_IMG_DIR"/A09_device_audio_devices.png"
+
+#define WFD_ICON_DEVICE_COMPUTER_CONNECT WFD_IMG_DIR"/A09_device_computer_connect.png"
+#define WFD_ICON_DEVICE_INPUT_DEVICE_CONNECT WFD_IMG_DIR"/A09_device_input_device_connect.png"
+#define WFD_ICON_DEVICE_PRINTER_CONNECT WFD_IMG_DIR"/A09_device_printer_connect.png"
+#define WFD_ICON_DEVICE_CAMERA_CONNECT WFD_IMG_DIR"/A09_device_camera_connect.png"
+#define WFD_ICON_DEVICE_STORAGE_CONNECT WFD_IMG_DIR"/A09_device_storage_connect.png"
+#define WFD_ICON_DEVICE_NETWORK_INFRA_CONNECT WFD_IMG_DIR"/A09_device_network_infrastructure_connect.png"
+#define WFD_ICON_DEVICE_DISPLAY_CONNECT WFD_IMG_DIR"/A09_device_display_connect.png"
+#define WFD_ICON_DEVICE_MULTIMEDIA_DEVICE_CONNECT WFD_IMG_DIR"/A09_device_multimedia_devices_connect.png"
+#define WFD_ICON_DEVICE_GAMING_DEVICE_CONNECT WFD_IMG_DIR"/A09_device_gaming_devices_connect.png"
+#define WFD_ICON_DEVICE_TELEPHONE_CONNECT WFD_IMG_DIR"/A09_device_telephone_connect.png"
+#define WFD_ICON_DEVICE_AUDIO_DEVICE_CONNECT WFD_IMG_DIR"/A09_device_audio_devices_connect.png"
+
+#define WFD_ICON_CONNECTED WFD_IMG_DIR"/A09_Connect.png"
+
+
+enum {
+ HEAD_TEXT_TYPE_DIRECT,
+ HEAD_TEXT_TYPE_DEACTIVATING,
+ HEAD_TEXT_TYPE_ACTIVATING,
+ HEAD_TEXT_TYPE_ACTIVATED,
+ HEAD_TEXT_TYPE_SCANING,
+};
+
+enum {
+ /* User confirm */
+ POPUP_TYPE_WIFI_OFF,
+ POPUP_TYPE_HOTSPOT_OFF,
+
+ /* Activation */
+ POPUP_TYPE_ACTIVATE_FAIL,
+ POPUP_TYPE_DEACTIVATE_FAIL,
+
+ /* Connection */
+ POPUP_TYPE_LINK_TIMEOUT,
+ POPUP_TYPE_AUTH_FAIL,
+ POPUP_TYPE_LINK_FAIL,
+ POPUP_TYPE_UNKNOWN_ERROR,
+
+ POPUP_TYPE_TERMINATE,
+
+ /* Disconnect */
+ POP_TYPE_DISCONNECT,
+
+ /* Disconnect All*/
+ POP_TYPE_DISCONNECT_ALL,
+
+ /* Scan again */
+ POP_TYPE_SCAN_AGAIN,
+
+ /* multi connect */
+ POP_TYPE_MULTI_CONNECT_POPUP,
+
+ /* Busy device */
+ POP_TYPE_BUSY_DEVICE_POPUP,
+
+ /* Automaticlly turn off */
+ POP_TYPE_AUTOMATIC_TURN_OFF,
+};
+
+struct ug_data *wfd_get_ug_data();
+
+/**
+ * This function let the ug create the main view
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void create_wfd_ug_view(void *data);
+
+/**
+ * This function let the ug destroy the main view
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void destroy_wfd_ug_view(void *data);
+
+/**
+ * This function let the ug update the genlist item
+ * @return void
+ * @param[in] obj the pointer to genlist item
+ */
+void wfd_ug_view_refresh_glitem(void *obj);
+
+/**
+ * This function let the ug refresh the attributes of button
+ * @return void
+ * @param[in] obj the pointer to the button
+ * @param[in] text the pointer to the text of button
+ * @param[in] enable whether the button is disabled
+ */
+void wfd_ug_view_refresh_button(void *obj, const char *text, int enable);
+
+/**
+ * This function let the ug update the peers
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void wfd_ug_view_update_peers(void *data);
+
+/**
+ * This function let the ug free the peers
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void wfd_ug_view_free_peers(void *data);
+
+/**
+ * This function let the ug create a action popup
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ * @param[in] message the pointer to the text of popup
+ * @param[in] popup_type the message type
+ */
+void wfd_ug_act_popup(void *data, const char *message, int popup_type);
+
+/**
+ * This function let the ug remove the action popup
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void wfg_ug_act_popup_remove(void *data);
+
+/**
+ * This function let the ug create a warning popup
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ * @param[in] message the pointer to the text of popup
+ * @param[in] popup_type the message type
+ */
+void wfd_ug_warn_popup(void *data, const char *message, int popup_type);
+
+/**
+ * This function let the ug change the text of multi button
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int _change_multi_button_title(void *data);
+
+/**
+ * This function let the ug create about view
+ * @return void
+ * @param[in] ugd the pointer to the main data structure
+ */
+void _wifid_create_about_view(struct ug_data *ugd);
+
+/**
+ * This function let the ug create the view for multi connection
+ * @return void
+ * @param[in] ugd the pointer to the main data structure
+ */
+void _wifid_create_multiconnect_view(struct ug_data *ugd);
+
+/**
+ * This function let the ug call it when click 'back' 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 _back_btn_cb(void *data, Evas_Object * obj, void *event_info);
+
+/**
+ * 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 _scan_btn_cb(void *data, Evas_Object * obj, void *event_info);
+
+/**
+ * This function let the ug call it when click 'multi connect' 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 _wifid_create_multibutton_cb(void *data, Evas_Object *obj, void *event_info);
+
+/**
+ * This function let the ug get the found peers
+ * @return If success, return 0, else return -1
+ * @param[in] ugd the pointer to the main data structure
+ */
+int wfd_ug_get_discovered_peers(struct ug_data *ugd);
+
+/**
+ * This function let the ug get the connected peers
+ * @return If success, return 0, else return -1
+ * @param[in] ugd the pointer to the main data structure
+ */
+int wfd_ug_get_connected_peers(struct ug_data *ugd);
+
+/**
+ * This function let the ug get the device status
+ * @return If success, return 0-3(available: 0, connected: 1, busy: 2, connected failed: 3), else return -1
+ * @param[in] ugd the pointer to the main data structure
+ * @param[in] device the pointer to the number of connected failed devices
+ */
+int wfd_get_device_status(void *data, device_type_s *device);
+
+/**
+ * This function let the ug refresh current status of wi-fi direct
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_refresh_wifi_direct_state(void *data);
+
+/**
+ * This function let the ug free the selected peers in multi connect view
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void wfd_free_multi_selected_peers(void *data);
+
+/**
+ * This function let the ug stop to connect to selected peer
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_stop_multi_connect(void *data);
+
+/**
+ * This function let the ug connect to the next selected peer automatically
+ * @return If stop the timer, return false, else return true
+ * @param[in] data the pointer to the main data structure
+ */
+gboolean wfd_multi_connect_next_cb(void *data);
+
+/**
+ * This function let the ug add a dialogue separator
+ * @return the separator item
+ * @param[in] genlist the pointer to the genlist
+ * @param[in] separator_style the style of separator
+ */
+Elm_Object_Item *wfd_add_dialogue_separator(Evas_Object *genlist, const char *separator_style);
+
+/**
+ * This function let the ug fee the multi connect devices
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_free_multiconnect_device(struct ug_data *ugd);
+
+/**
+ * This function let the ug update the multi connect devices
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_update_multiconnect_device(struct ug_data *ugd);
+
+/**
+ * This function let the ug create the view for multi connection
+ * @return void
+ * @param[in] ugd the pointer to the main data structure
+ */
+void wfd_create_multiconnect_view(struct ug_data *ugd);
+
+
+#endif /* __WFD_UG_VIEW_H__ */
diff --git a/ug-wifidirect/po/CMakeLists.txt b/ug-wifidirect/po/CMakeLists.txt
new file mode 100644
index 0000000..68ac9fa
--- /dev/null
+++ b/ug-wifidirect/po/CMakeLists.txt
@@ -0,0 +1,24 @@
+# for i18n
+
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en.po en_PH.po en_US.po es_ES.po es_US.po et.po eu.po fi.po fr_CA.po fr_FR.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl_NL.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_SG.po zh_TW.po )
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+ SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+ MESSAGE("PO: ${pofile}")
+ GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+ GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+ SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${moFile}
+ COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+ DEPENDS ${absPofile}
+ )
+ INSTALL(FILES ${moFile}
+ DESTINATION /usr/ug/res/locale/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+ SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/ug-wifidirect/po/POTFILES.in b/ug-wifidirect/po/POTFILES.in
new file mode 100644
index 0000000..6e6a4b0
--- /dev/null
+++ b/ug-wifidirect/po/POTFILES.in
@@ -0,0 +1,2 @@
+# List of source files containing translatable strings.
+wifi_direct_strings.h
diff --git a/ug-wifidirect/po/ar.po b/ug-wifidirect/po/ar.po
new file mode 100644
index 0000000..ba92fa7
--- /dev/null
+++ b/ug-wifidirect/po/ar.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "تم التوصيل"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "جاري التوصيل"
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "جاري الفصل..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "تم التوصيل"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "خطأ غير معروف"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "عدم تطابق رموز PIN!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "جاري التفعيل..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "تم تحديد %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "جاري إلغاء التفعيل..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "غير مدعوم"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "بحث"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "أجهزة Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "انقر للتوصيل"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "توصيل"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "إلغاء الاتصال"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "حول Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "تعمل شبكة Wi-Fi Direct على تفعيل أجهزة Wi-Fi للاتصال مباشرة والطباعة ومشاركة الملفات والمزامنة ومشاركة الشاشة بسهولة وراحة أكبر. ومن خلال الاتصال بالأجهزة التي تدعم شبكة Wi-Fi Direct، يمكن مشاركة المحتوى ومزامنة البيانات والتواصل مع الأصدقاء على المستوى الاجتماعي وتشغيل الألعاب والصوت ومقاطع الفيديو وغير ذلك المزيد باستخدام تطبيقات متعددة"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "الأجهزة المتصلة"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "الأجهزة المشغولة"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "متصل بجهاز آخر"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "جاري التوصيل"
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "في انتظار الاتصال"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "فشل الاتصال"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "اتصال متعدد"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "فصل الكل"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "فصل"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "لم يتم العثور على أجهزة"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "اتصال Wi-Fi مباشر"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "هل تريد إلغاء اتصال Wi-Fi Direct؟"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "لا توجد أجهزة"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "إيقاف"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "فشل إلغاء التنشيط"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "فشل التنشيط"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "سيتم قطع الاتصال الحالي. متابعة؟"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "الأجهزة المتاحة"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "يمكنك الاتصال بما يصل إلى %d أجهزة في نفس الوقت"
+
diff --git a/ug-wifidirect/po/az.po b/ug-wifidirect/po/az.po
new file mode 100644
index 0000000..b066340
--- /dev/null
+++ b/ug-wifidirect/po/az.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Qoşuldu"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "qoşulur"
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Bağlantı kəsilir"
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Qoşuldu"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Naməlum xəta"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-lər uyğun deyil!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Fəallaşdırılır..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d seçilmişdir"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Söndürülür..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Dəstəklənmir"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Axtarın"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct cihazları"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Qoşulmaq üçün vur"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Qoşul"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Bağlantını ləğv et"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct haqqında"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct Wi-Fi cihazlarının birbaşa qoşulma, çap etmə, fayl paylaşma, sinxronlaşma və ekran paylaşmasını daha sadə və rahat edir. Wi-Fi Direct dəstəkləyən cihazlara qoşulmaq müxtəlif proqramlardan istifadə edərək məzmunuzu paylaşmağı, məlumatlarınızı paylaşmağı, sosiallaşmağı, oyunlar oynamağı, audio, videolar və sairəyə imkan verir"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Qoşulmuş cihazlar"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Məşğul cihazlar"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Digər cihazlarla qoşulub"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "qoşulur"
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Bağlantını gözləyir"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Bağlantı alınmadı"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Çoxlu bağlantı"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Hamısı ilə əlaqəni kəs"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Bağlantını kəs"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Heç bir cihaz tapılmadı"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct bağlantısı"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi Direct bağlantısı ləğv edilsin?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Cihaz yoxdur"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Dayandır"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Söndürülmə alınmadı"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Fəallaşdırmaq mümkün olmadı"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Hazırkı bağlantı kəsiləcək. Davam edilsin?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Mümkün cihazlar"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Siz eyni zamanda maksimum %d cihaza qoşula bilərsiniz"
+
diff --git a/ug-wifidirect/po/bg.po b/ug-wifidirect/po/bg.po
new file mode 100644
index 0000000..3f8da15
--- /dev/null
+++ b/ug-wifidirect/po/bg.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Свързан"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Свързване..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Изключване..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Свързан"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Неизвестна грешка"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN кодовете не съвпадат!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Активиране..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d избрани"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Деактивиране..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Не се поддържа"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Сканиране"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Устройства за Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Чукнете, за да се свържете"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Свързване"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Отмяна на връзката"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "За Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct позволява на Wi-Fi устройства да се свързват директно, като прави печата, споделянето на файлове, синхронизирането и споделянето на екрани много по-просто и по-удобно. Свързването към устройства, които поддържат Wi-Fi Direct, позволява да споделяте съдържанието си, да синхронизирате данните си, да се социализирате с приятелите си, да играете игри, да възпроизвеждате аудио, видео и много други, с помощта на различни приложения."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Свързани устройства"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Заети устройства"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Свързано с друго устройство"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Свързване..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Изчакване на връзка"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Неуспешно свързване"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Мултивръзка"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Прекъсване на всички"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Изключване"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Не са намерени устройства"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Връзка Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Отмяна на връзка Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Няма устройства"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Стоп"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Деактивирането неуспешно"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Неуспешно активиране"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Текущата връзка ще бъде прекъсната. Продължаване?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Достъпни устройства"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Можете да свържете до %d устройства едновременно"
+
diff --git a/ug-wifidirect/po/ca.po b/ug-wifidirect/po/ca.po
new file mode 100644
index 0000000..0f236f9
--- /dev/null
+++ b/ug-wifidirect/po/ca.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Connectat"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Connectant..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Desconnectant..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Connectat"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Error desconegut"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Els PIN no coincideixen!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Activant..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d seleccionat"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Desactivant..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "No s'admet"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Escanejar"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Dispositius Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Toqui per connectar"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Connectar"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancel·lar connexió"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Sobre Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct permet als dispositius Wi-Fi connectar-se directament, fent que tasques com imprimir, compartir fitxers, sincronitzar i compartir pantalla siguin molt més senzilles i còmodes. Connectar a dispositius que admeten Wi-Fi Direct fa possible compartir contingut, sincronitzar dades, socialitzar amb amics, jugar a jocs, reproduir àudio i vídeo, etc. amb diverses aplicacions"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Dispositius connectats"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Dispositius ocupats"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Connectat a un altre dispositiu"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Connectant..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Esperant connexió"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Error en la connexió"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Connexió múltiple"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Desconnectar tot"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Desconnectar"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "No s'han trobat dispositius"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Connexió Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Cancel·lar connexió Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Sense dispositius"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Aturar"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Error en desactivar"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Activació fallida"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Es desconnectarà la connexió actual. Continuar?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dispositius disponibles"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Pot connectar fins a %d dispositius simultàniament"
+
diff --git a/ug-wifidirect/po/cs.po b/ug-wifidirect/po/cs.po
new file mode 100644
index 0000000..e52777c
--- /dev/null
+++ b/ug-wifidirect/po/cs.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Připojeno"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Připojování..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Odpojování..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Připojeno"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Neznámá chyba"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN kódy se neshodují!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktivace..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Vybráno %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deaktivace..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nepodporováno"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Načíst"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Zařízení Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Klepnutím připojte"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Připojit"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Zrušit připojení"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "O Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Standard Wi-Fi Direct umožňuje bezdrátovým zařízením mnohem jednodušeji a mnohem pohodlněji přímo se připojovat, tisknout, sdílet soubory, provádět synchronizaci a sdílet obraz na displeji. Když se připojíte k zařízením podporujícím standard Wi-Fi Direct, budete moci sdílet obsah, synchronizovat data, komunikovat s přáteli, hrát hry, přehrávat zvukové a obrazové záznamy a kromě toho používat různé aplikace."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Připojená zařízení"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Zaneprázdněná zařízení"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Připojeno k jinému zařízení"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Připojování..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Čekání na připojení"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Připojení se nezdařilo"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Vícenásobné připojení"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Odpojit vše"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Odpojit"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nebyla nalezena žádná zařízení"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Připojení Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Zrušit připojení Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Žádná zařízení"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deaktivace se nezdařila"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktivace se nezdařila"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Aktuální připojení bude odpojeno. Chcete pokračovat?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dostupná zařízení"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Současně se můžete připojit max. k %d zařízením"
+
diff --git a/ug-wifidirect/po/da.po b/ug-wifidirect/po/da.po
new file mode 100644
index 0000000..ec1fd70
--- /dev/null
+++ b/ug-wifidirect/po/da.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Forbundet"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Opretter forbindelse..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Afbryder..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Forbundet"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Ukendt fejl"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-koder stemmer ikke overens!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktiverer ..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d valgt"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deaktiverer..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Understøttes ikke"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Scanning"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct-enheder"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Rør for at tilslutte"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Forbind"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Annuller forbindelse"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Om Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct gør det muligt for Wi-Fi-enheder at tilslutte direkte og gøre udskrivning, fildeling, synkronisering og skærmdeling meget enklere og mere praktisk. Tilslutning til enheder, der understøtter Wi-Fi Direct, gør det muligt at dele dit indhold, synkronisere dine data, være social med venner, spille spil, lyd, video og mere ved hjælp af forskellige programmer"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Tilsluttede enheder"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Optagne enheder"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Sluttet til en anden enhed"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Opretter forbindelse..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Venter på forbindelse"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Kunne ikke tilslutte"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Multi-forbind"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Frakobl alle"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Afbryd"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Ingen enheder fundet"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct-forbindelse"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Annuller Wi-Fi Direct-forbindelse?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Ingen enheder"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deaktivering mislykkedes"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktivering mislykkedes"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Den aktuelle forbindelse vil blive afbrudt. Vil du fortsætte?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Tilgængelige enheder"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Du kan tilslutte op til %d enheder på samme tid"
+
diff --git a/ug-wifidirect/po/de_DE.po b/ug-wifidirect/po/de_DE.po
new file mode 100644
index 0000000..a90ef3a
--- /dev/null
+++ b/ug-wifidirect/po/de_DE.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Verbunden"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Verbindung wird hergestellt..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Verbindung wird getrennt..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Verbunden"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Unbekannter Fehler"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PINs stimmen nicht überein!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Wird aktiviert..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d ausgewählt"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Wird deaktiviert..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nicht unterstützt"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Suchen"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct-Geräte"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Zum Verbinden tippen"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Verbinden"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Verbindung abbrechen"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Info zu Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct ermöglicht es WLAN-Geräten eine direkte Verbindung herzustellen und sorgt dafür, dass Druckvorgänge, Datenaustausch, Synchronisierung und die gemeinsame Nutzung von Bildschirmen einfacher und bequemer durchgeführt werden können. Durch die Verbindungsherstellung zu Wi-Fi Direct unterstützenden Geräten können Inhalte freigegeben, Daten synchronisiert, Kontakt mit Freunden aufgenommen sowie Spiele, Audiodateien, Videos und vieles mehr mit zahlreichen Anwendungen genutzt werden."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Verbundene Geräte"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Bereits ausgelastete Geräte"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Mit anderem Gerät verbunden"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Verbindung wird hergestellt..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Warte auf Verbindung"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Verbindung nicht möglich"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Mehrfachverbindung"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Alle trennen"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Trennen"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Keine Geräte gefunden"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Wenn Wi-Fi Direct verwendet wird, wird die aktuelle WLAN-Verbindung getrennt. Fortfahren?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Wenn Wi-Fi Direct verwendet wird, wird das aktuelle WLAN-Tethering getrennt. Fortfahren?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct-Verbindung"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi Direct-Verbindung trennen?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Keine Geräte"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stopp"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deaktivierung fehlgeschlagen"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktivierung fehlgeschlagen"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Aktuelle Verbindung wird getrennt. Fortfahren?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Verfügbare Geräte"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Sie können bis zu %d Geräte gleichzeitig miteinander verbinden."
+
diff --git a/ug-wifidirect/po/el_GR.po b/ug-wifidirect/po/el_GR.po
new file mode 100644
index 0000000..be21a4f
--- /dev/null
+++ b/ug-wifidirect/po/el_GR.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Συνδέθηκε"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Σύνδεση..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Αποσύνδεση..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Συνδέθηκε"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Άγνωστο σφάλμα"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Τα PIN δεν συμφωνούν!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Ενεργοποίηση..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Επιλέχθηκαν %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Απενεργοποίηση.."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Δεν υποστηρίζεται"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Σάρωση"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Συσκευές Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Πατήστε για σύνδεση"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Σύνδεση"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Ακύρωση σύνδεσης"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Σχετικά με Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Το Wi-Fi Direct επιτρέπει στις συσκευές Wi-Fi να συνδέονται απευθείας, γεγονός που κάνει τη διαδικασία εκτύπωσης, κοινής χρήσης αρχείων, συγχρονισμού και κοινής χρήσης οθόνης πιο απλή και πιο εύχρηστη. Η σύνδεση σε συσκευές που υποστηρίζουν Wi-Fi Direct σας επιτρέπει να μοιράζεστε περιεχόμενο, να συγχρονίζετε τα δεδομένα σας, να συναναστρέφεστε με τους φίλους σας, να παίζετε παιχνίδια, να ακούτε μουσική, να παρακολουθείτε ταινίες κ.ά., χρησιμοποιώντας διάφορες εφαρμογές"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Συνδεδεμένες συσκευές"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Απασχολημένες συσκευές"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Έχει συνδεθεί με άλλη συσκευή"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Σύνδεση..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Αναμονή για σύνδεση"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Αποτυχία σύνδεσης"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Πολλαπλή σύνδεση"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Αποσύνδεση όλων"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Αποσύνδεση"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Δεν βρέθηκαν συσκευές"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Σύνδεση Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Ακύρωση της σύνδεσης Wi-Fi Direct;"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Καμία συσκευή"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Διακοπή"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Αποτυχία απενεργοποίησης"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Αποτυχία ενεργοποίησης"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Η τρέχουσα σύνδεση θα αποσυνδεθεί. Συνέχεια;"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Διαθέσιμες συσκευές"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Μπορείτε να συνδέσετε έως και %d συσκευές ταυτόχρονα"
+
diff --git a/ug-wifidirect/po/en.po b/ug-wifidirect/po/en.po
new file mode 100755
index 0000000..3cc4ea8
--- /dev/null
+++ b/ug-wifidirect/po/en.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Connected"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Connecting..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Disconnecting..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Connected"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Unknown error"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PINs don't match!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Activating..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d selected"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deactivating..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Not supported"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Scan"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct devices"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Tap to connect"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Connect"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancel connection"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI_DIRECT"
+msgstr "About Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct enables Wi-Fi devices to connect directly, making printing, file sharing, synchronising, and screen sharing much simpler and more convenient. Connecting to devices that support Wi-Fi Direct makes it possible to share your content, synchronise your data, socialise with friends, play games, audio, videos, and more, using various applications"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Connected devices"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Busy devices"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Connected with another device"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Connecting..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Waiting for connection"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Failed to connect"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Multi-connect"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Disconnect all"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Disconnect"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "No devices found"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct connection"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Cancel Wi-Fi Direct connection?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "No devices"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deactivation failed"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Activation failed"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Current connection will be disconnected. Continue?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Available devices"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "You can connect up to %d devices at the same time"
+
diff --git a/ug-wifidirect/po/en_PH.po b/ug-wifidirect/po/en_PH.po
new file mode 100644
index 0000000..1db0617
--- /dev/null
+++ b/ug-wifidirect/po/en_PH.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Connected"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Connecting..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Disconnecting..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Connected"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Unknown error"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PINs don't match!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Activating..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d selected"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deactivating..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Not supported"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Scan"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct devices"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Tap to connect"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Connect"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancel connection"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "About Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct enables Wi-Fi devices to connect directly, making printing, file sharing, synchronizing, and screen sharing much simpler and more convenient. Connecting to devices that support Wi-Fi Direct makes it possible to share your content, synchronize your data, socialize with friends, play games, audio, videos, and more, using various applications."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Connected devices"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Busy devices"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Connected with another device"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Connecting..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Waiting for connection"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Failed to connect"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Multi-connect"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Disconnect all"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Disconnect"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "No devices found"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct connection"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Cancel Wi-Fi Direct connection?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "No devices"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deactivation failed"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Activation failed"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Current connection will be disconnected. Continue?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Available devices"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "You can connect up to %d devices at the same time"
+
diff --git a/ug-wifidirect/po/en_US.po b/ug-wifidirect/po/en_US.po
new file mode 100644
index 0000000..1db0617
--- /dev/null
+++ b/ug-wifidirect/po/en_US.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Connected"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Connecting..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Disconnecting..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Connected"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Unknown error"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PINs don't match!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Activating..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d selected"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deactivating..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Not supported"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Scan"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct devices"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Tap to connect"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Connect"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancel connection"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "About Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct enables Wi-Fi devices to connect directly, making printing, file sharing, synchronizing, and screen sharing much simpler and more convenient. Connecting to devices that support Wi-Fi Direct makes it possible to share your content, synchronize your data, socialize with friends, play games, audio, videos, and more, using various applications."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Connected devices"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Busy devices"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Connected with another device"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Connecting..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Waiting for connection"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Failed to connect"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Multi-connect"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Disconnect all"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Disconnect"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "No devices found"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct connection"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Cancel Wi-Fi Direct connection?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "No devices"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deactivation failed"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Activation failed"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Current connection will be disconnected. Continue?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Available devices"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "You can connect up to %d devices at the same time"
+
diff --git a/ug-wifidirect/po/es_ES.po b/ug-wifidirect/po/es_ES.po
new file mode 100644
index 0000000..8ac7c2a
--- /dev/null
+++ b/ug-wifidirect/po/es_ES.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Conectado"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Conectando..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Desconectando..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Conectado"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Error desconocido"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Los códigos PIN no coinciden"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Activando..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d seleccionado"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Desactivando..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "No admitido"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Buscar"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Dispositivos Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Pulse para conectar"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Conectar"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancelar conexión"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Acerca de Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct permite que los dispositivos Wi-Fi se conecten directamente y facilita enormemente la impresión, el uso compartido de archivos y de pantallas. La conexión de dispositivos compatibles con Wi-Fi Direct permite compartir contenido, sincronizar datos, relacionarse con amigos, reproducir juegos, audio, vídeo y mucho más gracias al uso de distintas aplicaciones"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Dispositivos conectados"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Dispositivos ocupados"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Conectado con otro dispositivo"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Conectando..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Esperando conexión"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Error de conexión"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Conexión múltiple"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Desconectar todo"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Desconectar"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "No se han encontrado dispositivos"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Conexión Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "¿Cancelar conexión Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "No hay dispositivos"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Parar"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Error en desactivación"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Error al activar"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "La conexión actual finalizará. ¿Continuar?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dispositivos disponibles"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Puede conectar hasta %d dispositivos al mismo tiempo"
+
diff --git a/ug-wifidirect/po/es_US.po b/ug-wifidirect/po/es_US.po
new file mode 100644
index 0000000..e024219
--- /dev/null
+++ b/ug-wifidirect/po/es_US.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Conectado"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Conectando..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Desconectando..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Conectado"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Error desconocido"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Los PIN no coinciden"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Activando..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d seleccionado(s)"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Desactivando…"
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "No soportado"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Directo"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Buscar"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Dispositivos Wi-Fi Directo"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Pulse para conectar"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Conectar"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancelar conexión"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Acerca de Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Directo permite conectar directamente dispositivos Wi-Fi, lo que hace más simple y conveniente imprimir, compartir archivos, sincronizar datos y compartir en pantalla. La conexión con dispositivos que admiten Wi-Fi Directo hace que puedas compartir tus contenidos, sincronizar tus datos, socializar con amigos, jugar juegos, reproducir audio o videos, etc., mediante varias aplicaciones"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Dispositivos conectados"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Dispositivos ocupados"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Conectado con otro dispositivo"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Conectando..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Esperando conectarse"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Error de conexión"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Conexión múltiple"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Desconectar todo"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Desconectar"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "No se han encontrado dispositivos"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Al usar Wi-Fi Directo se desconectará la conexión Wi-Fi actual. ¿Continuar?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Al usar Wi-Fi Directo se desconectará la redirección de Wi-Fi actual. ¿Continuar?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Conexión Wi-Fi Directo"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "¿Desea cancelar la conexión de Wi-Fi Directo?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "No hay dispositivos"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Detener"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Error en desactivación"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Error al activar"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "La conexión actual se desconectará. ¿Continuar?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dispositivos disponibles"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Puedes conectar hasta %d dispositivos al mismo tiempo"
+
diff --git a/ug-wifidirect/po/et.po b/ug-wifidirect/po/et.po
new file mode 100644
index 0000000..50ff9cc
--- /dev/null
+++ b/ug-wifidirect/po/et.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Ühendatud"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Ühendamine..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Ühenduse katkestamine..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Ühendatud"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Tundmatu tõrge"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-koodid ei kattu!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktiveerimine..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d valitud"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Desaktiveerimine..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Tugi puudub"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Otsi"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct seadmed"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "puudutage ühendamiseks"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Ühenda"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Katkesta ühendus"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Directi teave"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct võimaldab Wi-Fi seadmetel otse ühenduda, muutes printimise, failijagamise, sünkroonimise ja ekraanijagamise palju lihtsamaks ning mugavamaks. Teenust Wi-Fi Direct toetavate seadmete ühendamine võimaldab teil mitmesuguste rakenduste abil jagada sisu, sünkroonida andmeid, suhelda sõpradega, mängida mänge, heli, videoid ja teha muudki"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Ühendatud seadmed"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Hõivatud seadmed"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Ühendatud teise seadmega"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Ühendamine..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Ühenduse ootamine"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Ühendamine nurjus"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Mitmikühendus"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Katkesta kõigi ühendus"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Katkesta ühendus"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Seadmeid ei leitud"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Directi ühendus"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Kas katkestada Wi-Fi Directi ühendus?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Seadmeid pole"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Lõpeta"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Desaktiveerimine nurjus"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktiveerimine nurjus"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Aktiivne ühendus katkestatakse. Kas jätkata?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Saadaolevad seadmed"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Korraga saate ühendada kuni %d seadet"
+
diff --git a/ug-wifidirect/po/eu.po b/ug-wifidirect/po/eu.po
new file mode 100644
index 0000000..4cb31ea
--- /dev/null
+++ b/ug-wifidirect/po/eu.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Konektatuta"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Konektatzen"
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Deskonektatzen"
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Konektatuta"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Errore ezezaguna"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PINak ez datoz bat!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktibatzen..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d aukeratuta"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Desaktibatzen..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Bateraezina"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Eskaneatzea"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct-en gailuak"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Ukitu konektatzeko"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Konektatu"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Utzi konexioa"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct-i buruz"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct funtzioak Wi-Fi gailuei zuzenean konektatzea ahalbidetzen die, hala, errazagoa eta erosoagoa izango da inprimatzea, fitxategiak partekatzea, sinkronizatzea eta pantailak partekatzea. Wi-Fi Direct onartzen duten gailuetara konektatzean posible izango zaizu zure edukia partekatzea, datuak sinkronizatzea, lagunekin sozializatzea, jokoetara jokatzea, audioa, bideoa eta bestelakoak erabiltzea, zenbait aplikazioren bidez"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Konektatutako gailuak"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Lanpetutako gailuak"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Beste gailua batekin konektatuta"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Konektatzen"
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Konexiora itxaroten"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Ezin izan da konektatu"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Konexio anitza"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Deskonektatu guztiak"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Deskonektatu"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Ez da gailurik aurkitu"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct konexioa"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Utzi Wi-Fi Direct konexioa?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Gailurik ez"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Gelditu"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Desaktibazioak huts egin du"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktibazioak huts egin du"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Uneko konexioa deskonektatu egingo da. Jarraitu?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Eskura dauden gailuak"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "%d gailu ere konekta ditzakezu aldi berean"
+
diff --git a/ug-wifidirect/po/fi.po b/ug-wifidirect/po/fi.po
new file mode 100644
index 0000000..7a9d955
--- /dev/null
+++ b/ug-wifidirect/po/fi.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Yhdistetty"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Yhdistetään..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Yhteyttä katkaistaan..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Yhdistetty"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Tuntematon virhe"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-koodit eivät täsmää!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktivoidaan..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d valittu"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Kytketään pois päältä..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Ei tuettu"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Hae"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct -laitteet"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Yhdistä napauttamalla"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Yhdistä"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Peruuta yhteys"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Directin tiedot"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct -toiminnon avulla Wi-Fi-laitteet voivat muodostaa suoria yhteyksiä, mikä tekee tulostamisesta, tiedostojen jakamisesta, synkronoinnista ja näytön jakamisesta entistä helpompaa ja mukavampaa. Muodostamalla yhteyden Wi-Fi Direct -toimintoa tukeviin laitteisiin voit jakaa sisältöä, synkronoida tietoja, pitää yhteyttä ystäviin, pelata pelejä, toistaa ääntä ja videoita sekä tehdä paljon muuta erilaisten sovellusten avulla"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Yhdistetyt laitteet"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Varatut laitteet"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Yhdistetty toiseen laitteeseen"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Yhdistetään..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Odotetaan yhteyttä"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Yhteyden muodostaminen epäonnistui"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Moniyhteys"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Katkaise kaikki"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Katkaise yhteys"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Laitteita ei löytynyt"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct -yhteys"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Peruutetaanko Wi-Fi Direct -yhteys?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Ei laitteita"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Lopeta"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Käytöstä poistaminen epäonnistui"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktivointi epäonnistui"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Nykyinen yhteys katkaistaan. Jatketaanko?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Käytettävissä olevat laitteet"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Voit muodostaa yhteyden samanaikaisesti enintään %d laitteeseen"
+
diff --git a/ug-wifidirect/po/fr_CA.po b/ug-wifidirect/po/fr_CA.po
new file mode 100644
index 0000000..efc6601
--- /dev/null
+++ b/ug-wifidirect/po/fr_CA.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Connecté"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Connexion ..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Déconnexion ..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Connecté"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Erreur inconnue"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Les NIP ne correspondent pas !"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "En cours d'activation ..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d sélectionnées"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Désactivation..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Non pris en charge"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Rechercher"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Périphériques Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Touchez pour vous connecter"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Connexion"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Annuler la connexion"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "À propos de Wifi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct active les périphériques Wifi pour se connecter directement, réaliser des impressions, partager des fichiers, synchroniser des données et partager des écrans de manière simple et pratique. La connexion aux périphériques qui prennent en charge Wi-Fi Direct permet de partager vos contenus, synchroniser vos données, communiquer avec vos amis, jouer à des jeux, écouter de la musique, visionner des vidéos, etc. via diverses applications."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Périphériques connectés"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Périphériques occupés"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Connecté à un autre périphérique"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Connexion ..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Connexion en cours"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Échec de la connexion"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Connexion multiple"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Tout déconnecter"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Déconnecter"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Aucun périphérique détecté"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "L'utilisation de Wifi Direct va interrompre la connexion Wifi actuelle. Continuer ?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "L'utilisation de Wifi Direct va désactiver le modem Wifi. Continuer ?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Connexion Wifi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Annuler la connexion Wi-Fi Direct ?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Aucun périphérique"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Arrêter"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Échec de la désactivation"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Échec de l'activation"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "La connexion actuelle sera déconnectée. Continuer ?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Appareils disponibles"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Vous pouvez vous connecter à %d périphériques maximum simultanément"
+
diff --git a/ug-wifidirect/po/fr_FR.po b/ug-wifidirect/po/fr_FR.po
new file mode 100644
index 0000000..cd35522
--- /dev/null
+++ b/ug-wifidirect/po/fr_FR.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Connecté"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Connexion..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Déconnexion..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Connecté"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Erreur inconnue"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Les codes PIN ne correspondent pas !"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Activation en cours..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d sélectionné(es)"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Désactivation..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Non pris en charge"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Analyser"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Périphériques Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Appuyez pour vous connecter"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Connexion"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Annuler la connexion"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "A propos Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct active les périphériques Wi-Fi pour se connecter directement, réaliser des impressions, partager des fichiers, synchroniser des données et partager des écrans de manière simple et pratique. La connexion aux périphériques qui prennent en charge Wi-Fi Direct permet de partager vos contenus, synchroniser vos données, communiquer avec vos amis, jouer à des jeux, écouter de la musique, visionner des vidéos, etc. via diverses applications"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Périphériques connectés"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Périphériques occupés"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Connecté à un autre périphérique"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Connexion..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Connexion en cours"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Echec de la connexion"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Connexion multiple"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Tout déconnecter"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Déconnecter"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Aucun périphérique détecté"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "L'utilisation de Wi-Fi Direct va interrompre la connexion Wi-Fi actuelle. Continuer ?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "L'utilisation de Wi-Fi Direct va désactiver le modem Wi-Fi. Continuer ?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Connexion Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Annuler la connexion Wi-Fi Direct ?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Aucun périphérique"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Arrêter"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Echec de la désactivation"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Echec de l'activation"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "La connexion actuelle sera déconnectée. Continuer ?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Appareils disponibles"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Vous pouvez vous connecter à %d périphériques maximum simultanément"
+
diff --git a/ug-wifidirect/po/ga.po b/ug-wifidirect/po/ga.po
new file mode 100644
index 0000000..ef5e103
--- /dev/null
+++ b/ug-wifidirect/po/ga.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Nasctha"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Ag nascadh..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Ag dínascadh..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Nasctha"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Earráid anaithnid"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Ní mheaitseálann na PIN!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Ag cur i ngníomh..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d roghnaithe"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Ag díghníomhachtú..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Gan tacú"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Scan"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Gléasanna Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Tapáil chun nascadh"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Nasc"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cuir nasc ar ceal"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Eolas faoi Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Cuireann Wi-Fi Direct ar chumas gléasanna Wi-Fi nascadh go díreach, rud a dhéanann priontáil. comhroinnt comhad, sioncronú agus comhroinnt scáileáin níos simplí áisiúla. Trí nascadh le gléasanna a bhfuil tacú iontu do Wi-Fi Direct, is féidir d'inneachar a chomhroinnt, do shonraí a shioncronú, teagmháil a dhéanamh le cairde, cluichí a imirt, ceol agus físeáin a sheinm, agus eile, trí fheidhmchláir éagsúla a úsáid"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Gléasanna nasctha"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Gléasanna gnóthacha"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Nasctha le gléas eile"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Ag nascadh..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Ag feitheamh le nasc"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Theip ar nascadh"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Ilnasc"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Dínasc gach rud"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Dínasc"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Níor aimsíodh gléas"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Nasc Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Cuir nasc Wi-Fi Direct ar ceal?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Níl gléasanna ann"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Theip ar dhíghníomhachtú"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Theip ar chur i ngníomh"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Dínascfar an nasc reatha. Ar aghaidh?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Gléasanna atá ar fáil"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Is féidir leat suas le %d gléas a nascadh ag an am céanna"
+
diff --git a/ug-wifidirect/po/gl.po b/ug-wifidirect/po/gl.po
new file mode 100644
index 0000000..263fd3d
--- /dev/null
+++ b/ug-wifidirect/po/gl.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Conectado"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Conectando..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Desconectando..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Conectado"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Erro descoñecido"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Os PIN non coinciden!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Activando..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d seleccionadas"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Desactivando..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Non admitido"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Buscar"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Dispositivos Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Toca para conectarte"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Conectar"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancelar conexión"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Acerca de Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct permite aos dispositivos Wi-Fi conectarse directamente, realizar impresións, compartir arquivos, sincronizar e compartir pantallas dun xeito moito máis simple e cómodo. A conexión con dispositivos compatibles con Wi-Fi Direct permite compartir o teu contido, sincronizar os teus datos, socializarte cos amigos, xogar a xogos, escoitar son, ver vídeos, etc., mediante varias aplicacións"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Dispositivos conectados"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Dispositivos ocupados"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Conectado con outro dispositivo"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Conectando..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Agardando conex. datos"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Non se puido establecer a conexión"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Multiconexión"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Desconectar todo"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Desconectar"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Non se atoparon dispositivos"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Conexión Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Desexas cancelar a conexión Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Non hai dispositivos"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Deter"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Erro na desactivación"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Fallo na activación"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "A conexión actual desconectarase. Continuar?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dispositivos dispoñibles"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Podes conectar ata %d dispositivos á vez"
+
diff --git a/ug-wifidirect/po/hi.po b/ug-wifidirect/po/hi.po
new file mode 100644
index 0000000..7e15cee
--- /dev/null
+++ b/ug-wifidirect/po/hi.po
@@ -0,0 +1,118 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "जोड़ा गया"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "जोड़ा जा रहा है…"
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "डिस्कनेक्ट हो रहा है..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "जोड़ा गया"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "अज्ञात त्रुटि"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN मेल नही खाता!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "सक्रिय हो रहा है…"
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d चयनित"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "निष्क्रिय हो रहा है…"
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "असमर्थित"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi डायरेक्ट"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "स्‍कैन"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "वाई-फाई डायरेक्ट डिवाइसें"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "कनेक्ट करने के लिए टैप करें"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "जोड़ें"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "कनेक्शन रद्द करें"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi डायरेक्ट के बारे में"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi डायरेक्ट Wi-Fi डिवाइसेस को सीधे कनेक्ट करना सक्षम करता है, जिस से प्रिंट करना, फ़ाइल साझाकरण, सिंक्रोनाइज करना, और स्‍क्रीन साझाकरण बहुत आसान और अधिक सुविधाजनक बन जाता है। Wi-Fi डायरेक्ट को समर्थित करने वाले डिवाइसेस के साथ कनेक्ट करने से विभिन्न एप्लीकेशंस का उपयोग करते हुए, आपकी सामग्री साझा करना, आपका डेटा सिंक्रोनाइज करना, मित्रों के साथ सोशलाइज़ करना, गेम्स प्ले करने, ऑडियो, वीडियोज़, और बहुत कुछ संभव हो जाता है"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "कनेक्ट किए गए डिवाइसेस"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "व्यस्त डिवाइसेस"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "अन्‍य डिवाइस के साथ कनेक्ट किया गया"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "जोड़ा जा रहा है…"
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "कनेक्शन के लिए प्रतीक्षारत"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "कनेक्ट करने में असफल"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "मल्टी-कनेक्ट"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "सभी डिस्कनेक्ट करें"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "डिसकनेक्ट"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "कोई साधन नहीं मिला"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi डायरेक्ट कनेक्‍शन"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi डायरेक्ट कनेक्‍शन रद्द करें?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "डिवाइस नहीं"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "रोकें"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "निष्क्रियता विफल"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "सक्रियण विफल"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "वर्तमान कनेक्शन डिस्कनेक्ट किया जाएगा। जारी रखें?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "उपलब्ध डिवाइसें"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "आप एक ही समय में %d डिवाइसेस तक कनेक्ट कर सकते है"
+
+
diff --git a/ug-wifidirect/po/hr.po b/ug-wifidirect/po/hr.po
new file mode 100644
index 0000000..349984d
--- /dev/null
+++ b/ug-wifidirect/po/hr.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Spojeno"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Spajanje..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Odspajanje..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Spojeno"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Nepoznata greška"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-ovi se ne podudarajui!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Uključivanje..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d odabrano"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Isključivanje..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nepodržan"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Skeniraj"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Uređaji za Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Dotaknite za spajanje"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Spoji"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Prekini vezu"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "O Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct omogućuje da se Wi-Fi uređaji direktno spajaju, čime se izuzetno olakšava i pojednostavljuje ispis, dijeljenje datoteka, sinkroniziranje i dijeljenje zaslona. Spajanje s uređajima koji podržavaju Wi-Fi Direct omogućuje vam dijeljenje sadržaja, sinkroniziranje podataka, druženje s prijateljima, igranje igara, reproduciranje audia i videa te još mnogo toga pomoću raznih aplikacija"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Spojeni uređaji"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Zauzeti uređaji"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Spojen na drugi uređaj"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Spajanje..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Čekanje veze"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Greška spajanja"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "multi spajanje"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Prekini sve"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Prekini vezu"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nisu pronađeni uređaji"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct veza"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Poništiti Wi-Fi Direct vezu?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nema uređaja"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Zaustavi"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Isključivanje neuspješno"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktivacija nije uspjela"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Aktivna veza će se prekinuti. Nastaviti?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dostupni uređaji"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "U svakom trenutku možete spojiti najviše %d uređaja"
+
diff --git a/ug-wifidirect/po/hu.po b/ug-wifidirect/po/hu.po
new file mode 100644
index 0000000..b5069e4
--- /dev/null
+++ b/ug-wifidirect/po/hu.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Csatlakoztatva"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Kapcsolódás..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Szétkapcsolás..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Csatlakoztatva"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Ismeretlen hiba"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "A PIN kódok nem egyeznek!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktiválás..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d kiválasztva"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deaktiválás..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nem támogatott"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Keresés"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct-eszközök"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Érintse meg a kapcsolódáshoz"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Kapcsolódik"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Kapcsolat megszakítása"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "A Wi-Fi Directről"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "A Wi-Fi Direct lehetővé teszi a Wi-Fi eszközök közvetlen csatlakoztatását, így jóval egyszerűbbé és kényelmesebbé válik a nyomtatás, fájlmegosztás, szinkronizálás és képernyőmegosztás. Wi-Fi Directet támogató eszközökhöz kapcsolódva tartalmat oszthat meg, adatokat szinkronizálhat, közösségi életet élhet ismerőseivel, játszhat, hangot, videót és egyebeket játszhat le, és különféle alkalmazásokat használhat"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Csatlakoztatott eszközök"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Foglalt eszközök"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Másik eszközhöz csatlakozik"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Kapcsolódás..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Várakozás kapcsolatra"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Nem sikerült kapcsolódni"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Többszörös kapcsolat"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Összes szétkapcsolása"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Szétkapcsolás"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nem található eszköz"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct-kapcsolat"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Megszakítja a Wi-Fi Direct-kapcsolatot?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nincs eszköz"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Leállít"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Sikertelen deaktiválás"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Nem sikerült aktiválni"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "A jelenlegi kapcsolat megszakad. Folytatja a műveletet?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Elérhető eszközök"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Egyszerre legfeljebb %d eszközt csatlakoztathat"
+
diff --git a/ug-wifidirect/po/hy.po b/ug-wifidirect/po/hy.po
new file mode 100644
index 0000000..657d3c6
--- /dev/null
+++ b/ug-wifidirect/po/hy.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Միացված է"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Միացում..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Անջատվում է..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Միացված է"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Անորոշ սխալ"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-ը չի համընկնում։"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Ակտիվացվում է..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d ընտրվել է"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Ապաակտիվացում..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Չի սատարվում"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Զննել"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct սարքեր"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Թակել միանալու համար"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Միացնել"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Դադարեցնել միացումը"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct-ի մասին"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct-ը Wi-Fi սարքերին ընձեռում է ուղղակիորեն միանալու հնարավորություն՝ տպելը, ֆայլեր համօգտագործելը, համաժամացնելը և էկրանը համօգտագործելը դարձնելով շատ ավելի հեշտ ու հարմարավետ: Wi-Fi Direct-ի աշխատանքն ապահովող սարքերին միանալը հնարավոր է դարձնում համօգտագործել Ձեր բովանդակությունը, համաժամացնել տվյալները, շփվել ընկերների հետ, խաղեր խաղալ, ձայնանյութեր ու տեսանյութեր նվագարկել և ավելին՝ օգտագործելով զանազան ծրագրեր"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Միացված սարքեր"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Զբաղված սարքեր"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Միացված է այլ սարքի հետ"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Միացում..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Սպասում է միացման"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Չհաջողվեց միանալ"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Բազմակի միացում"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Անջատել բոլորը"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Անջատել"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Սարքեր չեն գտնվել"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct-ի միացում"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Դադարեցնե՞լ Wi-Fi Direct-ի միացումը:"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Սարքեր չկան"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Կանգնել"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Ապաակտիվացումը ձախողվեց"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Ակտիվացումը ձախողվեց"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Ընթացիկ կապակցումը կդադարեցվի։ Շարունակե՞լ"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Մատչելի սարքեր"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Կարող եք միաժամանակ միացնել մինչև %d սարք"
+
diff --git a/ug-wifidirect/po/is.po b/ug-wifidirect/po/is.po
new file mode 100644
index 0000000..ec86b97
--- /dev/null
+++ b/ug-wifidirect/po/is.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Tengt"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Verið er að tengjast..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Verið er að aftengja..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Tengt"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Óþekkt villa"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-númerin passa ekki saman!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Ræsi..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d valið"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Slekk..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Óstutt"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Skanna"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct tæki"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Pikkaðu til að tengja"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Tengja"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Hætta við tengingu"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Um Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct gerir tækjum með Wi-Fi kleift að tengjast beint sín á milli, sem gerir prentun, samnýtingu skráa, samstillingu og skjásamnýtingu einfaldari og þægilegri. Með tengingu við tæki sem styðja Wi-Fi Direct geturðu deilt efninu þínu, samstillt gögn, blandað geði við vini, spilað leiki, myndskeið og tónlist og margt fleira, með ýmsum forritum"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Tengd tæki"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Upptekin tæki"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Tengt við annað tæki"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Verið er að tengjast..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Bíður eftir tengingu"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Mistókst að tengjast"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Fjöltenging"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Aftengja allt"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Aftengja"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Engin tæki fundust"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct tenging"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Hætta við Wi-Fi Direct tengingu?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Engin tæki"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stöðva"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Mistókst að slökkva"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Ekki tókst að gera virkt"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Tengingu við netkerfið verður slitið. Viltu halda áfram?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Tiltæk tæki"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Hægt er að tengjast allt að %d tækjum samtímis"
+
diff --git a/ug-wifidirect/po/it_IT.po b/ug-wifidirect/po/it_IT.po
new file mode 100644
index 0000000..5687423
--- /dev/null
+++ b/ug-wifidirect/po/it_IT.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Connesso"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Connessione..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Disconnessione..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Collegato"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Errore sconosciuto"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "I PIN non corrisponde!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Attivazione..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d selezionate"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Disattivazione..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Non supportato"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Scansione"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Dispositivi Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Toccare per connettersi"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Connetti"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Annulla connessione"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Info su Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct consente ai dispositivi Wi-Fi di collegarsi direttamente rendendo più semplici e comode le operazioni di stampa, condivisione file, sincronizzazione e condivisione schermo. Connettendosi ai dispositivi che supportano Wi-Fi Direct, potete condividere i contenuti, sincronizzare i dati, comunicare con gli amici, giocare, riprodurre file audio, video e altro ancora utilizzando diverse applicazioni"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Dispositivi connessi"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Dispositivi occupati"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Connessi con altro dispositivo"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Connessione..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "In attesa di conness."
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Connessione non riuscita"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Connessione multipla"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Disconnetti tutto"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Disconnetti"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nessun dispositivo trovato"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Attivando Wi-Fi Direct, la connessione Wi-Fi corrente verrà interrotta. Continuare?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Attivando Wi-Fi Direct, il tethering Wi-Fi corrente verrà interrotto. Continuare?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Connessione Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Annullare connessione Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nessun dispositivo"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Ferma"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Disattivazione non eseguita"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Attivazione non riuscita"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "La connessione corrente sarà disconnessa. Continuare?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dispositivi disponibili"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Potete connettere un massimo di %d dispositivi contemporaneamente"
+
diff --git a/ug-wifidirect/po/ja_JP.po b/ug-wifidirect/po/ja_JP.po
new file mode 100644
index 0000000..f323d6b
--- /dev/null
+++ b/ug-wifidirect/po/ja_JP.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "接続しました。"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "接続中..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "切断中..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "接続しました。"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "不明なエラーです。"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PINが​一致​しません!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "起動中..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d件​選択"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "解除​中..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "サポート​されて​いません。"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "スキャン"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Directデバイス"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "タップ​して​接続"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "接続"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "接続をキャンセル"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct​に​ついて"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi ​Directは、​より​簡単​で​便利​に​Wi-Fi​デバイス​の​直接​接続、​印刷、​ファイル​共有、​同期、​画面​共有​が​できる​よう​に​します。​Wi-Fi ​Direct​に​対応​した​デバイス​に​接続​する​と、​コンテンツ​の​共有、​データ​の​同期、​友達​と​の​交流​や​ゲーム、​音楽、​動画​の​再生​等​を​様々​な​アプリ​ケーション​で​利用​でき​ます。"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "接続デバイス"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "アクセスできないデバイス"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "他のデバイスと接続されています。"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "接続中..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "接続​待機​中"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "接続​に​失敗​しました。"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "複数​接続"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "全て​切断"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "切断"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "デバイスが​見つかりません。"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct接続"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi Direct接続をキャンセルしますか?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "デバイス​が​あり​ません。"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "停止"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "無効に​失敗​しました"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "起動に失敗しました。"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "現在の​接続​は切断​されます。​続行しますか?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "接続可能なデバイス"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "同時に%d台までデバイスを接続できます。"
+
diff --git a/ug-wifidirect/po/ka.po b/ug-wifidirect/po/ka.po
new file mode 100644
index 0000000..2d1a45a
--- /dev/null
+++ b/ug-wifidirect/po/ka.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "დაკავშირებულია"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "უკავშირდება..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "გამორთვა..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "დაკავშირებულია"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "უცნობი შეცდომა"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN–ები არ თანხვდება!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "აქტიურდება..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d არჩეულია"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "გამორთვა..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "გაუთვალისწინებელი"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "სკანირება"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct მოწყობილობები"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "დააკაკუნეთ, რომ დაუკავშირდეთ"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "კავშირი"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "დაკავშირების გაუქმება"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct-ის შესახებ"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct ააქტიურებს Wi-Fi მოწყობილობებს, პირდაპირ დასაკავშირებლად, ამოსაბეჭდად, ფაილის გასაზიარებლად, სინქრონიზაციისთვის და ეკრანის გასაზიარებლად, გაცილებით მარტივად და უფრო მოხერხებულად. ისეთ მოწყობილობებთან დაკავშირება, რომლებშიც მუშაობს Wi-Fi Direct, გაძლევთ შესაძლებლობას გააზიაროთ მასალა, დაასინქრონოთ მონაცემები, დაამყაროთ ურთიერთობა მეგობრებთან, ითამაშოთ, ჩართოთ აუდიო, ვიდეო და ა.შ., სხვადასხვა პროგრამების გამოყენებით."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "დაკავშირებული მოწყობილობები"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "დაკავებული აპარატები"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "დაკავშირებულია სხვა აპარატთან"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "უკავშირდება..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "დაკავშირების ლოდინი"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "ვერ დაკავშირდა"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "მრავალი კავშირი"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "ყველა კავშირის გათიშვა"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "გათიშვა"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "მოწყობილობები ვერ მოიძებნა"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct კავშირი"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "შეწყდეს Wi-Fi Direct კავშირი?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "მოწყობილობები არ არის"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "შეჩერება"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "დეაქტივაცია ვერ შესრულდა"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "ვერ გააქტიურდა"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "მიმდინარე კავშირი გამოირთვება. განაგრძობთ?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "მისაწვდომი მოწყობილობები"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "შეგიძლიათ ერთდროულად დაუკავშირდეთ %d-მდე მოწყობილობას"
+
diff --git a/ug-wifidirect/po/kk.po b/ug-wifidirect/po/kk.po
new file mode 100644
index 0000000..96fab04
--- /dev/null
+++ b/ug-wifidirect/po/kk.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Қосылды"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Қосылуда..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Ажырату"
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Қосылды"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Белгісіз қате"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN кодтары сәйкес келмейді!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Қосу..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d таңдалды"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Өшірілуде.."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Ұстамайды"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Қарап шығу"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct құрылғылары"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Қосылу үшін түртіңіз"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Қосылу"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Байланыстан бас тарту"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct туралы"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct қызметі басып шығара, файлдарды бөлісе, синхрондай және экранды аса қарапайым әрі қолайлы бөлісе отырып, Wi-Fi құрылғыларына тікелей қосылуға мүмкіндік береді. Wi-Fi Direct қызметіне қолдау көрсететін құрылғыларға қосылу әр түрлі бағдарламалар арқылы мазмұнды бөлуісуге, деректерді синхрондауға, достармен араласуға, ойындар, дыбыс, бейне ойнатуға және т.б. әрекеттерге мүмкіндік береді"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Қосылған құрылғылар"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Бос емес құрылғылар"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Басқа құрылғымен қосылды"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Қосылуда..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Байланыс күтілуде"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Қосылмады"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Бірнеше байланыс"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Барлығын ажырату"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Ажырату"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Құрылғылар табылмады"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct байланысы"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi Direct байланысынан бас тарту керек пе?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Құрылғылар жоқ"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Тоқтату"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Сөндірілген жоқ"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Активтендіру сәтсіз"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Ағымдағы байланыс ажыратылады. Жалғастыру керек пе?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Қол жетімді құрылғылар"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Бір уақытта %d құрылғыға дейін қосуға болады"
+
diff --git a/ug-wifidirect/po/ko_KR.po b/ug-wifidirect/po/ko_KR.po
new file mode 100644
index 0000000..6b37513
--- /dev/null
+++ b/ug-wifidirect/po/ko_KR.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "연결되었습니다"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "연결 중..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "연결을 끊는 중..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "연결되었습니다"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "알 수 없는 오류가 발생하였습니다"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN이 일치하지 않습니다"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "실행 중..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d개 선택"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "해제 중..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "사용할 수 없습니다"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "검색"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct 기기"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "연결하려면 누르세요"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "연결"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "연결 취소"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct 정보"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct는 Wi-Fi 기기에 직접 연결하여 더욱 간단하고 편리하게 인쇄, 파일 공유, 동기화, 화면 공유를 할 수 있게 해줍니다. Wi-Fi Direct를 지원하는 기기에 연결하면 컨텐츠 공유, 데이터 동기화, 친구와 친목 도모, 게임하기, 오디오, 동영상 등 다양한 애플리케이션을 이용할 수 있습니다."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "연결된 기기"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "사용 중인 기기"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "다른 기기 연결됨"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "연결 중..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "연결 대기 중"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "연결에 실패하였습니다"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "다중 연결"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "모든 연결 끊기"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "연결 해제"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "검색된 기기가 없습니다"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Wi-Fi Direct를 사용하면 현재 사용 중인 Wi-Fi 연결이 끊어집니다. 계속하시겠습니까?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Wi-Fi Direct를 사용하면 현재 사용 중인 Wi-Fi 테더링이 연결 해제됩니다. 계속하시겠습니까?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct 연결"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi Direct 연결을 취소할까요?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "기기 목록이 없습니다"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "중지"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "연결을 끊지 못하였습니다"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "실행하지 못하였습니다"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "사용 중인 네트워크 연결이 끊어집니다. 계속할까요?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "사용할 수 있는 기기"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "동시에 %d개의 기기까지 연결할 수 있습니다"
+
diff --git a/ug-wifidirect/po/lt.po b/ug-wifidirect/po/lt.po
new file mode 100644
index 0000000..c164fc2
--- /dev/null
+++ b/ug-wifidirect/po/lt.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Prisijungta"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Jungiamasi..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Atjungiama..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Prisijungta"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Nežinoma klaida"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN kodai nesutampa!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktyvinama..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Pasirinkta: %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Išjungiama..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nepalaikoma"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "„Wi-Fi Direct“"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Skenuoti"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "„Wi-Fi Direct“ įrenginiai"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Spustelėkite, kad prisijungtumėte"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Jungtis"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Atšaukti ryšį"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Apie „Wi-Fi Direct“"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Veikiant „Wi-Fi Direct“, „Wi-Fi“ įrenginiai prijungiami tiesiogiai – galėsite spausdinti, sinchronizuoti, bendrinti failus ir ekraną daug paprasčiau ir patogiau. Prisijungę prie įrenginių, palaikančių „Wi-Fi Direct“, galėsite bendrinti turinį, sinchronizuoti duomenis, bendrauti su draugais, žaisti žaidimus, mėgautis vaizdo ir garso įrašais ir dar daugiau, naudodamiesi įvairiomis programomis."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Prijungti įrenginiai"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Užimti įrenginiai"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Prijungta prie kito įrenginio"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Jungiamasi..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Laukiama prisijungimo"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Nepavyko sujungti"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Kelių įreng. prijungim."
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Atjungti visus"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Atjungti"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Įrenginių nerasta"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "„Wi-Fi Direct“ ryšys"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Atšaukti „Wi-Fi Direct“ ryšį?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nėra įrenginių"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stabdyti"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Išjungti nepavyko"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktyvinti nepavyko"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Dabartinis ryšys bus išjungtas. Tęsti?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Galimi įrenginiai"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Vienu metu galite prijungti iki %d įrenginių"
+
diff --git a/ug-wifidirect/po/lv.po b/ug-wifidirect/po/lv.po
new file mode 100644
index 0000000..4857435
--- /dev/null
+++ b/ug-wifidirect/po/lv.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Savienots"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Savieno..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Atvieno..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Savienots"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Nezināma kļūda"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN kods neatbilst!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktivizē..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d izvēlētas"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deaktivizē..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nav nodrošināts"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Meklēt"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct ierīces"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Pieskarieties, lai izveidotu savienojumu"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Savienot"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Atcelt savienojumu"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Par Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct ļauj daudz ērtāk un vienkāršāk Wi-Fi ierīcēm izveidot tiešu savienojumu, drukāt, kopīgot failus, sinhronizēt un koplietot ekrānu. Izveidojot savienojumu ar ierīcēm, kas atbalsta Wi-Fi Direct, un izmantojot dažādas programmas, var kopīgot saturu, sinhronizēt datus, sazināties ar draugiem, spēlēt spēles, atskaņot audio un video failus, kā arī veikt citas darbības"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Pievienotās ierīces"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Aizņemtās ierīces"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Izveidots savien. ar citu ierīci"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Savieno..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Gaida savienojumu"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Neizdevās izveidot savienojumu"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Vairāki savienojumi"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Atvienot visu"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Atvienot"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nav atrasta neviena ierīce"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct savienojums"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Vai atcelt Wi-Fi Direct savienojumu?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nav ierīču"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Apturēt"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deaktivizēšana neizdevās"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktivizēšana neizdevās"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Pašreizējais savienojums tiks pārtraukts. Vai turpināt?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Pieejamās ierīces"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Vienlaikus varat izveidot savienojumu ar %d ierīcēm"
+
diff --git a/ug-wifidirect/po/mk.po b/ug-wifidirect/po/mk.po
new file mode 100644
index 0000000..ee30da6
--- /dev/null
+++ b/ug-wifidirect/po/mk.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Поврзано"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Поврзување..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Врската се прекинува..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Поврзано"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Непозната грешка"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-овите не се совпаѓаат!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Се активира..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Избрани се %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Се исклучува..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Не е поддржано"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Скенирај"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Уреди за Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Допрете за поврзување"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Поврзи"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Откажи поврзување"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "За Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct овозможува уреди Wi-Fi да се поврзуваат директно, со што печатењето, делењето фајлови, синхронизирањето и делењето екран е многу поедноставно и позгодно. Поврзувањето со уреди што поддржуваат Wi-Fi Direct овозможува да се делат вашите содржини, да ги синхронизирате податоците, да се дружите со пријатели, да играте игри, аудиа и видеа и многу повеќе, со помош на разни апликации"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Поврзани уреди"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Зафатени уреди"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Поврзани со друг уред"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Поврзување..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Се чека поврзување"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Не можеше да се поврзе"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Мулти-поврзување"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Прекини ги сите"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Прекини врска"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Нема уред"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Поврзување Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Да се откаже поврзување Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Нема уреди"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Запри"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Исклучувањето беше неуспешно"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Неуспешно активирање"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Моменталната врска ќе се прекине. Сепак продолжи?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Достапни уреди"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Може да се поврзете со најмногу %d уреди истовремено"
+
diff --git a/ug-wifidirect/po/nb.po b/ug-wifidirect/po/nb.po
new file mode 100644
index 0000000..b544e86
--- /dev/null
+++ b/ug-wifidirect/po/nb.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Tilkoblet"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Kobler til..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Kobler fra..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Tilkoblet"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Ukjent feil"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-kodene samsvarer ikke!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktiverer..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d valgt"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deaktiverer..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Støttes ikke"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Skann"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct-enheter"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Trykk for å koble til"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Koble til"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Avbryt tilkobling"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Om Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct gjør at Wi-Fi-enheter kan koble seg til direkte og gjør utskrift, fildeling, synkronisering og skjermdeling mye enklere og mer praktisk. Tilkobling til enheter som støtter Wi-Fi Direct gjør det mulig å dele innholdet ditt, synkronisere dataene dine, sosialisere med venner, spille spill, lyd, videoer og mye mer med forskjellige programmer"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Tilkoblede enheter"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Opptatte enheter"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Koblet til en annen enhet"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Kobler til..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Venter på tilkobling"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Kunne ikke koble til"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Koble til flere"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Koble fra alle"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Koble fra"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Ingen enheter funnet"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct-tilkobling"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Avbryte Wi-Fi Direct-tilkobling?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Ingen enheter"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stopp"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deaktivering mislyktes"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Feil under aktivering"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Aktuell tilkobling vil bli frakoblet. Fortsette?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Tilgjengelige enheter"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Du kan koble til opptil %d enheter samtidig"
+
diff --git a/ug-wifidirect/po/nl_NL.po b/ug-wifidirect/po/nl_NL.po
new file mode 100644
index 0000000..1e7f141
--- /dev/null
+++ b/ug-wifidirect/po/nl_NL.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Verbonden"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Verbinden..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Verbinding verbreken..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Verbonden"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Onbekende fout"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN's komen niet overeen!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Inschakelen..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d geselecteerd"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Uitschakelen..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Niet ondersteund"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Scannen"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct-apparaten"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Tik voor verbinding"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Verbinden"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Verbinding annuleren"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Over Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct zorgt dat Wi-Fi-apparaten rechtstreeks kunnen worden verbonden, zodat afdrukken, bestanden delen, synchroniseren en het delen van schermen veel eenvoudiger en handiger verlopen. Als u apparaten verbindt die Wi-Fi Direct ondersteunen, kunt u via diverse applicaties inhoud delen, gegevens synchroniseren, contacten met vrienden onderhouden, gamen, en genieten van onder andere audio en video."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Verbonden apparaten"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Bezette apparaten"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Verbonden met ander apparaat"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Verbinden..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Wachten op verbinding"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Kan geen verbinding maken"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Meerdere verbindingen"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Alle verbreken"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Verb.verbr"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Geen apparaten gevonden"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct-verbinding"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi Direct-verbinding annuleren?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Geen apparaten"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stoppen"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Uitschakelen mislukt"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Kan niet inschakelen..."
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Huidige verbinding wordt verbroken. Doorgaan?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Beschikbare apparaten"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "U kunt maximaal %d apparaten tegelijk verbinden"
+
diff --git a/ug-wifidirect/po/pl.po b/ug-wifidirect/po/pl.po
new file mode 100644
index 0000000..93d2146
--- /dev/null
+++ b/ug-wifidirect/po/pl.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Połączono"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Łączenie..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Rozłączanie..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Połączono"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Nieznany błąd"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Niezgodne kody PIN!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Włączanie..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Wybrano %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Wyłączanie..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nieobsługiwane"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Skanuj"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Urządzenia Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Dotknij, aby połączyć"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Połącz"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Anuluj połączenie"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "O Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct pozwala na bezpośrednie łączenie z innymi urządzeniami Wi-Fi, np. drukowanie, przesyłanie plików, synchronizację, jest znacznie szybsze i prostsze. Podłączenie do urządzenia z Wi-Fi Direct umożliwia wymianę kontentu, synchronizację danych, granie w gry, odtwarzanie muzyki i wideo i wiele więcej"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Podłączone urządzenia"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Zajęte urządzenia"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Połączone z innym urządzeniem"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Łączenie..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Oczekiwanie na połącz."
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Nie można połączyć"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Wiele połączeń"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Rozłącz wszystkie"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Rozłącz"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nie znaleziono żadnych urządzeń"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Połączenie Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Anulować połączenie Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Brak urządzeń"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Błąd wyłączania"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Nie można włączyć..."
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Bieżące połączenie zostanie rozłączone. Kontynuować?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dostępne urządzenia"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Urządzeń, z którymi można połączyć jednocześnie: %d"
+
diff --git a/ug-wifidirect/po/pt_BR.po b/ug-wifidirect/po/pt_BR.po
new file mode 100644
index 0000000..413251a
--- /dev/null
+++ b/ug-wifidirect/po/pt_BR.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Conectado"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Conectando..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Desconectando..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Conectado"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Erro desconhecido"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Os PINs não correspondem"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Ativando…"
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d selecionada"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Desativando…"
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Não suportado"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Pesquisar"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Dispositivos Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Tocar para conectar"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Conectar"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancelar conexão"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Sobre Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "O Wi-Fi Direct permite que dispositivos Wi-Fi se conectem diretamente, tornando a impressão, o compartilhamento de arquivos, a sincronização e o compartilhamento de telas muito mais simples e convenientes. Conectar a dispositivos compatíveis com Wi-Fi Direct torna possível compartilhar seu conteúdo, sincronizar dados, socializar com amigos, jogar, ouvir música, assistir vídeos e muito mais usando vários aplicativos"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Dispositivos conectados"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Dispositivos ocupados"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Conectado a outro dispositivo"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Conectando..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Aguardando pela conexão"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Falha ao conectar"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Conexão múltipla"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Desconectar tudo"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Desativar"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nenhum dispositivo encontrado"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Conexão Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Cancelar conexão Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nenhum dispositivo"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Parar"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Desativação falhou"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Falha na ativação"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "A conexão atual será desconectada. Continuar?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dispositivos disponíveis"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Você pode conectar até %d dispositivos ao mesmo tempo"
+
diff --git a/ug-wifidirect/po/pt_PT.po b/ug-wifidirect/po/pt_PT.po
new file mode 100644
index 0000000..9e96047
--- /dev/null
+++ b/ug-wifidirect/po/pt_PT.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Ligado"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "A ligar..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "A desligar..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Ligado"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Erro desconhecido"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Os PIN não correspondem!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "A activar..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d seleccionada"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "A desactivar..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Não suportado"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Pesquisar"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Dispositivos Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Tocar para ligar"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Ligar"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Cancelar ligação"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Sobre o Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "O Wi-Fi Direct permite a ligação directa dos dispositivos Wi-Fi, tornando a impressão, a partilha de ficheiros, a sincronização e a partilha de ecrã muito mais simples e cómodas. A ligação a dispositivos que suportam o Wi-Fi Direct torna possível a partilha dos seus conteúdos, a sincronização dos seus dados, a socialização com amigos, os jogos, áudio, vídeo e muito mais, utilizando várias aplicações"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Dispositivos ligados"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Dispositivos ocupados"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Ligado a outro dispositivo"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "A ligar..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "A aguardar ligação"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Falha ao ligar"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Ligações múltiplas"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Desligar tudo"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Desligar"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nenhuns dispositivos encontrados"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Ligação Wi-Fi direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Cancelar ligação Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nenhuns dispositivos"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Parar"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Desactivação falhou"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Falha na activação"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "A ligação actual será desligada. Continuar?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dispositivos disponíveis"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Pode ligar até %d dispositivos em simultâneo"
+
diff --git a/ug-wifidirect/po/ro.po b/ug-wifidirect/po/ro.po
new file mode 100644
index 0000000..8edb030
--- /dev/null
+++ b/ug-wifidirect/po/ro.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Conectat"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Conectare"
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Deconectare"
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Conectat"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Eroare necunoscută"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Codurile PIN nu se potrivesc!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Se activează..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d selectate"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Dezactivare..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Neacceptat"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Căutare"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Dispozitive cu Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Apăsaţi pentru conectare"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Conectare"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Revocare conexiune"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Despre Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct permite conectarea directă a dispozitivelor Wi-Fi, ceea ce face ca imprimarea, partajarea fişierelor, sincronizarea şi partajarea ecranului să fie mai simple şi mai convenabile. Conectând dispozitive care acceptă Wi-Fi Direct puteţi partaja conţinut, sincroniza date, socializa cu prietenii, juca jocuri, reda conţinut audio şi video şi multe altele, utilizând diferite aplicaţii"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Dispozitive conectate"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Dispozitive ocupate"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Conectat la un alt dispozitiv"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Conectare"
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Se aşteaptă conexiunea"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Conectare nereuşită"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Mai multe conexiuni"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Deconectaţi-le pe toate"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Deconectare"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nu au fost găsite dispozitive"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Conexiune Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Revocaţi conexiunea Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nu există dispozitive"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Oprire"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Dezactivare nereuşită"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Activare nereuşită"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Conexiunea actuală va fi încheiată. Continuaţi?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dispozitive disponibile"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Vă puteţi conecta la maximum %d dispozitive în acelaşi timp"
+
diff --git a/ug-wifidirect/po/ru_RU.po b/ug-wifidirect/po/ru_RU.po
new file mode 100644
index 0000000..64ae072
--- /dev/null
+++ b/ug-wifidirect/po/ru_RU.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Подключено"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Подключение..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Отключение..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Подключено"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Неизвестная ошибка"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-коды не совпадают."
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Включение..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Выбрано: %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Выключение..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Не поддерживается"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Поиск"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Устройства Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Нажмите для подключения"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Подключиться"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Отменить подключение"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Сведения о Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct позволяет устройствам Wi-Fi подключаться друг к другу напрямую, упрощая печать, синхронизацию, а также общий доступ к файлам и экрану. Подключение к устройствам, поддерживающим Wi-Fi Direct, позволяет обмениваться файлами, синхронизировать данные, общаться с друзьями, играть в игры, просматривать видео и делать многое другое с помощью различных приложений"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Подключенные устройства"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Занятые устройства"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Подключено к другому устройству"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Подключение..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Ожидание подключения"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Сбой подключения"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Множеств. подключение"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Отключить все"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Отключить"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Ни одного устройства не найдено"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Подключение Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Отменить подключение Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Нет устройств"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Стоп"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Сбой выключения"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Сбой активации"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Текущее подключение будет разорвано. Продолжить?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Доступные устройства"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Можно одновременно подключить до %d устройств"
+
diff --git a/ug-wifidirect/po/sk.po b/ug-wifidirect/po/sk.po
new file mode 100644
index 0000000..39ec7b9
--- /dev/null
+++ b/ug-wifidirect/po/sk.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Pripojené"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Pripájanie..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Odpájanie..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Pripojené"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Neznáma chyba"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN kódy sa nezhodujú!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktivácia..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Vybraté: %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deaktivácia..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nepodporované"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Vyhľadať"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Zariadenia Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Ťuknite na pripojenie"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Pripojiť"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Zrušiť pripojenie"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Inform. o Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct umožňuje zariadeniam siete Wi-Fi pripájať sa priamo, čo umožňuje oveľa jednoduchšie a pohodlnejšie tlačiť, zdieľať súbory, synchronizovať a zdieľať obrazovku. Pripojenie k zariadeniam, ktoré podporujú technológiu Wi-Fi Direct, umožňuje zdieľať obsah, synchronizovať údaje, komunikovať s priateľmi, hrať hry, prehrávať zvuky, videá a ďalší obsah použitím rozličných aplikácií"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Pripojené zariadenia"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Zaneprázdnené zariadenia"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Pripojené k inému zariadeniu"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Pripájanie..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Čaká sa na pripojenie"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Nepodarilo sa pripojiť"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Viacnásobné pripojenie"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Odpojiť všetky"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Odpojiť"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nenašli sa žiadne zariadenia"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Pripojenie Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Zrušiť pripojenie Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Žiadne zariadenia"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deaktivácia zlyhala"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktivácia sa nepodarila"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Aktuálne pripojenie bude odpojené. Pokračovať?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dostupné zariadenia"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Naraz môžete pripojiť max. %d zariadení"
+
diff --git a/ug-wifidirect/po/sl.po b/ug-wifidirect/po/sl.po
new file mode 100644
index 0000000..17a8fc6
--- /dev/null
+++ b/ug-wifidirect/po/sl.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Povezano"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Povezujem..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Prekinjam"
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Povezano"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Neznana napaka"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "Kodi PIN se ne ujemata!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Vključujem..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d izbranih"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Izključujem..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nepodprto"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Preišči"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Naprave Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Pritisnite za povezavo"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Poveži"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Preklic povezave"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "O Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct napravam Wi-Fi olajša neposredno povezovanje, tiskanje, skupno rabo datotek, sinhronizacijo in skupno rabo zaslona. Povezava z napravami, ki podpirajo Wi-Fi Direct, z uporabo različnih programov omogoča skupno rabo vsebine, sinhronizacijo podatkov, druženje s prijatelji v družabnih omrežjih, igranje iger, predvajanje zvočnih in video vsebin ter še veliko več."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Povezane naprave"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Zasedene naprave"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Povezano z drugo napravo"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Povezujem..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Čakanje na povezavo"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Povezava ni uspela"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Več povezav"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Prekini vse"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Prekini"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Ni najdenih naprav"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Povezava Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Želite preklicati povezavo Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Ni naprav"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Ustavi"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Izklop ni uspel"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Vklop ni uspel"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Trenutna povezava bo prekinjena. Nadaljujem?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Razpoložljive naprave"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Hkrati lahko povežete do %d naprav"
+
diff --git a/ug-wifidirect/po/sr.po b/ug-wifidirect/po/sr.po
new file mode 100644
index 0000000..eb77249
--- /dev/null
+++ b/ug-wifidirect/po/sr.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Povezan"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Povezivanje..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Prekidanje veze..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Povezan"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Nepoznata greška"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-ovi se ne slažu!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktiviranje..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Izabran je %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deaktivacija..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Nepodržano"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Skeniraj"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct uređaji"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Kucni za povezivanje"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Poveži se"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Otkaži povezivanje"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "O Wi-Fi Direct-u"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct omogućava direktno povezivanje Wi-Fi uređaja čime štampanje, deljenje fajlova, sinhronizacija i deljenje ekrana postaje jednostavnije i prihvatljivije. Povezivanje na uređaje koji podržavaju Wi-Fi Direct omogućava deljenje sadržaja, sinhronizovanje podataka, druženje sa prijateljima, igranje igara, audio, video i još mnogo toga, koristeći različite aplikacije"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Povezani uređaji"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Zauzeti uređaji"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Povezan sa drugim uređajem"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Povezivanje..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Čekanje na povezivanje"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Neuspešno povezivanje"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Višestruko povezivanje"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Otkači sve"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Prekini vezu"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Nema uređaja"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct veza"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Prekinuti Wi-Fi Direct vezu?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Nema uređaja"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stop"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Deaktivacija neuspešna"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Uključivanje neuspešno"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Trenutna veza će biti prekinuta. Nastavak?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Dostupni uređaji"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Možeš da povežeš do %d uređaja istovremeno"
+
diff --git a/ug-wifidirect/po/sv.po b/ug-wifidirect/po/sv.po
new file mode 100644
index 0000000..0c412c7
--- /dev/null
+++ b/ug-wifidirect/po/sv.po
@@ -0,0 +1,114 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Ansluten"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Ansluter..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Kopplar från..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Ansluten"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Okänt fel"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-koder matchar inte!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Aktiverar..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d markerade"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Deaktiverar..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Kan ej användas"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Skanna"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct-enheter"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Tryck för att ansluta"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Anslut"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Avbryt anslutning"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Om Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Med Wi-Fi Direct kan Wi-Fi-enheter ansluta direkt, blir det enklare och bekvämare att skriva ut, dela filer, synkronisera och dela skärm. Anslutningar till enheter som stödjer Wi-Fi Direct gör det möjligt att dela innehåll, synkronisera data, interagera med vänner, spela spel, lyssna på ljud och visa video m.m. med en rad olika program"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Anslutna enheter"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Upptagna enheter"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Ansluten med en annan enhet"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Ansluter..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Väntar på anslutning"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Det gick inte att ansluta"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Multianslutning"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Koppla från alla"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Koppla från"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Inga enheter hittades"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct-anslutning"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Vill du avbryta Wi-Fi Direct-anslutningen?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Inga enheter"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Stopp"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Avaktiveringen misslyckades"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Aktiveringsfel"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Aktuell anslutning bryts. Fortsätta?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Tillängliga enheter"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Du kan ansluta upp till %d enheter samtidigt"
+
diff --git a/ug-wifidirect/po/tr_TR.po b/ug-wifidirect/po/tr_TR.po
new file mode 100644
index 0000000..f5d2db6
--- /dev/null
+++ b/ug-wifidirect/po/tr_TR.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Bağlantı kuruldu"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Bağlanılıyor..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Bağlantı kesiliyor..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Bağlantı kuruldu"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Bilinmeyen hata"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN’ler uyuşmuyor!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Etkinleştiriliyor…"
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d seçildi"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Devreden çıkartılıyor..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Desteklenmiyor"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Tara"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct cihazları"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Bağlanmak için dokunun"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Bağlan"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Bağlantıyı iptal et"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct hakkında"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct Wi-Fi cihazlarının doğrudan bağlanmasını sağlar, yazdırmayı, dosya paylaşmayı, eşitlemeyi ve ekran paylaşımını daha basit ve daha güvenli hale getirir. Wi-Fi Direct destekli cihazlara bağlanmak, çeşitli uygulamalar kullanarak içeriklerinizi paylaşmayı, verilerinizi eşitlemeyi, arkadaşlarla sosyalleşmeyi, oyun oynamayı, ses, video oynatmayı ve fazlasını mümkün kılar"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Bağlı cihazlar"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Meşgul cihazlar"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Başka cihazla bağlandı"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Bağlanılıyor..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Bağlantı bekleniyor"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Bağlanamadı"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Çoklu-bağlantı"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Hepsini kes"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Bağlantıyı kes"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Aygıt bulunamadı"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct bağlantısı"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi Direct bağlantısı iptal edilsin mi?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Cihaz yok"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Durdur"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Devre dışı bırakma başarısız"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Etkinleştirme başarısız"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Geçerli bağlantı kesilecek. Devam edilsin mi?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Kullanılabilir cihazlar"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Aynı anda en fazla %d cihaz bağlayabilirsiniz"
+
diff --git a/ug-wifidirect/po/ug-wifi-qdirect.pot b/ug-wifidirect/po/ug-wifi-qdirect.pot
new file mode 100644
index 0000000..4ca8881
--- /dev/null
+++ b/ug-wifidirect/po/ug-wifi-qdirect.pot
@@ -0,0 +1,324 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-09-29 15:49+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: sources/mainApp/viewers/view_detail.c:448
+msgid "IP address"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:454
+msgid "Auto IP"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:464
+msgid "Static IP"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:474
+msgid "DHCP IP"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:522
+msgid "Proxy setting"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:530
+msgid "Proxy address"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:533
+msgid "0.0.0.0:80"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:555
+msgid "Details"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:561
+msgid "Name"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:572
+msgid "Signal stringth"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:577
+msgid "Excellent"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:579
+msgid "Normal"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:581
+msgid "Week"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:591
+msgid "Sequrity type"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:594
+msgid "No security"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:597
+msgid "WEP"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:600
+msgid "WPA-PSK"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:603
+msgid "WPA2-PSK"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:606
+msgid "WPA-EAP"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:609
+msgid "WPA2-EAP"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:612
+msgid "WPA-PSK WPA2-PSK"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:615
+msgid "WPA-EAP WPA2-EAP"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:645
+msgid "Channel"
+msgstr ""
+
+#: sources/mainApp/viewers/view_detail.c:657
+msgid "AP Mac"
+msgstr ""
+
+#: sources/mainApp/viewers/view_autoip.c:54
+#: sources/mainApp/viewers/view_staticip.c:96
+#: sources/mainApp/viewers/view_dhcpip.c:53
+msgid "IP Address"
+msgstr ""
+
+#: sources/mainApp/viewers/view_autoip.c:70
+#: sources/mainApp/viewers/view_staticip.c:112
+#: sources/mainApp/viewers/view_dhcpip.c:69
+msgid "Subnet mask"
+msgstr ""
+
+#: sources/mainApp/viewers/view_autoip.c:86
+#: sources/mainApp/viewers/view_staticip.c:128
+#: sources/mainApp/viewers/view_dhcpip.c:85
+msgid "Gateway address"
+msgstr ""
+
+#: sources/mainApp/viewers/view_autoip.c:102
+#: sources/mainApp/viewers/view_staticip.c:145
+#: sources/mainApp/viewers/view_dhcpip.c:101
+msgid "DNS 1"
+msgstr ""
+
+#: sources/mainApp/viewers/view_autoip.c:118
+#: sources/mainApp/viewers/view_staticip.c:161
+#: sources/mainApp/viewers/view_dhcpip.c:117
+msgid "DNS 2"
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_password.c:74
+#: sources/mainApp/viewers/view_ime_hidden.c:73
+#: sources/mainApp/viewers/view_ime_proxy.c:77
+#: sources/mainApp/viewers/view_ime_statics.c:77
+msgid " "
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_password.c:78
+msgid "Input your password"
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_hidden.c:77
+msgid "Input AP name"
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_proxy.c:81
+msgid "Enter proxy address"
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_statics.c:193
+msgid "Enter IP address"
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_statics.c:230
+msgid "Enter Subnet mask"
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_statics.c:266
+msgid "Enter Gateway address"
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_statics.c:304
+msgid "Enter DNS 1"
+msgstr ""
+
+#: sources/mainApp/viewers/view_ime_statics.c:340
+msgid "Enter DNS 2"
+msgstr ""
+
+#: sources/mainApp/viewers/view_others.c:86
+msgid "by Hidden network"
+msgstr ""
+
+#: sources/mainApp/viewers/view_others.c:95
+msgid "by Protected Access"
+msgstr ""
+
+#. ad->layout_manager_object = layout_manager_create(ad->win_main);
+#: sources/mainApp/states/01_wifi_state_none/state.c:269
+#: sources/libraries/UIManager/viewerManager/wifi-components.c:37
+msgid "Wi-Fi"
+msgstr ""
+
+#. edje_object_signal_emit(ad->icon, "sig/icon/on", "image/icon");
+#: sources/mainApp/states/11_wifi_state_powering_off/state.c:37
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:211
+msgid "Failed to deactivate Wi-Fi"
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:24
+msgid "Settings"
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:53
+msgid "Default Style"
+msgstr ""
+
+#. edje_object_signal_emit(_EDJ(object->content),
+#. "processing_ani_stop",
+#. "listview_header_radio_button");
+#. edje_object_part_text_set(_EDJ(object->content), "listview_header_title", _("Wi-Fi Off"));
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:97
+msgid "Wi-Fi Off"
+msgstr ""
+
+#. edje_object_signal_emit(_EDJ(object->content),
+#. "processing_ani_stop",
+#. "listview_header_radio_button");
+#. edje_object_part_text_set(_EDJ(object->content), "listview_header_title", _("Wi-Fi On"));
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:112
+msgid "Wi-Fi On"
+msgstr ""
+
+#. edje_object_part_text_set(_EDJ(object->content), "listview_header_title", _("Wi-Fi Activating ..."));
+#. edje_object_signal_emit(_EDJ(object->content), "processing_ani_start", "listview_header_radio_button");
+#. edje_object_signal_emit(_EDJ(object->content), "header_check_hide", "header_check_hide");
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:124
+msgid "Wi-Fi Activating ... "
+msgstr ""
+
+#. edje_object_part_text_set(_EDJ(object->content), "listview_header_title", _("Searching ..."));
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:134
+msgid "Searching ... "
+msgstr ""
+
+#. edje_object_part_text_set(_EDJ(object->content), "listview_header_title", _("Wi-Fi Connecting ..."));
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:142
+msgid "Wi-Fi Connecting ... "
+msgstr ""
+
+#. edje_object_part_text_set(_EDJ(object->content), "listview_header_title", _("Wi-Fi Connected"));
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:152
+msgid "Wi-Fi Connected "
+msgstr ""
+
+#. edje_object_part_text_set(_EDJ(object->content), "listview_header_title", _("Wi-Fi Disconnecting ..."));
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:163
+msgid "Wi-Fi Disconnecting ..."
+msgstr ""
+
+#. edje_object_part_text_set(_EDJ(object->content), "listview_header_title", _("Deactivating..."));
+#: sources/libraries/UIManager/winset-wrapper/main/header.c:172
+msgid "Deactivating ..."
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/button.c:9
+msgid "WPS PBC"
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/button.c:14
+msgid "WPS PIN"
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/popup.c:110
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:437
+msgid "Authentication failed."
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/popup.c:113
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:441
+msgid "IP configuration failed."
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/popup.c:116
+#: sources/libraries/UIManager/winset-wrapper/main/popup.c:119
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:433
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:445
+msgid "Failed to Connect"
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/popup.c:139
+msgid "No Wi-Fi AP found"
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/popup.c:168
+msgid "Wi-Fi engine problem <br> wlan_client_get_state func"
+msgstr ""
+
+#: sources/libraries/UIManager/winset-wrapper/main/popup.c:174
+msgid "Wi-Fi engine problem <br> profile have not password"
+msgstr ""
+
+#. ad->bt = bt;
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:112
+msgid "Cancel"
+msgstr ""
+
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:129
+msgid "WiFi Deactivating"
+msgstr ""
+
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:143
+msgid "WiFi Activating"
+msgstr ""
+
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:168
+msgid "Failed to activate Wi-Fi"
+msgstr ""
+
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:225
+msgid "Searching..."
+msgstr ""
+
+#: sources/libraries/UIManager/winsetWrapper/wifi-popup.c:415
+msgid "Connection Lost"
+msgstr ""
+
+#: sources/libraries/UIManager/winsetWrapper/wifi-util.c:37
+msgid "FONT_NAME"
+msgstr ""
diff --git a/ug-wifidirect/po/uk.po b/ug-wifidirect/po/uk.po
new file mode 100644
index 0000000..95a0ed4
--- /dev/null
+++ b/ug-wifidirect/po/uk.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "З'єднано"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "З'єднання..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Роз'єднання..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "З'єднано"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Невідома помилка"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN-коди не збігаються."
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Активація..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "Вибрано %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "Деактивація..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Не підтримується"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Сканувати"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Пристрої Wi-Fi Direct"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Натисніть, щоб підключитися"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "З'єднати"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Скасувати підключення"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Про Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct дає змогу пристроям Wi-Fi здійснювати безпосереднє підключення, завдяки чому спільний доступ до файлів, синхронізація та друк стають набагато простішими та зручнішими. Підключення до пристроїв із підтримкою Wi-Fi Direct надає можливість відкрити спільний доступ до вмісту, синхронізувати дані, спілкуватись із друзями, грати в ігри, відтворювати аудіо, відео та інше, а також використовувати різноманітні програми."
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Підключені пристрої"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Зайняті пристрої"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Підключено до іншого пристрою"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "З'єднання..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Очікується підключення"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Не вдалося підключитися"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Мульти-підключення"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Відключити всі"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Роз'єднати"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Не знайдено пристроїв"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Підключення Wi-Fi Direct"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Скасувати підключення Wi-Fi Direct?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Немає пристроїв"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "Стоп"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "Збій деактивації"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Збій активації"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Поточне з’єднання буде роз’єднано. Продовжити?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Доступні пристрої"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Одночасно можна підключити не більше %d пристроїв"
+
diff --git a/ug-wifidirect/po/update-po.sh b/ug-wifidirect/po/update-po.sh
new file mode 100755
index 0000000..037ad99
--- /dev/null
+++ b/ug-wifidirect/po/update-po.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+PACKAGE=ug-setting-wifidirect
+SRCROOT=..
+POTFILES=POTFILES.in
+
+#ALL_LINGUAS= am az be ca cs da de el en_CA en_GB es et fi fr hr hu it ja ko lv mk ml ms nb ne nl pa pl pt pt_BR ru rw sk sl sr sr@Latn sv ta tr uk vi zh_CN zh_TW
+ALL_LINGUAS="ar az bg ca cs da de_DE el_GR en en_PH en_US es_ES es_US et eu fi fr_CA fr_FR ga gl hi hr hu hy is it_IT ja_JP ka kk ko_KR lt lv mk nb nl_NL pl pt_BR pt_PT ro ru_RU sk sl sr sv tr_TR uk uz zh_CN zh_HK zh_SG zh_TW"
+
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
+
+echo -n "Make ${PACKAGE}.pot "
+if [ ! -e $POTFILES ] ; then
+ echo "$POTFILES not found"
+ exit 1
+fi
+
+$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \
+ --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES
+if [ $? -ne 0 ]; then
+ echo "error"
+ exit 1
+fi
+
+if [ ! -f ${PACKAGE}.po ]; then
+ echo "No such file: ${PACKAGE}.po"
+ exit 1
+fi
+
+rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot
+echo "done"
+
+for LANG in $ALL_LINGUAS; do
+ echo "$LANG : "
+
+ if [ ! -e $LANG.po ] ; then
+ sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po
+ echo "${LANG}.po created"
+ else
+ if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then
+ if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then
+ rm -f ${LANG}.new.po
+ else
+ if mv -f ${LANG}.new.po ${LANG}.po; then
+ echo ""
+ else
+ echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2
+ rm -f ${LANG}.new.po
+ exit 1
+ fi
+ fi
+ else
+ echo "msgmerge for $LANG failed!"
+ rm -f ${LANG}.new.po
+ fi
+ fi
+ echo ""
+done
+
diff --git a/ug-wifidirect/po/uz.po b/ug-wifidirect/po/uz.po
new file mode 100644
index 0000000..de32d53
--- /dev/null
+++ b/ug-wifidirect/po/uz.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "Ulangan"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "Ulanmoqda..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "Uzilmoqda..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "Ulangan"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "Noma’lum xato"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PINs don't match!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "Faollashtirilmoqda..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "%d tanlangan"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "O‘chirilmoqda..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "Qo‘llab-quvvatlanmaydi"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "Scan"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct qurilmalari"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "Ulanish uchun cherting"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "Ulanish"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "Ulanishni bekor qilish"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "Wi-Fi Direct haqida"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct to‘g‘ridan-to‘g‘ri ulanish, chop etish, faylni ulashish va ekranni baham ko‘rishni soddaroq va osonroq qilish uchun Wi-Fi qurilmalarini yoqadi. Wi-Fi Directni qo‘llab-quvvatlovchi qurilmalarga ulanish turli ilovalar yordamida tarkibni baham ko‘rish, ma’lumotlarni sinxronlash, do‘stlar bilan suhbatlashish, o‘yinlar o‘ynash, audio, video tomosha qilish va boshq. amalga oshirishingiz mumkin"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "Ulangan qurilmalar"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "Band qurilmalar"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "Boshqa qurilma bilan ulandi"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "Ulanmoqda..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "Ulanish kutilmoqda"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "Ulanib bo‘lmadi"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "Ko‘p-ulanish"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "Barini uzish"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "Uzish"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "Qurilmalar topilmadi"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct ulanishi"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "Wi-Fi Direct ulanishi bekor qilinsinmi?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "Qurilmalar yo‘q"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "To‘xtatish"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "O‘chirib bo‘lmadi"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "Faollashtirish bajarilmadi"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "Joriy ulanish uziladi. Davom ettirilsinmi?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "Mavjud qurilmalar"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "Bir vaqtda ko‘pi bilan %d qurilma ulanishi mumkin"
+
diff --git a/ug-wifidirect/po/zh_CN.po b/ug-wifidirect/po/zh_CN.po
new file mode 100644
index 0000000..9889d6e
--- /dev/null
+++ b/ug-wifidirect/po/zh_CN.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "已连接"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "连接中..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "正在断开..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "已连接"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "未知错误"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN 码不匹配!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "激活中..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "已选择%d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "正在取消..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "不支持"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi直连"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "扫描"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi直连设备"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "点击并连接"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "连接"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "取消连接"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "关于 Wi-Fi 直连"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi 直连使 Wi-Fi 设备能直接连接,让打印、文件共享、同步和屏幕共享更简单更方便。连接至支持 Wi-Fi 直连的设备使其能使用各种应用程序共享您的内容、同步您的数据、与好友进行社交、玩游戏、播放音频、视频以及其他"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "已连接设备"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "使用中的设备"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "已与另一设备连接"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "连接中..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "等待连接"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "连接失败"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "多连接"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "断开所有"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "断开"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "未找到设备"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "使用 Wi-Fi 直连将断开当前 Wi-Fi 连接。是否继续?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "使用 Wi-Fi 直连将断开当前 Wi-Fi 网络共享。是否继续?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi直连连"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "是否取消 Wi-Fi直连 连接?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "没有设备"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "停止"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "停用失败"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "激活失败"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "当前连接将断开。 继续?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "可用设备"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "您同时可连接最多 %d 台设备"
+
diff --git a/ug-wifidirect/po/zh_HK.po b/ug-wifidirect/po/zh_HK.po
new file mode 100644
index 0000000..e8515aa
--- /dev/null
+++ b/ug-wifidirect/po/zh_HK.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "已連接"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "連接中..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "正在中斷連接..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "已連接"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "未知錯誤"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN 碼不相符!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "正在啟動..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "已選擇 %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "正在關閉..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "不支援"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "掃描"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct 裝置"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "輕觸以連接"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "連接"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "取消連接"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "關於 Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct 讓 Wi-Fi 裝置可直接連接、列印、檔案共享、同步和螢幕共享更加容易且簡便。與支援 Wi-Fi Direct 的裝置連接,使用各種應用程式分享您的內容、同步數據、社群活動、玩遊戲、聽音樂、看影片以及其他。"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "已連接裝置"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "裝置忙碌"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "已與其他裝置連接"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "連接中..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "正在等待連接"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "連接失敗"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "多點連接"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "中斷所有連線"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "中斷連接"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "找不到裝置"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct 連接"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "取消 Wi-Fi Direct 連接嗎?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "無裝置"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "停止"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "關閉失敗"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "啟動失敗"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "目前連接將中斷。要繼續嗎?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "可用的裝置"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "最多可同時連接 %d 個裝置"
+
diff --git a/ug-wifidirect/po/zh_SG.po b/ug-wifidirect/po/zh_SG.po
new file mode 100644
index 0000000..078e07c
--- /dev/null
+++ b/ug-wifidirect/po/zh_SG.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "已连接"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "连接中…"
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "正在中断连接…"
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "已连接"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "未知的故障"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN 码不匹配!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "启动中……"
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "已选择%d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "取消中…"
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "不支持"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "直接Wi-Fi"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "扫描"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "直接Wi-Fi设备"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "点击并连接"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "连接"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "取消连接"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "关于 WLAN 直连"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "直接 Wi-Fi 使 Wi-Fi 设备能直接连接,让打印、文件共享、同步和屏幕共享更简单更方便。连接至支持 Wi-Fi Direct 的设备使其能使用各种应用程序共享您的内容、同步您的数据、与好友进行社交、玩游戏、播放音频、视频以及其他。"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "已连接设备"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "忙碌设备"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "已与另一设备连接"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "连接中…"
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "等待连接"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "连接失败"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "多连接"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "断开所有"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "断开"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "未找到设备"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "使用WLAN直连将断开当前 Wi-Fi 连接。是否继续?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "使用WLAN直连将断开当前 Wi-Fi 网络共享。是否继续?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "直接Wi-Fi连接"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "是否取消直接Wi-Fi连接?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "没有设备"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "停止"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "停用失败"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "激活失败"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "当前连接将断开。 继续?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "可用设备"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "您同时可连接至多 %d 台设备"
+
diff --git a/ug-wifidirect/po/zh_TW.po b/ug-wifidirect/po/zh_TW.po
new file mode 100644
index 0000000..d851004
--- /dev/null
+++ b/ug-wifidirect/po/zh_TW.po
@@ -0,0 +1,117 @@
+msgid "IDS_WFD_CONNECTED"
+msgstr "已連線"
+
+msgid "IDS_WFD_CONNECTING"
+msgstr "連線中..."
+
+msgid "IDS_WFD_DISCONNECTING"
+msgstr "正在中斷連線..."
+
+msgid "IDS_WFD_POP_CONNECTED"
+msgstr "已連線"
+
+msgid "IDS_WFD_POP_UNKNOWN_ERROR"
+msgstr "未知錯誤"
+
+msgid "IDS_WFD_POP_PIN_INVALID"
+msgstr "PIN 不符合!"
+
+msgid "IDS_WFD_BODY_ACTIVATING"
+msgstr "正在啟動..."
+
+msgid "IDS_WFD_POP_SELECTED_DEVICE_NUM"
+msgstr "已選擇 %d"
+
+msgid "IDS_WFD_BODY_DEACTIVATING"
+msgstr "正在停用..."
+
+msgid "IDS_WFD_POP_NOT_SUPPORTED_DEVICE"
+msgstr "不支援"
+
+msgid "IDS_WFD_HEADER_WIFI_DIRECT"
+msgstr "Wi-Fi Direct"
+
+msgid "IDS_WFD_BUTTON_SCAN"
+msgstr "掃描"
+
+msgid "IDS_WFD_BODY_WIFI_DIRECT_DEVICES"
+msgstr "Wi-Fi Direct設備"
+
+msgid "IDS_WFD_TAP_TO_CONNECT"
+msgstr "輕觸連接"
+
+msgid "IDS_WFD_BUTTON_CONNECT"
+msgstr "連線"
+
+msgid "IDS_WFD_BUTTON_CANCEL"
+msgstr "取消連線"
+
+msgid "IDS_WFD_TITLE_ABOUT_WIFI"
+msgstr "關於 Wi-Fi Direct"
+
+msgid "IDS_WFD_BODY_ABOUT_WIFI"
+msgstr "Wi-Fi Direct 是一個全新的連線技術,即使沒有連線到 Wi-Fi 網路你仍可透過 Wi-Fi 直接連接裝置,並簡單且方便的操作像列印,分享,同步和輸出顯示等功能。WiFi Direct 連接後,各種應用程式可以被分享其內容如同步您的資料,社群,玩遊戲,播放音樂和影片以及更多功能。"
+
+msgid "IDS_WFD_BODY_CONNECTED_DEVICES"
+msgstr "已連接的裝置"
+
+msgid "IDS_WFD_BODY_BUSY_DEVICES"
+msgstr "設備忙碌"
+
+msgid "IDS_WFD_CONNECTED_WITH_OTHER_DEVICE"
+msgstr "已與其他裝置連接"
+
+msgid "IDS_WFD_POP_CONNECTING"
+msgstr "連線中..."
+
+msgid "IDS_WFD_WAITING_FOR_CONNECT"
+msgstr "正在等待連接"
+
+msgid "IDS_WFD_FAILED_TO_CONNECT"
+msgstr "連接失敗"
+
+msgid "IDS_WFD_BUTTON_MULTI"
+msgstr "多點連線"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT_ALL"
+msgstr "中斷所有連線"
+
+msgid "IDS_WFD_BUTTON_DISCONNECT"
+msgstr "中斷連接"
+
+msgid "IDS_WFD_NOCONTENT"
+msgstr "沒有找到裝置"
+
+msgid "IDS_WFD_POP_WIFI_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?"
+
+msgid "IDS_WFD_POP_HOTSPOT_OFF"
+msgstr "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?"
+
+msgid "IDS_WFD_POP_TITILE_CONNECTION"
+msgstr "Wi-Fi Direct 連線"
+
+msgid "IDS_WFD_POP_CANCEL_CONNECT"
+msgstr "取消 Wi-Fi Direct 連線嗎?"
+
+msgid "IDS_WFD_BODY_NO_DEVICES"
+msgstr "沒有找到裝置"
+
+msgid "IDS_WFD_BUTTON_STOPSCAN"
+msgstr "停止"
+
+msgid "IDS_WFD_POP_DEACTIVATE_FAIL"
+msgstr "無法停用"
+
+msgid "IDS_WFD_POP_ACTIVATE_FAIL"
+msgstr "啟動失敗"
+
+msgid "IDS_WFD_POP_DISCONNECT"
+msgstr "目前連線將中斷。繼續?"
+
+msgid "IDS_WFD_BODY_AVAILABLE_DEVICES"
+msgstr "可用的裝置"
+
+msgid "IDS_WFD_POP_MULTI_CONNECT"
+msgstr "最多可同時連接 %d 個裝置"
+
diff --git a/ug-wifidirect/resources/images/00_list_bar_press_1x80.png b/ug-wifidirect/resources/images/00_list_bar_press_1x80.png
new file mode 100755
index 0000000..1dc6e15
--- /dev/null
+++ b/ug-wifidirect/resources/images/00_list_bar_press_1x80.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_Connect.png b/ug-wifidirect/resources/images/A09_Connect.png
new file mode 100755
index 0000000..ef2821d
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_Connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_NoDevice.png b/ug-wifidirect/resources/images/A09_NoDevice.png
new file mode 100755
index 0000000..5b859c0
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_NoDevice.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_audio_devices.png b/ug-wifidirect/resources/images/A09_device_audio_devices.png
new file mode 100755
index 0000000..a9eddde
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_audio_devices.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_audio_devices_connect.png b/ug-wifidirect/resources/images/A09_device_audio_devices_connect.png
new file mode 100644
index 0000000..afc8967
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_audio_devices_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_camera.png b/ug-wifidirect/resources/images/A09_device_camera.png
new file mode 100755
index 0000000..ee1cc73
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_camera.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_camera_connect.png b/ug-wifidirect/resources/images/A09_device_camera_connect.png
new file mode 100644
index 0000000..623056a
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_camera_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_computer.png b/ug-wifidirect/resources/images/A09_device_computer.png
new file mode 100755
index 0000000..293deb7
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_computer.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_computer_connect.png b/ug-wifidirect/resources/images/A09_device_computer_connect.png
new file mode 100644
index 0000000..8968996
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_computer_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_display.png b/ug-wifidirect/resources/images/A09_device_display.png
new file mode 100755
index 0000000..87aa317
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_display.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_display_connect.png b/ug-wifidirect/resources/images/A09_device_display_connect.png
new file mode 100644
index 0000000..361009a
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_display_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_gaming_devices.png b/ug-wifidirect/resources/images/A09_device_gaming_devices.png
new file mode 100755
index 0000000..8672a46
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_gaming_devices.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_input_device.png b/ug-wifidirect/resources/images/A09_device_input_device.png
new file mode 100755
index 0000000..4130993
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_input_device.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_input_device_connect.png b/ug-wifidirect/resources/images/A09_device_input_device_connect.png
new file mode 100644
index 0000000..5de49c3
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_input_device_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_multimedia_devices.png b/ug-wifidirect/resources/images/A09_device_multimedia_devices.png
new file mode 100755
index 0000000..0d10f38
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_multimedia_devices.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_multimedia_devices_connect.png b/ug-wifidirect/resources/images/A09_device_multimedia_devices_connect.png
new file mode 100644
index 0000000..367209f
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_multimedia_devices_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_network_infrastructure.png b/ug-wifidirect/resources/images/A09_device_network_infrastructure.png
new file mode 100755
index 0000000..f0ef92c
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_network_infrastructure.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_network_infrastructure_connect.png b/ug-wifidirect/resources/images/A09_device_network_infrastructure_connect.png
new file mode 100644
index 0000000..8699a57
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_network_infrastructure_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_printer.png b/ug-wifidirect/resources/images/A09_device_printer.png
new file mode 100755
index 0000000..3b36c01
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_printer.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_printer_connect.png b/ug-wifidirect/resources/images/A09_device_printer_connect.png
new file mode 100644
index 0000000..13d860f
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_printer_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_storage.png b/ug-wifidirect/resources/images/A09_device_storage.png
new file mode 100755
index 0000000..d0d94e9
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_storage.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_storage_connect.png b/ug-wifidirect/resources/images/A09_device_storage_connect.png
new file mode 100644
index 0000000..c63de69
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_storage_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_telephone.png b/ug-wifidirect/resources/images/A09_device_telephone.png
new file mode 100755
index 0000000..83d7507
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_telephone.png
Binary files differ
diff --git a/ug-wifidirect/resources/images/A09_device_telephone_connect.png b/ug-wifidirect/resources/images/A09_device_telephone_connect.png
new file mode 100644
index 0000000..b6a7e14
--- /dev/null
+++ b/ug-wifidirect/resources/images/A09_device_telephone_connect.png
Binary files differ
diff --git a/ug-wifidirect/resources/wfd_ug.edc b/ug-wifidirect/resources/wfd_ug.edc
new file mode 100644
index 0000000..e05691d
--- /dev/null
+++ b/ug-wifidirect/resources/wfd_ug.edc
@@ -0,0 +1,248 @@
+collections {
+ group {
+ name: "progress_popup";
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ min: 426 270;
+ fixed: 1 1;
+ rel1 { relative: 0 0; /*offset: 0 0;*/ }
+ rel2 { relative: 1 1; /*offset: -1 -1;*/ }
+ color: 0 0 0 0;
+ }
+ }
+
+ part {
+ name: "popup_pb";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ min: 118 100;
+ max: 118 100;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 0.2 1.0; }
+ }
+ }
+ part {
+ name: "popup_progress_text";
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.2 0.1; to: "base";}
+ rel2 { relative: 1.0 0.9; to: "base";}
+ }
+ }
+ }
+ }
+
+ group { name: "elm/genlist/item/variable_height/default/default";
+ alias: "elm/genlist/item_odd/variable_height/default/default";
+
+ data.item: "stacking" "above";
+ data.item: "selectraise" "on";
+ data.item: "texts" "elm.text";
+ data.item: "contents" "elm.icon";
+ data.item: "treesize" "20";
+ images {
+ image: "00_list_bar_press_1x80.png" COMP;
+ }
+ parts {
+ part { name: "base";
+ type: RECT;
+ repeat_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 0 0;
+ color: 0 0 0 0;
+ }
+ }
+
+ part { name: "bg_image";
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ image.normal: "00_list_bar_press_1x80.png";
+ }
+ description { state: "selected" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+ part { name: "bottom_line";
+ type: RECT;
+ clip_to: "disclip";
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: 0 1;
+ fixed: 0 1;
+ visible: 1;
+ color: 212 212 212 255;
+ rel1 {
+ relative: 0.0 1.0;
+ offset: 0 -1;
+ }
+ }
+ }
+
+ part { name: "elm.padding.left";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 15 0;
+ fixed: 1 0;
+ visible: 0;
+ rel2.relative: 0.0 1.0;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.padding.right";
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ min: 15 0;
+ fixed: 1 0;
+ visible: 0;
+ rel1.relative: 1.0 0.0;
+ align: 1.0 0.0;
+ }
+ }
+
+ part { name: "elm.padding.top";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 10;
+ fixed: 0 1;
+ visible: 0;
+ rel2.relative: 1.0 0.0;
+ align: 0.0 0.0;
+ }
+ }
+
+ part { name: "elm.padding.bottom";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 10;
+ fixed: 0 1;
+ visible: 0;
+ rel1.relative: 0.0 1.0;
+ align: 0.0 1.0;
+ }
+ }
+
+ part { name: "elm.text";
+ clip_to: "text_clip";
+ type: TEXTBLOCK;
+ mouse_events: 0;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ min: 460 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1 1.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 1 0.0;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.bottom";
+ }
+ text {
+ style: textblock_style_variable_height;
+ min: 1 1;
+ align: 0 0.5;
+ }
+ }
+ }
+ part { name: "text_clip";
+ clip_to: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1 1;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0 0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ }
+ }
+ part { name: "elm.icon";
+ clip_to: "disclip";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 1;
+ description { state: "default" 0.0;
+ align: 0.5 0.5;
+ rel1 {
+ relative: 1 1;
+ to_x: "elm.padding.left";
+ to_y: "elm.padding.top";
+ }
+ rel2 {
+ relative: 0 0;
+ to_x: "elm.padding.right";
+ to_y: "elm.padding.bottom";
+ }
+ }
+ }
+
+ part { name: "disclip";
+ type: RECT;
+ description { state: "default" 0.0;
+ rel1.to: "base";
+ rel2.to: "base";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+// color: 255 255 255 64;
+ color: 0 0 0 0;
+ }
+ }
+
+ }
+ programs {
+ program { name: "go_active";
+ signal: "elm,state,selected";
+ source: "elm";
+ action: STATE_SET "selected" 0.0;
+ target: "bg_image";
+ }
+ program { name: "go_passive";
+ signal: "elm,state,unselected";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "bg_image";
+ transition: LINEAR 0.1;
+ }
+ program { name: "go_disabled";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "disclip";
+ }
+ program { name: "go_enabled";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "disclip";
+ }
+ }
+ }
+}
diff --git a/ug-wifidirect/src/wfd_client.c b/ug-wifidirect/src/wfd_client.c
new file mode 100755
index 0000000..60092bb
--- /dev/null
+++ b/ug-wifidirect/src/wfd_client.c
@@ -0,0 +1,1431 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <libintl.h>
+
+#include <Elementary.h>
+#include <pmapi.h>
+#include <vconf.h>
+//#include <vconf-keys.h>
+#include <tethering.h>
+#include <network-cm-intf.h>
+#include <network-wifi-intf.h>
+
+#include "wfd_ug.h"
+#include "wfd_ug_view.h"
+#include "wfd_client.h"
+
+/**
+ * This function let the ug make a change callback for wifi state
+ * @return void
+ * @param[in] key the pointer to the key
+ * @param[in] data the pointer to the main data structure
+ */
+static void _wifi_state_cb(keynode_t *key, void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+ int wifi_state;
+
+ res = vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_state);
+ if (res != 0) {
+ WDUG_LOGE("Failed to get wifi state from vconf. [%d]\n", res);
+ return;
+ }
+
+ if (wifi_state == VCONFKEY_WIFI_OFF) {
+ WDUG_LOGI("WiFi is turned off\n");
+ wfd_client_swtch_force(ugd, TRUE);
+ } else {
+ WDUG_LOGI("WiFi is turned on\n");
+ }
+
+ res = net_deregister_client();
+ if (res != NET_ERR_NONE) {
+ WDUG_LOGE("Failed to deregister network client. [%d]\n", res);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug make a event callback for network registering
+ * @return void
+ * @param[in] event_info the pointer to the information of network event
+ * @param[in] user_data the pointer to the user data
+ */
+static void _network_event_cb(net_event_info_t *event_info, void *user_data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ WDUG_LOGI("Event from network. [%d]\n", event_info->Event);
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug turn wifi off
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_wifi_off(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+
+ res = vconf_notify_key_changed(VCONFKEY_WIFI_STATE, _wifi_state_cb, ugd);
+ if (res == -1) {
+ WDUG_LOGE("Failed to register vconf callback\n");
+ return -1;
+ }
+
+ WDUG_LOGI("Vconf key callback is registered\n");
+
+ res = net_register_client((net_event_cb_t) _network_event_cb, NULL);
+ if (res != NET_ERR_NONE) {
+ WDUG_LOGE("Failed to register network client. [%d]\n", res);
+ return -1;
+ }
+
+ WDUG_LOGI("Network client is registered\n");
+
+ res = net_wifi_power_off();
+ if (res != NET_ERR_NONE) {
+ WDUG_LOGE("Failed to turn off wifi. [%d]\n", res);
+ return -1;
+ }
+
+ WDUG_LOGI("WiFi power off\n");
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug make a change callback for enabling hotspot state
+ * @return void
+ * @param[in] key the pointer to the key
+ * @param[in] data the pointer to the main data structure
+ */
+static void _enable_hotspot_state_cb(keynode_t *key, void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+ int hotspot_mode;
+ tethering_error_e ret = TETHERING_ERROR_NONE;
+ tethering_h th = NULL;
+
+ res = vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_MODE, &hotspot_mode);
+ if (res != 0) {
+ WDUG_LOGE("Failed to get mobile hotspot state from vconf. [%d]\n", res);
+ return;
+ }
+
+ if (hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI) {
+ WDUG_LOGI(" Mobile hotspot is activated\n");
+ }
+
+ th = ugd->hotspot_handle;
+
+ if (th != NULL) {
+ /* Deregister cbs */
+ ret = tethering_unset_enabled_cb(th, TETHERING_TYPE_WIFI);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_unset_enabled_cb is failed(%d)\n", ret);
+ }
+
+ /* Destroy tethering handle */
+ ret = tethering_destroy(th);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_destroy is failed(%d)\n", ret);
+ }
+
+ ugd->hotspot_handle = NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug make a change callback for disabling hotspot state
+ * @return void
+ * @param[in] key the pointer to the key
+ * @param[in] data the pointer to the main data structure
+ */
+static void _disable_hotspot_state_cb(keynode_t *key, void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+ int hotspot_mode;
+ tethering_error_e ret = TETHERING_ERROR_NONE;
+ tethering_h th = NULL;
+
+ res = vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_MODE, &hotspot_mode);
+ if (res != 0) {
+ WDUG_LOGE("Failed to get mobile hotspot state from vconf. [%d]\n", res);
+ return;
+ }
+
+ if (!(hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI)) {
+ WDUG_LOGI(" Mobile hotspot is deactivated\n");
+ wfd_client_swtch_force(ugd, TRUE);
+ }
+
+ th = ugd->hotspot_handle;
+
+ if (th != NULL) {
+ /* Deregister cbs */
+ ret = tethering_unset_disabled_cb(th, TETHERING_TYPE_WIFI);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_unset_disabled_cb is failed(%d)\n", ret);
+ }
+
+ /* Destroy tethering handle */
+ ret = tethering_destroy(th);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_destroy is failed(%d)\n", ret);
+ }
+
+ ugd->hotspot_handle = NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug make a callback for setting tethering mode enabled
+ * @return void
+ * @param[in] error the returned error code
+ * @param[in] type the type of tethering
+ * @param[in] is_requested whether tethering mode is enabled
+ * @param[in] data the pointer to the user data
+ */
+static void __enabled_cb(tethering_error_e error, tethering_type_e type, bool is_requested, void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (error != TETHERING_ERROR_NONE) {
+ if (is_requested != TRUE) {
+ return;
+ }
+
+ WDUG_LOGE("error !!! TETHERING is not enabled.\n");
+ return;
+ }
+
+ WDUG_LOGI("TETHERING is enabled.\n");
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug make a callback for setting tethering mode disabled
+ * @return void
+ * @param[in] error the returned error code
+ * @param[in] type the type of tethering
+ * @param[in] code whether tethering mode is enabled
+ * @param[in] data the pointer to the user data
+ */
+static void __disabled_cb(tethering_error_e error, tethering_type_e type, tethering_disabled_cause_e code, void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (error != TETHERING_ERROR_NONE) {
+ if (code != TETHERING_DISABLED_BY_REQUEST) {
+ return;
+ }
+
+ WDUG_LOGE("error !!! TETHERING is not disabled.\n");
+ return;
+ }
+
+ WDUG_LOGI("TETHERING is disabled.\n");
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug turn AP on
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_mobile_ap_on(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+ tethering_error_e ret = TETHERING_ERROR_NONE;
+ tethering_h th = NULL;
+
+ res = vconf_notify_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _enable_hotspot_state_cb, ugd);
+ if (res == -1) {
+ WDUG_LOGE("Failed to register vconf callback\n");
+ return -1;
+ }
+
+ /* Create tethering handle */
+ ret = tethering_create(&th);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("Failed to tethering_create() [%d]\n", ret);
+ return -1;
+ } else {
+ WDUG_LOGI("Succeeded to tethering_create()\n");
+ }
+
+ /* Register cbs */
+ ret = tethering_set_enabled_cb(th, TETHERING_TYPE_WIFI, __enabled_cb, NULL);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_set_enabled_cb is failed\n", ret);
+ return -1;
+ }
+
+ /* Enable tethering */
+ ret = tethering_enable(th, TETHERING_TYPE_WIFI);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("Failed to turn on mobile hotspot. [%d]\n", ret);
+ return -1;
+ } else {
+ WDUG_LOGI("Succeeded to turn on mobile hotspot\n");
+ }
+
+ ugd->hotspot_handle = th;
+ ugd->is_hotspot_off = FALSE;
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug turn AP off
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_mobile_ap_off(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+ tethering_error_e ret = TETHERING_ERROR_NONE;
+ tethering_h th = NULL;
+
+ res = vconf_notify_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _disable_hotspot_state_cb, ugd);
+ if (res == -1) {
+ WDUG_LOGE("Failed to register vconf callback\n");
+ return -1;
+ }
+
+ /* Create tethering handle */
+ ret = tethering_create(&th);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("Failed to tethering_create() [%d]\n", ret);
+ return -1;
+ } else {
+ WDUG_LOGI("Succeeded to tethering_create()\n");
+ }
+
+ /* Register cbs */
+ ret = tethering_set_disabled_cb(th, TETHERING_TYPE_WIFI, __disabled_cb, NULL);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_set_disabled_cb is failed\n", ret);
+ return -1;
+ }
+
+ /* Disable tethering */
+ ret = tethering_disable(th, TETHERING_TYPE_WIFI);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("Failed to turn off mobile hotspot. [%d]\n", ret);
+ return -1;
+ } else {
+ WDUG_LOGI("Succeeded to turn off mobile hotspot\n");
+ }
+
+ ugd->hotspot_handle = th;
+ ugd->is_hotspot_off = TRUE;
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug find the peer by mac address
+ * @return the found peer
+ * @param[in] data the pointer to the main data structure
+ * @param[in] mac_addr the pointer to mac address
+ */
+static device_type_s *wfd_client_find_peer_by_mac(void *data, const char *mac_addr)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int i;
+
+ if (ugd == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return NULL;
+ }
+
+ if (ugd->multi_connect_mode != WFD_MULTI_CONNECT_MODE_NONE) {
+ for (i = 0; i < ugd->raw_multi_selected_peer_cnt; i++) {
+ WDUG_LOGI("[Multi Connect] check %dth peer\n", i);
+ if (!strncmp(mac_addr, (const char *)ugd->raw_multi_selected_peers[i].mac_addr, MAC_LENGTH)) {
+ WDUG_LOGI("selected found peer. [%d]\n", i);
+ __WDUG_LOG_FUNC_EXIT__;
+ return &ugd->raw_multi_selected_peers[i];
+ }
+ }
+ } else {
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ WDUG_LOGI("check %dth peer\n", i);
+ if (!strncmp(mac_addr, (const char *)ugd->raw_discovered_peers[i].mac_addr, MAC_LENGTH)) {
+ WDUG_LOGI("found peer. [%d]\n", i);
+ __WDUG_LOG_FUNC_EXIT__;
+ return &ugd->raw_discovered_peers[i];
+ }
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return NULL;
+}
+
+/**
+ * This function let the ug make a callback for registering activation event
+ * @return void
+ * @param[in] error_code the returned error code
+ * @param[in] device_state the state of device
+ * @param[in] user_data the pointer to the main data structure
+ */
+void _activation_cb(int error_code, wifi_direct_device_state_e device_state, void *user_data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res = -1;
+ struct ug_data *ugd = (struct ug_data *)user_data;
+
+ wfd_refresh_wifi_direct_state(ugd);
+
+ switch (device_state) {
+ case WIFI_DIRECT_DEVICE_STATE_ACTIVATED:
+ WDUG_LOGI("WIFI_DIRECT_DEVICE_STATE_ACTIVATED\n");
+ if (error_code != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Error in Activation/Deactivation [%d]\n", error_code);
+ wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_ACTIVATE_FAIL"), POPUP_TYPE_ACTIVATE_FAIL);
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ ugd->wfd_onoff = 0;
+ wfd_ug_view_refresh_glitem(ugd->head);
+ return;
+ }
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_ACTIVATED;
+ ugd->wfd_onoff = 1;
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ wfg_ug_act_popup_remove(ugd);
+
+ res = vconf_ignore_key_changed(VCONFKEY_WIFI_STATE, _wifi_state_cb);
+ if (res == -1) {
+ WDUG_LOGE("Failed to ignore vconf key callback for wifi state\n");
+ }
+
+ res = vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _disable_hotspot_state_cb);
+ if (res == -1) {
+ WDUG_LOGE("Failed to ignore vconf key callback for hotspot state\n");
+ }
+
+ res = wifi_direct_start_discovery(FALSE, MAX_SCAN_TIME_OUT);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to start discovery. [%d]\n", res);
+ ugd->is_re_discover = TRUE;
+ wifi_direct_cancel_discovery();
+ } else {
+ WDUG_LOGI("Discovery is started\n");
+ ugd->is_re_discover = FALSE;
+ }
+
+ break;
+ case WIFI_DIRECT_DEVICE_STATE_DEACTIVATED:
+ WDUG_LOGI("WIFI_DIRECT_DEVICE_STATE_DEACTIVATED\n");
+ if (error_code != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Error in Activation/Deactivation [%d]\n", error_code);
+ wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_DEACTIVATE_FAIL"), POPUP_TYPE_DEACTIVATE_FAIL);
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ ugd->wfd_onoff = 1;
+ wfd_ug_view_refresh_glitem(ugd->head);
+ return;
+ }
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ ugd->wfd_onoff = 0;
+
+ /*
+ * when deactivated, clear all the
+ * discovered peers and connected peers
+ */
+ if (ugd->raw_discovered_peer_cnt > 0) {
+ memset(ugd->raw_discovered_peers, 0x00, ugd->raw_discovered_peer_cnt*sizeof(device_type_s));
+ }
+
+ if (ugd->raw_connected_peer_cnt > 0) {
+ memset(ugd->raw_connected_peers, 0x00, ugd->raw_connected_peer_cnt*sizeof(device_type_s));
+ }
+
+ ugd->raw_discovered_peer_cnt = 0;
+ ugd->raw_connected_peer_cnt = 0;
+
+ wfd_ug_view_update_peers(ugd);
+
+ /* remove the callback for hotspot */
+ res = vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _enable_hotspot_state_cb);
+ if (res == -1) {
+ WDUG_LOGE("Failed to ignore vconf key callback for hotspot state\n");
+ }
+
+ /* when deactivated, stop the timer */
+ if (ugd->monitor_timer) {
+ ecore_timer_del(ugd->monitor_timer);
+ ugd->monitor_timer = NULL;
+ }
+ break;
+ default:
+ break;
+ }
+
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"), TRUE);
+ }
+
+ if (ugd->multi_connect_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"), TRUE);
+ }
+
+ if (ugd->back_btn) {
+ elm_object_disabled_set(ugd->back_btn, FALSE);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug make a callback for discovering peer
+ * @return TRUE
+ * @param[in] peer the pointer to the discovered peer
+ * @param[in] user_data the pointer to the main data structure
+ */
+bool _wfd_discoverd_peer_cb(wifi_direct_discovered_peer_info_s *peer, void *user_data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ if (NULL == peer || NULL == user_data) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ __WDUG_LOG_FUNC_EXIT__;
+ return FALSE;
+ }
+
+ struct ug_data *ugd = (struct ug_data *)user_data;
+ int peer_cnt = ugd->raw_discovered_peer_cnt;
+
+ WDUG_LOGI("%dth discovered peer. [%s] [%s]\n", peer_cnt, peer->device_name, peer->mac_address);
+
+ strncpy(ugd->raw_discovered_peers[peer_cnt].ssid, peer->device_name, sizeof(ugd->raw_discovered_peers[peer_cnt].ssid));
+ ugd->raw_discovered_peers[peer_cnt].category = peer->primary_device_type;
+ strncpy(ugd->raw_discovered_peers[peer_cnt].mac_addr, peer->mac_address, MAC_LENGTH);
+ strncpy(ugd->raw_discovered_peers[peer_cnt].if_addr, peer->interface_address, MAC_LENGTH);
+ ugd->raw_discovered_peers[peer_cnt].is_group_owner = peer->is_group_owner;
+ ugd->raw_discovered_peers[peer_cnt].is_persistent_group_owner = peer->is_persistent_group_owner;
+ ugd->raw_discovered_peers[peer_cnt].is_connected = peer->is_connected;
+
+ if (TRUE == peer->is_connected) {
+ ugd->raw_discovered_peers[peer_cnt].conn_status = PEER_CONN_STATUS_CONNECTED;
+ } else {
+ ugd->raw_discovered_peers[peer_cnt].conn_status = PEER_CONN_STATUS_DISCONNECTED;
+ }
+
+ WDUG_LOGI("\tSSID: [%s]\n", ugd->raw_discovered_peers[peer_cnt].ssid);
+ WDUG_LOGI("\tPeer category [%d] -> [%d]\n", peer->primary_device_type, ugd->raw_discovered_peers[peer_cnt].category);
+ WDUG_LOGI("\tStatus: [%d]\n", ugd->raw_discovered_peers[peer_cnt].conn_status);
+
+ ugd->raw_discovered_peer_cnt++;
+
+ free(peer->device_name);
+ free(peer->mac_address);
+ free(peer->interface_address);
+ free(peer);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return TRUE;
+}
+
+/**
+ * This function let the ug make a callback for connected peer
+ * @return TRUE
+ * @param[in] peer the pointer to the connected peer
+ * @param[in] user_data the pointer to the main data structure
+ */
+bool _wfd_connected_peer_cb(wifi_direct_connected_peer_info_s *peer, void *user_data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ if (NULL == peer || NULL == user_data) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ __WDUG_LOG_FUNC_EXIT__;
+ return FALSE;
+ }
+
+ struct ug_data *ugd = (struct ug_data *)user_data;
+ int peer_cnt = ugd->raw_connected_peer_cnt;
+
+ WDUG_LOGI("%dth connected peer. [%s] [%s]\n", peer_cnt, peer->device_name, peer->mac_address);
+
+ strncpy(ugd->raw_connected_peers[peer_cnt].ssid, peer->device_name, sizeof(ugd->raw_connected_peers[peer_cnt].ssid));
+ ugd->raw_connected_peers[peer_cnt].category = peer->primary_device_type;
+ strncpy(ugd->raw_connected_peers[peer_cnt].mac_addr, peer->mac_address, MAC_LENGTH);
+ strncpy(ugd->raw_connected_peers[peer_cnt].if_addr, peer->interface_address, MAC_LENGTH);
+ ugd->raw_connected_peers[peer_cnt].conn_status = PEER_CONN_STATUS_CONNECTED;
+
+ WDUG_LOGI("\tStatus: [%d]\n", ugd->raw_connected_peers[peer_cnt].conn_status);
+ WDUG_LOGI("\tCategory: [%d]\n", ugd->raw_connected_peers[peer_cnt].category);
+ WDUG_LOGI("\tSSID: [%s]\n", ugd->raw_connected_peers[peer_cnt].ssid);
+ WDUG_LOGI("\tMAC addr: [" MACSTR "]\n", ugd->raw_connected_peers[peer_cnt].mac_addr);
+ WDUG_LOGI("\tIface addr: [" MACSTR "]\n", ugd->raw_connected_peers[peer_cnt].if_addr);
+
+ ugd->raw_connected_peer_cnt++;
+
+ free(peer->device_name);
+ free(peer->mac_address);
+ free(peer->interface_address);
+ free(peer);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return TRUE;
+}
+
+/**
+ * This function let the ug get the found peers
+ * @return If success, return 0, else return -1
+ * @param[in] ugd the pointer to the main data structure
+ */
+int wfd_ug_get_discovered_peers(struct ug_data *ugd)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res = 0;
+
+ if (ugd == NULL) {
+ return -1;
+ }
+
+ ugd->raw_discovered_peer_cnt = 0;
+ res = wifi_direct_foreach_discovered_peers(_wfd_discoverd_peer_cb, (void *)ugd);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ ugd->raw_discovered_peer_cnt = 0;
+ WDUG_LOGE("Get discovery result failed: %d\n", res);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug get the connected peers
+ * @return If success, return 0, else return -1
+ * @param[in] ugd the pointer to the main data structure
+ */
+int wfd_ug_get_connected_peers(struct ug_data *ugd)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res = 0;
+
+ if (ugd == NULL) {
+ return -1;
+ }
+
+ ugd->raw_connected_peer_cnt = 0;
+ res = wifi_direct_foreach_connected_peers(_wfd_connected_peer_cb, (void *)ugd);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ ugd->raw_connected_peer_cnt = 0;
+ WDUG_LOGE("Get connected peer failed: %d\n", res);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug make a callback for deactivating wfd automatically
+ * @return if stop the timer, return ECORE_CALLBACK_CANCEL, else return ECORE_CALLBACK_RENEW
+ * @param[in] user_data the pointer to the main data structure
+ */
+static Eina_Bool _wfd_automatic_deactivated_for_no_connection_cb(void *user_data)
+{
+ int res = -1;
+ int interval = 0;
+ struct ug_data *ugd = (struct ug_data *)user_data;
+
+ if (NULL == ugd) {
+ WDUG_LOGE("NULL parameters.\n");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ /* check the action, if action is exist, keep the cb */
+ res = wifi_direct_get_state(&ugd->wfd_status);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to get link status. [%d]\n", res);
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if (ugd->last_wfd_status != ugd->wfd_status) {
+ WDUG_LOGE("Action is exist, last status: %d\n",
+ ugd->last_wfd_status);
+ ugd->last_wfd_status = ugd->wfd_status;
+ ugd->last_wfd_time = time(NULL);
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ /* check the timeout, if not timeout, keep the cb */
+ interval = time(NULL) - ugd->last_wfd_time;
+ if (interval < MAX_NO_ACTION_TIME_OUT) {
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ /* turn off the Wi-Fi Direct */
+ wifi_direct_get_state(&ugd->wfd_status);
+ if (ugd->wfd_status < WIFI_DIRECT_STATE_ACTIVATING) {
+ WDUG_LOGE("Wi-Fi Direct is already deactivated\n");
+ } else {
+ wfd_ug_warn_popup(ugd, IDS_WFD_POP_AUTOMATIC_TURN_OFF, POP_TYPE_AUTOMATIC_TURN_OFF);
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+/**
+ * This function let the ug make a callback for registering discover event
+ * @return void
+ * @param[in] error_code the returned error code
+ * @param[in] discovery_state the state of discover
+ * @param[in] user_data the pointer to the main data structure
+ */
+void _discover_cb(int error_code, wifi_direct_discovery_state_e discovery_state, void *user_data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)user_data;
+
+ if (ugd == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return;
+ }
+
+ WDUG_LOGI("Discovery event [%d], error_code [%d]\n", discovery_state, error_code);
+
+ if (discovery_state == WIFI_DIRECT_ONLY_LISTEN_STARTED) {
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+ } else if (discovery_state == WIFI_DIRECT_DISCOVERY_STARTED) {
+ ugd->head_text_mode = HEAD_TEXT_TYPE_SCANING;
+
+ /* clear all the previous discovered peers */
+ if (ugd->raw_discovered_peer_cnt > 0) {
+ memset(ugd->raw_discovered_peers, 0x00, ugd->raw_discovered_peer_cnt*sizeof(device_type_s));
+ }
+
+ ugd->raw_discovered_peer_cnt = 0;
+ } else if (discovery_state == WIFI_DIRECT_DISCOVERY_FOUND) {
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ wfd_ug_get_discovered_peers(ugd);
+ } else {
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+
+ if (TRUE == ugd->is_re_discover) {
+ ugd->is_re_discover = FALSE;
+ wifi_direct_start_discovery(FALSE, MAX_SCAN_TIME_OUT);
+ } else {
+ /* start LISTEN ONLY mode */
+ wifi_direct_start_discovery(TRUE, 0);
+ }
+ }
+
+ wfd_ug_view_refresh_glitem(ugd->head);
+ wfd_ug_view_update_peers(ugd);
+ wfd_update_multiconnect_device(ugd);
+
+ if (WIFI_DIRECT_DISCOVERY_STARTED == discovery_state) {
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_STOPSCAN"), TRUE);
+ }
+
+ if (ugd->multi_connect_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_STOPSCAN"), TRUE);
+ }
+ } else {
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"), TRUE);
+ }
+
+ if (ugd->multi_connect_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"), TRUE);
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug make a callback for registering connection event
+ * @return void
+ * @param[in] error_code the returned error code
+ * @param[in] connection_state the state of connection
+ * @param[in] mac_address the mac address of peer
+ * @param[in] user_data the pointer to the main data structure
+ */
+void _connection_cb(int error_code, wifi_direct_connection_state_e connection_state, const char *mac_address, void *user_data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)user_data;
+ device_type_s *peer = NULL;
+ bool owner = FALSE;
+ int res = 0;
+
+ WDUG_LOGI("Connection event [%d], error_code [%d], multi_connect_mode [%d]\n",
+ connection_state, error_code, ugd->multi_connect_mode);
+
+ if (mac_address == NULL) {
+ WDUG_LOGE("Incorrect parameter(peer mac is NULL)\n");
+ return;
+ }
+
+ /* when not in connection, mac_address is empty */
+ if (connection_state <= WIFI_DIRECT_DISASSOCIATION_IND) {
+ peer = wfd_client_find_peer_by_mac(ugd, mac_address);
+
+ if (NULL == peer || '\0' == peer->ssid[0]) {
+ WDUG_LOGE("invalid peer from connection !!\n");
+ goto refresh_button;
+ }
+ }
+
+ if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_IN_PROGRESS) {
+ switch (connection_state) {
+ case WIFI_DIRECT_CONNECTION_RSP:
+ WDUG_LOGI("MULTI: WIFI_DIRECT_CONNECTION_RSP\n");
+
+ if (error_code == WIFI_DIRECT_ERROR_NONE) {
+ peer->conn_status = PEER_CONN_STATUS_CONNECTED;
+ wfd_ug_get_connected_peers(ugd);
+ } else {
+ peer->conn_status = PEER_CONN_STATUS_FAILED_TO_CONNECT;
+ }
+
+ wfd_ug_view_update_peers(ugd);
+
+ /* connect the next peer */
+ ugd->g_source_multi_connect_next = g_timeout_add(1000, wfd_multi_connect_next_cb, ugd);
+ break;
+ case WIFI_DIRECT_CONNECTION_IN_PROGRESS:
+ WDUG_LOGI("MULTI: WIFI_DIRECT_CONNECTION_IN_PROGRESS\n");
+ peer->conn_status = PEER_CONN_STATUS_CONNECTING;
+ wfd_ug_view_update_peers(ugd);
+ break;
+ case WIFI_DIRECT_GROUP_CREATED:
+ WDUG_LOGI("MULTI: WIFI_DIRECT_GROUP_CREATED\n");
+ wfd_multi_connect_next_cb(ugd);
+ break;
+ default:
+ break;
+ }
+ } else {
+ switch (connection_state) {
+ case WIFI_DIRECT_CONNECTION_RSP:
+ WDUG_LOGI("WIFI_DIRECT_CONNECTION_RSP\n");
+
+ if (error_code == WIFI_DIRECT_ERROR_NONE) {
+ peer->conn_status = PEER_CONN_STATUS_CONNECTED;
+ wfd_ug_get_connected_peers(ugd);
+ } else {
+ peer->conn_status = PEER_CONN_STATUS_FAILED_TO_CONNECT;
+ }
+
+ wfd_ug_view_update_peers(ugd);
+ break;
+ case WIFI_DIRECT_DISASSOCIATION_IND:
+ WDUG_LOGI("WIFI_DIRECT_DISASSOCIATION_IND\n");
+ /* change the multi connection mode, it can be connected now */
+ if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_COMPLETED) {
+ ugd->multi_connect_mode = WFD_MULTI_CONNECT_MODE_IN_PROGRESS;
+ }
+
+ /* if other peer disconnected, get connected peers and update */
+ peer->conn_status = PEER_CONN_STATUS_WAIT_FOR_CONNECT;
+ wfd_ug_get_connected_peers(ugd);
+ wfd_ug_view_update_peers(ugd);
+ break;
+ case WIFI_DIRECT_DISCONNECTION_RSP:
+ case WIFI_DIRECT_DISCONNECTION_IND:
+ WDUG_LOGI("WIFI_DIRECT_DISCONNECTION_X\n");
+
+ /* when disconnection, clear all the connected peers */
+ if (ugd->raw_connected_peer_cnt > 0) {
+ memset(ugd->raw_connected_peers, 0x00, ugd->raw_connected_peer_cnt*sizeof(device_type_s));
+ }
+
+ ugd->raw_connected_peer_cnt = 0;
+
+ /* start discovery again */
+ res = wifi_direct_start_discovery(FALSE, MAX_SCAN_TIME_OUT);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to start discovery. [%d]\n", res);
+ ugd->is_re_discover = TRUE;
+ wifi_direct_cancel_discovery();
+ } else {
+ WDUG_LOGI("Discovery is started\n");
+ ugd->is_re_discover = FALSE;
+ }
+
+ break;
+ case WIFI_DIRECT_CONNECTION_IN_PROGRESS:
+ WDUG_LOGI("WIFI_DIRECT_CONNECTION_IN_PROGRESS\n");
+ peer->conn_status = PEER_CONN_STATUS_CONNECTING;
+ wfd_ug_view_update_peers(ugd);
+ break;
+ case WIFI_DIRECT_CONNECTION_REQ:
+ case WIFI_DIRECT_CONNECTION_WPS_REQ:
+ WDUG_LOGI("WIFI_DIRECT_CLI_EVENT_CONNECTION_REQ\n");
+ break;
+ default:
+ break;
+ }
+ }
+
+ if (peer != NULL) {
+ wfd_ug_view_refresh_glitem(peer->gl_item);
+ }
+
+ _change_multi_button_title(ugd);
+
+refresh_button:
+ /* refresh the scan button */
+ wfd_refresh_wifi_direct_state(ugd);
+ if (WIFI_DIRECT_STATE_CONNECTING == ugd->wfd_status ||
+ WIFI_DIRECT_STATE_DISCONNECTING == ugd->wfd_status) {
+ res = wifi_direct_is_group_owner(&owner);
+ if (res == WIFI_DIRECT_ERROR_NONE) {
+ if (!owner) {
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->multi_connect_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+ }
+ } else {
+ WDUG_LOGE("Failed to get whether client is group owner. [%d]\n", res);
+ }
+ } else {
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"), TRUE);
+ }
+
+ if (ugd->multi_connect_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"), TRUE);
+ }
+ }
+
+ /* if no connection, start the monitor timer */
+ wifi_direct_get_state(&ugd->wfd_status);
+ WDUG_LOGI("status: %d", ugd->wfd_status);
+
+ if (ugd->wfd_status >= WIFI_DIRECT_STATE_CONNECTED) {
+ if (ugd->monitor_timer) {
+ ecore_timer_del(ugd->monitor_timer);
+ ugd->monitor_timer = NULL;
+ }
+ } else {
+ if (NULL == ugd->monitor_timer) {
+ WDUG_LOGI("start the monitor timer\n");
+ ugd->last_wfd_time = time(NULL);
+ ugd->monitor_timer = ecore_timer_add(5.0,
+ (Ecore_Task_Cb)_wfd_automatic_deactivated_for_no_connection_cb, ugd);
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug get wi-fi direct status from vconf
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_get_vconf_status(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ char *dev_name;
+ int wifi_direct_state = 0;
+
+ /* get wifi direct status from vconf */
+ if (vconf_get_int(VCONFKEY_WIFI_DIRECT_STATE, &wifi_direct_state) < 0) {
+ WDUG_LOGE("Error reading vconf (%s)\n", VCONFKEY_WIFI_DIRECT_STATE);
+ return -1;
+ }
+
+ ugd->wfd_status = wifi_direct_state;
+
+ /* get device name from vconf */
+ dev_name = vconf_get_str(VCONFKEY_SETAPPL_DEVICE_NAME_STR);
+ if (dev_name == NULL) {
+ ugd->dev_name = strdup(DEFAULT_DEV_NAME);
+ WDUG_LOGE("The AP name is NULL(setting default value)\n");
+ } else {
+ ugd->dev_name = strdup(dev_name);
+ free(dev_name);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug refresh current status of wi-fi direct
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_refresh_wifi_direct_state(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+ wifi_direct_state_e wfd_status;
+
+ res = wifi_direct_get_state(&wfd_status);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to get link status. [%d]\n", res);
+ return -1;
+ }
+
+ WDUG_LOGI("WFD status [%d]", wfd_status);
+ ugd->wfd_status = wfd_status;
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug do initialization
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int init_wfd_client(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res = 0;
+
+ res = wifi_direct_initialize();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to initialize wifi direct. [%d]\n", res);
+ return -1;
+ }
+
+ res = wifi_direct_initialize();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to initialize Wi-Fi Direct. error code = [%d]\n", res);
+ return -1;
+ }
+
+ res = wifi_direct_set_device_state_changed_cb(_activation_cb, (void *)ugd);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to register _cb_activation. error code = [%d]\n", res);
+ return -1;
+ }
+
+ res = wifi_direct_set_discovery_state_changed_cb(_discover_cb, (void *)ugd);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to register _cb_discover. error code = [%d]\n", res);
+ return -1;
+ }
+
+ res = wifi_direct_set_connection_state_changed_cb(_connection_cb, (void *)ugd);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to register _cb_connection. error code = [%d]\n", res);
+ return -1;
+ }
+
+ /* update WFD status */
+ wfd_refresh_wifi_direct_state(ugd);
+ if (ugd->wfd_status > WIFI_DIRECT_STATE_ACTIVATING) {
+ ugd->wfd_onoff = 1;
+ } else {
+ ugd->wfd_onoff = 0;
+ }
+
+ WDUG_LOGI("WFD link status. [%d]\n", ugd->wfd_status);
+
+ /* start the monitor timer */
+ ugd->last_wfd_time = time(NULL);
+ ugd->last_wfd_status = WIFI_DIRECT_STATE_DEACTIVATED;
+ ugd->monitor_timer = ecore_timer_add(5.0, (Ecore_Task_Cb)_wfd_automatic_deactivated_for_no_connection_cb, ugd);
+
+ ugd->is_re_discover = FALSE;
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug do de-initialization
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int deinit_wfd_client(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res = 0;
+ tethering_error_e ret = TETHERING_ERROR_NONE;
+ tethering_h th = NULL;
+
+ wfd_refresh_wifi_direct_state(ugd);
+
+ if (ugd->wfd_status == WIFI_DIRECT_STATE_DISCOVERING) {
+ WDUG_LOGI("Stop discovery before deregister client\n");
+ wifi_direct_cancel_discovery();
+ }
+
+ res = wifi_direct_deinitialize();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to deregister client. [%d]\n", res);
+ }
+
+ /* release monitor timer */
+ if (ugd->monitor_timer) {
+ ecore_timer_del(ugd->monitor_timer);
+ ugd->monitor_timer = NULL;
+ }
+
+ /* release vconf, hotspot.. */
+ res = vconf_ignore_key_changed(VCONFKEY_WIFI_STATE, _wifi_state_cb);
+ if (res == -1) {
+ WDUG_LOGE("Failed to ignore vconf key callback for wifi state\n");
+ }
+
+ res = net_deregister_client();
+ if (res != NET_ERR_NONE) {
+ WDUG_LOGE("Failed to deregister network client. [%d]\n", res);
+ }
+
+ res = vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _enable_hotspot_state_cb);
+ if (res == -1) {
+ WDUG_LOGE("Failed to ignore vconf key callback for hotspot state\n");
+ }
+
+ res = vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _disable_hotspot_state_cb);
+ if (res == -1) {
+ WDUG_LOGE("Failed to ignore vconf key callback for hotspot state\n");
+ }
+
+ th = ugd->hotspot_handle;
+
+ if (th != NULL) {
+ /* Deregister cbs */
+ ret = tethering_unset_enabled_cb(th, TETHERING_TYPE_WIFI);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_unset_enabled_cb is failed(%d)\n", ret);
+ }
+
+ ret = tethering_unset_disabled_cb(th, TETHERING_TYPE_WIFI);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_unset_disabled_cb is failed(%d)\n", ret);
+ }
+
+ /* Destroy tethering handle */
+ ret = tethering_destroy(th);
+ if (ret != TETHERING_ERROR_NONE) {
+ WDUG_LOGE("tethering_destroy is failed(%d)\n", ret);
+ }
+
+ ugd->hotspot_handle = NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug turn wi-fi direct on
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_client_switch_on(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+
+ wfd_refresh_wifi_direct_state(ugd);
+ WDUG_LOGI("WFD status [%d]\n", ugd->wfd_status);
+
+ if (ugd->wfd_status < WIFI_DIRECT_STATE_ACTIVATING) {
+ int wifi_state;
+ res = vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_state);
+ if (res != 0) {
+ WDUG_LOGE("Failed to get wifi state from vconf. [%d]\n", res);
+ return -1;
+ }
+
+ int hotspot_mode;
+ res = vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_MODE, &hotspot_mode);
+ if (res != 0) {
+ WDUG_LOGE("Failed to get mobile hotspot state from vconf. [%d]\n", res);
+ return -1;
+ }
+
+ if (wifi_state > VCONFKEY_WIFI_OFF) {
+ WDUG_LOGI("WiFi is connected, so have to turn off WiFi");
+ wfd_ug_act_popup(ugd, _("IDS_WFD_POP_WIFI_OFF"), POPUP_TYPE_WIFI_OFF);
+ } else if (hotspot_mode & VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI) {
+ WDUG_LOGI("WiFi is connected, so have to turn off WiFi");
+ wfd_ug_act_popup(ugd, _("IDS_WFD_POP_HOTSPOT_OFF"), POPUP_TYPE_HOTSPOT_OFF);
+ } else {
+ res = wifi_direct_activate();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to activate Wi-Fi Direct. error code = [%d]\n", res);
+ wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_ACTIVATE_FAIL"), POPUP_TYPE_TERMINATE);
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ wfd_ug_view_refresh_glitem(ugd->head);
+ return -1;
+ }
+
+ /* refresh the header */
+ ugd->head_text_mode = HEAD_TEXT_TYPE_ACTIVATING;
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ /* while activating, disable the buttons */
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->multi_scan_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->back_btn) {
+ elm_object_disabled_set(ugd->back_btn, TRUE);
+ }
+ }
+ } else {
+ WDUG_LOGI("Wi-Fi Direct is already activated\n");
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug turn wi-fi direct off
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_client_switch_off(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+
+ wfd_refresh_wifi_direct_state(ugd);
+ WDUG_LOGI("WFD status [%d]\n", ugd->wfd_status);
+
+ if (ugd->wfd_status < WIFI_DIRECT_STATE_ACTIVATING) {
+ WDUG_LOGI("Wi-Fi Direct is already deactivated\n");
+ } else {
+ /*if connected, disconnect all devices*/
+ if (WIFI_DIRECT_STATE_CONNECTED == ugd->wfd_status) {
+ res = wifi_direct_disconnect_all();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to send disconnection request to all. [%d]\n", res);
+ return -1;
+ }
+ }
+
+ res = wifi_direct_deactivate();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to deactivate Wi-Fi Direct. error code = [%d]\n", res);
+ wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_DEACTIVATE_FAIL"), POPUP_TYPE_TERMINATE);
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ wfd_ug_view_refresh_glitem(ugd->head);
+ return -1;
+ }
+
+ /* refresh the header */
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DEACTIVATING;
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ /* while deactivating, disable the buttons */
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->multi_scan_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->back_btn) {
+ elm_object_disabled_set(ugd->back_btn, TRUE);
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug turn wi-fi direct on/off forcely
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ * @param[in] onoff whether to turn on/off wi-fi direct
+ */
+int wfd_client_swtch_force(void *data, int onoff)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+
+ if (onoff) {
+ res = wifi_direct_activate();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to activate Wi-Fi Direct. error code = [%d]\n", res);
+ wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_ACTIVATE_FAIL"), POPUP_TYPE_TERMINATE);
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ wfd_ug_view_refresh_glitem(ugd->head);
+ return -1;
+ }
+ } else {
+ res = wifi_direct_deactivate();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to deactivate Wi-Fi Direct. error code = [%d]\n", res);
+ wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_DEACTIVATE_FAIL"), POPUP_TYPE_TERMINATE);
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ wfd_ug_view_refresh_glitem(ugd->head);
+ return -1;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug create a group
+ * @return If success, return 0, else return -1
+ */
+int wfd_client_group_add()
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res;
+
+ res = wifi_direct_create_group();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to add group");
+ __WDUG_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug connect to the device by mac address
+ * @return If success, return 0, else return -1
+ * @param[in] mac_addr the pointer to the mac address of device
+ */
+int wfd_client_connect(const char *mac_addr)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res;
+
+ WDUG_LOGE("connect to peer=[%s]\n", mac_addr);
+ res = wifi_direct_connect(mac_addr);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to send connection request. [%d]\n", res);
+ return -1;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug disconnect to the device by mac address
+ * @return If success, return 0, else return -1
+ * @param[in] mac_addr the pointer to the mac address of device
+ */
+int wfd_client_disconnect(const char *mac_addr)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res;
+
+ if (mac_addr == NULL) {
+ res = wifi_direct_disconnect_all();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to send disconnection request to all. [%d]\n", res);
+ return -1;
+ }
+ } else {
+ res = wifi_direct_disconnect(mac_addr);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to send disconnection request. [%d]\n", res);
+ return -1;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug set the intent of a group owner
+ * @return If success, return 0, else return -1
+ * @param[in] go_intent the intent parameter
+ */
+int wfd_client_set_p2p_group_owner_intent(int go_intent)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res;
+
+ res = wifi_direct_set_group_owner_intent(go_intent);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to wifi_direct_set_go_intent(%d). [%d]\n", go_intent, res);
+ return -1;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
diff --git a/ug-wifidirect/src/wfd_ug.c b/ug-wifidirect/src/wfd_ug.c
new file mode 100755
index 0000000..18dcb67
--- /dev/null
+++ b/ug-wifidirect/src/wfd_ug.c
@@ -0,0 +1,524 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+
+#include <sys/time.h>
+#include <libintl.h>
+#include <sys/utsname.h>
+
+#include <vconf.h>
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+#include <wifi-direct.h>
+
+#include "wfd_ug.h"
+#include "wfd_ug_view.h"
+#include "wfd_client.h"
+
+void initialize_gen_item_class();
+
+struct ug_data *global_ugd = NULL;
+
+struct ug_data *wfd_get_ug_data()
+{
+ return global_ugd;
+}
+
+/**
+ * This function let the ug create backgroud
+ * @return backgroud
+ * @param[in] ugd the pointer to the parent object
+ * @param[in] ugd the pointer to the main data structure
+ */
+static Evas_Object *_create_bg(Evas_Object *parent, char *style)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ Evas_Object *bg;
+
+ bg = elm_bg_add(parent);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_style_set(bg, style);
+ elm_win_resize_object_add(parent, bg);
+ evas_object_show(bg);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return bg;
+}
+
+/**
+ * This function let the ug create full view
+ * @return full view
+ * @param[in] ugd the pointer to the parent object
+ * @param[in] ugd the pointer to the main data structure
+ */
+static Evas_Object *_create_fullview(Evas_Object *parent, struct ug_data *ugd)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ Evas_Object *base;
+
+ if (parent == NULL) {
+ WDUG_LOGE( "Incorrenct parameter");
+ return NULL;
+ }
+
+ /* Create Full view */
+ base = elm_layout_add(parent);
+ if (!base) {
+ WDUG_LOGE( "Failed to add layout");
+ return NULL;
+ }
+
+ elm_layout_theme_set(base, "layout", "application", "default");
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(base, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return base;
+}
+
+/**
+ * This function let the ug create frame view
+ * @return frame view
+ * @param[in] ugd the pointer to the parent object
+ * @param[in] ugd the pointer to the main data structure
+ */
+static Evas_Object *_create_frameview(Evas_Object *parent, struct ug_data *ugd)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ Evas_Object *base;
+
+ if (parent == NULL) {
+ WDUG_LOGE( "Incorrenct parameter");
+ return NULL;
+ }
+
+ /* Create Frame view */
+ base = elm_layout_add(parent);
+ if (!base) {
+ WDUG_LOGE( "Failed to add layout");
+ return NULL;
+ }
+
+ elm_layout_theme_set(base, "layout", "application", "default");
+ evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(base, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return base;
+}
+
+/**
+ * This function let the ug destroy the main view
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void destroy_wfd_ug_view(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (ugd->genlist) {
+ evas_object_del(ugd->genlist);
+ ugd->genlist = NULL;
+ }
+
+ if (ugd->naviframe) {
+ evas_object_del(ugd->naviframe);
+ ugd->naviframe = NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug initialize wfd when timeout
+ * @return if stop the timer, return false, else return true
+ * @param[in] data the pointer to the main data structure
+ */
+gboolean _wfd_init_cb(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res = -1;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (ugd->wfd_status == WIFI_DIRECT_STATE_DEACTIVATED) {
+ res = init_wfd_client(ugd);
+ if (res != 0) {
+ WDUG_LOGE( "Failed to initialize WFD client library\n");
+ return true;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return false;
+}
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd;
+ int res = 0;
+
+ if (!ug || !priv) {
+ return NULL;
+ }
+
+ ugd = priv;
+ ugd->ug = ug;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ ugd->win = ug_get_window();
+ if (!ugd->win) {
+ return NULL;
+ }
+
+ if (mode == UG_MODE_FULLVIEW) {
+ ugd->base = _create_fullview(ugd->win, ugd);
+ } else {
+ ugd->base = _create_frameview(ugd->win, ugd);
+ }
+
+ if (ugd->base) {
+ ugd->bg = _create_bg(ugd->win, "group_list");
+ elm_object_part_content_set(ugd->base, "elm.swallow.bg", ugd->bg);
+ } else {
+ WDUG_LOGE( "Failed to create base layout\n");
+ return NULL;
+ }
+
+ /* check status of wifi-direct from vconf */
+ wfd_get_vconf_status(ugd);
+
+ /*
+ * if not deactivated, do initialization at once;
+ * otherwise, do initialization later
+ */
+ if (ugd->wfd_status > WIFI_DIRECT_STATE_DEACTIVATED || service) {
+ res = init_wfd_client(ugd);
+ if (res != 0) {
+ WDUG_LOGE( "Failed to initialize WFD client library\n");
+ }
+
+ if (service) {
+ int status = 0;
+ char *data = NULL;
+
+ /* get the status from appsvc */
+ service_get_extra_data(service, "status", &data);
+ if (data) {
+ status = atoi(data);
+ }
+
+ /*
+ * status -
+ * 0 : No operation,
+ * 1 : Activate ,
+ * 2 : Deactivate
+ */
+ if (status == 0x01) {
+ wfd_client_switch_on(ugd);
+ } else if (status == 0x02) {
+ wfd_client_switch_off(ugd);
+ }
+ }
+ } else {
+ g_timeout_add(100, _wfd_init_cb, ugd);
+ }
+
+ if (ugd->wfd_status >= WIFI_DIRECT_STATE_ACTIVATED) {
+ wfd_ug_get_discovered_peers(ugd);
+ }
+
+ if (ugd->wfd_status >= WIFI_DIRECT_STATE_CONNECTED) {
+ wfd_ug_get_connected_peers(ugd);
+ }
+
+ if (ugd->wfd_status == WIFI_DIRECT_STATE_ACTIVATED) {
+ /* start discovery */
+ res = wifi_direct_start_discovery(FALSE, MAX_SCAN_TIME_OUT);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE( "Failed to start discovery. [%d]\n", res);
+ ugd->is_re_discover = TRUE;
+ wifi_direct_cancel_discovery();
+ } else {
+ WDUG_LOGI("Discovery is started\n");
+ ugd->is_re_discover = FALSE;
+ }
+ }
+
+ /* draw UI */
+ initialize_gen_item_class();
+ create_wfd_ug_view(ugd);
+ wfd_ug_view_update_peers(ugd);
+
+ evas_object_show(ugd->base);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return ugd->base;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd;
+ int res;
+
+ if (!ug || !priv) {
+ return;
+ }
+
+ ugd = priv;
+
+ struct utsname kernel_info;
+ res = uname(&kernel_info);
+ if (res != 0) {
+ WDUG_LOGE( "Failed to detect target type\n");
+ } else {
+ WDUG_LOGI("HW ID of this device [%s]\n", kernel_info.machine);
+ if (strncmp(kernel_info.machine, "arm", 3) != 0) {
+ wfd_ug_warn_popup(ugd, _("IDS_WFD_POP_NOT_SUPPORTED_DEVICE"), POPUP_TYPE_TERMINATE);
+ return;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (!ug || !priv) {
+ WDUG_LOGE( "The param is NULL\n");
+ return;
+ }
+
+ struct ug_data *ugd = priv;
+ if (ugd == NULL || ugd->base == NULL) {
+ WDUG_LOGE( "The param is NULL\n");
+ return;
+ }
+
+ deinit_wfd_client(ugd);
+ WDUG_LOGI("WFD client deregistered");
+
+ destroy_wfd_ug_view(ugd);
+ WDUG_LOGI("Destroying About item");
+
+ wfd_ug_view_free_peers(ugd);
+
+ WDUG_LOGI("WFD client deregistered");
+ if (ugd->bg) {
+ evas_object_del(ugd->bg);
+ ugd->bg = NULL;
+ }
+ WDUG_LOGI("WFD client deregistered");
+
+ if (ugd->base) {
+ evas_object_del(ugd->base);
+ ugd->base = NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (!ug || !priv) {
+ WDUG_LOGE( "The param is NULL\n");
+ return;
+ }
+
+ switch (event) {
+ case UG_EVENT_LOW_MEMORY:
+ WDUG_LOGI("UG_EVENT_LOW_MEMORY\n");
+ break;
+ case UG_EVENT_LOW_BATTERY:
+ WDUG_LOGI("UG_EVENT_LOW_BATTERY\n");
+ break;
+ case UG_EVENT_LANG_CHANGE:
+ WDUG_LOGI("UG_EVENT_LANG_CHANGE\n");
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT:
+ WDUG_LOGI("UG_EVENT_ROTATE_PORTRAIT\n");
+ break;
+ case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+ WDUG_LOGI("UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN\n");
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE:
+ WDUG_LOGI("UG_EVENT_ROTATE_LANDSCAPE\n");
+ break;
+ case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+ WDUG_LOGI("UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN\n");
+ break;
+ default:
+ WDUG_LOGI("default\n");
+ break;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (!ug || !priv) {
+ WDUG_LOGE( "The param is NULL\n");
+ return;
+ }
+
+ switch (event) {
+ case UG_KEY_EVENT_END:
+ WDUG_LOGI("UG_KEY_EVENT_END\n");
+ break;
+ default:
+ break;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd;
+
+ if (!ops) {
+ WDUG_LOGE( "The param is NULL\n");
+ return -1;
+ }
+
+ ugd = calloc(1, sizeof(struct ug_data));
+ if (ugd == NULL) {
+ WDUG_LOGE( "Failed to allocate memory for UG data\n");
+ return -1;
+ }
+
+ global_ugd = ugd;
+
+ ops->create = on_create;
+ ops->start = on_start;
+ ops->pause = on_pause;
+ ops->resume = on_resume;
+ ops->destroy = on_destroy;
+ ops->message = on_message;
+ ops->event = on_event;
+ ops->key_event = on_key_event;
+ ops->priv = ugd;
+ ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ struct ug_data *ugd;
+
+ if (!ops) {
+ WDUG_LOGE( "The param is NULL\n");
+ return;
+ }
+
+ ugd = ops->priv;
+
+ if (ugd) {
+ free(ugd);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int res = -1;
+ wifi_direct_state_e state;
+
+ res = wifi_direct_initialize();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE( "Failed to initialize wifi direct. [%d]\n", res);
+ return -1;
+ }
+
+ res = wifi_direct_get_state(&state);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE( "Failed to get link status. [%d]\n", res);
+ return -1;
+ }
+
+ if (state < WIFI_DIRECT_STATE_ACTIVATING) {
+ WDUG_LOGI("No need to reset Wi-Fi Direct.\n");
+ } else {
+ /*if connected, disconnect all devices*/
+ if (WIFI_DIRECT_STATE_CONNECTED == state) {
+ res = wifi_direct_disconnect_all();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE( "Failed to send disconnection request to all. [%d]\n", res);
+ return -1;
+ }
+ }
+
+ res = wifi_direct_deactivate();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE( "Failed to reset Wi-Fi Direct. [%d]\n", res);
+ return -1;
+ }
+ }
+
+ res = wifi_direct_deinitialize();
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE( "Failed to deinitialize wifi direct. [%d]\n", res);
+ return -1;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
diff --git a/ug-wifidirect/src/wfd_ug_about_view.c b/ug-wifidirect/src/wfd_ug_about_view.c
new file mode 100755
index 0000000..44774b9
--- /dev/null
+++ b/ug-wifidirect/src/wfd_ug_about_view.c
@@ -0,0 +1,116 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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"
+
+static Elm_Genlist_Item_Class itc;
+
+/**
+ * This function let the ug get the label of about
+ * @return the label of about
+ * @param[in] parent the pointer to the label's parent
+ * @param[in] obj the pointer to the evas object
+ * @param[in] part the pointer to the part of item
+ */
+static char *_wfd_gl_label_help_dialogue_get(void *data, Evas_Object *obj, const char *part)
+{
+ return strdup(_("IDS_WFD_BODY_ABOUT_WIFI"));
+}
+
+/**
+ * This function let the ug call it when click 'back' 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 _about_view_back_btn_cb(void *data, Evas_Object * obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (!ugd) {
+ WDUG_LOGE("The param is NULL\n");
+ return;
+ }
+
+ elm_naviframe_item_pop(ugd->naviframe);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug create about view
+ * @return void
+ * @param[in] ugd the pointer to the main data structure
+ */
+void _wifid_create_about_view(struct ug_data *ugd)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ Evas_Object *back_btn = NULL;
+ Elm_Object_Item *navi_item = NULL;
+ Evas_Object *genlist = NULL;
+ Elm_Object_Item *item = NULL;
+
+ if (ugd == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)");
+ return;
+ }
+
+ genlist = elm_genlist_add(ugd->naviframe);
+ if (NULL == genlist) {
+ WDUG_LOGE("Create genlist failed\n");
+ return;
+ }
+
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+
+ /* Set multiline item class */
+ itc.item_style = "multiline/1text";
+ itc.func.text_get = _wfd_gl_label_help_dialogue_get;
+ itc.func.content_get = NULL;
+ itc.func.state_get = NULL;
+ itc.func.del = NULL;
+
+ item = elm_genlist_item_append(genlist, &itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ back_btn = elm_button_add(ugd->naviframe);
+ elm_object_style_set(back_btn, "naviframe/back_btn/default");
+ evas_object_smart_callback_add(back_btn, "clicked", _about_view_back_btn_cb, (void *)ugd);
+ elm_object_focus_allow_set(back_btn, EINA_FALSE);
+
+ navi_item = elm_naviframe_item_push(ugd->naviframe, IDS_WFD_TITLE_ABOUT_WIFI_DIRECT, back_btn, NULL, genlist, NULL);
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
diff --git a/ug-wifidirect/src/wfd_ug_genlist.c b/ug-wifidirect/src/wfd_ug_genlist.c
new file mode 100755
index 0000000..bb2345c
--- /dev/null
+++ b/ug-wifidirect/src/wfd_ug_genlist.c
@@ -0,0 +1,793 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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 title_itc;
+Elm_Gen_Item_Class peer_itc;
+Elm_Gen_Item_Class noitem_itc;
+Elm_Gen_Item_Class button_itc;
+
+Elm_Gen_Item_Class title_conn_itc;
+Elm_Gen_Item_Class peer_conn_itc;
+
+Elm_Gen_Item_Class title_busy_itc;
+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 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ WDUG_LOGI("%s", part);
+
+ 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;
+ }
+ } 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;
+}
+
+/**
+ * This function let the ug get the icon of header
+ * @return the icon 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ Evas_Object *onoff = NULL;
+
+ if (data == NULL) {
+ WDUG_LOGE("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;
+ }
+
+ 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_show(onoff);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return onoff;
+}
+
+/**
+ * This function let the ug get the label of about item
+ * @return the label of about 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_name_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (data == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ 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);
+ }
+
+ __WDUG_LOG_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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (data == NULL) {
+ WDUG_LOGE("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"));
+ }
+ }
+ }
+
+ __WDUG_LOG_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)
+{
+ Evas_Object *progressbar = NULL;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (data == NULL) {
+ WDUG_LOGE("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;
+ }
+ }
+
+ return progressbar;
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_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);
+
+ if (data == NULL) {
+ WDUG_LOGE("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")) {
+ 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:
+ if (peer->is_group_owner == FALSE) {
+ g_strlcpy(buf, _("IDS_WFD_CONNECTED"), WFD_GLOBALIZATION_STR_LENGTH);
+ } else {
+ g_strlcpy(buf, _("IDS_WFD_TAP_TO_CONNECT"), 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 {
+ __WDUG_LOG_FUNC_EXIT__;
+ return NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return strdup(buf);
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_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();
+
+ if (data == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return NULL;
+ }
+
+ 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);
+
+ /*
+ * 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;
+ }
+ 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;
+ }
+ break;
+ case WFD_DEVICE_TYPE_PRINTER:
+ if (1 == status) {
+ img_path = WFD_ICON_DEVICE_PRINTER_CONNECT;
+ } else {
+ img_path = 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;
+ }
+ break;
+ case WFD_DEVICE_TYPE_STORAGE:
+ if (1 == status) {
+ img_path = WFD_ICON_DEVICE_STORAGE_CONNECT;
+ } else {
+ img_path = 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;
+ }
+ break;
+ case WFD_DEVICE_TYPE_DISPLAYS:
+ if (1 == status) {
+ img_path = WFD_ICON_DEVICE_DISPLAY_CONNECT;
+ } else {
+ img_path = WFD_ICON_DEVICE_DISPLAY;
+ }
+ break;
+ case WFD_DEVICE_TYPE_MM_DEVICES:
+ if (1 == status) {
+ img_path = WFD_ICON_DEVICE_MULTIMEDIA_DEVICE_CONNECT;
+ } else {
+ img_path = WFD_ICON_DEVICE_MULTIMEDIA_DEVICE;
+ }
+ 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;
+ }
+ break;
+ case WFD_DEVICE_TYPE_TELEPHONE:
+ if (1 == status) {
+ img_path = WFD_ICON_DEVICE_TELEPHONE_CONNECT;
+ } else {
+ img_path = WFD_ICON_DEVICE_TELEPHONE;
+ }
+ break;
+ case WFD_DEVICE_TYPE_AUDIO:
+ if (1 == status) {
+ img_path = WFD_ICON_DEVICE_AUDIO_DEVICE_CONNECT;
+ } else {
+ img_path = WFD_ICON_DEVICE_AUDIO_DEVICE;
+ }
+ break;
+ default:
+ if (1 == status) {
+ img_path = WFD_ICON_DEVICE_COMPUTER_CONNECT;
+ } else {
+ img_path = WFD_ICON_DEVICE_COMPUTER;
+ }
+ 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;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return icon;
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (data == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return strdup(_("IDS_WFD_NOCONTENT"));
+}
+
+/**
+ * This function let the ug get the multi connect button
+ * @return the multi connect button
+ * @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)
+{
+ __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);
+
+ 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");
+ }
+ }
+
+ 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;
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (data == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return NULL;
+ }
+
+ if (!strcmp(part, "elm.text")) {
+ return strdup(_("IDS_WFD_BODY_CONNECTED_DEVICES"));
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return NULL;
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_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);
+
+ if (data == NULL) {
+ WDUG_LOGE("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);
+ }
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (data == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return NULL;
+ }
+
+ if (!strcmp(part, "elm.text")) {
+ return strdup(IDS_WFD_BODY_FAILED_DEVICES);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return NULL;
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_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);
+
+ if (data == NULL) {
+ WDUG_LOGE("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);
+ }
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = wfd_get_ug_data();
+
+ if (data == NULL) {
+ WDUG_LOGE("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"));
+ } else if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_COMPLETED) {
+ return strdup(IDS_WFD_BODY_FAILED_DEVICES);
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return NULL;
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (data == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return NULL;
+ }
+
+ if (!strcmp(part, "elm.text")) {
+ return strdup(_("IDS_WFD_BODY_BUSY_DEVICES"));
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return NULL;
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_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);
+
+ if (data == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return NULL;
+ }
+
+ WDUG_LOGI("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);
+ }
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ assertm_if(NULL == obj, "NULL!!");
+ assertm_if(NULL == data, "NULL!!");
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug initialize the items of genlist
+ * @return void
+ */
+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";
+ 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;
+
+ 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;
+
+ __WDUG_LOG_FUNC_EXIT__;
+
+}
diff --git a/ug-wifidirect/src/wfd_ug_main_view.c b/ug-wifidirect/src/wfd_ug_main_view.c
new file mode 100755
index 0000000..59c2439
--- /dev/null
+++ b/ug-wifidirect/src/wfd_ug_main_view.c
@@ -0,0 +1,1190 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+
+#include <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"
+
+/**
+ * This function let the ug call it when click 'back' 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 _back_btn_cb(void *data, Evas_Object * obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (!ugd) {
+ WDUG_LOGE("The param is NULL\n");
+ return;
+ }
+
+ wfd_ug_view_free_peers(ugd);
+
+ int ret = -1;
+ service_h service = NULL;
+ ret = service_create(&service);
+ if (ret) {
+ WDUG_LOGE("Failed to create service");
+ return;
+ }
+
+ wfd_refresh_wifi_direct_state(ugd);
+ if (ugd->wfd_status > WIFI_DIRECT_STATE_CONNECTING) {
+ service_add_extra_data(service, "Connection", "TRUE");
+ } else {
+ service_add_extra_data(service, "Connection", "FALSE");
+ }
+
+ ug_send_result(ugd->ug, service);
+ service_destroy(service);
+ ug_destroy_me(ugd->ug);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * 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 _scan_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ struct ug_data *ugd = (struct ug_data *) data;
+ int ret = -1;
+ char *btn_text = NULL;
+
+ if (NULL == ugd) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return;
+ }
+
+ btn_text = (char *)elm_object_text_get(obj);
+ if (NULL == btn_text) {
+ WDUG_LOGE("Incorrect button text(NULL)\n");
+ return;
+ }
+
+ if (0 == strcmp(btn_text, _("IDS_WFD_BUTTON_SCAN"))) {
+ wfd_refresh_wifi_direct_state(ugd);
+ WDUG_LOGD("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_WFD_POP_SCAN_AGAIN, POP_TYPE_SCAN_AGAIN);
+ } else if (WIFI_DIRECT_STATE_DEACTIVATED == ugd->wfd_status) {
+ wfd_client_switch_on(ugd);
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+ } else {
+ ret = wifi_direct_start_discovery(FALSE, MAX_SCAN_TIME_OUT);
+ if (ret != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to start discovery. [%d]\n", ret);
+ ugd->is_re_discover = TRUE;
+ wifi_direct_cancel_discovery();
+ } else {
+ WDUG_LOGD("Discovery is started\n");
+ ugd->is_re_discover = FALSE;
+ }
+ }
+ } else if (0 == strcmp(btn_text, _("IDS_WFD_BUTTON_STOPSCAN"))) {
+ WDUG_LOGD("Stop discoverying.\n");
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ /* stop scaning */
+ ugd->is_re_discover = FALSE;
+ wifi_direct_cancel_discovery();
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * 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)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ if (NULL == data) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+ }
+
+ struct ug_data *ugd = (struct ug_data *) data;
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+
+ if (item != NULL) {
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ }
+
+ /* turn on/off wfd */
+ if (!ugd->wfd_onoff) {
+ WDUG_LOGD("wifi-direct switch on\n");
+ wfd_client_switch_on(ugd);
+ } else {
+ WDUG_LOGD("wifi-direct switch off\n");
+ wfd_client_switch_off(ugd);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click avaliable peer to connect
+ * @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_peer_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ assertm_if(NULL == obj, "NULL!!");
+ assertm_if(NULL == data, "NULL!!");
+ device_type_s *peer = (device_type_s *) data;
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ int res;
+
+ if (data == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return;
+ }
+
+ if (item != NULL) {
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ }
+
+ if (peer->conn_status == PEER_CONN_STATUS_DISCONNECTED || peer->is_group_owner == TRUE) {
+ WDUG_LOGD("Connect with peer [%s]\n", peer->mac_addr);
+ res = wfd_client_connect((const char *) peer->mac_addr);
+ if (res != 0) {
+ WDUG_LOGE("Failed to send connection request. [%d]\n", res);
+ return;
+ }
+ } else {
+ res = wfd_client_disconnect((const char *)peer->mac_addr);
+ if (res != 0) {
+ WDUG_LOGE("Failed to send disconnection request. [%d]\n", res);
+ return;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug call it when click busy peer
+ * @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_busy_peer_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+ WDUG_LOGD("Busy device is clicked");
+ wfd_ug_warn_popup(ugd, IDS_WFD_POP_WARN_BUSY_DEVICE, POP_TYPE_BUSY_DEVICE_POPUP);
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click about item
+ * @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_about_wifi_sel(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ WDUG_LOGD("About wifi clicked");
+ _wifid_create_about_view(ugd);
+ elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'multi connect' 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 _wifid_create_multibutton_cb(void *data, Evas_Object * obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ const char *text_lbl = NULL;
+
+ text_lbl = elm_object_text_get(ugd->multi_btn);
+ WDUG_LOGD("text_lbl = %s", text_lbl);
+
+ if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_IN_PROGRESS) {
+ ugd->multi_connect_mode = WFD_MULTI_CONNECT_MODE_NONE;
+ if (0 == strcmp(_("IDS_WFD_BUTTON_CANCEL"), text_lbl)) {
+ wfd_ug_act_popup(ugd, _("IDS_WFD_POP_CANCEL_CONNECT"), POP_TYPE_DISCONNECT_ALL);
+ } else {
+ WDUG_LOGD("Invalid Case\n");
+ }
+ } else {
+ if (0 == strcmp(_("IDS_WFD_BUTTON_MULTI"), text_lbl)) {
+ wfd_create_multiconnect_view(ugd);
+ } else if (0 == strcmp(_("IDS_WFD_BUTTON_CANCEL"), text_lbl)) {
+ wfd_ug_act_popup(ugd, _("IDS_WFD_POP_CANCEL_CONNECT"), POP_TYPE_DISCONNECT_ALL);
+ } else if (0 == strcmp(_("IDS_WFD_BUTTON_DISCONNECT_ALL"), text_lbl)) {
+ wfd_ug_act_popup(ugd, _("IDS_WFD_POP_DISCONNECT"), POP_TYPE_DISCONNECT_ALL);
+ } else if (0 == strcmp(_("IDS_WFD_BUTTON_DISCONNECT"), text_lbl)) {
+ wfd_ug_act_popup(ugd, _("IDS_WFD_POP_DISCONNECT"), POP_TYPE_DISCONNECT);
+ } else {
+ WDUG_LOGD("Invalid Case\n");
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug change the text of multi button
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int _change_multi_button_title(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (ugd->multi_button_item == NULL) {
+ return -1;
+ }
+
+ wfd_refresh_wifi_direct_state(ugd);
+ if (ugd->wfd_status == WIFI_DIRECT_STATE_CONNECTING) {
+ elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_CANCEL"));
+ } else if (ugd->wfd_status > WIFI_DIRECT_STATE_CONNECTING) {
+ if (ugd->gl_connected_peer_cnt > 1) {
+ elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_DISCONNECT_ALL"));
+ } else {
+ elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_DISCONNECT"));
+ }
+ } else {
+ elm_object_text_set(ugd->multi_btn, _("IDS_WFD_BUTTON_MULTI"));
+ }
+
+ evas_object_show(ugd->multi_btn);
+ __WDUG_LOG_FUNC_EXIT__;
+
+ return 0;
+}
+
+/**
+ * This function let the ug update the genlist item
+ * @return void
+ * @param[in] obj the pointer to genlist item
+ */
+void wfd_ug_view_refresh_glitem(void *obj)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ elm_genlist_item_update(obj);
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug refresh the attributes of button
+ * @return void
+ * @param[in] obj the pointer to the button
+ * @param[in] text the pointer to the text of button
+ * @param[in] enable whether the button is disabled
+ */
+void wfd_ug_view_refresh_button(void *obj, const char *text, int enable)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (NULL == obj || NULL == text) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return;
+ }
+
+ WDUG_LOGD("Set the attributes of button: text[%s], enabled[%d]\n", text, enable);
+ elm_object_text_set(obj, text);
+ elm_object_disabled_set(obj, !enable);
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug know whether current device is connected by me
+ * @return If connected, return TRUE, else return FALSE
+ * @param[in] ugd the pointer to the main data structure
+ * @param[in] dev the pointer to the device
+ */
+static bool __wfd_is_device_connected_with_me(struct ug_data *ugd, device_type_s *dev)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int i = 0;
+
+ for (i = 0; i < ugd->raw_connected_peer_cnt; i++) {
+ if (strncmp(ugd->raw_connected_peers[i].mac_addr,
+ dev->mac_addr, strlen(ugd->raw_connected_peers[i].mac_addr)) == 0) {
+ return TRUE;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return FALSE;
+}
+
+/**
+ * This function let the ug know whether current device is connected by other peer
+ * @return If connected, return TRUE, else return FALSE
+ * @param[in] ugd the pointer to the main data structure
+ * @param[in] dev the pointer to the device
+ */
+static bool __wfd_is_device_busy(struct ug_data *ugd, device_type_s *dev)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ if (ugd->I_am_group_owner == TRUE) {
+ if (dev->is_connected || dev->is_group_owner) {
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ } else {
+ if (dev->is_connected == TRUE && dev->is_group_owner == TRUE) {
+ return FALSE;
+ }
+
+ if (dev->is_connected == TRUE && dev->is_group_owner == FALSE) {
+ return TRUE;
+ }
+
+ if (dev->is_connected == FALSE) {
+ return FALSE;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return FALSE;
+}
+
+/**
+ * This function let the ug calculate how many devices are avaliable
+ * @return TRUE
+ * @param[in] ugd the pointer to the main data structure
+ * @param[in] dev the pointer to the number of avaliable devices
+ */
+static bool __wfd_is_any_device_available(struct ug_data *ugd, int* no_of_available_dev)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int i = 0;
+
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ /* Not include the device which is connected with me */
+ if (__wfd_is_device_connected_with_me(ugd, &ugd->raw_discovered_peers[i])) {
+ continue;
+ }
+ if (!__wfd_is_device_busy(ugd, &ugd->raw_discovered_peers[i]) &&
+ ugd->raw_discovered_peers[i].conn_status != PEER_CONN_STATUS_FAILED_TO_CONNECT) {
+ (*no_of_available_dev)++;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return TRUE;
+}
+
+/**
+ * This function let the ug calculate how many devices are busy
+ * @return TRUE
+ * @param[in] ugd the pointer to the main data structure
+ * @param[in] dev the pointer to the number of busy devices
+ */
+static bool __wfd_is_any_device_busy(struct ug_data *ugd, int* no_of_busy_dev)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int i = 0;
+
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ /* Not include the device which is connected with me */
+ if (__wfd_is_device_connected_with_me(ugd, &ugd->raw_discovered_peers[i])) {
+ continue;
+ }
+ if (__wfd_is_device_busy(ugd, &ugd->raw_discovered_peers[i])) {
+ (*no_of_busy_dev)++;
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return TRUE;
+}
+
+/**
+ * This function let the ug calculate how many devices are connected failed
+ * @return TRUE
+ * @param[in] ugd the pointer to the main data structure
+ * @param[in] dev the pointer to the number of connected failed devices
+ */
+static bool __wfd_is_any_device_connect_failed(struct ug_data *ugd, int* no_of_connect_failed_dev)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int i = 0;
+
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ /* Not include the device which is connected with me */
+ if (__wfd_is_device_connected_with_me(ugd, &ugd->raw_discovered_peers[i])) {
+ continue;
+ }
+ if (!__wfd_is_device_busy(ugd, &ugd->raw_discovered_peers[i]) &&
+ ugd->raw_discovered_peers[i].conn_status == PEER_CONN_STATUS_FAILED_TO_CONNECT) {
+ (*no_of_connect_failed_dev)++;
+ }
+
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return TRUE;
+}
+
+/**
+ * This function let the ug get the device status
+ * @return If success, return 0-3(available: 0, connected: 1, busy: 2, connected failed: 3), else return -1
+ * @param[in] ugd the pointer to the main data structure
+ * @param[in] device the pointer to the number of connected failed devices
+ */
+int wfd_get_device_status(void *data, device_type_s *device)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int ret = -1;
+ int status = -1;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (ugd == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)");
+ return -1;
+ }
+
+ /* check whether it is connected device */
+ ret = __wfd_is_device_connected_with_me(ugd, device);
+ if (ret) {
+ WDUG_LOGD("This is connected device");
+ status = 1;
+ goto err_exit;
+ }
+
+ /* check whether it is busy device */
+ ret = __wfd_is_device_busy(ugd, device);
+ if (ret) {
+ WDUG_LOGD("This is busy device");
+ status = 2;
+ goto err_exit;
+ }
+
+ /* check whether it is available device */
+ if (device->conn_status != PEER_CONN_STATUS_FAILED_TO_CONNECT) {
+ WDUG_LOGD("This is available device");
+ status = 0;
+ } else {
+ WDUG_LOGD("This is connected failed device");
+ status = 3;
+ }
+
+err_exit:
+ __WDUG_LOG_FUNC_EXIT__;
+ return status;
+}
+
+/**
+ * This function let the ug delete the separator
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ * @param[in] obj the pointer to the evas object
+ */
+static void __wfd_separator_del(void *data, Evas_Object *obj)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ elm_genlist_item_class_free(data);
+ return;
+}
+
+/**
+ * This function let the ug add a dialogue separator
+ * @return the separator item
+ * @param[in] genlist the pointer to the genlist
+ * @param[in] separator_style the style of separator
+ */
+Elm_Object_Item *wfd_add_dialogue_separator(Evas_Object *genlist, const char *separator_style)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ assertm_if(NULL == genlist, "NULL!!");
+
+ static Elm_Genlist_Item_Class *separator_itc;
+ separator_itc = elm_genlist_item_class_new();
+ separator_itc->item_style = separator_style;
+ separator_itc->func.text_get = NULL;
+ separator_itc->func.content_get = NULL;
+ separator_itc->func.state_get = NULL;
+ separator_itc->func.del = __wfd_separator_del;
+
+ Elm_Object_Item *sep = elm_genlist_item_append(
+ genlist,
+ separator_itc,
+ separator_itc,
+ NULL,
+ ELM_GENLIST_ITEM_GROUP,
+ NULL,
+ NULL);
+
+ assertm_if(NULL == sep, "NULL!!");
+
+ elm_genlist_item_select_mode_set(sep, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return sep;
+}
+
+/**
+ * This function let the ug create the main genlist
+ * @return the main genlist
+ * @param[in] data the pointer to the main data structure
+ */
+static Evas_Object *_create_basic_genlist(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ Evas_Object *genlist;
+
+ genlist = elm_genlist_add(ugd->naviframe);
+ wfd_add_dialogue_separator(genlist, "dialogue/separator");
+ ugd->head = elm_genlist_item_append(genlist, &head_itc, ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_header_sel, (void *)ugd);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return genlist;
+}
+
+/**
+ * This function let the ug create the about item to append the genlist
+ * @return the main item
+ * @param[in] data the pointer to the main data structure
+ */
+static Evas_Object *_create_about_genlist(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->about_wfd_sep_high_item = wfd_add_dialogue_separator(ugd->genlist, "dialogue/separator");
+ ugd->about_wfd_item = elm_genlist_item_append(ugd->genlist, &name_itc, ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, _gl_about_wifi_sel, (void *)ugd);
+ ugd->about_wfd_sep_low_item = wfd_add_dialogue_separator(ugd->genlist, "dialogue/separator/end");
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return ugd->genlist;
+}
+
+/**
+ * This function let the ug create no device item to append the genlist
+ * @return the main item
+ * @param[in] data the pointer to the main data structure
+ */
+static Evas_Object *_create_no_device_genlist(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->nodevice_title_item = elm_genlist_item_append(ugd->genlist, &title_itc, (void *)ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ ugd->nodevice_item = elm_genlist_item_append(ugd->genlist, &noitem_itc, (void *)ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(ugd->nodevice_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return ugd->genlist;
+}
+
+/**
+ * This function let the ug create multi connect button
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+int _create_multi_button_genlist(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ wfd_refresh_wifi_direct_state(ugd);
+
+ /* show the button */
+ if (ugd->multi_connect_mode != WFD_MULTI_CONNECT_MODE_NONE) {
+ if (ugd->raw_multi_selected_peer_cnt > 1 ||
+ ugd->gl_connected_peer_cnt > 0 ||
+ ugd->wfd_status == WIFI_DIRECT_STATE_CONNECTING) {
+ ugd->multi_button_sep_item = wfd_add_dialogue_separator(ugd->genlist, "dialogue/separator");
+ ugd->multi_button_item = elm_genlist_item_append(ugd->genlist, &button_itc, ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ } else {
+ if (ugd->gl_available_peer_cnt > 1 ||
+ ugd->gl_connected_peer_cnt > 0 ||
+ ugd->wfd_status == WIFI_DIRECT_STATE_CONNECTING) {
+ ugd->multi_button_sep_item = wfd_add_dialogue_separator(ugd->genlist, "dialogue/separator");
+ ugd->multi_button_item = elm_genlist_item_append(ugd->genlist, &button_itc, ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug create busy device list
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+int _create_busy_dev_list(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->busy_wfd_item = elm_genlist_item_append(ugd->genlist, &title_busy_itc, (void *)ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(ugd->busy_wfd_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug create avaliable device list
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+static int _create_available_dev_genlist(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->avlbl_wfd_item = elm_genlist_item_append(ugd->genlist, &title_itc, (void *)ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug create multi connect device list
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+static int _create_multi_connect_dev_genlist(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->multi_connect_wfd_item = elm_genlist_item_append(ugd->genlist, &title_multi_connect_itc, (void *)ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug create connected device list
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+int _create_connected_dev_genlist(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->conn_wfd_item = elm_genlist_item_append(ugd->genlist, &title_conn_itc, (void *)ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(ugd->conn_wfd_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug create connected falied device list
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+int _create_connected_failed_dev_genlist(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->conn_failed_wfd_item = elm_genlist_item_append(ugd->genlist, &title_conn_failed_itc, (void *)ugd, NULL,
+ ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(ugd->conn_failed_wfd_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug make the display callback for connect failed peers
+ * @return if stop the timer, return ECORE_CALLBACK_CANCEL, else return ECORE_CALLBACK_RENEW
+ * @param[in] data the pointer to the user data
+ */
+static Eina_Bool _connect_failed_peers_display_cb(void *user_data)
+{
+ int interval = 0;
+ int res = -1;
+ struct ug_data *ugd = (struct ug_data *) user_data;
+
+ if (NULL == ugd) {
+ WDUG_LOGE("NULL parameters.\n");
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ /* check the timeout, if not timeout, keep the cb */
+ interval = time(NULL) - ugd->last_display_time;
+ if (interval < MAX_DISPLAY_TIME_OUT) {
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ /* start discovery again */
+ res = wifi_direct_start_discovery(FALSE, MAX_SCAN_TIME_OUT);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGE("Failed to start discovery. [%d]\n", res);
+ ugd->is_re_discover = TRUE;
+ wifi_direct_cancel_discovery();
+ } else {
+ WDUG_LOGD("Discovery is started\n");
+ ugd->is_re_discover = FALSE;
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+/**
+ * This function let the ug free the peers
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void wfd_ug_view_free_peers(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ int i = 0;
+
+ for (i = 0; i < ugd->gl_connected_peer_cnt; i++) {
+ WDUG_LOGD("%dth connected peer = %x is deleted\n", i, ugd->gl_connected_peers[i]);
+ if (ugd->gl_connected_peers[i].gl_item != NULL) {
+ elm_object_item_del(ugd->gl_connected_peers[i].gl_item);
+ ugd->gl_connected_peers[i].gl_item = NULL;
+ WDUG_LOGD("Deleted item\n");
+ }
+ }
+
+ ugd->gl_connected_peer_cnt = 0;
+
+ for (i = 0; i < ugd->gl_connected_failed_peer_cnt; i++) {
+ WDUG_LOGD("%dth connected failed peer = %x is deleted\n", i, ugd->gl_connected_failed_peers[i]);
+ if (ugd->gl_connected_failed_peers[i].gl_item != NULL) {
+ elm_object_item_del(ugd->gl_connected_failed_peers[i].gl_item);
+ ugd->gl_connected_failed_peers[i].gl_item = NULL;
+ WDUG_LOGD("Deleted item\n");
+ }
+ }
+
+ ugd->gl_connected_failed_peer_cnt = 0;
+
+ for (i = 0; i < ugd->gl_available_peer_cnt; i++) {
+ WDUG_LOGD("%dth discovered peer = %x is deleted\n", i, ugd->gl_available_peers[i]);
+ if (ugd->gl_available_peers[i].gl_item != NULL) {
+ elm_object_item_del(ugd->gl_available_peers[i].gl_item);
+ ugd->gl_available_peers[i].gl_item = NULL;
+ WDUG_LOGD("Deleted item\n");
+ }
+ }
+
+ ugd->gl_available_peer_cnt = 0;
+
+ for (i = 0; i < ugd->gl_busy_peer_cnt; i++) {
+ WDUG_LOGD("%dth busy peer = %x is deleted\n", i, ugd->gl_busy_peers[i]);
+ if (ugd->gl_busy_peers[i].gl_item != NULL) {
+ elm_object_item_del(ugd->gl_busy_peers[i].gl_item);
+ ugd->gl_busy_peers[i].gl_item = NULL;
+ WDUG_LOGD("Deleted item\n");
+ }
+ }
+
+ ugd->gl_busy_peer_cnt = 0;
+
+ for (i = 0; i < ugd->gl_multi_connect_peer_cnt; i++) {
+ WDUG_LOGD("%dth multi connect peer = %x is deleted\n", i, ugd->gl_multi_connect_peers[i]);
+ if (ugd->gl_multi_connect_peers[i].gl_item != NULL) {
+ elm_object_item_del(ugd->gl_multi_connect_peers[i].gl_item);
+ ugd->gl_multi_connect_peers[i].gl_item = NULL;
+ WDUG_LOGD("Deleted item\n");
+ }
+ }
+
+ ugd->gl_multi_connect_peer_cnt = 0;
+
+ if (ugd->nodevice_title_item != NULL) {
+ elm_object_item_del(ugd->nodevice_title_item);
+ ugd->nodevice_title_item = NULL;
+ }
+
+ if (ugd->nodevice_item != NULL) {
+ elm_object_item_del(ugd->nodevice_item);
+ ugd->nodevice_item = NULL;
+ }
+
+ if (ugd->about_wfd_item != NULL) {
+ elm_object_item_del(ugd->about_wfd_item);
+ ugd->about_wfd_item = NULL;
+ }
+
+ if (ugd->about_wfd_sep_high_item != NULL) {
+ elm_object_item_del(ugd->about_wfd_sep_high_item);
+ ugd->about_wfd_sep_high_item = NULL;
+ }
+
+ if (ugd->about_wfd_sep_low_item != NULL) {
+ elm_object_item_del(ugd->about_wfd_sep_low_item);
+ ugd->about_wfd_sep_low_item = NULL;
+ }
+
+ if (ugd->conn_wfd_item != NULL) {
+ elm_object_item_del(ugd->conn_wfd_item);
+ ugd->conn_wfd_item = NULL;
+ }
+
+ if (ugd->conn_failed_wfd_item != NULL) {
+ elm_object_item_del(ugd->conn_failed_wfd_item);
+ ugd->conn_failed_wfd_item = NULL;
+ }
+
+ if (ugd->display_timer != NULL) {
+ ecore_timer_del(ugd->display_timer);
+ ugd->display_timer = NULL;
+ }
+
+ if (ugd->multi_connect_wfd_item != NULL) {
+ elm_object_item_del(ugd->multi_connect_wfd_item);
+ ugd->multi_connect_wfd_item = NULL;
+ }
+
+ if (ugd->avlbl_wfd_item != NULL) {
+ elm_object_item_del(ugd->avlbl_wfd_item);
+ ugd->avlbl_wfd_item = NULL;
+ }
+
+ if (ugd->busy_wfd_item != NULL) {
+ elm_object_item_del(ugd->busy_wfd_item);
+ ugd->busy_wfd_item = NULL;
+ }
+
+ if (ugd->multi_button_item != NULL) {
+ elm_object_item_del(ugd->multi_button_item);
+ ugd->multi_button_item = NULL;
+ }
+
+ if (ugd->multi_button_sep_item != NULL) {
+ elm_object_item_del(ugd->multi_button_sep_item);
+ ugd->multi_button_sep_item = NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug update the peers
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void wfd_ug_view_update_peers(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ int no_of_busy_dev = 0;
+ int no_of_available_dev = 0;
+ int no_of_conn_dev = 0;
+ int no_of_conn_failed_dev = 0;
+ int i = 0 ;
+ int res = 0;
+ bool is_group_owner = FALSE;
+ int count = 0;
+
+ wfd_ug_view_free_peers(ugd);
+
+ if (ugd->wfd_status == WIFI_DIRECT_STATE_DEACTIVATED) {
+ WDUG_LOGD("Device is deactivated, no need to update UI.");
+ _create_about_genlist(ugd);
+ return;
+ }
+
+ res = wifi_direct_is_group_owner(&is_group_owner);
+ if (res != WIFI_DIRECT_ERROR_NONE) {
+ WDUG_LOGD("Fail to get group_owner_state. ret=[%d]", res);
+ ugd->I_am_group_owner = FALSE;
+ } else {
+ ugd->I_am_group_owner = is_group_owner;
+ }
+
+ __wfd_is_any_device_busy(ugd, &no_of_busy_dev);
+ __wfd_is_any_device_available(ugd, &no_of_available_dev);
+ __wfd_is_any_device_connect_failed(ugd, &no_of_conn_failed_dev);
+ no_of_conn_dev = ugd->raw_connected_peer_cnt;
+
+ ugd->gl_available_peer_cnt = no_of_available_dev;
+ ugd->gl_connected_peer_cnt = no_of_conn_dev;
+ ugd->gl_connected_failed_peer_cnt = no_of_conn_failed_dev;
+ ugd->gl_busy_peer_cnt = no_of_busy_dev;
+
+ WDUG_LOGD("conn_dev=[%d], conn_failed_dev=[%d], avail_dev=[%d], busy_dev=[%d], GO=[%d]\n",
+ no_of_conn_dev, no_of_conn_failed_dev, no_of_available_dev, no_of_busy_dev, is_group_owner);
+
+ if (no_of_conn_dev == 0 && no_of_conn_failed_dev == 0 &&
+ no_of_available_dev == 0 && no_of_busy_dev == 0) {
+ WDUG_LOGE("There are No peers\n");
+ _create_no_device_genlist(ugd);
+ _create_about_genlist(ugd);
+ return;
+ }
+
+ /* display connect peers */
+ if (no_of_conn_dev > 0) {
+ if (!ugd->conn_wfd_item) {
+ _create_connected_dev_genlist(ugd);
+ }
+
+ count = 0;
+ for (i = 0; i < ugd->raw_connected_peer_cnt; i++) {
+ if (ugd->gl_connected_peers[count].gl_item) {
+ elm_object_item_del(ugd->gl_connected_peers[count].gl_item);
+ }
+
+ memcpy(&ugd->gl_connected_peers[count], &ugd->raw_connected_peers[i], sizeof(device_type_s));
+ ugd->gl_connected_peers[count].gl_item = elm_genlist_item_append(ugd->genlist, &peer_conn_itc,
+ (void *)&(ugd->gl_connected_peers[i]), NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(ugd->gl_connected_peers[count].gl_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ count++;
+ }
+ }
+
+ if (ugd->multi_connect_mode != WFD_MULTI_CONNECT_MODE_NONE) {
+ if (ugd->raw_multi_selected_peer_cnt > 0) {
+ if (ugd->raw_connected_peer_cnt < ugd->raw_multi_selected_peer_cnt &&
+ ugd->multi_connect_wfd_item == NULL) {
+ _create_multi_connect_dev_genlist(ugd);
+ }
+
+ count = 0;
+ for (i = 0; i < ugd->raw_multi_selected_peer_cnt; i++) {
+ if (ugd->raw_multi_selected_peers[i].conn_status != PEER_CONN_STATUS_CONNECTED) {
+ if (ugd->gl_multi_connect_peers[count].gl_item) {
+ elm_object_item_del(ugd->gl_multi_connect_peers[count].gl_item);
+ }
+
+ memcpy(&ugd->gl_multi_connect_peers[count], &ugd->raw_multi_selected_peers[i], sizeof(device_type_s));
+ ugd->gl_multi_connect_peers[count].gl_item = elm_genlist_item_append(ugd->genlist, &peer_itc,
+ (void *) &(ugd->gl_multi_connect_peers[count]), NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ count++;
+ }
+ }
+
+ ugd->gl_multi_connect_peer_cnt = count;
+ }
+
+ _create_multi_button_genlist(ugd);
+ } else {
+ /*
+ * Note that
+ * If GC, no display available peers
+ * Otherwise, display available peers
+ */
+ if (no_of_available_dev > 0 && (no_of_conn_dev == 0 || is_group_owner == TRUE)) {
+ if (ugd->avlbl_wfd_item == NULL) {
+ _create_available_dev_genlist(ugd);
+ }
+
+ count = 0;
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ /* Not include the device which is connected with me */
+ if (__wfd_is_device_connected_with_me(ugd, &ugd->raw_discovered_peers[i])) {
+ continue;
+ }
+ if (!__wfd_is_device_busy(ugd, &ugd->raw_discovered_peers[i]) &&
+ ugd->raw_discovered_peers[i].conn_status != PEER_CONN_STATUS_FAILED_TO_CONNECT) {
+ if (ugd->gl_available_peers[count].gl_item) {
+ elm_object_item_del(ugd->gl_available_peers[count].gl_item);
+ }
+
+ memcpy(&ugd->gl_available_peers[count], &ugd->raw_discovered_peers[i], sizeof(device_type_s));
+ ugd->gl_available_peers[count].gl_item = elm_genlist_item_append(ugd->genlist, &peer_itc,
+ (void *)&(ugd->gl_available_peers[count]), NULL, ELM_GENLIST_ITEM_NONE, _gl_peer_sel,
+ (void *)&(ugd->gl_available_peers[count]));
+ count++;
+ }
+ }
+ }
+
+ /* display connect failed peers */
+ if (no_of_conn_failed_dev > 0) {
+ if (!ugd->conn_failed_wfd_item) {
+ _create_connected_failed_dev_genlist(ugd);
+ }
+
+ /* add timer for disappearing failed peers after N secs */
+ if (NULL == ugd->display_timer) {
+ ugd->last_display_time = time(NULL);
+ ugd->display_timer = ecore_timer_add(5.0, (Ecore_Task_Cb)_connect_failed_peers_display_cb, ugd);
+ }
+
+ count = 0;
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ /* Not include the device which is connected with me */
+ if (__wfd_is_device_connected_with_me(ugd, &ugd->raw_discovered_peers[i])) {
+ continue;
+ }
+ if (!__wfd_is_device_busy(ugd, &ugd->raw_discovered_peers[i]) &&
+ ugd->raw_discovered_peers[i].conn_status == PEER_CONN_STATUS_FAILED_TO_CONNECT) {
+ if (ugd->gl_connected_failed_peers[count].gl_item) {
+ elm_object_item_del(ugd->gl_connected_failed_peers[count].gl_item);
+ }
+
+ memcpy(&ugd->gl_connected_failed_peers[count], &ugd->raw_discovered_peers[i], sizeof(device_type_s));
+ ugd->gl_connected_failed_peers[count].gl_item = elm_genlist_item_append(ugd->genlist, &peer_conn_failed_itc,
+ (void *)&(ugd->gl_connected_failed_peers[count]), NULL, ELM_GENLIST_ITEM_NONE, NULL, ugd);
+ elm_genlist_item_select_mode_set(ugd->gl_connected_failed_peers[count].gl_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ count++;
+ }
+ }
+ }
+
+ _create_multi_button_genlist(ugd);
+
+ /* If connected, not display busy device */
+ if (no_of_conn_dev == 0 && no_of_busy_dev > 0) {
+ if (ugd->busy_wfd_item == NULL) {
+ _create_busy_dev_list(ugd);
+ }
+
+ count = 0;
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ /* Not include the device which is connected with me */
+ if (__wfd_is_device_connected_with_me(ugd, &ugd->raw_discovered_peers[i])) {
+ continue;
+ }
+ if (__wfd_is_device_busy(ugd, &ugd->raw_discovered_peers[i]) == TRUE) {
+ if (ugd->gl_busy_peers[count].gl_item) {
+ elm_object_item_del(ugd->gl_busy_peers[count].gl_item);
+ }
+
+ memcpy(&ugd->gl_busy_peers[count], &ugd->raw_discovered_peers[i], sizeof(device_type_s));
+ ugd->gl_busy_peers[count].gl_item = elm_genlist_item_append(ugd->genlist, &peer_busy_itc,
+ (void *)&(ugd->gl_busy_peers[count]), NULL, ELM_GENLIST_ITEM_NONE, _gl_busy_peer_sel, ugd);
+ count++;
+ }
+ }
+ }
+ }
+ _create_about_genlist(ugd);
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug create the main view
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void create_wfd_ug_view(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ Elm_Object_Item *navi_item = NULL;
+
+ if (ugd == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)");
+ return;
+ }
+
+ ugd->naviframe = elm_naviframe_add(ugd->base);
+ elm_object_part_content_set(ugd->base, "elm.swallow.content", ugd->naviframe);
+ evas_object_show(ugd->naviframe);
+
+ ugd->back_btn = elm_button_add(ugd->naviframe);
+ elm_object_style_set(ugd->back_btn, "naviframe/back_btn/default");
+ evas_object_smart_callback_add(ugd->back_btn, "clicked", _back_btn_cb, (void *)ugd);
+ elm_object_focus_allow_set(ugd->back_btn, EINA_FALSE);
+
+ ugd->genlist = _create_basic_genlist(ugd);
+ if (ugd->genlist == NULL) {
+ WDUG_LOGE("Failed to create basic genlist");
+ return;
+ }
+
+ evas_object_show(ugd->genlist);
+ wfd_refresh_wifi_direct_state(ugd);
+ if (ugd->wfd_status > WIFI_DIRECT_STATE_ACTIVATING) {
+ ugd->wfd_onoff = TRUE;
+ }
+
+ navi_item = elm_naviframe_item_push(ugd->naviframe, _("IDS_WFD_HEADER_WIFI_DIRECT"), ugd->back_btn, NULL, ugd->genlist, NULL);
+ /* create scan button */
+ ugd->scan_btn = elm_button_add(ugd->naviframe);
+ elm_object_style_set(ugd->scan_btn, "naviframe/toolbar/default");
+ elm_object_text_set(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"));
+ evas_object_smart_callback_add(ugd->scan_btn, "clicked", _scan_btn_cb, (void *)ugd);
+ elm_object_item_part_content_set(navi_item, "toolbar_button1", ugd->scan_btn);
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
diff --git a/ug-wifidirect/src/wfd_ug_multiconnect_view.c b/ug-wifidirect/src/wfd_ug_multiconnect_view.c
new file mode 100755
index 0000000..4b21c9a
--- /dev/null
+++ b/ug-wifidirect/src/wfd_ug_multiconnect_view.c
@@ -0,0 +1,807 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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 select_all_itc;
+Elm_Gen_Item_Class device_itc;
+
+/**
+ * This function let the ug call it when click 'back' button in multi connect view
+ * @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 _multiconnect_view_back_btn_cb(void *data, Evas_Object * obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+
+ if (!ugd) {
+ WDUG_LOGE("The param is NULL\n");
+ return;
+ }
+
+ ugd->multiconn_view_genlist = NULL;
+ elm_naviframe_item_pop(ugd->naviframe);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug reset the connected failed peers
+ * @return false
+ * @param[in] event_info the pointer to the event information
+ */
+gboolean __wfd_multi_connect_reset_cb(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int i = 0;
+ struct ug_data *ugd = (struct ug_data *)data;
+
+ /* remove the failed peers*/
+ for (i = 0; i < ugd->raw_multi_selected_peer_cnt; i++) {
+ if (ugd->raw_multi_selected_peers[i].conn_status == PEER_CONN_STATUS_FAILED_TO_CONNECT) {
+ memset(&ugd->raw_multi_selected_peers[i], 0x00, sizeof(device_type_s));
+ ugd->raw_multi_selected_peer_cnt--;
+ }
+ }
+
+ wfd_ug_view_update_peers(ugd);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return false;
+}
+
+/**
+ * This function let the ug free the selected peers in multi connect view
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void wfd_free_multi_selected_peers(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int i = 0;
+ struct ug_data *ugd = (struct ug_data *)data;
+
+ /* destroy the created group */
+ wifi_direct_destroy_group();
+
+ /* release the selected peers */
+ for (i = 0; i < ugd->raw_multi_selected_peer_cnt; i++) {
+ memset(&ugd->raw_multi_selected_peers[i], 0x00, sizeof(device_type_s));
+ }
+
+ ugd->raw_multi_selected_peer_cnt = 0;
+ ugd->multi_connect_mode = WFD_MULTI_CONNECT_MODE_NONE;
+
+ __WDUG_LOG_FUNC_EXIT__;
+
+}
+
+/**
+ * This function let the ug stop to connect to selected peer
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_stop_multi_connect(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+
+ /* change the title of failed peers */
+ ugd->multi_connect_mode = WFD_MULTI_CONNECT_MODE_COMPLETED;
+ wfd_ug_view_refresh_glitem(ugd->multi_connect_wfd_item);
+
+ wfd_client_set_p2p_group_owner_intent(7);
+
+ /* after 30s, remove the failed peers */
+ g_timeout_add(30000 /*ms*/, __wfd_multi_connect_reset_cb, ugd);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug start to connect the selected peers
+ * @return If success, return 0, else return -1
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_start_multi_connect(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int res;
+
+ if (ugd->raw_multi_selected_peer_cnt > 0) {
+ ugd->multi_connect_mode = WFD_MULTI_CONNECT_MODE_IN_PROGRESS;
+
+ res = wfd_client_group_add();
+ if (res == -1) {
+ WDUG_LOGE("Failed to add group");
+ wfd_free_multi_selected_peers(ugd);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return -1;
+ }
+
+ } else {
+ WDUG_LOGD("No selected peers.\n");
+ return -1;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug connect to the next selected peer automatically
+ * @return If stop the timer, return false, else return true
+ * @param[in] data the pointer to the main data structure
+ */
+gboolean wfd_multi_connect_next_cb(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int i;
+ int res;
+
+ // Reset g_source handler..
+ ugd->g_source_multi_connect_next = 0;
+
+ if (ugd->raw_multi_selected_peer_cnt > 0) {
+ ugd->multi_connect_mode = WFD_MULTI_CONNECT_MODE_IN_PROGRESS;
+ for (i = 0; i < ugd->raw_multi_selected_peer_cnt; i++) {
+ if (ugd->raw_multi_selected_peers[i].conn_status == PEER_CONN_STATUS_WAIT_FOR_CONNECT) {
+ res = wfd_client_connect(ugd->raw_multi_selected_peers[i].mac_addr);
+ if (res == -1) {
+ WDUG_LOGD("Failed to connect [%s].\n", ugd->raw_multi_selected_peers[i].ssid);
+ ugd->raw_multi_selected_peers[i].conn_status = PEER_CONN_STATUS_FAILED_TO_CONNECT;
+ } else {
+ ugd->raw_multi_selected_peers[i].conn_status = PEER_CONN_STATUS_CONNECTING;
+ break;
+ }
+ }
+ }
+
+ if (i >= ugd->raw_multi_selected_peer_cnt) {
+ // All selected peers are touched.
+ WDUG_LOGD("Stop Multi Connect...\n");
+ wfd_stop_multi_connect(ugd);
+ }
+ } else {
+ WDUG_LOGD("No selected peers.\n");
+ return -1;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return false;
+}
+
+/**
+ * This function let the ug call it when click 'connect' button in multi connect view
+ * @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 _connect_btn_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+ int i = 0;
+ int count = 0;
+ char popup_text[MAX_POPUP_TEXT_SIZE] = {0};
+ WDUG_LOGD("_connect_btn_cb \n");
+
+ for (i = 0; i < ugd->gl_available_peer_cnt ; i++) {
+ if (TRUE == ugd->multi_conn_dev_list[i].dev_sel_state) {
+ WDUG_LOGD("ugd->peers[i].mac_addr = %s, i = %d\n", ugd->multi_conn_dev_list[i].peer.mac_addr, i);
+
+ memcpy(&ugd->raw_multi_selected_peers[count], &ugd->multi_conn_dev_list[i].peer, sizeof(device_type_s));
+ ugd->raw_multi_selected_peers[count].conn_status = PEER_CONN_STATUS_WAIT_FOR_CONNECT;
+ count++;
+ }
+ }
+
+ ugd->raw_multi_selected_peer_cnt = count;
+
+ /* if more than 7 device selected, show the popup */
+ if (count > MAX_POPUP_PEER_NUM) {
+ snprintf(popup_text, MAX_POPUP_TEXT_SIZE, _("IDS_WFD_POP_MULTI_CONNECT"), count);
+ wfd_ug_warn_popup(ugd, popup_text, POP_TYPE_MULTI_CONNECT_POPUP);
+ }
+
+ /* start multi connection */
+ wfd_start_multi_connect(ugd);
+
+ elm_naviframe_item_pop(ugd->naviframe);
+
+ //ToDo: Do we need to free multiconn_view_genlist?
+ ugd->multiconn_view_genlist = NULL;
+ _change_multi_button_title(ugd);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug delete 'select(n)' notify
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+static void _wfd_multi_del_select_info_label(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *)data;
+
+ if (NULL == ugd) {
+ WDUG_LOGE("The param is NULL\n");
+ return;
+ }
+
+ if (ugd->notify) {
+ evas_object_del(ugd->notify);
+ ugd->notify = NULL;
+ }
+
+ if (ugd->notify_layout) {
+ evas_object_del(ugd->notify_layout);
+ ugd->notify_layout = NULL;
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug add 'select(n)' notify
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ * @param[in] count the number of selected peers
+ */
+static void _wfd_multi_add_select_info_label(void *data, int count)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ char select_lablel[MAX_POPUP_TEXT_SIZE] = {0};
+ struct ug_data *ugd = (struct ug_data *)data;
+
+ if (NULL == ugd || count <= 0) {
+ WDUG_LOGE("The param is NULL\n");
+ return;
+ }
+
+ /* delete previous notify */
+ _wfd_multi_del_select_info_label(ugd);
+
+ /* add notify */
+ ugd->notify = elm_notify_add(ugd->base);
+ if (NULL == ugd->notify) {
+ WDUG_LOGE("Add notify failed\n");
+ return;
+ }
+
+ /* set the align to center of bottom */
+ elm_notify_align_set(ugd->notify, ELM_NOTIFY_ALIGN_FILL, 1.0);
+
+ ugd->notify_layout = elm_layout_add(ugd->notify);
+ if (NULL == ugd->notify_layout) {
+ evas_object_del(ugd->notify);
+ ugd->notify = NULL;
+ return;
+ }
+
+ elm_layout_theme_set(ugd->notify_layout, "standard", "selectioninfo", "vertical/bottom_64");
+ elm_object_content_set(ugd->notify, ugd->notify_layout);
+
+ snprintf(select_lablel, MAX_POPUP_TEXT_SIZE, _("IDS_WFD_POP_SELECTED_DEVICE_NUM"), count);
+ elm_object_part_text_set(ugd->notify_layout, "elm.text", select_lablel);
+ elm_notify_timeout_set(ugd->notify, 3);
+ evas_object_show(ugd->notify);
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return;
+}
+
+/**
+ * This function let the ug call it when click the peer in multi connect view
+ * @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 _wfd_gl_multi_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ int i = 0;
+ int index = 0;
+ int sel_count = 0;
+ bool is_sel = FALSE;
+ bool is_selct_all = TRUE;
+ Eina_Bool state = 0;
+ Evas_Object *chk_box = NULL;
+ char msg[MAX_POPUP_TEXT_SIZE] = {0};
+ struct ug_data *ugd = (struct ug_data *)data;
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+
+ if (NULL == ugd || NULL == item) {
+ WDUG_LOGE("The param is NULL\n");
+ return;
+ }
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ index = elm_genlist_item_index_get(item) - 3; /* subtract the previous items */
+ WDUG_LOGD("selected index = %d \n", index);
+ if (index < 0) {
+ WDUG_LOGE("The index is invalid.\n");
+ return;
+ }
+
+ chk_box = elm_object_item_part_content_get((Elm_Object_Item *)event_info, "elm.icon.1");
+ state = elm_check_state_get(chk_box);
+ WDUG_LOGD("state = %d \n", state);
+ elm_check_state_set(chk_box, !state);
+
+ ugd->multi_conn_dev_list[index].dev_sel_state = !state;
+ WDUG_LOGD("ptr->dev_sel_state = %d \n", ugd->multi_conn_dev_list[index].dev_sel_state);
+ WDUG_LOGD("ptr->peer.mac_addr = %s \n", ugd->multi_conn_dev_list[index].peer.mac_addr);
+
+ /* update the checkbox and button */
+ for (; i < ugd->gl_available_dev_cnt_at_multiconn_view; i++) {
+ if (ugd->multi_conn_dev_list[i].dev_sel_state) {
+ is_sel = TRUE;
+ sel_count++;
+ } else {
+ is_selct_all = FALSE;
+ }
+ }
+
+ chk_box = elm_object_item_part_content_get(ugd->mcview_select_all_item, "elm.icon");
+ elm_check_state_set(chk_box, is_selct_all);
+
+ if (ugd->multi_connect_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_connect_btn, _("IDS_WFD_BUTTON_CONNECT"), is_sel);
+ }
+
+ if (sel_count > 0) {
+ snprintf(msg, MAX_POPUP_TEXT_SIZE, _("IDS_WFD_POP_SELECTED_DEVICE_NUM"), sel_count);
+ _wfd_multi_add_select_info_label(ugd, sel_count);
+ } else {
+ _wfd_multi_del_select_info_label(ugd);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click the 'select all' item in multi connect view
+ * @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 _wfd_gl_sel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ int sel_count = 0;
+ char msg[MAX_POPUP_TEXT_SIZE] = {0};
+ struct ug_data *ugd = (struct ug_data *)data;
+
+ elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+ if (NULL == ugd || NULL == obj) {
+ WDUG_LOGE("NULL parameters.\n");
+ return;
+ }
+
+ Evas_Object *sel_chkbox = elm_object_item_part_content_get(ugd->mcview_select_all_item, "elm.icon");
+ if (sel_chkbox == NULL) {
+ WDUG_LOGD("select-all chkbox is NULL\n");
+ return;
+ }
+
+ Eina_Bool state = elm_check_state_get(sel_chkbox);
+ if (state == TRUE) {
+ state = FALSE;
+ } else {
+ state = TRUE;
+ }
+
+ elm_check_state_set(sel_chkbox, state);
+ WDUG_LOGD("state = %d \n", state);
+
+ int i = 0;
+ bool is_sel = FALSE;
+ Elm_Object_Item *item = NULL;
+ Evas_Object *chk_box = NULL;
+
+ /* set the state of all the available devices */
+ for (i = 0; i < ugd->gl_available_dev_cnt_at_multiconn_view; i++) {
+ is_sel = state;
+ ugd->multi_conn_dev_list[i].dev_sel_state = state;
+ item = ugd->multi_conn_dev_list[i].peer.gl_item;
+ chk_box = elm_object_item_part_content_get(item, "elm.icon.1");
+ elm_check_state_set(chk_box, state);
+
+ if (state) {
+ sel_count++;
+ }
+ }
+
+ /* update the connect button */
+ if (ugd->multi_connect_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_connect_btn, _("IDS_WFD_BUTTON_CONNECT"), is_sel);
+ }
+
+ /* tickernoti popup */
+ if (sel_count > 0) {
+ snprintf(msg, MAX_POPUP_TEXT_SIZE, _("IDS_WFD_POP_SELECTED_DEVICE_NUM"), sel_count);
+ _wfd_multi_add_select_info_label(ugd, sel_count);
+ } else {
+ _wfd_multi_del_select_info_label(ugd);
+ }
+}
+
+/**
+ * This function let the ug get the label of peer
+ * @return the label of peer
+ * @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 *_wfd_gl_device_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ WDUG_LOGD("part %s", part);
+ device_type_s *peer = (device_type_s *)data;
+
+ if (NULL == peer) {
+ return NULL;
+ }
+
+ if (!strcmp(part, "elm.text")) {
+ return strdup(peer->ssid);
+ }
+ return NULL;
+}
+
+/**
+ * This function let the ug get the icon path of peer
+ * @return the icon path of titile
+ * @param[in] peer the pointer to the peer
+ */
+static char *__wfd_get_device_icon_path(device_type_s *peer)
+{
+ char *img_path = NULL;
+
+ switch (peer->category) {
+ case WFD_DEVICE_TYPE_COMPUTER:
+ img_path = WFD_ICON_DEVICE_COMPUTER;
+ break;
+ case WFD_DEVICE_TYPE_INPUT_DEVICE:
+ img_path = WFD_ICON_DEVICE_INPUT_DEVICE;
+ break;
+ case WFD_DEVICE_TYPE_PRINTER:
+ img_path = WFD_ICON_DEVICE_PRINTER;
+ break;
+ case WFD_DEVICE_TYPE_CAMERA:
+ img_path = WFD_ICON_DEVICE_CAMERA;
+ break;
+ case WFD_DEVICE_TYPE_STORAGE:
+ img_path = WFD_ICON_DEVICE_STORAGE;
+ break;
+ case WFD_DEVICE_TYPE_NW_INFRA:
+ img_path = WFD_ICON_DEVICE_NETWORK_INFRA;
+ break;
+ case WFD_DEVICE_TYPE_DISPLAYS:
+ img_path = WFD_ICON_DEVICE_DISPLAY;
+ break;
+ case WFD_DEVICE_TYPE_MM_DEVICES:
+ img_path = WFD_ICON_DEVICE_MULTIMEDIA_DEVICE;
+ break;
+ case WFD_DEVICE_TYPE_GAME_DEVICES:
+ img_path = WFD_ICON_DEVICE_GAMING_DEVICE;
+ break;
+ case WFD_DEVICE_TYPE_TELEPHONE:
+ img_path = WFD_ICON_DEVICE_TELEPHONE;
+ break;
+ case WFD_DEVICE_TYPE_AUDIO:
+ img_path = WFD_ICON_DEVICE_AUDIO_DEVICE;
+ break;
+ default:
+ img_path = WFD_ICON_DEVICE_COMPUTER;
+ break;
+ }
+
+ return img_path;
+}
+
+
+/**
+ * This function let the ug call it when click the check box
+ * @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 _wfd_check_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (NULL == obj) {
+ WDUG_LOGE("NULL parameters.\n");
+ return;
+ }
+
+ Eina_Bool state = elm_check_state_get(obj);
+ elm_check_state_set(obj, !state);
+ WDUG_LOGD("state = %d \n", state);
+}
+
+/**
+ * This function let the ug get the icon of peer
+ * @return the icon of peer
+ * @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_device_icon_get(void *data, Evas_Object *obj, const char *part)
+{
+ char *img_path = NULL;
+ device_type_s *peer = (device_type_s *) data;
+ Evas_Object *icon = NULL;
+
+ WDUG_LOGD("Part %s", part);
+
+ if (!strcmp(part, "elm.icon.1")) {
+ WDUG_LOGD("Part %s", part);
+ icon = elm_check_add(obj);
+ elm_check_state_set(icon, EINA_FALSE);
+ evas_object_smart_callback_add(icon, "changed", _wfd_check_clicked_cb, (void *)data);
+ } else if (!strcmp(part, "elm.icon.2")) {
+ img_path = __wfd_get_device_icon_path(peer);
+ 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);
+ }
+
+ return icon;
+}
+
+/**
+ * This function let the ug get the label of select all
+ * @return the label of select all
+ * @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 *_wfd_gl_select_all_label_get(void *data, Evas_Object *obj, const char *part)
+{
+ if (!strcmp(part, "elm.text")) {
+ WDUG_LOGD("Adding text %s", part);
+ return strdup("Select all");
+ }
+ return NULL;
+}
+
+/**
+ * This function let the ug get the icon of select all
+ * @return the icon of select all
+ * @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)
+{
+ Evas_Object *icon = NULL;
+
+ if (!strcmp(part, "elm.icon")) {
+ WDUG_LOGD("Part %s", part);
+ icon = elm_check_add(obj);
+ elm_check_state_set(icon, EINA_FALSE);
+ evas_object_smart_callback_add(icon, "changed", _wfd_check_clicked_cb, (void *)data);
+ }
+
+ return icon;
+}
+
+/**
+ * This function let the ug fee the multi connect devices
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_free_multiconnect_device(struct ug_data *ugd)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ int i = 0;
+
+ if (ugd->multiconn_view_genlist == NULL) {
+ return 0;
+ }
+
+ if (ugd->mcview_title_item != NULL) {
+ elm_object_item_del(ugd->mcview_title_item);
+ ugd->mcview_title_item = NULL;
+ }
+
+ if (ugd->mcview_select_all_item != NULL) {
+ elm_object_item_del(ugd->mcview_select_all_item);
+ ugd->mcview_select_all_item = NULL;
+ }
+
+ if (ugd->mcview_nodevice_item != NULL) {
+ elm_object_item_del(ugd->mcview_nodevice_item);
+ ugd->mcview_nodevice_item = NULL;
+ }
+
+ for (i = 0; i < ugd->gl_available_dev_cnt_at_multiconn_view; i++) {
+ if (ugd->multi_conn_dev_list[i].peer.gl_item != NULL) {
+ elm_object_item_del(ugd->multi_conn_dev_list[i].peer.gl_item);
+ ugd->multi_conn_dev_list[i].peer.gl_item = NULL;
+ }
+ }
+ ugd->gl_available_dev_cnt_at_multiconn_view = 0;
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug update the multi connect devices
+ * @return 0
+ * @param[in] data the pointer to the main data structure
+ */
+int wfd_update_multiconnect_device(struct ug_data *ugd)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ int count = 0;
+ device_type_s *device = NULL;
+ Evas_Object *genlist = NULL;
+ int i = 0;
+
+ genlist = ugd->multiconn_view_genlist;
+ if (ugd->multiconn_view_genlist == NULL) {
+ return 0;
+ }
+
+ wfd_free_multiconnect_device(ugd);
+
+ count = 0;
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ device = &ugd->raw_discovered_peers[i];
+ if (device->is_connected == FALSE) {
+ count++;
+ }
+ }
+ ugd->gl_available_dev_cnt_at_multiconn_view = count;
+
+ if (ugd->gl_available_dev_cnt_at_multiconn_view == 0) {
+ WDUG_LOGE("There are No peers\n");
+ ugd->mcview_title_item = elm_genlist_item_append(genlist, &title_itc, ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(ugd->mcview_title_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ ugd->mcview_nodevice_item = elm_genlist_item_append(genlist, &noitem_itc, (void *)ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(ugd->mcview_nodevice_item , ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ } else {
+ ugd->mcview_title_item = elm_genlist_item_append(genlist, &title_itc, ugd, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(ugd->mcview_title_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ ugd->mcview_select_all_item = elm_genlist_item_append(genlist, &select_all_itc, ugd, NULL, ELM_GENLIST_ITEM_NONE, _wfd_gl_sel_cb, ugd);
+
+ count = 0;
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ device = &ugd->raw_discovered_peers[i];
+ if (device->is_connected == FALSE) {
+ WDUG_LOGD("%dth peer being added on genlist\n", i);
+
+ if (ugd->multi_conn_dev_list[count].peer.gl_item != NULL) {
+ elm_object_item_del(ugd->multi_conn_dev_list[count].peer.gl_item);
+ }
+
+ ugd->multi_conn_dev_list[count].peer.gl_item = NULL;
+ memcpy(&ugd->multi_conn_dev_list[count].peer, device, sizeof(device_type_s));
+ ugd->multi_conn_dev_list[count].dev_sel_state = FALSE;
+ ugd->multi_conn_dev_list[count].peer.gl_item = elm_genlist_item_append(genlist, &device_itc,
+ (void *)&ugd->multi_conn_dev_list[count].peer, NULL, ELM_GENLIST_ITEM_NONE, _wfd_gl_multi_sel_cb, ugd);
+ count++;
+ }
+ }
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+ return 0;
+}
+
+/**
+ * This function let the ug create the view for multi connection
+ * @return void
+ * @param[in] ugd the pointer to the main data structure
+ */
+void wfd_create_multiconnect_view(struct ug_data *ugd)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ Evas_Object *back_btn = NULL;
+ Evas_Object *genlist = NULL;
+ Elm_Object_Item *navi_item = NULL;
+
+ if (ugd == NULL) {
+ WDUG_LOGE("Incorrect parameter(NULL)");
+ return;
+ }
+
+ select_all_itc.item_style = "1text.1icon.3";
+ select_all_itc.func.text_get = _wfd_gl_select_all_label_get;
+ select_all_itc.func.content_get = _wfd_gl_select_all_icon_get;
+ select_all_itc.func.state_get = NULL;
+ select_all_itc.func.del = NULL;
+
+ device_itc.item_style = "1text.2icon.2";
+ device_itc.func.text_get = _wfd_gl_device_label_get;
+ device_itc.func.content_get = _wfd_gl_device_icon_get;
+ device_itc.func.state_get = NULL;
+ device_itc.func.del = NULL;
+
+ WDUG_LOGD("_wifid_create_multiconnect_view");
+ back_btn = elm_button_add(ugd->naviframe);
+ elm_object_style_set(back_btn, "naviframe/back_btn/default");
+ evas_object_smart_callback_add(back_btn, "clicked", _multiconnect_view_back_btn_cb, (void *)ugd);
+ elm_object_focus_allow_set(back_btn, EINA_FALSE);
+
+ genlist = elm_genlist_add(ugd->naviframe);
+ ugd->multiconn_view_genlist = genlist;
+ ugd->mcview_title_item = NULL;
+
+ wfd_update_multiconnect_device(ugd);
+
+ evas_object_show(genlist);
+
+ navi_item = elm_naviframe_item_push(ugd->naviframe, _("Multi connect"), back_btn, NULL, genlist, NULL);
+
+ /* create scan button */
+ ugd->multi_scan_btn = elm_button_add(ugd->naviframe);
+ elm_object_style_set(ugd->multi_scan_btn, "naviframe/toolbar/default");
+ elm_object_text_set(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"));
+ evas_object_smart_callback_add(ugd->multi_scan_btn, "clicked", _scan_btn_cb, (void *)ugd);
+ elm_object_item_part_content_set(navi_item, "toolbar_button1", ugd->multi_scan_btn);
+
+ /* create connect button */
+ ugd->multi_connect_btn = elm_button_add(ugd->naviframe);
+ elm_object_style_set(ugd->multi_connect_btn, "naviframe/toolbar/default");
+ elm_object_text_set(ugd->multi_connect_btn, _("IDS_WFD_BUTTON_CONNECT"));
+ evas_object_smart_callback_add(ugd->multi_connect_btn, "clicked", _connect_btn_cb, (void *)ugd);
+ elm_object_disabled_set(ugd->multi_connect_btn, EINA_TRUE);
+ elm_object_item_part_content_set(navi_item, "toolbar_button2", ugd->multi_connect_btn);
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
diff --git a/ug-wifidirect/src/wfd_ug_popup.c b/ug-wifidirect/src/wfd_ug_popup.c
new file mode 100755
index 0000000..b7778b3
--- /dev/null
+++ b/ug-wifidirect/src/wfd_ug_popup.c
@@ -0,0 +1,379 @@
+/*
+* WiFi-Direct UG
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+
+* Licensed under the Flora License, Version 1.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.tizenopensource.org/license
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <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"
+
+/**
+ * This function let the ug call it when click 'ok' button in hotspot action popup
+ * @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 _wfd_ug_act_popup_hotspot_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int result = -1;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ result = wfd_mobile_ap_off(ugd);
+ if (0 == result) {
+ /* refresh the header */
+ ugd->head_text_mode = HEAD_TEXT_TYPE_ACTIVATING;
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ /* while activating/deactivating, disable the buttons */
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->multi_scan_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->back_btn) {
+ elm_object_disabled_set(ugd->back_btn, TRUE);
+ }
+ }
+
+ evas_object_del(ugd->act_popup);
+ ugd->act_popup = NULL;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'cancel' button in hotspot action popup
+ * @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 _wfd_ug_act_popup_hotspot_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ evas_object_del(ugd->act_popup);
+ ugd->act_popup = NULL;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'ok' button in wifi action popup
+ * @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 _wfd_ug_act_popup_wifi_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int result = -1;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ result = wfd_wifi_off(ugd);
+ if (0 == result) {
+ /* refresh the header */
+ ugd->head_text_mode = HEAD_TEXT_TYPE_ACTIVATING;
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ /* while activating/deactivating, disable the buttons */
+ if (ugd->scan_btn) {
+ wfd_ug_view_refresh_button(ugd->scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->multi_scan_btn) {
+ wfd_ug_view_refresh_button(ugd->multi_scan_btn, _("IDS_WFD_BUTTON_SCAN"), FALSE);
+ }
+
+ if (ugd->back_btn) {
+ elm_object_disabled_set(ugd->back_btn, TRUE);
+ }
+ }
+
+ evas_object_del(ugd->act_popup);
+ ugd->act_popup = NULL;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'cancel' button in wifi action popup
+ * @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 _wfd_ug_act_popup_wifi_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
+ wfd_ug_view_refresh_glitem(ugd->head);
+
+ evas_object_del(ugd->act_popup);
+ ugd->act_popup = NULL;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'ok' button in disconnect all popup
+ * @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 _wfd_ug_act_popup_disconnect_all_ok_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ int i = 0;
+ struct ug_data *ugd = (struct ug_data *) data;
+ if (NULL == ugd) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return;
+ }
+
+ wfd_client_disconnect(NULL);
+
+ if (ugd->multi_connect_mode != WFD_MULTI_CONNECT_MODE_NONE) {
+ wfd_free_multi_selected_peers(ugd);
+ } else {
+ /* update the connecting icon */
+ for (i = 0; i < ugd->raw_discovered_peer_cnt; i++) {
+ ugd->raw_discovered_peers[i].conn_status = PEER_CONN_STATUS_DISCONNECTED;
+ wfd_ug_view_refresh_glitem(ugd->raw_discovered_peers[i].gl_item);
+ }
+ }
+
+ evas_object_del(ugd->act_popup);
+ ugd->act_popup = NULL;
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'cancel' button in disconnect all popup
+ * @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 _wfd_ug_act_popup_disconnect_all_cancel_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+
+ struct ug_data *ugd = (struct ug_data *) data;
+ if (NULL == ugd) {
+ WDUG_LOGE("Incorrect parameter(NULL)\n");
+ return;
+ }
+
+ evas_object_del(ugd->act_popup);
+ ugd->act_popup = NULL;
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug create a action popup
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ * @param[in] message the pointer to the text of popup
+ * @param[in] popup_type the message type
+ */
+void wfd_ug_act_popup(void *data, const char *message, int popup_type)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ Evas_Object *popup = NULL;
+ Evas_Object *btn1 = NULL, *btn2 = NULL;
+
+ popup = elm_popup_add(ugd->base);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_text_set(popup, message);
+
+ btn1 = elm_button_add(popup);
+ btn2 = elm_button_add(popup);
+ elm_object_style_set(btn1, "popup_button/default");
+ elm_object_style_set(btn2, "popup_button/default");
+
+ /* set the different text by type */
+ if (popup_type == POPUP_TYPE_WIFI_OFF || popup_type == POPUP_TYPE_HOTSPOT_OFF) {
+ elm_object_text_set(btn1, S_("IDS_COM_SK_YES"));
+ elm_object_text_set(btn2, S_("IDS_COM_SK_NO"));
+ } else {
+ elm_object_text_set(btn1, S_("IDS_COM_SK_OK"));
+ elm_object_text_set(btn2, S_("IDS_COM_SK_CANCEL"));
+ }
+
+ elm_object_part_content_set(popup, "button1", btn1);
+ elm_object_part_content_set(popup, "button2", btn2);
+
+ /* set the different callback by type */
+ if (popup_type == POPUP_TYPE_WIFI_OFF) {
+ evas_object_smart_callback_add(btn1, "clicked", _wfd_ug_act_popup_wifi_ok_cb, (void *)ugd);
+ evas_object_smart_callback_add(btn2, "clicked", _wfd_ug_act_popup_wifi_cancel_cb, (void *)ugd);
+ } else if (popup_type == POPUP_TYPE_HOTSPOT_OFF) {
+ evas_object_smart_callback_add(btn1, "clicked", _wfd_ug_act_popup_hotspot_ok_cb, (void *)ugd);
+ evas_object_smart_callback_add(btn2, "clicked", _wfd_ug_act_popup_hotspot_cancel_cb, (void *)ugd);
+ } else if (popup_type == POP_TYPE_DISCONNECT ||
+ popup_type == POP_TYPE_DISCONNECT_ALL ||
+ popup_type == POP_TYPE_SCAN_AGAIN) {
+ evas_object_smart_callback_add(btn1, "clicked", _wfd_ug_act_popup_disconnect_all_ok_cb, (void *)ugd);
+ evas_object_smart_callback_add(btn2, "clicked", _wfd_ug_act_popup_disconnect_all_cancel_cb, (void *)ugd);
+ }
+
+ evas_object_show(popup);
+ ugd->act_popup = popup;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug remove the action popup
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ */
+void wfg_ug_act_popup_remove(void *data)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ if (ugd->act_popup) {
+ evas_object_del(ugd->act_popup);
+ ugd->act_popup = NULL;
+ }
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'ok' button in warning popup of terminated problem
+ * @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 _wfd_ug_terminate_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ evas_object_del(ugd->warn_popup);
+ ugd->warn_popup = NULL;
+
+ wfd_ug_view_free_peers(ugd);
+
+ ug_destroy_me(ugd->ug);
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'ok' button in warning popup of turning off WFD automatically
+ * @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 _wfd_ug_automatic_turn_off_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ evas_object_del(ugd->warn_popup);
+ ugd->warn_popup = NULL;
+
+ /* turn off the Wi-Fi Direct */
+ wfd_client_switch_off(ugd);
+
+ /* antomaticlly turn on tethering mode */
+ if (TRUE == ugd->is_hotspot_off) {
+ wfd_mobile_ap_on(ugd);
+ }
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug call it when click 'ok' button in warning popup
+ * @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 _wfd_ug_warn_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+
+ evas_object_del(ugd->warn_popup);
+ ugd->warn_popup = NULL;
+
+ __WDUG_LOG_FUNC_EXIT__;
+}
+
+/**
+ * This function let the ug create a warning popup
+ * @return void
+ * @param[in] data the pointer to the main data structure
+ * @param[in] message the pointer to the text of popup
+ * @param[in] popup_type the message type
+ */
+void wfd_ug_warn_popup(void *data, const char *message, int popup_type)
+{
+ __WDUG_LOG_FUNC_ENTER__;
+ struct ug_data *ugd = (struct ug_data *) data;
+ Evas_Object *popup = NULL;
+ Evas_Object *btn = NULL;
+
+ popup = elm_popup_add(ugd->base);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_text_set(popup, "title,text", _("IDS_WFD_POP_TITILE_CONNECTION"));
+ elm_object_text_set(popup, message);
+
+ btn = elm_button_add(popup);
+ elm_object_style_set(btn, "popup_button/default");
+ elm_object_text_set(btn, S_("IDS_COM_SK_OK"));
+ elm_object_part_content_set(popup, "button1", btn);
+ if (popup_type == POPUP_TYPE_TERMINATE) {
+ evas_object_smart_callback_add(btn, "clicked", _wfd_ug_terminate_popup_cb, (void *)ugd);
+ } else if (popup_type == POP_TYPE_AUTOMATIC_TURN_OFF) {
+ evas_object_smart_callback_add(btn, "clicked", _wfd_ug_automatic_turn_off_popup_cb, (void *)ugd);
+ } else {
+ evas_object_smart_callback_add(btn, "clicked", _wfd_ug_warn_popup_cb, (void *)ugd);
+ }
+
+ evas_object_show(popup);
+ ugd->warn_popup = popup;
+ __WDUG_LOG_FUNC_EXIT__;
+}
+