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_ScrollPanel.h
20 * @brief This is the header file for the _ScrollPanel class.
22 * This header file contains the declarations of the _ScrollPanel class.
25 #ifndef _FUI_CTRL_INTERNAL_SCROLL_PANEL_H_
26 #define _FUI_CTRL_INTERNAL_SCROLL_PANEL_H_
28 #include <FUiAnimIVisualElementAnimationStatusEventListener.h>
29 #include <FUiAnimIVisualElementAnimationTickEventListener.h>
30 #include <FUiCtrlScrollPanelTypes.h>
31 #include <FUiCtrlTableViewTypes.h>
32 #include "FUi_ITouchFlickGestureEventListener.h"
33 #include "FUi_IAccessibilityListener.h"
34 #include "FUi_AccessibilityContainer.h"
35 #include "FUi_AccessibilityElement.h"
36 #include "FUiCtrl_IScrollableContainer.h"
37 #include "FUiCtrl_IScrollEventListener.h"
38 #include "FUiCtrl_ScrollPanelEvent.h"
39 #include "FUiCtrl_Panel.h"
41 namespace Tizen { namespace Ui
47 class _TouchFlickGestureDetector;
52 class VisualElementValueAnimation;
54 } // Tizen::Ui::Animations
58 namespace Tizen { namespace Ui { namespace Controls
63 class _ScrollPanelPresenter;
66 class _OSP_EXPORT_ _ScrollPanel
68 , public _IScrollEventListener
69 , public _IScrollableContainer
70 , public _ITouchFlickGestureEventListener
71 , public _IAccessibilityListener
72 , public Tizen::Ui::Animations::IVisualElementAnimationTickEventListener
73 , public Tizen::Ui::Animations::IVisualElementAnimationStatusEventListener
74 , virtual public _IUiEventListener
75 , virtual public _IUiEventPreviewer
76 , virtual public Tizen::Base::Runtime::IEventListener
77 , virtual public _ITouchGestureEventListener
81 virtual ~_ScrollPanel(void);
83 static _ScrollPanel* CreateScrollPanelN(const Tizen::Graphics::Rectangle& rect
84 , ScrollPanelScrollDirection scrollDirection = SCROLL_PANEL_SCROLL_DIRECTION_VERTICAL
85 , bool autoResizingEnable = true
86 , bool pageScrollEnabled = false);
90 virtual void OnDraw(void);
91 virtual result OnBoundsChanging(const Tizen::Graphics::Rectangle& bounds);
92 virtual void OnBoundsChanged(void);
95 virtual void OnChildAttached(const _Control& child);
96 virtual void OnChildDetached(const _Control& child);
97 virtual void OnChildBoundsChanged(const _Control& child);
99 // scroll event listener
100 virtual void OnScrollEndReached(_Control& source, ScrollEndEvent type);
101 virtual void OnScrollPositionChanged(_Control& source, int scrollPos);
103 // touch Event Previewer
104 virtual _UiTouchEventDelivery OnPreviewTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
105 virtual _UiTouchEventDelivery OnPreviewTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
106 virtual _UiTouchEventDelivery OnPreviewTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
107 virtual _UiTouchEventDelivery OnPreviewTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
109 // touch Event Listener
110 virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
111 virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
112 virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
113 virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
114 virtual void OnTouchMoveHandled(const _Control& control);
116 // gestureListener Callback API
117 virtual bool OnFlickGestureDetected(_TouchFlickGestureDetector& gesture);
118 virtual bool OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture);
120 // accessibility listener
121 virtual bool OnAccessibilityFocusMovedNext(const _AccessibilityContainer& control, const _AccessibilityElement& element);
122 virtual bool OnAccessibilityFocusMovedPrevious(const _AccessibilityContainer& control, const _AccessibilityElement& element);
123 virtual bool OnAccessibilityReadElement(const _AccessibilityContainer& control, const _AccessibilityElement& element);
124 virtual bool OnAccessibilityFocusIn(const _AccessibilityContainer& control, const _AccessibilityElement& element);
125 virtual bool OnAccessibilityFocusOut(const _AccessibilityContainer& control, const _AccessibilityElement& element);
126 virtual bool OnAccessibilityActionPerformed(const _AccessibilityContainer& control, const _AccessibilityElement& element);
127 virtual bool OnAccessibilityValueIncreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
128 virtual bool OnAccessibilityValueDecreased(const _AccessibilityContainer& control, const _AccessibilityElement& element);
129 // scroll animation event listener
130 virtual void OnVisualElementAnimationStarted(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target);
131 virtual void OnVisualElementAnimationRepeated(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, long currentRepeatCount);
132 virtual void OnVisualElementAnimationFinished(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, bool completedNormally);
133 virtual void OnTickOccurred(const Tizen::Ui::Animations::VisualElementAnimation& animation, const Tizen::Base::String& keyName, Tizen::Ui::Animations::VisualElement& target, const Tizen::Ui::Variant& currentValue);
135 // manage scroll event listener
136 void AddScrollEventListener(const _IScrollEventListener& listener);
137 void RemoveScrollEventListener(const _IScrollEventListener& listener);
140 void ScrollToBottom(void) const;
141 void ScrollToTop(void) const;
142 void ScrollToLeft(void) const;
143 void ScrollToRight(void) const;
145 // scrollable container interface
146 virtual bool ScrollToControl(const _Control& source);
149 int GetScrollPosition(void) const;
150 void SetScrollPosition(int position, bool withAnimation = false);
153 int GetVerticalScrollPosition(void) const;
154 void SetVerticalScrollPosition(int position);
156 int GetHorizontalScrollPosition(void) const;
157 void SetHorizontalScrollPosition(int position);
160 bool IsScrollAreaAutoResizingEnabled(void) const;
161 void SetScrollAreaAutoResizingEnabled(bool autoResizingEnable);
163 // scroll area bounds
164 Tizen::Graphics::Rectangle GetScrollAreaBounds(void) const;
165 result SetClientAreaHeight(int height);
166 result SetClientAreaWidth(int width);
167 result SetScrollAreaBounds(Tizen::Graphics::Rectangle& bounds);
170 ScrollPanelScrollDirection GetScrollDirection(void) const;
171 void SetScrollDirection(ScrollPanelScrollDirection direction);
173 ScrollInputMode GetScrollInputMode(void) const;
174 void SetScrollInputMode(ScrollInputMode mode);
177 bool IsPageScrollEnabled(void) const;
178 void SetPageScrollEnabled(bool enable);
180 Tizen::Graphics::Dimension GetPageScrollAlignSize(void) const;
181 void SetPageScrollAlignSize(Tizen::Graphics::Dimension size);
183 bool IsPageScrollFlickMoveLimitedOnePage(void) const;
185 // store SIP keypad binding control
186 const _Control* GetControlKeypadBinding(void) const;
187 void SetControlKeypadBinding(const _Control* pControl);
190 _ScrollPanelEvent* GetScrollPanelEvent(void) const;
191 void SetScrollPanelEvent(const _ScrollPanelEvent* pScrollPanelEvent);
194 bool IsScrollBarVisible(void) const;
195 void SetScrollBarVisible(bool scrollBarVisible);
197 _Scroll* GetScrollBar(void) const;
198 void SetScrollBar(const _Scroll* pVerticalScrollBar);
200 _Scroll* GetVerticalScrollBar(void) const;
201 void SetVerticalScrollBar(const _Scroll* pVerticalScrollBar);
203 _Scroll* GetHorizontalScrollBar(void) const;
204 void SetHorizontalScrollBar(const _Scroll* pHorizontalScrollBar);
206 bool IsFixingClientBoundsEnable(void) const;
207 void SetFixingClientBoundsEnable(bool enable);
209 // VE Value Animation
210 Tizen::Ui::Animations::VisualElementValueAnimation* GetScrollingAnimation(void) const;
213 result FireOnScrollEndEvent(ScrollEndEvent scrollEndEventType);
214 result FireOnScrollPositionChangedEvent(void);
215 result FireOnScrollPositionChangedEvent(int scrollPosition);
216 result FireOnScrollStoppedEvent(void);
217 result FireScrollPanelEvent(const _Control& source, CoreScrollPanelStatus scrollPanelStatus);
223 virtual result Initialize(const _ScrollPanelPresenter& presenter);
226 virtual result SetScrollPanelPresenter(const _ScrollPanelPresenter* presenter);
229 // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
230 _ScrollPanel(const _ScrollPanel& rhs);
232 // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
233 _ScrollPanel& operator =(const _ScrollPanel& rhs);
237 _ScrollPanelPresenter* __pScrollPanelPresenter;
240 _UiScrollEvent* __pScrollEvent;
243 _ScrollPanelEvent* __pCoreScrollPanelEvent;
246 _TouchFlickGestureDetector* __pGestureFlick;
248 const _Control* __pKeyPadBindingControl;
251 ScrollPanelScrollDirection __scrollDirection;
252 ScrollInputMode __scrollInputMode;
254 // scroll area feature
255 bool __autoResizingEnable;
258 bool __pageScrollEnabled;
259 Tizen::Graphics::Dimension __pageScrollAlignSize;
260 bool __pageScrollMoveOnlyOnePageOnFlick;
263 bool __scrollBarVisible;
264 _Scroll* __pHorizontalScrollBar;
265 _Scroll* __pVerticalScrollBar;
267 // scrolling animation
268 Tizen::Ui::Animations::VisualElementValueAnimation* __pScrollingAnimation;
270 bool __fixingClientBoundsEnable;
273 }}} // Tizen::Ui::Controls
275 #endif // _FUI_CTRL_INTERNAL_SCROLL_PANEL_H_