X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=5d3248e151a71db95253900108de0f6b1c897594;hb=refs%2Fchanges%2F53%2F113753%2F8;hp=a0796ecbe291bf4b8e48805ff631556b6ad8f483;hpb=45fc50ae7d1c0b9d33d47da82e2ac8e928e992f9;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 a0796ec..5d3248e 100644 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -79,8 +79,10 @@ struct RegisteredVisual Toolkit::Visual::Base visual; bool enabled; - RegisteredVisual( Property::Index aIndex, Toolkit::Visual::Base &aVisual, bool aEnabled) : - index(aIndex), visual(aVisual), enabled(aEnabled) {} + RegisteredVisual( Property::Index aIndex, Toolkit::Visual::Base &aVisual, bool aEnabled) + : index(aIndex), visual(aVisual), enabled(aEnabled) + { + } }; typedef Dali::OwnerContainer< RegisteredVisual* > RegisteredVisualContainer; @@ -119,17 +121,6 @@ Toolkit::Visual::Base GetVisualByName( return visualHandle; } -void SetDefaultTransform( Property::Map& propertyMap ) -{ - propertyMap.Clear(); - propertyMap - .Add( Toolkit::DevelVisual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) ) - .Add( Toolkit::DevelVisual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) ) - .Add( Toolkit::DevelVisual::Transform::Property::ORIGIN, Toolkit::Align::CENTER ) - .Add( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER ) - .Add( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4::ZERO ); -} - /** * Creates control through type registry */ @@ -226,6 +217,12 @@ static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra return connected; } +const Scripting::StringEnum ControlStateTable[] = { + { "NORMAL", Toolkit::DevelControl::NORMAL }, + { "FOCUSED", Toolkit::DevelControl::FOCUSED }, + { "DISABLED", Toolkit::DevelControl::DISABLED }, +}; const unsigned int ControlStateTableCount = sizeof( ControlStateTable ) / sizeof( ControlStateTable[0] ); + // Setup signals and actions using the type-registry. DALI_TYPE_REGISTRATION_BEGIN( Control, CustomActor, Create ); @@ -255,6 +252,8 @@ public: // Construction & Destruction Impl(Control& controlImpl) : mControlImpl( controlImpl ), + mState( Toolkit::DevelControl::NORMAL ), + mSubState(""), mStyleName(""), mBackgroundColor(Color::TRANSPARENT), mStartingPinchScale( NULL ), @@ -321,6 +320,27 @@ public: break; } + case Toolkit::DevelControl::Property::STATE: + { + Toolkit::DevelControl::State state( DevelControl::NORMAL ); + + if( Scripting::GetEnumerationProperty< Toolkit::DevelControl::State >( value, ControlStateTable, ControlStateTableCount, state ) ) + { + controlImpl.mImpl->SetState( state ); + } + } + break; + + case Toolkit::DevelControl::Property::SUB_STATE: + { + std::string subState; + if( value.Get( subState ) ) + { + controlImpl.mImpl->SetSubState( subState ); + } + } + break; + case Toolkit::Control::Property::BACKGROUND_COLOR: { DALI_LOG_WARNING( "BACKGROUND_COLOR property is deprecated. Use BACKGROUND property instead\n" ); @@ -420,6 +440,12 @@ public: break; } + case Toolkit::DevelControl::Property::STATE: + { + value = Scripting::GetEnumerationName< Toolkit::DevelControl::State >( controlImpl.mImpl->mState, ControlStateTable, ControlStateTableCount ); + break; + } + case Toolkit::Control::Property::BACKGROUND_COLOR: { DALI_LOG_WARNING( "BACKGROUND_COLOR property is deprecated. Use BACKGROUND property instead\n" ); @@ -476,9 +502,48 @@ public: return value; } + void SetState( DevelControl::State state ) + { + if( mState != state ) + { + mState = state; + + // Trigger state change and transitions + // Apply new style, if stylemanager is available + Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get(); + if( styleManager ) + { + const StylePtr stylePtr = GetImpl( styleManager ).GetRecordedStyle( Toolkit::Control( mControlImpl.GetOwner() ) ); + if( stylePtr ) + { + for( int i=mVisuals.Count()-1; i >= 0; i-- ) + { + mControlImpl.UnregisterVisual( mVisuals[i]->index ); + } + + Dali::CustomActor handle( mControlImpl.GetOwner() ); + stylePtr->ApplyVisualsAndPropertiesRecursively( handle ); + } + } + } + } + + void SetSubState( const std::string& state ) + { + if( mSubState != state ) + { + mSubState = state; + // Trigger transitions + + } + } + // Data Control& mControlImpl; + DevelControl::State mState; + std::string mSubState; + RegisteredVisualContainer mVisuals; // Stores visuals needed by the control, non trivial type so std::vector used. std::string mStyleName; Vector4 mBackgroundColor; ///< The color of the background visual @@ -507,6 +572,8 @@ public: static const PropertyRegistration PROPERTY_4; static const PropertyRegistration PROPERTY_5; static const PropertyRegistration PROPERTY_6; + static const PropertyRegistration PROPERTY_7; + static const PropertyRegistration PROPERTY_8; }; // Properties registered without macro to use specific member variables. @@ -516,6 +583,8 @@ const PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "backgro const PropertyRegistration Control::Impl::PROPERTY_4( typeRegistration, "keyInputFocus", Toolkit::Control::Property::KEY_INPUT_FOCUS, Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); const PropertyRegistration Control::Impl::PROPERTY_5( typeRegistration, "background", Toolkit::Control::Property::BACKGROUND, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); const PropertyRegistration Control::Impl::PROPERTY_6( typeRegistration, "tooltip", Toolkit::DevelControl::Property::TOOLTIP, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_7( typeRegistration, "state", Toolkit::DevelControl::Property::STATE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_8( typeRegistration, "subState", Toolkit::DevelControl::Property::SUB_STATE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); Toolkit::Control Control::New() { @@ -793,8 +862,8 @@ void Control::RegisterVisual( Property::Index index, Toolkit::Visual::Base& visu { Toolkit::GetImplementation(visual).SetOnStage( self ); } - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::RegisterVisual number of registered visuals(%d)\n", mImpl->mVisuals.Size() ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::RegisterVisual() Registered %s(%d), enabled:%s\n", visual.GetName().c_str(), index, enabled?"T":"F" ); } void Control::UnregisterVisual( Property::Index index ) @@ -827,7 +896,7 @@ void Control::EnableVisual( Property::Index index, bool enable ) { if ( (*iter)->enabled == enable ) { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Visual Already enabled set (%s) \n", enable?"enabled":"disabled"); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Visual %s(%d) already %s\n", (*iter)->visual.GetName().c_str(), index, enable?"enabled":"disabled"); return; } @@ -837,12 +906,12 @@ void Control::EnableVisual( Property::Index index, bool enable ) { if ( enable ) { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Setting Visual(%d) on stage \n", index ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Setting %s(%d) on stage \n", (*iter)->visual.GetName().c_str(), index ); Toolkit::GetImplementation((*iter)->visual).SetOnStage( parentActor ); } else { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Setting Visual(%d) off stage \n", index ); + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::EnableVisual Setting %s(%d) off stage \n", (*iter)->visual.GetName().c_str(), index ); Toolkit::GetImplementation((*iter)->visual).SetOffStage( parentActor ); // No need to call if control not staged. } } @@ -1210,9 +1279,7 @@ void Control::OnSizeSet(const Vector3& targetSize) if( visual ) { Vector2 size( targetSize ); - Property::Map transformMap; - SetDefaultTransform( transformMap ); - visual.SetTransformAndSize( transformMap, size ); + visual.SetTransformAndSize( Property::Map(), size ); // Send an empty map as we do not want to modify the visual's set transform } } @@ -1251,10 +1318,7 @@ void Control::OnRelayout( const Vector2& size, RelayoutContainer& container ) Toolkit::Visual::Base visual = GetVisual( Toolkit::Control::Property::BACKGROUND ); if( visual ) { - Vector2 controlSize( size ); - Property::Map transformMap; - SetDefaultTransform( transformMap ); - visual.SetTransformAndSize( transformMap, controlSize ); + visual.SetTransformAndSize( Property::Map(), size ); // Send an empty map as we do not want to modify the visual's set transform } }