[Title] Find-word change.
authorjihye3.song <jihye3.song@samsung.com>
Fri, 24 Aug 2012 07:02:28 +0000 (16:02 +0900)
committerjihye3.song <jihye3.song@samsung.com>
Fri, 24 Aug 2012 10:02:27 +0000 (19:02 +0900)
[Issue#] p120809-6372
[Problem] Some condition, button are not dimmed.
[Cause] no exception.
[Solution] Implementation exception.
[Team] Browser UI
[Developer] jihye3.song
[Request] N/A

Change-Id: I50d04bf73a515bd3629db4d0b7213c02751b9faf

src/browser-extension/browser-find-word.cpp
src/browser-view/browser-view.cpp
src/browser-view/browser-view.h

index 04360f7..99e248b 100755 (executable)
@@ -46,7 +46,15 @@ void Browser_Find_Word::__did_find_string_cb(Evas_Object* o, const char* string,
                find_word->m_find_word_index = 0;
                find_word->m_find_word_max_count = 0;
 
-               find_word->m_browser_view->_update_find_word_index_text("0/0");
+               find_word->m_browser_view->_update_find_word_index_text("0/0", find_word->m_find_word_index, find_word->m_find_word_max_count);
+               return;
+       }
+
+       if (match_count == 1) {
+               find_word->m_find_word_index = 1;
+               find_word->m_find_word_max_count = 1;
+
+               find_word->m_browser_view->_update_find_word_index_text("1/1", find_word->m_find_word_index, find_word->m_find_word_max_count);
                return;
        }
 
@@ -61,7 +69,7 @@ void Browser_Find_Word::__did_find_string_cb(Evas_Object* o, const char* string,
                return;
        }
        g_string_printf(index_string, "%d/%d", find_word->m_find_word_index, find_word->m_find_word_max_count);
-       find_word->m_browser_view->_update_find_word_index_text(index_string->str);
+       find_word->m_browser_view->_update_find_word_index_text(index_string->str, find_word->m_find_word_index, find_word->m_find_word_max_count);
        g_string_free(index_string, true);
 }
 
index 790f7c5..4dab52d 100755 (executable)
@@ -2324,13 +2324,31 @@ void Browser_View::__internet_settings_cb(void *data, Evas_Object *obj, void *ev
                BROWSER_LOGE("_call_internet_settings failed");
 }
 
-void Browser_View::_update_find_word_index_text(const char *index_text)
+void Browser_View::_update_find_word_index_text(const char *index_text, int index, int max_match_cnt)
 {
        BROWSER_LOGD("[%s]", __func__);
 
        edje_object_part_text_set(elm_layout_edje_get(m_option_header_find_word_layout), "elm.index_text", index_text);
-}
 
+       if (max_match_cnt == 0 || max_match_cnt == 1) {
+               elm_object_disabled_set(m_find_word_prev_button, EINA_TRUE);
+               elm_object_disabled_set(m_find_word_next_button, EINA_TRUE);
+       } else if (index == 0 || index == 1) {
+               elm_object_disabled_set(m_find_word_prev_button, EINA_TRUE);
+               elm_object_disabled_set(m_find_word_next_button, EINA_FALSE);
+               if (index == 0 || (index == 1 && elm_object_focus_get(m_find_word_cancel_button)))
+                       elm_object_focus_set(m_find_word_cancel_button, EINA_TRUE);
+       } else if (index == max_match_cnt) {
+               elm_object_disabled_set(m_find_word_prev_button, EINA_FALSE);
+               elm_object_disabled_set(m_find_word_next_button, EINA_TRUE);
+               elm_object_focus_set(m_find_word_cancel_button, EINA_TRUE);
+       } else {
+               if (elm_object_disabled_get(m_find_word_prev_button))
+                       elm_object_disabled_set(m_find_word_prev_button, EINA_FALSE);
+               if (elm_object_disabled_get(m_find_word_next_button))
+                       elm_object_disabled_set(m_find_word_next_button, EINA_FALSE);
+       }
+}
 void Browser_View::__find_word_cb(void *data, Evas_Object *obj, void *event_info)
 {
        BROWSER_LOGD("[%s]", __func__);
@@ -3424,11 +3442,6 @@ void Browser_View::__find_word_erase_button_clicked_cb(void *data, Evas_Object *
        BROWSER_LOGD("[%s]", __func__);
        Browser_View *browser_view = (Browser_View *)data;
        edje_object_part_text_set(elm_layout_edje_get(browser_view->m_option_header_find_word_layout), "elm.index_text", "0/0");
-
-       if (elm_object_disabled_get(browser_view->m_find_word_prev_button))
-               elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_FALSE);
-       if (elm_object_disabled_get(browser_view->m_find_word_next_button))
-               elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_FALSE);
 }
 
 void Browser_View::__find_word_cancel_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
