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.
21 * This file implements wifi direct system popup view functions.
23 * @file wfd-app-popup-view.c
24 * @author Sungsik Jang (sungsik.jang@samsung.com)
31 #include "wifi-direct.h"
33 #include "wfd-app-strings.h"
34 #include "wfd-app-util.h"
36 extern wfd_appdata_t *g_wfd_ad;
37 extern wfd_popup_t *g_wfd_pop;
38 extern unsigned char g_wfd_peer_mac[6];
39 extern unsigned char g_wfd_peer_name[32];
40 static Ecore_Timer *pb_timer = NULL;
42 void wfd_tickernoti_popup(char *msg);
44 static void __popup_resp_cb(void *data, Evas_Object * obj, void *event_info)
46 __WFD_APP_FUNC_ENTER__;
48 wfd_appdata_t *ad = wfd_get_appdata();
50 int resp = (int) data;
51 Evas_Object *btn = obj;
52 char msg[WFD_POP_STR_MAX_LEN] = {0};
54 WFD_APP_LOG(WFD_APP_LOG_HIGH, "popup resp : %d\n", resp);
58 case /* MT */ WFD_POP_RESP_APRV_CONNECT_PBC_YES:
60 WFD_APP_LOG(WFD_APP_LOG_HIGH,
61 "WFD_POP_RESP_APRV_CONNECT_PBC_YES\n");
64 result = wifi_direct_accept_connection(ad->peer_mac);
65 WFD_APP_LOG(WFD_APP_LOG_LOW,
66 "wifi_direct_accept_connection() result=[%d]\n",
68 if (result == WIFI_DIRECT_ERROR_NONE)
70 /* tickernoti popup */
71 wfd_tickernoti_popup(_("IDS_WFD_POP_CONNECTING"));
75 WFD_APP_LOG(WFD_APP_LOG_ERROR,
76 "wifi_direct_accept_connection() FAILED!!\n");
77 evas_object_hide(ad->win);
79 /* tickernoti popup */
80 snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_CONNECT_FAILED"), ad->peer_name);
81 wfd_tickernoti_popup(msg);
86 case /* MT */ WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES:
90 WFD_APP_LOG(WFD_APP_LOG_HIGH,
91 "WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES\n");
94 ecore_timer_del(pb_timer);
98 if (wifi_direct_generate_wps_pin() != WIFI_DIRECT_ERROR_NONE)
100 WFD_APP_LOG(WFD_APP_LOG_LOW, "wifi_direct_generate_wps_pin() is failed\n");
104 if (wifi_direct_get_wps_pin(&pin) != WIFI_DIRECT_ERROR_NONE)
106 WFD_APP_LOG(WFD_APP_LOG_LOW, "wifi_direct_generate_wps_pin() is failed\n");
109 strncpy(ad->pin_number, pin, 32);
113 WFD_APP_LOG(WFD_APP_LOG_LOW, "button ok: pin [%s]", ad->pin_number);
115 result = wifi_direct_accept_connection(ad->peer_mac);
116 WFD_APP_LOG(WFD_APP_LOG_LOW,
117 "wifi_direct_accept_connection() failed. result=[%d]\n",
119 if (result == WIFI_DIRECT_ERROR_NONE)
121 evas_object_hide(ad->win);
122 wfd_prepare_popup(WFD_POP_PROG_CONNECT_WITH_PIN, NULL);
126 /* tickernoti popup */
127 wfd_tickernoti_popup(_("IDS_WFD_POP_CONNECT_FAILED"));
132 case /* MO */ WFD_POP_RESP_PROG_CONNECT_KEYPAD_OK:
133 case /* MT */ WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES:
135 WFD_APP_LOG(WFD_APP_LOG_HIGH,
136 "WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES\n");
139 int len = strlen(ad->pin_number);
140 WFD_APP_LOG(WFD_APP_LOG_LOW, "button ok: pin [%s]", ad->pin_number);
142 if (len > 7 && len < 64)
145 WFD_APP_LOG(WFD_APP_LOG_LOW, "pin=[%s]\n", ad->pin_number);
147 result = wifi_direct_set_wps_pin(ad->pin_number);
149 if (result != WIFI_DIRECT_ERROR_NONE)
151 /* tickernoti popup */
152 snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_CONNECT_FAILED"), ad->peer_name);
153 wfd_tickernoti_popup(msg);
157 //result = wifi_direct_activate_pushbutton();
158 result = wifi_direct_accept_connection(ad->peer_mac);
159 WFD_APP_LOG(WFD_APP_LOG_LOW,
160 "wifi_direct_accept_connection(%s) result=[%d]\n",
161 ad->peer_mac, result);
162 if (result != WIFI_DIRECT_ERROR_NONE)
164 WFD_APP_LOG(WFD_APP_LOG_ERROR,
165 "wifi_direct_accept_connection() FAILED!!\n");
166 evas_object_hide(ad->win);
168 /* tickernoti popup */
169 snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_CONNECT_FAILED"), ad->peer_name);
170 wfd_tickernoti_popup(msg);
175 WFD_APP_LOG(WFD_APP_LOG_ERROR, "Error, Incorrect PIN!!\n");
177 /* tickernoti popup */
178 wfd_tickernoti_popup(_("IDS_WFD_POP_PIN_INVALID"));
180 /* redraw the popup */
181 if (WFD_POP_RESP_PROG_CONNECT_KEYPAD_OK == resp) {
182 wfd_prepare_popup(WFD_POP_PROG_CONNECT_WITH_KEYPAD, (void *) NULL);
184 wfd_prepare_popup(WFD_POP_APRV_CONNECTION_WPS_KEYPAD_REQ, (void *) NULL);
192 case /* MT */ WFD_POP_RESP_APRV_CONNECT_NO:
194 WFD_APP_LOG(WFD_APP_LOG_HIGH,
195 "WFD_POP_RESP_APRV_CONNECT_NO: destroy_popup...\n");
199 ecore_timer_del(pb_timer);
203 result = wifi_direct_disconnect(ad->peer_mac);
204 WFD_APP_LOG(WFD_APP_LOG_LOW,
205 "wifi_direct_disconnect[%s] result=[%d]\n",
206 ad->peer_mac, result);
210 case WFD_POP_RESP_PROG_CONNECT_CANCEL:
212 WFD_APP_LOG(WFD_APP_LOG_HIGH, "WFD_POP_RESP_PROG_CONNECT_CANCEL\n");
215 result = wifi_direct_disconnect(ad->peer_mac);
216 WFD_APP_LOG(WFD_APP_LOG_LOW,
217 "wifi_direct_disconnect[%s] result=[%d]\n",
218 ad->peer_mac, result);
220 if (result == WIFI_DIRECT_ERROR_NONE)
222 /* tickernoti popup */
223 snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_DISCONNECTED"), ad->peer_name);
224 wfd_tickernoti_popup(msg);
228 WFD_APP_LOG(WFD_APP_LOG_ERROR,
229 "wifi_direct_disconnect() FAILED!!\n");
231 /* tickernoti popup */
232 snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_DISCONNECT_FAILED"), ad->peer_name);
233 wfd_tickernoti_popup(msg);
238 case WFD_POP_RESP_AUTOMATIC_TURNOFF_OK:
240 WFD_APP_LOG(WFD_APP_LOG_HIGH, "WFD_POP_RESP_AUTOMATIC_TURNOFF_OK\n");
242 /* turn off the Wi-Fi Direct */
243 result = wifi_direct_get_state(&ad->wfd_status);
244 if (result != WIFI_DIRECT_ERROR_NONE) {
245 WFD_APP_LOG(WFD_APP_LOG_LOW, "Failed to get link status. [%d]\n", result);
249 if (ad->wfd_status < WIFI_DIRECT_STATE_ACTIVATING) {
250 WFD_APP_LOG(WFD_APP_LOG_LOW, "Wi-Fi Direct is already deactivated\n");
252 ad->wfd_status = WIFI_DIRECT_STATE_DEACTIVATING;
253 wifi_direct_deactivate();
262 WFD_APP_LOG(WFD_APP_LOG_ERROR, "Unknown respone\n");
263 evas_object_hide(ad->win);
268 __WFD_APP_FUNC_EXIT__;
271 static Evas_Object *__create_progress_layout(Evas_Object * parent,
274 __WFD_APP_FUNC_ENTER__;
276 if (parent == NULL || text == NULL)
278 WFD_APP_LOG(WFD_APP_LOG_ERROR, "param is NULL\n");
282 Evas_Object *progressbar = NULL, *layout = NULL;
283 Evas_Object *label = NULL;
286 layout = elm_layout_add(parent);
289 WFD_APP_LOG(WFD_APP_LOG_ERROR, "layout is NULL\n");
293 elm_layout_file_set(layout, EDJ_NAME, "progress_popup");
294 evas_object_size_hint_weight_set(layout,
295 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
297 progressbar = elm_progressbar_add(layout);
298 if (progressbar == NULL)
300 WFD_APP_LOG(WFD_APP_LOG_ERROR, "progressbar is NULL\n");
301 evas_object_del(layout);
304 elm_object_style_set(progressbar, "list_process");
305 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
306 evas_object_size_hint_weight_set(progressbar,
307 EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
308 elm_object_part_content_set(layout, "popup_pb", progressbar);
309 elm_progressbar_pulse(progressbar, EINA_TRUE);
311 label = elm_label_add(layout);
314 WFD_APP_LOG(WFD_APP_LOG_ERROR, "label is NULL\n");
315 evas_object_del(layout);
316 evas_object_del(progressbar);
319 elm_object_style_set(label, "popup_description/default");
320 elm_object_part_content_set(layout, "popup_progress_text", label);
321 edje_object_part_geometry_get(layout, "popup_progress_text", NULL, NULL, &w,
323 elm_label_line_wrap_set(label, ELM_WRAP_WORD);
324 elm_label_wrap_width_set(label, w);
325 elm_object_text_set(label, text);
327 evas_object_show(layout);
329 __WFD_APP_FUNC_EXIT__;
335 void wfd_destroy_popup()
337 __WFD_APP_FUNC_ENTER__;
339 wfd_appdata_t *ad = wfd_get_appdata();
343 WFD_APP_LOG(WFD_APP_LOG_ERROR, "ad is NULL\n");
349 evas_object_del(ad->popup);
353 if (ad->popup_timeout_handle > 0)
355 g_source_remove(ad->popup_timeout_handle);
356 ad->popup_timeout_handle = 0;
359 evas_object_hide(ad->win);
361 __WFD_APP_FUNC_EXIT__;
365 static Evas_Object *wfd_draw_pop_type_a(Evas_Object * win, wfd_popup_t * pop)
366 { //no button with spin
367 __WFD_APP_FUNC_ENTER__;
371 popup = elm_popup_add(win);
372 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
373 elm_object_text_set(popup, pop->text);
374 elm_popup_timeout_set(popup, pop->timeout);
375 evas_object_show(popup);
376 evas_object_show(win);
378 __WFD_APP_FUNC_EXIT__;
382 static Evas_Object *wfd_draw_pop_type_b(Evas_Object * win, wfd_popup_t * pop)
383 { //one button with spin
384 __WFD_APP_FUNC_ENTER__;
386 Evas_Object *popup = NULL;
387 Evas_Object *btn = NULL;
389 popup = elm_popup_add(win);
390 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
391 elm_object_text_set(popup, pop->text);
393 btn = elm_button_add(popup);
394 elm_object_style_set(btn, "popup_button/default");
395 elm_object_text_set(btn, pop->label1);
396 elm_object_part_content_set(popup, "button1", btn);
397 evas_object_smart_callback_add(btn, "clicked", __popup_resp_cb,
398 (void *) pop->resp_data1);
400 evas_object_show(popup);
401 evas_object_show(win);
403 __WFD_APP_FUNC_EXIT__;
407 static Evas_Object *wfd_draw_pop_type_c(Evas_Object * win, wfd_popup_t * pop)
409 __WFD_APP_FUNC_ENTER__;
411 Evas_Object *popup = NULL;
412 Evas_Object *btn1 = NULL, *btn2 = NULL;
414 popup = elm_popup_add(win);
415 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
416 elm_object_text_set(popup, pop->text);
418 btn1 = elm_button_add(popup);
419 elm_object_style_set(btn1, "popup_button/default");
420 elm_object_text_set(btn1, pop->label1);
421 elm_object_part_content_set(popup, "button1", btn1);
422 evas_object_smart_callback_add(btn1, "clicked", __popup_resp_cb,
423 (void *) pop->resp_data1);
425 btn2 = elm_button_add(popup);
426 elm_object_style_set(btn2, "popup_button/default");
427 elm_object_text_set(btn2, pop->label2);
428 elm_object_part_content_set(popup, "button2", btn2);
429 evas_object_smart_callback_add(btn2, "clicked", __popup_resp_cb,
430 (void *) pop->resp_data2);
432 evas_object_show(popup);
433 evas_object_show(win);
435 __WFD_APP_FUNC_EXIT__;
439 static Evas_Object *wfd_draw_pop_type_d(Evas_Object * win, wfd_popup_t * pop)
441 __WFD_APP_FUNC_ENTER__;
446 popup = elm_popup_add(win);
447 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
448 elm_object_style_set(popup, "customstyle");
449 layout = __create_progress_layout(popup, pop->text);
450 elm_popup_timeout_set(popup, pop->timeout);
451 elm_object_content_set(popup, layout);
452 evas_object_show(popup);
453 evas_object_show(win);
455 __WFD_APP_FUNC_EXIT__;
459 static void __popup_block_clicked_cb(void *data, Evas_Object * obj,
462 wfd_appdata_t *ad = wfd_get_appdata();
463 wfd_popup_t *pop = NULL;
469 evas_object_hide(ad->win);
471 if (ad->popup_timeout_handle > 0)
473 g_source_remove(ad->popup_timeout_handle);
474 ad->popup_timeout_handle = 0;
478 gboolean __popup_remove_timeout_cb(gpointer user_data)
480 wfd_appdata_t *ad = wfd_get_appdata();
481 wfd_popup_t *pop = NULL;
488 if (pop != user_data)
492 evas_object_hide(ad->win);
494 ad->popup_timeout_handle = 0;
498 static Evas_Object *wfd_draw_pop_type_e(Evas_Object * win, wfd_popup_t * pop)
500 __WFD_APP_FUNC_ENTER__;
502 wfd_appdata_t *ad = wfd_get_appdata();
508 popup = elm_popup_add(win);
509 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
510 elm_object_text_set(popup, pop->text);
511 evas_object_smart_callback_add(popup, "block,clicked",
512 __popup_block_clicked_cb, NULL);
513 ad->popup_timeout_handle =
514 g_timeout_add(3000, __popup_remove_timeout_cb, popup);
515 evas_object_show(popup);
516 evas_object_show(win);
518 __WFD_APP_FUNC_EXIT__;
523 static void _smart_ime_cb(void *data, Evas_Object * obj, void *event_info)
525 __WFD_APP_FUNC_ENTER__;
526 wfd_appdata_t *ad = wfd_get_appdata();
528 Ecore_IMF_Context *imf_context = NULL;
529 imf_context = (Ecore_IMF_Context *) ad->pin_entry;
531 if (NULL == imf_context)
533 WFD_APP_LOG(WFD_APP_LOG_ERROR, "Error!!! Ecore_IMF_Context is NULL!!");
538 elm_entry_markup_to_utf8(elm_entry_entry_get
539 ((const Evas_Object *) imf_context));
543 WFD_APP_LOG(WFD_APP_LOG_LOW, "* text [%s], len=[%d]", txt, strlen(txt));
544 strncpy(ad->pin_number, txt, sizeof(ad->pin_number));
548 WFD_APP_LOG(WFD_APP_LOG_LOW, "Err!");
551 __WFD_APP_FUNC_EXIT__;
555 //#ifdef HIDE_PIN_NUMBER
557 static void _check_changed_cb(void *data, Evas_Object * obj, void *event_info)
559 wfd_appdata_t *ad = wfd_get_appdata();
564 Eina_Bool state = elm_check_state_get(obj);
565 elm_entry_password_set(ad->pin_entry, !state);
569 static Eina_Bool _fn_pb_timer(void *data)
573 char time_label[32] = {0};
574 wfd_wps_display_popup_t *wps_display_popup = (wfd_wps_display_popup_t*) data;
576 if (NULL == wps_display_popup) {
577 WFD_APP_LOG(WFD_APP_LOG_ERROR, "Param is NULL.\n");
578 return ECORE_CALLBACK_CANCEL;
581 Evas_Object *progressbar = NULL;
582 Evas_Object *time = NULL;
584 progressbar = wps_display_popup->progressbar;
585 time = wps_display_popup->time;
586 value = elm_progressbar_value_get(progressbar);
589 WFD_APP_LOG(WFD_APP_LOG_ERROR, "Progress end.\n");
590 return ECORE_CALLBACK_CANCEL;
593 wps_display_popup->step++;
594 step = wps_display_popup->step;
595 value = ((double)step) / WFD_POP_TIMER_120;
596 elm_progressbar_value_set(progressbar, value);
597 WFD_APP_LOG(WFD_APP_LOG_LOW, "step: %d, value: %f\n", wps_display_popup->step, value);
599 /* show the time label */
602 snprintf(time_label, 32, "00:0%d", step);
604 snprintf(time_label, 32, "00:%d", step);
608 snprintf(time_label, 32, "0%d:0%d", step/60, step%60);
610 snprintf(time_label, 32, "0%d:%d", step/60, step%60);
614 elm_object_text_set(time, time_label);
616 return ECORE_CALLBACK_RENEW;
619 static Evas_Object * _add_edit_field(Evas_Object *parent, const char *title, const char *guide, Eina_Bool single_line, Eina_Bool is_editable)
621 assertm_if(NULL == parent, "parent is NULL!!");
623 Evas_Object *layout = elm_layout_add(parent);
624 assertm_if(NULL == layout, "layout is NULL!!");
626 if (title && title[0] != '\0') {
627 elm_layout_theme_set(layout, "layout", "editfield", "title");
628 elm_object_part_text_set(layout, "elm.text", title);
631 elm_layout_theme_set(layout, "layout", "editfield", "default");
634 Evas_Object *entry = elm_entry_add(parent);
635 assertm_if(NULL == entry, "entry is NULL!!");
637 elm_object_part_content_set(layout, "elm.swallow.content", entry);
638 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
640 if (guide && guide[0] != '\0') {
641 elm_object_part_text_set(layout, "elm.guidetext", guide);
644 elm_entry_single_line_set(entry, single_line);
645 elm_entry_scrollable_set(entry, single_line);
646 elm_entry_editable_set(entry, is_editable);
647 elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm");
648 evas_object_show(layout);
653 Evas_Object *wfd_draw_pop_type_display(Evas_Object * win, wfd_popup_t * pop)
655 __WFD_APP_FUNC_ENTER__;
657 Evas_Object *popup = NULL;
658 Evas_Object *label = NULL;
659 Evas_Object *layout = NULL;
660 Evas_Object *progressbar = NULL;
661 Evas_Object *time = NULL;
662 Evas_Object *btn1 = NULL;
663 Evas_Object *btn2 = NULL;
664 static wfd_wps_display_popup_t wps_display_popup;
666 popup = elm_popup_add(win);
667 elm_object_style_set(popup, "customstyle");
668 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, 0.0);
670 Evas_Object *box = elm_box_add(popup);
672 evas_object_del(popup);
677 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0);
678 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0);
679 elm_object_part_content_set(popup, NULL, box);
680 evas_object_show(box);
683 label = elm_label_add(box);
684 elm_object_style_set(label, "popup/default");
685 elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
686 elm_object_text_set(label, pop->text);
687 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
688 evas_object_size_hint_align_set(label, EVAS_HINT_FILL, 0.0);
689 elm_box_pack_end(box, label);
690 evas_object_show(label);
692 /* add progressbar */
693 progressbar = elm_progressbar_add(box);
694 elm_object_style_set(progressbar, "list_progress");
695 elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
696 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.0);
697 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, 0.0);
698 elm_progressbar_value_set(progressbar, 0.0);
699 elm_box_pack_end(box, progressbar);
700 evas_object_show(progressbar);
703 time = elm_label_add(box);
704 elm_object_style_set(time, "popup/default");
705 elm_object_text_set(time, "00:00");
706 evas_object_size_hint_weight_set(time, EVAS_HINT_EXPAND, 0.0);
707 evas_object_size_hint_align_set(time, EVAS_HINT_FILL, 0.0);
708 elm_box_pack_end(box, time);
709 evas_object_show(time);
711 /* start progressbar timer */
712 wps_display_popup.step = 0;
713 wps_display_popup.progressbar= progressbar;
714 wps_display_popup.time = time;
715 pb_timer = ecore_timer_add(1, _fn_pb_timer, &wps_display_popup);
717 /* add cancel buttons */
718 btn1 = elm_button_add(popup);
719 elm_object_style_set(btn1, "popup_button/default");
720 elm_object_text_set(btn1, pop->label1);
721 elm_object_part_content_set(popup, "button1", btn1);
722 evas_object_smart_callback_add(btn1, "clicked", __popup_resp_cb,
723 (void *) pop->resp_data1);
725 btn2 = elm_button_add(popup);
726 elm_object_style_set(btn2, "popup_button/default");
727 elm_object_text_set(btn2, pop->label2);
728 elm_object_part_content_set(popup, "button2", btn2);
729 evas_object_smart_callback_add(btn2, "clicked", __popup_resp_cb,
730 (void *) pop->resp_data2);
732 elm_object_content_set(popup, box);
733 evas_object_show(popup);
734 evas_object_show(win);
736 __WFD_APP_FUNC_EXIT__;
740 Evas_Object *wfd_draw_pop_type_keypad(Evas_Object * win, wfd_popup_t * pop)
742 __WFD_APP_FUNC_ENTER__;
743 wfd_appdata_t *ad = wfd_get_appdata();
745 Evas_Object *conformant = NULL;
746 Evas_Object *layout = NULL;
747 Evas_Object *pinpopup = NULL;
748 Evas_Object *label = NULL;
749 Evas_Object *btn1 = NULL, *btn2 = NULL;
751 conformant = elm_conformant_add(win);
752 assertm_if(NULL == conformant, "conformant is NULL!!");
753 elm_win_conformant_set(win, EINA_TRUE);
754 elm_win_resize_object_add(win, conformant);
755 evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, 0.0);
756 evas_object_size_hint_align_set(conformant, EVAS_HINT_FILL, 0.0);
757 evas_object_show(conformant);
759 layout = elm_layout_add(conformant);
760 elm_object_content_set(conformant, layout);
762 pinpopup = elm_popup_add(layout);
763 assertm_if(NULL == pinpopup, "pinpopup is NULL!!");
764 elm_object_style_set(pinpopup, "customstyle");
765 evas_object_size_hint_weight_set(pinpopup, EVAS_HINT_EXPAND, 0.0);
766 elm_object_part_text_set(pinpopup, "title,text", _("IDS_WFD_POP_TITILE_CONNECTION"));
768 Evas_Object *box = elm_box_add(pinpopup);
770 evas_object_del(pinpopup);
775 evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0);
776 evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0);
777 elm_object_part_content_set(pinpopup, NULL, box);
778 evas_object_show(box);
781 label = elm_label_add(box);
782 elm_object_style_set(label, "popup/default");
783 elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
784 elm_object_text_set(label, pop->text);
785 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
786 evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
787 elm_box_pack_end(box, label);
788 evas_object_show(label);
791 Evas_Object *body = elm_layout_add(box);
793 evas_object_del(pinpopup);
798 elm_layout_theme_set(body, "layout", "dialogue", "1icon");
799 evas_object_size_hint_weight_set(body, EVAS_HINT_EXPAND, 0.0);
800 evas_object_size_hint_align_set(body, EVAS_HINT_FILL, 0.0);
802 Evas_Object *editfield_pin = _add_edit_field(body, NULL, NULL, EINA_TRUE, EINA_TRUE);
803 Evas_Object *entry_pin = elm_object_part_content_get(editfield_pin, "elm.swallow.content");
804 ad->pin_entry = entry_pin;
805 evas_object_smart_callback_add(ad->pin_entry, "changed", _smart_ime_cb, NULL);
806 elm_object_part_content_set(body, "elm.icon", editfield_pin);
807 elm_box_pack_end(box, body);
808 evas_object_show(body);
810 //#ifdef HIDE_PIN_NUMBER
812 elm_entry_password_set(ad->pin_entry, TRUE);
814 Evas_Object *check = elm_check_add(box);
815 elm_object_text_set(check, _("Show password"));
816 elm_object_focus_allow_set(check, EINA_FALSE);
817 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0.0);
818 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, 0.0);
819 evas_object_smart_callback_add(check, "changed", _check_changed_cb, NULL);
820 evas_object_show(check);
821 elm_box_pack_end(box, check);
825 btn1 = elm_button_add(pinpopup);
826 elm_object_style_set(btn1, "popup_button/default");
827 elm_object_text_set(btn1, pop->label1);
828 elm_object_part_content_set(pinpopup, "button1", btn1);
829 evas_object_smart_callback_add(btn1, "clicked", __popup_resp_cb,
830 (void *) pop->resp_data1);
832 btn2 = elm_button_add(pinpopup);
833 elm_object_style_set(btn2, "popup_button/default");
834 elm_object_text_set(btn2, pop->label2);
835 elm_object_part_content_set(pinpopup, "button2", btn2);
836 evas_object_smart_callback_add(btn2, "clicked", __popup_resp_cb,
837 (void *) pop->resp_data2);
839 elm_object_content_set(pinpopup, box);
840 evas_object_show(pinpopup);
841 evas_object_show(win);
842 elm_object_focus_set(ad->pin_entry, EINA_TRUE);
844 __WFD_APP_FUNC_EXIT__;
849 void wfd_prepare_popup(int type, void *userdata)
851 __WFD_APP_FUNC_ENTER__;
852 wfd_appdata_t *ad = wfd_get_appdata();
853 wfd_popup_t *pop = ad->popup_data;
857 memset(pop, 0, sizeof(wfd_popup_t));
864 case /* MT */ WFD_POP_APRV_CONNECTION_WPS_PUSHBUTTON_REQ:
866 snprintf(pop->text, sizeof(pop->text), IDS_WFD_POP_CONNECT_Q, // WFD_STR_POP_APRV_CONNECT4
868 snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_YES")); // IDS_WFD_BUTN_YES
869 snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_SK_NO")); // WFD_STR_BUTN_NO
870 pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_PBC_YES;
871 pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO;
873 ad->popup = wfd_draw_pop_type_c(ad->win, pop);
877 case /* MT */ WFD_POP_APRV_CONNECTION_WPS_DISPLAY_REQ:
879 char *pin = (char *) userdata;
880 snprintf(pop->text, sizeof(pop->text), IDS_WFD_POP_CONNECT_Q, //WFD_STR_POP_APRV_CONNECT4"<br>PIN:%s"
881 ad->peer_name, WFD_POP_TIMER_120, ad->pin_number);
882 snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_YES")); // IDS_WFD_BUTN_YES
883 snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_SK_NO")); // WFD_STR_BUTN_NO
884 pop->timeout = WFD_POP_TIMER_120;
885 pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES;
886 pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO;
888 ad->popup = wfd_draw_pop_type_display(ad->win, pop);
892 case /*MO/MT */ WFD_POP_APRV_CONNECTION_WPS_KEYPAD_REQ:
894 snprintf(pop->text, sizeof(pop->text), IDS_WFD_POP_ENTER_PIN, // WFD_STR_POP_APRV_CONNECT4
895 ad->peer_name, WFD_POP_TIMER_120, ad->peer_name);
896 snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_YES")); // IDS_WFD_BUTN_YES
897 snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_SK_NO")); // WFD_STR_BUTN_NO
898 pop->timeout = WFD_POP_TIMER_120;
899 pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES;
900 pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO;
902 ad->popup = wfd_draw_pop_type_keypad(ad->win, pop);
906 case /* MT */ WFD_POP_PROG_CONNECT:
908 snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_CONNECTING")); // WFD_STR_POP_PROG_CONNECT
909 snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); // WFD_STR_BTN_CANCEL
910 pop->timeout = WFD_POP_TIMER_120;
911 pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_CANCEL;
913 ad->popup = wfd_draw_pop_type_b(ad->win, pop);
917 case /* MO */ WFD_POP_PROG_CONNECT_WITH_KEYPAD:
919 snprintf(pop->text, sizeof(pop->text), IDS_WFD_POP_ENTER_PIN, // WFD_STR_POP_ENTER_PIN
920 ad->peer_name, WFD_POP_TIMER_120, ad->peer_name);
921 snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_OK")); // WFD_STR_BTN_OK
922 snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); // WFD_STR_BTN_CANCEL
923 pop->timeout = WFD_POP_TIMER_120;
924 pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_KEYPAD_OK;
925 pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO;
927 ad->popup = wfd_draw_pop_type_keypad(ad->win, pop);
931 case /* MO/MT */ WFD_POP_PROG_CONNECT_WITH_PIN:
932 snprintf(pop->text, sizeof(pop->text), "%s %s", IDS_WFD_POP_CONNECTING_WITH_PIN, ad->pin_number); // WFD_STR_POP_PROG_CONNECT_WITH_PIN
933 snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); // WFD_STR_BTN_CANCEL
934 pop->timeout = WFD_POP_TIMER_120;
935 pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_CANCEL;
937 ad->popup = wfd_draw_pop_type_b(ad->win, pop);
940 case WFD_POP_PROG_CONNECT_CANCEL:
942 snprintf(pop->text, sizeof(pop->text), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); // WFD_STR_POP_PROG_CANCEL
943 pop->timeout = WFD_POP_TIMER_120;
944 ad->popup = wfd_draw_pop_type_a(ad->win, pop);
948 case WFD_POP_INCORRECT_PIN:
949 snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_PIN_INVALID")); // WFD_STR_POP_INVALID_PIN
950 snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_OK")); // WFD_STR_BTN_OK
951 pop->timeout = WFD_POP_TIMER_3;
952 pop->resp_data1 = WFD_POP_RESP_OK;
955 case WFD_POP_NOTI_CONNECTED:
956 snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_CONNECTED")); // WFD_STR_POP_NOTI_CONNECTED
957 pop->timeout = WFD_POP_TIMER_3;
959 ad->popup = wfd_draw_pop_type_e(ad->win, pop);
962 case WFD_POP_FAIL_CONNECT:
963 snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_DISCONNECT_FAILED")); // IDS_WFD_POP_DISCONNECT_FAILED
964 pop->timeout = WFD_POP_TIMER_3;
966 ad->popup = wfd_draw_pop_type_e(ad->win, pop);
968 case WFD_POP_AUTOMATIC_TURN_OFF:
969 snprintf(pop->text, sizeof(pop->text), "%s", IDS_WFD_POP_AUTOMATIC_TURN_OFF);
970 snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_OK"));
971 snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL"));
972 pop->timeout = WFD_POP_TIMER_120;
973 pop->resp_data1 = WFD_POP_RESP_AUTOMATIC_TURNOFF_OK;
975 ad->popup = wfd_draw_pop_type_b(ad->win, pop);
982 __WFD_APP_FUNC_EXIT__;
986 void wfd_tickernoti_popup(char *msg)
988 __WFD_APP_FUNC_ENTER__;
995 WFD_APP_LOG(WFD_APP_LOG_LOW, "FAIL: bundle_create()\n");
999 /* tickernoti style */
1000 ret = bundle_add(b, "0", "info");
1002 WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to add tickernoti style\n");
1008 ret = bundle_add(b, "1", msg);
1010 WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to add popup text\n");
1015 /* orientation of tickernoti */
1016 ret = bundle_add(b, "2", "0");
1018 WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to add orientation of tickernoti\n");
1023 /* timeout(second) of tickernoti */
1024 ret = bundle_add(b, "3", "3");
1026 WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to add timeout of tickernoti\n");
1031 /* launch tickernoti */
1032 ret = syspopup_launch(TICKERNOTI_SYSPOPUP, b);
1034 WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to launch syspopup\n");
1038 __WFD_APP_FUNC_EXIT__;