2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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_FastScroll.cpp
20 * @brief This is the implementation file for the _FastScroll class.
23 #include <FBaseSysLog.h>
24 #include "FUiCtrl_FastScroll.h"
26 using namespace Tizen::Base;
27 using namespace Tizen::Graphics;
28 using namespace Tizen::Ui::Animations;
30 namespace Tizen { namespace Ui { namespace Controls
34 class _FastScrollAccessibilityListener
35 : public _IAccessibilityListener
38 _FastScrollAccessibilityListener(_FastScroll* pFastScroll)
39 : __pFastScroll(pFastScroll)
40 , __onAccessibility(false)
44 virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element){return true;}
45 virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element){return true;}
46 virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element){return true;}
47 virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element){return true;}
48 virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element){return true;}
49 virtual bool OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element){return true;}
50 virtual bool OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element){return true;}
51 virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element)
53 if (__onAccessibility)
55 __onAccessibility = false;
56 __pFastScroll->ReleaseTouchCapture();
60 __onAccessibility = true;
61 __pFastScroll->SetTouchCapture(true);
64 _AccessibilityContainer* pAccessibilityContainer = __pFastScroll->GetAccessibilityContainer();
65 __pFastScroll->AddAccessibilityElement(*pAccessibilityContainer, __onAccessibility);
70 _FastScroll* __pFastScroll;
71 bool __onAccessibility;
74 _FastScroll::_FastScroll(void)
76 , __pAccessibilityListener(null)
80 _FastScroll::~_FastScroll(void)
82 _AccessibilityContainer* pAccessibilityContainer = GetAccessibilityContainer();
83 if (pAccessibilityContainer && pAccessibilityContainer->IsActivated())
85 pAccessibilityContainer->RemoveAllElement();
91 delete __pAccessibilityListener;
92 __pAccessibilityListener = null;
96 _FastScroll::CreateFastScrollN(Tizen::Ui::_Control& parentCtrl)
101 _FastScroll* pFastScroll = new (std::nothrow) _FastScroll();
102 SysTryReturn(NID_UI_CTRL, pFastScroll, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
104 r = pFastScroll->Construct(parentCtrl);
105 SysTryCatch(NID_UI_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
115 _FastScroll::SetIndex(_FastScrollIndex* pIndex)
117 return GetPresenter().SetRootIndex(pIndex);
121 _FastScroll::GetIndex(void) const
123 return GetPresenter().GetRootIndex();
127 _FastScroll::UpdateIndex(void)
129 _AccessibilityContainer* pAccessibilityContainer = GetAccessibilityContainer();
130 if (pAccessibilityContainer && pAccessibilityContainer->IsActivated())
132 GetPresenter().AddAccessibilityElement(*pAccessibilityContainer, false);
134 return GetPresenter().UpdateIndex();
138 _FastScroll::EnableFadeEffect(bool enable)
140 GetPresenter().EnableFadeEffect(enable);
144 _FastScroll::IsEnabledFadeEffect(void) const
146 return GetPresenter().IsEnabledFadeEffect();
150 _FastScroll::IsOnFadeEffect(void) const
152 return GetPresenter().IsOnFadeEffect();
156 _FastScroll::SetScrollVisibility(bool visibility)
158 return GetPresenter().SetScrollVisibility(visibility);
162 _FastScroll::GetScrollVisibility(void) const
164 return GetPresenter().GetScrollVisibility();
168 _FastScroll::CancelFadeEffect(void)
170 GetPresenter().CancelFadeEffect();
174 _FastScroll::InitializeAccessibility(void)
176 if (unlikely(!(_AccessibilityManager::IsActivated())))
181 _AccessibilityContainer* pAccessibilityContainer = GetAccessibilityContainer();
182 if (pAccessibilityContainer)
184 pAccessibilityContainer->Activate(true);
185 __pAccessibilityListener = new (std::nothrow) _FastScrollAccessibilityListener(this);
186 SysTryReturnResult(NID_UI_CTRL, __pAccessibilityListener, E_OUT_OF_MEMORY, "Memory allocation failed.");
188 pAccessibilityContainer->AddListener(*__pAccessibilityListener);
194 _FastScroll::AddAccessibilityElement(const _AccessibilityContainer& control, bool onAccessibility)
196 return GetPresenter().AddAccessibilityElement(control, onAccessibility);
200 _FastScroll::AddFastScrollEventListener(const Tizen::Ui::Controls::_IUiFastScrollListener& listener)
202 GetPresenter().AddFastScrollEventListener(listener);
206 _FastScroll::RemoveFastScrollEventListener(const Tizen::Ui::Controls::_IUiFastScrollListener& listener)
208 GetPresenter().RemoveFastScrollEventListener(listener);
212 _FastScroll::OnAttachedToMainTree(void)
214 return InitializeAccessibility();
218 _FastScroll::OnParentBoundsChanged(void)
220 GetPresenter().OnParentBoundsChanged();
224 _FastScroll::OnDraw(void)
226 GetPresenter().OnDraw();
230 _FastScroll::OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo)
232 return GetPresenter().OnTouchPressed(source, touchinfo);
236 _FastScroll::OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo)
238 return GetPresenter().OnTouchReleased(source, touchinfo);
242 _FastScroll::OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo)
244 return GetPresenter().OnTouchMoved(source, touchinfo);
248 _FastScroll::OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo)
250 return GetPresenter().OnTouchCanceled(source, touchinfo);
254 _FastScroll::OnFontChanged(Font* pFont)
256 GetPresenter().OnFontChanged(pFont);
260 _FastScroll::OnFontInfoRequested(unsigned long& style, int& size)
262 GetPresenter().OnFontInfoRequested(style, size);
266 _FastScroll::HitTest(const Tizen::Graphics::FloatPoint& point)
268 return GetPresenter().HitTest(point);
272 _FastScroll::Construct(Tizen::Ui::_Control& parentCtrl)
274 _FastScrollPresenter* pPresenter = _FastScrollPresenter::CreateFastScrollPresenterN(parentCtrl, *this);
275 SysTryReturnResult(NID_UI_CTRL, pPresenter, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
277 SetPresenter(*pPresenter);
285 _FastScroll::SetPresenter(_FastScrollPresenter& fastScrollPresenter)
287 __pPresenter = &fastScrollPresenter;
290 _FastScrollPresenter&
291 _FastScroll::GetPresenter(void) const
293 return *__pPresenter;
296 } } } // Tizen::Ui::Controls