update name view
authorJisung Ahn <jcastle.ahn@samsung.com>
Wed, 13 Mar 2013 06:08:58 +0000 (15:08 +0900)
committerJisung Ahn <jcastle.ahn@samsung.com>
Wed, 13 Mar 2013 06:08:58 +0000 (15:08 +0900)
Change-Id: Iee33b13d6871a17c8ee507a87c13ff13dabec363

main/src/include/ivug-name-view.h
main/src/view/ivug-name-view.c

index 39bb483..9f95220 100755 (executable)
@@ -39,6 +39,8 @@ typedef struct _Ivug_NameView
        Evas_Object *entry;
        Evas_Object *btn_done;
 
+       bool sip_show;
+
        FNResponse fnresponse;
        void *clientdata;
 
index 4e595b4..c5083b6 100755 (executable)
@@ -40,6 +40,65 @@ _on_timeout_response(void *data, Evas_Object *obj, void *event_info)
        //ivug_name_view_destroy(pNameView);
 }
 
+static void _on_resized(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       IV_ASSERT(data != NULL);
+
+       Ivug_NameView *pNameView = (Ivug_NameView *)data;
+
+       Elm_Object_Item *navi_it = elm_naviframe_top_item_get(pNameView->navibar);
+
+       if(pNameView->sip_show == true)
+       {
+               int rot = gGetRotationDegree();
+               if(rot == 90 || rot == 270)
+               {
+                       elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
+               }
+               else
+               {
+                       elm_naviframe_item_title_visible_set(navi_it, EINA_TRUE);
+               }
+       }
+       else
+       {
+               elm_naviframe_item_title_visible_set(navi_it, EINA_TRUE);
+       }
+}
+
+static void
+_on_keypad_show(void *data, Evas_Object *obj, void *event_info)
+{
+       IV_ASSERT(data != NULL);
+
+       Ivug_NameView *pNameView = (Ivug_NameView *)data;
+
+       pNameView->sip_show = true;
+
+       Elm_Object_Item *navi_it = elm_naviframe_top_item_get(pNameView->navibar);
+
+       int rot = gGetRotationDegree();
+       if(rot == 90 || rot == 270)
+       {
+               elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
+       }
+}
+
+static void
+_on_keypad_hide(void *data, Evas_Object *obj, void *event_info)
+{
+       IV_ASSERT(data != NULL);
+
+       Ivug_NameView *pNameView = (Ivug_NameView *)data;
+
+       pNameView->sip_show = false;
+
+       Elm_Object_Item *navi_it = elm_naviframe_top_item_get(pNameView->navibar);
+
+       elm_naviframe_item_title_visible_set(navi_it, EINA_TRUE);
+}
+
+
 static void
 _on_invalid_name_timeout_response(void *data, Evas_Object *obj, void *event_info)
 {
@@ -57,7 +116,7 @@ _ivug_rename_view_enter_click_cb(void *data, Evas_Object *obj, void *event_info)
        Ivug_NameView *pNameView = (Ivug_NameView *)data;
        IV_ASSERT(pNameView != NULL);
 
-       Evas_Object *entry = elm_object_part_content_get(pNameView->editfield, "elm.swallow.content");
+       Evas_Object *entry = elm_object_part_content_get(pNameView->editfield, "elm.icon.entry");
 
        char *name = elm_entry_markup_to_utf8 ( elm_entry_entry_get(entry) );
 
@@ -109,7 +168,7 @@ _ivug_name_view_done_cb(void *data, Evas_Object* obj, void* event_info )
        Ivug_NameView *pNameView = (Ivug_NameView *)data;
        IV_ASSERT(pNameView != NULL);
 
-       Evas_Object *entry = elm_object_part_content_get(pNameView->editfield, "elm.swallow.content");
+       Evas_Object *entry = elm_object_part_content_get(pNameView->editfield, "elm.icon.entry");
 
        char *name = elm_entry_markup_to_utf8 ( elm_entry_entry_get(entry) );
 
@@ -147,6 +206,12 @@ _ivug_name_view_cancel_cb(void *data, Evas_Object *obj, void *event_info)
        Ivug_NameView *pNameView = (Ivug_NameView *)data;
        IV_ASSERT(pNameView != NULL);
 
+       if(pNameView->sip_show == true)
+       {
+               ecore_imf_context_input_panel_hide(elm_entry_imf_context_get(pNameView->entry));
+       }
+       else
+       {
        if ( pNameView->fnresponse )
        {
                (pNameView->fnresponse)(NAME_VIEW_RESPONSE_CANCEL, NULL, pNameView->clientdata);
@@ -155,30 +220,31 @@ _ivug_name_view_cancel_cb(void *data, Evas_Object *obj, void *event_info)
        //destroy after pop and transit ended
        //ivug_name_view_destroy(pNameView);
 }
+}
 
 static void _ivug_name_view_on_entry_changed(void *data, Evas_Object *obj, void *event_info)
 {
        Ivug_NameView *pNameView = (Ivug_NameView *)data;
        IV_ASSERT(pNameView != NULL);
 
-       if (elm_object_focus_get(pNameView->editfield))
+       if (elm_object_focus_get(obj))
        {
                if (elm_entry_is_empty(obj))
-                       elm_object_signal_emit(pNameView->editfield, "elm,state,eraser,hide", "elm");
+                       elm_object_signal_emit(pNameView->editfield, "elm,state,eraser,hide", "");
                else
-                       elm_object_signal_emit(pNameView->editfield, "elm,state,eraser,show", "elm");
+                       elm_object_signal_emit(pNameView->editfield, "elm,state,eraser,show", "");
        }
 
        Evas_Object *entry;
 
-       entry = elm_object_part_content_get(pNameView->editfield, "elm.swallow.content");
+       entry = elm_object_part_content_get(pNameView->editfield, "elm.icon.entry");
 
        char *content = elm_entry_markup_to_utf8 ( elm_entry_entry_get(entry) );
 
        if (strlen(content) == 0)
        {
                MSG_IMAGEVIEW_HIGH("ISF1 : %s", content);
-               elm_object_part_text_set(pNameView->editfield, "elm.guidetext", IDS_ENTER_NAME);
+               elm_object_part_text_set(pNameView->entry, "elm.guide", IDS_ENTER_NAME);
                //elm_object_disabled_set(pNameView->btn_done, EINA_TRUE);
        }
        else if(ivug_validate_file_name(content) == false)
@@ -200,7 +266,7 @@ static void _ivug_name_view_on_entry_changed(void *data, Evas_Object *obj, void
        else
        {
                MSG_IMAGEVIEW_HIGH("ISF : %s", content);
-               elm_object_part_text_set(pNameView->editfield, "elm.guidetext", IDS_NULL);
+               elm_object_part_text_set(pNameView->entry, "elm.guide", IDS_NULL);
                elm_object_disabled_set(pNameView->btn_done, EINA_FALSE);
        }
 
@@ -216,28 +282,31 @@ static void _ivug_name_view_on_entry_changed_user(void *data, Evas_Object *obj,
 static void _ivug_name_view_on_entry_preedit_changed(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_IMAGEVIEW_HIGH("_ivug_name_view_on_entry_preedit_changed");
+
+       _ivug_name_view_on_entry_changed(data, obj, event_info);
 }
 
 static void _ivug_name_view_on_entry_focused(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_IMAGEVIEW_HIGH("_ivug_name_view_on_entry_focused");
        if (!elm_entry_is_empty(obj))
-               elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
-       elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+               elm_object_signal_emit(data, "elm,state,eraser,show", "");
+       elm_object_signal_emit(data, "elm,state,rename,hide", "");
 }
 
 static void _ivug_name_view_on_entry_unfocused(void *data, Evas_Object *obj, void *event_info)
 {
        MSG_IMAGEVIEW_HIGH("_ivug_name_view_on_entry_unfocused");
-       if (elm_entry_is_empty(obj))
-               elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
-       elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+
+       elm_object_signal_emit(data, "elm,state,eraser,hide", "");
+       elm_object_signal_emit(data, "elm,state,rename,show", "");
 }
 
 
 static void
 _ivug_name_view_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
+       elm_object_focus_set(data, EINA_TRUE); // After button is clicked, entry should get focus again.
        elm_entry_entry_set(data, "");
 }
 
@@ -246,12 +315,12 @@ static Evas_Object *_ivug_name_view_editfield_create(void *data, Evas_Object *ob
        Ivug_NameView *pNameView = (Ivug_NameView *)data;
 
        Evas_Object *editfield = elm_layout_add(obj);
-       elm_layout_theme_set(editfield, "layout", "editfield", "default");
+       elm_layout_theme_set(editfield, "layout", "item/editfield", "default");
 
        Evas_Object *entry = elm_entry_add(editfield);
        elm_entry_single_line_set(entry, EINA_TRUE);
        elm_entry_scrollable_set(entry, EINA_TRUE);
-       elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
+       elm_object_part_text_set(entry, "elm.guide", IDS_ENTER_NAME);
 
        evas_object_smart_callback_add(entry, "activated", _ivug_rename_view_enter_click_cb, pNameView);
        evas_object_smart_callback_add(entry, "changed", _ivug_name_view_on_entry_changed, pNameView);
@@ -260,12 +329,14 @@ static Evas_Object *_ivug_name_view_editfield_create(void *data, Evas_Object *ob
        evas_object_smart_callback_add(entry, "focused", _ivug_name_view_on_entry_focused, editfield);
        evas_object_smart_callback_add(entry, "unfocused", _ivug_name_view_on_entry_unfocused, editfield);
 
-       elm_object_part_content_set(editfield, "elm.swallow.content", entry);
-       elm_object_signal_callback_add(editfield, "elm,eraser,clicked", "elm", _ivug_name_view_eraser_clicked_cb, entry);
+       elm_object_part_content_set(editfield, "elm.icon.entry", entry);
 
-       elm_object_part_text_set(editfield, "elm.guidetext", IDS_ENTER_NAME);
+       //MSG_IMAGEVIEW_HIGH("entry = %s", elm_entry_entry_get(entry));
 
-       MSG_IMAGEVIEW_HIGH("entry = %s", elm_entry_entry_get(entry));
+       Evas_Object *button = elm_button_add(editfield);
+       elm_object_style_set(button, "editfield_clear");   // Make "X" marked button by changing style.
+       elm_object_part_content_set(editfield, "elm.icon.eraser", button); // Add eraser button to current editfield layout.
+       evas_object_smart_callback_add(button, "clicked", _ivug_name_view_eraser_clicked_cb, entry);
 
        pNameView->entry = entry;
 
@@ -369,13 +440,25 @@ ivug_name_view_create(Evas_Object *parent, const char *title)
        //elm_object_disabled_set(done_button, EINA_TRUE);
 
        Elm_Object_Item *navi_it = NULL;
-       navi_it = elm_naviframe_item_push(pNameView->navibar, title, NULL, NULL, pNameView->content, NULL);
+       navi_it = elm_naviframe_item_push(pNameView->navibar, title, cancel_button, NULL, pNameView->content, NULL);
+
+       Evas_Object *conformant = ug_get_conformant();
+
+       evas_object_smart_callback_add(conformant, "virtualkeypad,state,on", _on_keypad_show, pNameView);
+       evas_object_smart_callback_add(conformant, "virtualkeypad,state,off", _on_keypad_hide, pNameView);
+       evas_object_smart_callback_add(conformant, "clipboard,state,on", _on_keypad_show, pNameView);
+       evas_object_smart_callback_add(conformant, "clipboard,state,off", _on_keypad_hide, pNameView);
+
+       evas_object_event_callback_add(pNameView->content, EVAS_CALLBACK_RESIZE, _on_resized, (void *)pNameView);
+
+       elm_object_signal_emit(conformant, "elm,state,indicator,nooverlap", "");
 
        //ivug_name_view_set_focus(pNameView);
 
-       elm_object_item_part_content_set(navi_it, "title_toolbar_button1", done_button);
-       elm_object_item_part_content_set(navi_it, "title_prev_btn", cancel_button);
-       elm_object_item_signal_emit(navi_it, "elm,state,sip,shown", "");
+       elm_object_item_part_content_set(navi_it, "toolbar_button1", done_button);
+       //elm_object_item_part_content_set(navi_it, "title_toolbar_button1", done_button);
+       //elm_object_item_part_content_set(navi_it, "title_prev_btn", cancel_button);
+       //elm_object_item_signal_emit(navi_it, "elm,state,sip,shown", "");
 
        return pNameView;
 }
@@ -388,12 +471,43 @@ ivug_name_view_destroy(Ivug_NameView *pNameView)
 
        MSG_IMAGEVIEW_HIGH( "Destroy Name View");
 
+       if(pNameView->entry)
+       {
+               evas_object_del(pNameView->entry);
+               pNameView->entry = NULL;
+       }
+
+       if(pNameView->editfield)
+       {
+               evas_object_del(pNameView->editfield);
+               pNameView->editfield = NULL;
+       }
+
+       if(pNameView->content)
+       {
+               evas_object_del(pNameView->content);
+               pNameView->content = NULL;
+       }
+
+       if(pNameView->navibar)
+       {
+               evas_object_del(pNameView->navibar);
+               pNameView->navibar = NULL;
+       }
+
        if(pNameView->layout)
        {
                evas_object_del(pNameView->layout);
                pNameView->layout = NULL;
        }
 
+       Evas_Object *conformant = ug_get_conformant();
+
+       evas_object_smart_callback_del(conformant, "virtualkeypad,state,on", _on_keypad_show);
+       evas_object_smart_callback_del(conformant, "virtualkeypad,state,off", _on_keypad_hide);
+       evas_object_smart_callback_del(conformant, "clipboard,state,on", _on_keypad_show);
+       evas_object_smart_callback_del(conformant, "clipboard,state,off", _on_keypad_hide);
+
        free(pNameView);
        pNameView = NULL;