4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.tizenopensource.org/license
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
25 #include <Elementary.h>
27 #include <ui-gadget-module.h>
28 #include <wifi-direct.h>
31 #include "wfd_ug_view.h"
32 #include "wfd_client.h"
34 static void _wfd_ug_act_popup_wifi_ok_cb(void *data, Evas_Object *obj, void *event_info)
37 struct ug_data *ugd = (struct ug_data*) data;
39 // TODO: Turn off WiFi
40 ugd->wfd_status = WFD_LINK_STATUS_DEACTIVATED;
43 evas_object_del(ugd->act_popup);
44 ugd->act_popup = NULL;
48 static void _wfd_ug_act_popup_wifi_cancel_cb(void *data, Evas_Object *obj, void *event_info)
51 struct ug_data *ugd = (struct ug_data*) data;
53 // TODO: set genlist head item as "WiFi Direct"
54 ugd->head_text_mode = HEAD_TEXT_TYPE_DIRECT;
55 wfd_ug_view_refresh_glitem(ugd->head);
57 evas_object_del(ugd->act_popup);
58 ugd->act_popup = NULL;
62 static void _wfd_ug_act_popup_disconnect_ok_cb(void *data, Evas_Object *obj, void *event_info)
66 char *mac_addr = NULL;
67 struct ug_data *ugd = (struct ug_data*) data;
70 DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
74 if (ugd->gl_connected_peer_cnt < 1) {
75 DBG(LOG_ERROR, "No connected peer\n");
76 evas_object_del(ugd->act_popup);
77 ugd->act_popup = NULL;
82 mac_addr = ugd->gl_connected_peers[0].mac_addr;
83 wfd_client_disconnect(mac_addr);
84 if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_IN_PROGRESS) {
85 wfd_stop_multi_connect(ugd);
88 evas_object_del(ugd->act_popup);
89 ugd->act_popup = NULL;
94 static void _wfd_ug_act_popup_disconnect_cancel_cb(void *data, Evas_Object *obj, void *event_info)
98 struct ug_data *ugd = (struct ug_data*) data;
100 DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
104 evas_object_del(ugd->act_popup);
105 ugd->act_popup = NULL;
110 static void _wfd_ug_act_popup_disconnect_all_ok_cb(void *data, Evas_Object *obj, void *event_info)
114 struct ug_data *ugd = (struct ug_data*) data;
116 DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
120 wfd_client_disconnect(NULL);
121 if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_IN_PROGRESS) {
122 wfd_stop_multi_connect(ugd);
125 evas_object_del(ugd->act_popup);
126 ugd->act_popup = NULL;
131 static void _wfd_ug_act_popup_disconnect_all_cancel_cb(void *data, Evas_Object *obj, void *event_info)
135 struct ug_data *ugd = (struct ug_data*) data;
137 DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
141 evas_object_del(ugd->act_popup);
142 ugd->act_popup = NULL;
147 static void _wfd_ug_act_popup_scan_again_ok_cb(void *data, Evas_Object *obj, void *event_info)
151 struct ug_data *ugd = (struct ug_data*) data;
153 DBG(LOG_ERROR, "Incorrect parameter(NULL)\n");
157 if (ugd->conn_wfd_item != NULL) {
158 elm_object_item_del(ugd->conn_wfd_item);
159 ugd->conn_wfd_item = NULL;
162 /* cancel the current connection */
163 wfd_client_disconnect(NULL);
164 if (ugd->multi_connect_mode == WFD_MULTI_CONNECT_MODE_IN_PROGRESS) {
165 wfd_stop_multi_connect(ugd);
168 /* start discovery again */
169 wfd_client_start_discovery(ugd);
170 evas_object_del(ugd->act_popup);
171 ugd->act_popup = NULL;
176 static void _wfd_ug_act_popup_scan_again_cancel_cb(void *data, Evas_Object *obj, void *event_info)
180 struct ug_data *ugd = (struct ug_data*) data;
182 evas_object_del(ugd->act_popup);
183 ugd->act_popup = NULL;
188 void wfd_ug_act_popup(void *data, const char *message, int popup_type)
191 struct ug_data *ugd = (struct ug_data*) data;
192 Evas_Object *popup = NULL;
193 Evas_Object *btn1 = NULL, *btn2 = NULL;
195 popup = elm_popup_add(ugd->base);
196 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
197 elm_object_text_set(popup, message);
199 btn1 = elm_button_add(popup);
200 btn2 = elm_button_add(popup);
201 elm_object_style_set(btn1, "popup_button/default");
202 elm_object_style_set(btn2, "popup_button/default");
204 /* set the different text by type */
205 if (popup_type == POPUP_TYPE_WIFI_OFF) {
206 elm_object_text_set(btn1, S_("IDS_COM_SK_YES"));
207 elm_object_text_set(btn2, S_("IDS_COM_SK_NO"));
209 elm_object_text_set(btn1, S_("IDS_COM_SK_OK"));
210 elm_object_text_set(btn2, S_("IDS_COM_SK_CANCEL"));
213 elm_object_part_content_set(popup, "button1", btn1);
214 elm_object_part_content_set(popup, "button2", btn2);
216 /* set the different callback by type */
217 if (popup_type == POPUP_TYPE_WIFI_OFF) {
218 evas_object_smart_callback_add(btn1, "clicked", _wfd_ug_act_popup_wifi_ok_cb, (void*) ugd);
219 evas_object_smart_callback_add(btn2, "clicked", _wfd_ug_act_popup_wifi_cancel_cb, (void*) ugd);
220 } else if (popup_type == POP_TYPE_DISCONNECT) {
221 //evas_object_smart_callback_add(btn1, "clicked", _wfd_ug_act_popup_disconnect_ok_cb, (void*) ugd);
222 evas_object_smart_callback_add(btn1, "clicked", _wfd_ug_act_popup_disconnect_all_ok_cb, (void*) ugd);
223 evas_object_smart_callback_add(btn2, "clicked", _wfd_ug_act_popup_disconnect_cancel_cb, (void*) ugd);
224 } else if (popup_type == POP_TYPE_DISCONNECT_ALL) {
225 evas_object_smart_callback_add(btn1, "clicked", _wfd_ug_act_popup_disconnect_all_ok_cb, (void*) ugd);
226 evas_object_smart_callback_add(btn2, "clicked", _wfd_ug_act_popup_disconnect_all_cancel_cb, (void*) ugd);
227 } else if (popup_type == POP_TYPE_SCAN_AGAIN) {
228 evas_object_smart_callback_add(btn1, "clicked", _wfd_ug_act_popup_scan_again_ok_cb, (void*) ugd);
229 evas_object_smart_callback_add(btn2, "clicked", _wfd_ug_act_popup_scan_again_cancel_cb, (void*) ugd);
232 evas_object_show(popup);
233 ugd->act_popup = popup;
237 void wfg_ug_act_popup_remove(void *data)
240 struct ug_data *ugd = (struct ug_data*) data;
244 evas_object_del(ugd->act_popup);
245 ugd->act_popup = NULL;
250 static void _wfd_ug_terminate_popup_cb(void *data, Evas_Object *obj, void *event_info)
253 struct ug_data *ugd = (struct ug_data*) data;
255 evas_object_del(ugd->warn_popup);
256 ugd->warn_popup = NULL;
258 wfd_ug_view_free_peers(ugd);
260 ug_destroy_me(ugd->ug);
264 static void _wfd_ug_warn_popup_cb(void *data, Evas_Object *obj, void *event_info)
267 struct ug_data *ugd = (struct ug_data*) data;
269 evas_object_del(ugd->warn_popup);
270 ugd->warn_popup = NULL;
275 void wfd_ug_warn_popup(void *data, const char *message, int popup_type)
278 struct ug_data *ugd = (struct ug_data*) data;
279 Evas_Object *popup = NULL;
280 Evas_Object *btn = NULL;
282 popup = elm_popup_add(ugd->base);
283 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
284 elm_object_text_set(popup, message);
286 btn = elm_button_add(popup);
287 elm_object_style_set(btn, "popup_button/default");
288 elm_object_text_set(btn, S_("IDS_COM_SK_OK"));
289 elm_object_part_content_set(popup, "button1", btn);
290 if(popup_type == POPUP_TYPE_TERMINATE)
291 evas_object_smart_callback_add(btn, "clicked", _wfd_ug_terminate_popup_cb, (void*) ugd);
293 evas_object_smart_callback_add(btn, "clicked", _wfd_ug_warn_popup_cb, (void*) ugd);
295 evas_object_show(popup);
296 ugd->warn_popup = popup;
300 void wfg_ug_warn_popup_remove(void *data)
303 struct ug_data *ugd = (struct ug_data*) data;
307 evas_object_del(ugd->warn_popup);
308 ugd->warn_popup = NULL;
314 void wfd_ug_tickernoti_popup(char *msg)
323 DBG(LOG_ERROR, "FAIL: bundle_create()\n");
327 /* tickernoti style */
328 ret = bundle_add(b, "0", "info");
330 DBG(LOG_ERROR, "Fail to add tickernoti style\n");
336 ret = bundle_add(b, "1", msg);
338 DBG(LOG_ERROR, "Fail to add popup text\n");
343 /* orientation of tickernoti */
344 ret = bundle_add(b, "2", "1");
346 DBG(LOG_ERROR, "Fail to add orientation of tickernoti\n");
351 /* timeout(second) of tickernoti */
352 ret = bundle_add(b, "3", "3");
354 DBG(LOG_ERROR, "Fail to add timeout of tickernoti\n");
359 /* launch tickernoti */
360 ret = syspopup_launch(TICKERNOTI_SYSPOPUP, b);
362 DBG(LOG_ERROR, "Fail to launch syspopup\n");