diff options
Diffstat (limited to 'popup-wifidirect/src/wfd-app-popup-view.c')
-rwxr-xr-x[-rw-r--r--] | popup-wifidirect/src/wfd-app-popup-view.c | 1020 |
1 files changed, 689 insertions, 331 deletions
diff --git a/popup-wifidirect/src/wfd-app-popup-view.c b/popup-wifidirect/src/wfd-app-popup-view.c index a0cc286..9eadc6c 100644..100755 --- a/popup-wifidirect/src/wfd-app-popup-view.c +++ b/popup-wifidirect/src/wfd-app-popup-view.c @@ -1,18 +1,21 @@ /* - * 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. - */ +* 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. +* +*/ /** * This file implements wifi direct system popup view functions. @@ -34,152 +37,235 @@ extern wfd_appdata_t *g_wfd_ad; extern wfd_popup_t *g_wfd_pop; extern unsigned char g_wfd_peer_mac[6]; extern unsigned char g_wfd_peer_name[32]; +static Ecore_Timer *pb_timer = NULL; + +void wfd_tickernoti_popup(char *msg); static void __popup_resp_cb(void *data, Evas_Object * obj, void *event_info) { - __WFD_APP_FUNC_ENTER__; - - wfd_appdata_t *ad = wfd_get_appdata(); - int result = -1; - int resp = (int) data; - Evas_Object *btn = obj; - - WFD_APP_LOG(WFD_APP_LOG_HIGH, "popup resp : %d\n", resp); - - switch (resp) - { - case WFD_POP_RESP_APRV_CONNECT_PBC_YES: - { - WFD_APP_LOG(WFD_APP_LOG_HIGH, - "WFD_POP_RESP_APRV_CONNECT_PBC_YES\n"); - - result = wifi_direct_accept_connection(ad->peer_mac); - WFD_APP_LOG(WFD_APP_LOG_LOW, - "wifi_direct_accept_connection() result=[%d]\n", - result); - if (result == WIFI_DIRECT_ERROR_NONE) - { - wfd_prepare_popup(WFD_POP_PROG_CONNECT, NULL); - } - else - { - WFD_APP_LOG(WFD_APP_LOG_ERROR, - "wifi_direct_accept_connection() FAILED!!\n"); - evas_object_hide(ad->win); - } - } - break; - - case WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES: - { - WFD_APP_LOG(WFD_APP_LOG_HIGH, - "WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES\n"); - - result = wifi_direct_accept_connection(ad->peer_mac); - WFD_APP_LOG(WFD_APP_LOG_LOW, - "wifi_direct_accept_connection() result=[%d]\n", - result); - if (result == WIFI_DIRECT_ERROR_NONE) - { - wfd_prepare_popup(WFD_POP_PROG_CONNECT_WITH_PIN, - ad->pin_number); - } - else - { - WFD_APP_LOG(WFD_APP_LOG_ERROR, - "wifi_direct_client_send_connect_request() FAILED!!\n"); - evas_object_hide(ad->win); - } - } - break; - - case WFD_POP_RESP_PROG_CONNECT_KEYPAD_OK: - case WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES: - { - WFD_APP_LOG(WFD_APP_LOG_HIGH, - "WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES\n"); - - int len = strlen(ad->pin_number); - WFD_APP_LOG(WFD_APP_LOG_LOW, "button ok: pin [%s]", ad->pin_number); - - if (len > 7 && len < 64) - { - int result = 0; - WFD_APP_LOG(WFD_APP_LOG_LOW, "pin=[%s]\n", ad->pin_number); - - result = wifi_direct_set_wps_pin(ad->pin_number); - - if (result != WIFI_DIRECT_ERROR_NONE) - { - wfd_prepare_popup(WFD_POP_FAIL_CONNECT, NULL); - return; - } - - result = wifi_direct_activate_pushbutton(); - result = wifi_direct_accept_connection(ad->peer_mac); - WFD_APP_LOG(WFD_APP_LOG_LOW, - "wifi_direct_accept_connection(%s) result=[%d]\n", - ad->peer_mac, result); - if (result == WIFI_DIRECT_ERROR_NONE) - { - wfd_prepare_popup(WFD_POP_PROG_CONNECT_WITH_PIN, - ad->pin_number); - } - else - { - WFD_APP_LOG(WFD_APP_LOG_ERROR, - "wifi_direct_accept_connection() FAILED!!\n"); - evas_object_hide(ad->win); - } - } - else - { - WFD_APP_LOG(WFD_APP_LOG_ERROR, "Error, Incorrect PIN!!\n"); - wfd_prepare_popup(WFD_POP_INCORRECT_PIN, NULL); - return; - } - } - break; - - case WFD_POP_RESP_APRV_CONNECT_NO: - { - WFD_APP_LOG(WFD_APP_LOG_HIGH, - "WFD_POP_RESP_APRV_CONNECT_NO: destroy_popup...\n"); - - wfd_destroy_popup(); - } - break; - - case WFD_POP_RESP_PROG_CONNECT_CANCEL: - { - WFD_APP_LOG(WFD_APP_LOG_HIGH, "WFD_POP_RESP_PROG_CONNECT_CANCEL\n"); - result = wifi_direct_disconnect(ad->peer_mac); - WFD_APP_LOG(WFD_APP_LOG_LOW, - "wifi_direct_disconnect[%s] result=[%d]\n", - ad->peer_mac, result); - - if (result == WIFI_DIRECT_ERROR_NONE) - { - wfd_prepare_popup(WFD_POP_PROG_CONNECT_CANCEL, NULL); - } - else - { - WFD_APP_LOG(WFD_APP_LOG_ERROR, - "wifi_direct_disconnect() FAILED!!\n"); - wfd_prepare_popup(WFD_POP_FAIL_CONNECT, NULL); - } - } - break; - - default: - { - WFD_APP_LOG(WFD_APP_LOG_ERROR, "Unknown respone\n"); - evas_object_hide(ad->win); - } - break; - } - - __WFD_APP_FUNC_EXIT__; + __WFD_APP_FUNC_ENTER__; + + wfd_appdata_t *ad = wfd_get_appdata(); + int result = -1; + int resp = (int) data; + Evas_Object *btn = obj; + char msg[WFD_POP_STR_MAX_LEN] = {0}; + + WFD_APP_LOG(WFD_APP_LOG_HIGH, "popup resp : %d\n", resp); + + switch (resp) + { + case /* MT */ WFD_POP_RESP_APRV_CONNECT_PBC_YES: + { + WFD_APP_LOG(WFD_APP_LOG_HIGH, + "WFD_POP_RESP_APRV_CONNECT_PBC_YES\n"); + wfd_destroy_popup(); + + result = wifi_direct_accept_connection(ad->peer_mac); + WFD_APP_LOG(WFD_APP_LOG_LOW, + "wifi_direct_accept_connection() result=[%d]\n", + result); + if (result == WIFI_DIRECT_ERROR_NONE) + { + /* tickernoti popup */ + wfd_tickernoti_popup(_("IDS_WFD_POP_CONNECTING")); + } + else + { + WFD_APP_LOG(WFD_APP_LOG_ERROR, + "wifi_direct_accept_connection() FAILED!!\n"); + evas_object_hide(ad->win); + + /* tickernoti popup */ + snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_CONNECT_FAILED"), ad->peer_name); + wfd_tickernoti_popup(msg); + } + } + break; + + case /* MT */ WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES: + { + char *pin = NULL; + + WFD_APP_LOG(WFD_APP_LOG_HIGH, + "WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES\n"); + wfd_destroy_popup(); + if (pb_timer) { + ecore_timer_del(pb_timer); + pb_timer = NULL; + } + + if (wifi_direct_generate_wps_pin() != WIFI_DIRECT_ERROR_NONE) + { + WFD_APP_LOG(WFD_APP_LOG_LOW, "wifi_direct_generate_wps_pin() is failed\n"); + return; + } + + if (wifi_direct_get_wps_pin(&pin) != WIFI_DIRECT_ERROR_NONE) + { + WFD_APP_LOG(WFD_APP_LOG_LOW, "wifi_direct_generate_wps_pin() is failed\n"); + return; + } + strncpy(ad->pin_number, pin, 32); + free(pin); + pin = NULL; + + WFD_APP_LOG(WFD_APP_LOG_LOW, "button ok: pin [%s]", ad->pin_number); + + result = wifi_direct_accept_connection(ad->peer_mac); + WFD_APP_LOG(WFD_APP_LOG_LOW, + "wifi_direct_accept_connection() failed. result=[%d]\n", + result); + if (result == WIFI_DIRECT_ERROR_NONE) + { + evas_object_hide(ad->win); + wfd_prepare_popup(WFD_POP_PROG_CONNECT_WITH_PIN, NULL); + } + else + { + /* tickernoti popup */ + wfd_tickernoti_popup(_("IDS_WFD_POP_CONNECT_FAILED")); + } + } + break; + + case /* MO */ WFD_POP_RESP_PROG_CONNECT_KEYPAD_OK: + case /* MT */ WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES: + { + WFD_APP_LOG(WFD_APP_LOG_HIGH, + "WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES\n"); + wfd_destroy_popup(); + + int len = strlen(ad->pin_number); + WFD_APP_LOG(WFD_APP_LOG_LOW, "button ok: pin [%s]", ad->pin_number); + + if (len > 7 && len < 64) + { + int result = 0; + WFD_APP_LOG(WFD_APP_LOG_LOW, "pin=[%s]\n", ad->pin_number); + + result = wifi_direct_set_wps_pin(ad->pin_number); + + if (result != WIFI_DIRECT_ERROR_NONE) + { + /* tickernoti popup */ + snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_CONNECT_FAILED"), ad->peer_name); + wfd_tickernoti_popup(msg); + return; + } + + //result = wifi_direct_activate_pushbutton(); + result = wifi_direct_accept_connection(ad->peer_mac); + WFD_APP_LOG(WFD_APP_LOG_LOW, + "wifi_direct_accept_connection(%s) result=[%d]\n", + ad->peer_mac, result); + if (result != WIFI_DIRECT_ERROR_NONE) + { + WFD_APP_LOG(WFD_APP_LOG_ERROR, + "wifi_direct_accept_connection() FAILED!!\n"); + evas_object_hide(ad->win); + + /* tickernoti popup */ + snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_CONNECT_FAILED"), ad->peer_name); + wfd_tickernoti_popup(msg); + } + } + else + { + WFD_APP_LOG(WFD_APP_LOG_ERROR, "Error, Incorrect PIN!!\n"); + + /* tickernoti popup */ + wfd_tickernoti_popup(_("IDS_WFD_POP_PIN_INVALID")); + + /* redraw the popup */ + if (WFD_POP_RESP_PROG_CONNECT_KEYPAD_OK == resp) { + wfd_prepare_popup(WFD_POP_PROG_CONNECT_WITH_KEYPAD, (void *) NULL); + } else { + wfd_prepare_popup(WFD_POP_APRV_CONNECTION_WPS_KEYPAD_REQ, (void *) NULL); + } + + return; + } + } + break; + + case /* MT */ WFD_POP_RESP_APRV_CONNECT_NO: + { + WFD_APP_LOG(WFD_APP_LOG_HIGH, + "WFD_POP_RESP_APRV_CONNECT_NO: destroy_popup...\n"); + + wfd_destroy_popup(); + if (pb_timer) { + ecore_timer_del(pb_timer); + pb_timer = NULL; + } + + result = wifi_direct_disconnect(ad->peer_mac); + WFD_APP_LOG(WFD_APP_LOG_LOW, + "wifi_direct_disconnect[%s] result=[%d]\n", + ad->peer_mac, result); + } + break; + + case WFD_POP_RESP_PROG_CONNECT_CANCEL: + { + WFD_APP_LOG(WFD_APP_LOG_HIGH, "WFD_POP_RESP_PROG_CONNECT_CANCEL\n"); + wfd_destroy_popup(); + + result = wifi_direct_disconnect(ad->peer_mac); + WFD_APP_LOG(WFD_APP_LOG_LOW, + "wifi_direct_disconnect[%s] result=[%d]\n", + ad->peer_mac, result); + + if (result == WIFI_DIRECT_ERROR_NONE) + { + /* tickernoti popup */ + snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_DISCONNECTED"), ad->peer_name); + wfd_tickernoti_popup(msg); + } + else + { + WFD_APP_LOG(WFD_APP_LOG_ERROR, + "wifi_direct_disconnect() FAILED!!\n"); + + /* tickernoti popup */ + snprintf(msg, WFD_POP_STR_MAX_LEN, _("IDS_WFD_POP_DISCONNECT_FAILED"), ad->peer_name); + wfd_tickernoti_popup(msg); + } + } + break; + + case WFD_POP_RESP_AUTOMATIC_TURNOFF_OK: + { + WFD_APP_LOG(WFD_APP_LOG_HIGH, "WFD_POP_RESP_AUTOMATIC_TURNOFF_OK\n"); + + /* turn off the Wi-Fi Direct */ + result = wifi_direct_get_state(&ad->wfd_status); + if (result != WIFI_DIRECT_ERROR_NONE) { + WFD_APP_LOG(WFD_APP_LOG_LOW, "Failed to get link status. [%d]\n", result); + return; + } + + if (ad->wfd_status < WIFI_DIRECT_STATE_ACTIVATING) { + WFD_APP_LOG(WFD_APP_LOG_LOW, "Wi-Fi Direct is already deactivated\n"); + } else { + ad->wfd_status = WIFI_DIRECT_STATE_DEACTIVATING; + wifi_direct_deactivate(); + } + + wfd_destroy_popup(); + } + break; + + default: + { + WFD_APP_LOG(WFD_APP_LOG_ERROR, "Unknown respone\n"); + evas_object_hide(ad->win); + } + break; + } + + __WFD_APP_FUNC_EXIT__; } static Evas_Object *__create_progress_layout(Evas_Object * parent, @@ -260,7 +346,6 @@ void wfd_destroy_popup() if (ad->popup) { - //evas_object_smart_callback_del(ad->popup, "response", __popup_resp_cb); evas_object_del(ad->popup); ad->popup = NULL; } @@ -278,7 +363,7 @@ void wfd_destroy_popup() } static Evas_Object *wfd_draw_pop_type_a(Evas_Object * win, wfd_popup_t * pop) -{ +{ //no button with spin __WFD_APP_FUNC_ENTER__; Evas_Object *popup; @@ -295,7 +380,7 @@ static Evas_Object *wfd_draw_pop_type_a(Evas_Object * win, wfd_popup_t * pop) } static Evas_Object *wfd_draw_pop_type_b(Evas_Object * win, wfd_popup_t * pop) -{ +{ //one button with spin __WFD_APP_FUNC_ENTER__; Evas_Object *popup = NULL; @@ -306,6 +391,7 @@ static Evas_Object *wfd_draw_pop_type_b(Evas_Object * win, wfd_popup_t * pop) elm_object_text_set(popup, pop->text); btn = elm_button_add(popup); + elm_object_style_set(btn, "popup_button/default"); elm_object_text_set(btn, pop->label1); elm_object_part_content_set(popup, "button1", btn); evas_object_smart_callback_add(btn, "clicked", __popup_resp_cb, @@ -319,7 +405,7 @@ static Evas_Object *wfd_draw_pop_type_b(Evas_Object * win, wfd_popup_t * pop) } static Evas_Object *wfd_draw_pop_type_c(Evas_Object * win, wfd_popup_t * pop) -{ +{ //two button __WFD_APP_FUNC_ENTER__; Evas_Object *popup = NULL; @@ -330,12 +416,14 @@ static Evas_Object *wfd_draw_pop_type_c(Evas_Object * win, wfd_popup_t * pop) elm_object_text_set(popup, pop->text); btn1 = elm_button_add(popup); + elm_object_style_set(btn1, "popup_button/default"); elm_object_text_set(btn1, pop->label1); elm_object_part_content_set(popup, "button1", btn1); evas_object_smart_callback_add(btn1, "clicked", __popup_resp_cb, (void *) pop->resp_data1); btn2 = elm_button_add(popup); + elm_object_style_set(btn2, "popup_button/default"); elm_object_text_set(btn2, pop->label2); elm_object_part_content_set(popup, "button2", btn2); evas_object_smart_callback_add(btn2, "clicked", __popup_resp_cb, @@ -349,7 +437,7 @@ static Evas_Object *wfd_draw_pop_type_c(Evas_Object * win, wfd_popup_t * pop) } static Evas_Object *wfd_draw_pop_type_d(Evas_Object * win, wfd_popup_t * pop) -{ +{ //text with spin __WFD_APP_FUNC_ENTER__; Evas_Object *popup; @@ -463,6 +551,192 @@ static void _smart_ime_cb(void *data, Evas_Object * obj, void *event_info) __WFD_APP_FUNC_EXIT__; } + +//#ifdef HIDE_PIN_NUMBER +#if 1 +static void _check_changed_cb(void *data, Evas_Object * obj, void *event_info) +{ + wfd_appdata_t *ad = wfd_get_appdata(); + + if (obj == NULL) + return; + + Eina_Bool state = elm_check_state_get(obj); + elm_entry_password_set(ad->pin_entry, !state); +} +#endif + +static Eina_Bool _fn_pb_timer(void *data) +{ + int step = 0; + double value = 0.0; + char time_label[32] = {0}; + wfd_wps_display_popup_t *wps_display_popup = (wfd_wps_display_popup_t*) data; + + if (NULL == wps_display_popup) { + WFD_APP_LOG(WFD_APP_LOG_ERROR, "Param is NULL.\n"); + return ECORE_CALLBACK_CANCEL; + } + + Evas_Object *progressbar = NULL; + Evas_Object *time = NULL; + + progressbar = wps_display_popup->progressbar; + time = wps_display_popup->time; + value = elm_progressbar_value_get(progressbar); + + if (value >= 1.0) { + WFD_APP_LOG(WFD_APP_LOG_ERROR, "Progress end.\n"); + return ECORE_CALLBACK_CANCEL; + } + + wps_display_popup->step++; + step = wps_display_popup->step; + value = ((double)step) / WFD_POP_TIMER_120; + elm_progressbar_value_set(progressbar, value); + WFD_APP_LOG(WFD_APP_LOG_LOW, "step: %d, value: %f\n", wps_display_popup->step, value); + + /* show the time label */ + if (step < 60) { + if (step < 10) { + snprintf(time_label, 32, "00:0%d", step); + } else { + snprintf(time_label, 32, "00:%d", step); + } + } else { + if (step%60 < 10) { + snprintf(time_label, 32, "0%d:0%d", step/60, step%60); + } else { + snprintf(time_label, 32, "0%d:%d", step/60, step%60); + } + } + + elm_object_text_set(time, time_label); + + return ECORE_CALLBACK_RENEW; +} + +static Evas_Object * _add_edit_field(Evas_Object *parent, const char *title, const char *guide, Eina_Bool single_line, Eina_Bool is_editable) +{ + assertm_if(NULL == parent, "parent is NULL!!"); + + Evas_Object *layout = elm_layout_add(parent); + assertm_if(NULL == layout, "layout is NULL!!"); + + if (title && title[0] != '\0') { + elm_layout_theme_set(layout, "layout", "editfield", "title"); + elm_object_part_text_set(layout, "elm.text", title); + } + else { + elm_layout_theme_set(layout, "layout", "editfield", "default"); + } + + Evas_Object *entry = elm_entry_add(parent); + assertm_if(NULL == entry, "entry is NULL!!"); + + elm_object_part_content_set(layout, "elm.swallow.content", entry); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + if (guide && guide[0] != '\0') { + elm_object_part_text_set(layout, "elm.guidetext", guide); + } + + elm_entry_single_line_set(entry, single_line); + elm_entry_scrollable_set(entry, single_line); + elm_entry_editable_set(entry, is_editable); + elm_object_signal_emit(layout, "elm,state,eraser,hide", "elm"); + evas_object_show(layout); + + return layout; +} + +Evas_Object *wfd_draw_pop_type_display(Evas_Object * win, wfd_popup_t * pop) +{ + __WFD_APP_FUNC_ENTER__; + + Evas_Object *popup = NULL; + Evas_Object *label = NULL; + Evas_Object *layout = NULL; + Evas_Object *progressbar = NULL; + Evas_Object *time = NULL; + Evas_Object *btn1 = NULL; + Evas_Object *btn2 = NULL; + static wfd_wps_display_popup_t wps_display_popup; + + popup = elm_popup_add(win); + elm_object_style_set(popup, "customstyle"); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, 0.0); + + Evas_Object *box = elm_box_add(popup); + if (!box) { + evas_object_del(popup); + popup = NULL; + return NULL; + } + + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0); + elm_object_part_content_set(popup, NULL, box); + evas_object_show(box); + + /* add label */ + label = elm_label_add(box); + elm_object_style_set(label, "popup/default"); + elm_label_line_wrap_set(label, ELM_WRAP_MIXED); + elm_object_text_set(label, pop->text); + evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(label, EVAS_HINT_FILL, 0.0); + elm_box_pack_end(box, label); + evas_object_show(label); + + /* add progressbar */ + progressbar = elm_progressbar_add(box); + elm_object_style_set(progressbar, "list_progress"); + elm_progressbar_horizontal_set(progressbar, EINA_TRUE); + evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.0); + evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, 0.0); + elm_progressbar_value_set(progressbar, 0.0); + elm_box_pack_end(box, progressbar); + evas_object_show(progressbar); + + /* add time */ + time = elm_label_add(box); + elm_object_style_set(time, "popup/default"); + elm_object_text_set(time, "00:00"); + evas_object_size_hint_weight_set(time, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(time, EVAS_HINT_FILL, 0.0); + elm_box_pack_end(box, time); + evas_object_show(time); + + /* start progressbar timer */ + wps_display_popup.step = 0; + wps_display_popup.progressbar= progressbar; + wps_display_popup.time = time; + pb_timer = ecore_timer_add(1, _fn_pb_timer, &wps_display_popup); + + /* add cancel buttons */ + btn1 = elm_button_add(popup); + elm_object_style_set(btn1, "popup_button/default"); + elm_object_text_set(btn1, pop->label1); + elm_object_part_content_set(popup, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", __popup_resp_cb, + (void *) pop->resp_data1); + + btn2 = elm_button_add(popup); + elm_object_style_set(btn2, "popup_button/default"); + elm_object_text_set(btn2, pop->label2); + elm_object_part_content_set(popup, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", __popup_resp_cb, + (void *) pop->resp_data2); + + elm_object_content_set(popup, box); + evas_object_show(popup); + evas_object_show(win); + + __WFD_APP_FUNC_EXIT__; + return popup; +} + Evas_Object *wfd_draw_pop_type_keypad(Evas_Object * win, wfd_popup_t * pop) { __WFD_APP_FUNC_ENTER__; @@ -471,61 +745,98 @@ Evas_Object *wfd_draw_pop_type_keypad(Evas_Object * win, wfd_popup_t * pop) Evas_Object *conformant = NULL; Evas_Object *layout = NULL; Evas_Object *pinpopup = NULL; + Evas_Object *label = NULL; Evas_Object *btn1 = NULL, *btn2 = NULL; conformant = elm_conformant_add(win); assertm_if(NULL == conformant, "conformant is NULL!!"); elm_win_conformant_set(win, EINA_TRUE); elm_win_resize_object_add(win, conformant); - evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(conformant, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(conformant, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(conformant, EVAS_HINT_FILL, 0.0); evas_object_show(conformant); - pinpopup = NULL; layout = elm_layout_add(conformant); elm_object_content_set(conformant, layout); + pinpopup = elm_popup_add(layout); assertm_if(NULL == pinpopup, "pinpopup is NULL!!"); - elm_object_part_text_set(pinpopup, "title,text", pop->text); + elm_object_style_set(pinpopup, "customstyle"); + evas_object_size_hint_weight_set(pinpopup, EVAS_HINT_EXPAND, 0.0); + elm_object_part_text_set(pinpopup, "title,text", _("IDS_WFD_POP_TITILE_CONNECTION")); Evas_Object *box = elm_box_add(pinpopup); - evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(box); + if (!box) { + evas_object_del(pinpopup); + pinpopup = NULL; + return NULL; + } - Evas_Object *editfield = elm_layout_add(box); - elm_layout_theme_set(editfield, "layout", "editfield", "default"); - Evas_Object *editfield_entry = elm_layout_add(box); - elm_object_part_content_set(editfield, "elm.swallow.content", - editfield_entry); - elm_object_part_text_set(editfield, "elm.text", _("Enter PIN")); - elm_entry_single_line_set(editfield_entry, EINA_TRUE); - elm_entry_scrollable_set(editfield_entry, EINA_TRUE); - elm_object_signal_emit(editfield_entry, "elm,state,eraser,show", "elm"); - evas_object_size_hint_weight_set(editfield, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(editfield, EVAS_HINT_FILL, EVAS_HINT_FILL); - ad->pin_entry = editfield_entry; - evas_object_smart_callback_add(ad->pin_entry, "changed", _smart_ime_cb, - NULL); - evas_object_show(editfield); - elm_box_pack_end(box, editfield); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, 0.0); + elm_object_part_content_set(pinpopup, NULL, box); + evas_object_show(box); - elm_object_content_set(pinpopup, box); + /* add label */ + label = elm_label_add(box); + elm_object_style_set(label, "popup/default"); + elm_label_line_wrap_set(label, ELM_WRAP_MIXED); + elm_object_text_set(label, pop->text); + evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(box, label); + evas_object_show(label); + + /* add password */ + Evas_Object *body = elm_layout_add(box); + if (!body) { + evas_object_del(pinpopup); + pinpopup = NULL; + return NULL; + } + elm_layout_theme_set(body, "layout", "dialogue", "1icon"); + evas_object_size_hint_weight_set(body, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(body, EVAS_HINT_FILL, 0.0); + + Evas_Object *editfield_pin = _add_edit_field(body, NULL, NULL, EINA_TRUE, EINA_TRUE); + Evas_Object *entry_pin = elm_object_part_content_get(editfield_pin, "elm.swallow.content"); + ad->pin_entry = entry_pin; + evas_object_smart_callback_add(ad->pin_entry, "changed", _smart_ime_cb, NULL); + elm_object_part_content_set(body, "elm.icon", editfield_pin); + elm_box_pack_end(box, body); + evas_object_show(body); + +//#ifdef HIDE_PIN_NUMBER +#if 1 + elm_entry_password_set(ad->pin_entry, TRUE); + + Evas_Object *check = elm_check_add(box); + elm_object_text_set(check, _("Show password")); + elm_object_focus_allow_set(check, EINA_FALSE); + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(check, EVAS_HINT_FILL, 0.0); + evas_object_smart_callback_add(check, "changed", _check_changed_cb, NULL); + evas_object_show(check); + elm_box_pack_end(box, check); +#endif + + /* add buttons */ btn1 = elm_button_add(pinpopup); - elm_object_text_set(pinpopup, pop->label1); + elm_object_style_set(btn1, "popup_button/default"); + elm_object_text_set(btn1, pop->label1); elm_object_part_content_set(pinpopup, "button1", btn1); evas_object_smart_callback_add(btn1, "clicked", __popup_resp_cb, (void *) pop->resp_data1); btn2 = elm_button_add(pinpopup); + elm_object_style_set(btn2, "popup_button/default"); elm_object_text_set(btn2, pop->label2); elm_object_part_content_set(pinpopup, "button2", btn2); - evas_object_smart_callback_add(btn1, "clicked", __popup_resp_cb, + evas_object_smart_callback_add(btn2, "clicked", __popup_resp_cb, (void *) pop->resp_data2); + elm_object_content_set(pinpopup, box); evas_object_show(pinpopup); evas_object_show(win); elm_object_focus_set(ad->pin_entry, EINA_TRUE); @@ -537,146 +848,193 @@ Evas_Object *wfd_draw_pop_type_keypad(Evas_Object * win, wfd_popup_t * pop) void wfd_prepare_popup(int type, void *userdata) { - __WFD_APP_FUNC_ENTER__; - wfd_appdata_t *ad = wfd_get_appdata(); - wfd_popup_t *pop = ad->popup_data; - - wfd_destroy_popup(); - - memset(pop, 0, sizeof(wfd_popup_t)); - - pop->type = type; - - switch (pop->type) - { - - case WFD_POP_APRV_CONNECTION_WPS_PUSHBUTTON_REQ: - { - snprintf(pop->text, sizeof(pop->text), _("IDS_WFD_POP_CONNECT_Q"), - ad->peer_name); - snprintf(pop->label1, sizeof(pop->label1), "%s", - dgettext("sys_string", "IDS_COM_SK_YES")); - snprintf(pop->label2, sizeof(pop->label2), "%s", - dgettext("sys_string", "IDS_COM_SK_NO")); - pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_PBC_YES; - pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO; - - ad->popup = wfd_draw_pop_type_c(ad->win, pop); - } - break; - - case WFD_POP_APRV_CONNECTION_WPS_DISPLAY_REQ: - { - char *pin = (char *) userdata; - snprintf(pop->text, sizeof(pop->text), - _("IDS_WFD_POP_CONNECT_WITH_PIN_Q"), ad->peer_name, - ad->pin_number); - snprintf(pop->label1, sizeof(pop->label1), "%s", - dgettext("sys_string", "IDS_COM_SK_YES")); - snprintf(pop->label2, sizeof(pop->label2), "%s", - dgettext("sys_string", "IDS_COM_SK_NO")); - - pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES; - pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO; - - ad->popup = wfd_draw_pop_type_c(ad->win, pop); - } - break; - - case WFD_POP_APRV_CONNECTION_WPS_KEYPAD_REQ: - { - char *pin = (char *) userdata; - snprintf(pop->text, sizeof(pop->text), _("IDS_WFD_POP_CONNECT_Q"), - ad->peer_name); - snprintf(pop->label1, sizeof(pop->label1), "%s", - dgettext("sys_string", "IDS_COM_SK_YES")); - snprintf(pop->label2, sizeof(pop->label2), "%s", - dgettext("sys_string", "IDS_COM_SK_NO")); - pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES; - pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO; - - ad->popup = wfd_draw_pop_type_keypad(ad->win, pop); - } - break; - - case WFD_POP_PROG_CONNECT: - { - snprintf(pop->text, sizeof(pop->text), "%s", - _("IDS_WFD_POP_CONNECTING")); - snprintf(pop->label1, sizeof(pop->label1), "%s", - dgettext("sys_string", "IDS_COM_POP_CANCEL")); - pop->timeout = WFD_POP_TIMER_120; - pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_CANCEL; - - ad->popup = wfd_draw_pop_type_b(ad->win, pop); - } - break; - - case WFD_POP_PROG_CONNECT_WITH_KEYPAD: - { - snprintf(pop->text, sizeof(pop->text), "%s", - _("IDS_WFD_POP_ENTER_PIN")); - snprintf(pop->label1, sizeof(pop->label1), "%s", - dgettext("sys_string", "IDS_COM_SK_OK")); - snprintf(pop->label2, sizeof(pop->label2), "%s", - dgettext("sys_string", "IDS_COM_POP_CANCEL")); - pop->timeout = WFD_POP_TIMER_120; - pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_KEYPAD_OK; - pop->resp_data2 = WFD_POP_RESP_PROG_CONNECT_CANCEL; - - ad->popup = wfd_draw_pop_type_keypad(ad->win, pop); - } - break; - - case WFD_POP_PROG_CONNECT_WITH_PIN: - snprintf(pop->text, sizeof(pop->text), "%s %s", - _("IDS_WFD_POP_CONNECTING_WITH_PIN"), ad->pin_number); - snprintf(pop->label1, sizeof(pop->label1), "%s", - dgettext("sys_string", "IDS_COM_POP_CANCEL")); - pop->timeout = WFD_POP_TIMER_120; - pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_CANCEL; - - ad->popup = wfd_draw_pop_type_c(ad->win, pop); - break; - - case WFD_POP_PROG_CONNECT_CANCEL: - { - snprintf(pop->text, sizeof(pop->text), "%s", - dgettext("sys_string", "IDS_COM_POP_CANCEL")); - pop->timeout = WFD_POP_TIMER_120; - ad->popup = wfd_draw_pop_type_a(ad->win, pop); - } - break; - - case WFD_POP_INCORRECT_PIN: - snprintf(pop->text, sizeof(pop->text), "%s", - _("IDS_WFD_POP_PIN_INVALID")); - snprintf(pop->label1, sizeof(pop->label1), "%s", - dgettext("sys_string", "IDS_COM_SK_OK")); - pop->timeout = WFD_POP_TIMER_3; - pop->resp_data1 = WFD_POP_RESP_OK; - break; - - case WFD_POP_NOTI_CONNECTED: - snprintf(pop->text, sizeof(pop->text), "%s", - _("IDS_WFD_POP_CONNECTED")); - pop->timeout = WFD_POP_TIMER_3; - - ad->popup = wfd_draw_pop_type_e(ad->win, pop); - break; - - case WFD_POP_FAIL_CONNECT: - snprintf(pop->text, sizeof(pop->text), "%s", - _("IDS_WFD_POP_ERROR_OCCURRED")); - pop->timeout = WFD_POP_TIMER_3; - - ad->popup = wfd_draw_pop_type_e(ad->win, pop); - break; - - default: - break; - } + __WFD_APP_FUNC_ENTER__; + wfd_appdata_t *ad = wfd_get_appdata(); + wfd_popup_t *pop = ad->popup_data; + + wfd_destroy_popup(); + + memset(pop, 0, sizeof(wfd_popup_t)); + + pop->type = type; + + switch (pop->type) + { + + case /* MT */ WFD_POP_APRV_CONNECTION_WPS_PUSHBUTTON_REQ: + { + snprintf(pop->text, sizeof(pop->text), _("IDS_WFD_POP_CONNECT_Q"), // WFD_STR_POP_APRV_CONNECT4 + ad->peer_name); + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_YES")); // WFD_STR_BUTN_YES + snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_SK_NO")); // WFD_STR_BUTN_NO + pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_PBC_YES; + pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO; + + ad->popup = wfd_draw_pop_type_c(ad->win, pop); + } + break; + + case /* MT */ WFD_POP_APRV_CONNECTION_WPS_DISPLAY_REQ: + { + char *pin = (char *) userdata; + snprintf(pop->text, sizeof(pop->text), _("IDS_WFD_POP_CONNECT_Q"), //WFD_STR_POP_APRV_CONNECT4"<br>PIN:%s" + ad->peer_name, WFD_POP_TIMER_120, ad->pin_number); + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_YES")); // WFD_STR_BUTN_YES + snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_SK_NO")); // WFD_STR_BUTN_NO + pop->timeout = WFD_POP_TIMER_120; + pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_DISPLAY_YES; + pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO; + + ad->popup = wfd_draw_pop_type_display(ad->win, pop); + } + break; + + case /*MO/MT */ WFD_POP_APRV_CONNECTION_WPS_KEYPAD_REQ: + { + snprintf(pop->text, sizeof(pop->text), _("IDS_WFD_POP_ENTER_PIN"), // WFD_STR_POP_APRV_CONNECT4 + ad->peer_name, WFD_POP_TIMER_120, ad->peer_name); + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_YES")); // WFD_STR_BUTN_YES + snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_SK_NO")); // WFD_STR_BUTN_NO + pop->timeout = WFD_POP_TIMER_120; + pop->resp_data1 = WFD_POP_RESP_APRV_CONNECT_KEYPAD_YES; + pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO; + + ad->popup = wfd_draw_pop_type_keypad(ad->win, pop); + } + break; + + case /* MT */ WFD_POP_PROG_CONNECT: + { + snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_CONNECTING")); // WFD_STR_POP_PROG_CONNECT + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); // WFD_STR_BTN_CANCEL + pop->timeout = WFD_POP_TIMER_120; + pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_CANCEL; + + ad->popup = wfd_draw_pop_type_b(ad->win, pop); + } + break; + + case /* MO */ WFD_POP_PROG_CONNECT_WITH_KEYPAD: + { + snprintf(pop->text, sizeof(pop->text), _("IDS_WFD_POP_ENTER_PIN"), // WFD_STR_POP_ENTER_PIN + ad->peer_name, WFD_POP_TIMER_120, ad->peer_name); + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_OK")); // WFD_STR_BTN_OK + snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); // WFD_STR_BTN_CANCEL + pop->timeout = WFD_POP_TIMER_120; + pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_KEYPAD_OK; + pop->resp_data2 = WFD_POP_RESP_APRV_CONNECT_NO; + + ad->popup = wfd_draw_pop_type_keypad(ad->win, pop); + } + break; + + case /* MO/MT */ WFD_POP_PROG_CONNECT_WITH_PIN: + snprintf(pop->text, sizeof(pop->text), "%s %s", _("IDS_WFD_POP_CONNECTING_WITH_PIN"), ad->pin_number); // WFD_STR_POP_PROG_CONNECT_WITH_PIN + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); // WFD_STR_BTN_CANCEL + pop->timeout = WFD_POP_TIMER_120; + pop->resp_data1 = WFD_POP_RESP_PROG_CONNECT_CANCEL; + + ad->popup = wfd_draw_pop_type_b(ad->win, pop); + break; + + case WFD_POP_PROG_CONNECT_CANCEL: + { + snprintf(pop->text, sizeof(pop->text), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); // WFD_STR_POP_PROG_CANCEL + pop->timeout = WFD_POP_TIMER_120; + ad->popup = wfd_draw_pop_type_a(ad->win, pop); + } + break; + + case WFD_POP_INCORRECT_PIN: + snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_PIN_INVALID")); // WFD_STR_POP_INVALID_PIN + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_OK")); // WFD_STR_BTN_OK + pop->timeout = WFD_POP_TIMER_3; + pop->resp_data1 = WFD_POP_RESP_OK; + break; + + case WFD_POP_NOTI_CONNECTED: + snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_CONNECTED")); // WFD_STR_POP_NOTI_CONNECTED + pop->timeout = WFD_POP_TIMER_3; + + ad->popup = wfd_draw_pop_type_e(ad->win, pop); + break; + + case WFD_POP_FAIL_CONNECT: + snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_DISCONNECT_FAILED")); // IDS_WFD_POP_DISCONNECT_FAILED + pop->timeout = WFD_POP_TIMER_3; + + ad->popup = wfd_draw_pop_type_e(ad->win, pop); + break; + case WFD_POP_AUTOMATIC_TURN_OFF: + snprintf(pop->text, sizeof(pop->text), "%s", _("IDS_WFD_POP_AUTOMATIC_TURN_OFF")); + snprintf(pop->label1, sizeof(pop->label1), "%s", dgettext("sys_string", "IDS_COM_SK_OK")); + snprintf(pop->label2, sizeof(pop->label2), "%s", dgettext("sys_string", "IDS_COM_POP_CANCEL")); + pop->timeout = WFD_POP_TIMER_120; + pop->resp_data1 = WFD_POP_RESP_AUTOMATIC_TURNOFF_OK; + + ad->popup = wfd_draw_pop_type_b(ad->win, pop); + + break; + default: + break; + } + + __WFD_APP_FUNC_EXIT__; + return; +} - __WFD_APP_FUNC_EXIT__; - return; +void wfd_tickernoti_popup(char *msg) +{ + __WFD_APP_FUNC_ENTER__; + + int ret = -1; + bundle *b = NULL; + + b = bundle_create(); + if (!b) { + WFD_APP_LOG(WFD_APP_LOG_LOW, "FAIL: bundle_create()\n"); + return; + } + + /* tickernoti style */ + ret = bundle_add(b, "0", "info"); + if (ret) { + WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to add tickernoti style\n"); + bundle_free(b); + return; + } + + /* popup text */ + ret = bundle_add(b, "1", msg); + if (ret) { + WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to add popup text\n"); + bundle_free(b); + return; + } + + /* orientation of tickernoti */ + ret = bundle_add(b, "2", "0"); + if (ret) { + WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to add orientation of tickernoti\n"); + bundle_free(b); + return; + } + + /* timeout(second) of tickernoti */ + ret = bundle_add(b, "3", "3"); + if (ret) { + WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to add timeout of tickernoti\n"); + bundle_free(b); + return; + } + + /* launch tickernoti */ + ret = syspopup_launch(TICKERNOTI_SYSPOPUP, b); + if (ret) { + WFD_APP_LOG(WFD_APP_LOG_LOW, "Fail to launch syspopup\n"); + } + + bundle_free(b); + __WFD_APP_FUNC_EXIT__; } + |