From 96e53fbfcd6745c4f2ea974b6db4abcab14ca447 Mon Sep 17 00:00:00 2001 From: Soonmin Jung Date: Wed, 20 Mar 2013 11:02:54 +0900 Subject: [PATCH] Apply sip back key concept in composer Change-Id: Ia10469185e28f527bc7c359798cee78135083e36 --- composer/include/msg-ui-composer-common.h | 1 + composer/include/msg-ui-composer-data.h | 1 + composer/src/gadget/msg-ui-composer-gadget.c | 2 ++ .../src/ui-composer/msg-ui-composer-body-callback.c | 1 + composer/src/ui-composer/msg-ui-composer-common.c | 18 ++++++++++++++++++ composer/src/ui-composer/msg-ui-composer-main.c | 8 ++++++++ .../ui-composer/msg-ui-composer-recipient-callback.c | 3 +++ composer/src/ui-composer/msg-ui-composer-recipient.c | 19 +++++++++++++++++-- 8 files changed, 51 insertions(+), 2 deletions(-) diff --git a/composer/include/msg-ui-composer-common.h b/composer/include/msg-ui-composer-common.h index d48e3ae..b065526 100755 --- a/composer/include/msg-ui-composer-common.h +++ b/composer/include/msg-ui-composer-common.h @@ -79,5 +79,6 @@ void msg_ui_composer_make_default_body_size(MSG_COMPOSER_VIEW_DATA_S *cd); int msg_ui_composer_get_font_size(int type); void msg_ui_composer_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, bool update_subject); +void msg_ui_composer_naviframe_size_hints_changed(void *data, Evas *e, Evas_Object *obj, void *event_info); #endif/*__MSG_COMPOSER_COMMON_H__*/ diff --git a/composer/include/msg-ui-composer-data.h b/composer/include/msg-ui-composer-data.h index d58bd1f..3d31054 100755 --- a/composer/include/msg-ui-composer-data.h +++ b/composer/include/msg-ui-composer-data.h @@ -458,6 +458,7 @@ typedef struct _MSG_COMPOSER_DATA_S { bool isSubject; bool send_button_is_show; bool isclosed; /* composer is closed */ + bool hide_keypad_op; /* keypad hide operation by back button */ bool loading_draft; /* draft msg loading status */ bool make_default_body_size; bool is_default_body_size; diff --git a/composer/src/gadget/msg-ui-composer-gadget.c b/composer/src/gadget/msg-ui-composer-gadget.c index d99cde7..94cefb8 100755 --- a/composer/src/gadget/msg-ui-composer-gadget.c +++ b/composer/src/gadget/msg-ui-composer-gadget.c @@ -251,6 +251,8 @@ static void __msg_ui_composer_on_resume(ui_gadget_h ug, service_h data, void *pr cd->state = COMPOSER_STATE_TYPE_RUNNING; cd->loaded_aul = FALSE; + /* reset hide_keypad_op */ + cd->hide_keypad_op = false; if (cd->bubble_data) { cd->bubble_data->ug_state = BUBBLE_UG_START; diff --git a/composer/src/ui-composer/msg-ui-composer-body-callback.c b/composer/src/ui-composer/msg-ui-composer-body-callback.c index 4e5bb32..c018c7e 100755 --- a/composer/src/ui-composer/msg-ui-composer-body-callback.c +++ b/composer/src/ui-composer/msg-ui-composer-body-callback.c @@ -460,6 +460,7 @@ static COMPOSER_RETURN_TYPE_E __msgc_check_condition_to_send_msg(void *data, int } } g_free(entry_txt); + elm_entry_entry_set(entry, ""); } /*check recipient count is zero*/ diff --git a/composer/src/ui-composer/msg-ui-composer-common.c b/composer/src/ui-composer/msg-ui-composer-common.c index 30c2197..6ac1eb0 100755 --- a/composer/src/ui-composer/msg-ui-composer-common.c +++ b/composer/src/ui-composer/msg-ui-composer-common.c @@ -1461,3 +1461,21 @@ void msg_ui_composer_apply_font_size(MSG_COMPOSER_VIEW_DATA_S *cd, bool update_s D_LEAVE; } +void msg_ui_composer_naviframe_size_hints_changed(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + D_ENTER; + D_MSG_RETM_IF(data == NULL, "Composer Data is NULL"); + MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data; + Evas_Display_Mode dispmode; + + dispmode = evas_object_size_hint_display_mode_get(obj); + if (dispmode == EVAS_DISPLAY_MODE_COMPRESS) { + D_MSG("dispmode = EVAS_DISPLAY_MODE_COMPRESS"); + cd->is_keypad_show = true; + } else if (dispmode == EVAS_DISPLAY_MODE_NONE) { + D_MSG("dispmode = EVAS_DISPLAY_MODE_NONE"); + cd->is_keypad_show = false; + } + D_LEAVE; +} + diff --git a/composer/src/ui-composer/msg-ui-composer-main.c b/composer/src/ui-composer/msg-ui-composer-main.c index 0fc0a16..2805cd2 100755 --- a/composer/src/ui-composer/msg-ui-composer-main.c +++ b/composer/src/ui-composer/msg-ui-composer-main.c @@ -598,6 +598,12 @@ static void __naviframe_back_btn_clicked_cb(void *data, Evas_Object *obj, void * D_MSG_RETM_IF(data == NULL, "Data == NULL"); MSG_COMPOSER_VIEW_DATA_S *cd = (MSG_COMPOSER_VIEW_DATA_S *)data; + if (cd->is_keypad_show) { + D_MSG("Hide keypad or clipboard"); + cd->hide_keypad_op = true; + return; + } + COMPOSER_EDIT_STATE_E edit_state = __msg_ui_composer_edit_check(cd); D_MSG("edit_state = %d", edit_state); @@ -1614,6 +1620,8 @@ COMPOSER_RETURN_TYPE_E msg_ui_composer_create(MSG_COMPOSER_VIEW_DATA_S *cd) back_btn = __naviframe_back_btn_create(navi_frame, (void *)cd, false); } + evas_object_event_callback_add(navi_frame, EVAS_CALLBACK_CHANGED_SIZE_HINTS, msg_ui_composer_naviframe_size_hints_changed, cd); + navi_it = elm_naviframe_item_push(navi_frame, NULL, NULL, NULL, content_layout, "empty"); cd->navi_it = navi_it; diff --git a/composer/src/ui-composer/msg-ui-composer-recipient-callback.c b/composer/src/ui-composer/msg-ui-composer-recipient-callback.c index e0087e7..aa73034 100755 --- a/composer/src/ui-composer/msg-ui-composer-recipient-callback.c +++ b/composer/src/ui-composer/msg-ui-composer-recipient-callback.c @@ -282,6 +282,9 @@ void msg_ui_recipient_mbe_clicked_cb(void *data, Evas_Object *obj, void *event_i MSG_COMPOSER_VIEW_DATA_S *cd = data; D_MSG_RETM_IF(cd == NULL, "Composer Data is NULL"); + /* reset hide_keypad_op */ + cd->hide_keypad_op = false; + int attach_count = msg_ui_composer_get_attach_count(cd); if (attach_count > 1) diff --git a/composer/src/ui-composer/msg-ui-composer-recipient.c b/composer/src/ui-composer/msg-ui-composer-recipient.c index b0068b8..8e79c9f 100755 --- a/composer/src/ui-composer/msg-ui-composer-recipient.c +++ b/composer/src/ui-composer/msg-ui-composer-recipient.c @@ -211,8 +211,23 @@ Eina_Bool msg_ui_composer_recipient_show_invalid_address_popup(void *data) if (!msg_ui_composer_popup_exist(cd) && !cd->loaded_ug && !cd->loaded_aul) { /* show popup when message window has a top focus.(active state of app) */ if (elm_win_focus_get(cd->main_window) == EINA_TRUE) { - if (cd->isclosed == false) - msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK); + if (cd->isclosed == false) { + if (cd->hide_keypad_op == false) { + msg_ui_composer_status_btn_popup_show(cd, MSGC_STR_NOTI_RECIPIENT_INVALID, 0, MSGC_STR_BUTTON_OK); + } else { + /* skip showing invalid popup if back btn of composer should be worked for hiding keypad operation - sip concept */ + /* move focus to MBE */ + msg_ui_composer_last_focus_load(cd); + /* hide keypad */ + Evas_Object *last_focus_eo = msg_ui_composer_last_focused_entry_get(cd); + Evas_Object *entry = elm_multibuttonentry_entry_get(last_focus_eo); + elm_entry_input_panel_hide(entry); + + /* reset hide_keypad_op */ + cd->hide_keypad_op = false; + } + } + } } -- 2.7.4