@@ -3440,12 +3453,8 @@ void Browser_View::__find_word_cancel_button_clicked_cb(void *data, Evas_Object
        Browser_View *browser_view = (Browser_View *)data;
        browser_view->_set_edit_mode(BR_NO_EDIT_MODE);
        browser_view->m_find_word->find_word("", Browser_Find_Word::BROWSER_FIND_WORD_FORWARD);
-
-       if (elm_object_disabled_get(browser_view->m_find_word_prev_button))
-               elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_FALSE);
-       if (elm_object_disabled_get(browser_view->m_find_word_next_button))
-               elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_FALSE);
 }
+
 void Browser_View::__find_word_prev_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        BROWSER_LOGD("[%s]", __func__);
@@ -3453,24 +3462,16 @@ void Browser_View::__find_word_prev_button_clicked_cb(void *data, Evas_Object *o
                return;
 
        Browser_View *browser_view = (Browser_View *)data;
+       edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "hide,control_bar,no_animation,signal", "");
        Evas_Object *edit_field_entry = br_elm_editfield_entry_get(browser_view->m_find_word_edit_field);
        const char *find_word = elm_entry_entry_get(edit_field_entry);
        if (!find_word || !strlen(find_word))
                return;
 
-       int index_cnt = browser_view->m_find_word->find_word(find_word, Browser_Find_Word::BROWSER_FIND_WORD_BACKWARD);
-       int match_max_cnt = browser_view->m_find_word->get_match_max_value();
-
-       if (index_cnt == 1) {
-               elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_TRUE);
-               if (index_cnt != match_max_cnt)
-                       elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_FALSE);
-       } else {
-               elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_FALSE);
-               elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_FALSE);
-       }
+       int index = browser_view->m_find_word->find_word(find_word, Browser_Find_Word::BROWSER_FIND_WORD_BACKWARD);
+       if (index == 1)
+               elm_object_focus_set(browser_view->m_find_word_cancel_button, EINA_TRUE);
 }
-
 void Browser_View::__find_word_next_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        BROWSER_LOGD("[%s]", __func__);
@@ -3478,22 +3479,15 @@ void Browser_View::__find_word_next_button_clicked_cb(void *data, Evas_Object *o
                return;
 
        Browser_View *browser_view = (Browser_View *)data;
+       edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "hide,control_bar,no_animation,signal", "");
        Evas_Object *edit_field_entry = br_elm_editfield_entry_get(browser_view->m_find_word_edit_field);
        const char *find_word = elm_entry_entry_get(edit_field_entry);
        if (!find_word || !strlen(find_word))
                return;
 
-       int index_cnt = browser_view->m_find_word->find_word(find_word, Browser_Find_Word::BROWSER_FIND_WORD_FORWARD);
-       int match_max_cnt = browser_view->m_find_word->get_match_max_value();
-
-       if (index_cnt == match_max_cnt) {
-               elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_TRUE);
-               if (match_max_cnt != 1)
-                       elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_FALSE);
-       } else {
-               elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_FALSE);
-               elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_FALSE);
-       }
+       int index = browser_view->m_find_word->find_word(find_word, Browser_Find_Word::BROWSER_FIND_WORD_FORWARD);
+       if (index == browser_view->m_find_word->get_match_max_value())
+               elm_object_focus_set(browser_view->m_find_word_cancel_button, EINA_TRUE);
 }
 
 void Browser_View::__find_word_entry_imf_event_cb(void *data, Ecore_IMF_Context *ctx, int value)
