From c273f60000784b839705b9107b7575f57dbee141 Mon Sep 17 00:00:00 2001 From: Woochan Lee Date: Wed, 6 Apr 2016 15:52:57 +0900 Subject: [PATCH] Add scroller in viewmgr. Change-Id: I5a5015cb38d35ba72c59f1e1feab2fdcd683e486 --- src/include/efl/ui_base_viewmgr.h | 20 ++++++++++++++++++-- src/lib/efl/ui_base_viewmgr.cpp | 40 +++++++++++++++++++++++++++++++-------- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/include/efl/ui_base_viewmgr.h b/src/include/efl/ui_base_viewmgr.h index 06e67a6..4ec4b35 100644 --- a/src/include/efl/ui_base_viewmgr.h +++ b/src/include/efl/ui_base_viewmgr.h @@ -51,6 +51,7 @@ class ui_base_viewmgr: public viewmgr::ui_iface_viewmgrsecond; - //Conformant content change to current effect layout and change to hide prev layout. - Elm_Layout *playout = elm_object_part_content_unset(this->conform, "elm.swallow.content"); + //Scroller content change to current effect layout and change to hide prev layout. + Elm_Layout *playout = elm_object_part_content_unset(this->scroller, NULL); evas_object_hide(playout); if (!effect_layout) @@ -81,12 +83,12 @@ Elm_Layout *ui_base_viewmgr::set_transition_layout(string transition_style) //Create and add effect_layouts in map here. //FIXME: If we have to support many effects, this logic should be changed. effect_map.insert(pair("default", this->layout)); - this->create_base_layout(this->get_conformant(), transition_style.c_str()); + this->create_base_layout(this->scroller, transition_style.c_str()); effect_map.insert(pair(transition_style, this->layout)); } else { - elm_object_part_content_set(this->conform, "elm.swallow.content", effect_layout); + elm_object_content_set(this->scroller, effect_layout); this->layout = effect_layout; } @@ -168,6 +170,22 @@ bool ui_base_viewmgr::create_conformant(Elm_Win *win) return true; } +bool ui_base_viewmgr::create_scroller(Elm_Conformant *conform) +{ + Elm_Scroller *scroller = elm_scroller_add(conform); + if (!scroller) return false; + + elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_AUTO); + evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); + + elm_object_content_set(conform, scroller); + + this->scroller = scroller; + + return true; +} + ui_base_viewmgr::ui_base_viewmgr(const char *pkg, ui_base_key_listener *key_listener) : ui_iface_viewmgr(), key_listener(key_listener), transition_style("default") { @@ -226,7 +244,13 @@ ui_base_viewmgr::ui_base_viewmgr(const char *pkg, ui_base_key_listener *key_list return; } - if (!this->create_base_layout(this->conform, "default")) + if (!this->create_scroller(this->conform)) + { + LOGE("Failed to create a scroller (%s)", pkg); + return; + } + + if (!this->create_base_layout(this->scroller, "default")) { LOGE("Failed to create a base layout (%s)", pkg); return; -- 2.7.4