X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fbuttons%2Fbutton-impl.h;h=2c4c115330c42f7240ddc30b3c77110e39af913d;hb=928136dbb9e23970f3894eabc7c8b224003b77be;hp=3881cc170ae2014f040fa536c492a9ba6c6f14bd;hpb=57869973578f6a0b0f836d396c7232ddb8302c6b;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 3881cc1..2c4c115 100644 --- a/dali-toolkit/internal/controls/buttons/button-impl.h +++ b/dali-toolkit/internal/controls/buttons/button-impl.h @@ -18,10 +18,12 @@ * */ +// EXTERNAL INCLUDES +#include + // INTERNAL INCLUDES #include #include -#include "button-painter-impl.h" namespace Dali { @@ -73,6 +75,56 @@ public: bool IsDisabled() const; /** + * @copydoc Dali::Toolkit::Button::SetAutoRepeating( bool autoRepeating ) + */ + void SetAutoRepeating( bool autoRepeating ); + + /** + * @copydoc Dali::Toolkit::Button::IsAutoRepeating() const + */ + bool IsAutoRepeating() const; + + /** + * @copydoc Dali::Toolkit::Button::SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ) + */ + void SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ); + + /** + * @copydoc Dali::Toolkit::Button::GetInitialAutoRepeatingDelay() const + */ + float GetInitialAutoRepeatingDelay() const; + + /** + * @copydoc Dali::Toolkit::Button::SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ) + */ + void SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ); + + /** + * @copydoc Dali::Toolkit::Button::GetNextAutoRepeatingDelay() const + */ + float GetNextAutoRepeatingDelay() const; + + /** + * @copydoc Dali::Toolkit::Button::SetTogglableButton( bool togglable ) + */ + void SetTogglableButton( bool togglable ); + + /** + * @copydoc Dali::Toolkit::Button::IsTogglableButton() const + */ + bool IsTogglableButton() const; + + /** + * @copydoc Dali::Toolkit::Button::SetSelected( bool selected ) + */ + void SetSelected( bool selected ); + + /** + * @copydoc Dali::Toolkit::Button::IsSelected() const + */ + bool IsSelected() const; + + /** * @copydoc Dali::Toolkit::Button::SetAnimationTime() */ void SetAnimationTime( float animationTime ); @@ -82,9 +134,143 @@ public: */ float GetAnimationTime() const; + /** + * @copydoc Dali::Toolkit::Button::SetLabel( const std::string& label ) + */ + void SetLabel( const std::string& label ); + + /** + * @copydoc Dali::Toolkit::Button::SetLabel( Actor label ) + */ + void SetLabel( Actor label ); + + /** + * @copydoc Dali::Toolkit::Button::GetLabel() + */ + Actor GetLabel() const; + + /** + * @copydoc Dali::Toolkit::PushButton::GetButtonImage() + */ + Actor GetButtonImage() const; + + /** + * Internal use only. + * @return A reference to the button image. + */ + Actor& GetButtonImage(); + + /** + * @copydoc Dali::Toolkit::PushButton::GetSelectedImage() + */ + Actor GetSelectedImage() const; + + /** + * Internal use only. + * @return A reference to the selected image. + */ + Actor& GetSelectedImage(); + + /** + * @copydoc Dali::Toolkit::PushButton::GetBackgroundImage() + */ + Actor GetBackgroundImage() const; + + /** + * Internal use only. + * @return A reference to the background image. + */ + Actor& GetBackgroundImage(); + + /** + * @copydoc Dali::Toolkit::PushButton::GetDisabledImage() + */ + Actor GetDisabledImage() const; + + /** + * Internal use only. + * @return A reference to the disabled button image. + */ + Actor& GetDisabledImage(); + + /** + * @copydoc Dali::Toolkit::CheckBoxButton::GetDisabledSelectedImage() + */ + Actor GetDisabledSelectedImage() const; + + /** + * Internal use only. + * @return A reference to the disabled selected image. + */ + Actor& GetDisabledSelectedImage(); + + /** + * @copydoc Dali::Toolkit::PushButton::GetDisabledBackgroundImage() + */ + Actor GetDisabledBackgroundImage() const; + + /** + * Internal use only. + * @return A reference to the disabled background image. + */ + Actor& GetDisabledBackgroundImage(); + + /** + * 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 + */ + static bool DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes ); + + /** + * @copydoc Dali::Toolkit::PushButton::SetButtonImage( Actor image ) + */ + virtual void SetButtonImage( Actor image ) {} + + /** + * @copydoc Dali::Toolkit::PushButton::SetSelectedImage( Actor image ) + */ + virtual void SetSelectedImage( Actor image ) {} + + /** + * @copydoc Dali::Toolkit::PushButton::SetBackgroundImage( Actor image ) + */ + virtual void SetBackgroundImage( Actor image ) {} + + /** + * @copydoc Dali::Toolkit::PushButton::SetDisabledImage( Actor image ) + */ + virtual void SetDisabledImage( Actor image ) {} + + /** + * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledSelectedImage( Actor image ) + */ + virtual void SetDisabledSelectedImage( Actor image ) {} + + /** + * @copydoc Dali::Toolkit::PushButton::SetDisabledBackgroundImage( Actor image ) + */ + virtual void SetDisabledBackgroundImage( Actor image ) {} + +protected: + + /** + * Internal use only. + * @return A reference to the label actor. + */ + Actor& GetLabel(); + private: /** + * Perform the click action to click the button. + * @param[in] attributes The attributes to perfrom this action. + */ + void DoClickAction( const PropertyValueContainer& attributes ); + + /** * This method is called after the button initialization. * Could be reimplemented in subclasses to provide specific behaviour. */ @@ -107,45 +293,71 @@ private: * more than one touch points are received. * Could be reimplemented in subclasses to provide specific behaviour. */ - virtual void OnTouchPointLeave() { } + virtual void OnTouchPointLeave(); /** * This method is called from the OnTouchEvent method when the touch point is interrupted. * Could be reimplemented in subclasses to provide specific behaviour. */ - virtual void OnTouchPointInterrupted() { } + 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 label is set. */ - virtual float OnAnimationTimeRequested() const; + virtual void OnLabelSet() {} /** - * 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 selected property is changed. + */ + virtual void OnSelected( bool selected ) {} + + /** + * This method is called when the \e disabled property is changed. + */ + virtual void OnDisabled( bool disabled ) {} + + /** + * This method is called when the button is pressed. */ - virtual void OnButtonStageDisconnection() { } + virtual void OnPressed() {} + + /** + * This method is called when the button is released. + */ + virtual void OnReleased() {} + + /** + * This method is called when the button is clicked + */ + virtual void OnClicked() {} public: /** + * @copydoc Dali::Toolkit::PushButton::PressedSignal() + */ + Toolkit::Button::ButtonSignalType& PressedSignal(); + + /** + * @copydoc Dali::Toolkit::PushButton::ReleasedSignal() + */ + Toolkit::Button::ButtonSignalType& ReleasedSignal(); + + /** * @copydoc Dali::Toolkit::Button::ClickedSignal() */ - Toolkit::Button::ClickedSignalType& ClickedSignal(); + Toolkit::Button::ButtonSignalType& ClickedSignal(); /** * @copydoc Dali::Toolkit::Button::StateChangedSignal() */ - Toolkit::Button::StateChangedSignalType& StateChangedSignal(); + Toolkit::Button::ButtonSignalType& StateChangedSignal(); /** * Connects a callback function with the object's signals. @@ -191,9 +403,9 @@ private: // From Control virtual void OnInitialize(); /** - * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& targetSize ) + * @copydoc Toolkit::Control::OnActivated() */ - virtual void OnControlSizeSet( const Vector3& targetSize ); + virtual void OnActivated(); /** * Callback received when the button is disconnected from the stage. @@ -213,6 +425,44 @@ private: */ void OnTap(Actor actor, const TapGesture& tap); + /** + * Sets up the autorepeating timer. + * @param[in] delay The delay time in seconds. + */ + void SetUpTimer( float delay ); + + /** + * Slot called when Dali::Timer::SignalTick signal. Resets the autorepeating timer. + */ + bool AutoRepeatingSlot(); + +protected: + + enum ButtonState + { + ButtonUp, ///< The button is up. + ButtonDown, ///< The button is down. + }; + + /** + * 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 push 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(); + private: // Undefined @@ -221,29 +471,43 @@ private: // Undefined Button& operator = ( const Button& ); -protected: +private: - enum ButtonState - { - ButtonUp, ///< The button is up. - ButtonDown, ///< The button is down. - }; + // 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 mClickedSignal; ///< Signal emitted when the button is clicked. + Toolkit::Button::ButtonSignalType mStateChangedSignal; ///< Signal emitted when the button's state is changed. + + Timer mAutoRepeatingTimer; ///< Timer used to implement the autorepeating property. - ButtonPainterPtr mPainter; ///< Pointer to a ButtonPainter base class. + Actor mLabel; ///< Stores the button label. - Toolkit::Button::ClickedSignalType mClickedSignal; ///< Signal emitted when the button is clicked. - Toolkit::Button::StateChangedSignalType mStateChangedSignal; ///< Signal emitted when the button's state is changed. + Actor mButtonContent; ///< Stores the unselected content. + Actor mSelectedContent; ///< Stores the selected content. + Actor mBackgroundContent; ///< Stores the background content. + Actor mDisabledContent; ///< Stores the disabled content. + Actor mDisabledSelectedContent; ///< Stores the disabled selected content. + Actor mDisabledBackgroundContent; ///< Stores the disabled background content. TapGestureDetector mTapDetector; - ButtonState mState; ///< Stores the button state. + bool mDisabled; ///< Stores the disabled property. + bool mAutoRepeating; ///< Stores the autorepeating property. + 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. - bool mDisabled; ///< Stores the disabled property. + // Actions + bool mClickActionPerforming; + + ButtonState mState; ///< Stores the button state. }; } // namespace Internal - // Helpers for public-api forwarding methods inline Toolkit::Internal::Button& GetImplementation( Toolkit::Button& button )