X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fbuttons%2Fbutton-impl.h;h=5197acadbd4a5002ca7453828d193346e6454558;hb=b46395d404c2b437c4679975e0ed2c073949ba61;hp=f0884e193e07dcf8ebc9dc0aec40828209ff59af;hpb=2acdedcc7c7e732a9ec97d08c8cee7423ed6ebf7;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/buttons/button-impl.h b/dali-toolkit/internal/controls/buttons/button-impl.h index f0884e1..5197aca 100644 --- a/dali-toolkit/internal/controls/buttons/button-impl.h +++ b/dali-toolkit/internal/controls/buttons/button-impl.h @@ -24,7 +24,6 @@ // INTERNAL INCLUDES #include #include -#include "button-painter-impl.h" namespace Dali { @@ -42,14 +41,6 @@ namespace Internal */ class Button : public Control { -public: - - // Properties - enum - { - BUTTON_PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, - BUTTON_PROPERTY_END_INDEX = BUTTON_PROPERTY_START_INDEX + 1000 ///< Reserving 1000 property indices - }; protected: @@ -118,7 +109,7 @@ public: /** * @copydoc Dali::Toolkit::Button::SetSelected( bool selected ) */ - virtual void SetSelected( bool selected ); + void SetSelected( bool selected ); /** * @copydoc Dali::Toolkit::Button::IsSelected() const @@ -143,7 +134,7 @@ public: /** * @copydoc Dali::Toolkit::Button::SetLabel( Actor label ) */ - virtual void SetLabel( Actor label ); // TODO: After refactoring painter, virtual will be removed + void SetLabel( Actor label ); /** * @copydoc Dali::Toolkit::Button::GetLabel() @@ -151,17 +142,6 @@ public: Actor GetLabel() const; /** - * Used by the painter only. - * @return A reference to the label actor. - */ - Actor& GetLabel(); - - /** - * @copydoc Dali::Toolkit::PushButton::SetButtonImage( const Image image ) - */ - void SetButtonImage( Image image ); - - /** * @copydoc Dali::Toolkit::PushButton::SetButtonImage( Actor image ) */ void SetButtonImage( Actor image ); @@ -172,17 +152,12 @@ public: Actor GetButtonImage() const; /** - * Used by the painter only. + * Internal use only. * @return A reference to the button image. */ Actor& GetButtonImage(); /** - * @copydoc Dali::Toolkit::PushButton::SetSelectedImage( const Image image ) - */ - void SetSelectedImage( Image image ); - - /** * @copydoc Dali::Toolkit::PushButton::SetSelectedImage( Actor image ) */ void SetSelectedImage( Actor image ); @@ -193,17 +168,12 @@ public: Actor GetSelectedImage() const; /** - * Used by the painter only. + * Internal use only. * @return A reference to the selected image. */ Actor& GetSelectedImage(); /** - * @copydoc Dali::Toolkit::PushButton::SetBackgroundImage( const Image image ) - */ - void SetBackgroundImage( Image image ); - - /** * @copydoc Dali::Toolkit::PushButton::SetBackgroundImage( Actor image ) */ void SetBackgroundImage( Actor image ); @@ -214,15 +184,26 @@ public: Actor GetBackgroundImage() const; /** - * Used by the painter only. + * Internal use only. * @return A reference to the background image. */ Actor& GetBackgroundImage(); /** - * @copydoc Dali::Toolkit::PushButton::SetDisabledImage( Image image ) + * @copydoc Dali::Toolkit::PushButton::SetSelectedBackgroundImage( Actor image ) + */ + void SetSelectedBackgroundImage( Actor image ); + + /** + * @copydoc Dali::Toolkit::PushButton::GetSelectedBackgroundImage() */ - void SetDisabledImage( Image image ); + Actor GetSelectedBackgroundImage() const; + + /** + * Internal use only. + * @return A reference to the selected background image. + */ + Actor& GetSelectedBackgroundImage(); /** * @copydoc Dali::Toolkit::PushButton::SetDisabledImage( Actor image ) @@ -235,17 +216,12 @@ public: Actor GetDisabledImage() const; /** - * Used by the painter only. + * Internal use only. * @return A reference to the disabled button image. */ Actor& GetDisabledImage(); /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledSelectedImage( Image image ) - */ - void SetDisabledSelectedImage( Image image ); - - /** * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledSelectedImage( Actor image ) */ void SetDisabledSelectedImage( Actor image ); @@ -256,17 +232,12 @@ public: Actor GetDisabledSelectedImage() const; /** - * Used by the painter only. + * Internal use only. * @return A reference to the disabled selected image. */ Actor& GetDisabledSelectedImage(); /** - * @copydoc Dali::Toolkit::PushButton::SetDisabledBackgroundImage( Image image ) - */ - void SetDisabledBackgroundImage( Image image ); - - /** * @copydoc Dali::Toolkit::PushButton::SetDisabledBackgroundImage( Actor image ) */ void SetDisabledBackgroundImage( Actor image ); @@ -277,39 +248,34 @@ public: Actor GetDisabledBackgroundImage() const; /** - * Used by the painter only. + * Internal use only. * @return A reference to the disabled background image. */ Actor& GetDisabledBackgroundImage(); /** - * Used by the painter only. - * @return A reference to the button image that is fading out. + * Performs actions as requested using the action name. + * @param[in] object The object on which to perform the action. + * @param[in] actionName The action to perform. + * @param[in] attributes The attributes with which to perfrom this action. + * @return true if action has been accepted by this control */ - Actor& GetFadeOutButtonImage(); + static bool DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes ); - /** - * Used by the painter only. - * @return A reference to the selected image that is fading out. - */ - Actor& GetFadeOutSelectedImage(); +protected: /** - * Used by the painter only. - * @return A reference to the background image that is fading out. + * @return A reference to the label actor. */ - Actor& GetFadeOutBackgroundImage(); + Actor& GetLabel(); /** - * Performs actions as requested using the action name. - * @param[in] object The object on which to perform the action. - * @param[in] actionName The action to perform. - * @param[in] attributes The attributes with which to perfrom this action. - * @return true if action has been accepted by this control + * It changes the transition state of the push button. */ - static bool DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes ); + void UpdatePaintTransitionState(); private: + /** * Perform the click action to click the button. * @param[in] attributes The attributes to perfrom this action. @@ -323,6 +289,46 @@ private: virtual void OnButtonInitialize() { } /** + * This method is called when the label is set. + */ + virtual void OnLabelSet() {} + + /** + * This method is called when the button image is set + */ + virtual void OnButtonImageSet() {} + + /** + * This method is called when the selected image is set + */ + virtual void OnSelectedImageSet() {} + + /** + * This method is called when the background image is set + */ + virtual void OnBackgroundImageSet() {} + + /** + * This method is called when the selected background image is set + */ + virtual void OnSelectedBackgroundImageSet() {} + + /** + * This method is called when the disabled button image is set + */ + virtual void OnDisabledImageSet() {} + + /** + * This method is called when the disabled selected image is set + */ + virtual void OnDisabledSelectedImageSet() {} + + /** + * This method is called when the disabled background image is set + */ + virtual void OnDisabledBackgroundImageSet() {} + + /** * This method is called from the OnTouchEvent method when the button is down. * Could be reimplemented in subclasses to provide specific behaviour. */ @@ -348,24 +354,39 @@ private: virtual void OnTouchPointInterrupted(); /** - * This method is called when the animation time is set. - * Needs to be reimplemented in subclasses to set the animation time in different buttons. - * @param animationTime The animation time in seconds. + * This method is called when the button is removed from the stage. + * Could be reimplemented in subclasses to provide specific behaviour. */ - virtual void OnAnimationTimeSet( float animationTime ); + virtual void OnButtonStageDisconnection(); /** - * This method is called when the animation time is requested. - * Needs to be reimplemented in subclases to return the animation time. - * @return The animation time in seconds. + * This method is called when the \e selected property is changed. + * @return true if the transition animation is started. */ - virtual float OnAnimationTimeRequested() const; + virtual bool OnSelected() { return false; } /** - * This method is called when the button is removed from the stage. - * Could be reimplemented in subclasses to provide specific behaviour. + * This method is called when the \e disabled property is changed. + * @return true if the transition animation is started. */ - virtual void OnButtonStageDisconnection(); + virtual bool OnDisabled() { return false; } + + /** + * This method is called when the button is pressed. + * @return true if the transition animation is started. + */ + virtual bool OnPressed() { return false; } + + /** + * This method is called when the button is released. + * @return true if the transition animation is started. + */ + virtual bool OnReleased() { return false; } + + /** + * This method stops all animations + */ + virtual void StopAllAnimations() {} public: @@ -438,11 +459,6 @@ private: // From Control virtual void OnActivated(); /** - * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& targetSize ) - */ - virtual void OnControlSizeSet( const Vector3& targetSize ); - - /** * Callback received when the button is disconnected from the stage. * It resets the button status. */ @@ -471,6 +487,23 @@ private: */ bool AutoRepeatingSlot(); + /** + * Sets the button as selected or unselected. + * @param[in] selected \e selected property value. + * @param[in] emitSignal Emit a signal if this value is \e true. + */ + void SetSelected( bool selected, bool emitSignal ); + + /** + * This method is called when the button is pressed. + */ + void Pressed(); + + /** + * This method is called when the button is released. + */ + void Released(); + protected: enum ButtonState @@ -479,13 +512,41 @@ protected: ButtonDown, ///< The button is down. }; - void SetPainter(ButtonPainterPtr painter); + /** + * Button paint states. + */ + enum PaintState + { + UnselectedState, ///< The button is unselected. + SelectedState, ///< The button is selected. + DisabledUnselectedState, ///< The button is disabled and unselected. + DisabledSelectedState, ///< The button is disabled and selected. + UnselectedSelectedTransition, ///< The button is in transition from unselected to selected. + SelectedUnselectedTransition, ///< The button is in transition from selected to unselected. + UnselectedDisabledTransition, ///< The button is in transition from unselected to disabled. + DisabledUnselectedTransition, ///< The button is in transition from disabled to unselected. + SelectedDisabledTransition, ///< The button is in transition from selected to disabled. + DisabledSelectedTransition ///< The button is in transition from disabled to selected. + }; ButtonState GetState(); + PaintState GetPaintState(); + + /** + * Inserts the actor to the button. + */ + void InsertChild( unsigned int index, Actor& actor ); + + /** + * Removes the actor from the button. + */ + void RemoveChild( Actor& actor ); - Actor mLabel; //TODO: After refactoring painter, this will be private - bool mTogglableButton; //TODO: After refactoring painter, this will be private - bool mSelected; //TODO: After refactoring painter, this will be private + /** + * Finds the index of the actor. + * If the actor doesn't exist, return the last index + 1. + */ + unsigned int FindChildIndex( Actor& actor ); private: @@ -497,47 +558,43 @@ private: private: - ButtonPainterPtr mPainter; ///< Pointer to a ButtonPainter base class. - // Signals Toolkit::Button::ButtonSignalType mPressedSignal; ///< Signal emitted when the button is pressed. - Toolkit::Button::ButtonSignalType mReleasedSignal; ///< Signal emitted when the button is released. + Toolkit::Button::ButtonSignalType mReleasedSignal; ///< Signal emitted when the button is released. Toolkit::Button::ButtonSignalType mClickedSignal; ///< Signal emitted when the button is clicked. - Toolkit::Button::ButtonSignalType mStateChangedSignal; ///< Signal emitted when the button's state is changed. + Toolkit::Button::ButtonSignalType mStateChangedSignal; ///< Signal emitted when the button's state is changed. Timer mAutoRepeatingTimer; ///< Timer used to implement the autorepeating property. -// Actor mLabel; ///< Stores the button label. + Actor mLabel; ///< Stores the button label. - Actor mButtonImage; ///< Stores the unselected image. - Actor mSelectedImage; ///< Stores the selected image. - Actor mBackgroundImage; ///< Stores the background image. - Actor mDisabledImage; ///< Stores the disabled image. - Actor mDisabledSelectedImage; ///< Stores the disabled selected image. - Actor mDisabledBackgroundImage; ///< Stores the disabled background image. - - Actor mFadeOutButtonImage; ///< Stores a foreground image, which is in a fade out animation, to be removed when the animation finishes. - Actor mFadeOutSelectedImage; ///< Stores a foreground image, which is in a fade out animation, to be removed when the animation finishes. - Actor mFadeOutBackgroundImage; ///< Stores a background image, which is in a fade out animation, to be removed when the animation finishes. + Actor mButtonContent; ///< Stores the unselected content. + Actor mSelectedContent; ///< Stores the selected content. + Actor mBackgroundContent; ///< Stores the background content. + Actor mSelectedBackgroundContent; ///< Stores the selected background content. + Actor mDisabledContent; ///< Stores the disabled content. + Actor mDisabledSelectedContent; ///< Stores the disabled selected content. + Actor mDisabledBackgroundContent; ///< Stores the disabled background content. TapGestureDetector mTapDetector; bool mDisabled; ///< Stores the disabled property. bool mAutoRepeating; ///< Stores the autorepeating property. -// bool mTogglableButton; ///< Stores the togglable property. -// bool mSelected; ///< Stores the selected state. + bool mTogglableButton; ///< Stores the togglable property. + bool mSelected; ///< Stores the selected state. float mInitialAutoRepeatingDelay; ///< Stores the initial autorepeating delay in seconds. float mNextAutoRepeatingDelay; ///< Stores the next autorepeating delay in seconds. + float mAnimationTime; ///< The animation time. // Actions bool mClickActionPerforming; ButtonState mState; ///< Stores the button state. + PaintState mPaintState; ///< Stores the paint state. }; } // namespace Internal - // Helpers for public-api forwarding methods inline Toolkit::Internal::Button& GetImplementation( Toolkit::Button& button ) @@ -563,4 +620,3 @@ inline const Toolkit::Internal::Button& GetImplementation( const Toolkit::Button } // namespace Dali #endif // __DALI_TOOLKIT_INTERNAL_BUTTON_H__ -