From: Albert Malewski Date: Tue, 20 Oct 2015 12:06:28 +0000 (+0200) Subject: Navigation in Screen Zoom X-Git-Tag: accepted/tizen/tv/20151022.010509~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aff513564ea89bf8c3a665d328fd3a2bd6a7b027;p=profile%2Ftv%2Fapps%2Fweb%2Fbrowser.git Navigation in Screen Zoom [Issue] https://bugs.tizen.org/jira/browse/TT-213 [Problem] User cannot control screen zoom by D-Pad navigation. [Cause] Lack of implementation. [Solution] Refactored screen zoom. Added focus on slider. [Verify] Launch browser > Open web page > More Menu > Screen zoom Select zoom ratio by left/right arrows > Press OK (enter) to confirm. Change-Id: I4b8bed8bf9f00e76140d9ee020d8d9838e38cbcd --- diff --git a/services/SimpleUI/SimpleUI.cpp b/services/SimpleUI/SimpleUI.cpp index eb15d85..1113a3c 100644 --- a/services/SimpleUI/SimpleUI.cpp +++ b/services/SimpleUI/SimpleUI.cpp @@ -241,16 +241,20 @@ void SimpleUI::connectUISignals() m_webPageUI->getURIEntry().uriEntryEditingChanged.connect(boost::bind(&SimpleUI::onURLEntryEdited, this)); m_webPageUI->backPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this)); m_webPageUI->backPage.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine::back, m_webEngine.get())); + m_webPageUI->backPage.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); m_webPageUI->reloadPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this)); m_webPageUI->showTabUI.connect(boost::bind(&SimpleUI::showTabUI, this)); m_webPageUI->showMoreMenu.connect(boost::bind(&SimpleUI::showMoreMenu, this)); m_webPageUI->forwardPage.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine::forward, m_webEngine.get())); + m_webPageUI->forwardPage.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); m_webPageUI->stopLoadingPage.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine::stopLoading, m_webEngine.get())); + m_webPageUI->stopLoadingPage.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); m_webPageUI->reloadPage.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine::reload, m_webEngine.get())); + m_webPageUI->reloadPage.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); m_webPageUI->showQuickAccess.connect(boost::bind(&SimpleUI::showQuickAccess, this)); m_webPageUI->hideQuickAccess.connect(boost::bind(&QuickAccess::hideUI, m_quickAccess)); m_webPageUI->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this)); - + m_webPageUI->showZoomNavigation.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); M_ASSERT(m_quickAccess.get()); m_quickAccess->getDetailPopup().openURLInNewTab.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this, _1, _2)); @@ -263,6 +267,7 @@ void SimpleUI::connectUISignals() M_ASSERT(m_tabUI.get()); m_tabUI->closeTabUIClicked.connect(boost::bind(&SimpleUI::closeTabUI, this)); + m_tabUI->closeTabUIClicked.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); m_tabUI->newTabClicked.connect(boost::bind(&SimpleUI::newTabClicked, this)); m_tabUI->newTabClicked.connect(boost::bind(&SimpleUI::settingsPrivateModeSwitch, this, false)); m_tabUI->tabClicked.connect(boost::bind(&SimpleUI::tabClicked, this,_1)); @@ -274,6 +279,7 @@ void SimpleUI::connectUISignals() M_ASSERT(m_historyUI.get()); m_historyUI->clearHistoryClicked.connect(boost::bind(&SimpleUI::onClearHistoryClicked, this)); m_historyUI->closeHistoryUIClicked.connect(boost::bind(&SimpleUI::closeHistoryUI, this)); + m_historyUI->closeHistoryUIClicked.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); // desktop mode as default m_historyUI->historyItemClicked.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this, _1, true)); @@ -288,6 +294,7 @@ void SimpleUI::connectUISignals() m_moreMenuUI->historyUIClicked.connect(boost::bind(&SimpleUI::showHistoryUI, this)); m_moreMenuUI->settingsClicked.connect(boost::bind(&SimpleUI::showSettingsUI, this)); m_moreMenuUI->closeMoreMenuClicked.connect(boost::bind(&SimpleUI::closeMoreMenu, this)); + m_moreMenuUI->closeMoreMenuClicked.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); m_moreMenuUI->switchToMobileMode.connect(boost::bind(&SimpleUI::switchToMobileMode, this)); m_moreMenuUI->switchToDesktopMode.connect(boost::bind(&SimpleUI::switchToDesktopMode, this)); m_moreMenuUI->addToBookmarkClicked.connect(boost::bind(&SimpleUI::addToBookmarks, this, _1)); @@ -297,10 +304,12 @@ void SimpleUI::connectUISignals() M_ASSERT(m_bookmarkManagerUI.get()); m_bookmarkManagerUI->closeBookmarkManagerClicked.connect(boost::bind(&SimpleUI::closeBookmarkManagerUI, this)); + m_bookmarkManagerUI->closeBookmarkManagerClicked.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get())); m_bookmarkManagerUI->bookmarkItemClicked.connect(boost::bind(&SimpleUI::onBookmarkClicked, this, _1)); M_ASSERT(m_zoomUI.get()); m_zoomUI->setZoom.connect(boost::bind(&SimpleUI::setZoomFactor, this, _1)); + m_zoomUI->getZoom.connect(boost::bind(&SimpleUI::getZoomFactor, this)); m_zoomUI->scrollView.connect(boost::bind(&SimpleUI::scrollView, this, _1, _2)); } @@ -388,7 +397,6 @@ void SimpleUI::connectModelSignals() m_webEngine->uriChanged.connect(boost::bind(&URIEntry::changeUri, &m_webPageUI->getURIEntry(), _1)); m_webEngine->uriChanged.connect(boost::bind(&MoreMenuUI::setURL, m_moreMenuUI.get(), _1)); m_webEngine->uriOnTabChanged.connect(boost::bind(&SimpleUI::checkTabId,this,_1)); - m_webEngine->uriOnTabChanged.connect(boost::bind(&SimpleUI::closeZoomUI, this)); m_webEngine->webViewClicked.connect(boost::bind(&URIEntry::clearFocus, &m_webPageUI->getURIEntry())); m_webEngine->backwardEnableChanged.connect(boost::bind(&WebPageUI::setBackButtonEnabled, m_webPageUI.get(), _1)); m_webEngine->forwardEnableChanged.connect(boost::bind(&WebPageUI::setForwardButtonEnabled, m_webPageUI.get(), _1)); @@ -459,6 +467,7 @@ void SimpleUI::switchToTab(const tizen_browser::basic_webengine::TabId& tabId) } BROWSER_LOGD("[%s:%d] swiching to web_view ", __PRETTY_FUNCTION__, __LINE__); switchViewToWebPage(); + m_zoomUI->showNavigation(); } bool SimpleUI::isErrorPageActive() @@ -741,16 +750,21 @@ void SimpleUI::closeZoomUI() { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); M_ASSERT(m_zoomUI); - m_webPageUI->showTabUI.disconnect(boost::bind(&SimpleUI::closeZoomUI, this)); - m_webPageUI->showMoreMenu.disconnect(boost::bind(&SimpleUI::closeZoomUI, this)); m_zoomUI->hideUI(); } void SimpleUI::setZoomFactor(int level) { + BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__); m_webEngine->setZoomFactor(level); } +int SimpleUI::getZoomFactor() +{ + BROWSER_LOGD("[%s:%d] %d", __PRETTY_FUNCTION__, __LINE__, m_webEngine->getZoomFactor()); + return m_webEngine->getZoomFactor(); +} + void SimpleUI::scrollView(const int& dx, const int& dy) { m_webEngine->scrollView(dx, dy); diff --git a/services/SimpleUI/SimpleUI.h b/services/SimpleUI/SimpleUI.h index 5f59329..91d03fe 100644 --- a/services/SimpleUI/SimpleUI.h +++ b/services/SimpleUI/SimpleUI.h @@ -200,6 +200,7 @@ private: void showZoomUI(); void closeZoomUI(); void setZoomFactor(int level); + int getZoomFactor(); void scrollView(const int& dx, const int& dy); void showTabUI(); diff --git a/services/WebPageUI/WebPageUI.h b/services/WebPageUI/WebPageUI.h index 07a3672..34b3717 100644 --- a/services/WebPageUI/WebPageUI.h +++ b/services/WebPageUI/WebPageUI.h @@ -67,6 +67,7 @@ public: boost::signals2::signal hideQuickAccess; boost::signals2::signal showQuickAccess; boost::signals2::signal bookmarkManagerClicked; + boost::signals2::signal showZoomNavigation; static void faviconClicked(void* data, Evas_Object* obj, const char* emission, const char* source); diff --git a/services/ZoomUI/ZoomUI.cpp b/services/ZoomUI/ZoomUI.cpp index dcbe068..b5e9596 100644 --- a/services/ZoomUI/ZoomUI.cpp +++ b/services/ZoomUI/ZoomUI.cpp @@ -66,23 +66,41 @@ Evas_Object* ZoomUI::getContent() void ZoomUI::showUI() { evas_object_show(m_layout); - evas_object_show(m_nav_layout); + evas_object_show(m_zoom_menu); evas_object_show(m_zoom_slider); + m_keyDownHandler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_down_cb, this); + m_keyUpHandler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_up_cb, this); + int zoomFactor = *(getZoom()); + elm_slider_value_set(m_zoom_slider, calculateSliderValue(zoomFactor)); } void ZoomUI::hideUI() { evas_object_hide(m_zoom_slider); evas_object_hide(m_nav_layout); + evas_object_hide(m_zoom_menu); evas_object_hide(m_layout); + ecore_event_handler_del(m_keyDownHandler); + ecore_event_handler_del(m_keyUpHandler); } void ZoomUI::show(Evas_Object* parent) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); init(parent); - createLayout(parent); + if (!m_layout) + createLayout(parent); showUI(); + elm_object_focus_set(m_zoom_slider, EINA_TRUE); +} + +void ZoomUI::showNavigation() +{ + BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); + M_ASSERT(m_nav_layout); + int zoomFactor = *(getZoom()); + if (zoomFactor > ZOOM_DEFAULT) + evas_object_show(m_nav_layout); } void ZoomUI::createLayout(Evas_Object *parent) @@ -93,25 +111,31 @@ void ZoomUI::createLayout(Evas_Object *parent) elm_layout_file_set(m_layout, m_edjFilePath.c_str(), "zoom-layout"); evas_object_size_hint_weight_set(m_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(m_layout, EVAS_HINT_FILL, EVAS_HINT_FILL); - createZoomSlider(); createNavigationButtons(); } void ZoomUI::createZoomSlider() { - m_zoom_slider = elm_slider_add(m_layout); + m_zoom_menu = elm_layout_add(m_layout); + elm_layout_file_set(m_zoom_menu, m_edjFilePath.c_str(), "zoom-menu"); + evas_object_size_hint_weight_set(m_zoom_menu, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(m_zoom_menu, EVAS_HINT_FILL, EVAS_HINT_FILL); + + m_zoom_slider = elm_slider_add(m_zoom_menu); evas_object_size_hint_weight_set(m_zoom_slider, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(m_zoom_slider, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_smart_callback_add(m_zoom_slider, "changed", _zoom_slider_changed, this); elm_object_style_set(m_zoom_slider, "default"); elm_slider_horizontal_set(m_zoom_slider, EINA_TRUE); elm_slider_min_max_set(m_zoom_slider, 1, 6); - elm_slider_step_set(m_zoom_slider, 1); - elm_slider_value_set(m_zoom_slider, 3); - elm_slider_indicator_format_set(m_zoom_slider, "%1.0f"); + elm_slider_step_set(m_zoom_slider, 0.2); + int zoomFactor = *(getZoom()); + elm_slider_value_set(m_zoom_slider, calculateSliderValue(zoomFactor)); + elm_slider_indicator_show_set(m_zoom_slider, EINA_FALSE); - elm_object_part_content_set(m_layout, "slider_swallow", m_zoom_slider); + elm_object_part_content_set(m_zoom_menu, "slider_swallow", m_zoom_slider); + evas_object_event_callback_add(m_zoom_slider, EVAS_CALLBACK_KEY_DOWN, _zoom_value_confirmed, this); } void ZoomUI::createNavigationButtons() @@ -120,35 +144,34 @@ void ZoomUI::createNavigationButtons() elm_layout_file_set(m_nav_layout, m_edjFilePath.c_str(), "nav-layout"); evas_object_size_hint_weight_set(m_nav_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(m_nav_layout, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_part_content_set(m_layout, "nav_buttons", m_nav_layout); - - Evas_Object* icon = elm_icon_add(m_nav_layout); - setImageFile(icon, LEFT, false); - evas_object_smart_callback_add(icon, "clicked", _left_button_clicked, this); - evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_IN, _cb_focus_in_left_button, this); - evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_OUT, _cb_focus_out_left_button, this); - elm_object_part_content_set(m_nav_layout, "left_button", icon); - - icon = elm_icon_add(m_nav_layout); - setImageFile(icon, RIGHT, false); - evas_object_smart_callback_add(icon, "clicked", _right_button_clicked, this); - evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_IN, _cb_focus_in_right_button, this); - evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_OUT, _cb_focus_out_right_button, this); - elm_object_part_content_set(m_nav_layout, "right_button", icon); - - icon = elm_icon_add(m_nav_layout); - setImageFile(icon, DOWN, false); - evas_object_smart_callback_add(icon, "clicked", _down_button_clicked, this); - evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_IN, _cb_focus_in_down_button, this); - evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_OUT, _cb_focus_out_down_button, this); - elm_object_part_content_set(m_nav_layout, "down_button", icon); - - icon = elm_icon_add(m_nav_layout); - setImageFile(icon, UP, false); - evas_object_smart_callback_add(icon, "clicked", _up_button_clicked, this); - evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_IN, _cb_focus_in_up_button, this); - evas_object_event_callback_add(icon, EVAS_CALLBACK_MOUSE_OUT, _cb_focus_out_up_button, this); - elm_object_part_content_set(m_nav_layout, "up_button", icon); + + m_leftArrow = elm_icon_add(m_nav_layout); + setImageFile(m_leftArrow, LEFT, false); + evas_object_smart_callback_add(m_leftArrow, "clicked", _left_button_clicked, this); + evas_object_event_callback_add(m_leftArrow, EVAS_CALLBACK_MOUSE_IN, _cb_focus_in_left_button, this); + evas_object_event_callback_add(m_leftArrow, EVAS_CALLBACK_MOUSE_OUT, _cb_focus_out_left_button, this); + elm_object_part_content_set(m_nav_layout, "left_button", m_leftArrow); + + m_rightArrow = elm_icon_add(m_nav_layout); + setImageFile(m_rightArrow, RIGHT, false); + evas_object_smart_callback_add(m_rightArrow, "clicked", _right_button_clicked, this); + evas_object_event_callback_add(m_rightArrow, EVAS_CALLBACK_MOUSE_IN, _cb_focus_in_right_button, this); + evas_object_event_callback_add(m_rightArrow, EVAS_CALLBACK_MOUSE_OUT, _cb_focus_out_right_button, this); + elm_object_part_content_set(m_nav_layout, "right_button", m_rightArrow); + + m_downArrow = elm_icon_add(m_nav_layout); + setImageFile(m_downArrow, DOWN, false); + evas_object_smart_callback_add(m_downArrow, "clicked", _down_button_clicked, this); + evas_object_event_callback_add(m_downArrow, EVAS_CALLBACK_MOUSE_IN, _cb_focus_in_down_button, this); + evas_object_event_callback_add(m_downArrow, EVAS_CALLBACK_MOUSE_OUT, _cb_focus_out_down_button, this); + elm_object_part_content_set(m_nav_layout, "down_button", m_downArrow); + + m_upArrow = elm_icon_add(m_nav_layout); + setImageFile(m_upArrow, UP, false); + evas_object_smart_callback_add(m_upArrow, "clicked", _up_button_clicked, this); + evas_object_event_callback_add(m_upArrow, EVAS_CALLBACK_MOUSE_IN, _cb_focus_in_up_button, this); + evas_object_event_callback_add(m_upArrow, EVAS_CALLBACK_MOUSE_OUT, _cb_focus_out_up_button, this); + elm_object_part_content_set(m_nav_layout, "up_button", m_upArrow); } void ZoomUI::clearItems() @@ -159,6 +182,7 @@ void ZoomUI::clearItems() void ZoomUI::setImageFile(Evas_Object* obj, int direction, bool focused) { + BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); switch (direction) { case LEFT: elm_image_file_set(obj, m_edjFilePath.c_str(), focused ? "ic_zoom_indicator_left_foc.png" : "ic_zoom_indicator_left_nor.png"); break; @@ -201,6 +225,79 @@ void ZoomUI::_zoom_slider_changed(void *data, Evas_Object *obj, void *event_info } } +void ZoomUI::_zoom_value_confirmed(void* data, Evas*, Evas_Object* obj, void* event_info) +{ + BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); + Evas_Event_Key_Down* ev = static_cast(event_info); + + if (!data || !ev || !ev->keyname) + return; + + ZoomUI* self = static_cast(data); + if (std::string(ev->keyname) == "Return") { + int val = (int)elm_slider_value_get(self->m_zoom_slider); + BROWSER_LOGD("[%s:%d] val: %d", __PRETTY_FUNCTION__, __LINE__, val); + if (val > 3) { + BROWSER_LOGD("[%s:%d] value is greater than 3", __PRETTY_FUNCTION__, __LINE__); + evas_object_show(self->m_nav_layout); + } else { + BROWSER_LOGD("[%s:%d] value is smaller or equal to 3", __PRETTY_FUNCTION__, __LINE__); + evas_object_hide(self->m_nav_layout); + } + evas_object_hide(self->m_zoom_menu); + } +} + +Eina_Bool ZoomUI::_key_down_cb(void* data, int type, void* event_info) +{ + BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); + Ecore_Event_Key* ev = static_cast(event_info); + + if (!data || !ev || !ev->keyname) + return EINA_FALSE; + + ZoomUI* self = static_cast(data); + if (std::string(ev->keyname) == "Left") { + _left_button_clicked(data, self->m_leftArrow, event_info); + _cb_focus_in_left_button(data, nullptr, self->m_leftArrow, event_info); + } else if (std::string(ev->keyname) == "Right") { + _right_button_clicked(data, self->m_rightArrow, event_info); + _cb_focus_in_right_button(data, nullptr, self->m_rightArrow, event_info); + } else if (std::string(ev->keyname) == "Up") { + _up_button_clicked(data, self->m_upArrow, event_info); + _cb_focus_in_up_button(data, nullptr, self->m_upArrow, event_info); + } else if (std::string(ev->keyname) == "Down") { + _down_button_clicked(data, self->m_downArrow, event_info); + _cb_focus_in_down_button(data, nullptr, self->m_downArrow, event_info); + } else + return EINA_FALSE; + + return EINA_TRUE; +} + +Eina_Bool ZoomUI::_key_up_cb(void* data, int type, void* event_info) +{ + BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); + Ecore_Event_Key* ev = static_cast(event_info); + + if (!data || !ev || !ev->keyname) + return EINA_FALSE; + + ZoomUI* self = static_cast(data); + if (std::string(ev->keyname) == "Left") { + _cb_focus_out_left_button(data, nullptr, self->m_leftArrow, event_info); + } else if (std::string(ev->keyname) == "Right") { + _cb_focus_out_right_button(data, nullptr, self->m_rightArrow, event_info); + } else if (std::string(ev->keyname) == "Up") { + _cb_focus_out_up_button(data, nullptr, self->m_upArrow, event_info); + } else if (std::string(ev->keyname) == "Down") { + _cb_focus_out_down_button(data, nullptr, self->m_downArrow, event_info); + } else + return EINA_FALSE; + + return EINA_TRUE; +} + void ZoomUI::_left_button_clicked(void * data, Evas_Object * obj, void * event_info) { BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__); @@ -317,6 +414,23 @@ void ZoomUI::_cb_focus_out_down_button(void * data, Evas *, Evas_Object *obj, vo } } +int ZoomUI::calculateSliderValue(int zoom) +{ + BROWSER_LOGD("[%s:%d] zoom factor: %d", __PRETTY_FUNCTION__, __LINE__, zoom); + if (zoom >= ZOOM_300) + return 6; + else if (zoom >= ZOOM_200) + return 5; + else if (zoom >= ZOOM_150) + return 4; + else if (zoom >= ZOOM_100) + return 3; + else if (zoom >= ZOOM_75) + return 2; + else if (zoom < ZOOM_75) + return 1; +} + } } diff --git a/services/ZoomUI/ZoomUI.h b/services/ZoomUI/ZoomUI.h index e6206a8..a2966f2 100644 --- a/services/ZoomUI/ZoomUI.h +++ b/services/ZoomUI/ZoomUI.h @@ -44,16 +44,19 @@ public: std::string getName(); void show(Evas_Object* parent); + void showNavigation(); void clearItems(); boost::signals2::signal closeZoomUI; boost::signals2::signal setZoom; + boost::signals2::signal getZoom; boost::signals2::signal scrollView; private: void createLayout(Evas_Object* parent); void createZoomSlider(); void createNavigationButtons(); void setImageFile(Evas_Object* obj, int direction, bool focused); + int calculateSliderValue(int zoom); static void _zoom_slider_changed(void * data, Evas_Object * obj, void * event_info); static void _left_button_clicked(void * data, Evas_Object * obj, void * event_info); @@ -69,12 +72,22 @@ private: static void _cb_focus_out_up_button(void * data, Evas *, Evas_Object *obj, void *); static void _cb_focus_in_down_button(void * data, Evas *, Evas_Object *obj, void *); static void _cb_focus_out_down_button(void * data, Evas *, Evas_Object *obj, void *); + static Eina_Bool _key_down_cb(void* data, int type, void* event_info); + static Eina_Bool _key_up_cb(void* data, int type, void* event_info); + static void _zoom_value_confirmed(void* data, Evas* e, Evas_Object* obj, void* event_info); std::string m_edjFilePath; Evas_Object* m_layout; Evas_Object* m_zoom_slider; + Evas_Object* m_zoom_menu; Evas_Object* m_nav_layout; Evas_Object* m_parent; + Evas_Object* m_leftArrow; + Evas_Object* m_rightArrow; + Evas_Object* m_upArrow; + Evas_Object* m_downArrow; + Ecore_Event_Handler* m_keyDownHandler; + Ecore_Event_Handler* m_keyUpHandler; int m_current_translation_x; int m_current_translation_y; diff --git a/services/ZoomUI/edc/ZoomUI.edc b/services/ZoomUI/edc/ZoomUI.edc index e3da119..07edd64 100644 --- a/services/ZoomUI/edc/ZoomUI.edc +++ b/services/ZoomUI/edc/ZoomUI.edc @@ -31,7 +31,6 @@ RESOURCE_IMAGE_LOSSY("ic_zoom_indicator_up_nor.png"); group { name: "zoom-layout"; - data.item: "contents" "close_button"; parts { @@ -39,7 +38,61 @@ RESOURCE_IMAGE_LOSSY("ic_zoom_indicator_up_nor.png"); type: RECT; mouse_events: 1; description { state: "default" 0.0; - color: 0 0 0 50; + color: 0 0 0 0; + visible: 0; + min: WIDTH HEIGHT; + max: WIDTH HEIGHT; + align: 0.0 0.0; + rel1 {relative: 0.0 0.0; offset: 0 104;} + rel2 {relative: 1.0 1.0;} + } + } + + part { + name: "zoom_menu"; + type : SWALLOW; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: 700 300; + max: 700 300; + align: 0.0 0.0; + fixed: 1 1; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 1.0 1.0; to: "bg"; } + } + } + + part { + name: "nav_buttons"; + type : SWALLOW; + scale: 1; + description { + state: "default" 0.0; + visible: 1; + min: WIDTH HEIGHT; + max: WIDTH HEIGHT; + align: 0.0 0.0; + fixed: 0 0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 1.0 1.0; to: "bg"; } + } + } + + } + } + + group { + name: "zoom-menu"; + + parts { + + part { name: "bg"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; visible: 1; min: WIDTH HEIGHT; max: WIDTH HEIGHT; @@ -171,24 +224,6 @@ RESOURCE_IMAGE_LOSSY("ic_zoom_indicator_up_nor.png"); } } } - - - part { - name: "nav_buttons"; - type : SWALLOW; - scale: 1; - description { - state: "default" 0.0; - visible: 1; - min: WIDTH HEIGHT; - max: WIDTH HEIGHT; - align: 0.0 0.0; - fixed: 0 0; - rel1 { relative: 0.0 0.0; to: "bg"; } - rel2 { relative: 1.0 1.0; to: "bg"; } - } - } - } } @@ -198,6 +233,20 @@ RESOURCE_IMAGE_LOSSY("ic_zoom_indicator_up_nor.png"); max: WIDTH HEIGHT; data.item: "contents" "left_button right_button up_button down_button"; parts { + + part { name: "bg"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + visible: 0; + min: WIDTH HEIGHT; + max: WIDTH HEIGHT; + align: 0.0 0.0; + rel1 {relative: 0.0 0.0; offset: 0 104;} + rel2 {relative: 1.0 1.0;} + } + } + part { name: "left_button"; type: SWALLOW; @@ -210,8 +259,8 @@ RESOURCE_IMAGE_LOSSY("ic_zoom_indicator_up_nor.png"); fixed: 1 1; min: 90 90; max: 90 90; - rel1 { relative: 0.0 0.0; offset: 38 0;} - rel2 { relative: 1.0 1.0;} + rel1 {to: "bg"; relative: 0.0 0.0; offset: 38 0;} + rel2 {to: "bg"; relative: 1.0 1.0;} } } part { @@ -226,8 +275,8 @@ RESOURCE_IMAGE_LOSSY("ic_zoom_indicator_up_nor.png"); fixed: 1 1; min: 90 90; max: 90 90; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; offset: -38 0; } + rel1 {to: "bg"; relative: 0.0 0.0; } + rel2 {to: "bg"; relative: 1.0 1.0; offset: -38 0; } } } part { @@ -242,8 +291,8 @@ RESOURCE_IMAGE_LOSSY("ic_zoom_indicator_up_nor.png"); fixed: 1 1; min: 90 90; max: 90 90; - rel1 { relative: 0.0 0.0; offset: 0 38; } - rel2 { relative: 1.0 1.0; } + rel1 {to: "bg"; relative: 0.0 0.0; offset: 0 38; } + rel2 {to: "bg"; relative: 1.0 1.0; } } } part { @@ -258,8 +307,8 @@ RESOURCE_IMAGE_LOSSY("ic_zoom_indicator_up_nor.png"); fixed: 1 1; min: 90 90; max: 90 90; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; offset: 0 -38; } + rel1 {to: "bg"; relative: 0.0 0.0; } + rel2 {to: "bg"; relative: 1.0 1.0; offset: 0 -38; } } } }