- case UnselectedDisabledTransition:
- {
- if( !disabled )
- {
- float opacity = 1.f;
- if( fadeOutButtonImage )
- {
- opacity = fadeOutButtonImage.GetCurrentOpacity();
- }
- StopFadeOutAnimation( false );
- StopFadeInAnimation();
-
- FadeOutImage( Foreground, disabledImage, 1.f - opacity );
- FadeOutImage( Background, disabledBackgroundImage, 1.f - opacity );
- FadeInImage( buttonImage, opacity );
- FadeInImage( backgroundImage, opacity );
-
- StartFadeOutAnimation();
- StartFadeInAnimation();
-
- if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage )
- {
- mPaintState = DisabledUnselectedTransition;
- }
- else
- {
- mPaintState = UnselectedState;
- }
- }
- break;
- }
- case DisabledUnselectedTransition:
- {
- if( disabled )
- {
- float opacity = 1.f;
- if( fadeOutButtonImage )
- {
- opacity = fadeOutButtonImage.GetCurrentOpacity();
- }
- StopFadeOutAnimation( false );
- StopFadeInAnimation();
-
- FadeOutImage( Foreground, buttonImage, 1.f - opacity );
- FadeOutImage( Background, backgroundImage, 1.f - opacity );
- FadeInImage( disabledImage, opacity );
- FadeInImage( disabledBackgroundImage, opacity );
-
- StartFadeOutAnimation();
- StartFadeInAnimation();
-
- if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage )
- {
- mPaintState = UnselectedDisabledTransition;
- }
- else
- {
- mPaintState = DisabledUnselectedState;
- }
- }
- break;
- }
- case SelectedDisabledTransition:
- {
- if( !disabled )
- {
- float opacity = 1.f;
- if( fadeOutButtonImage )
- {
- opacity = fadeOutButtonImage.GetCurrentOpacity();
- }
- StopFadeOutAnimation( false );
- StopFadeInAnimation();
-
- FadeOutImage( Foreground, disabledImage, 1.f - opacity );
- FadeOutImage( Background, disabledBackgroundImage, 1.f - opacity );
- FadeInImage( selectedImage, opacity );
- FadeInImage( backgroundImage, opacity );
-
- StartFadeOutAnimation();
- StartFadeInAnimation();
-
- if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage )
- {
- mPaintState = DisabledSelectedTransition;
- }
- else
- {
- mPaintState = SelectedState;
- }
- }
- break;
- }
- case DisabledSelectedTransition:
- {
- if( disabled )
- {
- float opacity = 1.f;
- if( fadeOutButtonImage )
- {
- opacity = fadeOutButtonImage.GetCurrentOpacity();
- }
- StopFadeOutAnimation( false );
- StopFadeInAnimation();
-
- FadeOutImage( Foreground, selectedImage, 1.f - opacity );
- FadeOutImage( Background, backgroundImage, 1.f - opacity );
- FadeInImage( disabledImage, opacity );
- FadeInImage( disabledBackgroundImage, opacity );
-
- StartFadeOutAnimation();
- StartFadeInAnimation();
-
- if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage )
- {
- mPaintState = SelectedDisabledTransition;
- }
- else
- {
- mPaintState = DisabledSelectedState;
- }
- }
- break;
- }
- default:
- break;
- }
-}
-
-void PushButton::OnPressed()
-{
- Actor& selectedImage = GetSelectedImage();
- Actor& buttonImage = GetButtonImage();
- Actor& fadeOutButtonImage = GetFadeOutButtonImage();
-
- switch( mPaintState )
- {
- case UnselectedState:
- {
- StopFadeOutAnimation();
- FadeOutImage( Foreground, buttonImage );
- FadeInImage( selectedImage );
- StartFadeOutAnimation();
- StartFadeInAnimation();
-
- if( buttonImage || selectedImage )
- {
- mPaintState = UnselectedSelectedTransition;
- }
- else
- {
- mPaintState = SelectedState;
- }
- break;
- }
- case UnselectedSelectedTransition:
- {
- if( !IsAutoRepeating() )
- {
- mPaintState = SelectedUnselectedTransition;
- }
- break;
- }
- case SelectedUnselectedTransition:
- {
- float opacity = 1.f;
- if( fadeOutButtonImage )
- {
- opacity = fadeOutButtonImage.GetCurrentOpacity();
- }
- StopFadeOutAnimation( false );
- StopFadeInAnimation();
-
- FadeOutImage( Foreground, buttonImage, 1.f - opacity );
- FadeInImage( selectedImage, opacity );
-
- StartFadeOutAnimation();
- StartFadeInAnimation();
-
- if( buttonImage || selectedImage )
- {
- mPaintState = UnselectedSelectedTransition;
- }
- else
- {
- mPaintState = SelectedState;
- }
- break;
- }
- default:
- break;
- }
-}
-
-void PushButton::OnReleased()
-{
- Actor& selectedImage = GetSelectedImage();
- Actor& buttonImage = GetButtonImage();
- Actor& fadeOutButtonImage = GetFadeOutButtonImage();
-
- switch( mPaintState )
- {
- case SelectedState:
- {
- StopFadeOutAnimation();
- FadeOutImage( Foreground, selectedImage );
- FadeInImage( buttonImage );
- StartFadeOutAnimation();
- StartFadeInAnimation();
-
- if( buttonImage || selectedImage )
- {
- mPaintState = SelectedUnselectedTransition;
- }
- else
- {
- mPaintState = UnselectedState;
- }
- break;
- }
- case UnselectedSelectedTransition:
- {
- float opacity = 1.f;
- if( fadeOutButtonImage )
- {
- opacity = fadeOutButtonImage.GetCurrentOpacity();
- }
- StopFadeOutAnimation( false );
- StopFadeInAnimation();
-
- FadeOutImage( Foreground, selectedImage, 1.f - opacity );
- FadeInImage( buttonImage, opacity );
-
- StartFadeOutAnimation();
- StartFadeInAnimation();
-
- if( buttonImage || selectedImage )
- {
- mPaintState = SelectedUnselectedTransition;
- }
- else
- {
- mPaintState = UnselectedState;
- }
- break;
- }
- default:
- {
- break;
- }
- }
-}
-
-void PushButton::OnClicked()
-{
- OnReleased();
-}
-
-void PushButton::OnControlSizeSet( const Vector3& targetSize )
-{
- if( targetSize != mSize )
- {
- mSize = targetSize;
-
- Actor& label = GetLabel();
-
- if( label )
- {
- label.SetSize( mSize );
- }
- }
-}
-
-Vector3 PushButton::GetNaturalSize()
-{
- Vector3 size = Control::GetNaturalSize();
-
- const bool widthIsZero = EqualsZero( size.width );
- const bool heightIsZero = EqualsZero( size.height );
-
- if( widthIsZero || heightIsZero )
- {
- // If background and background not scale9 try get size from that
- ImageActor imageActor = FindImageActor( GetButtonImage() );
- if( imageActor && imageActor.GetStyle() != ImageActor::STYLE_NINE_PATCH )
- {
- Vector3 imageSize = RelayoutHelper::GetNaturalSize( imageActor );
-
- if( widthIsZero )
- {
- size.width = imageSize.width;
- }
-
- if( heightIsZero )
- {
- size.height = imageSize.height;
- }
- }
-
- ImageActor backgroundImageActor = FindImageActor( GetBackgroundImage() );
- if( backgroundImageActor && backgroundImageActor.GetStyle() != ImageActor::STYLE_NINE_PATCH )
- {
- Vector3 imageSize = RelayoutHelper::GetNaturalSize( backgroundImageActor );
-
- if( widthIsZero )
- {
- size.width = std::max( size.width, imageSize.width );
- }
-
- if( heightIsZero )
- {
- size.height = std::max( size.height, imageSize.height );
- }
- }
- }
-
- return size;
-}
-
-Actor& PushButton::GetFadeOutButtonImage()
-{
- return mFadeOutButtonContent;
-}
-
-Actor& PushButton::GetFadeOutBackgroundImage()
-{
- return mFadeOutBackgroundContent;
-}
-
-void PushButton::AddToFadeInAnimation( const Actor& actor )
-{
- if( !mFadeInAnimation )
- {
- mFadeInAnimation = Dali::Animation::New( GetAnimationTime() );
- }
-
- mFadeInAnimation.OpacityTo( actor, 1.f );
-}
-
-void PushButton::StartFadeInAnimation()
-{
- if( mFadeInAnimation )
- {
- mFadeInAnimation.FinishedSignal().Connect( this, &PushButton::FadeInAnimationFinished );
- mFadeInAnimation.Play();
- }
-}
-
-void PushButton::StopFadeInAnimation()
-{
- if( mFadeInAnimation )
- {
- mFadeInAnimation.Clear();
- mFadeInAnimation.Reset();
- }
-}
-
-void PushButton::AddToFadeOutAnimation( const Actor& actor )
-{
- if( !mFadeOutAnimation )
- {
- mFadeOutAnimation = Dali::Animation::New( GetAnimationTime() );
- }
-
- mFadeOutAnimation.OpacityTo( actor, 0.f );
-}
-
-void PushButton::StartFadeOutAnimation()
-{
- if( mFadeOutAnimation )
- {
- mFadeOutAnimation.FinishedSignal().Connect( this, &PushButton::FadeOutAnimationFinished );
- mFadeOutAnimation.Play();
- }
-}
-
-void PushButton::StopFadeOutAnimation( bool remove )
-{
- if( mFadeOutAnimation )
- {
- mFadeOutAnimation.Clear();
- mFadeOutAnimation.Reset();
- }
-
- if( remove )
- {
- Actor& fadeOutButtonImage = GetFadeOutButtonImage();
- Actor& fadeOutBackgroundImage = GetFadeOutBackgroundImage();
-
- if( fadeOutButtonImage && fadeOutButtonImage.GetParent() )
- {
- fadeOutButtonImage.GetParent().Remove( fadeOutButtonImage );
- }
-
- if( fadeOutBackgroundImage && fadeOutBackgroundImage.GetParent() )
- {
- fadeOutBackgroundImage.GetParent().Remove( fadeOutBackgroundImage );
- }
-
- fadeOutButtonImage.Reset();
- fadeOutBackgroundImage.Reset();
- }
-}
-
-void PushButton::FadeInImage( Actor& image, float opacity )
-{
- if( image )
- {
- image.SetOpacity( opacity );
- if( !image.GetParent() )
- {
- Self().Add( image );
- }
-
- AddToFadeInAnimation( image );
- }
-}
-
-void PushButton::FadeOutImage( ImageLayer layer, Actor& image, float opacity )
-{
- if( image )
- {
- Actor& fadeOutButtonImage = GetFadeOutButtonImage();
- Actor& fadeOutBackgroundImage = GetFadeOutBackgroundImage();
-
- Actor& actorLayer = ( ( Background == layer ) ? fadeOutBackgroundImage : fadeOutButtonImage );
-
- actorLayer = image;
- actorLayer.SetOpacity( opacity );
-
- AddToFadeOutAnimation( actorLayer );
- }
-}
-
-void PushButton::FadeOutAnimationFinished( Dali::Animation& source )
-{
- switch( mPaintState )
- {
- case UnselectedSelectedTransition:
- {
- mPaintState = SelectedState;
- break;
- }
- case SelectedUnselectedTransition:
- {
- mPaintState = UnselectedState;
- break;
- }
- case UnselectedDisabledTransition:
- {
- mPaintState = DisabledUnselectedState;
- break;
- }
- case DisabledUnselectedTransition:
- {
- mPaintState = UnselectedState;
- break;
- }
- case SelectedDisabledTransition:
- {
- mPaintState = DisabledSelectedState;
- break;
- }
- case DisabledSelectedTransition:
- {
- mPaintState = SelectedState;
- break;
- }
- default:
- {
- break;
- }
- }
-
- StopFadeOutAnimation();
-}
-
-void PushButton::FadeInAnimationFinished( Dali::Animation& source )
-{
- switch( mPaintState )
- {
- case UnselectedSelectedTransition:
- {
- mPaintState = SelectedState;
- break;
- }
- case SelectedUnselectedTransition:
- {
- mPaintState = UnselectedState;
- break;
- }
- case UnselectedDisabledTransition:
- {
- mPaintState = DisabledUnselectedState;
- break;
- }
- case DisabledUnselectedTransition:
- {
- mPaintState = UnselectedState;
- break;
- }
- case SelectedDisabledTransition:
- {
- mPaintState = DisabledSelectedState;
- break;
- }
- case DisabledSelectedTransition:
- {
- mPaintState = SelectedState;
- break;
- }
- default:
- {
- break;
- }
- }
-
- StopFadeInAnimation();