Added new properties to make ScrollView more scriptable 96/56796/6
authorRichard Huang <r.huang@samsung.com>
Tue, 12 Jan 2016 15:58:49 +0000 (15:58 +0000)
committerRichard Huang <r.huang@samsung.com>
Tue, 19 Jan 2016 15:39:23 +0000 (15:39 +0000)
Change-Id: I32701acb1f9ab0ce09af1c6c991713389dda4e3e

dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp
dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h
dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h

index 0bda5ea..82df8cc 100644 (file)
@@ -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<bool>() );
+        break;
+      }
+      case Toolkit::ScrollView::Property::PANNING_ENABLED:
+      {
+        scrollViewImpl.SetScrollSensitive( value.Get<bool>() );
+        break;
+      }
+      case Toolkit::ScrollView::Property::AXIS_AUTO_LOCK_ENABLED:
+      {
+        scrollViewImpl.SetAxisAutoLock( value.Get<bool>() );
+        break;
+      }
+      case Toolkit::ScrollView::Property::WHEEL_SCROLL_DISTANCE_STEP:
+      {
+        scrollViewImpl.SetWheelScrollDistanceStep( value.Get<Vector2>() );
+        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
index 082a046..b9db77d 100644 (file)
@@ -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
 
   /**
index 9a66cfc..0e656d4 100644 (file)
@@ -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