--- /dev/null
+#include "test-custom-actor.h"
+
+using namespace Dali;
+
+std::vector< std::string > MasterCallStack;
+bool gOnRelayout = false;
+
+namespace Test
+{
+namespace Impl
+{
+struct TestCustomActor;
+}
+
+
+TestCustomActor TestCustomActor::New()
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActor;
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewNegoSize()
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActor( true );
+ TestCustomActor custom( *impl ); // takes ownership
+ custom.SetName( "SizeNegotiationActor" );
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewVariant1( Actor childToAdd )
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant1( childToAdd );
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewVariant2()
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant2();
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewVariant3( Actor childToAdd )
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant3( childToAdd );
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewVariant4()
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant4();
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewVariant5()
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant5();
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewVariant6()
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant6();
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewVariant7( const char* name )
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant7();
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize( name );
+
+ return custom;
+}
+
+TestCustomActor TestCustomActor::NewVariant8( Actor rival )
+{
+ Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant8( rival );
+ TestCustomActor custom( *impl ); // takes ownership
+
+ impl->Initialize();
+
+ return custom;
+}
+
+TestCustomActor::~TestCustomActor()
+{
+}
+
+Impl::TestCustomActor& TestCustomActor::GetImpl()
+{
+ return static_cast<Impl::TestCustomActor&>(GetImplementation());
+}
+
+std::vector< std::string >& TestCustomActor::GetMethodsCalled()
+{
+ return GetImpl().mMethodsCalled;
+}
+
+void TestCustomActor::ResetCallStack()
+{
+ GetImpl().ResetCallStack();
+}
+
+void TestCustomActor::SetDaliProperty(std::string s)
+{
+ GetImpl().SetDaliProperty(s);
+}
+
+Vector3 TestCustomActor::GetSize()
+{
+ return GetImpl().mSizeSet;
+}
+
+Vector3 TestCustomActor::GetTargetSize()
+{
+ return GetImpl().mTargetSize;
+}
+
+Vector3 TestCustomActor::GetNaturalSize()
+{
+ return Vector3( 0.0f, 0.0f, 0.0f );
+}
+
+float TestCustomActor::GetHeightForWidth( float width )
+{
+ return 0.0f;
+}
+
+float TestCustomActor::GetWidthForHeight( float height )
+{
+ return 0.0f;
+}
+
+void TestCustomActor::OnRelayout( const Vector2& size, RelayoutContainer& container )
+{
+}
+
+void TestCustomActor::OnLayoutNegotiated( float size, Dimension::Type dimension )
+{
+}
+
+void TestCustomActor::OnCalculateRelayoutSize( Dimension::Type dimension )
+{
+}
+
+void TestCustomActor::TestRelayoutRequest()
+{
+ GetImpl().TestRelayoutRequest();
+}
+
+float TestCustomActor::TestGetHeightForWidthBase( float width )
+{
+ return GetImpl().TestGetHeightForWidthBase( width );
+}
+
+float TestCustomActor::TestGetWidthForHeightBase( float height )
+{
+ return GetImpl().TestGetWidthForHeightBase( height );
+}
+
+float TestCustomActor::TestCalculateChildSizeBase( const Dali::Actor& child, Dimension::Type dimension )
+{
+ return GetImpl().TestCalculateChildSizeBase( child, dimension );
+}
+
+bool TestCustomActor::TestRelayoutDependentOnChildrenBase( Dimension::Type dimension )
+{
+ return GetImpl().TestRelayoutDependentOnChildrenBase( dimension );
+}
+
+unsigned int TestCustomActor::GetDepth()
+{
+ return GetImpl().mDepth;
+}
+
+TestCustomActor::TestCustomActor()
+{
+}
+
+TestCustomActor::TestCustomActor( Impl::TestCustomActor& impl )
+: CustomActor( impl )
+{
+}
+
+TestCustomActor::TestCustomActor( Dali::Internal::CustomActor* internal )
+: CustomActor( internal )
+{
+}
+
+TestCustomActor TestCustomActor::DownCast( BaseHandle handle )
+{
+ TestCustomActor actor;
+ CustomActor custom = Dali::CustomActor::DownCast(handle);
+ if(custom)
+ {
+ CustomActorImpl& customImpl = custom.GetImplementation();
+
+ Test::Impl::TestCustomActor* impl = dynamic_cast<Test::Impl::TestCustomActor*>(&customImpl);
+ if( impl )
+ {
+ actor = TestCustomActor(customImpl.GetOwner());
+ }
+ }
+ return actor;
+}
+
+namespace Impl
+{
+
+TestCustomActor::TestCustomActor()
+: CustomActorImpl( ActorFlags( REQUIRES_TOUCH_EVENTS | REQUIRES_WHEEL_EVENTS | REQUIRES_HOVER_EVENTS | DISABLE_SIZE_NEGOTIATION ) ),
+ mDaliProperty( Property::INVALID_INDEX ),
+ mSizeSet( Vector3::ZERO ),
+ mTargetSize( Vector3::ZERO ),
+ mNego( false ),
+ mDepth(0u)
+{
+}
+
+TestCustomActor::TestCustomActor(bool nego)
+: CustomActorImpl( ActorFlags( REQUIRES_TOUCH_EVENTS | REQUIRES_WHEEL_EVENTS | REQUIRES_HOVER_EVENTS ) ),
+ mDaliProperty( Property::INVALID_INDEX ),
+ mSizeSet( Vector3::ZERO ),
+ mTargetSize( Vector3::ZERO ),
+ mNego( nego )
+{
+}
+/**
+ * Destructor
+ */
+TestCustomActor::~TestCustomActor()
+{
+}
+
+void TestCustomActor::Initialize( const char* name )
+{
+ mDaliProperty = Self().RegisterProperty( "Dali", std::string("no"), Property::READ_WRITE);
+
+ OnInitialize( name );
+}
+
+void TestCustomActor::OnInitialize( const char* name ) {}
+
+/**
+ * Resets the call stack
+ */
+void TestCustomActor::ResetCallStack()
+{
+ mSizeSet = Vector3();
+ mTargetSize = Vector3();
+ mMethodsCalled.clear();
+}
+
+void TestCustomActor::AddToCallStacks( const char* method )
+{
+ mMethodsCalled.push_back( method );
+
+ // Combine Actor name with method string
+ std::string nameAndMethod( Self().GetName() );
+ if ( 0 == nameAndMethod.size() )
+ {
+ nameAndMethod = "Unknown: ";
+ }
+ else
+ {
+ nameAndMethod += ": ";
+ }
+ nameAndMethod += method;
+
+ MasterCallStack.push_back( nameAndMethod );
+}
+
+// From CustomActorImpl
+void TestCustomActor::OnStageConnection( int depth )
+{
+ AddToCallStacks("OnStageConnection");
+ mDepth = depth;
+}
+void TestCustomActor::OnStageDisconnection()
+{
+ AddToCallStacks("OnStageDisconnection");
+}
+void TestCustomActor::OnChildAdd(Actor& child)
+{
+ AddToCallStacks("OnChildAdd");
+}
+void TestCustomActor::OnChildRemove(Actor& child)
+{
+ AddToCallStacks("OnChildRemove");
+}
+void TestCustomActor::OnPropertySet( Property::Index index, Property::Value propertyValue )
+{
+ AddToCallStacks("OnPropertySet");
+}
+void TestCustomActor::OnSizeSet(const Vector3& targetSize)
+{
+ mSizeSet = targetSize;
+ AddToCallStacks("OnSizeSet");
+}
+void TestCustomActor::OnSizeAnimation(Animation& animation, const Vector3& targetSize)
+{
+ mTargetSize = targetSize;
+ AddToCallStacks("OnSizeAnimation");
+}
+bool TestCustomActor::OnTouchEvent(const TouchEvent& event)
+{
+ AddToCallStacks("OnTouchEvent");
+ return true;
+}
+bool TestCustomActor::OnHoverEvent(const HoverEvent& event)
+{
+ AddToCallStacks("OnHoverEvent");
+ return true;
+}
+bool TestCustomActor::OnWheelEvent(const WheelEvent& event)
+{
+ AddToCallStacks("OnWheelEvent");
+ return true;
+}
+bool TestCustomActor::OnKeyEvent(const KeyEvent& event)
+{
+ AddToCallStacks("OnKeyEvent");
+ return true;
+}
+void TestCustomActor::OnKeyInputFocusGained()
+{
+ AddToCallStacks("OnKeyInputFocusGained");
+}
+void TestCustomActor::OnKeyInputFocusLost()
+{
+ AddToCallStacks("OnKeyInputFocusLost");
+}
+Vector3 TestCustomActor::GetNaturalSize()
+{
+ return Vector3( 0.0f, 0.0f, 0.0f );
+}
+
+float TestCustomActor::GetHeightForWidth( float width )
+{
+ return 0.0f;
+}
+
+float TestCustomActor::GetWidthForHeight( float height )
+{
+ return 0.0f;
+}
+
+void TestCustomActor::OnRelayout( const Vector2& size, RelayoutContainer& container )
+{
+ gOnRelayout = true;
+}
+
+void TestCustomActor::OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
+{
+}
+
+void TestCustomActor::OnCalculateRelayoutSize( Dimension::Type dimension )
+{
+}
+
+float TestCustomActor::CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension )
+{
+ return 0.0f;
+}
+
+void TestCustomActor::OnLayoutNegotiated( float size, Dimension::Type dimension )
+{
+}
+
+bool TestCustomActor::RelayoutDependentOnChildren( Dimension::Type dimension )
+{
+ return false;
+}
+
+void TestCustomActor::SetDaliProperty(std::string s)
+{
+ Self().SetProperty(mDaliProperty, s);
+}
+void TestCustomActor::TestRelayoutRequest()
+{
+ RelayoutRequest();
+}
+
+float TestCustomActor::TestGetHeightForWidthBase( float width )
+{
+ return GetHeightForWidthBase( width );
+}
+
+float TestCustomActor::TestGetWidthForHeightBase( float height )
+{
+ return GetWidthForHeightBase( height );
+}
+
+float TestCustomActor::TestCalculateChildSizeBase( const Dali::Actor& child, Dimension::Type dimension )
+{
+ return CalculateChildSizeBase( child, dimension );
+}
+
+bool TestCustomActor::TestRelayoutDependentOnChildrenBase( Dimension::Type dimension )
+{
+ return RelayoutDependentOnChildrenBase( dimension );
+}
+
+void TestCustomActor::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value )
+{
+ Test::TestCustomActor actor = Test::TestCustomActor::DownCast( Dali::BaseHandle( object ) );
+
+ if ( actor )
+ {
+ TestCustomActor& actorImpl = GetImpl(actor);
+ switch(index)
+ {
+ case Test::TestCustomActor::Property::TEST_PROPERTY1:
+ {
+ actorImpl.prop1 = value.Get<float>();
+ break;
+ }
+ case Test::TestCustomActor::Property::TEST_PROPERTY2:
+ {
+ actorImpl.prop2 = value.Get<Vector4>();
+ break;
+ }
+ case Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY3:
+ {
+ actorImpl.develProp3 = value.Get<Vector4>();
+ break;
+ }
+ case Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY4:
+ {
+ actorImpl.develProp4 = value.Get<int>();
+ break;
+ }
+ case Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY5:
+ {
+ actorImpl.develProp5 = value.Get<float>();
+ break;
+ }
+ }
+ }
+}
+
+Property::Value TestCustomActor::GetProperty( BaseObject* object, Property::Index index )
+{
+ Test::TestCustomActor actor = Test::TestCustomActor::DownCast( Dali::BaseHandle( object ) );
+
+ if ( actor )
+ {
+ TestCustomActor& actorImpl = GetImpl(actor);
+ switch(index)
+ {
+ case Test::TestCustomActor::Property::TEST_PROPERTY1:
+ {
+ return Property::Value(actorImpl.prop1);
+ }
+ case Test::TestCustomActor::Property::TEST_PROPERTY2:
+ {
+ return Property::Value(actorImpl.prop2);
+ }
+ case Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY3:
+ {
+ return Property::Value(actorImpl.develProp3);
+ }
+ case Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY4:
+ {
+ return Property::Value(actorImpl.develProp4);
+ }
+ case Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY5:
+ {
+ return Property::Value(actorImpl.develProp5);
+ }
+ }
+ }
+ return Property::Value();
+}
+
+
+BaseHandle CreateActor()
+{
+ return Test::TestCustomActor::New();
+}
+
+DALI_TYPE_REGISTRATION_BEGIN( Test::TestCustomActor, Dali::CustomActor, CreateActor );
+
+DALI_PROPERTY_REGISTRATION( Test, TestCustomActor, "testProperty1", FLOAT, TEST_PROPERTY1)
+DALI_PROPERTY_REGISTRATION( Test, TestCustomActor, "testProperty2", VECTOR4, TEST_PROPERTY2)
+DALI_DEVEL_PROPERTY_REGISTRATION( Test, TestCustomActor, "develTestProperty3", VECTOR4, DEVEL_TEST_PROPERTY3)
+DALI_DEVEL_PROPERTY_REGISTRATION( Test, TestCustomActor, "develTestProperty4", INTEGER, DEVEL_TEST_PROPERTY4)
+DALI_DEVEL_PROPERTY_REGISTRATION( Test, TestCustomActor, "develTestProperty5", FLOAT, DEVEL_TEST_PROPERTY5)
+
+DALI_TYPE_REGISTRATION_END()
+
+} // Impl
+} // Test namespace
--- /dev/null
+#ifndef TEST_CUSTOM_ACTOR_H
+#define TEST_CUSTOM_ACTOR_H
+
+#include <dali/dali.h>
+#include <dali/devel-api/object/property-helper-devel.h>
+
+extern std::vector< std::string > MasterCallStack;
+extern bool gOnRelayout;
+
+namespace Test
+{
+namespace Impl
+{
+struct TestCustomActor;
+}
+
+/**
+ * Test custom actor handle
+ */
+class TestCustomActor : public Dali::CustomActor
+{
+public:
+ enum PropertyRange
+ {
+ PROPERTY_START_INDEX = Dali::PROPERTY_REGISTRATION_START_INDEX,
+ PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000
+ };
+
+ struct Property
+ {
+ enum Type
+ {
+ TEST_PROPERTY1 = PROPERTY_START_INDEX,
+ TEST_PROPERTY2
+ };
+ };
+
+ TestCustomActor();
+ static TestCustomActor New();
+ static TestCustomActor NewNegoSize();
+ static TestCustomActor NewVariant1( Actor childToAdd );
+ static TestCustomActor NewVariant2();
+ static TestCustomActor NewVariant3( Actor childToAdd );
+ static TestCustomActor NewVariant4();
+ static TestCustomActor NewVariant5();
+ static TestCustomActor NewVariant6();
+ static TestCustomActor NewVariant7( const char* name );
+ static TestCustomActor NewVariant8( Actor rival );
+ static TestCustomActor DownCast( Dali::BaseHandle handle );
+
+ virtual ~TestCustomActor();
+ Impl::TestCustomActor& GetImpl();
+
+ std::vector< std::string >& GetMethodsCalled();
+ void ResetCallStack();
+ void SetDaliProperty(std::string s);
+ Dali::Vector3 GetSize();
+ Dali::Vector3 GetTargetSize();
+ virtual Dali::Vector3 GetNaturalSize();
+ virtual float GetHeightForWidth( float width );
+ virtual float GetWidthForHeight( float height );
+ virtual void OnRelayout( const Dali::Vector2& size, Dali::RelayoutContainer& container );
+ virtual void OnLayoutNegotiated( float size, Dali::Dimension::Type dimension );
+ virtual void OnCalculateRelayoutSize( Dali::Dimension::Type dimension );
+ void TestRelayoutRequest();
+ float TestGetHeightForWidthBase( float width );
+ float TestGetWidthForHeightBase( float height );
+ float TestCalculateChildSizeBase( const Dali::Actor& child, Dali::Dimension::Type dimension );
+ bool TestRelayoutDependentOnChildrenBase( Dali::Dimension::Type dimension );
+ unsigned int GetDepth();
+
+private:
+ TestCustomActor( Impl::TestCustomActor& impl );
+ explicit TestCustomActor(Dali::Internal::CustomActor* internal);
+};
+
+
+namespace DevelTestCustomActor
+{
+namespace Property
+{
+enum Type
+{
+ TEST_PROPERTY1 = Test::TestCustomActor::Property::TEST_PROPERTY1,
+ TEST_PROPERTY2 = Test::TestCustomActor::Property::TEST_PROPERTY2,
+ DEVEL_TEST_PROPERTY3 = TEST_PROPERTY2+1,
+ DEVEL_TEST_PROPERTY4 = TEST_PROPERTY2+2,
+ DEVEL_TEST_PROPERTY5 = TEST_PROPERTY2+3
+};
+
+} // Namespace Property
+} // Namespace DevelTestCustomActor
+
+
+// TypeRegistry needs custom actor Implementations to have the same name (namespaces are ignored so we use one here)
+namespace Impl
+{
+
+struct TestCustomActor : public Dali::CustomActorImpl
+{
+public:
+ /**
+ * Constructor
+ */
+ TestCustomActor();
+ TestCustomActor(bool nego);
+ virtual ~TestCustomActor();
+ void Initialize( const char* name = NULL );
+ virtual void OnInitialize( const char* name );
+ void ResetCallStack();
+ void AddToCallStacks( const char* method );
+ virtual void OnStageConnection( int depth );
+ virtual void OnStageDisconnection();
+ virtual void OnChildAdd(Dali::Actor& child);
+ virtual void OnChildRemove(Dali::Actor& child);
+ virtual void OnPropertySet( Dali::Property::Index index, Dali::Property::Value propertyValue );
+ virtual void OnSizeSet(const Dali::Vector3& targetSize);
+ virtual void OnSizeAnimation(Dali::Animation& animation, const Dali::Vector3& targetSize);
+ virtual bool OnTouchEvent(const Dali::TouchEvent& event);
+ virtual bool OnHoverEvent(const Dali::HoverEvent& event);
+ virtual bool OnWheelEvent(const Dali::WheelEvent& event);
+ virtual bool OnKeyEvent(const Dali::KeyEvent& event);
+ virtual void OnKeyInputFocusGained();
+ virtual void OnKeyInputFocusLost();
+ virtual Dali::Vector3 GetNaturalSize();
+ virtual float GetHeightForWidth( float width );
+ virtual float GetWidthForHeight( float height );
+ virtual void OnRelayout( const Dali::Vector2& size, Dali::RelayoutContainer& container );
+ virtual void OnSetResizePolicy( Dali::ResizePolicy::Type policy, Dali::Dimension::Type dimension );
+ virtual void OnCalculateRelayoutSize( Dali::Dimension::Type dimension );
+ virtual float CalculateChildSize( const Dali::Actor& child, Dali::Dimension::Type dimension );
+ virtual void OnLayoutNegotiated( float size, Dali::Dimension::Type dimension );
+ virtual bool RelayoutDependentOnChildren( Dali::Dimension::Type dimension = Dali::Dimension::ALL_DIMENSIONS );
+ static void SetProperty( Dali::BaseObject* object, Dali::Property::Index index, const Dali::Property::Value& value );
+ static Dali::Property::Value GetProperty( Dali::BaseObject* object, Dali::Property::Index index );
+
+ void SetDaliProperty(std::string s);
+ void TestRelayoutRequest();
+ float TestGetHeightForWidthBase( float width );
+ float TestGetWidthForHeightBase( float height );
+ float TestCalculateChildSizeBase( const Dali::Actor& child, Dali::Dimension::Type dimension );
+ bool TestRelayoutDependentOnChildrenBase( Dali::Dimension::Type dimension );
+
+public:
+ Dali::Property::Index mDaliProperty;
+ std::vector< std::string > mMethodsCalled;
+ Dali::Vector3 mSizeSet;
+ Dali::Vector3 mTargetSize;
+ bool mNego;
+ unsigned int mDepth;
+
+ float prop1;
+ Dali::Vector4 prop2;
+ Dali::Vector4 develProp3;
+ int develProp4;
+ float develProp5;
+};
+
+inline TestCustomActor& GetImpl( Test::TestCustomActor& handle )
+{
+ DALI_ASSERT_ALWAYS( handle );
+ Dali::RefObject& object = handle.GetImplementation();
+ return static_cast<TestCustomActor&>( object );
+}
+
+inline const TestCustomActor& GetImpl( const Test::TestCustomActor& handle )
+{
+ DALI_ASSERT_ALWAYS( handle );
+ const Dali::RefObject& object = handle.GetImplementation();
+ return static_cast<const TestCustomActor&>( object );
+}
+
+
+/**
+ * Variant which adds a new child during OnStageConnection
+ */
+struct TestCustomActorVariant1 : public TestCustomActor
+{
+ /**
+ * Constructor
+ */
+ TestCustomActorVariant1( Dali::Actor childToAdd )
+ : mChildToAdd( childToAdd )
+ {
+ }
+
+ // From CustomActorImpl
+ virtual void OnStageConnection( int depth )
+ {
+ // Chain up first
+ TestCustomActor::OnStageConnection( depth );
+
+ // Add the child
+ Self().Add( mChildToAdd );
+ }
+
+ Dali::Actor mChildToAdd;
+};
+
+/**
+ * Variant which removes children during OnStageConnection
+ */
+struct TestCustomActorVariant2 : public TestCustomActor
+{
+ /**
+ * Constructor
+ */
+ TestCustomActorVariant2()
+ {
+ }
+
+ // From CustomActorImpl
+ virtual void OnStageConnection( int depth )
+ {
+ // Chain up first
+ TestCustomActor::OnStageConnection( depth );
+
+ // Remove all the children
+ for( unsigned int i=0, num=Self().GetChildCount(); i<num; ++i )
+ {
+ Self().Remove( Self().GetChildAt(0) );
+ }
+ }
+};
+
+/**
+ * Variant which adds a new child during OnStageDisconnection
+ */
+struct TestCustomActorVariant3 : public TestCustomActor
+{
+ /**
+ * Constructor
+ */
+ TestCustomActorVariant3( Dali::Actor childToAdd )
+ : mChildToAdd( childToAdd )
+ {
+ }
+
+ // From CustomActorImpl
+ virtual void OnStageDisconnection()
+ {
+ // Chain up first
+ TestCustomActor::OnStageDisconnection();
+
+ // Add the child
+ Self().Add( mChildToAdd );
+ }
+
+ Dali::Actor mChildToAdd;
+};
+
+/**
+ * Variant which removes children during OnStageDisconnection
+ */
+struct TestCustomActorVariant4 : public TestCustomActor
+{
+ /**
+ * Constructor
+ */
+ TestCustomActorVariant4()
+ {
+ }
+
+ // From CustomActorImpl
+ virtual void OnStageDisconnection()
+ {
+ // Chain up first
+ TestCustomActor::OnStageDisconnection();
+
+ // Remove all the children
+ for( unsigned int i=0, num=Self().GetChildCount(); i<num; ++i )
+ {
+ Self().Remove( Self().GetChildAt(0) );
+ }
+ }
+};
+
+/**
+ * Variant which removes its parent from Stage during OnStageConnection
+ */
+struct TestCustomActorVariant5 : public TestCustomActor
+{
+ /**
+ * Constructor
+ */
+ TestCustomActorVariant5()
+ {
+ }
+
+ // From CustomActorImpl
+ virtual void OnStageConnection( int depth )
+ {
+ // Chain up first
+ TestCustomActor::OnStageConnection( depth );
+
+ // Take parent off-stage
+ Dali::Actor parent = Self().GetParent();
+ if ( parent )
+ {
+ Dali::Stage::GetCurrent().Remove( parent );
+ }
+ }
+};
+
+/**
+ * Variant which adds its parent to Stage during OnStageDisconnection
+ */
+struct TestCustomActorVariant6 : public TestCustomActor
+{
+ /**
+ * Constructor
+ */
+ TestCustomActorVariant6()
+ {
+ }
+
+ // From CustomActorImpl
+ virtual void OnStageDisconnection()
+ {
+ // Chain up first
+ TestCustomActor::OnStageDisconnection();
+
+ // Put parent on-stage
+ Dali::Actor parent = Self().GetParent();
+ if ( parent )
+ {
+ Dali::Stage::GetCurrent().Add( parent );
+ }
+ }
+};
+
+/**
+ * Variant which reparents its children into a separate container
+ */
+struct TestCustomActorVariant7 : public TestCustomActor
+{
+ /**
+ * Constructor
+ */
+ TestCustomActorVariant7()
+ {
+ }
+
+ virtual void OnInitialize( const char* name )
+ {
+ // We need to do this early, before the OnChildAdd is recorded
+ Self().SetName( name );
+
+ mContainer = Dali::Actor::New();
+ mContainer.SetName( "Container" );
+ Self().Add( mContainer );
+ }
+
+ // From CustomActorImpl
+ virtual void OnChildAdd(Dali::Actor& child)
+ {
+ // Chain up first
+ TestCustomActor::OnChildAdd(child);
+
+ // Reparent child
+ if ( child != mContainer )
+ {
+ mContainer.Add( child );
+ }
+ }
+
+ Dali::Actor mContainer;
+};
+
+/**
+ * Variant which attempts to interfere with the reparenting of a child to another container
+ */
+struct TestCustomActorVariant8 : public TestCustomActor
+{
+ /**
+ * Constructor
+ */
+ TestCustomActorVariant8( Dali::Actor rival )
+ : mRivalContainer( rival )
+ {
+ }
+
+ // From CustomActorImpl
+ virtual void OnChildRemove(Dali::Actor& child)
+ {
+ // Chain up first
+ TestCustomActor::OnChildRemove(child);
+
+ mRivalContainer.Remove( child ); // attempt to block reparenting to rival (should be a NOOP)
+ }
+
+ Dali::Actor mRivalContainer;
+};
+
+// Need a class that doesn't override virtual methods
+class SimpleTestCustomActor : public Dali::CustomActorImpl
+{
+public:
+
+ /**
+ * Constructor
+ */
+ SimpleTestCustomActor()
+ : CustomActorImpl( ActorFlags( REQUIRES_TOUCH_EVENTS | DISABLE_SIZE_NEGOTIATION ) )
+ {
+ }
+
+ /**
+ * Destructor
+ */
+ virtual ~SimpleTestCustomActor()
+ {
+ }
+
+ // From CustomActorImpl
+ virtual void OnStageConnection( int depth )
+ {
+ }
+ virtual void OnStageDisconnection()
+ {
+ }
+ virtual void OnChildAdd(Dali::Actor& child)
+ {
+ }
+ virtual void OnChildRemove(Dali::Actor& child)
+ {
+ }
+ virtual void OnSizeSet(const Dali::Vector3& targetSize)
+ {
+ }
+ virtual void OnSizeAnimation(Dali::Animation& animation, const Dali::Vector3& targetSize)
+ {
+ }
+ virtual bool OnTouchEvent(const Dali::TouchEvent& event)
+ {
+ return true;
+ }
+ virtual bool OnHoverEvent(const Dali::HoverEvent& event)
+ {
+ return true;
+ }
+ virtual bool OnWheelEvent(const Dali::WheelEvent& event)
+ {
+ return true;
+ }
+ virtual bool OnKeyEvent(const Dali::KeyEvent& event)
+ {
+ return true;
+ }
+ virtual void OnKeyInputFocusGained()
+ {
+ }
+ virtual void OnKeyInputFocusLost()
+ {
+ }
+
+ virtual Dali::Vector3 GetNaturalSize()
+ {
+ return Dali::Vector3( 0.0f, 0.0f, 0.0f );
+ }
+
+ virtual float GetHeightForWidth( float width )
+ {
+ return 0.0f;
+ }
+
+ virtual float GetWidthForHeight( float height )
+ {
+ return 0.0f;
+ }
+
+ virtual void OnRelayout( const Dali::Vector2& size, Dali::RelayoutContainer& container )
+ {
+ }
+
+ virtual void OnSetResizePolicy( Dali::ResizePolicy::Type policy, Dali::Dimension::Type dimension )
+ {
+ }
+
+ virtual void OnCalculateRelayoutSize( Dali::Dimension::Type dimension )
+ {
+ }
+
+ virtual float CalculateChildSize( const Dali::Actor& child, Dali::Dimension::Type dimension )
+ {
+ return 0.0f;
+ }
+
+ virtual void OnLayoutNegotiated( float size, Dali::Dimension::Type dimension )
+ {
+ }
+
+ virtual bool RelayoutDependentOnChildren( Dali::Dimension::Type dimension = Dali::Dimension::ALL_DIMENSIONS )
+ {
+ return false;
+ }
+};
+
+} //namespace Impl
+} //namespace Test
+
+#endif // TEST_CUSTOM_ACTOR_H
#include <dali/integration-api/events/hover-event-integ.h>
#include <dali/integration-api/events/wheel-event-integ.h>
#include <dali/integration-api/events/key-event-integ.h>
-
+#include <dali/public-api/object/type-registry-helper.h>
#include "dali-test-suite-utils/dali-test-suite-utils.h"
+#include "test-custom-actor.h"
using namespace Dali;
test_return_value = TET_PASS;
}
-namespace
-{
-
-std::vector< std::string > MasterCallStack;
-bool gOnRelayout = false;
-
-} // anon namespace
-
-// TypeRegistry needs custom actor Implementations to have the same name (namespaces are ignored so we use one here)
-namespace Impl
-{
-
-struct TestCustomActor : public CustomActorImpl
-{
- /**
- * Constructor
- */
- TestCustomActor()
- : CustomActorImpl( ActorFlags( REQUIRES_TOUCH_EVENTS | REQUIRES_WHEEL_EVENTS | REQUIRES_HOVER_EVENTS | DISABLE_SIZE_NEGOTIATION ) ),
- mDaliProperty( Property::INVALID_INDEX ),
- mSizeSet( Vector3::ZERO ),
- mTargetSize( Vector3::ZERO ),
- mNego( false ),
- mDepth(0u)
- {
- }
-
- TestCustomActor(bool nego)
- : CustomActorImpl( ActorFlags( REQUIRES_TOUCH_EVENTS | REQUIRES_WHEEL_EVENTS | REQUIRES_HOVER_EVENTS ) ),
- mDaliProperty( Property::INVALID_INDEX ),
- mSizeSet( Vector3::ZERO ),
- mTargetSize( Vector3::ZERO ),
- mNego( nego )
- {
- }
- /**
- * Destructor
- */
- virtual ~TestCustomActor()
- {
- }
-
- void Initialize( const char* name = NULL )
- {
- mDaliProperty = Self().RegisterProperty( "Dali", std::string("no"), Property::READ_WRITE);
-
- OnInitialize( name );
- }
-
- virtual void OnInitialize( const char* name ) {}
-
- /**
- * Resets the call stack
- */
- void ResetCallStack()
- {
- mSizeSet = Vector3();
- mTargetSize = Vector3();
- mMethodsCalled.clear();
- }
-
- void AddToCallStacks( const char* method )
- {
- mMethodsCalled.push_back( method );
-
- // Combine Actor name with method string
- std::string nameAndMethod( Self().GetName() );
- if ( 0 == nameAndMethod.size() )
- {
- nameAndMethod = "Unknown: ";
- }
- else
- {
- nameAndMethod += ": ";
- }
- nameAndMethod += method;
-
- MasterCallStack.push_back( nameAndMethod );
- }
-
- // From CustomActorImpl
- virtual void OnStageConnection( int depth )
- {
- AddToCallStacks("OnStageConnection");
- mDepth = depth;
- }
- virtual void OnStageDisconnection()
- {
- AddToCallStacks("OnStageDisconnection");
- }
- virtual void OnChildAdd(Actor& child)
- {
- AddToCallStacks("OnChildAdd");
- }
- virtual void OnChildRemove(Actor& child)
- {
- AddToCallStacks("OnChildRemove");
- }
- virtual void OnPropertySet( Property::Index index, Property::Value propertyValue )
- {
- AddToCallStacks("OnPropertySet");
- }
- virtual void OnSizeSet(const Vector3& targetSize)
- {
- mSizeSet = targetSize;
- AddToCallStacks("OnSizeSet");
- }
- virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize)
- {
- mTargetSize = targetSize;
- AddToCallStacks("OnSizeAnimation");
- }
- virtual bool OnTouchEvent(const TouchEvent& event)
- {
- AddToCallStacks("OnTouchEvent");
- return true;
- }
- virtual bool OnHoverEvent(const HoverEvent& event)
- {
- AddToCallStacks("OnHoverEvent");
- return true;
- }
- virtual bool OnWheelEvent(const WheelEvent& event)
- {
- AddToCallStacks("OnWheelEvent");
- return true;
- }
- virtual bool OnKeyEvent(const KeyEvent& event)
- {
- AddToCallStacks("OnKeyEvent");
- return true;
- }
- virtual void OnKeyInputFocusGained()
- {
- AddToCallStacks("OnKeyInputFocusGained");
- }
- virtual void OnKeyInputFocusLost()
- {
- AddToCallStacks("OnKeyInputFocusLost");
- }
- virtual Vector3 GetNaturalSize()
- {
- return Vector3( 0.0f, 0.0f, 0.0f );
- }
-
- virtual float GetHeightForWidth( float width )
- {
- return 0.0f;
- }
-
- virtual float GetWidthForHeight( float height )
- {
- return 0.0f;
- }
-
- virtual void OnRelayout( const Vector2& size, RelayoutContainer& container )
- {
- gOnRelayout = true;
- }
-
- virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
- {
- }
-
- virtual void OnCalculateRelayoutSize( Dimension::Type dimension )
- {
- }
-
- virtual float CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension )
- {
- return 0.0f;
- }
-
- virtual void OnLayoutNegotiated( float size, Dimension::Type dimension )
- {
- }
-
- virtual bool RelayoutDependentOnChildren( Dimension::Type dimension = Dimension::ALL_DIMENSIONS )
- {
- return false;
- }
-
- void SetDaliProperty(std::string s)
- {
- Self().SetProperty(mDaliProperty, s);
- }
- void TestRelayoutRequest()
- {
- RelayoutRequest();
- }
-
- float TestGetHeightForWidthBase( float width )
- {
- return GetHeightForWidthBase( width );
- }
-
- float TestGetWidthForHeightBase( float height )
- {
- return GetWidthForHeightBase( height );
- }
-
- float TestCalculateChildSizeBase( const Dali::Actor& child, Dimension::Type dimension )
- {
- return CalculateChildSizeBase( child, dimension );
- }
-
- bool TestRelayoutDependentOnChildrenBase( Dimension::Type dimension )
- {
- return RelayoutDependentOnChildrenBase( dimension );
- }
-
- Property::Index mDaliProperty;
- std::vector< std::string > mMethodsCalled;
- Vector3 mSizeSet;
- Vector3 mTargetSize;
- bool mNego;
- unsigned int mDepth;
-};
-
-/**
- * Variant which adds a new child during OnStageConnection
- */
-struct TestCustomActorVariant1 : public TestCustomActor
-{
- /**
- * Constructor
- */
- TestCustomActorVariant1( Actor childToAdd )
- : mChildToAdd( childToAdd )
- {
- }
-
- // From CustomActorImpl
- virtual void OnStageConnection( int depth )
- {
- // Chain up first
- TestCustomActor::OnStageConnection( depth );
-
- // Add the child
- Self().Add( mChildToAdd );
- }
-
- Actor mChildToAdd;
-};
-
-/**
- * Variant which removes children during OnStageConnection
- */
-struct TestCustomActorVariant2 : public TestCustomActor
-{
- /**
- * Constructor
- */
- TestCustomActorVariant2()
- {
- }
-
- // From CustomActorImpl
- virtual void OnStageConnection( int depth )
- {
- // Chain up first
- TestCustomActor::OnStageConnection( depth );
-
- // Remove all the children
- for( unsigned int i=0, num=Self().GetChildCount(); i<num; ++i )
- {
- Self().Remove( Self().GetChildAt(0) );
- }
- }
-};
-
-/**
- * Variant which adds a new child during OnStageDisconnection
- */
-struct TestCustomActorVariant3 : public TestCustomActor
-{
- /**
- * Constructor
- */
- TestCustomActorVariant3( Actor childToAdd )
- : mChildToAdd( childToAdd )
- {
- }
-
- // From CustomActorImpl
- virtual void OnStageDisconnection()
- {
- // Chain up first
- TestCustomActor::OnStageDisconnection();
-
- // Add the child
- Self().Add( mChildToAdd );
- }
-
- Actor mChildToAdd;
-};
-
-/**
- * Variant which removes children during OnStageDisconnection
- */
-struct TestCustomActorVariant4 : public TestCustomActor
-{
- /**
- * Constructor
- */
- TestCustomActorVariant4()
- {
- }
-
- // From CustomActorImpl
- virtual void OnStageDisconnection()
- {
- // Chain up first
- TestCustomActor::OnStageDisconnection();
-
- // Remove all the children
- for( unsigned int i=0, num=Self().GetChildCount(); i<num; ++i )
- {
- Self().Remove( Self().GetChildAt(0) );
- }
- }
-};
-
-/**
- * Variant which removes its parent from Stage during OnStageConnection
- */
-struct TestCustomActorVariant5 : public TestCustomActor
-{
- /**
- * Constructor
- */
- TestCustomActorVariant5()
- {
- }
-
- // From CustomActorImpl
- virtual void OnStageConnection( int depth )
- {
- // Chain up first
- TestCustomActor::OnStageConnection( depth );
-
- // Take parent off-stage
- Actor parent = Self().GetParent();
- if ( parent )
- {
- Stage::GetCurrent().Remove( parent );
- }
- }
-};
-
-/**
- * Variant which adds its parent to Stage during OnStageDisconnection
- */
-struct TestCustomActorVariant6 : public TestCustomActor
-{
- /**
- * Constructor
- */
- TestCustomActorVariant6()
- {
- }
-
- // From CustomActorImpl
- virtual void OnStageDisconnection()
- {
- // Chain up first
- TestCustomActor::OnStageDisconnection();
-
- // Put parent on-stage
- Actor parent = Self().GetParent();
- if ( parent )
- {
- Stage::GetCurrent().Add( parent );
- }
- }
-};
-
-/**
- * Variant which reparents its children into a separate container
- */
-struct TestCustomActorVariant7 : public TestCustomActor
-{
- /**
- * Constructor
- */
- TestCustomActorVariant7()
- {
- }
-
- virtual void OnInitialize( const char* name )
- {
- // We need to do this early, before the OnChildAdd is recorded
- Self().SetName( name );
-
- mContainer = Actor::New();
- mContainer.SetName( "Container" );
- Self().Add( mContainer );
- }
-
- // From CustomActorImpl
- virtual void OnChildAdd(Actor& child)
- {
- // Chain up first
- TestCustomActor::OnChildAdd(child);
-
- // Reparent child
- if ( child != mContainer )
- {
- mContainer.Add( child );
- }
- }
-
- Actor mContainer;
-};
-
-/**
- * Variant which attempts to interfere with the reparenting of a child to another container
- */
-struct TestCustomActorVariant8 : public TestCustomActor
-{
- /**
- * Constructor
- */
- TestCustomActorVariant8( Actor rival )
- : mRivalContainer( rival )
- {
- }
-
- // From CustomActorImpl
- virtual void OnChildRemove(Actor& child)
- {
- // Chain up first
- TestCustomActor::OnChildRemove(child);
-
- mRivalContainer.Remove( child ); // attempt to block reparenting to rival (should be a NOOP)
- }
-
- Actor mRivalContainer;
-};
-
-// Need a class that doesn't override virtual methods
-class SimpleTestCustomActor : public CustomActorImpl
-{
-public:
-
- /**
- * Constructor
- */
- SimpleTestCustomActor()
- : CustomActorImpl( ActorFlags( REQUIRES_TOUCH_EVENTS | DISABLE_SIZE_NEGOTIATION ) )
- {
- }
-
- /**
- * Destructor
- */
- virtual ~SimpleTestCustomActor()
- {
- }
-
- // From CustomActorImpl
- virtual void OnStageConnection( int depth )
- {
- }
- virtual void OnStageDisconnection()
- {
- }
- virtual void OnChildAdd(Actor& child)
- {
- }
- virtual void OnChildRemove(Actor& child)
- {
- }
- virtual void OnSizeSet(const Vector3& targetSize)
- {
- }
- virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize)
- {
- }
- virtual bool OnTouchEvent(const TouchEvent& event)
- {
- return true;
- }
- virtual bool OnHoverEvent(const HoverEvent& event)
- {
- return true;
- }
- virtual bool OnWheelEvent(const WheelEvent& event)
- {
- return true;
- }
- virtual bool OnKeyEvent(const KeyEvent& event)
- {
- return true;
- }
- virtual void OnKeyInputFocusGained()
- {
- }
- virtual void OnKeyInputFocusLost()
- {
- }
-
- virtual Vector3 GetNaturalSize()
- {
- return Vector3( 0.0f, 0.0f, 0.0f );
- }
-
- virtual float GetHeightForWidth( float width )
- {
- return 0.0f;
- }
-
- virtual float GetWidthForHeight( float height )
- {
- return 0.0f;
- }
-
- virtual void OnRelayout( const Vector2& size, RelayoutContainer& container )
- {
- }
-
- virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
- {
- }
-
- virtual void OnCalculateRelayoutSize( Dimension::Type dimension )
- {
- }
-
- virtual float CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension )
- {
- return 0.0f;
- }
-
- virtual void OnLayoutNegotiated( float size, Dimension::Type dimension )
- {
- }
-
- virtual bool RelayoutDependentOnChildren( Dimension::Type dimension = Dimension::ALL_DIMENSIONS )
- {
- return false;
- }
-};
-
-} ; // namespace Impl
-
-
-namespace
-{
-
-/**
- * Test custom actor handle
- */
-class TestCustomActor : public CustomActor
-{
-public:
-
- static TestCustomActor New()
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActor;
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize();
-
- return custom;
- }
-
- static TestCustomActor NewNegoSize()
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActor( true );
- TestCustomActor custom( *impl ); // takes ownership
- custom.SetName( "SizeNegotiationActor" );
-
- impl->Initialize();
-
- return custom;
- }
-
- static TestCustomActor NewVariant1( Actor childToAdd )
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant1( childToAdd );
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize();
-
- return custom;
- }
-
- static TestCustomActor NewVariant2()
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant2();
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize();
-
- return custom;
- }
-
- static TestCustomActor NewVariant3( Actor childToAdd )
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant3( childToAdd );
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize();
-
- return custom;
- }
-
- static TestCustomActor NewVariant4()
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant4();
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize();
-
- return custom;
- }
-
- static TestCustomActor NewVariant5()
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant5();
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize();
-
- return custom;
- }
-
- static TestCustomActor NewVariant6()
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant6();
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize();
-
- return custom;
- }
-
- static TestCustomActor NewVariant7( const char* name )
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant7();
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize( name );
-
- return custom;
- }
-
- static TestCustomActor NewVariant8( Actor rival )
- {
- Impl::TestCustomActor* impl = new Impl::TestCustomActorVariant8( rival );
- TestCustomActor custom( *impl ); // takes ownership
-
- impl->Initialize();
-
- return custom;
- }
-
- virtual ~TestCustomActor()
- {
- }
-
- Impl::TestCustomActor& GetImpl()
- {
- return static_cast<Impl::TestCustomActor&>(GetImplementation());
- }
-
- std::vector< std::string >& GetMethodsCalled()
- {
- return GetImpl().mMethodsCalled;
- }
-
- void ResetCallStack()
- {
- GetImpl().ResetCallStack();
- }
-
- void SetDaliProperty(std::string s)
- {
- GetImpl().SetDaliProperty(s);
- }
-
- Vector3 GetSize()
- {
- return GetImpl().mSizeSet;
- }
-
- Vector3 GetTargetSize()
- {
- return GetImpl().mTargetSize;
- }
-
- virtual Vector3 GetNaturalSize()
- {
- return Vector3( 0.0f, 0.0f, 0.0f );
- }
-
- virtual float GetHeightForWidth( float width )
- {
- return 0.0f;
- }
-
- virtual float GetWidthForHeight( float height )
- {
- return 0.0f;
- }
-
- virtual void OnRelayout( const Vector2& size, RelayoutContainer& container )
- {
- }
-
- virtual void OnLayoutNegotiated( float size, Dimension::Type dimension )
- {
- }
-
- virtual void OnCalculateRelayoutSize( Dimension::Type dimension )
- {
- }
-
- void TestRelayoutRequest()
- {
- GetImpl().TestRelayoutRequest();
- }
-
- float TestGetHeightForWidthBase( float width )
- {
- return GetImpl().TestGetHeightForWidthBase( width );
- }
-
- float TestGetWidthForHeightBase( float height )
- {
- return GetImpl().TestGetWidthForHeightBase( height );
- }
-
- float TestCalculateChildSizeBase( const Dali::Actor& child, Dimension::Type dimension )
- {
- return GetImpl().TestCalculateChildSizeBase( child, dimension );
- }
-
- bool TestRelayoutDependentOnChildrenBase( Dimension::Type dimension )
- {
- return GetImpl().TestRelayoutDependentOnChildrenBase( dimension );
- }
-
- unsigned int GetDepth()
- {
- return GetImpl().mDepth;
- }
-private:
-
- TestCustomActor( Impl::TestCustomActor& impl ) : CustomActor( impl )
- {
- }
-};
-
using namespace Dali;
-BaseHandle CreateActor()
-{
- return TestCustomActor::New();
-}
-
-Dali::TypeRegistration mType( typeid(TestCustomActor), typeid(Dali::CustomActor), CreateActor );
-
-} // anon namespace
-
int UtcDaliCustomActorDestructor(void)
{
int UtcDaliCustomActorImplDestructor(void)
{
TestApplication application;
- CustomActorImpl* actor = new Impl::TestCustomActor();
+ CustomActorImpl* actor = new Test::Impl::TestCustomActor();
CustomActor customActor( *actor ); // Will automatically unref at the end of this function
DALI_TEST_CHECK( true );
TestApplication application;
tet_infoline("Testing Dali::CustomActor::DownCast()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
Actor anActor = Actor::New();
anActor.Add( custom );
TestApplication application;
tet_infoline("Testing Dali::CustomActor::OnStageConnection() & OnStageDisconnection");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION );
// add the custom actor to stage
* OnStageConnection should be received for A, B, D, E, C, and finally F
*/
- TestCustomActor actorA = TestCustomActor::New();
+ Test::TestCustomActor actorA = Test::TestCustomActor::New();
actorA.SetName( "ActorA" );
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorB.SetName( "ActorB" );
actorA.Add( actorB );
- TestCustomActor actorC = TestCustomActor::New();
+ Test::TestCustomActor actorC = Test::TestCustomActor::New();
actorC.SetName( "ActorC" );
actorA.Add( actorC );
- TestCustomActor actorD = TestCustomActor::New();
+ Test::TestCustomActor actorD = Test::TestCustomActor::New();
actorD.SetName( "ActorD" );
actorB.Add( actorD );
- TestCustomActor actorE = TestCustomActor::New();
+ Test::TestCustomActor actorE = Test::TestCustomActor::New();
actorE.SetName( "ActorE" );
actorB.Add( actorE );
- TestCustomActor actorF = TestCustomActor::New();
+ Test::TestCustomActor actorF = Test::TestCustomActor::New();
actorF.SetName( "ActorF" );
actorC.Add( actorF );
* OnStageDisconnection should be received for D, E, B, F, C, and finally A.
*/
- TestCustomActor actorA = TestCustomActor::New();
+ Test::TestCustomActor actorA = Test::TestCustomActor::New();
actorA.SetName( "ActorA" );
stage.Add( actorA );
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorB.SetName( "ActorB" );
actorA.Add( actorB );
- TestCustomActor actorC = TestCustomActor::New();
+ Test::TestCustomActor actorC = Test::TestCustomActor::New();
actorC.SetName( "ActorC" );
actorA.Add( actorC );
- TestCustomActor actorD = TestCustomActor::New();
+ Test::TestCustomActor actorD = Test::TestCustomActor::New();
actorD.SetName( "ActorD" );
actorB.Add( actorD );
- TestCustomActor actorE = TestCustomActor::New();
+ Test::TestCustomActor actorE = Test::TestCustomActor::New();
actorE.SetName( "ActorE" );
actorB.Add( actorE );
- TestCustomActor actorF = TestCustomActor::New();
+ Test::TestCustomActor actorF = Test::TestCustomActor::New();
actorF.SetName( "ActorF" );
actorC.Add( actorF );
* The actorB is provided as the child
*/
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorB.SetName( "ActorB" );
- TestCustomActor actorA = TestCustomActor::NewVariant1( actorB );
+ Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant1( actorB );
actorA.SetName( "ActorA" );
stage.Add( actorA );
* Actors B & C are provided as the children
*/
- TestCustomActor actorA = TestCustomActor::NewVariant2();
+ Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant2();
actorA.SetName( "ActorA" );
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorB.SetName( "ActorB" );
actorA.Add( actorB );
- TestCustomActor actorC = TestCustomActor::New();
+ Test::TestCustomActor actorC = Test::TestCustomActor::New();
actorC.SetName( "ActorC" );
actorA.Add( actorC );
* The actorB is provided as the child
*/
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorB.SetName( "ActorB" );
- TestCustomActor actorA = TestCustomActor::NewVariant3( actorB );
+ Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant3( actorB );
actorA.SetName( "ActorA" );
stage.Add( actorA );
* The actorB is provided as the child
*/
- TestCustomActor actorA = TestCustomActor::NewVariant4();
+ Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant4();
actorA.SetName( "ActorA" );
stage.Add( actorA );
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorB.SetName( "ActorB" );
actorA.Add( actorB );
* The child actor is interrupting the parent's connection to stage, therefore the parent should not get an OnStageDisconnection()
*/
- TestCustomActor actorA = TestCustomActor::New();
+ Test::TestCustomActor actorA = Test::TestCustomActor::New();
actorA.SetName( "ActorA" );
- TestCustomActor actorB = TestCustomActor::NewVariant5();
+ Test::TestCustomActor actorB = Test::TestCustomActor::NewVariant5();
actorB.SetName( "ActorB" );
actorA.Add( actorB );
* The child actor is interrupting the disconnection, such that parent should not get a OnStageDisconnection()
*/
- TestCustomActor actorA = TestCustomActor::New();
+ Test::TestCustomActor actorA = Test::TestCustomActor::New();
actorA.SetName( "ActorA" );
stage.Add( actorA );
- TestCustomActor actorB = TestCustomActor::NewVariant6();
+ Test::TestCustomActor actorB = Test::TestCustomActor::NewVariant6();
actorB.SetName( "ActorB" );
actorA.Add( actorB );
TestApplication application;
tet_infoline("Testing Dali::CustomActor::OnChildAdd() & OnChildRemove()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION );
Actor aChild = Actor::New();
* The actorB is the child of actorA
*/
- TestCustomActor actorA = TestCustomActor::NewVariant7( "ActorA" );
+ Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant7( "ActorA" );
stage.Add( actorA );
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorB.SetName( "ActorB" );
actorA.Add( actorB );
* This should be a NOOP since the reparenting has not occured yet
*/
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorB.SetName( "ActorB" );
stage.Add( actorB );
- TestCustomActor actorA = TestCustomActor::NewVariant8( actorB );
+ Test::TestCustomActor actorA = Test::TestCustomActor::NewVariant8( actorB );
actorA.SetName( "ActorA" );
stage.Add( actorA );
TestApplication application;
tet_infoline("Testing Dali::CustomActor::OnPropertySet()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION );
custom.SetDaliProperty("yes");
TestApplication application;
tet_infoline("Testing Dali::CustomActor::OnSizeSet()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION );
custom.SetSize( Vector2( 9.0f, 10.0f ) );
TestApplication application;
tet_infoline("Testing Dali::CustomActor::OnSizeAnimation()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION );
Animation anim = Animation::New( 1.0f );
TestApplication application;
tet_infoline("Testing Dali::CustomActor::OnTouchEvent()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION );
// set size for custom actor
TestApplication application;
tet_infoline("Testing Dali::CustomActor::OnHoverEvent()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION );
// set size for custom actor
TestApplication application;
tet_infoline("Testing Dali::CustomActor::OnWheelEvent()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
DALI_TEST_EQUALS( 0, (int)(custom.GetMethodsCalled().size()), TEST_LOCATION );
// set size for custom actor
int UtcDaliCustomActorImplOnPropertySet(void)
{
TestApplication application;
- CustomActorImpl* impl = new Impl::SimpleTestCustomActor();
+ CustomActorImpl* impl = new Test::Impl::SimpleTestCustomActor();
CustomActor customActor( *impl ); // Will automatically unref at the end of this function
impl->OnPropertySet( 0, 0 );
{
TestApplication application;
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
CustomActorImpl& impl = custom.GetImplementation();
impl.GetOwner(); // Test
- const TestCustomActor constCustom = TestCustomActor::New();
+ const Test::TestCustomActor constCustom = Test::TestCustomActor::New();
const CustomActorImpl& constImpl = constCustom.GetImplementation();
constImpl.GetOwner(); // Test
TestApplication application;
tet_infoline("Testing Dali::CustomActor::DoAction()");
- TestCustomActor custom = TestCustomActor::New();
+ Test::TestCustomActor custom = Test::TestCustomActor::New();
BaseHandle customActorObject = custom;
DALI_TEST_CHECK( gOnRelayout == false );
- TestCustomActor custom = TestCustomActor::NewNegoSize();
+ Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize();
Stage::GetCurrent().Add(custom);
application.SendNotification();
int UtcDaliCustomActorImplGetHeightForWidthBase(void)
{
TestApplication application;
- TestCustomActor custom = TestCustomActor::NewNegoSize();
+ Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize();
float width = 300.0f;
float v = 0.0f;
int UtcDaliCustomActorImplGetWidthForHeightBase(void)
{
TestApplication application;
- TestCustomActor custom = TestCustomActor::NewNegoSize();
+ Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize();
float height = 300.0f;
float v = 0.0f;
int UtcDaliCustomActorImplCalculateChildSizeBase(void)
{
TestApplication application;
- TestCustomActor custom = TestCustomActor::NewNegoSize();
+ Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize();
Actor child = Actor::New();
child.SetResizePolicy(Dali::ResizePolicy::FIXED, Dali::Dimension::ALL_DIMENSIONS);
int UtcDaliCustomActorImplRelayoutDependentOnChildrenBase(void)
{
TestApplication application;
- TestCustomActor custom = TestCustomActor::NewNegoSize();
+ Test::TestCustomActor custom = Test::TestCustomActor::NewNegoSize();
custom.SetResizePolicy(Dali::ResizePolicy::FIT_TO_CHILDREN, Dali::Dimension::ALL_DIMENSIONS);
bool v = false;
{
TestApplication application;
- TestCustomActor custom = TestCustomActor::NewVariant5();
+ Test::TestCustomActor custom = Test::TestCustomActor::NewVariant5();
DALI_TEST_CHECK( NULL == custom.GetImplementation().GetExtension() );
* OnStageConnection should return 1 for A, 2 for B and C, and 3 for D, E and F.
*/
- TestCustomActor actorA = TestCustomActor::New();
+ Test::TestCustomActor actorA = Test::TestCustomActor::New();
stage.Add( actorA );
- TestCustomActor actorB = TestCustomActor::New();
+ Test::TestCustomActor actorB = Test::TestCustomActor::New();
actorA.Add( actorB );
- TestCustomActor actorC = TestCustomActor::New();
+ Test::TestCustomActor actorC = Test::TestCustomActor::New();
actorA.Add( actorC );
- TestCustomActor actorD = TestCustomActor::New();
+ Test::TestCustomActor actorD = Test::TestCustomActor::New();
actorB.Add( actorD );
- TestCustomActor actorE = TestCustomActor::New();
+ Test::TestCustomActor actorE = Test::TestCustomActor::New();
actorB.Add( actorE );
- TestCustomActor actorF = TestCustomActor::New();
+ Test::TestCustomActor actorF = Test::TestCustomActor::New();
actorC.Add( actorF );
// Excercise the message passing to Update thread
END_TEST;
}
+
+
+int UtcDaliCustomActorSetGetProperty(void)
+{
+ TestApplication application; // Need the type registry
+
+ Test::TestCustomActor actor = Test::TestCustomActor::New();
+ Stage::GetCurrent().Add( actor );
+
+ actor.SetProperty( Test::TestCustomActor::Property::TEST_PROPERTY1, 0.5f );
+ actor.SetProperty( Test::TestCustomActor::Property::TEST_PROPERTY2, Color::WHITE );
+ actor.SetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY3, Color::BLUE );
+ actor.SetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY4, 20 );
+ actor.SetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY5, 40.0f );
+
+ Property::Value value = actor.GetProperty( Test::TestCustomActor::Property::TEST_PROPERTY1 );
+ DALI_TEST_EQUALS( value.Get<float>(), 0.5f, 0.001f, TEST_LOCATION );
+
+ value = actor.GetProperty( Test::TestCustomActor::Property::TEST_PROPERTY2 );
+ DALI_TEST_EQUALS( value.Get<Vector4>(), Color::WHITE, 0.001f, TEST_LOCATION );
+
+
+ value = actor.GetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY3 );
+ DALI_TEST_EQUALS( value.Get<Vector4>(), Color::BLUE, 0.001f, TEST_LOCATION );
+
+ value = actor.GetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY4 );
+ DALI_TEST_EQUALS( value.Get<int>(), 20, TEST_LOCATION );
+
+ value = actor.GetProperty( Test::DevelTestCustomActor::Property::DEVEL_TEST_PROPERTY5 );
+ DALI_TEST_EQUALS( value.Get<float>(), 40.0f, 0.001f, TEST_LOCATION );
+
+ END_TEST;
+}