Exiting from Screen zoom by pressing "Escape" or "Backspace" key. 99/49999/4 accepted/tizen/tv/20151023.054313 submit/tizen_tv/20151022.230904
authorAlbert Malewski <a.malewski@samsung.com>
Thu, 22 Oct 2015 12:28:05 +0000 (14:28 +0200)
committerAlbert Malewski <a.malewski@samsung.com>
Mon, 19 Oct 2015 10:17:10 +0000 (12:17 +0200)
[Issue]    https://bugs.tizen.org/jira/browse/TT-225
[Problem]  User cannot exit the screen zoom.
[Cause]    Screen zoom is not in ViewManager stack, so it can't be supported
           by onBackPressed callback.
[Solution] Added boost signal in PlatformInputManager on "Escape"
           and "Backspace" keys.
[Verify]   Launch browser > Open web page > More Menu > Screen zoom
           Zoom up/down the page. Then press "escape" -> Screen zoom should
           disappear and the page should return to normal scale.

Change-Id: Ica7a37a9fe15f3bb27bf4f54dce53238b90cb7b5

services/PlatformInputManager/PlatformInputManager.cpp
services/PlatformInputManager/PlatformInputManager.h
services/SimpleUI/SimpleUI.cpp
services/SimpleUI/SimpleUI.h
services/ZoomUI/ZoomUI.cpp
services/ZoomUI/ZoomUI.h

index 4d6cd8f..8a552e9 100644 (file)
@@ -85,6 +85,8 @@ Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int ty
             // MERGE_ME dont know if should be commented out
         else if(!keyName.compare("BackSpace") || !keyName.compare("XF86Back"))
             self->backPressed();
+        else if(!keyName.compare("Escape"))
+            self->escapePressed();
     } else if(type == ECORE_EVENT_KEY_UP) {
         M_ASSERT(event);
         Ecore_Event_Key *ev = static_cast<Ecore_Event_Key *>(event);
index 781a418..4533561 100644 (file)
@@ -54,6 +54,7 @@ public:
     boost::signals2::signal<void ()> leftPressed;
     boost::signals2::signal<void ()> rightPressed;
     boost::signals2::signal<void ()> backPressed;
+    boost::signals2::signal<void ()> escapePressed;
     boost::signals2::signal<void ()> mouseClicked;
 
     /**
index c86fd31..97b4ffa 100644 (file)
@@ -420,6 +420,7 @@ void SimpleUI::connectModelSignals()
 
     m_platformInputManager->returnPressed.connect(boost::bind(&elm_exit));
     m_platformInputManager->backPressed.connect(boost::bind(&SimpleUI::onBackPressed, this));
+    m_platformInputManager->escapePressed.connect(boost::bind(&SimpleUI::onEscapePressed, this));
     m_platformInputManager->mouseClicked.connect(
             boost::bind(&SimpleUI::onMouseClick, this));
 
@@ -628,7 +629,9 @@ void SimpleUI::setwvIMEStatus(bool status)
 void SimpleUI::onBackPressed()
 {
     BROWSER_LOGD("[%s]", __func__);
-    if (m_webPageUI->isHomePageActive()) {
+    if (m_zoomUI->isVisible()) {
+        m_zoomUI->escapeZoom();
+    } else if (m_webPageUI->isHomePageActive()) {
         m_quickAccess->backButtonClicked();
     } else {
         if (!m_webPageUI->getURIEntry().hasFocus() && !m_wvIMEStatus)
@@ -636,6 +639,12 @@ void SimpleUI::onBackPressed()
     }
 }
 
+void SimpleUI::onEscapePressed()
+{
+    BROWSER_LOGD("[%s]", __func__);
+    m_zoomUI->escapeZoom();
+}
+
 void SimpleUI::reloadEnable(bool enable)
 {
     m_webPageUI->setReloadButtonEnabled(enable);
index 4a2293b..35a56da 100644 (file)
@@ -227,6 +227,7 @@ private:
 
     void onReturnPressed(MenuButton *m);
     void onBackPressed();
+    void onEscapePressed();
 
     void searchWebPage(std::string &text, int flags);
 
index c7fa331..aa76abd 100644 (file)
@@ -103,6 +103,15 @@ void ZoomUI::showNavigation()
         evas_object_show(m_nav_layout);
 }
 
+bool ZoomUI::isVisible()
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    if (evas_object_visible_get(m_layout) || (*(getZoom()) != ZOOM_DEFAULT))
+        return true;
+    else
+        return false;
+}
+
 void ZoomUI::createLayout(Evas_Object *parent)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
@@ -248,6 +257,15 @@ void ZoomUI::_zoom_value_confirmed(void* data, Evas*, Evas_Object*, void* event_
     }
 }
 
+void ZoomUI::escapeZoom()
+{
+    BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
+    if (isVisible()) {
+        setZoom(ZoomUI::ZOOM_DEFAULT);
+        hideUI();
+    }
+}
+
 Eina_Bool ZoomUI::_key_down_cb(void* data, int, void* event_info)
 {
     BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
index a2966f2..c9dd81f 100644 (file)
@@ -46,6 +46,8 @@ public:
     void show(Evas_Object* parent);
     void showNavigation();
     void clearItems();
+    bool isVisible();
+    void escapeZoom();
 
     boost::signals2::signal<void ()> closeZoomUI;
     boost::signals2::signal<void (int)> setZoom;