X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fcontrol%2Fcontrol-data-impl.cpp;h=369c4097bb1e0187eafd6d5858a45ced67835a53;hp=2469beb5ed332ac4602486db7c2a7b42e115f0fb;hb=76098a992229112954c7715a350856342b7576f9;hpb=7f55d5645df42e2a662dec8566db41a2f4a28122;ds=sidebyside diff --git a/dali-toolkit/internal/controls/control/control-data-impl.cpp b/dali-toolkit/internal/controls/control/control-data-impl.cpp index 2469beb..369c409 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.cpp +++ b/dali-toolkit/internal/controls/control/control-data-impl.cpp @@ -34,7 +34,7 @@ #include #include #include -#include +#include #include #include #include @@ -85,10 +85,10 @@ void Remove( DictionaryKeys& keys, const std::string& name ) } } -Toolkit::DevelVisual::Type GetVisualTypeFromMap( const Property::Map& map ) +Toolkit::Visual::Type GetVisualTypeFromMap( const Property::Map& map ) { - Property::Value* typeValue = map.Find( Toolkit::DevelVisual::Property::TYPE, VISUAL_TYPE ); - Toolkit::DevelVisual::Type type = Toolkit::DevelVisual::IMAGE; + Property::Value* typeValue = map.Find( Toolkit::Visual::Property::TYPE, VISUAL_TYPE ); + Toolkit::Visual::Type type = Toolkit::Visual::IMAGE; if( typeValue ) { Scripting::GetEnumerationProperty( *typeValue, VISUAL_TYPE_TABLE, VISUAL_TYPE_TABLE_COUNT, type ); @@ -302,14 +302,15 @@ const PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "backgro const PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "backgroundImage", Toolkit::Control::Property::BACKGROUND_IMAGE, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); 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 ); -const PropertyRegistration Control::Impl::PROPERTY_9( typeRegistration, "leftFocusableActorId", Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -const PropertyRegistration Control::Impl::PROPERTY_10( typeRegistration, "rightFocusableActorId", Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID,Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -const PropertyRegistration Control::Impl::PROPERTY_11( typeRegistration, "upFocusableActorId", Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); -const PropertyRegistration Control::Impl::PROPERTY_12( typeRegistration, "downFocusableActorId", Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); - +const PropertyRegistration Control::Impl::PROPERTY_6( typeRegistration, "margin", Toolkit::Control::Property::MARGIN, Property::EXTENTS, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_7( typeRegistration, "padding", Toolkit::Control::Property::PADDING, Property::EXTENTS, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_8( typeRegistration, "tooltip", Toolkit::DevelControl::Property::TOOLTIP, Property::MAP, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_9( typeRegistration, "state", Toolkit::DevelControl::Property::STATE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_10( typeRegistration, "subState", Toolkit::DevelControl::Property::SUB_STATE, Property::STRING, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_11( typeRegistration, "leftFocusableActorId", Toolkit::DevelControl::Property::LEFT_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_12( typeRegistration, "rightFocusableActorId", Toolkit::DevelControl::Property::RIGHT_FOCUSABLE_ACTOR_ID,Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_13( typeRegistration, "upFocusableActorId", Toolkit::DevelControl::Property::UP_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); +const PropertyRegistration Control::Impl::PROPERTY_14( typeRegistration, "downFocusableActorId", Toolkit::DevelControl::Property::DOWN_FOCUSABLE_ACTOR_ID, Property::INTEGER, &Control::Impl::SetProperty, &Control::Impl::GetProperty ); Control::Impl::Impl( Control& controlImpl ) @@ -323,7 +324,12 @@ Control::Impl::Impl( Control& controlImpl ) mStyleName(""), mBackgroundColor(Color::TRANSPARENT), mStartingPinchScale( NULL ), + mMargin( 0, 0, 0, 0 ), + mPadding( 0, 0, 0, 0 ), mKeyEventSignal(), + mKeyInputFocusGainedSignal(), + mKeyInputFocusLostSignal(), + mResourceReadySignal(), mPinchGestureDetector(), mPanGestureDetector(), mTapGestureDetector(), @@ -483,9 +489,6 @@ void Control::Impl::RegisterVisual( Property::Index index, Toolkit::Visual::Base if( !visualReplaced ) // New registration entry { - // monitor when the visual resources are ready - StartObservingVisual( visual ); - // If we've not set the depth-index value, we have more than one visual and the visual does not have a depth index, then set it to be the highest if( ( depthIndexValueSet == DepthIndexValue::NOT_SET ) && ( mVisuals.Size() > 0 ) && @@ -522,12 +525,17 @@ void Control::Impl::RegisterVisual( Property::Index index, Toolkit::Visual::Base ( visualReplaced && enabled ) ) ; mVisuals.PushBack( newRegisteredVisual ); + Internal::Visual::Base& visualImpl = Toolkit::GetImplementation( visual ); // Put on stage if enabled and the control is already on the stage - // Visual must be set on stage for the renderer to be created and the ResourceReady triggered. if( ( enabled == VisualState::ENABLED ) && self.OnStage() ) { - Toolkit::GetImplementation(visual).SetOnStage( self ); + visualImpl.SetOnStage( self ); + } + else if( visualImpl.IsResourceReady() ) // When not being staged, check if visual already 'ResourceReady' before it was Registered. ( Resource may have been loaded already ) + { + ResourceReady( visualImpl ); } + } DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Control::RegisterVisual() Registered %s(%d), enabled:%s\n", visual.GetName().c_str(), index, enabled?"true":"false" ); @@ -535,17 +543,26 @@ void Control::Impl::RegisterVisual( Property::Index index, Toolkit::Visual::Base void Control::Impl::UnregisterVisual( Property::Index index ) { - RegisteredVisualContainer::Iterator iter; - if ( FindVisual( index, mVisuals, iter ) ) - { - // stop observing visual - StopObservingVisual( (*iter)->visual ); + RegisteredVisualContainer::Iterator iter; + if ( FindVisual( index, mVisuals, iter ) ) + { + // stop observing visual + StopObservingVisual( (*iter)->visual ); - Actor self( mControlImpl.Self() ); - Toolkit::GetImplementation((*iter)->visual).SetOffStage( self ); - (*iter)->visual.Reset(); - mVisuals.Erase( iter ); - } + Actor self( mControlImpl.Self() ); + Toolkit::GetImplementation((*iter)->visual).SetOffStage( self ); + (*iter)->visual.Reset(); + mVisuals.Erase( iter ); + } + + if( FindVisual( index, mRemoveVisuals, iter ) ) + { + Actor self( mControlImpl.Self() ); + Toolkit::GetImplementation( (*iter)->visual ).SetOffStage( self ); + (*iter)->pending = false; + (*iter)->visual.Reset(); + mRemoveVisuals.Erase( iter ); + } } Toolkit::Visual::Base Control::Impl::GetVisual( Property::Index index ) const @@ -645,8 +662,11 @@ void Control::Impl::ResourceReady( Visual::Base& object) } } - // A visual is ready so control may need relayouting - mControlImpl.RelayoutRequest(); + // A visual is ready so control may need relayouting if staged + if ( self.OnStage() ) + { + mControlImpl.RelayoutRequest(); + } // Emit signal if all enabled visuals registered by the control are ready. if( IsResourceReady() ) @@ -674,6 +694,18 @@ bool Control::Impl::IsResourceReady() const return true; } +Toolkit::Visual::ResourceStatus Control::Impl::GetVisualResourceStatus( Property::Index index ) const +{ + RegisteredVisualContainer::Iterator iter; + if ( FindVisual( index, mVisuals, iter ) ) + { + const Toolkit::Visual::Base visual = (*iter)->visual; + const Internal::Visual::Base& visualImpl = Toolkit::GetImplementation( visual ); + return visualImpl.GetResourceStatus( ); + } + + return Toolkit::Visual::ResourceStatus::PREPARING; +} Dali::Animation Control::Impl::CreateTransition( const Toolkit::TransitionData& handle ) { @@ -751,6 +783,15 @@ Dali::Animation Control::Impl::CreateTransition( const Toolkit::TransitionData& return transition; } +void Control::Impl::DoAction( Dali::Property::Index visualIndex, Dali::Property::Index actionId, const Dali::Property::Value attributes ) +{ + RegisteredVisualContainer::Iterator iter; + if ( FindVisual( visualIndex, mVisuals, iter ) ) + { + Toolkit::GetImplementation((*iter)->visual).DoAction( actionId, attributes ); + } +} + void Control::Impl::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ) { Toolkit::Control control = Toolkit::Control::DownCast( BaseHandle( object ) ); @@ -910,6 +951,26 @@ void Control::Impl::SetProperty( BaseObject* object, Property::Index index, cons break; } + case Toolkit::Control::Property::MARGIN: + { + Extents margin; + if( value.Get( margin ) ) + { + controlImpl.mImpl->SetMargin( margin ); + } + break; + } + + case Toolkit::Control::Property::PADDING: + { + Extents padding; + if( value.Get( padding ) ) + { + controlImpl.mImpl->SetPadding( padding ); + } + break; + } + case Toolkit::DevelControl::Property::TOOLTIP: { TooltipPtr& tooltipPtr = controlImpl.mImpl->mTooltip; @@ -918,7 +979,9 @@ void Control::Impl::SetProperty( BaseObject* object, Property::Index index, cons tooltipPtr = Tooltip::New( control ); } tooltipPtr->SetProperties( value ); + break; } + } } } @@ -1016,6 +1079,18 @@ Property::Value Control::Impl::GetProperty( BaseObject* object, Property::Index break; } + case Toolkit::Control::Property::MARGIN: + { + value = controlImpl.mImpl->GetMargin(); + break; + } + + case Toolkit::Control::Property::PADDING: + { + value = controlImpl.mImpl->GetPadding(); + break; + } + case Toolkit::DevelControl::Property::TOOLTIP: { Property::Map map; @@ -1026,7 +1101,6 @@ Property::Value Control::Impl::GetProperty( BaseObject* object, Property::Index value = map; break; } - } } @@ -1095,8 +1169,8 @@ void Control::Impl::RecreateChangedVisuals( Dictionary& stateVisu Property::Map fromMap; visual.CreatePropertyMap( fromMap ); - Toolkit::DevelVisual::Type fromType = GetVisualTypeFromMap( fromMap ); - Toolkit::DevelVisual::Type toType = GetVisualTypeFromMap( toMap ); + Toolkit::Visual::Type fromType = GetVisualTypeFromMap( fromMap ); + Toolkit::Visual::Type toType = GetVisualTypeFromMap( toMap ); if( fromType != toType ) { @@ -1104,8 +1178,8 @@ void Control::Impl::RecreateChangedVisuals( Dictionary& stateVisu } else { - if( fromType == Toolkit::DevelVisual::IMAGE || fromType == Toolkit::DevelVisual::N_PATCH - || fromType == Toolkit::DevelVisual::SVG || fromType == Toolkit::DevelVisual::ANIMATED_IMAGE ) + if( fromType == Toolkit::Visual::IMAGE || fromType == Toolkit::Visual::N_PATCH + || fromType == Toolkit::Visual::SVG || fromType == Toolkit::Visual::ANIMATED_IMAGE ) { Property::Value* fromUrl = fromMap.Find( Toolkit::ImageVisual::Property::URL, IMAGE_URL_NAME ); Property::Value* toUrl = toMap.Find( Toolkit::ImageVisual::Property::URL, IMAGE_URL_NAME ); @@ -1298,6 +1372,26 @@ void Control::Impl::OnStageDisconnection() mRemoveVisuals.Clear(); } +void Control::Impl::SetMargin( Extents margin ) +{ + mControlImpl.mImpl->mMargin = margin; +} + +Extents Control::Impl::GetMargin() const +{ + return mControlImpl.mImpl->mMargin; +} + +void Control::Impl::SetPadding( Extents padding ) +{ + mControlImpl.mImpl->mPadding = padding; +} + +Extents Control::Impl::GetPadding() const +{ + return mControlImpl.mImpl->mPadding; +} + } // namespace Internal } // namespace Toolkit