X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=examples%2Fstyling%2Fimage-channel-control-impl.cpp;h=aa4f3251ba4361541398e4e7ccbc73442363b5a4;hb=2fa69545ba52fa238710839f76352e7bef582f7d;hp=dc133d1b306f1b45bb51e2705446f321eba0f8ac;hpb=11f7a3260303d7e609694abc4d51513979c613ed;p=platform%2Fcore%2Fuifw%2Fdali-demo.git diff --git a/examples/styling/image-channel-control-impl.cpp b/examples/styling/image-channel-control-impl.cpp index dc133d1..aa4f325 100644 --- a/examples/styling/image-channel-control-impl.cpp +++ b/examples/styling/image-channel-control-impl.cpp @@ -18,6 +18,7 @@ #include #include #include +#include using namespace Dali; // Needed for macros @@ -53,6 +54,11 @@ DALI_PROPERTY_REGISTRATION( Demo, ImageChannelControl, "redChannel", FLOAT, RED_ DALI_PROPERTY_REGISTRATION( Demo, ImageChannelControl, "greenChannel", FLOAT, GREEN_CHANNEL ); DALI_PROPERTY_REGISTRATION( Demo, ImageChannelControl, "blueChannel", FLOAT, BLUE_CHANNEL ); +DALI_PROPERTY_REGISTRATION( Demo, ImageChannelControl, "visibility", BOOLEAN, VISIBILITY ); +DALI_PROPERTY_REGISTRATION( Demo, ImageChannelControl, "enableVisibilityTransition", ARRAY, ENABLE_VISIBILITY_TRANSITION ); +DALI_PROPERTY_REGISTRATION( Demo, ImageChannelControl, "disableVisibilityTransition", ARRAY, DISABLE_VISIBILITY_TRANSITION ); + +DALI_PROPERTY_REGISTRATION( Demo, ImageChannelControl, "imageVisual", MAP, IMAGE_VISUAL ); DALI_TYPE_REGISTRATION_END(); } // anonymous namespace @@ -60,7 +66,9 @@ DALI_TYPE_REGISTRATION_END(); Internal::ImageChannelControl::ImageChannelControl() : Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ), - mChannels( 1.0f, 1.0f, 1.0f ) + mChannels( 1.0f, 1.0f, 1.0f ), + mVisibility(true), + mTargetVisibility(true) { } @@ -90,10 +98,60 @@ void ImageChannelControl::SetImage( const std::string& url ) properties[Dali::Toolkit::ImageVisual::Property::URL] = url; Dali::Toolkit::InitializeVisual( self, mVisual, properties ); + RegisterVisual( Demo::ImageChannelControl::Property::IMAGE_VISUAL, self, mVisual ); + mVisual.SetName("imageVisual"); RelayoutRequest(); } +void ImageChannelControl::SetVisibility( bool visibility ) +{ + printf("ImageChannelControl %s: SetVisibility( %s )\n", Self().GetName().c_str(), visibility?"T":"F" ); + + Animation animation; + + if( mAnimation ) + { + mAnimation.Stop(); + mAnimation.FinishedSignal().Disconnect( this, &ImageChannelControl::OnStateChangeAnimationFinished ); + OnStateChangeAnimationFinished(mAnimation); + } + + if( mVisibility != visibility ) + { + if( mVisibility ) + { + if( mDisableVisibilityTransition.Count() > 0 ) + { + mAnimation = CreateTransition( mDisableVisibilityTransition ); + } + } + else + { + if( mEnableVisibilityTransition.Count() > 0 ) + { + mAnimation = CreateTransition( mEnableVisibilityTransition ); + } + } + } + + if( mAnimation ) + { + mAnimation.FinishedSignal().Connect( this, &ImageChannelControl::OnStateChangeAnimationFinished ); + mAnimation.Play(); + mTargetVisibility = visibility; + } + else + { + mVisibility = visibility; + } +} + +void ImageChannelControl::OnStateChangeAnimationFinished( Animation& src ) +{ + mVisibility = mTargetVisibility; +} + void ImageChannelControl::OnInitialize() { Actor self = Self(); @@ -144,6 +202,12 @@ Vector3 ImageChannelControl::GetNaturalSize() return Vector3::ZERO; } +void ImageChannelControl::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change ) +{ + // Chain up. + Control::OnStyleChange( styleManager, change ); +} + /////////////////////////////////////////////////////////// // @@ -154,12 +218,55 @@ void ImageChannelControl::SetProperty( BaseObject* object, Property::Index index { Demo::ImageChannelControl imageChannelControl = Demo::ImageChannelControl::DownCast( Dali::BaseHandle( object ) ); - if ( imageChannelControl ) + if( imageChannelControl ) { ImageChannelControl& impl = GetImpl( imageChannelControl ); Actor self = impl.Self(); switch ( index ) { + case Demo::ImageChannelControl::Property::RESOURCE_URL: + { + impl.SetImage( value.Get() ); + break; + } + case Demo::ImageChannelControl::Property::IMAGE_VISUAL: + { + Property::Map* map = value.GetMap(); + if( map ) + { + Dali::Toolkit::InitializeVisual( self, impl.mVisual, *map ); + } + break; + } + case Demo::ImageChannelControl::Property::VISIBILITY: + { + impl.SetVisibility( value.Get() ); + break; + } + case Demo::ImageChannelControl::Property::ENABLE_VISIBILITY_TRANSITION: + { + if( value.GetType() == Property::ARRAY ) + { + impl.mEnableVisibilityTransition = Toolkit::TransitionData::New( *value.GetArray()); + } + else if( value.GetType() == Property::MAP ) + { + impl.mEnableVisibilityTransition = Toolkit::TransitionData::New( *value.GetMap() ); + } + break; + } + case Demo::ImageChannelControl::Property::DISABLE_VISIBILITY_TRANSITION: + { + if( value.GetType() == Property::ARRAY ) + { + impl.mDisableVisibilityTransition = Toolkit::TransitionData::New( *value.GetArray()); + } + else if( value.GetType() == Property::MAP ) + { + impl.mDisableVisibilityTransition = Toolkit::TransitionData::New( *value.GetMap() ); + } + break; + } case Demo::ImageChannelControl::Property::RED_CHANNEL: { impl.mChannels[0] = value.Get(); @@ -208,6 +315,13 @@ Property::Value ImageChannelControl::GetProperty( BaseObject* object, Property:: value = impl.mChannels[2]; break; } + case Demo::ImageChannelControl::Property::VISIBILITY: + { + value = impl.mVisibility; + break; + } + default: + break; } }