2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <Elementary.h>
20 #include <efl_assist.h>
21 #include <app_common.h>
24 #include <efl_extension.h>
25 //#include <ui_extension.h>
31 #include "w-input-selector.h"
32 #include "w-input-stt-ise.h"
33 #include "w-input-stt-voice.h"
34 #include "w-input-stt-tos.h"
35 #include "w-input-stt-tos-text.h"
39 #define _EDJ(x) elm_layout_edje_get(x)
41 static Evas_Object *g_circle_object_first = NULL;
43 #define ISE_PREFERENCE_AGREEMENT "wearable_input_agreement"
44 #define VCONFKEY_USER_AGREEMENT "db/wms/user_agreement/svoice"
45 #define VCONFKEY_USER_AGREED_TOS "db/private/ise/stt/tos"
47 #define N66_URL "https://account.samsung.com/membership/pp"
49 char *nuance_support_language[12][2] = {
50 {"en_GB", "en"}, // fallback
65 std::string replaceAll(std::string str, const std::string& from, const std::string& to)
69 while((start_pos = str.find(from, start_pos)) != std::string::npos) {
70 str.replace(start_pos, from.length(), to);
71 start_pos += to.length();
77 static void __bt_connection_result_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
80 App_Data* ad = (App_Data*)user_data;
85 PRINTFUNC(DLOG_ERROR, "service_h is NULL");
89 app_control_get_extra_data(reply, "__BT_CONNECTION__", &val);
91 if( strcmp(val, "Connected") == 0 )
93 PRINTFUNC(DLOG_ERROR, "BT Connected");
97 PRINTFUNC(DLOG_ERROR, "BT Not Connected");
103 if(ad && ad->app_type == APP_TYPE_STT){
104 PRINTFUNC(DLOG_DEBUG,"APP_TYPE_STT so exit here.");
113 void launch_bt_connection_popup( App_Data* data){
115 App_Data* ad = (App_Data*)data;
117 PRINTFUNC(DLOG_DEBUG, "Need to launch BT connection popup");
118 app_control_h app_control;
119 app_control_create(&app_control);
120 app_control_set_app_id(app_control, "com.samsung.bt-connection-popup");
121 app_control_add_extra_data(app_control,"msg", "user_defined");
122 app_control_add_extra_data(app_control,"text", gettext("WDS_ST_TPOP_CONNECT_VIA_BLUETOOTH_TO_REVIEW_AND_ACCEPT_THE_LEGAL_NOTICE_ABB"));
123 app_control_add_extra_data(app_control,"title", PACKAGE);
124 app_control_send_launch_request(app_control, __bt_connection_result_cb, NULL);
125 app_control_destroy(app_control);
129 Eina_Bool set_tos_N66_agreed(Eina_Bool bSet)
132 int ret = vconf_set_bool( VCONFKEY_USER_AGREEMENT, bSet );
133 if ( ret != VCONF_OK )
135 PRINTFUNC(DLOG_ERROR,"vconf_set_bool failed ... [%d]!!!", ret);
142 Eina_Bool is_tos_N66_agreed()
144 if(1) return EINA_TRUE;
149 ret = vconf_get_bool(VCONFKEY_USER_AGREEMENT, &bVal);
150 if( ret != VCONF_OK) {
151 PRINTFUNC(DLOG_ERROR,"VCONFKEY_USER_AGREEMENT vconf_get_bool fail: %d", ret);
154 return bVal? EINA_TRUE : EINA_FALSE;
158 Eina_Bool is_sap_connection()
160 int wms_connected = 0;
161 Eina_Bool ret = false;
163 vconf_get_int(VCONFKEY_WMS_WMANAGER_CONNECTED, &wms_connected);
167 vconf_get_int("memory/private/sap/conn_type", &conn_type);
168 if( conn_type == 0 ) {
169 char *vendor_type = vconf_get_str("db/wms/host_status/vendor");
170 if (vendor_type && !strcmp("LO", vendor_type)) {
177 } else if (conn_type == 1) {
183 PRINTFUNC(DLOG_DEBUG, "standalone mode");
191 _ise_tos_launch_web_link(std::string url)
194 wnoti_error_e eError = WNOTI_ERROR_NONE;
196 eError = wnoti_service_connect();
197 if( eError != WNOTI_ERROR_NONE )
199 PRINTFUNC(DLOG_ERROR, "wnoti_service_connect failed : [%d]!!!", eError);
203 eError = wnoti_request_to_browse((char*)(char *) "Samsung Keyboard", url.c_str());
204 if( eError != WNOTI_ERROR_NONE )
206 PRINTFUNC(DLOG_ERROR, "wnoti_request_to_browse failed!!!", eError);
209 eError = wnoti_service_disconnect();
210 if( eError != WNOTI_ERROR_NONE )
212 PRINTFUNC(DLOG_ERROR, "wnoti_service_disconnect failed : [%d]!!!", eError);
217 static void show_terms(void *data, Evas_Object *obj, void *event_info)
221 if(!event_info) return;
223 Evas_Object *parent_win = (Evas_Object *)data;
225 int wms_connected = 0;
226 vconf_get_int(VCONFKEY_WMS_WMANAGER_CONNECTED, &wms_connected);
229 if(wms_connected == 1) {
231 Evas_Smart_Cb_Description * desc = (Evas_Smart_Cb_Description*)event_info;
232 std::string tempurl = desc->name;
234 std::string::size_type n = tempurl.find_first_not_of(" \"");
235 if( n != std::string::npos ){
236 tempurl = tempurl.substr(n, tempurl.length());
239 n = tempurl.find_last_not_of(" \"");
240 if( n != std::string::npos ){
241 tempurl = tempurl.substr(0, n + 1);
244 //----------------------url construction-----------------
247 char *locale = vconf_get_str(VCONFKEY_LANGSET);
249 PRINTFUNC(DLOG_DEBUG,"locale = %s",locale);
252 while(nuance_support_language[i][0] != NULL){
253 if(strstr(locale, nuance_support_language[i][0])){
263 _ise_tos_launch_web_link(tempurl+ "/" + nuance_support_language[find_it][1]);
266 show_popup_toast(gettext("WDS_MYMAG_TPOP_SHOWING_DETAILS_ON_YOUR_PHONE_ING"), true);
276 static void _response_cb2(void *data, Evas_Object *obj, void *event_info)
278 App_Data* ad = (App_Data*)data;
284 elm_object_disabled_set(obj, EINA_TRUE);
286 elm_naviframe_item_pop(ad->naviframe);
290 _naviframe_pop_cb2(void *data , Elm_Object_Item *it)
293 PRINTFUNC(DLOG_DEBUG, "");
295 if(g_circle_object_first)
296 eext_rotary_object_event_activated_set(g_circle_object_first, EINA_TRUE);
302 static void _response_cb(void *data, Evas_Object *obj, void *event_info)
305 PRINTFUNC(DLOG_DEBUG, "");
307 App_Data* ad = (App_Data*)data;
311 set_tos_N66_agreed(EINA_TRUE);
313 ise_show_stt_popup(ad);
315 set_disclaimer_flag();
320 _naviframe_pop_cb(void *data , Elm_Object_Item *it)
323 PRINTFUNC(DLOG_DEBUG, "");
325 _back_to_genlist_for_selector();
331 std::string getColorStyle(const char *code)
336 // ea_theme_color_get(code, &r, &g, &b, &a, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
337 snprintf(strColor, 256, "<color=#%02x%02x%02x%02x>", r, g, b, a);
339 strRet.append(strColor);
344 std::string getFontStyle(const char *code)
352 // ea_theme_color_get(code, &r, &g, &b, &a, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
353 snprintf(strColor, 256, "<color=#%02x%02x%02x%02x>", r, g, b, a);
355 // ea_theme_font_get(code,&fontStyle,&fontSize);
358 snprintf(strFont, 256, "<font=Tizen:style=%s><font_size=%d>", fontStyle, fontSize);
360 snprintf(strFont, 256, "<font=Tizen:style=Regular><font_size=%d>", fontSize);
362 strRet.append(strFont);
363 strRet.append(strColor);
364 PRINTFUNC(DLOG_DEBUG,"====strRect==%s",strRet.c_str());
365 //after uifw finish patch, this free must open, otherwise it will have memory leak
374 static std::string tagging(const std::string& str)
376 std::string link_start = "<a href=";
377 std::string link_end = "</a>";
378 std::string label = str;
379 std::string tag_str = "";
380 std::string link_color = "";
382 tag_str.append(getFontStyle("T142"));
383 link_color.append(getColorStyle("T1611"));
385 std::string::size_type found = label.find(link_start);
387 while (found!=std::string::npos)
389 tag_str.append(label, 0, found);
390 tag_str.append(link_color);
392 std::string::size_type end_pos = label.find(link_end);
393 tag_str.append(label, found, end_pos-found);
394 tag_str.append("</a>");
395 tag_str.append("</color>");
396 label = label.substr(end_pos+4);
397 found = label.find(link_start);
400 tag_str.append(label);
401 tag_str.append("</font_size></color></font>");
406 static void _language_changed_cb(void *_data, Evas_Object *_obj, void *_event_info)
412 int index = (int)_data;
413 std::string terms = "";
414 Elm_Object_Item *navi_it = NULL;
416 char body_str[40000];
420 sprintf(body_str, gettext("LDS_IME_BODY_INFORMATION_PROVISION_AGREEMENT_P1_LEGALPHRASE_WC1"), " <a href=\"file://local-nuance-tos\">","</a>","<a href=\"http://www.vlingo.com/wap/samsung-asr-privacy-addendum\">","</a>");
421 terms = tagging(std::string(body_str));
422 terms = replaceAll(terms , std::string("\n"), std::string("<br>"));
423 elm_entry_entry_set(elm_layout_content_get(_obj, "elm.swallow.content"), terms.c_str());
426 terms = tagging(std::string(gettext(TOS_BODY2))+ std::string("<br>") + std::string(gettext(TOS_BODY3)));
427 terms = replaceAll(terms , std::string("\n"), std::string("<br>"));
428 elm_entry_entry_set(elm_layout_content_get(_obj, "elm.swallow.content"), terms.c_str());
437 Evas_Object *create_tos_second_page(void* data){
439 App_Data* ad = (App_Data*)data;
444 PRINTFUNC(DLOG_DEBUG, "");
446 Evas_Object *outer_layout;
447 Evas_Object *inner_layout;
448 Evas_Object *scroller;
449 Evas_Object *circle_scroller;
451 std::string terms = "";
453 string edj_path = get_resource_path();
454 edj_path = edj_path + STT_EDJ_FILE;
456 //------------outer layout----------------------
457 outer_layout = elm_layout_add(ad->naviframe);
458 elm_layout_theme_set(outer_layout, "layout", "bottom_button", "default");
459 evas_object_show(outer_layout);
461 //------------scroller----------------------
462 scroller = elm_scroller_add(outer_layout);
463 elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
464 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
465 evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
466 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
467 elm_object_scroll_lock_x_set(scroller, EINA_TRUE);
468 evas_object_show(scroller);
469 circle_scroller = eext_circle_object_scroller_add(scroller, ad->circle_surface);
470 eext_circle_object_scroller_policy_set(circle_scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
471 eext_rotary_object_event_activated_set(circle_scroller, EINA_TRUE);
472 elm_object_part_content_set(outer_layout, "elm.swallow.content", scroller);
474 //------------inner layout----------------------
475 inner_layout = elm_layout_add(scroller);
476 elm_layout_file_set(inner_layout, edj_path.c_str(), "elm_naviframe_item_basic_customized");
477 elm_object_domain_translatable_part_text_set(inner_layout, "elm.text.title", PACKAGE, TOS_TITLE);
478 evas_object_size_hint_weight_set(inner_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
479 evas_object_smart_callback_add(inner_layout, "language,changed", _language_changed_cb, (void *)2);
481 elm_object_content_set(scroller, inner_layout);
483 //------------entry----------------------
484 Evas_Object *entry = elm_entry_add(inner_layout);
485 elm_entry_editable_set(entry, EINA_FALSE);
486 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0);
487 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
488 evas_object_show(entry);
489 elm_entry_text_style_user_push(entry, "DEFAULT='align=center'");
491 terms = tagging(std::string(gettext(TOS_BODY2))+ std::string("<br>")+ std::string(gettext(TOS_BODY3)));
492 terms = replaceAll(terms , std::string("\n"), std::string("<br>"));
494 elm_entry_entry_set(entry, terms.c_str());
496 elm_object_part_content_set(inner_layout, "elm.swallow.content", entry);
498 //------------Bottom Button----------------------
499 btn = elm_button_add(outer_layout);
500 elm_object_style_set(btn, "bottom");
501 elm_access_info_set(btn, ELM_ACCESS_INFO, gettext(POPUP_OK_BTN));
502 //elm_object_domain_translatable_text_set(btn, PACKAGE, POPUP_OK_BTN);
503 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
504 elm_object_part_content_set(outer_layout, "elm.swallow.button", btn);
506 Evas_Object* ic = elm_image_add(btn);
507 elm_image_resizable_set(ic, EINA_TRUE, EINA_TRUE);
508 string path = get_resource_path();
509 string path_ic = path + "/images/w_sip_number_btn_ic.png";
510 elm_image_file_set(ic, path_ic.c_str(), NULL);
511 elm_object_content_set(btn,ic);
513 evas_object_smart_callback_add(btn, "clicked", _response_cb2, ad);
515 evas_object_show(outer_layout);
517 elm_object_signal_emit(inner_layout, "elm,state,visible", "elm");
526 static void _ise_voice_tos_anchor_clicked(void *data, Evas_Object *obj, void *event_info)
529 App_Data* ad = (App_Data*)data;
534 Elm_Entry_Anchor_Info *ainfo = (Elm_Entry_Anchor_Info*)event_info;
536 PRINTFUNC(DLOG_DEBUG, "ainfo->name = %s", ainfo->name);
538 if (!strncmp(ainfo->name, "\"http://", 8)){
540 show_terms(data, obj, ainfo);
542 }else if(!strncmp(ainfo->name, "\"file://", 8)){
544 Evas_Object *senconds_layout = create_tos_second_page(ad);
546 Elm_Object_Item *nit = NULL;
547 nit = elm_naviframe_item_push(ad->naviframe, NULL, NULL, NULL, senconds_layout, "empty");
548 elm_naviframe_item_pop_cb_set(nit, _naviframe_pop_cb2, NULL);
549 elm_naviframe_item_title_enabled_set(nit, EINA_FALSE, EINA_FALSE);
554 Evas_Object *create_tos_popup(void *data)
557 App_Data* ad = (App_Data*)data;
562 PRINTFUNC(DLOG_DEBUG, "");
564 Evas_Object *outer_layout;
565 Evas_Object *inner_layout;
566 Evas_Object *scroller;
567 Evas_Object *circle_scroller;
569 std::string terms = "";
571 string edj_path = get_resource_path();
572 edj_path = edj_path + STT_EDJ_FILE;
574 //------------outer layout----------------------
575 outer_layout = elm_layout_add(ad->naviframe);
576 elm_layout_theme_set(outer_layout, "layout", "bottom_button", "default");
577 evas_object_show(outer_layout);
579 //------------scroller----------------------
580 scroller = elm_scroller_add(outer_layout);
581 elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
582 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
583 evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
584 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
585 elm_object_scroll_lock_x_set(scroller, EINA_TRUE);
586 evas_object_show(scroller);
587 circle_scroller = eext_circle_object_scroller_add(scroller, ad->circle_surface);
588 eext_circle_object_scroller_policy_set(circle_scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
589 eext_rotary_object_event_activated_set(circle_scroller, EINA_TRUE);
590 elm_object_part_content_set(outer_layout, "elm.swallow.content", scroller);
591 g_circle_object_first = circle_scroller;
593 //------------inner layout----------------------
594 inner_layout = elm_layout_add(scroller);
595 elm_layout_file_set(inner_layout, edj_path.c_str(), "elm_naviframe_item_basic_customized");
596 elm_object_domain_translatable_part_text_set(inner_layout, "elm.text.title", PACKAGE, TOS_TITLE);
597 evas_object_size_hint_weight_set(inner_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
598 evas_object_smart_callback_add(inner_layout, "language,changed", _language_changed_cb, (void *)1);
600 elm_object_content_set(scroller, inner_layout);
602 //------------entry----------------------
603 Evas_Object *entry = elm_entry_add(inner_layout);
604 elm_entry_editable_set(entry, EINA_FALSE);
605 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0);
606 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
607 evas_object_show(entry);
608 evas_object_smart_callback_add(entry, "anchor,clicked", _ise_voice_tos_anchor_clicked, ad);
609 elm_entry_text_style_user_push(entry, "DEFAULT='align=center'");
611 terms = tagging(std::string(gettext(TOS_NUANCE_BODY)));
612 terms = replaceAll(terms , std::string("%s"), std::string(gettext(SK_GEAR_INPUT)));
613 terms = replaceAll(terms , std::string("\n"), std::string("<br>"));
615 elm_entry_entry_set(entry, terms.c_str());
617 elm_object_part_content_set(inner_layout, "elm.swallow.content", entry);
619 //------------Bottom Button----------------------
620 btn = elm_button_add(outer_layout);
621 elm_object_style_set(btn, "bottom");
622 elm_access_info_set(btn, ELM_ACCESS_INFO, gettext(POPUP_OK_AGREE));
623 elm_object_domain_translatable_text_set(btn, PACKAGE, POPUP_OK_AGREE);
624 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
625 elm_object_part_content_set(outer_layout, "elm.swallow.button", btn);
627 evas_object_smart_callback_add(btn, "clicked", _response_cb, ad);
629 evas_object_show(outer_layout);
631 elm_object_signal_emit(inner_layout, "elm,state,visible", "elm");
638 void ise_show_tos_popup(void *data)
640 App_Data* ad = (App_Data*)data;
645 Evas_Object *main_layout = create_tos_popup(ad);
647 Elm_Object_Item *nit = NULL;
648 nit = elm_naviframe_item_push(ad->naviframe, NULL, NULL, NULL, main_layout, "empty");
649 elm_naviframe_item_pop_cb_set(nit, _naviframe_pop_cb, NULL);
650 elm_naviframe_item_title_enabled_set(nit, EINA_FALSE, EINA_FALSE);
653 //--------------------------------n66--------------------------------------------------
655 static void _ise_voice_tos_n66_anchor_clicked(void *data, Evas_Object *obj, void *event_info)
658 App_Data* ad = (App_Data*)data;
663 _ise_tos_launch_web_link(N66_URL);
664 show_popup_toast(gettext(SK_SHOWING_DETAIL), true);
667 static void _response_n66_cb(void *data, Evas_Object *obj, void *event_info)
670 App_Data* ad = (App_Data*)data;
675 stt_set_user_agreement(true);
677 set_tos_N66_agreed(EINA_TRUE);
680 ise_show_stt_popup(ad);
682 set_disclaimer_flag();
687 static void _n66_language_changed_cb(void *_data, Evas_Object *_obj, void *_event_info)
689 std::string terms = "";
691 Evas_Object* entry = elm_layout_content_get(_obj, "elm.swallow.content");
693 // 1. Get Country Code
694 char *country_code = NULL;
695 // country_code = vconf_get_str(VCONFKEY_CSC_COUNTRY_ISO);
697 // 2. Set String ID depend on Count Code
698 char* popup_title_id = NULL;
699 char* popup_body_id = NULL;
702 if(!strcmp(country_code, "CN")) {
703 popup_title_id = TOS_TITLE_CHN;
704 popup_body_id = TOS_N66_BODY_CHN;
707 popup_title_id = TOS_TITLE;
708 popup_body_id = TOS_N66_BODY;
712 PRINTFUNC(DLOG_ERROR,"Getting Count Code is Error!!! Set default TOS Text!");
713 popup_title_id = TOS_TITLE;
714 popup_body_id = TOS_N66_BODY;
717 // ea_cutlink_h cutlink;
718 // ea_cutlink_create(&cutlink, entry, EA_CUTLINK_USER);
720 /* add a new scheme */
721 // ea_cutlink_scheme_add(cutlink, "hello:", N66_URL);
723 /* set prefix and postfix for a new scheme */
724 // ea_cutlink_prefix_set(cutlink, "hello:",
725 // "<color=#5BB8FFEF underline=on "
726 // "underline_color=#5BB8FFEF>");
727 // ea_cutlink_postfix_set(cutlink, "hello:", "</color>");
731 /* set text for parsing */
732 markup = elm_entry_utf8_to_markup(gettext(popup_body_id));
733 // ea_cutlink_markup_set(cutlink, markup);
735 // ea_cutlink_markup_apply(cutlink, gettext(popup_body_id), &txt);
736 PRINTFUNC(DLOG_DEBUG,"%s", txt);
738 terms = tagging(std::string(gettext(txt)));
739 elm_entry_entry_set(entry, terms.c_str());
746 /* destroy cutlink object */
747 // ea_cutlink_destroy(cutlink);
751 Evas_Object *create_tos_n66_popup(void *data)
754 App_Data* ad = (App_Data*)data;
759 PRINTFUNC(DLOG_DEBUG, "");
761 Evas_Object *outer_layout;
762 Evas_Object *inner_layout;
763 Evas_Object *scroller;
764 Evas_Object *circle_scroller;
766 std::string terms = "";
768 string edj_path = get_resource_path();
769 edj_path = edj_path + STT_EDJ_FILE;
771 // 1. Get Country Code
772 char *country_code = NULL;
773 // country_code = vconf_get_str(VCONFKEY_CSC_COUNTRY_ISO);
775 // 2. Set String ID depend on Count Code
776 char* popup_title_id = NULL;
777 char* popup_body_id = NULL;
780 if(!strcmp(country_code, "CN")) {
781 popup_title_id = TOS_TITLE_CHN;
782 popup_body_id = TOS_N66_BODY_CHN;
785 popup_title_id = TOS_TITLE;
786 popup_body_id = TOS_N66_BODY;
790 PRINTFUNC(DLOG_ERROR,"Getting Count Code is Error!!! Set default TOS Text!");
791 popup_title_id = TOS_TITLE;
792 popup_body_id = TOS_N66_BODY;
796 //------------outer layout----------------------
797 outer_layout = elm_layout_add(ad->naviframe);
798 elm_layout_theme_set(outer_layout, "layout", "bottom_button", "default");
799 evas_object_show(outer_layout);
801 //------------scroller----------------------
802 scroller = elm_scroller_add(outer_layout);
803 elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_TRUE);
804 evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
805 evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
806 elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
807 elm_object_scroll_lock_x_set(scroller, EINA_TRUE);
808 evas_object_show(scroller);
809 circle_scroller = eext_circle_object_scroller_add(scroller, ad->circle_surface);
810 eext_circle_object_scroller_policy_set(circle_scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
811 eext_rotary_object_event_activated_set(circle_scroller, EINA_TRUE);
812 elm_object_part_content_set(outer_layout, "elm.swallow.content", scroller);
813 g_circle_object_first = circle_scroller;
815 //------------inner layout----------------------
816 inner_layout = elm_layout_add(scroller);
817 elm_layout_file_set(inner_layout, edj_path.c_str(), "elm_naviframe_item_basic_customized");
818 elm_object_domain_translatable_part_text_set(inner_layout, "elm.text.title", PACKAGE, popup_title_id);
819 evas_object_size_hint_weight_set(inner_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
820 evas_object_smart_callback_add(inner_layout, "language,changed", _n66_language_changed_cb, NULL);
822 elm_object_content_set(scroller, inner_layout);
824 //------------Entry----------------------
825 Evas_Object *entry = elm_entry_add(inner_layout);
826 elm_entry_editable_set(entry, EINA_FALSE);
827 evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0);
828 evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
829 evas_object_show(entry);
830 evas_object_smart_callback_add(entry, "anchor,clicked", _ise_voice_tos_n66_anchor_clicked, ad);
831 elm_entry_text_style_user_push(entry, "DEFAULT='align=center'");
833 // ea_cutlink_h cutlink;
834 // ea_cutlink_create(&cutlink, entry, EA_CUTLINK_USER);
836 /* add a new scheme */
837 // ea_cutlink_scheme_add(cutlink, "hello:", N66_URL);
839 /* set prefix and postfix for a new scheme */
840 // ea_cutlink_prefix_set(cutlink, "hello:",
841 // "<color=#5BB8FFEF underline=on "
842 // "underline_color=#5BB8FFEF>");
843 // ea_cutlink_postfix_set(cutlink, "hello:", "</color>");
847 /* set text for parsing */
848 markup = elm_entry_utf8_to_markup(gettext(popup_body_id));
849 // ea_cutlink_markup_set(cutlink, markup);
851 // ea_cutlink_markup_apply(cutlink, gettext(popup_body_id), &txt);
852 PRINTFUNC(DLOG_DEBUG,"%s", txt);
854 terms = tagging(std::string(gettext(txt)));
855 elm_entry_entry_set(entry, terms.c_str());
862 /* destroy cutlink object */
863 // ea_cutlink_destroy(cutlink);
865 elm_object_part_content_set(inner_layout, "elm.swallow.content", entry);
867 //------------Bottom Button----------------------
868 btn = elm_button_add(outer_layout);
869 elm_object_style_set(btn, "bottom");
870 elm_access_info_set(btn, ELM_ACCESS_INFO, gettext(POPUP_OK_AGREE));
871 elm_object_domain_translatable_text_set(btn, PACKAGE, POPUP_OK_AGREE);
872 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
873 elm_object_part_content_set(outer_layout, "elm.swallow.button", btn);
875 evas_object_smart_callback_add(btn, "clicked", _response_n66_cb, ad);
877 evas_object_show(outer_layout);
879 elm_object_signal_emit(inner_layout, "elm,state,visible", "elm");
885 void ise_show_tos_n66_popup(void *data)
887 App_Data* ad = (App_Data*)data;
892 Evas_Object *main_layout = create_tos_n66_popup(ad);
894 Elm_Object_Item *nit = NULL;
895 nit = elm_naviframe_item_push(ad->naviframe, NULL, NULL, NULL, main_layout, "empty");
896 elm_naviframe_item_pop_cb_set(nit, _naviframe_pop_cb, NULL);
897 elm_naviframe_item_title_enabled_set(nit, EINA_FALSE, EINA_FALSE);