X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fscrollable%2Fscroll-view%2Fscroll-view-impl.h;h=b9db77d2d60bd362b2655f98d90535af97f17bbe;hp=f4d211bc3361933bebf0892eaf8673d7347a3cba;hb=e10dee76cbcdf041bc522545c323016c9f62e8f7;hpb=d04c5bdbb95cc98f90848c7a98b0b2804df6e5b8 diff --git a/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h b/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h index f4d211b..b9db77d 100644 --- a/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h +++ b/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h @@ -2,7 +2,7 @@ #define __DALI_TOOLKIT_INTERNAL_SCROLL_VIEW_H__ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -90,6 +90,11 @@ public: static const unsigned int SCROLL_ANIMATION_FLAGS = AnimatingInternalX | AnimatingInternalY; static const unsigned int SNAP_ANIMATION_FLAGS = SnappingInternalX | SnappingInternalY; +private: + + typedef std::vector ScrollViewEffectContainer; ///< Container of Dali::Toolkit::ScrollViewEffect + typedef ScrollViewEffectContainer::iterator ScrollViewEffectIter; ///< Iterator for Dali::Toolkit::ScrollViewEffectContainer + public: /** @@ -186,6 +191,13 @@ public: void SetRulerY(RulerPtr ruler); /** + * Retrieve the touch sensitivity. + * + * @return whether the touch sensitivity is true or false. + */ + bool GetScrollSensitive(); + + /** * @copydoc Toolkit::ScrollView::SetScrollSensitive */ void SetScrollSensitive(bool sensitive); @@ -201,11 +213,25 @@ public: void SetSnapOvershootAlphaFunction(AlphaFunction alpha); /** + * Retrieve the duartion of Snap Overshoot animation + * + * @return the duration. + */ + float GetSnapOvershootDuration(); + + /** * @copydoc Toolkit::ScrollView::SetSnapOvershootDuration */ void SetSnapOvershootDuration(float duration); /** + * Retrieve whether Actor Auto-Snap mode is enabled or not. + * + * @return Actor Auto-Snap mode Enabled flag. + */ + bool GetActorAutoSnap(); + + /** * @copydoc Toolkit::ScrollView::SetActorAutoSnap */ void SetActorAutoSnap(bool enable); @@ -318,14 +344,14 @@ public: void SetMaxFlickSpeed(float speed); /** - * @copydoc Toolkit::ScrollView::GetMouseWheelScrollDistanceStep + * @copydoc Toolkit::ScrollView::GetWheelScrollDistanceStep */ - Vector2 GetMouseWheelScrollDistanceStep() const; + Vector2 GetWheelScrollDistanceStep() const; /** - * @copydoc Toolkit::ScrollView::SetMouseWheelScrollDistanceStep + * @copydoc Toolkit::ScrollView::SetWheelScrollDistanceStep */ - void SetMouseWheelScrollDistanceStep(Vector2 step); + void SetWheelScrollDistanceStep(Vector2 step); /** * @copydoc Toolkit::ScrollView::GetCurrentPage @@ -335,55 +361,50 @@ public: /** * @copydoc Toolkit::ScrollView::GetCurrentScrollPosition */ - Vector3 GetCurrentScrollPosition() const; - - /** - * @copydoc Toolkit::ScrollView::SetScrollPosition - */ - void SetScrollPosition(const Vector3& position); + Vector2 GetCurrentScrollPosition() const; /** * @copydoc Toolkit::Scrollable::GetDomainSize */ - Vector3 GetDomainSize() const; + Vector2 GetDomainSize() const; /** - * @copydoc ScrollTo(const Vector3&) + * @copydoc ScrollTo(const Vector2&) */ - void TransformTo(const Vector3& position, + void TransformTo(const Vector2& position, DirectionBias horizontalBias = DirectionBiasNone, DirectionBias verticalBias = DirectionBiasNone); /** - * @copydoc ScrollTo(const Vector3&, float, AlhpaFunction, DirectionBias, DirectionBias) + * @copydoc ScrollTo(const Vector2&, float, AlhpaFunction, DirectionBias, DirectionBias) */ - void TransformTo(const Vector3& position, float duration, AlphaFunction alpha, + void TransformTo(const Vector2& position, float duration, AlphaFunction alpha, DirectionBias horizontalBias = DirectionBiasNone, DirectionBias verticalBias = DirectionBiasNone); /** - * @copydoc Toolkit::ScrollView::ScrollTo(const Vector3 &position) + * @copydoc Toolkit::ScrollView::ScrollTo(const Vector2 &position) */ - void ScrollTo(const Vector3 &position); + void ScrollTo(const Vector2 &position); /** - * @copydoc Toolkit::Scrollable::ScrollTo(const Vector3& position, float duration) + * @copydoc Toolkit::Scrollable::ScrollTo(const Vector2& position, float duration) */ - void ScrollTo(const Vector3& position, float duration); + void ScrollTo(const Vector2& position, float duration); /** - * @copydoc Toolkit::Scrollable::ScrollTo(const Vector3& position, float duration, AlphaFunction alpha) + * @copydoc Toolkit::Scrollable::ScrollTo(const Vector2& position, float duration, AlphaFunction alpha) */ - void ScrollTo(const Vector3& position, float duration, AlphaFunction alpha); + void ScrollTo(const Vector2& position, float duration, AlphaFunction alpha); /** - * @copydoc Toolkit::ScrollView::ScrollTo(const Vector3 &position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias) + * @copydoc Toolkit::ScrollView::ScrollTo(const Vector2 &position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias) */ - void ScrollTo(const Vector3& position, float duration, + void ScrollTo(const Vector2& position, float duration, DirectionBias horizontalBias, DirectionBias verticalBias); /** - * @copydoc Toolkit::ScrollView::ScrollTo(const Vector3 &position, float duration, AlphaFunction alpha, DirectionBias horizontalBias, DirectionBias verticalBias) + * @copydoc Toolkit::ScrollView::ScrollTo(const Vector2 &position, float duration, AlphaFunction alpha, DirectionBias horizontalBias, DirectionBias verticalBias) */ - void ScrollTo(const Vector3& position, float duration, AlphaFunction alpha, + void ScrollTo(const Vector2& position, float duration, AlphaFunction alpha, DirectionBias horizontalBias, DirectionBias verticalBias); /** @@ -462,7 +483,7 @@ public: * @param[in] verticalBias (optional) Whether to bias animation to top or bottom (or no biasing) * @return True if animation necessary and taking place to reach desired transform. */ - bool AnimateTo(const Vector3& position, const Vector3& positionDuration, + bool AnimateTo(const Vector2& position, const Vector2& positionDuration, AlphaFunction alpha, bool findShortcuts = true, DirectionBias horizontalBias = DirectionBiasNone, DirectionBias verticalBias = DirectionBiasNone, SnapType snapType = Snap); @@ -482,6 +503,24 @@ public: */ void SetOvershootEffectColor( const Vector4& color ); + //properties + + /** + * Called when a property of an object of this type is set. + * @param[in] object The object whose property is set. + * @param[in] index The property index. + * @param[in] value The new property value. + */ + static void SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ); + + /** + * Called to retrieve a property of an object of this type. + * @param[in] object The object whose property is to be retrieved. + * @param[in] index The property index. + * @return The current value of the property. + */ + static Property::Value GetProperty( BaseObject* object, Property::Index index ); + public: //Signals /** @@ -508,9 +547,9 @@ private: // private overriden functions from CustomActorImpl and Controls virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize); /** - * @copydoc Dali::Control::OnControlSizeSet(const Vector3&) + * @copydoc CustomActorImpl::OnSizeSet(const Vector3&) */ - virtual void OnControlSizeSet( const Vector3& size ); + virtual void OnSizeSet( const Vector3& size ); /** * From CustomActorImpl; called after a child has been added to the owning actor. @@ -525,7 +564,7 @@ private: // private overriden functions from CustomActorImpl and Controls virtual void OnChildRemove(Actor& child); /** - * From CustomActorImpl; called after a touch-signal is received by the owning actor. + * From CustomActorImpl; called after a touchSignal is received by the owning actor. * * We don't listen to these events as content within the contain may consume events. * @@ -535,11 +574,11 @@ private: // private overriden functions from CustomActorImpl and Controls virtual bool OnTouchEvent(const TouchEvent& event); /** - * From CustomActorImpl; called after a mouse-wheel-event is received by the owning actor. - * @param[in] event The mouse wheel event. + * From CustomActorImpl; called after a wheelEvent is received by the owning actor. + * @param[in] event The wheel event. * @return True if the event should be consumed. */ - virtual bool OnMouseWheelEvent(const MouseWheelEvent& event); + virtual bool OnWheelEvent(const WheelEvent& event); /** * @copydoc Toolkit::Control::OnInitialize() @@ -547,14 +586,14 @@ private: // private overriden functions from CustomActorImpl and Controls virtual void OnInitialize(); /** - * @copydoc Toolkit::Control::OnControlStageConnection() + * @copydoc CustomActorImpl::OnStageConnection() */ - virtual void OnControlStageConnection(); + virtual void OnStageConnection( int depth ); /** - * @copydoc Toolkit::Control::OnControlStageConnection() + * @copydoc CustomActorImpl::OnStageDisconnection() */ - virtual void OnControlStageDisconnection(); + virtual void OnStageDisconnection(); /** * @copydoc Toolkit::Control::OnAccessibilityPan() @@ -562,9 +601,9 @@ private: // private overriden functions from CustomActorImpl and Controls virtual bool OnAccessibilityPan(PanGesture gesture); /** - * @copydoc Toolkit::Scrollable::SetOvershootEnabled() + * @copydoc Toolkit::Scrollable::EnableScrollOvershoot() */ - virtual void SetOvershootEnabled(bool enable); + virtual void EnableScrollOvershoot(bool enable); private: @@ -653,12 +692,10 @@ private: /** * This is called internally whenever the Scroll Rulers are - * modified. This will update the properties: 'scroll-position-min' - * and 'scroll-position-max' to reflect the changes. - * - * @param[in] size size of the visible scroll area (ScrollView control size) + * modified. This will update the properties: 'scrollPositionMin' + * and 'scrollPositionMax' to reflect the changes. */ - void UpdatePropertyDomain(const Vector3& size); + void UpdatePropertyDomain(); /** * Called when the gesture starts. @@ -712,14 +749,14 @@ private: * * @param[in] position The position for which you wish to obtain overshoot vector */ - Vector3 GetOvershoot(Vector3& position) const; + Vector2 GetOvershoot(Vector2& position) const; /** * Clamps position within the domain set up by X/Y Rulers * * @param[in,out] position The position you wish to clamp */ - void ClampPosition(Vector3& position) const; + void ClampPosition(Vector2& position) const; /** * Clamps position within the domain set up by X/Y Rulers @@ -727,7 +764,7 @@ private: * @param[in,out] position The position you wish to clamp * @param[out] clamped The results of the clamping. */ - void ClampPosition(Vector3& position, ClampState3D &clamped) const; + void ClampPosition(Vector2& position, ClampState2D &clamped) const; /** * Wraps position within the domain set up by X/Y Rulers @@ -737,7 +774,7 @@ private: * * @param[in,out] position The position you wish to wrap */ - void WrapPosition(Vector3& position) const; + void WrapPosition(Vector2& position) const; /** * Updates the main internal scroll constraints with new ruler and domain @@ -786,14 +823,14 @@ private: * * @return The current position */ - Vector3 GetPropertyPrePosition() const; + Vector2 GetPropertyPrePosition() const; /** * Gets position property. * * @return The current position */ - Vector3 GetPropertyPosition() const; + Vector2 GetPropertyPosition() const; /** * Handles a Stopped animation. Its position properties need to be saved, and the animation flag @@ -833,22 +870,22 @@ private: int mGestureStackDepth; ///< How many gestures are currently occuring. Vector2 mPanStartPosition; ///< Where the pan gesture's touch down occured - Vector3 mPanDelta; ///< Amount currently panned. + Vector2 mPanDelta; ///< Amount currently panned. unsigned int mScrollStateFlags; ///< flags indicating current state of scrolling // Scroll delegate pre and post position properties... - Vector3 mScrollPrePosition; ///< Wrapped scroll position, but not clamped - Vector3 mScrollPostPosition; ///< Wrapped and clamped, this is the final scroll position used - Vector3 mScrollTargetPosition; ///< Final target position for an animated scroll - Vector3 mDomainOffset; ///< Domain offset (this keeps track of the domain boundaries that scroll positions traverses) + Vector2 mScrollPrePosition; ///< Wrapped scroll position, but not clamped + Vector2 mScrollPostPosition; ///< Wrapped and clamped, this is the final scroll position used + Vector2 mScrollTargetPosition; ///< Final target position for an animated scroll + Vector2 mDomainOffset; ///< Domain offset (this keeps track of the domain boundaries that scroll positions traverses) // Rulers for each axes... RulerPtr mRulerX; RulerPtr mRulerY; // Last property values set to ScrollView - Vector3 mMinScroll; - Vector3 mMaxScroll; + Vector2 mMinScroll; + Vector2 mMaxScroll; Animation mInternalXAnimation; ///< Animates mPropertyX to a snap position or application requested scroll position Animation mInternalYAnimation; ///< Animates mPropertyY to a snap position or application requested scroll position @@ -869,7 +906,7 @@ private: Vector2 mMaxOvershoot; ///< Number of scrollable pixels that will take overshoot from 0.0f to 1.0f Vector2 mUserMaxOvershoot; ///< Set by user, allows overriding of default max overshoot for the scroll indicator - float mSnapOvershootDuration; ///< Duration for overshoot snapping back to Vector3::ZERO + float mSnapOvershootDuration; ///< Duration for overshoot snapping back to Vector2::ZERO AlphaFunction mSnapOvershootAlphaFunction; ///< AlphaFunction to be used for this overshoot. float mSnapDuration; ///< Time for the snap animation to take (in seconds). @@ -885,7 +922,7 @@ private: float mFlickSpeedCoefficient; ///< Flick velocity coefficient. Input touch velocity is multiplied by this. float mMaxFlickSpeed; ///< Maximum flick speed. Maximum speed of flick in stage.lengths/sec. - Vector2 mMouseWheelScrollDistanceStep; ///< The step of scroll distance in actor coordinates in X and Y axes for each mouse wheel event received. + Vector2 mWheelScrollDistanceStep; ///< The step of scroll distance in actor coordinates in X and Y axes for each wheel event received. //ScrollInternalConstraintsPtr mScrollInternalConstraints; Constraint mScrollMainInternalPrePositionConstraint; @@ -895,13 +932,14 @@ private: Constraint mScrollMainInternalDeltaConstraint; Constraint mScrollMainInternalFinalConstraint; Constraint mScrollMainInternalRelativeConstraint; + Constraint mScrollMainInternalDomainConstraint; + Constraint mScrollMainInternalPrePositionMaxConstraint; ScrollOvershootIndicatorPtr mOvershootIndicator; Toolkit::ScrollView::SnapStartedSignalType mSnapStartedSignal; - bool mInAccessibilityPan : 1; ///< With AccessibilityPan its easier to move between snap positions - bool mInitialized:1; + bool mInAccessibilityPan:1; ///< With AccessibilityPan its easier to move between snap positions bool mScrolling:1; ///< Flag indicating whether the scroll view is being scrolled (by user or animation) bool mScrollInterrupted:1; ///< Flag set for when a down event interrupts a scroll bool mPanning:1; ///< Whether scroll view is currently panning or not