@@ -3504,16 +3498,10 @@ void Browser_View::__find_word_entry_imf_event_cb(void *data, Ecore_IMF_Context
 
        Browser_View *browser_view = (Browser_View *)data;
        Evas_Object *find_word_editfield_entry = br_elm_editfield_entry_get(browser_view->m_find_word_edit_field);
-       elm_object_focus_set(find_word_editfield_entry, EINA_FALSE);
-       const char *find_word = elm_entry_entry_get(find_word_editfield_entry);
 
-       if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
-               int match_max_cnt = browser_view->m_find_word->get_match_max_value();
-               if (match_max_cnt == 0 || match_max_cnt == 1) {
-                       elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_TRUE);
-                       elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_TRUE);
-               }
-       } else
+       if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE)
+               elm_object_focus_set(find_word_editfield_entry, EINA_FALSE);
+       else
                elm_object_focus_set(find_word_editfield_entry, EINA_TRUE);
 }
 
@@ -3548,16 +3536,12 @@ void Browser_View::__find_word_entry_enter_key_cb(void *data, Evas_Object *obj,
                return;
 
        Browser_View *browser_view = (Browser_View *)data;
+       edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "hide,control_bar,no_animation,signal", "");
        Evas_Object *edit_field_entry = br_elm_editfield_entry_get(browser_view->m_find_word_edit_field);
        const char *find_word = elm_entry_entry_get(edit_field_entry);
        if (!find_word || !strlen(find_word))
                return;
 
-       if (elm_object_disabled_get(browser_view->m_find_word_prev_button))
-               elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_FALSE);
-       if (elm_object_disabled_get(browser_view->m_find_word_next_button))
-               elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_FALSE);
-
        browser_view->m_find_word->init_index();
        browser_view->m_find_word->find_word(find_word, Browser_Find_Word::BROWSER_FIND_WORD_FORWARD);
 
@@ -3573,22 +3557,13 @@ void Browser_View::__find_word_entry_changed_cb(void *data, Evas_Object *obj, vo
 
        Browser_View *browser_view = (Browser_View *)data;
        Evas_Object *edit_field_entry = br_elm_editfield_entry_get(browser_view->m_find_word_edit_field);
-
        const char *find_word = elm_entry_entry_get(edit_field_entry);
 
-       if (elm_object_disabled_get(browser_view->m_find_word_prev_button))
-               elm_object_disabled_set(browser_view->m_find_word_prev_button, EINA_FALSE);
-       if (elm_object_disabled_get(browser_view->m_find_word_next_button))
-               elm_object_disabled_set(browser_view->m_find_word_next_button, EINA_FALSE);
-
-       if (!find_word || !strlen(find_word)) {
-               browser_view->m_find_word->find_word("", Browser_Find_Word::BROWSER_FIND_WORD_FORWARD);
-       } else {
-               browser_view->m_find_word->init_index();
-               browser_view->m_find_word->find_word(find_word, Browser_Find_Word::BROWSER_FIND_WORD_FORWARD);
-       }
+       browser_view->m_find_word->init_index();
+       browser_view->m_find_word->find_word(find_word, Browser_Find_Word::BROWSER_FIND_WORD_FORWARD);
 }
 
+
 void Browser_View::_navigationbar_title_clicked(void)
 {
        BROWSER_LOGD("[%s]", __func__);
index bc4718b..9627f41 100755 (executable)
@@ -264,7 +264,7 @@ private:
        void _navigationbar_visible_set(Eina_Bool visible);
        Eina_Bool _navigationbar_visible_get(void);
        Evas_Object *_create_find_word_layout(void);
-       void _update_find_word_index_text(const char *index_text);
+       void _update_find_word_index_text(const char *index_text, int index, int max_match_cnt);
        void _jump_to_top(void);
        void _hide_scroller_url_layout(void);
        Eina_Bool _show_scissorbox_view(void);