From e10dee76cbcdf041bc522545c323016c9f62e8f7 Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 12 Jan 2016 15:58:49 +0000 Subject: [PATCH] Added new properties to make ScrollView more scriptable Change-Id: I32701acb1f9ab0ce09af1c6c991713389dda4e3e --- .../scrollable/scroll-view/scroll-view-impl.cpp | 90 ++++++++++++++++++++++ .../scrollable/scroll-view/scroll-view-impl.h | 39 ++++++++++ .../controls/scrollable/scroll-view/scroll-view.h | 9 +++ 3 files changed, 138 insertions(+) diff --git a/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp b/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp index 0bda5ea..82df8cc 100644 --- a/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp +++ b/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp @@ -244,6 +244,11 @@ BaseHandle Create() // Setup properties, signals and actions using the type-registry. DALI_TYPE_REGISTRATION_BEGIN( Toolkit::ScrollView, Toolkit::Scrollable, Create ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollView, "wrapEnabled", BOOLEAN, WRAP_ENABLED ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollView, "panningEnabled", BOOLEAN, PANNING_ENABLED ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollView, "axisAutoLockEnabled", BOOLEAN, AXIS_AUTO_LOCK_ENABLED ) +DALI_PROPERTY_REGISTRATION( Toolkit, ScrollView, "wheelScrollDistanceStep", VECTOR2, WHEEL_SCROLL_DISTANCE_STEP ) + DALI_ANIMATABLE_PROPERTY_REGISTRATION( Toolkit, ScrollView, "scrollPosition", VECTOR2, SCROLL_POSITION) DALI_ANIMATABLE_PROPERTY_REGISTRATION( Toolkit, ScrollView, "scrollPrePosition", VECTOR2, SCROLL_PRE_POSITION) DALI_ANIMATABLE_PROPERTY_COMPONENT_REGISTRATION( Toolkit, ScrollView, "scrollPrePositionX", SCROLL_PRE_POSITION_X, SCROLL_PRE_POSITION, 0) @@ -966,6 +971,11 @@ void ScrollView::UpdatePropertyDomain() } } +bool ScrollView::GetScrollSensitive() +{ + return mSensitive; +} + void ScrollView::SetScrollSensitive(bool sensitive) { Actor self = Self(); @@ -1011,11 +1021,21 @@ void ScrollView::SetSnapOvershootAlphaFunction(AlphaFunction alpha) mSnapOvershootAlphaFunction = alpha; } +float ScrollView::GetSnapOvershootDuration() +{ + return mSnapOvershootDuration; +} + void ScrollView::SetSnapOvershootDuration(float duration) { mSnapOvershootDuration = duration; } +bool ScrollView::GetActorAutoSnap() +{ + return mActorAutoSnapEnabled; +} + void ScrollView::SetActorAutoSnap(bool enable) { mActorAutoSnapEnabled = enable; @@ -2821,6 +2841,76 @@ void ScrollView::SetInternalConstraints() ApplyConstraintToBoundActors(constraint); } +void ScrollView::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ) +{ + Toolkit::ScrollView scrollView = Toolkit::ScrollView::DownCast( Dali::BaseHandle( object ) ); + + if( scrollView ) + { + ScrollView& scrollViewImpl( GetImpl( scrollView ) ); + switch( index ) + { + case Toolkit::ScrollView::Property::WRAP_ENABLED: + { + scrollViewImpl.SetWrapMode( value.Get() ); + break; + } + case Toolkit::ScrollView::Property::PANNING_ENABLED: + { + scrollViewImpl.SetScrollSensitive( value.Get() ); + break; + } + case Toolkit::ScrollView::Property::AXIS_AUTO_LOCK_ENABLED: + { + scrollViewImpl.SetAxisAutoLock( value.Get() ); + break; + } + case Toolkit::ScrollView::Property::WHEEL_SCROLL_DISTANCE_STEP: + { + scrollViewImpl.SetWheelScrollDistanceStep( value.Get() ); + break; + } + } + } +} + +Property::Value ScrollView::GetProperty( BaseObject* object, Property::Index index ) +{ + Property::Value value; + + Toolkit::ScrollView scrollView = Toolkit::ScrollView::DownCast( Dali::BaseHandle( object ) ); + + if( scrollView ) + { + ScrollView& scrollViewImpl( GetImpl( scrollView ) ); + switch( index ) + { + case Toolkit::ScrollView::Property::WRAP_ENABLED: + { + value = scrollViewImpl.GetWrapMode(); + break; + } + case Toolkit::ScrollView::Property::PANNING_ENABLED: + { + value = scrollViewImpl.GetScrollSensitive(); + break; + } + case Toolkit::ScrollView::Property::AXIS_AUTO_LOCK_ENABLED: + { + value = scrollViewImpl.GetAxisAutoLock(); + break; + } + case Toolkit::ScrollView::Property::WHEEL_SCROLL_DISTANCE_STEP: + { + value = scrollViewImpl.GetWheelScrollDistanceStep(); + break; + } + } + } + + return value; +} + } // namespace Internal } // namespace Toolkit 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 082a046..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 @@ -191,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); @@ -206,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); @@ -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 /** diff --git a/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h b/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h index 9a66cfc..0e656d4 100644 --- a/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h +++ b/dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h @@ -448,6 +448,9 @@ public: */ enum PropertyRange { + PROPERTY_START_INDEX = Toolkit::Scrollable::PROPERTY_END_INDEX + 1, ///< @since DALi 1.1.18 + PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000, ///< Reserve property indices, @since DALi 1.1.18 + ANIMATABLE_PROPERTY_START_INDEX = Toolkit::Scrollable::ANIMATABLE_PROPERTY_END_INDEX + 1, ANIMATABLE_PROPERTY_END_INDEX = ANIMATABLE_PROPERTY_START_INDEX + 1000 ///< Reserve animatable property indices }; @@ -459,6 +462,12 @@ public: { enum { + // Event side properties + WRAP_ENABLED = PROPERTY_START_INDEX, ///< Property, name "wrapEnabled", @see SetWrapMode(), type bool, @since DALi 1.1.18 + PANNING_ENABLED, ///< Property, name "panningEnabled", @see SetScrollSensitive(), type bool, @since DALi 1.1.18 + AXIS_AUTO_LOCK_ENABLED, ///< Property, name "axisAutoLockEnabled", @see SetAxisAutoLock(), type bool, @since DALi 1.1.18 + WHEEL_SCROLL_DISTANCE_STEP, ///< Property, name "wheelScrollDistanceStep", @see SetWheelScrollDistanceStep(), type Vector2, @since DALi 1.1.18 + SCROLL_POSITION = ANIMATABLE_PROPERTY_START_INDEX, ///< Property, name "scrollPosition", type Vector2 SCROLL_PRE_POSITION, ///< Property, name "scrollPrePosition", type Vector2 SCROLL_PRE_POSITION_X, ///< Property, name "scrollPrePositionX", type float -- 2.7.4