[Title] show appropriate zoom buttons when zoom level is changed
authorSangpyo Kim <sangpyo7.kim@samsung.com>
Thu, 13 Sep 2012 11:03:09 +0000 (20:03 +0900)
committerSangpyo Kim <sangpyo7.kim@samsung.com>
Fri, 14 Sep 2012 00:56:25 +0000 (09:56 +0900)
[Issue#] N_SE-9986
[Problem] Zoom In/out button doesn't work at the mobile site.
[Cause] there was no proper scale factor comparing code.
[Solution] hiding the buttons if min/max zoom level is same
[Team] Browser UI
[Developer] sangpyo7.kim
[Request] N/A

Change-Id: I017ff37dde47e4a83af065da6bffc8652cb059d7

edc/browser-view-main.edc
src/browser-view/browser-view.cpp

index 7bda44b..53d2330 100755 (executable)
@@ -645,6 +645,26 @@ collections {
                                target: "elm.swallow.zoom_out_button";
                                target: "elm.swallow.zoom_in_button";
                        }
+                       program { name: "show,zoom_in_buttons";
+                               signal: "show,zoom_in_buttons,signal";
+                               action: STATE_SET "visible" 0.0;
+                               target: "elm.swallow.zoom_in_button";
+                       }
+                       program { name: "hide,zoom_in_buttons";
+                               signal: "hide,zoom_in_buttons,signal";
+                               action: STATE_SET "default" 0.0;
+                               target: "elm.swallow.zoom_in_button";
+                       }
+                       program { name: "show,zoom_out_buttons";
+                               signal: "show,zoom_out_buttons,signal";
+                               action: STATE_SET "visible" 0.0;
+                               target: "elm.swallow.zoom_out_button";
+                       }
+                       program { name: "hide,zoom_out_buttons";
+                               signal: "hide,zoom_out_buttons,signal";
+                               action: STATE_SET "default" 0.0;
+                               target: "elm.swallow.zoom_out_button";
+                       }
                        /* endif ZOOM_BUTTON */
 
                        /////////////////////////////
index 59a39eb..cf5d636 100755 (executable)
@@ -1307,13 +1307,17 @@ void Browser_View::__ewk_view_mouse_down_cb(void* data, Evas* evas, Evas_Object*
        if (zoom_button_flag == false)
                return;
 
-
        ewk_view_scale_range_get(browser_view->m_focused_window->m_ewk_view,
                                        &min_scale, &max_scale);
+
+       if (min_scale < scale_factor)
+               edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "show,zoom_out_buttons,signal", "");
+       if (max_scale > scale_factor)
+               edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "show,zoom_in_buttons,signal", "");
+
        if (browser_view->m_zoom_button_timer)
                ecore_timer_del(browser_view->m_zoom_button_timer);
        browser_view->m_zoom_button_timer = ecore_timer_add(3, __zoom_button_timeout_cb, browser_view);
-       edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "show,zoom_buttons,signal", "");
 #endif
 }
 
@@ -4004,7 +4008,8 @@ Eina_Bool Browser_View::__zoom_button_timeout_cb(void *data)
        Browser_View *browser_view = (Browser_View *)data;
        browser_view->m_zoom_button_timer = NULL;
 
-       edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "hide,zoom_buttons,signal", "");
+       edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "hide,zoom_in_buttons,signal", "");
+       edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "hide,zoom_out_buttons,signal", "");
 
        return ECORE_CALLBACK_CANCEL;
 }
@@ -4016,8 +4021,18 @@ void Browser_View::__zoom_out_clicked_cb(void *data, Evas_Object *obj, void *eve
                return;
 
        Browser_View *browser_view = (Browser_View *)data;
+       double min_scale = 0;
+       double max_scale = 0;
        double scale_factor = ewk_view_scale_get(browser_view->m_focused_window->m_ewk_view);
        ewk_view_scale_set(browser_view->m_focused_window->m_ewk_view, scale_factor - 0.5f, 0, 0);
+       ewk_view_scale_range_get(browser_view->m_focused_window->m_ewk_view,
+                                       &min_scale, &max_scale);
+
+       if ((scale_factor - 0.5f) <= min_scale)
+               edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "hide,zoom_out_buttons,signal", "");
+
+       if (scale_factor == max_scale)
+               edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "show,zoom_in_buttons,signal", "");
 
        if (browser_view->m_zoom_button_timer)
                ecore_timer_del(browser_view->m_zoom_button_timer);
@@ -4031,8 +4046,18 @@ void Browser_View::__zoom_in_clicked_cb(void *data, Evas_Object *obj, void *even
                return;
 
        Browser_View *browser_view = (Browser_View *)data;
+       double min_scale = 0;
+       double max_scale = 0;
        double scale_factor = ewk_view_scale_get(browser_view->m_focused_window->m_ewk_view);
        ewk_view_scale_set(browser_view->m_focused_window->m_ewk_view, scale_factor + 0.5f, 0, 0);
+       ewk_view_scale_range_get(browser_view->m_focused_window->m_ewk_view,
+                                       &min_scale, &max_scale);
+
+       if ((scale_factor + 0.5f) >= max_scale)
+               edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "hide,zoom_in_buttons,signal", "");
+
+       if (scale_factor == min_scale)
+               edje_object_signal_emit(elm_layout_edje_get(browser_view->m_main_layout), "show,zoom_out_buttons,signal", "");
 
        if (browser_view->m_zoom_button_timer)
                ecore_timer_del(browser_view->m_zoom_button_timer);