Apply sip back key concept in composer
authorSoonmin Jung <sm0415.jung@samsung.com>
Wed, 20 Mar 2013 02:02:54 +0000 (11:02 +0900)
committerSoonmin Jung <sm0415.jung@samsung.com>
Wed, 20 Mar 2013 02:06:49 +0000 (11:06 +0900)
Change-Id: Ia10469185e28f527bc7c359798cee78135083e36

composer/include/msg-ui-composer-common.h
composer/include/msg-ui-composer-data.h
composer/src/gadget/msg-ui-composer-gadget.c
composer/src/ui-composer/msg-ui-composer-body-callback.c
composer/src/ui-composer/msg-ui-composer-common.c
composer/src/ui-composer/msg-ui-composer-main.c
composer/src/ui-composer/msg-ui-composer-recipient-callback.c
composer/src/ui-composer/msg-ui-composer-recipient.c

index d48e3ae..b065526 100755 (executable)
@@ -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__*/
index d58bd1f..3d31054 100755 (executable)
@@ -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;
index d99cde7..94cefb8 100755 (executable)
@@ -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;
index 4e5bb32..c018c7e 100755 (executable)
@@ -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*/
index 30c2197..6ac1eb0 100755 (executable)
@@ -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;
+}
+
index 0fc0a16..2805cd2 100755 (executable)
@@ -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;
index e0087e7..aa73034 100755 (executable)
@@ -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)
index b0068b8..8e79c9f 100755 (executable)
@@ -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;
+                               }
+                       }
+
                }
        }