modify IScrollEventListener behavior on ScrollPanel
authorPark Kyoung Hee <kh1979.park@samsung.com>
Fri, 19 Apr 2013 04:39:31 +0000 (13:39 +0900)
committerPark Kyoung Hee <kh1979.park@samsung.com>
Fri, 19 Apr 2013 05:24:02 +0000 (14:24 +0900)
- no more callback after remove ScrollPanel
remove unused variable on core of ScrollPanel

Change-Id: If0816c4b0593811892fd2df70c065c99348a8147
Signed-off-by: Park Kyoung Hee <kh1979.park@samsung.com>
src/ui/controls/FUiCtrl_ScrollPanel.cpp
src/ui/controls/FUiCtrl_ScrollPanelImpl.cpp
src/ui/controls/FUiCtrl_ScrollPanelPresenter.cpp
src/ui/inc/FUiCtrl_ScrollPanelImpl.h
src/ui/inc/FUiCtrl_ScrollPanelPresenter.h

index 8b41756..e01dddf 100644 (file)
@@ -664,7 +664,7 @@ _ScrollPanel::UpdateClientBounds(const FloatDimension& size, FloatRectangle& cli
        }
        else
        {
-               _Control::UpdateClientBounds(size, clientBounds);
+               _Panel::UpdateClientBounds(size, clientBounds);
        }
 }
 
