X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=21b2a4dca3dde1b62f9e2747d5c3f5090af903b0;hb=47efa8dabe5f3ca6609ff43a622a5f8fcd6311ec;hp=e6ba7db7e2618f286d1017a2b0d3ec1ca4c6788c;hpb=2ddfbb9e23a7c3fc30e604236c41e0ef6d2ed6a2;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index e6ba7db..21b2a4d 100644 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -22,12 +22,16 @@ #include #include #include +#include +#include #include #include #include +#include #include #include +// INTERNAL INCLUDES #include #include #include @@ -42,14 +46,6 @@ namespace Dali namespace Toolkit { -const Property::Index Control::PROPERTY_BACKGROUND_COLOR = Internal::Control::CONTROL_PROPERTY_START_INDEX; -const Property::Index Control::PROPERTY_BACKGROUND = Internal::Control::CONTROL_PROPERTY_START_INDEX + 1; -const Property::Index Control::PROPERTY_WIDTH_POLICY = Internal::Control::CONTROL_PROPERTY_START_INDEX + 2; -const Property::Index Control::PROPERTY_HEIGHT_POLICY = Internal::Control::CONTROL_PROPERTY_START_INDEX + 3; -const Property::Index Control::PROPERTY_MINIMUM_SIZE = Internal::Control::CONTROL_PROPERTY_START_INDEX + 4; -const Property::Index Control::PROPERTY_MAXIMUM_SIZE = Internal::Control::CONTROL_PROPERTY_START_INDEX + 5; -const Property::Index Control::PROPERTY_KEY_INPUT_FOCUS = Internal::Control::CONTROL_PROPERTY_START_INDEX + 6; - namespace { @@ -76,17 +72,20 @@ BaseHandle Create() return Internal::Control::New(); } -TypeRegistration CONTROL_TYPE( typeid(Control), typeid(CustomActor), Create ); +// Setup signals and actions using the type-registry. +DALI_TYPE_REGISTRATION_BEGIN( Control, CustomActor, Create ); + +// Note: Properties are registered separately below, -// Property Registration after Internal::Control::Impl definition below +DALI_SIGNAL_REGISTRATION( Control, "key-event", SIGNAL_KEY_EVENT ) +DALI_SIGNAL_REGISTRATION( Control, "tapped", SIGNAL_TAPPED ) +DALI_SIGNAL_REGISTRATION( Control, "panned", SIGNAL_PANNED ) +DALI_SIGNAL_REGISTRATION( Control, "pinched", SIGNAL_PINCHED ) +DALI_SIGNAL_REGISTRATION( Control, "long-pressed", SIGNAL_LONG_PRESSED ) -TypeAction ACTION_TYPE_1( CONTROL_TYPE, Toolkit::Control::ACTION_CONTROL_ACTIVATED, &Internal::Control::DoAction ); +DALI_ACTION_REGISTRATION( Control, "control-activated", ACTION_CONTROL_ACTIVATED ) -SignalConnectorType SIGNAL_CONNECTOR_1( CONTROL_TYPE, Toolkit::Control::SIGNAL_KEY_EVENT, &Internal::Control::DoConnectSignal ); -SignalConnectorType SIGNAL_CONNECTOR_2( CONTROL_TYPE, Toolkit::Control::SIGNAL_TAPPED, &Internal::Control::DoConnectSignal ); -SignalConnectorType SIGNAL_CONNECTOR_3( CONTROL_TYPE, Toolkit::Control::SIGNAL_PANNED, &Internal::Control::DoConnectSignal ); -SignalConnectorType SIGNAL_CONNECTOR_4( CONTROL_TYPE, Toolkit::Control::SIGNAL_PINCHED, &Internal::Control::DoConnectSignal ); -SignalConnectorType SIGNAL_CONNECTOR_5( CONTROL_TYPE, Toolkit::Control::SIGNAL_LONG_PRESSED, &Internal::Control::DoConnectSignal ); +DALI_TYPE_REGISTRATION_END() /** * Structure which holds information about the background of a control @@ -216,7 +215,7 @@ void SetupBackgroundActor( Actor actor, Property::Index constrainingIndex, const actor.SetZ( BACKGROUND_ACTOR_Z_POSITION ); Constraint constraint = Constraint::New( constrainingIndex, - ParentSource( Actor::SIZE ), + ParentSource( Actor::Property::SIZE ), EqualToConstraint() ); actor.ApplyConstraint( constraint ); } @@ -324,13 +323,13 @@ public: switch ( index ) { - case Toolkit::Control::PROPERTY_BACKGROUND_COLOR: + case Toolkit::Control::Property::BACKGROUND_COLOR: { controlImpl.SetBackgroundColor( value.Get< Vector4 >() ); break; } - case Toolkit::Control::PROPERTY_BACKGROUND: + case Toolkit::Control::Property::BACKGROUND: { if ( value.HasKey( "image" ) ) { @@ -350,31 +349,31 @@ public: break; } - case Toolkit::Control::PROPERTY_WIDTH_POLICY: + case Toolkit::Control::Property::WIDTH_POLICY: { - controlImpl.mImpl->mWidthPolicy = Scripting::GetEnumeration< Toolkit::Control::SizePolicy >( value.Get< std::string >(), SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT ); + controlImpl.mImpl->mWidthPolicy = Scripting::GetEnumeration< Toolkit::Control::SizePolicy >( value.Get< std::string >().c_str(), SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT ); break; } - case Toolkit::Control::PROPERTY_HEIGHT_POLICY: + case Toolkit::Control::Property::HEIGHT_POLICY: { - controlImpl.mImpl->mHeightPolicy = Scripting::GetEnumeration< Toolkit::Control::SizePolicy >( value.Get< std::string >(), SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT ); + controlImpl.mImpl->mHeightPolicy = Scripting::GetEnumeration< Toolkit::Control::SizePolicy >( value.Get< std::string >().c_str(), SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT ); break; } - case Toolkit::Control::PROPERTY_MINIMUM_SIZE: + case Toolkit::Control::Property::MINIMUM_SIZE: { controlImpl.SetMinimumSize( value.Get< Vector3 >() ); break; } - case Toolkit::Control::PROPERTY_MAXIMUM_SIZE: + case Toolkit::Control::Property::MAXIMUM_SIZE: { controlImpl.SetMaximumSize( value.Get< Vector3 >() ); break; } - case Toolkit::Control::PROPERTY_KEY_INPUT_FOCUS: + case Toolkit::Control::Property::KEY_INPUT_FOCUS: { if ( value.Get< bool >() ) { @@ -408,13 +407,13 @@ public: switch ( index ) { - case Toolkit::Control::PROPERTY_BACKGROUND_COLOR: + case Toolkit::Control::Property::BACKGROUND_COLOR: { value = controlImpl.GetBackgroundColor(); break; } - case Toolkit::Control::PROPERTY_BACKGROUND: + case Toolkit::Control::Property::BACKGROUND: { Property::Map map; @@ -435,31 +434,31 @@ public: break; } - case Toolkit::Control::PROPERTY_WIDTH_POLICY: + case Toolkit::Control::Property::WIDTH_POLICY: { value = std::string( Scripting::GetEnumerationName< Toolkit::Control::SizePolicy >( controlImpl.mImpl->mWidthPolicy, SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT ) ); break; } - case Toolkit::Control::PROPERTY_HEIGHT_POLICY: + case Toolkit::Control::Property::HEIGHT_POLICY: { value = std::string( Scripting::GetEnumerationName< Toolkit::Control::SizePolicy >( controlImpl.mImpl->mHeightPolicy, SIZE_POLICY_STRING_TABLE, SIZE_POLICY_STRING_TABLE_COUNT ) ); break; } - case Toolkit::Control::PROPERTY_MINIMUM_SIZE: + case Toolkit::Control::Property::MINIMUM_SIZE: { value = controlImpl.mImpl->GetMinimumSize(); break; } - case Toolkit::Control::PROPERTY_MAXIMUM_SIZE: + case Toolkit::Control::Property::MAXIMUM_SIZE: { value = controlImpl.mImpl->GetMaximumSize(); break; } - case Toolkit::Control::PROPERTY_KEY_INPUT_FOCUS: + case Toolkit::Control::Property::KEY_INPUT_FOCUS: { value = controlImpl.HasKeyInputFocus(); break; @@ -568,7 +567,7 @@ public: bool mIsKeyboardFocusGroup:1; ///< Stores whether the control is a focus group. bool mInitialized:1; - // Properties - these need to be members of Internal::Control::Impl as they need to functions within this class. + // Properties - these need to be members of Internal::Control::Impl as they need to function within this class. static PropertyRegistration PROPERTY_1; static PropertyRegistration PROPERTY_2; static PropertyRegistration PROPERTY_3; @@ -578,13 +577,14 @@ public: static PropertyRegistration PROPERTY_7; }; -PropertyRegistration Control::Impl::PROPERTY_1( CONTROL_TYPE, "background-color", Toolkit::Control::PROPERTY_BACKGROUND_COLOR, Property::VECTOR4, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -PropertyRegistration Control::Impl::PROPERTY_2( CONTROL_TYPE, "background", Toolkit::Control::PROPERTY_BACKGROUND, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -PropertyRegistration Control::Impl::PROPERTY_3( CONTROL_TYPE, "width-policy", Toolkit::Control::PROPERTY_WIDTH_POLICY, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -PropertyRegistration Control::Impl::PROPERTY_4( CONTROL_TYPE, "height-policy", Toolkit::Control::PROPERTY_HEIGHT_POLICY, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -PropertyRegistration Control::Impl::PROPERTY_5( CONTROL_TYPE, "minimum-size", Toolkit::Control::PROPERTY_MINIMUM_SIZE, Property::VECTOR3, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -PropertyRegistration Control::Impl::PROPERTY_6( CONTROL_TYPE, "maximum-size", Toolkit::Control::PROPERTY_MAXIMUM_SIZE, Property::VECTOR3, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -PropertyRegistration Control::Impl::PROPERTY_7( CONTROL_TYPE, "key-input-focus", Toolkit::Control::PROPERTY_KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +// Properties registered without macro to use specific member variables. +PropertyRegistration Control::Impl::PROPERTY_1( typeRegistration, "background-color", Toolkit::Control::Property::BACKGROUND_COLOR, Property::VECTOR4, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "background", Toolkit::Control::Property::BACKGROUND, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "width-policy", Toolkit::Control::Property::WIDTH_POLICY, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +PropertyRegistration Control::Impl::PROPERTY_4( typeRegistration, "height-policy", Toolkit::Control::Property::HEIGHT_POLICY, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +PropertyRegistration Control::Impl::PROPERTY_5( typeRegistration, "minimum-size", Toolkit::Control::Property::MINIMUM_SIZE, Property::VECTOR3, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +PropertyRegistration Control::Impl::PROPERTY_6( typeRegistration, "maximum-size", Toolkit::Control::Property::MAXIMUM_SIZE, Property::VECTOR3, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +PropertyRegistration Control::Impl::PROPERTY_7( typeRegistration, "key-input-focus", Toolkit::Control::Property::KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); Toolkit::Control Control::New() { @@ -773,8 +773,7 @@ void Control::SetBackgroundColor( const Vector4& color ) // Create Mesh Actor MeshActor meshActor = MeshActor::New( CreateMesh() ); - meshActor.SetAffectedByLighting( false ); - SetupBackgroundActor( meshActor, Actor::SCALE, color ); + SetupBackgroundActor( meshActor, Actor::Property::SCALE, color ); // Set the background actor before adding so that we do not inform deriving classes background.actor = meshActor; @@ -805,7 +804,7 @@ void Control::SetBackground( Image image ) } ImageActor imageActor = ImageActor::New( image ); - SetupBackgroundActor( imageActor, Actor::SIZE, background.color ); + SetupBackgroundActor( imageActor, Actor::Property::SIZE, background.color ); // Set the background actor before adding so that we do not inform derived classes background.actor = imageActor; @@ -1001,7 +1000,7 @@ bool Control::DoAction(BaseObject* object, const std::string& actionName, const { bool ret = false; - if( object && (actionName == Toolkit::Control::ACTION_CONTROL_ACTIVATED) ) + if( object && ( 0 == strcmp( actionName.c_str(), ACTION_CONTROL_ACTIVATED ) ) ) { Toolkit::Control control = Toolkit::Control::DownCast( BaseHandle( object ) ); if( control ) @@ -1019,32 +1018,32 @@ bool Control::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* t Dali::BaseHandle handle( object ); bool connected( false ); - Toolkit::Control control = Toolkit::Control::DownCast(handle); + Toolkit::Control control = Toolkit::Control::DownCast( handle ); if ( control ) { Control& controlImpl( control.GetImplementation() ); connected = true; - if ( Toolkit::Control::SIGNAL_KEY_EVENT == signalName ) + if ( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_EVENT ) ) { controlImpl.KeyEventSignal().Connect( tracker, functor ); } - else if( Toolkit::Control::SIGNAL_TAPPED == signalName ) + else if( 0 == strcmp( signalName.c_str(), SIGNAL_TAPPED ) ) { controlImpl.EnableGestureDetection( Gesture::Tap ); controlImpl.GetTapGestureDetector().DetectedSignal().Connect( tracker, functor ); } - else if( Toolkit::Control::SIGNAL_PANNED == signalName ) + else if( 0 == strcmp( signalName.c_str(), SIGNAL_PANNED ) ) { controlImpl.EnableGestureDetection( Gesture::Pan ); controlImpl.GetPanGestureDetector().DetectedSignal().Connect( tracker, functor ); } - else if( Toolkit::Control::SIGNAL_PINCHED == signalName ) + else if( 0 == strcmp( signalName.c_str(), SIGNAL_PINCHED ) ) { controlImpl.EnableGestureDetection( Gesture::Pinch ); controlImpl.GetPinchGestureDetector().DetectedSignal().Connect( tracker, functor ); } - else if( Toolkit::Control::SIGNAL_LONG_PRESSED == signalName ) + else if( 0 == strcmp( signalName.c_str(), SIGNAL_LONG_PRESSED ) ) { controlImpl.EnableGestureDetection( Gesture::LongPress ); controlImpl.GetLongPressGestureDetector().DetectedSignal().Connect( tracker, functor ); @@ -1103,7 +1102,7 @@ void Control::Initialize() Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get(); // Register for style changes - styleManager.StyleChangeSignal().Connect( this, &Control::DoStyleChange ); + styleManager.StyleChangeSignal().Connect( this, &Control::OnStyleChange ); // SetTheme GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) ); @@ -1207,13 +1206,13 @@ void Control::OnActivated() { } -void Control::OnThemeChange( Toolkit::StyleManager styleManager ) -{ - GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) ); -} - -void Control::OnFontChange( bool defaultFontChange, bool defaultFontSizeChange ) +void Control::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change ) { + // By default the control is only interested in theme (not font) changes + if( change.themeChange ) + { + GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) ); + } } void Control::OnPinch(const PinchGesture& pinch) @@ -1309,11 +1308,6 @@ bool Control::OnMouseWheelEvent(const MouseWheelEvent& event) return false; // Do not consume } -Actor Control::GetChildByAlias(const std::string& actorAlias) -{ - return Actor(); -} - void Control::OnStageConnection() { RelayoutRequest(); @@ -1386,18 +1380,6 @@ void Control::SignalDisconnected( SlotObserver* slotObserver, CallbackBase* call mImpl->SignalDisconnected( slotObserver, callback ); } -void Control::DoStyleChange( Toolkit::StyleManager styleManager, StyleChange change ) -{ - if( change.themeChange ) - { - OnThemeChange( styleManager ); - } - else if( change.defaultFontChange || change.defaultFontSizeChange ) - { - OnFontChange( change.defaultFontChange, change.defaultFontSizeChange ); - } -} - } // namespace Internal } // namespace Toolkit