4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.1 (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://floralicense.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.
20 #include <appcore-efl.h>
22 #include <ui-gadget.h>
26 #include <system_info.h>
33 #include "ui-callback.h"
35 static Elm_Gen_Item_Class itc_label1, itc_entry1, itc_label2, itc_entry2;
36 static void _ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
37 static void _ug_destroy_cb(ui_gadget_h ug, void *priv);
38 static Evas_Object *_create_bg(Evas_Object * win);
39 static void _destroy_previous_ugs(void *data);
40 static void _focused_cb(void *data, Evas_Object * obj, void *event_info);
41 static void _unfocused_cb(void *data, Evas_Object * obj, void *event_info);
42 static void _eraser_clicked_cb(void *data, Evas_Object * obj,
43 const char *emission, const char *source);
44 static Evas_Object *_create_editfield(Evas_Object * parent, Eina_Bool focus);
45 static Evas_Object *_editfield_entry_get(Evas_Object * parent);
46 static Evas_Object *_create_toolbar_btn(Evas_Object *parent);
48 static int _ug_destroy = 0;
50 static int _header_idx[] = {
51 _UI_PIN, IDS_IDLE_HEADER_PIN_LOCK,
52 _UI_PUK, IDS_IDLE_HEADER_PUK_LOCK,
53 _UI_PUK_PIN, IDS_IDLE_HEADER_PUK_LOCK,
54 _UI_PUK_CNF, IDS_IDLE_HEADER_PUK_LOCK,
55 _UI_BLOCK, IDS_IDLE_HEADER_SIM_BLOCKED,
56 _UI_SIM_LOCK, IDS_IDLE_HEADER_SIM_LOCK,
57 _UI_NETWORK_LOCK_NCK, IDS_IDLE_HEADER_NETWORK_LOCK,
58 _UI_NETWORK_LOCK_NSCK, IDS_IDLE_HEADER_NETWORK_LOCK,
59 _UI_NETWORK_LOCK_SPCK, IDS_IDLE_HEADER_NETWORK_LOCK,
60 _UI_NETWORK_LOCK_CCK, IDS_IDLE_HEADER_NETWORK_LOCK,
61 _UI_FINISH, IDS_STU_POP_SETUP_COMPLETE,
64 static int _tit_idx[] = {
65 _UI_PIN, STR_E_PIN, IDS_IDLE_BODY_ENTER_PIN,
66 _UI_PUK, STR_E_PUK, IDS_IDLE_BODY_ENTER_PUK,
67 _UI_PUK_PIN, STR_E_NEW, IDS_IDLE_BODY_ENTER_NEW_PIN,
68 _UI_PUK_CNF, STR_R_PIN, IDS_IDLE_BODY_ENTER_PIN,
70 IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER,
71 _UI_SIM_LOCK, STR_SIM_LOCK, IDS_COM_BODY_ENTER_PASSWORD,
72 _UI_NETWORK_LOCK_NCK, STR_NETWORK_LOCK_NCK,
73 IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY,
74 _UI_NETWORK_LOCK_NSCK, STR_NETWORK_LOCK_NSCK,
75 IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY,
76 _UI_NETWORK_LOCK_SPCK, STR_NETWORK_LOCK_SPCK,
77 IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY,
78 _UI_NETWORK_LOCK_CCK, STR_NETWORK_LOCK_CCK,
79 IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY,
80 _UI_LANG, STR_LANG, IDS_IDLE_HEADER_DISPLAY_LANGUAGE,
83 static char *_get_header(int ui_type)
88 for (i = 0; i < sizeof(_header_idx) / sizeof(_header_idx[0]); i = i + 2) {
89 if (ui_type == _header_idx[i]) {
90 r = pwlock_get_string(_header_idx[i + 1]);
98 static char *_get_tip(int ui_type)
102 if (sizeof(_tit_idx[0]) != 0) {
103 for (i = 0; i < sizeof(_tit_idx) / sizeof(_tit_idx[0]);
105 if (ui_type == _tit_idx[i]) {
106 r = pwlock_get_string(_tit_idx[i + 2]);
115 static Eina_Bool pwlock_back_cb(void *data, Elm_Object_Item *it)
117 _DBG("back key is touched");
119 elm_object_item_del(it);
124 static Evas_Object *_create_bg(Evas_Object * win)
126 Evas_Object *bg = elm_bg_add(win);
127 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
129 evas_object_color_set(bg, 0, 0, 0, 255);
130 elm_win_resize_object_add(win, bg);
131 evas_object_show(bg);
135 static Evas_Object *_create_conformant(Evas_Object * parent)
137 Evas_Object *conform;
138 conform = elm_conformant_add(parent);
139 evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND,
141 elm_win_resize_object_add(parent, conform);
142 elm_win_indicator_mode_set(parent, ELM_WIN_INDICATOR_SHOW);
143 evas_object_show(conform);
148 static Evas_Object *_create_layout(struct appdata *ad)
152 ly = elm_layout_add(ad->elm_conform);
154 _ERR("UI layout add error");
158 /* Apply the nbeat layout style */
159 elm_layout_theme_set(ly, "layout", "application", "default");
161 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
163 evas_object_show(ly);
168 static Evas_Object *_create_toolbar_btn(Evas_Object *parent)
170 Evas_Object *toolbar = elm_toolbar_add(parent);
175 elm_object_style_set(toolbar, "default");
176 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
177 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
182 Evas_Object *pwlock_add_layout_from_edj(Evas_Object *parent, const char *file,
184 Evas_Object *layout = NULL;
185 Eina_Bool ret = EINA_FALSE;
187 if (parent == NULL) {
188 _ERR("parent is NULL");
192 layout = elm_layout_add(parent);
193 if (layout == NULL) {
194 _ERR("layout is NULL");
198 ret = elm_layout_file_set(layout, file, group);
199 _DBG("File:%s, Group:%s", file, group);
200 if (ret != EINA_TRUE) {
201 _DBG("Error loading File:%s, Group:%s", file, group);
202 evas_object_del(layout);
205 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
207 evas_object_show(layout);
212 static void init_ui(struct appdata *ad)
215 ad->elm_bg = _create_bg(ad->win);
217 if (!ad->elm_conform)
218 ad->elm_conform = _create_conformant(ad->win);
220 if (!ad->layout_main) {
221 ad->layout_main = _create_layout(ad);
222 if (!ad->layout_main)
224 elm_object_content_set(ad->elm_conform, ad->layout_main);
227 if (!ad->elm_navigation_frame) {
228 ad->elm_navigation_frame = elm_naviframe_add(ad->layout_main);
229 if (!ad->elm_navigation_frame) {
230 _ERR("UI navi add error");
234 elm_object_part_content_set(ad->layout_main, "elm.swallow.content", ad->elm_navigation_frame);
235 evas_object_show(ad->elm_navigation_frame);
239 void show_msg(struct appdata *ad, int strid)
249 if (strid == IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED) {
251 max = PWLOCK_PIN_PASSWORD_MAX_LENGTH;
252 str = pwlock_get_string(IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED);
253 Eina_Strbuf *temp_str_buf = eina_strbuf_new();
254 eina_strbuf_append_printf(temp_str_buf,
255 str, PWLOCK_PASSWORD_MIN_LENGTH, max);
256 msg = eina_strbuf_string_steal(temp_str_buf);
257 eina_strbuf_free(temp_str_buf);
259 msg = pwlock_get_string(strid);
261 if (msg == NULL || msg[0] == '\0')
264 ad->msg = strdup(msg);
266 if (!ad->layout_contents)
268 remove_waiting_popup(ad);
269 show_popup(ad, msg, EINA_TRUE);
272 static inline const char *_entry_get(Evas_Object * e)
274 const char *s = NULL;
277 s = elm_entry_entry_get(_editfield_entry_get(e));
282 static void _set_str(char **s, const char *str)
290 if (str && str[0] != '\0')
296 static void do_UI_PUK_CNF(struct appdata *ad)
298 const char *s = NULL;
300 _DBG("%s", __func__);
301 s = _entry_get(ad->layout_entry);
303 if (s && ad->pin_str && !strcmp(ad->pin_str, s)) {
308 _set_str(&ad->pin_str, NULL);
309 show_msg(ad, IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN);
311 /* FIXME popup should be top display, so load main should be called after show msg.. */
312 load_main(ad, _UI_PUK_PIN);
315 static int _check_input_string(int view_type, const char *entry_str)
319 _DBG("_check_input_string: %s", entry_str);
321 if (entry_str == NULL)
322 return IDS_IDLE_BODY_PASSWORD_EMPTY;
324 lenstr = strlen(entry_str);
326 max_len = PWLOCK_PIN_PASSWORD_MAX_LENGTH;
327 _DBG("_check_input_string length: %d,max_len=%d,PWLOCK_PASSWORD_MIN_LENGTH=%d", lenstr, max_len, PWLOCK_PASSWORD_MIN_LENGTH);
329 if (lenstr < PWLOCK_PASSWORD_MIN_LENGTH || lenstr > max_len) {
330 return IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED;
332 return 0; /* means fit for the rule */
335 static void response_cb(void *data, Evas_Object * obj, void *event_info)
338 ad = (struct appdata *)data;
340 _DBG("response callback=%d\n", (int)event_info);
342 if (((int)event_info != 5) && (obj != NULL)) {
343 evas_object_del(obj);
345 /* clear_entry(ad); */
348 static void _block_clicked_cb(void *data, Evas_Object * obj, void *event_info)
351 evas_object_del(obj);
356 void _show_popup(void *data, char *msg_str)
361 ad = (struct appdata *)data;
362 Ecore_X_Window x_win;
364 ecore_imf_context_input_panel_hide(elm_entry_imf_context_get
365 (_editfield_entry_get
366 (ad->layout_entry)));
367 popup = elm_popup_add(ad->win);
368 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
372 x_win = elm_win_xwindow_get(ad->win);
373 ecore_x_netwm_window_type_set(x_win, ECORE_X_WINDOW_TYPE_DIALOG);
375 evas_object_smart_callback_add(popup, "block,clicked",
376 _block_clicked_cb, NULL);
378 elm_popup_timeout_set(popup, 3);
379 elm_object_text_set(popup, msg_str);
380 elm_object_part_text_set(popup, "title", "Information");
382 button = elm_button_add(popup);
383 elm_object_text_set(button, pwlock_get_string(IDS_COM_SK_OK));
384 elm_object_part_content_set(popup, "button1", button);
385 evas_object_smart_callback_add(button, "clicked", response_cb, popup);
387 evas_object_show(popup);
390 static void _imf_context_input_panel_hide(void *data)
392 struct appdata *ad = data;
393 Ecore_IMF_Context *imf_context = NULL;
394 Ecore_IMF_Context *imf_context_second = NULL;
396 elm_entry_imf_context_get(_editfield_entry_get(ad->layout_entry));
398 ecore_imf_context_input_panel_hide(imf_context);
401 elm_entry_imf_context_get(_editfield_entry_get
402 (ad->layout_second_entry));
403 if (imf_context_second)
404 ecore_imf_context_input_panel_hide(imf_context_second);
407 static void _done_button_changed(void *data, Evas_Object * obj, void *e)
409 struct appdata *ad = data;
410 const char* entry_str = NULL;
413 entry_str =elm_entry_entry_get(_editfield_entry_get(ad->layout_entry));
416 length = strlen(entry_str);
420 elm_object_disabled_set(ad->elm_button_done, EINA_TRUE);
422 elm_object_disabled_set(ad->elm_button_done, EINA_FALSE);
424 if (elm_object_focus_get(ad->layout_entry)) {
425 if (elm_entry_is_empty(_editfield_entry_get(ad->layout_entry))) {
426 elm_object_signal_emit(ad->layout_entry,
427 "elm,state,eraser,hide", "elm");
429 elm_object_signal_emit(ad->layout_entry,
430 "elm,state,eraser,show", "elm");
435 static void _done_cb(void *data, Evas_Object * obj, void *e)
437 struct appdata *ad = data;
439 ad->lock_view_loaded = 1;
440 _DBG("Done clicked ui_type: %d", ad->ui_type);
441 _imf_context_input_panel_hide(ad);
443 switch (ad->ui_type) {
446 show_waiting_popup(ad,
448 (IDS_IDLE_POP_CHECKING_SIM_CARD_ING));
449 _set_str(&ad->entry_str, _entry_get(ad->layout_entry));
450 _DBG("entry string: [%s]", ad->entry_str);
451 ret = _check_input_string(ad->ui_type, ad->entry_str);
455 remove_waiting_popup(ad);
461 _set_str(&ad->entry_str, _entry_get(ad->layout_entry));
462 _DBG("entry string: [%s]", ad->entry_str);
463 ret = _check_input_string(ad->ui_type, ad->entry_str);
465 /* load_main(ad, _UI_PUK_PIN); */
469 remove_waiting_popup(ad);
475 show_waiting_popup(ad,
477 (IDS_IDLE_POP_CHECKING_SIM_CARD_ING));
478 _set_str(&ad->pin_str, _entry_get(ad->layout_entry));
479 _DBG("entry string: [%s]", ad->pin_str);
480 ret = _check_input_string(ad->ui_type, ad->pin_str);
482 const char *layout_entry = _entry_get(ad->layout_entry);
483 const char *layout_second_entry = _entry_get(ad->layout_second_entry);
484 if (layout_entry && layout_second_entry &&
485 0 == strcmp(layout_entry, layout_second_entry)) {
488 remove_waiting_popup(ad);
489 show_msg(ad, IDS_IDLE_POP_PASSWORDS_NOT_MATCH);
493 remove_waiting_popup(ad);
499 show_waiting_popup(ad,
501 (IDS_IDLE_POP_CHECKING_SIM_CARD_ING));
503 _check_input_string(ad->ui_type,
504 _entry_get(ad->layout_entry));
508 remove_waiting_popup(ad);
513 case _UI_NETWORK_LOCK_NCK:
514 case _UI_NETWORK_LOCK_NSCK:
515 case _UI_NETWORK_LOCK_SPCK:
516 case _UI_NETWORK_LOCK_CCK:
517 _set_str(&ad->entry_str, _entry_get(ad->layout_entry));
518 _DBG("entry string: [%s]", ad->entry_str);
519 ret = _check_input_string(ad->ui_type, ad->entry_str);
523 remove_waiting_popup(ad);
529 _DBG("Exit _done_cb");
532 static void _dial_cb(void *data, Evas_Object * obj, void *e)
534 _DBG("%s,%d", __func__, __LINE__);
535 struct appdata *ad = data;
542 service_create(&service);
548 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NORMAL);
550 // To-Do : In here, we have to set an appropriate parameter for emergency call mode.
551 // However, current ref. dialer app control does not support emergency mode,
552 // so, we have to wait till dialer app control support emergency call mode.
554 service_set_operation(service,SERVICE_OPERATION_DIAL);
555 service_send_launch_request(service, NULL, NULL);
557 service_destroy(service);
560 static void _pp_rsp_ok_cb(void *data, Evas_Object * e, void *ei)
563 struct appdata *ad = (struct appdata *)data;
565 _DBG("popup rsp: %d\n", i);
572 evas_object_del(ad->popup);
576 ad->cancel_setup = 1;
577 if (ad->current_ug) {
578 ug_destroy(ad->current_ug);
579 ad->state = _ST_EXIT;
583 if (ad->sim_status == SIM_REQ_LOCK || ad->sim_status == SIM_REQ_NCK
584 || ad->sim_status == SIM_REQ_NSCK || ad->sim_status == SIM_REQ_SPCK
585 || ad->sim_status == SIM_REQ_CCK) {
586 if (ad->pin_changed == 1) {
591 if (ad->ui_type == _UI_LANG || ad->ui_type == _UI_TIME) { /* for IMF show problems */
594 if (ad->layout_entry) {
595 evas_object_show(_editfield_entry_get(ad->layout_entry));
596 elm_object_focus_set(_editfield_entry_get(ad->layout_entry),
605 static void _pp_rsp_cancel_cb(void *data, Evas_Object * e, void *ei)
608 struct appdata *ad = (struct appdata *)data;
610 _DBG("popup rsp: %d\n", i);
617 evas_object_del(ad->popup);
621 ad->cancel_setup = 0;
622 if (ad->sim_status == SIM_REQ_LOCK || ad->sim_status == SIM_REQ_NCK
623 || ad->sim_status == SIM_REQ_NSCK || ad->sim_status == SIM_REQ_SPCK
624 || ad->sim_status == SIM_REQ_CCK) {
625 if (ad->pin_changed == 1) {
630 if (ad->ui_type == _UI_LANG || ad->ui_type == _UI_TIME) { /* for IMF show problems */
633 if (ad->layout_entry) {
634 evas_object_show(_editfield_entry_get(ad->layout_entry));
635 elm_object_focus_set(_editfield_entry_get(ad->layout_entry),
644 static void _destroy_previous_ugs(void *data)
646 struct appdata *ad = (struct appdata *)data;
651 _DBG("%s,%d", __func__, __LINE__);
653 switch (ad->ui_type) {
657 if (ad->language_ug) {
658 ug_destroy(ad->language_ug);
659 ad->language_ug = NULL;
664 _DBG("%s,%d", __func__, __LINE__);
666 /* when last UG or SIM changed with fisrt UG, destroy the view
667 if (((ad->sim_changed == 1) && (ad->ui_type == _UI_LANG))
668 || (ad->ui_type == _UI_TIME)) {
669 _DBG("%s,%d", __func__, __LINE__);
675 static void _focused_cb(void *data, Evas_Object * obj, void *event_info)
677 if (!elm_entry_is_empty(obj)) {
678 elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
680 elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
683 static void _unfocused_cb(void *data, Evas_Object * obj, void *event_info)
685 if (elm_entry_is_empty(obj)) {
686 elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
688 elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
691 static void _eraser_clicked_cb(void *data, Evas_Object * obj,
692 const char *emission, const char *source)
694 elm_entry_entry_set(data, "");
697 static Evas_Object *_create_editfield(Evas_Object * parent, Eina_Bool focus)
699 Evas_Object *layout = NULL;
700 Evas_Object *entry = NULL;
701 static Elm_Entry_Filter_Limit_Size limit_filter_data;
703 limit_filter_data.max_char_count = PWLOCK_PIN_PASSWORD_MAX_LENGTH;
704 limit_filter_data.max_byte_count = 0;
706 layout = elm_layout_add(parent);
707 elm_layout_theme_set(layout, "layout", "editfield", "default");
709 entry = elm_entry_add(parent);
710 elm_entry_scrollable_set(entry, EINA_TRUE);
711 elm_entry_single_line_set(entry, EINA_TRUE);
712 elm_entry_password_set(entry, EINA_TRUE);
713 elm_entry_input_panel_layout_set(entry,
714 ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
715 elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size,
717 evas_object_show(entry);
718 evas_object_smart_callback_add(entry, "focused", _focused_cb, layout);
719 evas_object_smart_callback_add(entry, "unfocused", _unfocused_cb,
722 elm_object_part_content_set(layout, "elm.swallow.content", entry);
723 elm_object_part_text_set(layout, "elm.guidetext", "");
724 elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm",
725 _eraser_clicked_cb, entry);
726 elm_object_focus_set(entry, focus);
731 static Evas_Object *_editfield_entry_get(Evas_Object * parent)
733 Evas_Object *entry = NULL;
735 entry = elm_object_part_content_get(parent, "elm.swallow.content");
740 static void _entry_changed_cb(void *data, Evas_Object * obj, void *event_info)
742 if (elm_object_focus_get(data)) {
743 if (elm_entry_is_empty(obj)) {
744 elm_object_signal_emit(data, "elm,state,eraser,hide",
747 elm_object_signal_emit(data, "elm,state,eraser,show",
753 static char *_gl_label_get_title1(void *data, Evas_Object * obj,
756 struct appdata *ad = (struct appdata *)data;
757 char buf[512] = {0, };
758 char buf2[256] = {0, };
763 if (!strcmp(part, "elm.text")) {
764 _DBG("retry_cnt = %d", ad->retry_cnt);
765 if (ad->retry_cnt == 1) {
766 snprintf(buf, sizeof(buf), "%s (%s)", _get_tip(ad->ui_type),
767 pwlock_get_string(IDS_IDLE_BODY_1_ATTEMPT_LEFT));
768 } else if (ad->retry_cnt > 1) {
769 snprintf(buf2, sizeof(buf2), pwlock_get_string(IDS_IDLE_BODY_PD_ATTEMPTS_LEFT), ad->retry_cnt);
770 snprintf(buf, sizeof(buf), "%s (%s)", _get_tip(ad->ui_type), buf2);
773 snprintf(buf, sizeof(buf), "%s", _get_tip(ad->ui_type));
781 static Evas_Object *_gl_icon_get1(void *data, Evas_Object * obj,
784 Evas_Object *layout = NULL;
786 struct appdata *ad = (struct appdata *)data;
792 if (!strcmp(part, "elm.icon")) {
793 layout = _create_editfield(obj, EINA_TRUE);
794 evas_object_smart_callback_add(_editfield_entry_get(layout),
795 "changed", _done_button_changed,
798 ad->layout_entry = layout;
806 static char *_gl_label_get_title2(void *data, Evas_Object * obj,
809 struct appdata *ad = (struct appdata *)data;
810 char buf[50] = { 0, };
815 if (!strcmp(part, "elm.text")) {
816 snprintf(buf, sizeof(buf), "%s", _get_tip(ad->ui_type + 1));
822 static Evas_Object *_gl_icon_get2(void *data, Evas_Object * obj,
825 Evas_Object *layout = NULL;
827 struct appdata *ad = (struct appdata *)data;
832 if (!strcmp(part, "elm.icon")) {
833 layout = _create_editfield(obj, EINA_FALSE);
834 evas_object_smart_callback_add(_editfield_entry_get(layout),
835 "changed", _entry_changed_cb,
838 ad->layout_second_entry = layout;
846 static void _list_set_styles()
848 itc_label1.item_style = "dialogue/title";
849 itc_label1.func.text_get = _gl_label_get_title1;
850 itc_label1.func.content_get = NULL;
851 itc_label1.func.state_get = NULL;
852 itc_label1.func.del = NULL;
854 itc_entry1.item_style = "dialogue/1icon";
855 itc_entry1.func.text_get = NULL;
856 itc_entry1.func.content_get = _gl_icon_get1;
857 itc_entry1.func.state_get = NULL;
858 itc_entry1.func.del = NULL;
860 itc_label2.item_style = "dialogue/title";
861 itc_label2.func.text_get = _gl_label_get_title2;
862 itc_label2.func.content_get = NULL;
863 itc_label2.func.state_get = NULL;
864 itc_label2.func.del = NULL;
866 itc_entry2.item_style = "dialogue/1icon";
867 itc_entry2.func.text_get = NULL;
868 itc_entry2.func.content_get = _gl_icon_get2;
869 itc_entry2.func.state_get = NULL;
870 itc_entry2.func.del = NULL;
873 void load_main(struct appdata *ad, int ui_type)
875 Evas_Object *bt_done = NULL;
876 Evas_Object *bt_dial = NULL;
877 Evas_Object *genlist = NULL;
878 Elm_Object_Item *genlist_item = NULL;
880 _DBG("%s", __func__);
882 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
884 ad->ui_type = ui_type;
886 ad->layout_contents = pwlock_add_layout_from_edj(ad->elm_navigation_frame, EDJFILE, "pwlock-lock-ui");
888 genlist = elm_genlist_add(ad->layout_contents);
889 elm_object_part_content_set(ad->layout_contents, "swl/genlist", genlist);
893 if (_UI_PUK_PIN == ui_type) {
898 elm_genlist_item_append(genlist, &itc_label1, (void *)ad, NULL,
899 ELM_GENLIST_ITEM_NONE, NULL, NULL);
900 elm_genlist_item_select_mode_set(genlist_item, ELM_OBJECT_SELECT_MODE_NONE);
903 elm_genlist_item_append(genlist, &itc_entry1, (void *)ad, NULL,
904 ELM_GENLIST_ITEM_NONE, NULL, NULL);
905 elm_genlist_item_select_mode_set(genlist_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
907 if (_UI_PUK_PIN == ui_type) {
909 elm_genlist_item_append(genlist, &itc_label2, (void *)ad,
910 NULL, ELM_GENLIST_ITEM_NONE, NULL,
912 elm_genlist_item_select_mode_set(genlist_item, ELM_OBJECT_SELECT_MODE_NONE);
915 elm_genlist_item_append(genlist, &itc_entry2, (void *)ad,
916 NULL, ELM_GENLIST_ITEM_NONE, NULL,
918 elm_genlist_item_select_mode_set(genlist_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
921 _DBG("load_main ad->ui_type = %d", ad->ui_type);
923 #if 0 // This code is temporarily disabled since dialer app control does not provide emergency call mode
924 bt_dial = elm_button_add(ad->elm_navigation_frame);
925 //elm_object_style_set(bt_dial, "naviframe/title/default");
926 evas_object_size_hint_weight_set(bt_dial, EVAS_HINT_EXPAND,
928 evas_object_size_hint_align_set(bt_dial, EVAS_HINT_FILL, 0.5);
930 elm_object_text_set(bt_dial, pwlock_get_string(IDS_IDLE_BUTTON_DIALER));
931 evas_object_smart_callback_add(bt_dial, "clicked", _dial_cb, ad);
932 ad->elm_button_dial = bt_dial;
933 evas_object_show(bt_dial);
936 bt_done = elm_button_add(ad->elm_navigation_frame);
937 //elm_object_style_set(bt_done, "naviframe/title/default");
938 evas_object_size_hint_weight_set(bt_done, EVAS_HINT_EXPAND,
940 evas_object_size_hint_align_set(bt_done, EVAS_HINT_FILL, 0.5);
942 elm_object_text_set(bt_done, pwlock_get_string(IDS_COM_SK_DONE));
943 evas_object_smart_callback_add(bt_done, "clicked", _done_cb, ad);
944 ad->elm_button_done = bt_done;
945 evas_object_show(bt_done);
947 elm_object_disabled_set(bt_done, EINA_TRUE);
949 elm_naviframe_item_pop(ad->elm_navigation_frame);
950 elm_naviframe_item_push(ad->elm_navigation_frame, _get_header(ui_type), NULL,
951 NULL, ad->layout_contents, NULL);
953 #if 0 // This code is temporarily disabled since dialer app control does not provide emergency call mode
954 elm_object_part_content_set(ad->layout_contents, "button.select.emergency", bt_dial);
956 elm_object_part_content_set(ad->layout_contents, "button.select.done", bt_done);
958 ad->ui_type = ui_type;
959 remove_waiting_popup(ad);
962 void show_pin(struct appdata *ad)
964 _DBG("%s", __func__);
966 if (!ad->elm_navigation_frame)
969 load_main(ad, _UI_PIN);
971 evas_object_show(ad->win);
974 void show_puk(struct appdata *ad)
976 _DBG("%s", __func__);
978 if (!ad->elm_navigation_frame)
981 load_main(ad, _UI_PUK);
983 evas_object_show(ad->win);
986 void show_puk_pin(struct appdata *ad)
988 _DBG("%s", __func__);
990 if (!ad->elm_navigation_frame)
993 load_main(ad, _UI_PUK_PIN);
995 evas_object_show(ad->win);
998 void show_sim_lock(struct appdata *ad)
1000 _DBG("%s", __func__);
1002 int st = ad->sim_status;
1003 if (!ad->elm_navigation_frame) {
1008 load_main(ad, _UI_SIM_LOCK);
1011 load_main(ad, _UI_NETWORK_LOCK_NCK);
1014 load_main(ad, _UI_NETWORK_LOCK_NSCK);
1017 load_main(ad, _UI_NETWORK_LOCK_SPCK);
1020 load_main(ad, _UI_NETWORK_LOCK_CCK);
1023 load_main(ad, _UI_SIM_LOCK);
1027 evas_object_show(ad->win);
1030 void show_block(struct appdata *ad)
1032 Evas_Object *ly = NULL;
1033 Evas_Object *bt_dial = NULL;
1034 Evas_Object *el = NULL;
1035 Elm_Object_Item *navi_it = NULL;
1036 char buf[1024] = { 0, };
1038 _DBG("%s", __func__);
1040 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
1042 if (!ad->elm_navigation_frame)
1045 ly = elm_layout_add(ad->elm_navigation_frame);
1046 elm_layout_theme_set(ly, "layout", "application", "noindicator");
1047 /*Create content field */
1048 el = elm_label_add(ad->elm_navigation_frame);
1049 elm_label_line_wrap_set(el, ELM_WRAP_WORD);
1051 snprintf(buf, sizeof(buf), "%s%s%s",
1052 "<br><font_size=32 font=SLP:style=Regular color=#7c7c7c align=center>",
1054 (IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER),
1056 elm_object_text_set(el, buf);
1058 elm_object_part_content_set(ly, "elm.swallow.content", el);
1059 evas_object_show(el);
1061 bt_dial = elm_button_add(ad->elm_navigation_frame);
1062 elm_object_text_set(bt_dial, pwlock_get_string(IDS_IDLE_BUTTON_DIALER));
1063 evas_object_smart_callback_add(bt_dial, "clicked", _dial_cb, ad);
1064 evas_object_show(bt_dial);
1066 ad->layout_contents = ly;
1067 navi_it = elm_naviframe_item_push(ad->elm_navigation_frame, _get_header(_UI_BLOCK),
1068 NULL, NULL, ad->layout_contents, NULL);
1070 elm_object_item_part_content_set(navi_it, "title_right_btn", bt_dial);
1071 ad->ui_type = _UI_BLOCK;
1072 evas_object_show(ad->win);
1073 remove_waiting_popup(ad);
1076 void pwlock_destroy(struct appdata *ad)
1078 _DBG("%s", __func__);
1080 remove_waiting_popup(ad);
1081 if (!ad->elm_navigation_frame)
1083 _DBG("%s %d", __func__, __LINE__);
1085 elm_naviframe_item_pop(ad->elm_navigation_frame);
1087 if (ad->layout_contents) {
1088 evas_object_del(ad->layout_contents);
1089 ad->layout_contents = NULL;
1091 if (ad->layout_entry) {
1092 evas_object_del(ad->layout_entry);
1093 ad->layout_entry = NULL;
1095 if (ad->layout_second_entry) {
1096 evas_object_del(ad->layout_second_entry);
1097 ad->layout_second_entry = NULL;
1100 /* FIXME we should check window hide for fast boot */
1101 /* evas_object_hide(ad->win); */
1102 _DBG("%s %d %p", __func__, __LINE__, ad->elm_navigation_frame);
1105 void clear_entry(struct appdata *ad)
1107 if (ad->layout_entry) {
1108 elm_object_part_text_set(ad->layout_entry, "elm.guidetext", "");
1109 elm_entry_entry_set(_editfield_entry_get(ad->layout_entry), "");
1111 if (ad->layout_second_entry) {
1112 elm_object_part_text_set(ad->layout_second_entry,
1113 "elm.guidetext", "");
1114 elm_entry_entry_set(_editfield_entry_get
1115 (ad->layout_second_entry), "");
1119 static void _ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
1121 struct appdata *ad = (struct appdata *)priv;
1123 _DBG("%s begin", __func__);
1127 base = (Evas_Object *) ug_get_layout(ug);
1129 _DBG("base layout null!\n");
1133 _DBG("%s,%d", __func__, __LINE__);
1135 case UG_MODE_FULLVIEW:
1136 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
1138 //elm_win_resize_object_add(ug_get_window(), base);
1139 //ug_disable_effect(ug);
1141 evas_object_show(base);
1146 if (_UI_LANG == ad->ui_type) {
1147 ad->language_settings_loaded = 1;
1149 //_destroy_previous_ugs(ad);
1150 _DBG("%s end", __func__);
1154 static void _ug_result_cb(ui_gadget_h ug, service_h service, void *priv)
1156 _DBG("function=%s", __func__);
1157 struct appdata *ad = NULL;
1159 if (!ug || !priv || !service) {
1163 ad = (struct appdata *)priv;
1164 _DBG("ad->state=%d", ad->state);
1166 switch (ad->state) {
1169 service_get_extra_data(service, "updateType", &retv);
1171 _DBG("_ST_LANG updateType = %s", retv);
1172 service_get_extra_data(service, "ON_OFF_TEXT", &retv);
1174 _DBG("_ST_LANG ON_OFF_TEXT = %s", retv);
1175 service_get_extra_data(service, "result", &retv);
1177 _DBG("_ST_LANG language result = %s", retv);
1178 char *path = (char *)vconf_get_str(VCONFKEY_LANGSET);
1181 _DBG("VCONFKEY_LANGSET value = %s", path);
1182 setenv("LANG", path, 1);
1183 setenv("LC_MESSAGES", path, 1);
1184 r = setlocale(LC_ALL, "");
1186 r = setlocale(LC_ALL, path);
1188 bindtextdomain(PACKAGE, LOCALEDIR);
1189 textdomain(PACKAGE);
1199 if (!retv) { /* avoid to click ug quickly */
1200 _DBG("retv = %s", retv);
1205 static void _ug_destroy_cb(ui_gadget_h ug, void *priv)
1207 _DBG("%s, %d begin", __func__, __LINE__);
1208 struct appdata *ad = NULL;
1209 if (1 == _ug_destroy) {
1214 ad = (struct appdata *)priv;
1224 _DBG("%s, %d ad->state: %d", __func__, __LINE__, ad->state);
1225 switch (ad->state) {
1229 ad->state = _ST_GREETING;
1230 //show_waiting_popup(ad, NULL);
1237 evas_object_show(ad->win);
1243 static void _menu_greeting_button_lang_cb(void *data, Evas_Object * obj, void *e) {
1244 _DBG("%s,%d", __func__, __LINE__);
1245 struct appdata *ad = data;
1250 ad->state = _ST_LANG;
1255 static void _menu_greeting_button_dt_cb(void *data, Evas_Object * obj, void *e) {
1256 _DBG("%s,%d", __func__, __LINE__);
1257 struct appdata *ad = data;
1262 ad->state = _ST_TIME;
1267 static void _nosim_retry_cb(void *data, Evas_Object * obj, void *event_info) {
1268 _DBG("%s,%d", __func__, __LINE__);
1269 struct appdata *ad = data;
1274 do_state_directly(_ST_SIM, ad);
1277 int show_greeting(struct appdata *ad) {
1278 _DBG("%s,%d", __func__, __LINE__);
1280 char *model_name = NULL;
1282 Evas_Object *navi = NULL;
1283 Elm_Object_Item *navi_it = NULL;
1284 Evas_Object *contents = NULL;
1285 Evas_Object *button = NULL;
1286 Evas_Object *dt_btn = NULL;
1287 Evas_Object *toolbar = NULL;
1294 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
1296 ad->ui_type = _UI_GREETING;
1301 navi = ad->elm_navigation_frame;
1303 contents = pwlock_add_layout_from_edj(navi, EDJFILE, "pwlock-menu-lang");
1305 elm_theme_extension_add(NULL, EDJFILE);
1307 ret_val = system_info_get_value_string(SYSTEM_INFO_KEY_PLATFORM_NAME, &model_name);
1308 if (ret_val != SYSTEM_INFO_ERROR_NONE) {
1309 _ERR("system_info_get_value_string return error : %d", ret_val);
1311 _DBG("SYSTEM_INFO_KEY_PLATFORM_NAME = %s\n", model_name);
1314 elm_object_part_text_set(contents, "text.greeting.1", pwlock_get_string(IDS_SCM_BODY_WELCOME_E));
1315 if (model_name != NULL) {
1316 _DBG("Device Name = %s\n", model_name);
1317 //elm_object_part_text_set(contents, "text.greeting.1", pwlock_get_string(IDS_IDLE_BODY_GREETING_WELCOME));
1318 elm_object_part_text_set(contents, "text.greeting.2", model_name);
1321 PWLOCK_MEMFREE(model_name);
1323 elm_object_part_text_set(contents, "text.help",
1324 pwlock_get_string(IDS_STU_BODY_SELECT_LANGUAGE));
1326 button = elm_button_add(navi);
1327 //elm_object_style_set(button, "pwlock/lang_btn");
1328 elm_object_part_content_set(contents, "button.select.lang", button);
1330 elm_object_text_set(button, pwlock_get_lang_title());
1331 evas_object_smart_callback_add(button, "clicked", _menu_greeting_button_lang_cb, ad);
1333 elm_object_part_text_set(contents, "text.dt", pwlock_get_string(IDS_ST_BODY_SET_DATE_AND_TIME));
1335 dt_btn = elm_button_add(navi);
1336 //elm_object_style_set(dt_btn, "pwlock/lang_btn");
1337 elm_object_part_content_set(contents, "button.select.dt", dt_btn);
1339 elm_object_text_set(dt_btn, pwlock_get_string(IDS_ST_BODY_DATE_AND_TIME));
1340 evas_object_smart_callback_add(dt_btn, "clicked", _menu_greeting_button_dt_cb, ad);
1342 toolbar = _create_toolbar_btn(navi);
1343 elm_toolbar_item_append(toolbar, NULL, pwlock_get_string(IDS_ST_SK_EMERGENCY_CALL), _dial_cb, ad);
1344 elm_toolbar_item_append(toolbar, NULL, pwlock_get_string(IDS_COM_SK_START), pwlock_greeting_next_cb, ad);
1346 navi_it = elm_naviframe_item_push(navi, NULL, NULL, NULL, contents, NULL);
1348 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1350 elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
1351 elm_naviframe_item_pop_cb_set(navi_it, pwlock_back_cb, ad);
1353 evas_object_show(ad->win);
1354 _destroy_previous_ugs(ad);
1359 int show_connection(struct appdata *ad) {
1360 _DBG("%s", __func__);
1361 ad->ui_type = _UI_CONNECTION;
1365 //if (ad->connection_ug) {
1366 // evas_object_show(ad->wifi_ug_layout);
1370 if (ad->wifi_ug_loaded) {
1373 ad->wifi_ug_loaded = 1;
1376 UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
1377 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1379 service_create(&service);
1382 service_destroy(service); /* prevent */
1385 cbs->layout_cb = pwlock_ug_connection_layout_cb;
1386 cbs->result_cb = pwlock_ug_connection_result_cb;
1387 cbs->destroy_cb = pwlock_ug_connection_destroy_cb;
1388 cbs->priv = (void *)ad;
1390 service_destroy(service);
1391 free(cbs); /* memory leak */
1394 service_add_extra_data(service, "caller", "pwlock");
1395 service_add_extra_data(service, "lbutton", pwlock_get_string(IDS_COM_BODY_PREVIOUS));
1396 service_add_extra_data(service, "rbutton_next", pwlock_get_string(IDS_COM_SK_NEXT));
1397 service_add_extra_data(service, "rbutton_skip", pwlock_get_string(IDS_COM_SK_SKIP));
1399 ug = ug_create(NULL, "wifi-efl-UG", UG_MODE_FULLVIEW, service, cbs);
1400 service_destroy(service);
1403 _DBG("Get connection ug failed.");
1404 ad->wifi_ug_loaded = 0;
1405 if (ad->btn_evt_state == BUTTON_STATE_PREV_CLICKED)
1406 ad->state = _ST_GREETING;
1408 ad->state = _ST_FINISH;
1412 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
1413 ad->current_ug = ad->connection_ug = ug;
1414 evas_object_show(ad->win);
1415 _destroy_previous_ugs(ad);
1419 int show_tutorial(struct appdata *ad) {
1420 _DBG("%s,%d", __func__, __LINE__);
1421 Evas_Object *navi = NULL;
1422 Evas_Object *prev_btn = NULL;
1423 Evas_Object *next_btn = NULL;
1424 Elm_Object_Item *navi_it = NULL;
1429 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
1431 ad->ui_type = _UI_TUTORIAL;
1436 navi = ad->elm_navigation_frame;
1438 prev_btn = _create_toolbar_btn(navi);
1439 next_btn = _create_toolbar_btn(navi);
1442 elm_naviframe_item_push(navi, (const char *)_("TUTORIAL"),
1443 NULL, NULL, NULL, NULL);
1445 elm_object_item_part_content_set(navi_it, "toolbar_button1", prev_btn);
1446 elm_object_item_part_content_set(navi_it, "toolbar_button2", next_btn);
1448 evas_object_show(ad->win);
1449 _destroy_previous_ugs(ad);
1454 int show_lang(struct appdata *ad)
1456 _DBG("%s", __func__);
1457 ad->ui_type = _UI_LANG;
1461 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
1463 UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
1464 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1466 service_create(&service);
1469 service_destroy(service); /* prevent */
1472 cbs->layout_cb = _ug_layout_cb;
1473 cbs->result_cb = _ug_result_cb;
1474 cbs->destroy_cb = _ug_destroy_cb;
1475 cbs->priv = (void *)ad;
1477 service_destroy(service);
1478 free(cbs); /* memory leak */
1481 service_add_extra_data(service, "caller", "pwlock");
1482 service_add_extra_data(service, "viewtype", "language");
1484 ug = ug_create(NULL, "setting-phone-efl", UG_MODE_FULLVIEW, service, cbs);
1485 service_destroy(service);
1488 _DBG("Get phone ug failed.");
1489 ad->state = _ST_GREETING;
1493 ad->current_ug = ad->language_ug = ug;
1494 evas_object_show(ad->win);
1498 int show_nosim(struct appdata *ad)
1500 _DBG("%s,%d", __func__, __LINE__);
1501 Evas_Object *layout = NULL;
1502 Evas_Object *navi = NULL;
1503 Evas_Object *button = NULL;
1504 Evas_Object *toolbar = NULL;
1505 Elm_Object_Item *navi_it = NULL;
1510 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
1512 ad->ui_type = _UI_NOSIM;
1517 navi = ad->elm_navigation_frame;
1519 layout = pwlock_add_layout_from_edj(navi, EDJFILE, "pwlock-nosim-ui");
1521 elm_object_part_text_set(layout, "text.help", pwlock_get_string(IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG));
1523 button = elm_button_add(layout);
1524 elm_object_text_set(button, pwlock_get_string(IDS_ST_BUTTON_TRY_AGAIN_ABB));
1525 evas_object_smart_callback_add(button, "clicked", _nosim_retry_cb, ad);
1526 elm_object_part_content_set(layout, "button.select.retry", button);
1528 toolbar = _create_toolbar_btn(navi);
1529 elm_toolbar_item_append(toolbar, NULL, pwlock_get_string(IDS_COM_BODY_PREVIOUS), pwlock_nosim_prev_cb, ad);
1530 elm_toolbar_item_append(toolbar, NULL, pwlock_get_string(IDS_COM_SK_SKIP), pwlock_nosim_skip_cb, ad);
1533 elm_naviframe_item_push(navi, (const char *)_(pwlock_get_string(IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE)),
1534 NULL, NULL, layout, NULL);
1536 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1538 elm_naviframe_item_pop_cb_set(navi_it, pwlock_back_cb, ad);
1540 evas_object_show(ad->win);
1541 _destroy_previous_ugs(ad);
1546 int show_time(struct appdata *ad)
1548 _DBG("%s,%d", __func__, __LINE__);
1551 ad->ui_type = _UI_TIME;
1554 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
1556 ad->date_and_time_settings_loaded = 1;
1558 UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
1559 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1561 service_create(&service);
1564 service_destroy(service); /* prevent */
1567 cbs->layout_cb = _ug_layout_cb;
1568 cbs->result_cb = _ug_result_cb;
1569 cbs->destroy_cb = _ug_destroy_cb;
1570 cbs->priv = (void *)ad;
1572 service_destroy(service);
1573 free(cbs); /* memory leak */
1576 service_add_extra_data(service, "caller", "pwlock");
1577 //service_add_extra_data(service, "lbutton", pwlock_get_string(IDS_COM_BODY_PREVIOUS));
1578 //service_add_extra_data(service, "rbutton", pwlock_get_string(IDS_COM_SK_NEXT));
1580 ug = ug_create(NULL, "setting-time-efl", UG_MODE_FULLVIEW, service, cbs);
1581 service_destroy(service);
1584 _DBG("?????Get time ug failed.");
1585 ad->state = _ST_GREETING;
1589 ad->current_ug = ad->date_ug = ug;
1590 evas_object_show(ad->win);
1591 _destroy_previous_ugs(ad);
1595 int show_finish(struct appdata *ad) {
1596 _DBG("%s,%d", __func__, __LINE__);
1598 Evas_Object *navi = NULL;
1599 Evas_Object *toolbar = NULL;
1600 Elm_Object_Item *navi_it = NULL;
1601 Evas_Object *contents = NULL;
1602 Evas_Object *label = NULL;
1603 Eina_Strbuf *finish_text;
1608 set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
1610 ad->ui_type = _UI_FINISH;
1615 navi = ad->elm_navigation_frame;
1617 contents = pwlock_add_layout_from_edj(navi, EDJFILE, "pwlock-finish");
1619 finish_text = eina_strbuf_new();
1621 label = elm_label_add(contents);
1622 elm_label_line_wrap_set(label, ELM_WRAP_WORD);
1623 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
1624 evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
1626 if (finish_text != NULL && eina_strbuf_append_printf(finish_text,
1627 "<font size=32 color=#d7d7d7 align=center><br> %s </font>",
1628 pwlock_get_string(IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE)) == EINA_TRUE) {
1629 elm_object_text_set(label, eina_strbuf_string_get(finish_text));
1632 if (finish_text != NULL) {
1633 eina_strbuf_free(finish_text);
1636 elm_object_part_content_set(contents, "swl/label", label);
1638 toolbar = _create_toolbar_btn(navi);
1639 elm_toolbar_item_append(toolbar, NULL, pwlock_get_string(IDS_COM_BODY_PREVIOUS), pwlock_finish_prev_cb, ad);
1640 elm_toolbar_item_append(toolbar, NULL, pwlock_get_string(IDS_ST_BODY_INSTALTAB_FINISH), pwlock_finish_cb, ad);
1642 navi_it = elm_naviframe_item_push(navi, _get_header(ad->ui_type), NULL, NULL, contents, NULL);
1644 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
1646 elm_naviframe_item_pop_cb_set(navi_it, pwlock_back_cb, ad);
1648 evas_object_show(ad->win);
1649 _destroy_previous_ugs(ad);
1655 int show_dialer(struct appdata *ad)
1657 _DBG("%s,%d", __func__, __LINE__);
1660 ad->ui_type = _UI_DIALER;
1663 service_create(&service);
1664 UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
1665 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
1667 service_destroy(service); /* prevent */
1670 cbs->layout_cb = _ug_layout_cb;
1671 cbs->result_cb = NULL;
1672 cbs->destroy_cb = _ug_destroy_cb;
1673 cbs->priv = (void *)ad;
1676 service_destroy(service);
1677 free(cbs); /* memory leak */
1681 service_add_extra_data(service, "emergency_dialer", "emergency");
1682 ad->dialer_ug = ug_create(NULL, "dialer-efl", UG_MODE_FULLVIEW, service, cbs);
1683 service_destroy(service);
1685 if (!ad->dialer_ug) {
1686 _DBG("dialer ug failed\n");
1689 ad->current_ug = ad->dialer_ug;
1690 evas_object_show(ad->win);
1695 void show_popup(struct appdata *ad, const char *mesg, Eina_Bool mode)
1701 Evas_Object *button1;
1702 Evas_Object *button2;
1703 ad->previous_ui_type = ad->ui_type;
1706 evas_object_del(ad->popup);
1709 ecore_imf_context_input_panel_hide(elm_entry_imf_context_get
1710 (_editfield_entry_get
1711 (ad->layout_entry)));
1712 pp = elm_popup_add(ad->win);
1714 evas_object_size_hint_weight_set(pp, EVAS_HINT_EXPAND,
1716 elm_object_text_set(pp, mesg);
1717 if (EINA_TRUE == mode) {
1718 elm_popup_timeout_set(pp, 3);
1720 button1 = elm_button_add(pp);
1721 elm_object_text_set(button1, pwlock_get_string(IDS_COM_SK_OK));
1722 elm_object_part_content_set(pp, "button1", button1);
1723 evas_object_smart_callback_add(button1, "clicked", _pp_rsp_ok_cb,
1726 button2 = elm_button_add(pp);
1727 elm_object_text_set(button2, pwlock_get_string(IDS_COM_SK_CANCEL));
1728 elm_object_part_content_set(pp, "button2", button2);
1729 evas_object_smart_callback_add(button2, "clicked", _pp_rsp_cancel_cb,
1732 remove_waiting_popup(ad);
1733 evas_object_show(pp);
1736 void show_waiting_popup(struct appdata *ad, const char *msg_str)
1742 _DBG("%s", __func__);
1744 Evas_Object *popup = NULL;
1745 Evas_Object *progressbar = NULL;
1746 Evas_Object *box = NULL;
1747 Evas_Object *label = NULL;
1749 Eina_Strbuf *popup_str;
1751 remove_waiting_popup(ad);
1753 popup = elm_popup_add(ad->win);
1754 ad->waiting_popup = popup;
1755 box = elm_box_add(popup);
1756 if (msg_str != NULL) {
1757 popup_str = eina_strbuf_new();
1758 label = elm_label_add(popup);
1759 elm_label_line_wrap_set(label, EINA_TRUE);
1760 if (popup_str != NULL && eina_strbuf_append_printf(popup_str,
1761 "<font color=#ffffff>%s</font>", msg_str) == EINA_TRUE) {
1762 elm_object_text_set(label, eina_strbuf_string_get(popup_str));
1764 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND,
1766 evas_object_size_hint_align_set(label, EVAS_HINT_FILL,
1768 evas_object_show(label);
1769 elm_box_pack_end(box, label);
1771 if (popup_str != NULL) {
1772 eina_strbuf_free(popup_str);
1776 progressbar = elm_progressbar_add(popup);
1777 elm_object_style_set(progressbar, "pending_list");
1778 elm_progressbar_pulse(progressbar, EINA_TRUE);
1779 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL,
1781 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND,
1783 elm_progressbar_pulse(progressbar, EINA_TRUE);
1784 evas_object_show(progressbar);
1785 elm_box_pack_end(box, progressbar);
1786 evas_object_show(box);
1787 elm_object_content_set(popup, box);
1788 evas_object_show(popup);
1790 evas_object_show(ad->win);
1793 void remove_waiting_popup(struct appdata *ad)
1795 _DBG("%s", __func__);
1799 if (ad->waiting_popup) {
1800 _DBG("delete waiting popup");
1801 evas_object_del(ad->waiting_popup);
1802 ad->waiting_popup = NULL;
1806 Eina_Bool show_puk_do(void *data)
1808 _DBG("%s, %d begin", __func__, __LINE__);
1809 struct appdata *ad = (struct appdata *)data;
1812 ad->state = _ST_SIM_PUKCNF;
1814 return ECORE_CALLBACK_CANCEL;
1817 void update_pw_entry(struct appdata *ad, char *input_data)
1819 _DBG("%s", __func__);
1821 if (input_data == NULL)
1823 elm_entry_entry_set(_editfield_entry_get(ad->layout_entry), input_data);
1824 elm_entry_cursor_end_set(_editfield_entry_get(ad->layout_entry));
1825 _done_cb(ad, NULL, NULL);