2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FUiCtrl_ScrollPanel.cpp
20 * @brief This is the implementation file for the %_ScrollPanel class.
24 #include <FBaseErrorDefine.h>
25 #include <FBaseSysLog.h>
26 #include <FUiIScrollPanelEventListener.h>
27 #include <FUiAnimVisualElementAnimation.h>
28 #include <FUiAnimVisualElementValueAnimation.h>
29 #include "FUiAnim_VisualElement.h"
30 #include "FUi_TouchFlickGestureDetector.h"
31 #include "FUiCtrl_UiScrollEvent.h"
32 #include "FUiCtrl_UiScrollEventArg.h"
33 #include "FUiCtrl_Scroll.h"
34 #include "FUiCtrl_ScrollPanelPresenter.h"
35 #include "FUiCtrl_ScrollPanel.h"
37 using namespace Tizen::Base;
38 using namespace Tizen::Graphics;
39 using namespace Tizen::Ui::Animations;
43 const int SCROLL_PANEL_ANIMATION_DEFAULT_REPEAT_COUNT = 1;
46 namespace Tizen { namespace Ui { namespace Controls
48 _ScrollPanel::_ScrollPanel(void)
50 , __pScrollPanelPresenter(null)
51 , __pScrollEvent(null)
52 , __pCoreScrollPanelEvent(null)
53 , __pGestureFlick(null)
54 , __pKeyPadBindingControl(null)
55 , __scrollDirection(SCROLL_PANEL_SCROLL_DIRECTION_VERTICAL)
56 , __scrollInputMode(SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION)
57 , __autoResizingEnable(true)
58 , __pageScrollEnabled(false)
59 , __pageScrollAlignSize(FloatDimension(0.0f, 0.0f))
60 , __pageScrollMoveOnlyOnePageOnFlick(true)
61 , __scrollBarVisible(true)
62 , __pHorizontalScrollBar(null)
63 , __pVerticalScrollBar(null)
64 , __pScrollingAnimation(null)
65 , __fixingClientBoundsEnable(true)
71 _ScrollPanel::~_ScrollPanel(void)
73 _ControlManager* pControlManager = _ControlManager::GetInstance();
74 SysTryReturnVoidResult(NID_UI_CTRL, pControlManager, E_SYSTEM, "[%s] System error occurred.", GetErrorMessage(E_SYSTEM));
76 if (GetVisualElement() != null)
78 __pScrollingAnimation->SetVisualElementAnimationTickEventListener(null);
79 __pScrollingAnimation->SetVisualElementAnimationStatusEventListener(null);
80 GetVisualElement()->RemoveAllAnimations();
83 if (__pGestureFlick != null)
85 __pGestureFlick->RemoveGestureListener(*this);
86 pControlManager->RemoveGestureDetector(*__pGestureFlick);
87 RemoveGestureDetector(*__pGestureFlick);
88 delete __pGestureFlick;
89 __pGestureFlick = null;
92 delete __pScrollEvent;
93 __pScrollEvent = null;
95 if (__pVerticalScrollBar != null && IsAncestorOf(*__pVerticalScrollBar))
97 DetachSystemChild(*__pVerticalScrollBar);
99 delete __pVerticalScrollBar;
100 __pVerticalScrollBar = null;
102 if (__pHorizontalScrollBar != null && IsAncestorOf(*__pHorizontalScrollBar))
104 DetachSystemChild(*__pHorizontalScrollBar);
106 delete __pHorizontalScrollBar;
107 __pHorizontalScrollBar = null;
109 delete __pScrollingAnimation;
110 __pScrollingAnimation = null;
112 _Panel::SetPanelPresenter(null);
113 delete __pScrollPanelPresenter;
114 __pScrollPanelPresenter = null;
118 _ScrollPanel::CreateScrollPanelN(const FloatRectangle& rect, ScrollPanelScrollDirection scrollDirection, bool autoResizingEnable, bool pageScrollEnabled)
121 result r = E_SUCCESS;
123 _Scroll* pHorizontalScrollBar = null;
124 _Scroll* pVerticalScrollBar = null;
126 FloatRectangle areaBounds(0.0f, 0.0f, rect.width, rect.height);
128 _ScrollPanel* pScrollPanel = new (std::nothrow) _ScrollPanel;
129 SysTryReturn(NID_UI_CTRL, pScrollPanel != null, null, E_OUT_OF_MEMORY, "[%s] The memory is insufficient.", GetErrorMessage(E_OUT_OF_MEMORY));
131 pScrollPanel->SetScrollDirection(scrollDirection);
132 pScrollPanel->SetScrollAreaAutoResizingEnabled(autoResizingEnable);
133 pScrollPanel->SetPageScrollEnabled(pageScrollEnabled);
135 _ScrollPanelPresenter* pPresenter = new (std::nothrow) _ScrollPanelPresenter;
136 SysTryCatch(NID_UI_CTRL, pPresenter != null, r = E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] The memory is insufficient.", GetErrorMessage(E_OUT_OF_MEMORY));
138 r = pPresenter->Initialize(*pScrollPanel);
139 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
141 r = pScrollPanel->Initialize(*pPresenter);
142 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
144 pPresenter->SetScrollAreaBoundsInternal(areaBounds);
146 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
148 if (scrollDirection == SCROLL_PANEL_SCROLL_DIRECTION_VERTICAL && rect.height > 0.0f)
150 pVerticalScrollBar = _Scroll::CreateScrollN(*pScrollPanel,
151 SCROLL_DIRECTION_VERTICAL,
160 SysTryCatch(NID_UI_CTRL, r ==E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
162 pVerticalScrollBar->EnableScrollingEffect(true);
164 pVerticalScrollBar->AddScrollEventListener(*pScrollPanel);
166 SysTryCatch(NID_UI_CTRL, r ==E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
168 r = pScrollPanel->AttachSystemChild(*pVerticalScrollBar);
169 SysTryCatch(NID_UI_CTRL, r ==E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
171 pScrollPanel->SetVerticalScrollBar(pVerticalScrollBar);
174 if (scrollDirection == SCROLL_PANEL_SCROLL_DIRECTION_HORIZONTAL && rect.width > 0.0f)
176 pHorizontalScrollBar = _Scroll::CreateScrollN(*pScrollPanel,
177 SCROLL_DIRECTION_HORIZONTAL,
186 SysTryCatch(NID_UI_CTRL, r ==E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
188 pHorizontalScrollBar->EnableScrollingEffect(true);
190 pHorizontalScrollBar->AddScrollEventListener(*pScrollPanel);
192 SysTryCatch(NID_UI_CTRL, r ==E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
194 r = pScrollPanel->AttachSystemChild(*pHorizontalScrollBar);
195 SysTryCatch(NID_UI_CTRL, r ==E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
197 pScrollPanel->SetHorizontalScrollBar(pHorizontalScrollBar);
200 r = pScrollPanel->SetBounds(rect);
201 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
206 if (pHorizontalScrollBar != null && pScrollPanel->IsAncestorOf(*pHorizontalScrollBar))
208 pScrollPanel->DetachSystemChild(*pHorizontalScrollBar);
210 delete pHorizontalScrollBar;
211 pScrollPanel->__pHorizontalScrollBar = null;
213 if (pVerticalScrollBar != null && pScrollPanel->IsAncestorOf(*pVerticalScrollBar))
215 pScrollPanel->DetachSystemChild(*pVerticalScrollBar);
217 delete pVerticalScrollBar;
218 pScrollPanel->__pVerticalScrollBar = null;
221 pScrollPanel->__pScrollPanelPresenter = null;
230 _ScrollPanel::Initialize(const _ScrollPanelPresenter& presenter, bool acquireHandle)
234 result r = _Panel::Initialize(presenter);
235 SysTryReturn(NID_UI_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
237 SetScrollPanelPresenter(&presenter);
239 __pScrollingAnimation = new (std::nothrow) VisualElementValueAnimation;
240 SysTryReturn(NID_UI_CTRL, __pScrollingAnimation != null, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] The memory is insufficient.", GetErrorMessage(E_OUT_OF_MEMORY));
242 __pScrollingAnimation->SetRepeatCount(SCROLL_PANEL_ANIMATION_DEFAULT_REPEAT_COUNT);
243 __pScrollingAnimation->SetTimingFunction(VisualElementAnimation::GetTimingFunctionByName("EaseOut"));
245 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
247 __pScrollingAnimation->SetVisualElementAnimationTickEventListener(this);
249 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
251 __pScrollingAnimation->SetVisualElementAnimationStatusEventListener(this);
253 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
255 __pGestureFlick = new (std::nothrow) _TouchFlickGestureDetector;
256 SysTryCatch(NID_UI_CTRL, __pGestureFlick != null, , E_OUT_OF_MEMORY, "[%s] The memory is insufficient.", GetErrorMessage(E_OUT_OF_MEMORY));
258 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
265 r = AddGestureDetector(*__pGestureFlick);
266 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
268 r = __pGestureFlick->AddGestureListener(*this);
269 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
274 delete __pGestureFlick;
275 __pGestureFlick = null;
277 delete __pScrollingAnimation;
278 __pScrollingAnimation = null;
285 _ScrollPanel::SetScrollPanelPresenter(const _ScrollPanelPresenter* presenter)
289 _Panel::SetPanelPresenter(presenter);
290 __pScrollPanelPresenter = const_cast <_ScrollPanelPresenter*>(presenter);
296 _ScrollPanel::OnDraw(void)
300 if (__pScrollPanelPresenter == null)
305 result r = __pScrollPanelPresenter->Draw();
306 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
310 _ScrollPanel::OnBoundsChanging(const Tizen::Graphics::FloatRectangle& bounds)
314 return __pScrollPanelPresenter->OnBoundsChanging(bounds);
318 _ScrollPanel::OnBoundsChanged(void)
322 if (__pScrollPanelPresenter == null)
327 __pScrollPanelPresenter->OnBoundsChanged();
331 _ScrollPanel::OnChildAttached(const _Control& child)
335 if (__pScrollPanelPresenter == null)
340 __pScrollPanelPresenter->OnChildAttached(child);
344 _ScrollPanel::OnChildDetached(const _Control& child)
348 if (__pScrollPanelPresenter == null)
353 __pScrollPanelPresenter->OnChildDetached(child);
357 _ScrollPanel::OnChildBoundsChanged(const _Control& child)
361 if (__pScrollPanelPresenter == null)
366 __pScrollPanelPresenter->OnChildBoundsChanged(child);
370 _ScrollPanel::OnFlickGestureDetected(_TouchFlickGestureDetector& gesture)
374 return __pScrollPanelPresenter->OnFlickGestureDetected(gesture);
378 _ScrollPanel::OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture)
382 return __pScrollPanelPresenter->OnFlickGestureCanceled(gesture);
386 _ScrollPanel::OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element)
390 return __pScrollPanelPresenter->OnAccessibilityFocusMovedNext(control, element);
394 _ScrollPanel::OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element)
398 return __pScrollPanelPresenter->OnAccessibilityFocusMovedPrevious(control, element);
402 _ScrollPanel::OnAccessibilityReadingElement(const _AccessibilityContainer& control, const _AccessibilityElement& element)
406 return __pScrollPanelPresenter->OnAccessibilityReadingElement(control, element);
409 _ScrollPanel::OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element)
413 return __pScrollPanelPresenter->OnAccessibilityReadElement(control, element);
417 _ScrollPanel::OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element)
421 return __pScrollPanelPresenter->OnAccessibilityFocusIn(control, element);
425 _ScrollPanel::OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element)
429 return __pScrollPanelPresenter->OnAccessibilityFocusOut(control, element);
433 _ScrollPanel::OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element)
437 return __pScrollPanelPresenter->OnAccessibilityActionPerformed(control, element);
440 _ScrollPanel::OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element)
445 _ScrollPanel::OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element)
451 _ScrollPanel::OnChildControlFocusMoved(const _Control& control)
455 __pScrollPanelPresenter->OnChildControlFocusMoved(control);
459 _ScrollPanel::OnDescendantControlFocusMoved(const _Control& control)
463 __pScrollPanelPresenter->OnDescendantControlFocusMoved(control);
467 _ScrollPanel::OnAccessibilityItemRefreshed(const _AccessibilityContainer& control, const _AccessibilityElement& element, _AccessibilityFocusDirection direction)
471 return __pScrollPanelPresenter->OnAccessibilityItemRefreshed(control, element, direction);
473 _UiTouchEventDelivery
474 _ScrollPanel::OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
478 return __pScrollPanelPresenter->OnPreviewTouchPressed(source, touchinfo);
481 _UiTouchEventDelivery
482 _ScrollPanel::OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
486 return __pScrollPanelPresenter->OnPreviewTouchMoved(source, touchinfo);
489 _UiTouchEventDelivery
490 _ScrollPanel::OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
494 return __pScrollPanelPresenter->OnPreviewTouchReleased(source, touchinfo);
497 _UiTouchEventDelivery
498 _ScrollPanel::OnPreviewTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
502 return __pScrollPanelPresenter->OnPreviewTouchCanceled(source, touchinfo);
506 _ScrollPanel::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
510 return __pScrollPanelPresenter->OnTouchPressed(source, touchinfo);
514 _ScrollPanel::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
518 return __pScrollPanelPresenter->OnTouchMoved(source, touchinfo);
522 _ScrollPanel::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
526 return __pScrollPanelPresenter->OnTouchReleased(source, touchinfo);
530 _ScrollPanel::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
534 return __pScrollPanelPresenter->OnTouchCanceled(source, touchinfo);
538 _ScrollPanel::OnTouchMoveHandled(const _Control& control)
542 return __pScrollPanelPresenter->OnTouchMoveHandled(control);
546 _ScrollPanel::OnScrollEndReached(_Control& source, ScrollEndEvent type)
550 __pScrollPanelPresenter->OnScrollEndReached(source, type);
554 _ScrollPanel::OnScrollPositionChanged(_Control& source, float scrollPosition)
558 __pScrollPanelPresenter->OnScrollPositionChanged(source, scrollPosition);
562 _ScrollPanel::OnScrollStopped(_Control& source)
566 __pScrollPanelPresenter->OnScrollStopped(source);
570 _ScrollPanel::OnScrollJumpToTop(_Control& source)
574 __pScrollPanelPresenter->OnScrollJumpToTop(source);
578 _ScrollPanel::OnVisualElementAnimationStarted(const VisualElementAnimation& animation, const String& keyName, VisualElement& target)
582 if (__pScrollPanelPresenter == null)
587 __pScrollPanelPresenter->OnVisualElementAnimationStarted(animation, keyName, target);
591 _ScrollPanel::OnVisualElementAnimationRepeated(const VisualElementAnimation& animation, const String& keyName, VisualElement& target, long currentRepeatCount)
595 if (__pScrollPanelPresenter == null)
600 __pScrollPanelPresenter->OnVisualElementAnimationRepeated(animation, keyName, target, currentRepeatCount);
604 _ScrollPanel::OnVisualElementAnimationFinished(const VisualElementAnimation& animation, const String& keyName, VisualElement& target, bool completedNormally)
608 if (__pScrollPanelPresenter == null)
613 __pScrollPanelPresenter->OnVisualElementAnimationFinished(animation, keyName, target, completedNormally);
617 _ScrollPanel::OnTickOccurred(const VisualElementAnimation& animation, const String& keyName, VisualElement& target, const Variant& currentValue)
621 __pScrollPanelPresenter->OnTickOccurred(animation, keyName, target, currentValue);
625 _ScrollPanel::IsScrollAreaAutoResizingEnabled(void) const
629 return __autoResizingEnable;
633 _ScrollPanel::SetScrollAreaAutoResizingEnabled(bool autoResizingEnable)
637 __autoResizingEnable = autoResizingEnable;
641 _ScrollPanel::GetScrollAreaBounds(void) const
645 return __pScrollPanelPresenter->GetScrollAreaBounds();
649 _ScrollPanel::SetClientAreaHeight(float height)
653 return __pScrollPanelPresenter->SetClientAreaHeight(height);
657 _ScrollPanel::SetClientAreaWidth(float width)
661 return __pScrollPanelPresenter->SetClientAreaWidth(width);
665 _ScrollPanel::SetScrollAreaBounds(FloatRectangle& bounds)
669 return __pScrollPanelPresenter->SetScrollAreaBounds(bounds);
673 _ScrollPanel::UpdateClientBounds(const FloatDimension& size, FloatRectangle& clientBounds)
677 if (IsFixingClientBoundsEnabled())
679 __pScrollPanelPresenter->UpdateClientBounds(size, clientBounds);
683 _Panel::UpdateClientBounds(size, clientBounds);
688 _ScrollPanel::IsPageScrollEnabled(void) const
692 return __pageScrollEnabled;
696 _ScrollPanel::SetPageScrollEnabled(bool enable)
700 __pageScrollEnabled = enable;
704 _ScrollPanel::GetPageScrollAlignSize(void) const
708 return __pageScrollAlignSize;
712 _ScrollPanel::SetPageScrollAlignSize(FloatDimension size)
716 __pageScrollAlignSize = size;
720 _ScrollPanel::IsPageScrollFlickMoveLimitedOnePage(void) const
722 return __pageScrollMoveOnlyOnePageOnFlick;
726 _ScrollPanel::SetScrollPosition(float position, bool withAnimation)
730 __pScrollPanelPresenter->SetScrollPosition(position, withAnimation);
734 _ScrollPanel::SetScrollPosition(Tizen::Graphics::FloatPoint position, bool withAnimation)
738 __pScrollPanelPresenter->SetScrollPosition(position, withAnimation);
742 _ScrollPanel::GetScrollPosition(void) const
746 return __pScrollPanelPresenter->GetScrollPosition();
750 _ScrollPanel::GetVerticalScrollPosition(void) const
754 return __pScrollPanelPresenter->GetVerticalScrollPosition();
758 _ScrollPanel::SetVerticalScrollPosition(float position)
762 __pScrollPanelPresenter->SetVerticalScrollPosition(position);
766 _ScrollPanel::GetHorizontalScrollPosition(void) const
770 return __pScrollPanelPresenter->GetHorizontalScrollPosition();
774 _ScrollPanel::SetHorizontalScrollPosition(float position)
778 __pScrollPanelPresenter->SetHorizontalScrollPosition(position);
782 _ScrollPanel::CalculatePagingScrollPosition(float position) const
786 return __pScrollPanelPresenter->CalculatePagingScrollPosition(position);
790 _ScrollPanel::ScrollToControl(const _Control& source, bool recursive)
794 return __pScrollPanelPresenter->ScrollToControl(source, recursive);
798 _ScrollPanel::ScrollToTop(void) const
802 __pScrollPanelPresenter->ScrollToTop();
806 _ScrollPanel::ScrollToBottom(void) const
810 __pScrollPanelPresenter->ScrollToBottom();
814 _ScrollPanel::ScrollToLeft(void) const
818 __pScrollPanelPresenter->ScrollToLeft();
822 _ScrollPanel::ScrollToRight(void) const
826 __pScrollPanelPresenter->ScrollToRight();
830 _ScrollPanel::AddScrollEventListener(const _IScrollEventListener& listener)
833 result r = E_SUCCESS;
835 if (__pScrollEvent == null)
837 // Create scroll event
838 __pScrollEvent = new (std::nothrow) _UiScrollEvent;
839 SysTryReturnVoidResult(NID_UI_CTRL, __pScrollEvent != null, E_OUT_OF_MEMORY, "[%s] The memory is insufficient.", GetErrorMessage(E_OUT_OF_MEMORY));
841 r = __pScrollEvent->Construct(*this);
842 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
845 r = __pScrollEvent->AddListener((const Tizen::Base::Runtime::IEventListener &)listener);
846 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
850 _ScrollPanel::RemoveScrollEventListener(const _IScrollEventListener& listener)
853 SysTryReturnVoidResult(NID_UI_CTRL, __pScrollEvent != null, E_SYSTEM, "[%s] __pScrollEvent is invalid pointer.", GetErrorMessage(E_SYSTEM));
855 result r = __pScrollEvent->RemoveListener((const Tizen::Base::Runtime::IEventListener &)listener);
856 SysTryReturnVoidResult(NID_UI_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
860 _ScrollPanel::SetScrollPanelEvent(const _ScrollPanelEvent* pScrollPanelEvent)
864 __pCoreScrollPanelEvent = const_cast<_ScrollPanelEvent*>(pScrollPanelEvent);
868 _ScrollPanel::GetScrollPanelEvent(void) const
872 return __pCoreScrollPanelEvent;
876 _ScrollPanel::GetControlKeypadBinding(void) const
880 return __pKeyPadBindingControl;
884 _ScrollPanel::SetControlKeypadBinding(const _Control* pControl)
888 // pControl can be null
889 __pKeyPadBindingControl = pControl;
892 ScrollPanelScrollDirection
893 _ScrollPanel::GetScrollDirection(void) const
897 return __scrollDirection;
901 _ScrollPanel::SetScrollDirection(ScrollPanelScrollDirection direction)
905 __scrollDirection = direction;
909 _ScrollPanel::GetScrollInputMode(void) const
913 return __scrollInputMode;
917 _ScrollPanel::SetScrollInputMode(ScrollInputMode mode)
921 __scrollInputMode = mode;
925 _ScrollPanel::IsScrollBarVisible(void) const
929 return __scrollBarVisible;
933 _ScrollPanel::SetScrollBarVisible(bool scrollBarVisible)
937 __scrollBarVisible = scrollBarVisible;
941 _ScrollPanel::GetScrollBar(void) const
945 ScrollPanelScrollDirection direction = GetScrollDirection();
946 if (direction == SCROLL_PANEL_SCROLL_DIRECTION_HORIZONTAL)
948 return GetHorizontalScrollBar();
952 return GetVerticalScrollBar();
956 _ScrollPanel::SetScrollBar(const _Scroll* pScrollBar)
960 ScrollPanelScrollDirection direction = GetScrollDirection();
961 if (direction == SCROLL_PANEL_SCROLL_DIRECTION_HORIZONTAL)
963 SetHorizontalScrollBar(pScrollBar);
967 SetVerticalScrollBar(pScrollBar);
972 _ScrollPanel::GetVerticalScrollBar(void) const
976 return __pVerticalScrollBar;
980 _ScrollPanel::SetVerticalScrollBar(const _Scroll* pVerticalScrollBar)
984 __pVerticalScrollBar = const_cast<_Scroll*>(pVerticalScrollBar);
988 _ScrollPanel::GetHorizontalScrollBar(void) const
992 return __pHorizontalScrollBar;
996 _ScrollPanel::SetHorizontalScrollBar(const _Scroll* pHorizontalScrollBar)
1000 __pHorizontalScrollBar = const_cast<_Scroll*>(pHorizontalScrollBar);
1004 _ScrollPanel::IsFixingClientBoundsEnabled(void) const
1006 return __fixingClientBoundsEnable;
1010 _ScrollPanel::SetFixingClientBoundsEnabled(bool enable)
1012 __fixingClientBoundsEnable = enable;
1016 _ScrollPanel::FireOnScrollEndEvent(ScrollEndEvent scrollEndEventType)
1020 if (__pScrollEvent == null)
1025 _UiScrollEventArg* pEventArg = _UiScrollEventArg::GetScrollEventArgN(*this, scrollEndEventType);
1026 result r = GetLastResult();
1027 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1029 __pScrollEvent->Fire(*pEventArg);
1039 _ScrollPanel::FireOnScrollPositionChangedEvent(void)
1043 return FireOnScrollPositionChangedEvent(__pScrollPanelPresenter->GetScrollPosition());
1047 _ScrollPanel::FireOnScrollPositionChangedEvent(float scrollPosition)
1051 if (__pScrollEvent == null)
1056 _UiScrollEventArg* pEventArg = _UiScrollEventArg::GetScrollEventArgN(*this, scrollPosition);
1057 result r = GetLastResult();
1058 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1060 __pScrollEvent->Fire(*pEventArg);
1070 _ScrollPanel::FireOnScrollStoppedEvent(void)
1074 if (__pScrollEvent == null)
1079 _UiScrollEventArg* pEventArg = _UiScrollEventArg::GetScrollEventArgN(*this);
1080 result r = GetLastResult();
1081 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
1083 __pScrollEvent->Fire(*pEventArg);
1092 VisualElementValueAnimation*
1093 _ScrollPanel::GetScrollingAnimation(void) const
1097 return __pScrollingAnimation;
1101 _ScrollPanel::FireScrollPanelEvent(const _Control& source, CoreScrollPanelStatus scrollPanelStatus)
1105 if (GetControlKeypadBinding() != &source)
1107 if (__pCoreScrollPanelEvent != null)
1109 Tizen::Base::Runtime::IEventArg* pEventArg = _ScrollPanelEvent::CreateScrollPanelEventArgN(scrollPanelStatus);
1110 result r = GetLastResult();
1111 SysTryReturn(NID_UI_CTRL, pEventArg != null, r, r, "[%s] Propagating.", GetErrorMessage(r));
1113 __pCoreScrollPanelEvent->Fire(*pEventArg);
1120 }}} // Tizen::Ui::Controls