Fix compile error. Non initialized variable.
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / text-controls / text-selection-toolbar-impl.cpp
index 0cb62af..4a06886 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -20,7 +20,6 @@
 
 // EXTERNAL INCLUDES
 #include <cfloat>
-#include <dali/public-api/images/buffer-image.h>
 #include <dali/public-api/math/vector2.h>
 #include <dali/public-api/math/vector4.h>
 #include <dali/public-api/object/property-map.h>
@@ -29,6 +28,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
 #include <dali-toolkit/devel-api/controls/control-depth-index-ranges.h>
+#include <dali-toolkit/internal/helpers/color-conversion.h>
 
 namespace Dali
 {
@@ -177,7 +177,7 @@ void TextSelectionToolbar::OnRelayout( const Vector2& size, RelayoutContainer& c
   if( mScrollBar )
   {
     float barWidth = std::min( mTableOfButtons.GetNaturalSize().width, size.width ) - 2.f * mScrollBarPadding.x;
-    mScrollBar.SetSize( Vector2( 0.0f, barWidth ) );
+    mScrollBar.SetProperty( Actor::Property::SIZE, Vector2( 0.0f, barWidth ) );
   }
 }
 
@@ -186,8 +186,8 @@ void TextSelectionToolbar::SetPopupMaxSize( const Size& maxSize )
   mMaxSize = maxSize;
   if (mScrollView && mToolbarLayer )
   {
-    mScrollView.SetMaximumSize( mMaxSize );
-    mToolbarLayer.SetMaximumSize( mMaxSize );
+    mScrollView.SetProperty( Actor::Property::MAXIMUM_SIZE, mMaxSize );
+    mToolbarLayer.SetProperty( Actor::Property::MAXIMUM_SIZE, mMaxSize );
   }
 }
 
@@ -198,14 +198,16 @@ const Dali::Vector2& TextSelectionToolbar::GetPopupMaxSize() const
 
 void TextSelectionToolbar::SetUpScrollView()
 {
+  mScrollView.SetProperty( Dali::Actor::Property::NAME,"TextSelectionScrollView");
   mScrollView.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS );
-  mScrollView.SetParentOrigin( ParentOrigin::CENTER_LEFT );
-  mScrollView.SetAnchorPoint( AnchorPoint::CENTER_LEFT );
+  mScrollView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER_LEFT );
+  mScrollView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER_LEFT );
 
   mScrollView.SetScrollingDirection( PanGestureDetector::DIRECTION_HORIZONTAL, Degree( 40.0f ) );
   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.
 
@@ -225,8 +227,8 @@ void TextSelectionToolbar::SetUp()
   // Create Layer to house the toolbar.
   mToolbarLayer = Layer::New();
   mToolbarLayer.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS );
-  mToolbarLayer.SetAnchorPoint( AnchorPoint::CENTER );
-  mToolbarLayer.SetParentOrigin( ParentOrigin::CENTER );
+  mToolbarLayer.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
+  mToolbarLayer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
 
   if( !mScrollView )
   {
@@ -237,8 +239,8 @@ void TextSelectionToolbar::SetUp()
   // Toolbar must start with at least one option, adding further options with increase it's size
   mTableOfButtons = Dali::Toolkit::TableView::New( 1, 1 );
   mTableOfButtons.SetFitHeight( 0 );
-  mTableOfButtons.SetParentOrigin( ParentOrigin::CENTER_LEFT );
-  mTableOfButtons.SetAnchorPoint( AnchorPoint::CENTER_LEFT );
+  mTableOfButtons.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER_LEFT );
+  mTableOfButtons.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER_LEFT );
 
   mScrollView.Add( mTableOfButtons );
   mToolbarLayer.Add( mScrollView );
@@ -253,18 +255,18 @@ void TextSelectionToolbar::SetUpScrollBar( bool enable )
     if( ! mScrollBar )
     {
       Toolkit::ImageView indicator = Toolkit::ImageView::New();
-      indicator.SetParentOrigin( ParentOrigin::TOP_LEFT );
-      indicator.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+      indicator.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
+      indicator.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
       indicator.SetStyleName( "TextSelectionScrollIndicator" );
 
-      mScrollBar = Toolkit::ScrollBar::New( Toolkit::ScrollBar::Horizontal );
-      mScrollBar.SetName( "Text popup scroll bar" );
+      mScrollBar = Toolkit::ScrollBar::New( Toolkit::ScrollBar::HORIZONTAL );
+      mScrollBar.SetProperty( Dali::Actor::Property::NAME, "Text popup scroll bar" );
       mScrollBar.SetStyleName( "TextSelectionScrollBar" );
-      mScrollBar.SetParentOrigin( ParentOrigin::BOTTOM_LEFT );
-      mScrollBar.SetAnchorPoint( AnchorPoint::TOP_LEFT );
-      mScrollBar.SetPosition( mScrollBarPadding.x, -mScrollBarPadding.y );
+      mScrollBar.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_LEFT );
+      mScrollBar.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
+      mScrollBar.SetProperty( Actor::Property::POSITION, Vector2( 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.SetProperty( Actor::Property::ORIENTATION, Quaternion( Quaternion( Radian( 1.5f * Math::PI ), Vector3::ZAXIS ) ) );
       mScrollBar.SetScrollIndicator( indicator );
       mScrollBar.GetPanGestureDetector().DetachAll();
       mScrollView.Add( mScrollBar );
@@ -278,12 +280,17 @@ void TextSelectionToolbar::SetUpScrollBar( bool enable )
 
 void TextSelectionToolbar::OnScrollStarted( const Vector2& position )
 {
-  mTableOfButtons.SetSensitive( false );
+  if( mFirstScrollEnd )
+  {
+    mScrollView.SetOvershootEnabled( true );
+  }
+  mTableOfButtons.SetProperty( Actor::Property::SENSITIVE, false );
 }
 
 void TextSelectionToolbar::OnScrollCompleted( const Vector2& position )
 {
-  mTableOfButtons.SetSensitive( true );
+  mFirstScrollEnd = true;
+  mTableOfButtons.SetProperty( Actor::Property::SENSITIVE, true );
 }
 
 void TextSelectionToolbar::AddOption( Actor& option )
@@ -304,7 +311,7 @@ void TextSelectionToolbar::ResizeDividers( Size& size )
   for( unsigned int i = 0; i < mDividerIndexes.Count(); ++i )
   {
     Actor divider = mTableOfButtons.GetChildAt( Toolkit::TableView::CellPosition( 0, mDividerIndexes[ i ] ) );
-    divider.SetSize( size );
+    divider.SetProperty( Actor::Property::SIZE, size );
   }
   RelayoutRequest();
 }
@@ -319,12 +326,19 @@ void TextSelectionToolbar::SetScrollBarPadding( const Vector2& padding )
   mScrollBarPadding = padding;
   if( mScrollBar )
   {
-    mScrollBar.SetPosition( mScrollBarPadding.x, -mScrollBarPadding.y );
+    mScrollBar.SetProperty( Actor::Property::POSITION, Vector2( mScrollBarPadding.x, -mScrollBarPadding.y ));
   }
 
   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.
@@ -336,9 +350,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 );
+      }
     }
   }
 
@@ -355,7 +381,8 @@ TextSelectionToolbar::TextSelectionToolbar()
   mMaxSize (),
   mScrollBarPadding( DEFAULT_SCROLL_BAR_PADDING ),
   mIndexInTable( 0 ),
-  mDividerIndexes()
+  mDividerIndexes(),
+  mFirstScrollEnd( false )
 {
 }