X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Ftext-selection-toolbar-impl.cpp;h=358ace6a0605730489e634f68cf94cb673f9ed92;hb=6510379ea0355c08dfe00ad9221b8fb404418702;hp=317dbf92106003cd8b7309e04d980cbedc243dd5;hpb=139f1932acd42bbc9ad3c89c86d4f500052e1ef1;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp index 317dbf9..358ace6 100644 --- a/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-selection-toolbar-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -29,6 +29,7 @@ // INTERNAL INCLUDES #include #include +#include namespace Dali { @@ -198,6 +199,7 @@ const Dali::Vector2& TextSelectionToolbar::GetPopupMaxSize() const void TextSelectionToolbar::SetUpScrollView() { + mScrollView.SetName("TextSelectionScrollView"); mScrollView.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); mScrollView.SetParentOrigin( ParentOrigin::CENTER_LEFT ); mScrollView.SetAnchorPoint( AnchorPoint::CENTER_LEFT ); @@ -206,6 +208,7 @@ void TextSelectionToolbar::SetUpScrollView() mScrollView.SetAxisAutoLock( true ); mScrollView.ScrollStartedSignal().Connect( this, &TextSelectionToolbar::OnScrollStarted ); mScrollView.ScrollCompletedSignal().Connect( this, &TextSelectionToolbar::OnScrollCompleted ); + mScrollView.SetProperty( Actor::Property::CLIPPING_MODE, ClippingMode::CLIP_TO_BOUNDING_BOX ); // In a new layer, so clip to scroll-view's bounding box mRulerX = new DefaultRuler(); // IntrusivePtr which is unreferenced when ScrollView is destroyed. @@ -252,13 +255,20 @@ void TextSelectionToolbar::SetUpScrollBar( bool enable ) { if( ! mScrollBar ) { + Toolkit::ImageView indicator = Toolkit::ImageView::New(); + indicator.SetParentOrigin( ParentOrigin::TOP_LEFT ); + indicator.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + indicator.SetStyleName( "TextSelectionScrollIndicator" ); + mScrollBar = Toolkit::ScrollBar::New( Toolkit::ScrollBar::Horizontal ); mScrollBar.SetName( "Text popup scroll bar" ); + mScrollBar.SetStyleName( "TextSelectionScrollBar" ); mScrollBar.SetParentOrigin( ParentOrigin::BOTTOM_LEFT ); mScrollBar.SetAnchorPoint( AnchorPoint::TOP_LEFT ); mScrollBar.SetPosition( mScrollBarPadding.x, -mScrollBarPadding.y ); mScrollBar.SetResizePolicy( Dali::ResizePolicy::FIT_TO_CHILDREN, Dali::Dimension::WIDTH ); mScrollBar.SetOrientation( Quaternion( Radian( 1.5f * Math::PI ), Vector3::ZAXIS ) ); + mScrollBar.SetScrollIndicator( indicator ); mScrollBar.GetPanGestureDetector().DetachAll(); mScrollView.Add( mScrollBar ); } @@ -271,11 +281,16 @@ void TextSelectionToolbar::SetUpScrollBar( bool enable ) void TextSelectionToolbar::OnScrollStarted( const Vector2& position ) { + if( mFirstScrollEnd ) + { + mScrollView.SetOvershootEnabled( true ); + } mTableOfButtons.SetSensitive( false ); } void TextSelectionToolbar::OnScrollCompleted( const Vector2& position ) { + mFirstScrollEnd = true; mTableOfButtons.SetSensitive( true ); } @@ -318,6 +333,13 @@ void TextSelectionToolbar::SetScrollBarPadding( const Vector2& padding ) RelayoutRequest(); } +void TextSelectionToolbar::ScrollTo( const Vector2& position ) +{ + mFirstScrollEnd = false; + mScrollView.SetOvershootEnabled( false ); + mScrollView.ScrollTo( position, 0.f ); +} + void TextSelectionToolbar::ConfigureScrollview( const Property::Map& properties ) { // Set any properties specified for the label by iterating through all property key-value pairs. @@ -329,9 +351,21 @@ void TextSelectionToolbar::ConfigureScrollview( const Property::Map& properties Property::Index setPropertyIndex = mScrollView.GetPropertyIndex( propertyPair.first ); if( setPropertyIndex != Property::INVALID_INDEX ) { - // If the conversion worked, we have a valid property index, - // Set the property to the new value. - mScrollView.SetProperty( setPropertyIndex, propertyPair.second ); + // Convert the string representation of a color into a Vector4 + if( setPropertyIndex == Toolkit::Scrollable::Property::OVERSHOOT_EFFECT_COLOR ) + { + Vector4 color; + if( ConvertPropertyToColor( propertyPair.second, color ) ) + { + mScrollView.SetOvershootEffectColor( color ); + } + } + else + { + // If the conversion worked, we have a valid property index, + // Set the property to the new value. + mScrollView.SetProperty( setPropertyIndex, propertyPair.second ); + } } } @@ -348,7 +382,8 @@ TextSelectionToolbar::TextSelectionToolbar() mMaxSize (), mScrollBarPadding( DEFAULT_SCROLL_BAR_PADDING ), mIndexInTable( 0 ), - mDividerIndexes() + mDividerIndexes(), + mFirstScrollEnd( false ) { }