_ScrollPanelImpl::_ScrollPanelImpl(Control* pPublic, _Control* pCore, Layout* pPublicPortraitLayout, Layout* pPublicLandscapeLayout)
: _PanelImpl(pPublic, pCore, pPublicPortraitLayout, pPublicLandscapeLayout)
, __pScrollEvent(null)
+ , __detached(false)
{
// nothing
}
return static_cast <_ScrollPanel&>(_ControlImpl::GetCore());
}
+result
+_ScrollPanelImpl::OnDetachingFromMainTree(void)
+{
+ __detached = true;
+
+ return _PanelImpl::OnDetachingFromMainTree();
+}
+
void
_ScrollPanelImpl::AddScrollEventListener(IScrollEventListener& listener)
{
void
_ScrollPanelImpl::OnScrollEndReached(_Control& source, ScrollEndEvent type)
{
+ if (__detached)
+ {
+ return;
+ }
+
if (__pScrollEvent == null)
{
return;
void
_ScrollPanelImpl::OnScrollPositionChanged(_Control& source, float scrollPosition)
{
+ if (__detached)
+ {
+ return;
+ }
+
if (__pScrollEvent == null)
{
return;
void
_ScrollPanelImpl::OnScrollStopped(_Control& source)
{
+ if (__detached)
+ {
+ return;
+ }
+
if (__pScrollEvent == null)
{
return;
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
, __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)
delete __pScrollBarLoadEffectTimer;
__pScrollBarLoadEffectTimer = null;
- delete __pFlickScrollEffectTimer;
- __pFlickScrollEffectTimer = null;
-
delete __pScrollPanelModel;
__pScrollPanelModel = null;
}
}
else
{
- StopFlickScrollEffectTimer();
-
return false;
}
}
result r = GetLastResult();
SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
}
- else if (&timer == __pFlickScrollEffectTimer)
- {
- StopFlickScrollEffectTimer();
- }
}
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)