index 6e8db83..0fd1504 100644 (file)
@@ -44,6 +44,7 @@ namespace Tizen { namespace Ui { namespace Controls
 _ScrollPanelImpl::_ScrollPanelImpl(Control* pPublic, _Control* pCore, Layout* pPublicPortraitLayout, Layout* pPublicLandscapeLayout)
        : _PanelImpl(pPublic, pCore, pPublicPortraitLayout, pPublicLandscapeLayout)
        , __pScrollEvent(null)
+       , __detached(false)
 {
        // nothing
 }
@@ -139,6 +140,14 @@ _ScrollPanelImpl::GetCore(void)
        return static_cast <_ScrollPanel&>(_ControlImpl::GetCore());
 }
 
+result
+_ScrollPanelImpl::OnDetachingFromMainTree(void)
+{
+       __detached = true;
+
+       return _PanelImpl::OnDetachingFromMainTree();
+}
+
 void
 _ScrollPanelImpl::AddScrollEventListener(IScrollEventListener& listener)
 {
@@ -214,6 +223,11 @@ _ScrollPanelImpl::RemoveScrollEventListener(IScrollEventListenerF& listener)
 void
 _ScrollPanelImpl::OnScrollEndReached(_Control& source, ScrollEndEvent type)
 {
+       if (__detached)
+       {
+               return;
+       }
+
        if (__pScrollEvent == null)
        {
                return;
@@ -233,6 +247,11 @@ CATCH:
 void
 _ScrollPanelImpl::OnScrollPositionChanged(_Control& source, float scrollPosition)
 {
+       if (__detached)
+       {
+               return;
+       }
+
        if (__pScrollEvent == null)
        {
                return;
@@ -252,6 +271,11 @@ CATCH:
 void
 _ScrollPanelImpl::OnScrollStopped(_Control& source)
 {
+       if (__detached)
+       {
+               return;
+       }
+
        if (__pScrollEvent == null)
        {
                return;
index 8ac030e..cec230e 100644 (file)
@@ -45,14 +45,13 @@ using namespace Tizen::Ui::Animations;
 
 namespace
 {
-const float SCROLL_PANEL_OVERSCROLLING_MAX_DISTANCCE = 100.0f;
-const float SCROLL_PANEL_FIXED_FLICK_AMOUNT = 1000.0f;
+static const float SCROLL_PANEL_OVERSCROLLING_MAX_DISTANCCE = 100.0f;
+static const float SCROLL_PANEL_FIXED_FLICK_AMOUNT = 1000.0f;
 
-const int SCROLL_PANEL_SCROLLING_ANIMATION_DURATION = 1000;
-const int SCROLL_PANEL_SCROLL_BAR_LOAD_EFFECT_TIMER_DURATION = 1000;
-const int SCROLL_PANEL_FLICK_SCROLL_EFFECT_TIMER_DURATION = 2000;
+static const int SCROLL_PANEL_SCROLLING_ANIMATION_DURATION = 1000;
+static const int SCROLL_PANEL_SCROLL_BAR_LOAD_EFFECT_TIMER_DURATION = 1000;
 
-const String SCROLLING_ANIMATION_NAME(L"SCROLL_PANEL_SCROLLING_ANIMATION");
+static const String SCROLLING_ANIMATION_NAME(L"SCROLL_PANEL_SCROLLING_ANIMATION");
 }
 
 namespace Tizen { namespace Ui { namespace Controls
@@ -67,9 +66,6 @@ _ScrollPanelPresenter::_ScrollPanelPresenter(void)
        , __scrollOccured(false)
        , __scrollAnimationRunning(false)
        , __flickRunning(false)
-       , __pFlickScrollEffectTimer(null)
-       , __flickDirection(_FLICK_DIRECTION_NONE)
-       , __flickCount(0)
        , __pScrollBarLoadEffectTimer(null)
        , __scrollBarLoadEffectStatus(_SCROLL_PANEL_SCROLL_BAR_LOAD_EFFECT_UNLOAD)
        , __firstDrawn(false)
@@ -86,9 +82,6 @@ _ScrollPanelPresenter::~_ScrollPanelPresenter(void)
        delete __pScrollBarLoadEffectTimer;
        __pScrollBarLoadEffectTimer = null;
 
-       delete __pFlickScrollEffectTimer;
-       __pFlickScrollEffectTimer = null;
-
        delete __pScrollPanelModel;
        __pScrollPanelModel = null;
 }
@@ -1073,8 +1066,6 @@ _ScrollPanelPresenter::DoFlickGestureRecognized(_TouchFlickGestureDetector& gest
                }
                else
                {
-                       StopFlickScrollEffectTimer();
-
                        return false;
                }
        }
@@ -1241,10 +1232,6 @@ _ScrollPanelPresenter::OnTimerExpired(Tizen::Base::Runtime::Timer& timer)
                result r = GetLastResult();
                SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
        }
-       else if (&timer == __pFlickScrollEffectTimer)
-       {
-               StopFlickScrollEffectTimer();
-       }
 }
 
 void
@@ -1744,42 +1731,6 @@ _ScrollPanelPresenter::StopScrollBarLoadEffectTimer(void)
 }
 
 void
-_ScrollPanelPresenter::StartFlickScrollEffectTimer(void)
-{
-       result r = E_SUCCESS;
-
-       if (__pFlickScrollEffectTimer == null)
-       {
-               __pFlickScrollEffectTimer = new (std::nothrow) Tizen::Base::Runtime::Timer;
-               SysTryReturnVoidResult(NID_UI_CTRL, __pFlickScrollEffectTimer != null, E_OUT_OF_MEMORY, "[%s] The memory is insufficient", GetErrorMessage(E_OUT_OF_MEMORY));
-
-               r = __pFlickScrollEffectTimer->Construct(*this);
-               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
-               r = __pFlickScrollEffectTimer->Start(SCROLL_PANEL_FLICK_SCROLL_EFFECT_TIMER_DURATION);
-               SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-       }
-
-       return;
-
-CATCH:
-       delete __pFlickScrollEffectTimer;
-       __pFlickScrollEffectTimer = null;
-
-       SetLastResult(r);
-}
-
-void
-_ScrollPanelPresenter::StopFlickScrollEffectTimer(void)
-{
-       __flickCount =  0;
-       __flickDirection = _FLICK_DIRECTION_NONE;
-
-       delete __pFlickScrollEffectTimer;
-       __pFlickScrollEffectTimer = null;
-}
-
-void
 _ScrollPanelPresenter::FadeOutScrollBar(void)
 {
        if (!__scrollAnimationRunning)
index 092c049..80d9aa6 100644 (file)
@@ -48,6 +48,9 @@ public:
 public:
        static _ScrollPanelImpl* CreateScrollPanelImplN(ScrollPanel* pPublic, const Tizen::Graphics::FloatRectangle& rect, ScrollPanelScrollDirection scrollDirection, bool autoResizingEnable, Layout* pPublicPortraitLayout = null, Layout* pPublicLandscapeLayout = null);
 
+       // Internal Callbacks
+       virtual result OnDetachingFromMainTree(void);
+
        // scroll operations
        float GetScrollPosition(void) const;
        void SetScrollPosition(float position, bool withAnimation);
@@ -112,7 +115,7 @@ private:
 // scroll event
 private:
        _ScrollEvent* __pScrollEvent;
-
+       bool __detached;
 }; // _ScrollPanelImpl
 
 }}} // Tizen::Ui::Controls
index ebadae1..27f2829 100644 (file)
@@ -219,9 +219,6 @@ private:
        bool DoFlickGestureRecognized(_TouchFlickGestureDetector& gesture);
        bool AccumulateFlickGesture(_FlickDirection direction);
 
-       void StartFlickScrollEffectTimer(void);
-       void StopFlickScrollEffectTimer(void);
-
 // Attribute
 private:
        enum _ScrollPanelScrollBarLoadEffectStatus
@@ -245,10 +242,6 @@ private:
        bool __scrollAnimationRunning;
        bool __flickRunning;
 
-       Tizen::Base::Runtime::Timer* __pFlickScrollEffectTimer;
-       _FlickDirection __flickDirection;
-       int __flickCount;
-
        Tizen::Base::Runtime::Timer* __pScrollBarLoadEffectTimer;
        _ScrollPanelScrollBarLoadEffectStatus __scrollBarLoadEffectStatus;
        bool __firstDrawn;