const Vector4 OVERSHOOT_OVERLAY_NINE_PATCH_BORDER(0.0f, 0.0f, 1.0f, 12.0f);
const float DEFAULT_KEYBOARD_FOCUS_SCROLL_DURATION = 0.2f;
+const unsigned int OVERSHOOT_SIZE_CONSTRAINT_TAG(42);
+
/**
* Local helper to convert pan distance (in actor coordinates) to the layout-specific scrolling direction
*/
return false;
}
+/**
+ * Helper to apply size constraint to mOvershootOverlay
+ * @param[in] overshootOverlay The overshootOverlay actor
+ * @param[in] The required height
+ */
+void ApplyOvershootSizeConstraint( Actor overshootOverlay, float height )
+{
+ Constraint constraint = Constraint::New<Vector3>( overshootOverlay, Actor::Property::SIZE, OvershootOverlaySizeConstraint( height ) );
+ constraint.AddSource( ParentSource( Dali::Toolkit::ItemView::Property::SCROLL_DIRECTION ) );
+ constraint.AddSource( ParentSource( Dali::Toolkit::ItemView::Property::LAYOUT_ORIENTATION ) );
+ constraint.AddSource( ParentSource( Dali::Actor::Property::SIZE ) );
+ constraint.SetTag( OVERSHOOT_SIZE_CONSTRAINT_TAG );
+ constraint.Apply();
+}
+
} // unnamed namespace
Dali::Toolkit::ItemView ItemView::New(ItemFactory& factory)
mScrollAnimation.AnimateTo( Property(self, Toolkit::ItemView::Property::SCROLL_SPEED), 0.0f, AlphaFunction::EASE_OUT );
mIsFlicking = true;
+
// Check whether it has already scrolled to the end
- if(fabs(currentLayoutPosition - firstItemScrollPosition) > Math::MACHINE_EPSILON_0)
+ if( fabs(currentLayoutPosition - firstItemScrollPosition) < Math::MACHINE_EPSILON_0 )
{
- AnimateScrollOvershoot(0.0f);
+ AnimateScrollOvershoot( 0.0f );
+ RemoveAnimation( mScrollAnimation );
}
}
mRefreshEnabled = true;
}
+void ItemView::SetOvershootSize( const Vector2& size )
+{
+ mOvershootSize = size;
+
+ if( mOvershootOverlay )
+ {
+ // Remove old & add new size constraint
+ mOvershootOverlay.RemoveConstraints( OVERSHOOT_SIZE_CONSTRAINT_TAG );
+ ApplyOvershootSizeConstraint( mOvershootOverlay, mOvershootSize.height );
+ }
+}
+
void ItemView::SetOvershootEffectColor( const Vector4& color )
{
mOvershootEffectColor = color;
mOvershootOverlay.SetDrawMode( DrawMode::OVERLAY_2D );
self.Add(mOvershootOverlay);
- Constraint constraint = Constraint::New<Vector3>( mOvershootOverlay, Actor::Property::SIZE, OvershootOverlaySizeConstraint(mOvershootSize.height) );
- constraint.AddSource( ParentSource( Toolkit::ItemView::Property::SCROLL_DIRECTION ) );
- constraint.AddSource( ParentSource( Toolkit::ItemView::Property::LAYOUT_ORIENTATION ) );
- constraint.AddSource( ParentSource( Actor::Property::SIZE ) );
- constraint.Apply();
-
- mOvershootOverlay.SetSize(mOvershootSize.width, mOvershootSize.height);
+ ApplyOvershootSizeConstraint( mOvershootOverlay, mOvershootSize.height );
- constraint = Constraint::New<Quaternion>( mOvershootOverlay, Actor::Property::ORIENTATION, OvershootOverlayRotationConstraint );
+ Constraint constraint = Constraint::New<Quaternion>( mOvershootOverlay, Actor::Property::ORIENTATION, OvershootOverlayRotationConstraint );
constraint.AddSource( ParentSource( Toolkit::ItemView::Property::SCROLL_DIRECTION ) );
constraint.AddSource( ParentSource( Toolkit::ItemView::Property::LAYOUT_ORIENTATION ) );
constraint.AddSource( ParentSource( Toolkit::ItemView::Property::OVERSHOOT ) );
{
Internal::DepthLayoutPtr depthLayout = Internal::DepthLayout::New();
(*depthLayout).SetLayoutProperties(*layout);
+ (*depthLayout).SetDepthLayoutProperties(*layout);
AddLayout(*depthLayout);
break;
}
{
Internal::GridLayoutPtr gridLayout = Internal::GridLayout::New();
(*gridLayout).SetLayoutProperties(*layout);
+ (*gridLayout).SetGridLayoutProperties(*layout);
AddLayout(*gridLayout);
break;
}
Internal::GridLayoutPtr listLayout = Internal::GridLayout::New();
listLayout->SetNumberOfColumns( 1 );
(*listLayout).SetLayoutProperties(*layout);
+ (*listLayout).SetGridLayoutProperties(*layout);
AddLayout(*listLayout);
break;
}
{
Internal::SpiralLayoutPtr spiralLayout = Internal::SpiralLayout::New();
(*spiralLayout).SetLayoutProperties(*layout);
+ (*spiralLayout).SetSpiralLayoutProperties(*layout);
AddLayout(*spiralLayout);
break;
}