Update resize behaviour in TextLabel demo 37/144737/1
authorRichard Huang <r.huang@samsung.com>
Thu, 17 Aug 2017 15:06:17 +0000 (16:06 +0100)
committerRichard Huang <r.huang@samsung.com>
Thu, 17 Aug 2017 15:06:32 +0000 (16:06 +0100)
Change-Id: Iebd7a2a501dc280c77e797b6545ce524879f3b59

examples/text-label/text-label-example.cpp

index b47e56e..5952d59 100644 (file)
@@ -22,6 +22,7 @@
 
 // EXTERNAL INCLUDES
 #include <dali/devel-api/object/handle-devel.h>
+#include <dali/devel-api/actors/actor-devel.h>
 #include <dali-toolkit/devel-api/controls/text-controls/text-label-devel.h>
 #include <dali-toolkit/dali-toolkit.h>
 #include <iostream>
@@ -114,6 +115,7 @@ public:
     mLabel(),
     mContainer(),
     mGrabCorner(),
+    mBorder(),
     mPanGestureDetector(),
     mLayoutSize(),
     mLanguageId( 0u ),
@@ -164,8 +166,7 @@ public:
 
     mLabel.SetName( "TextLabel" );
     mLabel.SetAnchorPoint( AnchorPoint::TOP_LEFT );
-    mLabel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
-    mLabel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::HEIGHT );
+    mLabel.SetSize(mLayoutSize);
     mLabel.SetProperty( TextLabel::Property::MULTI_LINE, true );
     mLabel.SetProperty( DevelTextLabel::Property::TEXT_COLOR_ANIMATABLE, Color::GREEN );
     mLabel.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 1.0f, 1.0f ) );
@@ -173,6 +174,22 @@ public:
     mLabel.SetBackgroundColor( Color::WHITE );
     mContainer.Add( mLabel );
 
+    // Add a border for the container so you can see the container is being resized while grabbing the handle.
+    mBorder = Control::New();
+    mBorder.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+    mBorder.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+    mBorder.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::HEIGHT );
+
+    Dali::Property::Map border;
+    border.Insert( Visual::Property::TYPE,  Visual::BORDER );
+    border.Insert( BorderVisual::Property::COLOR,  Color::WHITE );
+    border.Insert( BorderVisual::Property::SIZE,  2.f );
+    mBorder.SetProperty( Control::Property::BACKGROUND, border );
+    mContainer.Add( mBorder );
+    mBorder.SetVisible(false);
+
+    DevelActor::RaiseToTop(mGrabCorner);
+
     mHueAngleIndex = mLabel.RegisterProperty( "hue", 0.0f );
     Renderer bgRenderer = mLabel.GetRendererAt(0);
     mOverrideMixColorIndex = DevelHandle::GetPropertyIndex( bgRenderer, ColorVisual::Property::MIX_COLOR );
@@ -212,6 +229,9 @@ public:
       {
         mLayoutSize.y = 2.0f;
       }
+
+      // Only show the border during the panning
+      mBorder.SetVisible(true);
     }
 
     mLayoutSize.x += gesture.displacement.x * 2.0f;
@@ -226,6 +246,13 @@ public:
 
       mContainer.SetSize( clampedSize );
     }
+
+    if( gesture.state == Gesture::Cancelled || gesture.state == Gesture::Finished )
+    {
+      // Resize the text label to match the container size when panning is finished
+      mLabel.SetSize(mLayoutSize);
+      mBorder.SetVisible(false);
+    }
   }
 
   /**
@@ -350,6 +377,7 @@ private:
 
   Control mContainer;
   Control mGrabCorner;
+  Control mBorder;
 
   PanGestureDetector mPanGestureDetector;