X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fcontrol-impl.cpp;h=9fa9291bc2f39e574f79faf19e67bf4a97ba1307;hp=ab171ad56b057409508e355605471de73ba9a1e7;hb=6c664b09beef66ee4e223cf30fb17ecdd6889bf7;hpb=d748f6c99a59e045b8a8d267012372f996cbc3fd diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index ab171ad..9fa9291 100644 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -22,6 +22,7 @@ #include // for strcmp #include #include +#include #include #include #include @@ -57,7 +58,7 @@ namespace { #if defined(DEBUG_ENABLED) -Debug::Filter* gLogFilter = Debug::Filter::New( Debug::General, false, "LOG_CONTROL_VISUALS"); +Debug::Filter* gLogFilter = Debug::Filter::New( Debug::NoLogging, false, "LOG_CONTROL_VISUALS"); #endif /** @@ -117,7 +118,7 @@ HandleIndex GetVisualProperty( { #if defined(DEBUG_ENABLED) std::ostringstream oss; - oss << "Control::GetHandleIndex(" << visualName << ", " << propertyKey << ")" << std::endl; + oss << "Control::GetVisualProperty(" << visualName << ", " << propertyKey << ")" << std::endl; DALI_LOG_INFO( gLogFilter, Debug::General, oss.str().c_str() ); #endif @@ -125,44 +126,25 @@ HandleIndex GetVisualProperty( RegisteredVisualContainer::Iterator iter; for ( iter = visuals.Begin(); iter != visuals.End(); iter++ ) { - if ( (*iter)->visual.GetName() == visualName ) + Toolkit::Visual::Base visual = (*iter)->visual; + if( visual && visual.GetName() == visualName ) { - break; - } - } - - // Does it's renderer have an associated property? - if( iter != visuals.End() ) - { - Actor self = controlImpl.Self(); - Property::Index index = DevelHandle::GetPropertyIndex( self, propertyKey ); - if( index != Property::INVALID_INDEX ) - { - // It's an actor property: - return HandleIndex( self, index ); - } - else - { - // Check if it is a renderer property: - if( self.GetRendererCount() > 0 ) + Internal::Visual::Base& visualImpl = GetImplementation(visual); + Renderer renderer = visualImpl.GetRenderer(); + if( renderer ) { - // @todo Need to use correct renderer index - Renderer renderer = self.GetRendererAt(0); Property::Index index = DevelHandle::GetPropertyIndex( renderer, propertyKey ); if( index != Property::INVALID_INDEX ) { - // It's a renderer property: return HandleIndex( renderer, index ); } } - else - { - std::ostringstream oss; - oss << propertyKey; - DALI_LOG_WARNING( "Control::GetHandleIndex(%s, %s) No renderers\n", visualName.c_str(), oss.str().c_str() ); - } } } + + std::ostringstream noRenderers; + noRenderers << propertyKey; + DALI_LOG_WARNING( "Control::GetVisualProperty(%s, %s) No renderers\n", visualName.c_str(), noRenderers.str().c_str() ); Handle handle; return HandleIndex( handle, Property::INVALID_INDEX ); } @@ -785,6 +767,27 @@ void Control::RegisterVisual( Property::Index index, Toolkit::Visual::Base& visu } } + // If not set, set the name of the visual to the same name as the control's property. + // ( If the control has been type registered ) + if( visual.GetName().empty() ) + { + // Check if the control has been type registered: + TypeInfo typeInfo = TypeRegistry::Get().GetTypeInfo( typeid(*this) ); + if( typeInfo ) + { + // Check if the property index has been registered: + Property::IndexContainer indices; + typeInfo.GetPropertyIndices( indices ); + Property::IndexContainer::Iterator iter = std::find( indices.Begin(), indices.End(), index ); + if( iter != indices.End() ) + { + // If it has, then get it's name and use that for the visual + std::string visualName = typeInfo.GetPropertyName( index ); + visual.SetName( visualName ); + } + } + } + if( !visualReplaced ) // New registration entry { mImpl->mVisuals.PushBack( new RegisteredVisual( index, visual, enabled ) );