From de0583fe580f60dbe6df346302d9b5a0d6d0bc5e Mon Sep 17 00:00:00 2001 From: seungho Date: Tue, 21 Aug 2012 23:01:24 +0900 Subject: apps/home/pwlock --- src/ui.c | 1094 +++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 756 insertions(+), 338 deletions(-) (limited to 'src/ui.c') diff --git a/src/ui.c b/src/ui.c index 67e1bb0..7b2c246 100755 --- a/src/ui.c +++ b/src/ui.c @@ -1,36 +1,43 @@ /* - * 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. - */ - + * pwlock + * + * 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. + * + */ #include #include #include #include -#include +#include +#include #include "pwlock.h" #include "util.h" #include "tapi.h" #include "ui.h" +#include "langs.h" +#include "ui-callback.h" #define ENTRY_MAX 35 static Elm_Gen_Item_Class itc_label1, itc_entry1, itc_label2, itc_entry2; -static void _ug_layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv); -static void _ug_destroy_cb(struct ui_gadget *ug, void *priv); +static Elm_Gen_Item_Class sep_itc; +static Elm_Gen_Item_Class nosim_icon_itc, nosim_text_itc, sim_retry_btn_itc; +static void _ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv); +static void _ug_destroy_cb(ui_gadget_h ug, void *priv); static Evas_Object *_create_bg(Evas_Object * win); static void _destroy_previous_ugs(void *data); static void _focused_cb(void *data, Evas_Object * obj, void *event_info); @@ -41,7 +48,6 @@ static Evas_Object *_create_editfield(Evas_Object * parent); static Evas_Object *_editfield_entry_get(Evas_Object * parent); static int _ug_destroy = 0; -static Elm_Object_Item *item[2] = { 0, }; static int _header_idx[] = { _UI_PIN, IDS_IDLE_HEADER_PIN_LOCK, @@ -54,6 +60,7 @@ static int _header_idx[] = { _UI_NETWORK_LOCK_NSCK, IDS_IDLE_HEADER_NETWORK_LOCK, _UI_NETWORK_LOCK_SPCK, IDS_IDLE_HEADER_NETWORK_LOCK, _UI_NETWORK_LOCK_CCK, IDS_IDLE_HEADER_NETWORK_LOCK, + _UI_FINISH, IDS_STU_POP_SETUP_COMPLETE, }; static int _tit_idx[] = { @@ -108,10 +115,11 @@ static char *_get_tip(int ui_type) } static Evas_Object *_create_bg(Evas_Object * win) -{ +{ /* nbeat */ Evas_Object *bg = elm_bg_add(win); evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_color_set(bg, 249, 249, 249, 255); elm_win_resize_object_add(win, bg); evas_object_show(bg); return bg; @@ -127,6 +135,7 @@ static Evas_Object *_layout_add(Evas_Object * parent) return NULL; } + /* Apply the nbeat layout style */ elm_layout_theme_set(ly, "layout", "application", "default"); evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, @@ -147,32 +156,55 @@ static Evas_Object *_create_layout(struct appdata *ad) return ly; } +Evas_Object *pwlock_add_layout_from_edj(Evas_Object *parent, const char *file, + const char *group) { + Evas_Object *layout = NULL; + Eina_Bool ret = EINA_FALSE; + + if (parent == NULL) { + _ERR("parent is NULL"); + return NULL; + } + + layout = elm_layout_add(parent); + if (layout == NULL) { + _ERR("layout is NULL"); + return NULL; + } + + ret = elm_layout_file_set(layout, file, group); + _DBG("File:%s, Group:%s", file, group); + if (ret != EINA_TRUE) { + _DBG("Error loading File:%s, Group:%s", file, group); + evas_object_del(layout); + return NULL; + } + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_show(layout); + + return layout; +} + static void init_ui(struct appdata *ad) { Evas_Object *eo; - Evas_Object *bg; - ad->bg = _create_bg(ad->win); + ad->elm_bg = _create_bg(ad->win); - ad->ly = _create_layout(ad); - if (!ad->ly) + ad->layout_main = _create_layout(ad); + if (!ad->layout_main) return; - eo = elm_naviframe_add(ad->ly); + eo = elm_naviframe_add(ad->layout_main); if (!eo) { _ERR("UI navi add error"); return; } - elm_object_part_content_set(ad->ly, "elm.swallow.content", eo); + elm_object_part_content_set(ad->layout_main, "elm.swallow.content", eo); evas_object_show(eo); - ad->navi = eo; - - bg = evas_object_rectangle_add(evas_object_evas_get(ad->win)); - evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - evas_object_color_set(bg, 0, 0, 0, 255); - elm_win_resize_object_add(ad->win, bg); + ad->elm_navigation_frame = eo; } void show_msg(struct appdata *ad, int strid) @@ -202,7 +234,7 @@ void show_msg(struct appdata *ad, int strid) ad->msg = strdup(msg); - if (!ad->ly_main) + if (!ad->layout_contents) return; remove_waiting_popup(ad); show_popup(ad, msg, EINA_TRUE); @@ -237,7 +269,7 @@ static void do_UI_PUK_CNF(struct appdata *ad) const char *s = NULL; _DBG("%s", __func__); - s = _entry_get(ad->entry_layout); + s = _entry_get(ad->layout_entry); if (s && ad->pin_str && !strcmp(ad->pin_str, s)) { do_state(ad); @@ -247,6 +279,7 @@ static void do_UI_PUK_CNF(struct appdata *ad) _set_str(&ad->pin_str, NULL); show_msg(ad, IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN); + /* FIXME popup should be top display, so load main should be called after show msg.. */ load_main(ad, _UI_PUK_PIN); } @@ -267,7 +300,7 @@ static int _check_input_string(int view_type, const char *entry_str) if (lenstr < PWLOCK_PASSWORD_MIN_LENGTH || lenstr > max_len) { return IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED; } - return 0; + return 0; /* means fit for the rule */ } static void response_cb(void *data, Evas_Object * obj, void *event_info) @@ -280,6 +313,7 @@ static void response_cb(void *data, Evas_Object * obj, void *event_info) if (((int)event_info != 5) && (obj != NULL)) { evas_object_del(obj); } + /* clear_entry(ad); */ } static void _block_clicked_cb(void *data, Evas_Object * obj, void *event_info) @@ -300,11 +334,12 @@ void _show_popup(void *data, char *msg_str) ecore_imf_context_input_panel_hide(elm_entry_imf_context_get (_editfield_entry_get - (ad->entry_layout))); + (ad->layout_entry))); popup = elm_popup_add(ad->win); evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + /* FIXME */ x_win = elm_win_xwindow_get(ad->win); ecore_x_netwm_window_type_set(x_win, ECORE_X_WINDOW_TYPE_DIALOG); @@ -314,10 +349,12 @@ void _show_popup(void *data, char *msg_str) elm_popup_timeout_set(popup, 3); elm_object_text_set(popup, msg_str); elm_object_part_text_set(popup, "title", "Information"); + button = elm_button_add(popup); elm_object_text_set(button, pwlock_get_string(IDS_COM_SK_OK)); elm_object_part_content_set(popup, "button1", button); evas_object_smart_callback_add(button, "clicked", response_cb, popup); + evas_object_show(popup); } @@ -327,13 +364,13 @@ static void _imf_context_input_panel_hide(void *data) Ecore_IMF_Context *imf_context = NULL; Ecore_IMF_Context *imf_context_second = NULL; imf_context = - elm_entry_imf_context_get(_editfield_entry_get(ad->entry_layout)); + elm_entry_imf_context_get(_editfield_entry_get(ad->layout_entry)); if (imf_context) ecore_imf_context_input_panel_hide(imf_context); imf_context_second = elm_entry_imf_context_get(_editfield_entry_get - (ad->entry_second_layout)); + (ad->layout_second_entry)); if (imf_context_second) ecore_imf_context_input_panel_hide(imf_context_second); } @@ -343,21 +380,19 @@ static void _done_button_changed(void *data, Evas_Object * obj, void *e) struct appdata *ad = data; int length = - strlen(elm_entry_entry_get(_editfield_entry_get(ad->entry_layout))); + strlen(elm_entry_entry_get(_editfield_entry_get(ad->layout_entry))); if (length == 0) { - elm_object_item_disabled_set(item[1], EINA_TRUE); - elm_object_disabled_set(ad->button_done, EINA_TRUE); + elm_object_disabled_set(ad->elm_button_done, EINA_TRUE); } else { - elm_object_item_disabled_set(item[1], EINA_FALSE); - elm_object_disabled_set(ad->button_done, EINA_FALSE); + elm_object_disabled_set(ad->elm_button_done, EINA_FALSE); } - if (elm_object_focus_get(ad->entry_layout)) { - if (elm_entry_is_empty(_editfield_entry_get(ad->entry_layout))) { - elm_object_signal_emit(ad->entry_layout, + if (elm_object_focus_get(ad->layout_entry)) { + if (elm_entry_is_empty(_editfield_entry_get(ad->layout_entry))) { + elm_object_signal_emit(ad->layout_entry, "elm,state,eraser,hide", "elm"); } else { - elm_object_signal_emit(ad->entry_layout, + elm_object_signal_emit(ad->layout_entry, "elm,state,eraser,show", "elm"); } } @@ -376,8 +411,8 @@ static void _done_cb(void *data, Evas_Object * obj, void *e) case _UI_SIM_LOCK: show_waiting_popup(ad, pwlock_get_string - (IDS_IDLE_BODY_CHECKING_SIM_STATUS)); - _set_str(&ad->entry_str, _entry_get(ad->entry_layout)); + (IDS_IDLE_POP_CHECKING_SIM_CARD_ING)); + _set_str(&ad->entry_str, _entry_get(ad->layout_entry)); _DBG("entry string: [%s]", ad->entry_str); ret = _check_input_string(ad->ui_type, ad->entry_str); if (ret == 0) { @@ -389,10 +424,11 @@ static void _done_cb(void *data, Evas_Object * obj, void *e) } break; case _UI_PUK: - _set_str(&ad->entry_str, _entry_get(ad->entry_layout)); + _set_str(&ad->entry_str, _entry_get(ad->layout_entry)); _DBG("entry string: [%s]", ad->entry_str); ret = _check_input_string(ad->ui_type, ad->entry_str); if (ret == 0) { + /* load_main(ad, _UI_PUK_PIN); */ pwlock_destroy(ad); show_puk_pin(ad); } else { @@ -404,14 +440,14 @@ static void _done_cb(void *data, Evas_Object * obj, void *e) case _UI_PUK_PIN: show_waiting_popup(ad, pwlock_get_string - (IDS_IDLE_BODY_CHECKING_SIM_STATUS)); - _set_str(&ad->pin_str, _entry_get(ad->entry_layout)); + (IDS_IDLE_POP_CHECKING_SIM_CARD_ING)); + _set_str(&ad->pin_str, _entry_get(ad->layout_entry)); _DBG("entry string: [%s]", ad->pin_str); ret = _check_input_string(ad->ui_type, ad->pin_str); if (ret == 0) { if (0 == - strcmp(_entry_get(ad->entry_layout), - _entry_get(ad->entry_second_layout))) { + strcmp(_entry_get(ad->layout_entry), + _entry_get(ad->layout_second_entry))) { do_UI_PUK_CNF(ad); } else { remove_waiting_popup(ad); @@ -427,10 +463,10 @@ static void _done_cb(void *data, Evas_Object * obj, void *e) case _UI_PUK_CNF: show_waiting_popup(ad, pwlock_get_string - (IDS_IDLE_BODY_CHECKING_SIM_STATUS)); + (IDS_IDLE_POP_CHECKING_SIM_CARD_ING)); ret = _check_input_string(ad->ui_type, - _entry_get(ad->entry_layout)); + _entry_get(ad->layout_entry)); if (ret == 0) { do_UI_PUK_CNF(ad); } else { @@ -443,7 +479,7 @@ static void _done_cb(void *data, Evas_Object * obj, void *e) case _UI_NETWORK_LOCK_NSCK: case _UI_NETWORK_LOCK_SPCK: case _UI_NETWORK_LOCK_CCK: - _set_str(&ad->entry_str, _entry_get(ad->entry_layout)); + _set_str(&ad->entry_str, _entry_get(ad->layout_entry)); _DBG("entry string: [%s]", ad->entry_str); ret = _check_input_string(ad->ui_type, ad->entry_str); if (ret == 0) { @@ -463,12 +499,27 @@ static void _dial_cb(void *data, Evas_Object * obj, void *e) _DBG("%s,%d", __func__, __LINE__); struct appdata *ad = data; - elm_object_item_disabled_set(item[0], EINA_TRUE); - elm_object_disabled_set(ad->button_dial, EINA_TRUE); - ad->previous_ui_type = ad->ui_type; - ad->ui_type = _UI_DIALER; + /* apply button insensitive */ + elm_object_disabled_set(ad->elm_button_dial, EINA_TRUE); _imf_context_input_panel_hide(ad); - show_dialer(ad); + + ad->previous_ui_type = ad->ui_type; + + if(ad->layout_entry) { + elm_entry_input_panel_enabled_set(_editfield_entry_get(ad->layout_entry), + EINA_FALSE); + } + + if(ad->layout_second_entry) { + elm_entry_input_panel_enabled_set(_editfield_entry_get(ad->layout_second_entry), + EINA_FALSE); + } + + if (show_dialer(ad) == 0) { + elm_object_disabled_set(ad->elm_button_dial, EINA_FALSE); + ad->ui_type = ad->previous_ui_type; + return; + } } static void _pp_rsp_ok_cb(void *data, Evas_Object * e, void *ei) @@ -490,19 +541,7 @@ static void _pp_rsp_ok_cb(void *data, Evas_Object * e, void *ei) ad->cancel_setup = 1; if (ad->current_ug) { ug_destroy(ad->current_ug); - if ((ad->ui_type == _UI_LANG) - || (ad->ui_type == _UI_KEYBOARD)) { - if (ad->first_boot) { - if (ad->date_and_time_settings_loaded) - ad->state = _ST_EXIT; - else - ad->state = _ST_TAPI_INIT; - } else { - ad->state = _ST_EXIT; - } - } else { - ad->state = _ST_EXIT; - } + ad->state = _ST_EXIT; do_state(ad); } @@ -514,12 +553,12 @@ static void _pp_rsp_ok_cb(void *data, Evas_Object * e, void *ei) ad->pin_changed = 0; } } - if (ad->ui_type == _UI_LANG || ad->ui_type == _UI_TIME || ad->ui_type == _UI_KEYBOARD || ad->ui_type == _UI_DIALER) { + if (ad->ui_type == _UI_LANG || ad->ui_type == _UI_TIME || ad->ui_type == _UI_DIALER) { /* for IMF show problems */ return; } - if (ad->entry_layout) { - evas_object_show(_editfield_entry_get(ad->entry_layout)); - elm_object_focus_set(_editfield_entry_get(ad->entry_layout), + if (ad->layout_entry) { + evas_object_show(_editfield_entry_get(ad->layout_entry)); + elm_object_focus_set(_editfield_entry_get(ad->layout_entry), EINA_TRUE); } if (ad->msg) { @@ -553,12 +592,12 @@ static void _pp_rsp_cancel_cb(void *data, Evas_Object * e, void *ei) ad->pin_changed = 0; } } - if (ad->ui_type == _UI_LANG || ad->ui_type == _UI_TIME || ad->ui_type == _UI_KEYBOARD || ad->ui_type == _UI_DIALER) { + if (ad->ui_type == _UI_LANG || ad->ui_type == _UI_TIME || ad->ui_type == _UI_DIALER) { /* for IMF show problems */ return; } - if (ad->entry_layout) { - evas_object_show(_editfield_entry_get(ad->entry_layout)); - elm_object_focus_set(_editfield_entry_get(ad->entry_layout), + if (ad->layout_entry) { + evas_object_show(_editfield_entry_get(ad->layout_entry)); + elm_object_focus_set(_editfield_entry_get(ad->layout_entry), EINA_TRUE); } if (ad->msg) { @@ -578,30 +617,12 @@ static void _destroy_previous_ugs(void *data) switch (ad->ui_type) { case _UI_LANG: - if (ad->keyboard_ug) { - ug_destroy(ad->keyboard_ug); - ad->keyboard_ug = NULL; - } if (ad->date_ug) { ug_destroy(ad->date_ug); ad->date_ug = NULL; } break; case _UI_TIME: - if (ad->keyboard_ug) { - ug_destroy(ad->keyboard_ug); - ad->keyboard_ug = NULL; - } - if (ad->language_ug) { - ug_destroy(ad->language_ug); - ad->language_ug = NULL; - } - break; - case _UI_KEYBOARD: - if (ad->date_ug) { - ug_destroy(ad->date_ug); - ad->date_ug = NULL; - } if (ad->language_ug) { ug_destroy(ad->language_ug); ad->language_ug = NULL; @@ -616,15 +637,16 @@ static void _destroy_previous_ugs(void *data) ug_destroy(ad->language_ug); ad->language_ug = NULL; } - if (ad->keyboard_ug) { - ug_destroy(ad->keyboard_ug); - ad->keyboard_ug = NULL; + if (ad->connection_ug) { + ug_destroy(ad->connection_ug); + ad->connection_ug = NULL; } break; } _DBG("%s,%d", __func__, __LINE__); + /* when last UG or SIM changed with fisrt UG, destroy the view */ if (((ad->sim_changed == 1) && (ad->ui_type == _UI_LANG)) || (ad->ui_type == _UI_TIME)) { _DBG("%s,%d", __func__, __LINE__); @@ -681,13 +703,11 @@ static Evas_Object *_create_editfield(Evas_Object * parent) elm_entry_scrollable_set(entry, EINA_TRUE); elm_entry_single_line_set(entry, EINA_TRUE); elm_entry_password_set(entry, EINA_TRUE); - elm_object_focus_set(entry, EINA_TRUE); elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY); elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data); evas_object_show(entry); - elm_object_focus_set(entry, EINA_TRUE); evas_object_smart_callback_add(entry, "focused", _focused_cb, layout); evas_object_smart_callback_add(entry, "unfocused", _unfocused_cb, layout); @@ -696,6 +716,7 @@ static Evas_Object *_create_editfield(Evas_Object * parent) elm_object_part_text_set(layout, "elm.guidetext", ""); elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, entry); + elm_object_focus_set(entry, EINA_TRUE); return layout; } @@ -755,7 +776,7 @@ static Evas_Object *_gl_icon_get1(void *data, Evas_Object * obj, "changed", _done_button_changed, ad); - ad->entry_layout = layout; + ad->layout_entry = layout; return layout; @@ -795,7 +816,7 @@ static Evas_Object *_gl_icon_get2(void *data, Evas_Object * obj, "changed", _entry_changed_cb, layout); - ad->entry_second_layout = layout; + ad->layout_second_entry = layout; return layout; @@ -832,94 +853,77 @@ static void _list_set_styles() void load_main(struct appdata *ad, int ui_type) { - Evas_Object *ly = NULL; Evas_Object *bt_done = NULL; Evas_Object *bt_dial = NULL; - Evas_Object *null_image = NULL; Evas_Object *genlist = NULL; - Evas_Object *controlbar = NULL; Elm_Object_Item *genlist_item = NULL; Elm_Object_Item *navi_it = NULL; _DBG("%s", __func__); - ly = _create_conformant(ad->win); + ad->layout_contents = pwlock_add_layout_from_edj(ad->elm_navigation_frame, EDJFILE, "page/genlist"); - genlist = elm_genlist_add(ad->navi); + genlist = elm_genlist_add(ad->layout_main); + elm_object_part_content_set(ad->layout_contents, "swl/genlist", genlist); _list_set_styles(); genlist_item = elm_genlist_item_append(genlist, &itc_label1, (void *)ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - elm_genlist_item_select_mode_set(genlist_item, EINA_TRUE); + elm_genlist_item_select_mode_set(genlist_item, ELM_OBJECT_SELECT_MODE_NONE); genlist_item = elm_genlist_item_append(genlist, &itc_entry1, (void *)ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - elm_genlist_item_select_mode_set(genlist_item, EINA_TRUE); + elm_genlist_item_select_mode_set(genlist_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); if (_UI_PUK_PIN == ui_type) { genlist_item = elm_genlist_item_append(genlist, &itc_label2, (void *)ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - elm_genlist_item_select_mode_set(genlist_item, EINA_TRUE); + elm_genlist_item_select_mode_set(genlist_item, ELM_OBJECT_SELECT_MODE_NONE); genlist_item = elm_genlist_item_append(genlist, &itc_entry2, (void *)ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - elm_genlist_item_select_mode_set(genlist_item, EINA_TRUE); + elm_genlist_item_select_mode_set(genlist_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); } - evas_object_show(genlist); - elm_object_content_set(ly, genlist); + ad->elm_conform = _create_conformant(ad->win); + elm_object_content_set(ad->elm_conform, ad->layout_contents); _DBG("load_main ad->ui_type = %d", ad->ui_type); - controlbar = elm_toolbar_add(ad->navi); - if (controlbar == NULL) - return; - - elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND); - - bt_dial = elm_button_add(controlbar); - elm_object_style_set(bt_dial, "naviframe_control/default"); + bt_dial = elm_button_add(ad->layout_main); + elm_object_style_set(bt_dial, "naviframe/title/default"); evas_object_size_hint_weight_set(bt_dial, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(bt_dial, EVAS_HINT_FILL, 0.5); elm_object_text_set(bt_dial, pwlock_get_string(IDS_IDLE_BUTTON_DIALER)); evas_object_smart_callback_add(bt_dial, "clicked", _dial_cb, ad); - ad->button_dial = bt_dial; + ad->elm_button_dial = bt_dial; evas_object_show(bt_dial); - bt_done = elm_button_add(controlbar); - elm_object_style_set(bt_done, "naviframe_control/default"); + bt_done = elm_button_add(ad->layout_main); + elm_object_style_set(bt_done, "naviframe/title/default"); evas_object_size_hint_weight_set(bt_done, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(bt_done, EVAS_HINT_FILL, 0.5); elm_object_text_set(bt_done, pwlock_get_string(IDS_COM_SK_DONE)); evas_object_smart_callback_add(bt_done, "clicked", _done_cb, ad); - ad->button_done = bt_done; + ad->elm_button_done = bt_done; evas_object_show(bt_done); - item[0] = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(item[0], "object", bt_dial); - item[1] = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(item[1], "object", bt_done); - elm_object_item_disabled_set(item[1], EINA_TRUE); elm_object_disabled_set(bt_done, EINA_TRUE); - null_image = elm_icon_add(ad->navi); - elm_icon_file_set(null_image, NULL, NULL); - evas_object_show(null_image); - ad->ly_main = ly; navi_it = - elm_naviframe_item_push(ad->navi, _get_header(ui_type), null_image, - NULL, ad->ly_main, NULL); - elm_object_item_part_content_set(navi_it, "optionheader", controlbar); - elm_object_item_signal_emit(navi_it, - "elm,state,controlbar,instant_close", ""); + elm_naviframe_item_push(ad->elm_navigation_frame, _get_header(ui_type), NULL, + NULL, ad->elm_conform, NULL); + + elm_object_item_part_content_set(navi_it, "title_left_btn", bt_dial); + elm_object_item_part_content_set(navi_it, "title_right_btn",bt_done); ad->ui_type = ui_type; remove_waiting_popup(ad); @@ -929,10 +933,12 @@ void show_pin(struct appdata *ad) { _DBG("%s", __func__); - if (!ad->navi) +// register_tapi_factory_event(ad); + + if (!ad->elm_navigation_frame) init_ui(ad); - if (!ad->ly_main) + if (!ad->layout_contents) load_main(ad, _UI_PIN); evas_object_show(ad->win); @@ -942,7 +948,7 @@ void show_puk(struct appdata *ad) { _DBG("%s", __func__); - if (!ad->navi) + if (!ad->elm_navigation_frame) init_ui(ad); load_main(ad, _UI_PUK); @@ -954,7 +960,7 @@ void show_puk_pin(struct appdata *ad) { _DBG("%s", __func__); - if (!ad->navi) + if (!ad->elm_navigation_frame) init_ui(ad); load_main(ad, _UI_PUK_PIN); @@ -967,7 +973,7 @@ void show_sim_lock(struct appdata *ad) _DBG("%s", __func__); int st = ad->sim_status; - if (!ad->navi) { + if (!ad->elm_navigation_frame) { init_ui(ad); } switch (st) { @@ -999,36 +1005,41 @@ void show_block(struct appdata *ad) Evas_Object *ly = NULL; Evas_Object *bt_dial = NULL; Evas_Object *el = NULL; - Evas_Object *bg = NULL; + Elm_Object_Item *navi_it = NULL; char buf[1024] = { 0, }; _DBG("%s", __func__); - if (!ad->navi) + if (!ad->elm_navigation_frame) init_ui(ad); - ly = _layout_add(ad->navi); - bg = ad->bg; - elm_object_style_set(bg, "group_list"); - el = elm_label_add(ad->navi); + ly = elm_layout_add(ad->elm_navigation_frame); + elm_layout_theme_set(ly, "layout", "application", "noindicator"); + /*Create content field */ + el = elm_label_add(ad->elm_navigation_frame); + elm_label_line_wrap_set(el, ELM_WRAP_WORD); snprintf(buf, sizeof(buf), "%s%s%s", - "", - pwlock_get_string + "
", + pwlock_get_string (IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER), ""); elm_object_text_set(el, buf); + elm_object_part_content_set(ly, "elm.swallow.content", el); evas_object_show(el); - bt_dial = elm_button_add(ad->navi); + bt_dial = elm_button_add(ad->elm_navigation_frame); + elm_object_style_set(bt_dial, "naviframe/title/default"); elm_object_text_set(bt_dial, pwlock_get_string(IDS_IDLE_BUTTON_DIALER)); evas_object_smart_callback_add(bt_dial, "clicked", _dial_cb, ad); evas_object_show(bt_dial); - ad->ly_main = ly; - elm_naviframe_item_push(ad->navi, _get_header(_UI_BLOCK), - bt_dial, NULL, ad->ly_main, NULL); + ad->layout_contents = ly; + navi_it = elm_naviframe_item_push(ad->elm_navigation_frame, _get_header(_UI_BLOCK), + NULL, NULL, ad->layout_contents, NULL); + + elm_object_item_part_content_set(navi_it, "title_right_btn", bt_dial); ad->ui_type = _UI_BLOCK; evas_object_show(ad->win); remove_waiting_popup(ad); @@ -1038,49 +1049,56 @@ void pwlock_destroy(struct appdata *ad) { _DBG("%s", __func__); - if (!ad->navi) + remove_waiting_popup(ad); + if (!ad->elm_navigation_frame) return; _DBG("%s %d", __func__, __LINE__); - elm_naviframe_item_pop(ad->navi); - if (ad->navi) { - evas_object_del(ad->navi); - ad->navi = NULL; + elm_naviframe_item_pop(ad->elm_navigation_frame); + if (ad->elm_navigation_frame) { + evas_object_del(ad->elm_navigation_frame); + ad->elm_navigation_frame = NULL; } - if (ad->ly_main) { - evas_object_del(ad->ly_main); - ad->ly_main = NULL; + if (ad->layout_contents) { + evas_object_del(ad->layout_contents); + ad->layout_contents = NULL; } - if (ad->entry_layout) { - evas_object_del(ad->entry_layout); - ad->entry_layout = NULL; + if (ad->layout_entry) { + evas_object_del(ad->layout_entry); + ad->layout_entry = NULL; } - if (ad->entry_second_layout) { - evas_object_del(ad->entry_second_layout); - ad->entry_second_layout = NULL; + if (ad->layout_second_entry) { + evas_object_del(ad->layout_second_entry); + ad->layout_second_entry = NULL; } - if (ad->bg) { - evas_object_del(ad->bg); - ad->bg = NULL; + if (ad->elm_conform) { + evas_object_del(ad->elm_conform); + ad->elm_conform = NULL; } - remove_waiting_popup(ad); + if (ad->elm_bg) { + evas_object_del(ad->elm_bg); + ad->elm_bg = NULL; + } + /* FIXME we should check window hide for fast boot */ + /* evas_object_hide(ad->win); */ + _DBG("%s %d %p", __func__, __LINE__, ad->elm_navigation_frame); } void clear_entry(struct appdata *ad) { - if (ad->entry_layout) { - elm_object_part_text_set(ad->entry_layout, "elm.guidetext", ""); - elm_entry_entry_set(_editfield_entry_get(ad->entry_layout), ""); + if (ad->layout_entry) { + elm_object_part_text_set(ad->layout_entry, "elm.guidetext", ""); + elm_entry_entry_set(_editfield_entry_get(ad->layout_entry), ""); } - if (ad->entry_second_layout) { - elm_object_part_text_set(ad->entry_second_layout, + if (ad->layout_second_entry) { + elm_object_part_text_set(ad->layout_second_entry, "elm.guidetext", ""); elm_entry_entry_set(_editfield_entry_get - (ad->entry_second_layout), ""); + (ad->layout_second_entry), ""); } } -static void _ug_layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv) +static void _ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) { struct appdata *ad = (struct appdata *)priv; Evas_Object *base; @@ -1120,12 +1138,12 @@ static void _ug_layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv) } -static void _ug_result_cb(struct ui_gadget *ug, bundle * result, void *priv) +static void _ug_result_cb(ui_gadget_h ug, service_h service, void *priv) { _DBG("function=%s", __func__); struct appdata *ad = NULL; - if (!ug || !priv || !result) { + if (!ug || !priv || !service) { return; } char *retv = NULL; @@ -1135,13 +1153,13 @@ static void _ug_result_cb(struct ui_gadget *ug, bundle * result, void *priv) switch (ad->state) { case _ST_LANG: { - retv = (char *)bundle_get_val(result, "updateType"); + service_get_extra_data(service, "updateType", &retv); if (retv) _DBG("_ST_LANG updateType = %s", retv); - retv = (char *)bundle_get_val(result, "ON_OFF_TEXT"); + service_get_extra_data(service, "ON_OFF_TEXT", &retv); if (retv) _DBG("_ST_LANG ON_OFF_TEXT = %s", retv); - retv = (char *)bundle_get_val(result, "result"); + service_get_extra_data(service, "result", &retv); if (retv) _DBG("_ST_LANG language result = %s", retv); char *path = (char *)vconf_get_str(VCONFKEY_LANGSET); @@ -1158,28 +1176,16 @@ static void _ug_result_cb(struct ui_gadget *ug, bundle * result, void *priv) } } break; - case _ST_KEYBOARD: - { - retv = (char *)bundle_get_val(result, "name"); - if (retv) - _DBG("_ST_KEYBOARD name = %s", retv); - retv = (char *)bundle_get_val(result, "description"); - if (retv && !strcmp(retv, "previous clicked")) { - _DBG("_ST_KEYBOARD description = %s", retv); - ad->kill_ug = 1; - } else { - ad->kill_ug = 0; - } - } - break; case _ST_TIME: { - retv = (char *)bundle_get_val(result, "result"); + service_get_extra_data(service, "result", &retv); if (retv) _DBG("_ST_TIME name = %s", retv); if (retv && !strcmp(retv, "lbutton_click")) { + ad->ug_btn_evt_state = UG_BUTTON_STATE_PREV_CLICKED; ad->kill_ug = 1; } else if (retv && !strcmp(retv, "rbutton_click")) { + ad->ug_btn_evt_state = UG_BUTTON_STATE_NEXT_CLICKED; ad->kill_ug = 0; } } @@ -1188,13 +1194,13 @@ static void _ug_result_cb(struct ui_gadget *ug, bundle * result, void *priv) break; } - if (!retv) { + if (!retv) { /* avoid to click ug quickly */ _DBG("retv = %s", retv); _ug_destroy = 1; } } -static void _ug_destroy_cb(struct ui_gadget *ug, void *priv) +static void _ug_destroy_cb(ui_gadget_h ug, void *priv) { _DBG("%s, %d begin", __func__, __LINE__); struct appdata *ad = NULL; @@ -1212,78 +1218,27 @@ static void _ug_destroy_cb(struct ui_gadget *ug, void *priv) switch (ad->state) { case _ST_LANG: { - if (ad->first_boot) { - _DBG("FIRST BOOT!"); - if (ad->keyboard_settings_loaded) { - ad->state = _ST_KEYBOARD; - do_state(ad); - } else { - ad->state = _ST_KEYBOARD; - do_state(ad); - show_waiting_popup(ad, NULL); - return; - } - } else { - _DBG("NOT FIRST BOOT, SIM CHANGED?"); - if (ad->running_status == 0 - && ad->sim_changed == 1) { - ad->state = _ST_KEYBOARD; - do_state(ad); - show_waiting_popup(ad, NULL); - return; - } else { - ad->state = _ST_EXIT; - do_state(ad); - } - } + ad->state = _ST_GREETING; + do_state(ad); + show_waiting_popup(ad, NULL); } break; case _ST_TIME: { - if (ad->kill_ug) { - ad->state = _ST_KEYBOARD; + if (ad->kill_ug) { /* Previous button clicked */ ad->date_and_time_previous = 1; show_waiting_popup(ad, NULL); - do_state(ad); - ad->kill_ug = 0; - return; - } else { - if (ad->sim_status == SIM_EMPTY) { - ad->state = _ST_EXIT; + if (ad->is_no_sim == 1) { + do_state_directly(_ST_NOSIM, ad); } else { - ad->state = _ST_EXIT; + do_state_directly(_ST_GREETING, ad); } - } - do_state(ad); - } - break; - case _ST_KEYBOARD: - { - if (ad->kill_ug) { - ad->state = _ST_LANG; - do_state(ad); ad->kill_ug = 0; + return; } else { - if (ad->first_boot) { - if (ad->date_and_time_settings_loaded) { - ad->state = _ST_TIME; - do_state(ad); - ad->kill_ug = 0; - } else { - ad->state = _ST_TAPI_INIT; - do_state(ad); - show_waiting_popup(ad, - pwlock_get_string - (IDS_IDLE_BODY_CHECKING_SIM_STATUS)); - ad->kill_ug = 0; - return; - } - } else { - ad->state = _ST_TIME; - do_state(ad); - ad->kill_ug = 0; - } + ad->state = _ST_CONNECTION; } + do_state(ad); } break; default: @@ -1299,17 +1254,31 @@ static void _ug_destroy_cb(struct ui_gadget *ug, void *priv) ug_destroy(ug); ug = NULL; - elm_object_item_disabled_set(item[0], EINA_FALSE); - elm_object_disabled_set(ad->button_dial, EINA_FALSE); + if(ad->layout_entry) { + elm_entry_input_panel_enabled_set( + _editfield_entry_get(ad->layout_entry), + EINA_TRUE); + elm_entry_input_panel_show( + _editfield_entry_get(ad->layout_entry)); + } + + if(ad->layout_second_entry) { + elm_entry_input_panel_enabled_set( + _editfield_entry_get(ad->layout_second_entry), + EINA_TRUE); + } + + elm_object_disabled_set(ad->elm_button_dial, EINA_FALSE); + if (_UI_PIN == ad->ui_type || _UI_PUK == ad->ui_type || _UI_PUK_PIN == ad->ui_type || _UI_SIM_LOCK == ad->ui_type) { - if (ad->entry_layout) { + if (ad->layout_entry) { evas_object_show(_editfield_entry_get - (ad->entry_layout)); + (ad->layout_entry)); elm_object_focus_set (_editfield_entry_get - (ad->entry_layout), EINA_TRUE); + (ad->layout_entry), EINA_TRUE); } } } else { @@ -1319,37 +1288,351 @@ static void _ug_destroy_cb(struct ui_gadget *ug, void *priv) } } +static void _menu_greeting_button_lang_cb(void *data, Evas_Object * obj, void *e) { + _DBG("%s,%d", __func__, __LINE__); + struct appdata *ad = data; + + if (!ad) + return; + + ad->state = _ST_LANG; + show_lang(ad); + /* TODO: */ +} + +static Evas_Object *_gl_nosim_icon_get(void *data, Evas_Object * obj, const char *part) +{ + Evas_Object *ei = NULL; + + _DBG("_gl_nosim_icon_get"); + + ei = elm_image_add(obj); + elm_image_file_set(ei, IMAGEDIR"/A01-9_icon_no_sim.png", NULL); + elm_image_resizable_set(ei, EINA_FALSE, EINA_FALSE); + + evas_object_show(ei); + + return ei; +} + +static Evas_Object *_gl_nosim_text_label_get(void *data, Evas_Object * obj, const char *part) +{ + Evas_Object *el = NULL; + Eina_Strbuf *nosim_text; + + nosim_text = eina_strbuf_new(); + + _DBG("_gl_nosim_text_label_get"); + el = elm_label_add(obj); + elm_label_line_wrap_set(el, ELM_WRAP_WORD); + evas_object_size_hint_weight_set(el, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(el, EVAS_HINT_FILL, EVAS_HINT_FILL); + + if (nosim_text != NULL && eina_strbuf_append_printf(nosim_text, + "
%s
", + pwlock_get_string(IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG)) == EINA_TRUE) { + elm_object_text_set(el, eina_strbuf_string_get(nosim_text)); + } + + evas_object_show(el); + + if (nosim_text != NULL) { + eina_strbuf_free(nosim_text); + } + return el; +} + +static Evas_Object *_gl_sim_retry_btn_content_get(void *date, Evas_Object * obj, const char *part) +{ + Evas_Object *eo_btn = NULL; + + _DBG("_gl_sim_retry_btn_content_get"); + + eo_btn = elm_button_add(obj); + elm_object_text_set(eo_btn, pwlock_get_string(IDS_ST_BUTTON_TRY_AGAIN_ABB)); + + // temporary min/max set + //evas_object_size_hint_min_set(eo_btn, 486, 72); + //evas_object_size_hint_max_set(eo_btn, 486, 72); + + return eo_btn; +} + +static void _nosim_retry_cb(void *data, Evas_Object * obj, void *event_info) { + _DBG("%s,%d", __func__, __LINE__); + struct appdata *ad = data; + + if (!ad) + return; + + do_state_directly(_ST_SIM, ad); +} + +static Evas_Object *_nosim_create_genlist(struct appdata *ad) +{ + _DBG("%s", __func__); + Evas_Object *genlist = NULL; + + if (ad == NULL) { + _DBG("_nosim_create_genlist returns NULL\n"); + return NULL; + } + nosim_icon_itc.item_style = "1icon/with_no_line"; + nosim_icon_itc.func.text_get = NULL; + nosim_icon_itc.func.content_get = _gl_nosim_icon_get; + nosim_icon_itc.func.state_get = NULL; + nosim_icon_itc.func.del = NULL; + + nosim_text_itc.item_style = "1icon/with_no_line"; + nosim_text_itc.func.text_get = NULL; + nosim_text_itc.func.content_get = _gl_nosim_text_label_get; + nosim_text_itc.func.state_get = NULL; + nosim_text_itc.func.del = NULL; + + sim_retry_btn_itc.item_style = "1icon/with_no_line"; + sim_retry_btn_itc.func.text_get = NULL; + sim_retry_btn_itc.func.content_get = _gl_sim_retry_btn_content_get; + sim_retry_btn_itc.func.state_get = NULL; + sim_retry_btn_itc.func.del = NULL; + + sep_itc.item_style = "dialogue/separator/20"; + sep_itc.func.text_get = NULL; + sep_itc.func.content_get = NULL; + sep_itc.func.state_get = NULL; + sep_itc.func.del = NULL; + + genlist = elm_genlist_add(ad->elm_navigation_frame); + + //elm_genlist_item_append(genlist, &sep_itc, NULL, NULL, + // ELM_GENLIST_ITEM_NONE, NULL, NULL); + + /* nosim icon */ + elm_genlist_item_append(genlist, &nosim_icon_itc, (void *)ad, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + + /* nosim text */ + elm_genlist_item_append(genlist, &nosim_text_itc, (void *)ad, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + + /* sim retry button */ + elm_genlist_item_append(genlist, &sim_retry_btn_itc, (void *)ad, NULL, + ELM_GENLIST_ITEM_NONE, _nosim_retry_cb, (void *)ad); + + _DBG("END of _nosim_create_genlist\n"); + evas_object_show(genlist); + return genlist; +} + +int show_splash_screen(struct appdata *ad) { + _DBG("%s,%d", __func__, __LINE__); + + if (!ad) + return 0; + + pwlock_destroy(ad); + + init_ui(ad); + + show_waiting_popup(ad, + pwlock_get_string + (IDS_IDLE_POP_CHECKING_SIM_CARD_ING)); + + evas_object_show(ad->win); + + return 1; +} + +int show_greeting(struct appdata *ad) { + _DBG("%s,%d", __func__, __LINE__); + + char *model_name = NULL; + + Evas_Object *navi = NULL; + Evas_Object *controlbar = NULL; + Elm_Object_Item *navi_it = NULL; + Evas_Object *contents = NULL; + Evas_Object *button = NULL; + + if (!ad) + return 0; + + ad->ui_type = _UI_GREETING; + + pwlock_destroy(ad); + + init_ui(ad); + navi = ad->elm_navigation_frame; + + controlbar = elm_toolbar_add(navi); + if (controlbar == NULL) + return 0; + + contents = pwlock_add_layout_from_edj(navi, EDJFILE, "pwlock-menu-lang"); + + model_name = vconf_get_str(PWLOCK_DEVICE_NAME); + _DBG("Device Name = %s\n",model_name); + + if (model_name != NULL) { + elm_object_part_text_set(contents, "text.greeting.1", pwlock_get_string(IDS_IDLE_BODY_GREETING_WELCOME)); + elm_object_part_text_set(contents, "text.greeting.2", model_name); + + free(model_name); + model_name = NULL; + } + else { + elm_object_part_text_set(contents, "text.greeting.1", pwlock_get_string(IDS_SCM_BODY_WELCOME_E)); + } + + elm_object_part_text_set(contents, "text.help", + pwlock_get_string(IDS_STU_BODY_SELECT_LANGUAGE)); + + button = elm_button_add(navi); + elm_object_style_set(button, "popup_button/default"); + elm_object_part_content_set(contents, "button.select.lang", button); + + elm_object_text_set(button, get_lang_name_by_path(vconf_get_str(VCONFKEY_LANGSET))); + evas_object_smart_callback_add(button, "clicked", _menu_greeting_button_lang_cb, ad); + + elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND); + + elm_toolbar_item_append(controlbar, NULL, + pwlock_get_string(IDS_ST_SK_EMERGENCY_CALL), _dial_cb, + ad); + elm_toolbar_item_append(controlbar, NULL, + pwlock_get_string(IDS_COM_SK_START), + pwlock_greeting_next_cb, ad); + + navi_it = elm_naviframe_item_push(navi, NULL, NULL, NULL, contents, NULL); + elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE); + + elm_object_item_part_content_set(navi_it, "controlbar", controlbar); + + evas_object_show(ad->win); + _destroy_previous_ugs(ad); + + return 1; +} + +int show_connection(struct appdata *ad) { + _DBG("%s", __func__); + ad->ui_type = _UI_CONNECTION; + service_h service; + UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); + struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + + service_create(&service); + + if (cbs == NULL) { + service_destroy(service); /* prevent */ + return 0; + } + cbs->layout_cb = pwlock_ug_connection_layout_cb; + cbs->result_cb = pwlock_ug_connection_result_cb; + cbs->destroy_cb = pwlock_ug_connection_destroy_cb; + cbs->priv = (void *)ad; + if (!service) { + service_destroy(service); + free(cbs); /* memory leak */ + return 0; + } + service_add_extra_data(service, "caller", "pwlock"); + service_add_extra_data(service, "lbutton", pwlock_get_string(IDS_COM_BODY_PREVIOUS)); + service_add_extra_data(service, "rbutton_next", pwlock_get_string(IDS_COM_SK_NEXT)); + service_add_extra_data(service, "rbutton_skip", pwlock_get_string(IDS_IDLE_SK_SKIP)); + service_add_extra_data(service, "lbutton_icon", IMAGEDIR"/A01-9_controlbar_icon_Previous.png"); + service_add_extra_data(service, "rbutton_next_icon", IMAGEDIR"/A01-9_controlbar_icon_Next.png"); + service_add_extra_data(service, "rbutton_skip_icon", IMAGEDIR"/A01-9_controlbar_icon_Skip.png"); + service_add_extra_data(service, "scan_icon", IMAGEDIR"/A01-9_controlbar_icon_scan.png"); + + ad->connection_ug = + ug_create(NULL, "wifi-efl-UG", UG_MODE_FULLVIEW, service, cbs); + service_destroy(service); + free(cbs); + if (!ad->connection_ug) { + _DBG("Get connection ug failed."); + if (ad->ug_btn_evt_state == UG_BUTTON_STATE_PREV_CLICKED) + ad->state = _ST_TIME; + else + ad->state = _ST_FINISH; + return 0; + } + ad->current_ug = ad->connection_ug; + evas_object_show(ad->win); + return 1; +} + +int show_tutorial(struct appdata *ad) { + _DBG("%s,%d", __func__, __LINE__); + Evas_Object *navi = NULL; + Evas_Object *controlbar = NULL; + Elm_Object_Item *navi_it = NULL; + + if (!ad) + return 0; + ad->ui_type = _UI_TUTORIAL; + + pwlock_destroy(ad); + + init_ui(ad); + navi = ad->elm_navigation_frame; + + controlbar = elm_toolbar_add(ad->elm_navigation_frame); + if (controlbar == NULL) + return 0; + + elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND); + + elm_toolbar_item_append(controlbar, NULL, + pwlock_get_string(IDS_COM_BODY_PREVIOUS), + pwlock_tutorial_prev_cb, ad); + elm_toolbar_item_append(controlbar, NULL, + pwlock_get_string(IDS_COM_SK_CANCEL), pwlock_tutorial_next_cb, + ad); + + navi_it = + elm_naviframe_item_push(navi, (const char *)_("TUTORIAL"), + NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(navi_it, "controlbar", controlbar); + + evas_object_show(ad->win); + _destroy_previous_ugs(ad); + + return 1; +} + int show_lang(struct appdata *ad) { _DBG("%s", __func__); ad->ui_type = _UI_LANG; - bundle *b = bundle_create(); + service_h service; UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + service_create(&service); + if (cbs == NULL) { - bundle_free(b); + service_destroy(service); /* prevent */ return 0; } cbs->layout_cb = _ug_layout_cb; cbs->result_cb = _ug_result_cb; cbs->destroy_cb = _ug_destroy_cb; cbs->priv = (void *)ad; - if (!b) { - free(cbs); + if (!service) { + service_destroy(service); + free(cbs); /* memory leak */ return 0; } - bundle_add(b, "caller", "pwlock"); - bundle_add(b, "viewtype", "language"); - bundle_add(b, "rbutton", pwlock_get_string(IDS_COM_SK_NEXT)); + service_add_extra_data(service, "caller", "pwlock"); + service_add_extra_data(service, "viewtype", "language"); ad->language_ug = - ug_create(NULL, "setting-phone-efl", UG_MODE_FULLVIEW, b, cbs); - bundle_free(b); + ug_create(NULL, "setting-phone-efl", UG_MODE_FULLVIEW, service, cbs); + service_destroy(service); free(cbs); if (!ad->language_ug) { _DBG("Get phone ug failed."); - ad->state = _ST_KEYBOARD; + ad->state = _ST_GREETING; return 0; } ad->current_ug = ad->language_ug; @@ -1357,6 +1640,53 @@ int show_lang(struct appdata *ad) return 1; } +int show_nosim(struct appdata *ad) +{ + _DBG("%s,%d", __func__, __LINE__); + Evas_Object *genlist = NULL; + Evas_Object *navi = NULL; + Evas_Object *controlbar = NULL; + Elm_Object_Item *navi_it = NULL; + + if (!ad) + return 0; + ad->ui_type = _UI_NOSIM; + + pwlock_destroy(ad); + + init_ui(ad); + navi = ad->elm_navigation_frame; + + genlist = _nosim_create_genlist(ad); + + controlbar = elm_toolbar_add(ad->elm_navigation_frame); + if (controlbar == NULL) + return 0; + + elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND); + + + elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL); + elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL); + elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL); + elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL); + + elm_toolbar_item_append(controlbar, IMAGEDIR"/A01-9_controlbar_icon_Skip.png", + pwlock_get_string(IDS_IDLE_SK_SKIP), + pwlock_nosim_skip_cb, + ad); + + navi_it = + elm_naviframe_item_push(navi, (const char *)_(pwlock_get_string(IDS_IDLE_HEADER_NOSIM)), + NULL, NULL, genlist, NULL); + elm_object_item_part_content_set(navi_it, "controlbar", controlbar); + + evas_object_show(ad->win); + _destroy_previous_ugs(ad); + + return 1; +} + int show_time(struct appdata *ad) { _DBG("%s,%d", __func__, __LINE__); @@ -1364,31 +1694,39 @@ int show_time(struct appdata *ad) return 0; ad->ui_type = _UI_TIME; ad->date_and_time_settings_loaded = 1; - bundle *b = bundle_create(); + service_h service; UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + + service_create(&service); + if (cbs == NULL) { - bundle_free(b); + service_destroy(service); /* prevent */ return 0; } cbs->layout_cb = _ug_layout_cb; cbs->result_cb = _ug_result_cb; cbs->destroy_cb = _ug_destroy_cb; cbs->priv = (void *)ad; - if (!b) { - free(cbs); + if (!service) { + service_destroy(service); + free(cbs); /* memory leak */ return 0; } - bundle_add(b, "caller", "pwlock"); - bundle_add(b, "lbutton", pwlock_get_string(IDS_COM_BODY_PREVIOUS)); - bundle_add(b, "rbutton", pwlock_get_string(IDS_COM_SK_DONE)); + service_add_extra_data(service, "caller", "pwlock"); + service_add_extra_data(service, "lbutton", pwlock_get_string(IDS_COM_BODY_PREVIOUS)); + service_add_extra_data(service, "rbutton", pwlock_get_string(IDS_COM_SK_NEXT)); + ad->date_ug = - ug_create(NULL, "setting-time-efl", UG_MODE_FULLVIEW, b, cbs); - bundle_free(b); + ug_create(NULL, "setting-time-efl", UG_MODE_FULLVIEW, service, cbs); + service_destroy(service); free(cbs); if (!ad->date_ug) { - _DBG("Get time ug failed."); - ad->state = _ST_EXIT; + _DBG("?????Get time ug failed."); + if (ad->ug_btn_evt_state == UG_BUTTON_STATE_PREV_CLICKED) + ad->state = _ST_GREETING; + else + ad->state = _ST_CONNECTION; return 0; } ad->current_ug = ad->date_ug; @@ -1396,46 +1734,63 @@ int show_time(struct appdata *ad) return 1; } -int show_keyboard_setting(struct appdata *ad) -{ +int show_finish(struct appdata *ad) { _DBG("%s,%d", __func__, __LINE__); + + Evas_Object *navi = NULL; + Evas_Object *controlbar = NULL; + Elm_Object_Item *navi_it = NULL; + Evas_Object *contents = NULL; + Evas_Object *label = NULL; + Eina_Strbuf *finish_text; + if (!ad) return 0; - ad->ui_type = _UI_KEYBOARD; - ad->keyboard_settings_loaded = 1; - bundle *b = bundle_create(); - UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); - struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); - if (cbs == NULL) { - bundle_free(b); + + ad->ui_type = _UI_FINISH; + + pwlock_destroy(ad); + + init_ui(ad); + navi = ad->elm_navigation_frame; + + controlbar = elm_toolbar_add(navi); + if (controlbar == NULL) return 0; + + contents = pwlock_add_layout_from_edj(navi, EDJFILE, "pwlock-finish"); + + finish_text = eina_strbuf_new(); + + label = elm_label_add(contents); + elm_label_line_wrap_set(label, ELM_WRAP_WORD); + 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); + + if (finish_text != NULL && eina_strbuf_append_printf(finish_text, + "
%s
", + pwlock_get_string(IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE)) == EINA_TRUE) { + elm_object_text_set(label, eina_strbuf_string_get(finish_text)); } - cbs->layout_cb = _ug_layout_cb; - cbs->result_cb = _ug_result_cb; - cbs->destroy_cb = _ug_destroy_cb; - cbs->priv = (void *)ad; - if (!b) { - free(cbs); - return 0; + + if (finish_text != NULL) { + eina_strbuf_free(finish_text); } - bundle_add(b, "navi_btn_left", - pwlock_get_string(IDS_COM_BODY_PREVIOUS)); - bundle_add(b, "navi_btn_right", pwlock_get_string(IDS_COM_SK_NEXT)); + elm_object_part_content_set(contents, "swl/label", label); - ad->keyboard_ug = - ug_create(NULL, "keyboard-setting-wizard-efl", UG_MODE_FULLVIEW, b, - cbs); + elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND); + + elm_toolbar_item_append(controlbar, NULL, pwlock_get_string(IDS_COM_BODY_PREVIOUS), pwlock_finish_prev_cb, ad); + elm_toolbar_item_append(controlbar, NULL, pwlock_get_string(IDS_ST_BODY_INSTALTAB_FINISH), pwlock_finish_cb, ad); + + navi_it = elm_naviframe_item_push(navi, _get_header(ad->ui_type), NULL, NULL, contents, NULL); + + elm_object_item_part_content_set(navi_it, "controlbar", controlbar); - bundle_free(b); - free(cbs); - if (!ad->keyboard_ug) { - _DBG("Get keyboard setting ug failed\n"); - ad->state = _ST_TIME; - return 0; - } - ad->current_ug = ad->keyboard_ug; evas_object_show(ad->win); + _destroy_previous_ugs(ad); + return 1; } @@ -1446,12 +1801,12 @@ int show_dialer(struct appdata *ad) return 0; ad->ui_type = _UI_DIALER; - bundle *b; - b = bundle_create(); + service_h service; + service_create(&service); UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); if (cbs == NULL) { - bundle_free(b); + service_destroy(service); /* prevent */ return 0; } cbs->layout_cb = _ug_layout_cb; @@ -1459,14 +1814,15 @@ int show_dialer(struct appdata *ad) cbs->destroy_cb = _ug_destroy_cb; cbs->priv = (void *)ad; - if (!b) { - free(cbs); + if (!service) { + service_destroy(service); + free(cbs); /* memory leak */ return 0; } - bundle_add(b, "emergency_dialer", "emergency"); - ad->dialer_ug = ug_create(NULL, "dialer-efl", UG_MODE_FULLVIEW, b, cbs); - bundle_free(b); + service_add_extra_data(service, "emergency_dialer", "emergency"); + ad->dialer_ug = ug_create(NULL, "dialer-efl", UG_MODE_FULLVIEW, service, cbs); + service_destroy(service); free(cbs); if (!ad->dialer_ug) { _DBG("dialer ug failed\n"); @@ -1493,7 +1849,7 @@ void show_popup(struct appdata *ad, const char *mesg, Eina_Bool mode) } ecore_imf_context_input_panel_hide(elm_entry_imf_context_get (_editfield_entry_get - (ad->entry_layout))); + (ad->layout_entry))); pp = elm_popup_add(ad->win); ad->popup = pp; evas_object_size_hint_weight_set(pp, EVAS_HINT_EXPAND, @@ -1518,32 +1874,81 @@ void show_popup(struct appdata *ad, const char *mesg, Eina_Bool mode) evas_object_show(pp); } +void show_popup_ask_exit(struct appdata *ad, const char *mesg) +{ + if (!ad) { + return; + } + Evas_Object *pp; + Evas_Object *button1; + Evas_Object *button2; + ad->previous_ui_type = ad->ui_type; + + if (ad->popup) { + evas_object_del(ad->popup); + ad->popup = NULL; + } + ecore_imf_context_input_panel_hide(elm_entry_imf_context_get + (_editfield_entry_get + (ad->layout_entry))); + pp = elm_popup_add(ad->win); + ad->popup = pp; + evas_object_size_hint_weight_set(pp, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_object_text_set(pp, mesg); + + button1 = elm_button_add(pp); + elm_object_text_set(button1, pwlock_get_string(IDS_COM_SK_OK)); + elm_object_part_content_set(pp, "button1", button1); + evas_object_smart_callback_add(button1, "clicked", pwlock_popup_exit_ok_cb, + ad); + + button2 = elm_button_add(pp); + elm_object_text_set(button2, pwlock_get_string(IDS_COM_SK_CANCEL)); + elm_object_part_content_set(pp, "button2", button2); + evas_object_smart_callback_add(button2, "clicked", pwlock_popup_exit_cancel_cb, + ad); + + remove_waiting_popup(ad); + evas_object_show(pp); +} + void show_waiting_popup(struct appdata *ad, const char *msg_str) { if (!ad) { return; } + Evas_Object *popup = NULL; Evas_Object *progressbar = NULL; Evas_Object *box = NULL; Evas_Object *label = NULL; + Eina_Strbuf *popup_str; + remove_waiting_popup(ad); popup = elm_popup_add(ad->win); ad->waiting_popup = popup; box = elm_box_add(popup); if (msg_str != NULL) { + popup_str = eina_strbuf_new(); label = elm_label_add(popup); - elm_object_style_set(label, "popup_description/default"); elm_label_line_wrap_set(label, EINA_TRUE); - elm_object_text_set(label, msg_str); + if (popup_str != NULL && eina_strbuf_append_printf(popup_str, + "%s", msg_str) == EINA_TRUE) { + elm_object_text_set(label, eina_strbuf_string_get(popup_str)); + } evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(label); elm_box_pack_end(box, label); + + if (popup_str != NULL) { + eina_strbuf_free(popup_str); + } } progressbar = elm_progressbar_add(popup); @@ -1564,10 +1969,12 @@ void show_waiting_popup(struct appdata *ad, const char *msg_str) void remove_waiting_popup(struct appdata *ad) { + _DBG("%s", __func__); if (!ad) { return; } if (ad->waiting_popup) { + _DBG("delete waiting popup"); evas_object_del(ad->waiting_popup); ad->waiting_popup = NULL; } @@ -1583,3 +1990,14 @@ Eina_Bool show_puk_do(void *data) return ECORE_CALLBACK_CANCEL; } + +void update_pw_entry(struct appdata *ad, char *input_data) +{ + _DBG("%s", __func__); + + if (input_data == NULL) + return; + elm_entry_entry_set(_editfield_entry_get(ad->layout_entry), input_data); + elm_entry_cursor_end_set(_editfield_entry_get(ad->layout_entry)); + _done_cb(ad, NULL, NULL); +} -- cgit v1.2.3