X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=dali-toolkit%2Finternal%2Fcontrols%2Fbuttons%2Fbutton-impl.cpp;h=acf3a5a70363da7a878fa737794b0efc4fbe43cc;hb=18088175cb55711d4675c6ea25b1b01022886be5;hp=fdecbba41b08249f46fdc021e5b48e5aaaa4c0bc;hpb=1c3cb32385174b852b8d57b531625f733238f664;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/buttons/button-impl.cpp b/dali-toolkit/internal/controls/buttons/button-impl.cpp index fdecbba..acf3a5a 100644 --- a/dali-toolkit/internal/controls/buttons/button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/button-impl.cpp @@ -21,6 +21,7 @@ // EXTERNAL INCLUDES #include #include +#include #include #include @@ -33,77 +34,56 @@ namespace Dali namespace Toolkit { -const Property::Index Button::PROPERTY_DISABLED = Internal::Button::BUTTON_PROPERTY_START_INDEX; -const Property::Index Button::PROPERTY_AUTO_REPEATING = Internal::Button::BUTTON_PROPERTY_START_INDEX + 1; -const Property::Index Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY = Internal::Button::BUTTON_PROPERTY_START_INDEX + 2; -const Property::Index Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY = Internal::Button::BUTTON_PROPERTY_START_INDEX + 3; -const Property::Index Button::PROPERTY_TOGGLABLE = Internal::Button::BUTTON_PROPERTY_START_INDEX + 4; -const Property::Index Button::PROPERTY_SELECTED = Internal::Button::BUTTON_PROPERTY_START_INDEX + 5; -const Property::Index Button::PROPERTY_NORMAL_STATE_ACTOR = Internal::Button::BUTTON_PROPERTY_START_INDEX + 6; -const Property::Index Button::PROPERTY_SELECTED_STATE_ACTOR = Internal::Button::BUTTON_PROPERTY_START_INDEX + 7; -const Property::Index Button::PROPERTY_DISABLED_STATE_ACTOR = Internal::Button::BUTTON_PROPERTY_START_INDEX + 8; -const Property::Index Button::PROPERTY_LABEL_ACTOR = Internal::Button::BUTTON_PROPERTY_START_INDEX + 9; - namespace Internal { namespace { -const unsigned int INITIAL_AUTOREPEATING_DELAY( 0.15f ); -const unsigned int NEXT_AUTOREPEATING_DELAY( 0.05f ); - -// Signals - -const char* const SIGNAL_PRESSED = "pressed"; -const char* const SIGNAL_RELEASED = "released"; -const char* const SIGNAL_CLICKED = "clicked"; -const char* const SIGNAL_STATE_CHANGED = "state-changed"; - -// Actions - -const char* const ACTION_BUTTON_CLICK = "button-click"; - BaseHandle Create() { // empty handle as we cannot create button (but type registered for clicked signal) return BaseHandle(); } -TypeRegistration typeRegistration( typeid( Toolkit::Button ), typeid( Toolkit::Control ), Create ); +// Setup properties, signals and actions using the type-registry. +DALI_TYPE_REGISTRATION_BEGIN( Toolkit::Button, Toolkit::Control, Create ); + +DALI_PROPERTY_REGISTRATION( Button, "disabled", BOOLEAN, DISABLED ) +DALI_PROPERTY_REGISTRATION( Button, "auto-repeating", BOOLEAN, AUTO_REPEATING ) +DALI_PROPERTY_REGISTRATION( Button, "initial-auto-repeating-delay", FLOAT, INITIAL_AUTO_REPEATING_DELAY ) +DALI_PROPERTY_REGISTRATION( Button, "next-auto-repeating-delay", FLOAT, NEXT_AUTO_REPEATING_DELAY ) +DALI_PROPERTY_REGISTRATION( Button, "togglable", BOOLEAN, TOGGLABLE ) +DALI_PROPERTY_REGISTRATION( Button, "selected", BOOLEAN, SELECTED ) +DALI_PROPERTY_REGISTRATION( Button, "normal-state-actor", MAP, NORMAL_STATE_ACTOR ) +DALI_PROPERTY_REGISTRATION( Button, "selected-state-actor", MAP, SELECTED_STATE_ACTOR ) +DALI_PROPERTY_REGISTRATION( Button, "disabled-state-actor", MAP, DISABLED_STATE_ACTOR ) +DALI_PROPERTY_REGISTRATION( Button, "label-actor", MAP, LABEL_ACTOR ) + +DALI_SIGNAL_REGISTRATION( Button, "pressed", SIGNAL_PRESSED ) +DALI_SIGNAL_REGISTRATION( Button, "released", SIGNAL_RELEASED ) +DALI_SIGNAL_REGISTRATION( Button, "clicked", SIGNAL_CLICKED ) +DALI_SIGNAL_REGISTRATION( Button, "state-changed", SIGNAL_STATE_CHANGED ) -SignalConnectorType signalConnector1( typeRegistration, SIGNAL_PRESSED , &Button::DoConnectSignal ); -SignalConnectorType signalConnector2( typeRegistration, SIGNAL_RELEASED, &Button::DoConnectSignal ); -SignalConnectorType signalConnector3( typeRegistration, SIGNAL_CLICKED, &Button::DoConnectSignal ); -SignalConnectorType signalConnector4( typeRegistration, SIGNAL_STATE_CHANGED, &Button::DoConnectSignal ); +DALI_ACTION_REGISTRATION( Button, "button-click", ACTION_BUTTON_CLICK ) -TypeAction action1( typeRegistration, ACTION_BUTTON_CLICK, &Button::DoAction ); +DALI_TYPE_REGISTRATION_END() -PropertyRegistration property1( typeRegistration, "disabled", Toolkit::Button::PROPERTY_DISABLED, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property2( typeRegistration, "auto-repeating", Toolkit::Button::PROPERTY_AUTO_REPEATING, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property3( typeRegistration, "initial-auto-repeating-delay", Toolkit::Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY, Property::FLOAT, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property4( typeRegistration, "next-auto-repeating-delay", Toolkit::Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY, Property::FLOAT, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property5( typeRegistration, "togglable", Toolkit::Button::PROPERTY_TOGGLABLE, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property6( typeRegistration, "selected", Toolkit::Button::PROPERTY_SELECTED, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property7( typeRegistration, "normal-state-actor", Toolkit::Button::PROPERTY_NORMAL_STATE_ACTOR, Property::MAP, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property8( typeRegistration, "selected-state-actor", Toolkit::Button::PROPERTY_SELECTED_STATE_ACTOR, Property::MAP, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property9( typeRegistration, "disabled-state-actor", Toolkit::Button::PROPERTY_DISABLED_STATE_ACTOR, Property::MAP, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property10( typeRegistration, "label-actor", Toolkit::Button::PROPERTY_LABEL_ACTOR, Property::MAP, &Button::SetProperty, &Button::GetProperty ); +const unsigned int INITIAL_AUTOREPEATING_DELAY( 0.15f ); +const unsigned int NEXT_AUTOREPEATING_DELAY( 0.05f ); } // unnamed namespace Button::Button() : Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ), - mTogglableButton( false ), - mSelected( false ), - mPainter( NULL ), mAutoRepeatingTimer(), mDisabled( false ), mAutoRepeating( false ), -// mTogglableButton( false ), -// mSelected( false ), + mTogglableButton( false ), + mSelected( false ), mInitialAutoRepeatingDelay( INITIAL_AUTOREPEATING_DELAY ), mNextAutoRepeatingDelay( NEXT_AUTOREPEATING_DELAY ), + mAnimationTime( 0.0f ), mClickActionPerforming( false ), mState( ButtonUp ) { @@ -119,13 +99,11 @@ Button::~Button() void Button::SetDisabled( bool disabled ) { - mDisabled = disabled; - - // Notifies the painter. - Toolkit::Button handle( GetOwner() ); - if( mPainter ) + if( disabled != mDisabled ) { - mPainter->SetDisabled( handle, mDisabled ); + mDisabled = disabled; + + OnDisabled( mDisabled ); } } @@ -142,17 +120,17 @@ void Button::SetAutoRepeating( bool autoRepeating ) if( autoRepeating ) { mTogglableButton = false; + if( mSelected ) { // Emit a signal is not wanted, only change the appearance. - Toolkit::Button handle( GetOwner() ); - mPainter->Selected( handle ); + OnSelected( false ); + mSelected = false; + + RelayoutRequest(); } } - - // Notifies the painter. - mPainter->SetAutoRepeating( mAutoRepeating ); } bool Button::IsAutoRepeating() const @@ -190,9 +168,6 @@ void Button::SetTogglableButton( bool togglable ) if( togglable ) { mAutoRepeating = false; - - // Notifies the painter. - mPainter->SetAutoRepeating( mAutoRepeating ); } } @@ -205,15 +180,17 @@ void Button::SetSelected( bool selected ) { if( !mDisabled && mTogglableButton && ( selected != mSelected ) ) { + // Notifies the derived class the button has been selected. + OnSelected( selected ); + mSelected = selected; Toolkit::Button handle( GetOwner() ); - // Notifies the painter the button has been selected. - mPainter->Selected( handle ); - // Emit signal. mStateChangedSignal.Emit( handle ); + + RelayoutRequest(); } } @@ -224,12 +201,12 @@ bool Button::IsSelected() const void Button::SetAnimationTime( float animationTime ) { - OnAnimationTimeSet( animationTime ); + mAnimationTime = animationTime; } float Button::GetAnimationTime() const { - return OnAnimationTimeRequested(); + return mAnimationTime; } void Button::SetLabel( const std::string& label ) @@ -237,15 +214,23 @@ void Button::SetLabel( const std::string& label ) Toolkit::TextView textView = Toolkit::TextView::New( label ); textView.SetWidthExceedPolicy( Toolkit::TextView::ShrinkToFit ); // Make sure our text always fits inside the button SetLabel( textView ); - - RelayoutRequest(); } void Button::SetLabel( Actor label ) { - Toolkit::Button handle( GetOwner() ); + if( mLabel != label ) + { + if( mLabel && mLabel.GetParent() ) + { + mLabel.GetParent().Remove( mLabel ); + } + + mLabel = label; - mPainter->SetLabel( handle, label ); + OnLabelSet(); + + RelayoutRequest(); + } } Actor Button::GetLabel() const @@ -258,145 +243,64 @@ Actor& Button::GetLabel() return mLabel; } -void Button::SetButtonImage( Image image ) -{ - SetButtonImage( ImageActor::New( image ) ); -} - -void Button::SetButtonImage( Actor image ) -{ - Toolkit::Button handle( GetOwner() ); - mPainter->SetButtonImage( handle, image ); -} - Actor Button::GetButtonImage() const { - return mButtonImage; + return mButtonContent; } Actor& Button::GetButtonImage() { - return mButtonImage; -} - -void Button::SetSelectedImage( Image image ) -{ - SetSelectedImage( ImageActor::New( image ) ); -} - -void Button::SetSelectedImage( Actor image ) -{ - Toolkit::Button handle( GetOwner() ); - mPainter->SetSelectedImage( handle, image ); + return mButtonContent; } Actor Button::GetSelectedImage() const { - return mSelectedImage; + return mSelectedContent; } Actor& Button::GetSelectedImage() { - return mSelectedImage; -} - -void Button::SetBackgroundImage( Image image ) -{ - SetBackgroundImage( ImageActor::New( image ) ); -} - -void Button::SetBackgroundImage( Actor image ) -{ - Toolkit::Button handle( GetOwner() ); - mPainter->SetBackgroundImage( handle, image ); + return mSelectedContent; } Actor Button::GetBackgroundImage() const { - return mBackgroundImage; + return mBackgroundContent; } Actor& Button::GetBackgroundImage() { - return mBackgroundImage; -} - -void Button::SetDisabledImage( Image image ) -{ - SetDisabledImage( ImageActor::New( image ) ); -} - -void Button::SetDisabledImage( Actor image ) -{ - Toolkit::Button handle( GetOwner() ); - mPainter->SetDisabledImage( handle, image ); + return mBackgroundContent; } Actor Button::GetDisabledImage() const { - return mDisabledImage; + return mDisabledContent; } Actor& Button::GetDisabledImage() { - return mDisabledImage; -} - -void Button::SetDisabledSelectedImage( Image image ) -{ - SetDisabledSelectedImage( ImageActor::New( image ) ); -} - -void Button::SetDisabledSelectedImage( Actor image ) -{ - Toolkit::Button handle( GetOwner() ); - mPainter->SetDisabledSelectedImage( handle, image ); + return mDisabledContent; } Actor Button::GetDisabledSelectedImage() const { - return mDisabledSelectedImage; + return mDisabledSelectedContent; } Actor& Button::GetDisabledSelectedImage() { - return mDisabledSelectedImage; -} - -void Button::SetDisabledBackgroundImage( Image image ) -{ - SetDisabledBackgroundImage( ImageActor::New( image ) ); -} - -void Button::SetDisabledBackgroundImage( Actor image ) -{ - Toolkit::Button handle( GetOwner() ); - mPainter->SetDisabledBackgroundImage( handle, image ); + return mDisabledSelectedContent; } Actor Button::GetDisabledBackgroundImage() const { - return mDisabledBackgroundImage; + return mDisabledBackgroundContent; } Actor& Button::GetDisabledBackgroundImage() { - return mDisabledBackgroundImage; -} - -Actor& Button::GetFadeOutButtonImage() -{ - return mFadeOutButtonImage; -} - -Actor& Button::GetFadeOutSelectedImage() -{ - return mFadeOutSelectedImage; -} - -Actor& Button::GetFadeOutBackgroundImage() -{ - return mFadeOutBackgroundImage; + return mDisabledBackgroundContent; } bool Button::DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes ) @@ -432,16 +336,6 @@ void Button::DoClickAction( const PropertyValueContainer& attributes ) } } -void Button::OnAnimationTimeSet( float animationTime ) -{ - mPainter->SetAnimationTime( animationTime ); -} - -float Button::OnAnimationTimeRequested() const -{ - return mPainter->GetAnimationTime(); -} - void Button::OnButtonStageDisconnection() { if( ButtonDown == mState ) @@ -450,8 +344,8 @@ void Button::OnButtonStageDisconnection() { Toolkit::Button handle( GetOwner() ); - // Notifies the painter the button has been released. - mPainter->Released( handle ); + // Notifies the derived class the button has been released. + OnReleased(); if( mAutoRepeating ) { @@ -467,8 +361,8 @@ void Button::OnButtonDown() { Toolkit::Button handle( GetOwner() ); - // Notifies the painter the button has been pressed. - mPainter->Pressed( handle ); + // Notifies the derived class the button has been pressed. + OnPressed(); if( mAutoRepeating ) { @@ -490,17 +384,17 @@ void Button::OnButtonUp() } else { - Toolkit::Button handle( GetOwner() ); - - // Notifies the painter the button has been clicked. - mPainter->Released( handle ); - mPainter->Clicked( handle ); + // Notifies the derived class the button has been clicked. + OnReleased(); + OnClicked(); if( mAutoRepeating ) { mAutoRepeatingTimer.Reset(); } + Toolkit::Button handle( GetOwner() ); + //Emit signal. mReleasedSignal.Emit( handle ); mClickedSignal.Emit( handle ); @@ -516,8 +410,8 @@ void Button::OnTouchPointLeave() { Toolkit::Button handle( GetOwner() ); - // Notifies the painter the button has been released. - mPainter->Released( handle ); + // Notifies the derived class the button has been released. + OnReleased(); if( mAutoRepeating ) { @@ -653,13 +547,6 @@ bool Button::OnTouchEvent(const TouchEvent& event) void Button::OnInitialize() { - // Initialize the painter and notifies subclasses. - Toolkit::Button handle( GetOwner() ); - if( mPainter ) - { - mPainter->Initialize( handle ); - } - Actor self = Self(); mTapDetector = TapGestureDetector::New(); @@ -678,15 +565,6 @@ void Button::OnActivated() DoClickAction( attributes ); } -void Button::OnControlSizeSet(const Vector3& targetSize) -{ - Toolkit::Button handle( GetOwner() ); - if( mPainter ) - { - mPainter->SetSize( handle, targetSize ); - } -} - void Button::OnTap(Actor actor, const TapGesture& tap) { // Do nothing. @@ -709,8 +587,8 @@ bool Button::AutoRepeatingSlot() Toolkit::Button handle( GetOwner() ); - // Notifies the painter the button has been pressed. - mPainter->Pressed( handle ); + // Notifies the derived class the button has been pressed. + OnPressed(); //Emit signal. consumed = mReleasedSignal.Emit( handle ); @@ -727,11 +605,6 @@ void Button::OnControlStageDisconnection() mState = ButtonUp; } -void Button::SetPainter(ButtonPainterPtr painter) -{ - mPainter = painter; -} - Button::ButtonState Button::GetState() { return mState; @@ -745,61 +618,61 @@ void Button::SetProperty( BaseObject* object, Property::Index index, const Prope { switch ( index ) { - case Toolkit::Button::PROPERTY_DISABLED: + case Toolkit::Button::Property::DISABLED: { GetImplementation( button ).SetDisabled( value.Get() ); break; } - case Toolkit::Button::PROPERTY_AUTO_REPEATING: + case Toolkit::Button::Property::AUTO_REPEATING: { GetImplementation( button ).SetAutoRepeating( value.Get< bool >() ); break; } - case Toolkit::Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY: + case Toolkit::Button::Property::INITIAL_AUTO_REPEATING_DELAY: { GetImplementation( button ).SetInitialAutoRepeatingDelay( value.Get< float >() ); break; } - case Toolkit::Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY: + case Toolkit::Button::Property::NEXT_AUTO_REPEATING_DELAY: { GetImplementation( button ).SetNextAutoRepeatingDelay( value.Get< float >() ); break; } - case Toolkit::Button::PROPERTY_TOGGLABLE: + case Toolkit::Button::Property::TOGGLABLE: { GetImplementation( button ).SetTogglableButton( value.Get< bool >() ); break; } - case Toolkit::Button::PROPERTY_SELECTED: + case Toolkit::Button::Property::SELECTED: { GetImplementation( button ).SetSelected( value.Get< bool >() ); break; } - case Toolkit::Button::PROPERTY_NORMAL_STATE_ACTOR: + case Toolkit::Button::Property::NORMAL_STATE_ACTOR: { GetImplementation( button ).SetButtonImage( Scripting::NewActor( value.Get< Property::Map >() ) ); break; } - case Toolkit::Button::PROPERTY_SELECTED_STATE_ACTOR: + case Toolkit::Button::Property::SELECTED_STATE_ACTOR: { GetImplementation( button ).SetSelectedImage( Scripting::NewActor( value.Get< Property::Map >() ) ); break; } - case Toolkit::Button::PROPERTY_DISABLED_STATE_ACTOR: + case Toolkit::Button::Property::DISABLED_STATE_ACTOR: { GetImplementation( button ).SetDisabledImage( Scripting::NewActor( value.Get< Property::Map >() ) ); break; } - case Toolkit::Button::PROPERTY_LABEL_ACTOR: + case Toolkit::Button::Property::LABEL_ACTOR: { GetImplementation( button ).SetLabel( Scripting::NewActor( value.Get< Property::Map >() ) ); break; @@ -818,67 +691,67 @@ Property::Value Button::GetProperty( BaseObject* object, Property::Index propert { switch ( propertyIndex ) { - case Toolkit::Button::PROPERTY_DISABLED: + case Toolkit::Button::Property::DISABLED: { value = GetImplementation( button ).mDisabled; break; } - case Toolkit::Button::PROPERTY_AUTO_REPEATING: + case Toolkit::Button::Property::AUTO_REPEATING: { value = GetImplementation( button ).mAutoRepeating; break; } - case Toolkit::Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY: + case Toolkit::Button::Property::INITIAL_AUTO_REPEATING_DELAY: { value = GetImplementation( button ).mInitialAutoRepeatingDelay; break; } - case Toolkit::Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY: + case Toolkit::Button::Property::NEXT_AUTO_REPEATING_DELAY: { value = GetImplementation( button ).mNextAutoRepeatingDelay; break; } - case Toolkit::Button::PROPERTY_TOGGLABLE: + case Toolkit::Button::Property::TOGGLABLE: { value = GetImplementation( button ).mTogglableButton; break; } - case Toolkit::Button::PROPERTY_SELECTED: + case Toolkit::Button::Property::SELECTED: { value = GetImplementation( button ).mSelected; break; } - case Toolkit::Button::PROPERTY_NORMAL_STATE_ACTOR: + case Toolkit::Button::Property::NORMAL_STATE_ACTOR: { Property::Map map; - Scripting::CreatePropertyMap( GetImplementation( button ).mButtonImage, map ); + Scripting::CreatePropertyMap( GetImplementation( button ).mButtonContent, map ); value = map; break; } - case Toolkit::Button::PROPERTY_SELECTED_STATE_ACTOR: + case Toolkit::Button::Property::SELECTED_STATE_ACTOR: { Property::Map map; - Scripting::CreatePropertyMap( GetImplementation( button ).mSelectedImage, map ); + Scripting::CreatePropertyMap( GetImplementation( button ).mSelectedContent, map ); value = map; break; } - case Toolkit::Button::PROPERTY_DISABLED_STATE_ACTOR: + case Toolkit::Button::Property::DISABLED_STATE_ACTOR: { Property::Map map; - Scripting::CreatePropertyMap( GetImplementation( button ).mDisabledImage, map ); + Scripting::CreatePropertyMap( GetImplementation( button ).mDisabledContent, map ); value = map; break; } - case Toolkit::Button::PROPERTY_LABEL_ACTOR: + case Toolkit::Button::Property::LABEL_ACTOR: { Property::Map map; Scripting::CreatePropertyMap( GetImplementation( button ).mLabel, map );