X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fbuttons%2Fbutton.h;h=f41e64164a6a3ddb82b9fb6f3cff1a9cb52bf8be;hb=8a647e87a01c5c78451653c1264a9eea81ac9b20;hp=4c40ac8769a6d7d3a45306c87abb4b239a6ca7a9;hpb=bea7b708b28cb38349ff99c3a656d40c065a8c54;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/public-api/controls/buttons/button.h b/dali-toolkit/public-api/controls/buttons/button.h index 4c40ac8..f41e641 100644 --- a/dali-toolkit/public-api/controls/buttons/button.h +++ b/dali-toolkit/public-api/controls/buttons/button.h @@ -1,8 +1,8 @@ -#ifndef __DALI_TOOLKIT_BUTTON_H__ -#define __DALI_TOOLKIT_BUTTON_H__ +#ifndef DALI_TOOLKIT_BUTTON_H +#define DALI_TOOLKIT_BUTTON_H /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,10 +23,8 @@ namespace Dali { - namespace Toolkit { - namespace Internal DALI_INTERNAL { class Button; @@ -37,7 +35,7 @@ class Button; */ /** - * @brief Button is a base class for different kind of buttons. + * @brief Button is a base class for different kinds of buttons. * * This class provides the disabled property and the clicked signal. * @@ -59,323 +57,231 @@ class Button; * When \e togglable is set to \e true, a Button::StateChangedSignal() signal is emitted, with the selected state. * * - * The button's appearance can be modified by setting properties for the various image filenames. + * 'Visual' describes not just traditional images like png, bmp but refers to whatever is used to show the button, it could be a color, gradient or some other kind of renderer. + * + * The button's appearance can be modified by setting properties for the various visuals/images. + * + * It is not mandatory to set all visuals. A button could be defined only by setting its \e background visual or by setting its \e background and \e selected visuals. * - * The \e background is always shown and doesn't change if the button is pressed or released. The \e button image is shown over the \e background image when the - * button is not pressed and is replaced by the \e selected image when the button is pressed. The text label is placed always on the top of all images. + * The \e button visual is shown over the \e background visual. + * When pressed the unselected visuals are replaced by the \e selected visual. The text label is always placed on the top of all images. * - * When the button is disabled, \e background, \e button and \e selected images are replaced by their \e disabled images. + * When the button is disabled, \e background, \e button and \e selected visuals are replaced by their \e disabled visuals. * - * Is not mandatory set all images. A button could be defined only by setting its \e background image or by setting its \e background and \e selected images. * * Signals - * | %Signal Name | Method | - * |-------------------|-----------------------------| - * | pressed | @ref PressedSignal() | - * | released | @ref ReleasedSignal() | - * | clicked | @ref ClickedSignal() | - * | state-changed | @ref StateChangedSignal() | + * | %Signal Name | Method | + * |------------------|-----------------------------| + * | pressed | @ref PressedSignal() | + * | released | @ref ReleasedSignal() | + * | clicked | @ref ClickedSignal() | + * | stateChanged | @ref StateChangedSignal() | * * Actions - * | %Action Name | %Button method called | - * |-------------------|-----------------------------| - * | button-click | %DoClickAction() | + * | %Action Name | Attributes | Description | + * |------------------|-------------------------|-----------------------------------------------| + * | buttonClick | Doesn't have attributes | Simulates a button click. See @ref DoAction() | + * @SINCE_1_0.0 */ -class DALI_IMPORT_API Button : public Control +class DALI_TOOLKIT_API Button : public Control { public: - /** - * @brief The start and end property ranges for this control. + * @brief Enumeration for the start and end property ranges for this control. + * @SINCE_1_0.0 */ enum PropertyRange { - PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, - PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000 ///< Reserve property indices + PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, ///< @SINCE_1_0.0 + PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000 ///< Reserve property indices @SINCE_1_0.0 }; /** - * @brief An enumeration of properties belonging to the Button class. + * @brief Enumeration for the instance of properties belonging to the Button class. + * @SINCE_1_0.0 */ struct Property { + /** + * @brief Enumeration for the instance of properties belonging to the Button class. + * @SINCE_1_0.0 + */ enum { - DISABLED = PROPERTY_START_INDEX, ///< name "disabled", @see SetDisabled(), type bool - AUTO_REPEATING, ///< name "auto-repeating", @see SetAutoRepeating(), type bool - INITIAL_AUTO_REPEATING_DELAY, ///< name "initial-auto-repeating-delay", @see SetInitialAutoRepeatingDelay(), type float - NEXT_AUTO_REPEATING_DELAY, ///< name "next-auto-repeating-delay", @see SetNextAutoRepeatingDelay(), type float - TOGGLABLE, ///< name "togglable", @see SetTogglableButton(), type bool - SELECTED, ///< name "selected", @see SetSelected(), type bool - UNSELECTED_STATE_IMAGE, ///< name "unselected-state-image", @see SetUnselectedImage(), type std::string - SELECTED_STATE_IMAGE, ///< name "selected-state-image", @see SetSelectedImage(), type std::string - DISABLED_STATE_IMAGE, ///< name "disabled-state-image", @see SetDisabledImage(), type std::string - UNSELECTED_COLOR, ///< name "unselected-color", type Vector4 - SELECTED_COLOR, ///< name "selected-color", type Vector4 - LABEL, ///< name "label", type Property::Map - - // Deprecated properties: - LABEL_TEXT, ///< name "label-text", @see SetLabelText(), type std::string + /** + * @brief name "disabled", type bool + * @details Sets the button as \e disabled. + * @SINCE_1_0.0 + */ + DISABLED = PROPERTY_START_INDEX, + + /** + * @brief name "autoRepeating", type bool + * @details If the \e autorepeating property is set to \e true then the \e togglable property is set to false + * @SINCE_1_0.0 + */ + AUTO_REPEATING, + + /** + * @brief name "initialAutoRepeatingDelay", type float + * @details By default this value is set to 0.15 seconds. + * @SINCE_1_0.0 + */ + INITIAL_AUTO_REPEATING_DELAY, + + /** + * @brief name "nextAutoRepeatingDelay", type float + * @details default this value is set to 0.05 seconds + * @SINCE_1_0.0 + */ + NEXT_AUTO_REPEATING_DELAY, + + /** + * @brief name "togglable", type bool + * @details If the \e togglable property is set to \e true, then the \e autorepeating property is set to false. + * @SINCE_1_0.0 + */ + TOGGLABLE, + + /** + * @brief name "selected", type bool + * @details Sets the togglable button as either selected or unselected, \e togglable property must be set to \e true. + * @SINCE_1_0.0 + */ + SELECTED, + + /** + * @brief name "unselectedVisual", type string if it is a url, map otherwise. + * @details Sets the unselected button foreground/icon visual + * @SINCE_1_4.32 + */ + UNSELECTED_VISUAL, + + /** + * @brief name "selectedImage", type string if it is a url, map otherwise + * @details Sets the selected button foreground/icon visual + * @SINCE_1_4.32 + */ + SELECTED_VISUAL, + + /** + * @brief name "disabledSelectedVisual", type string if it is a url, map otherwise + * @details Sets the disabled selected state foreground/icon button visual + * @SINCE_1_4.32 + */ + DISABLED_SELECTED_VISUAL, + + /** + * @brief name "disabledUnselectedVisual", type string if it is a url, map otherwise + * @details Sets the disabled unselected state foreground/icon visual + * @SINCE_1_4.32 + */ + DISABLED_UNSELECTED_VISUAL, + + /** + * @brief name "unselectedBackgroundVisual", type string if it is a url, map otherwise + * @details Sets the disabled in the unselected state background, button visual + * @SINCE_1_4.32 + */ + UNSELECTED_BACKGROUND_VISUAL, + + /** + * @brief name "label", type Property::Map or std::string + * @SINCE_1_0.0 + */ + LABEL, + + /** + * @brief name "selectedBackgroundVisual", type string if it is a url, map otherwise + * @details Sets the selected background button visual + * @SINCE_1_4.32 + */ + SELECTED_BACKGROUND_VISUAL, + + /** + * @brief name "disabledUnselectedBackgroundVisual", type string if it is a url, map otherwise + * @details Sets the disabled while unselected background button visual + * @SINCE_1_4.32 + */ + DISABLED_UNSELECTED_BACKGROUND_VISUAL, + + /** + * @brief name "disabledSelectedBackgroundVisual", type string if it is a url, map otherwise + * @details Sets the disabled while selected background button visual + * @SINCE_1_4.32 + */ + DISABLED_SELECTED_BACKGROUND_VISUAL, }; }; public: - /** - * @brief Create an uninitialized Button. + * @brief Creates an uninitialized Button. * * Only derived versions can be instantiated. Calling member * functions with an uninitialized Dali::Object is not allowed. + * @SINCE_1_0.0 */ Button(); /** * @brief Copy constructor. + * @SINCE_1_0.0 + * @param[in] button Handle to an object */ - Button( const Button& button ); - - /** - * @brief Assignment operator. - */ - Button& operator=( const Button& button ); - - /** - * @brief Downcast an Object handle to Button. - * - * If handle points to a Button the downcast produces valid - * handle. If not the returned handle is left uninitialized. - * - * @param[in] handle Handle to an object - * @return handle to a Button or an uninitialized handle - */ - static Button DownCast( BaseHandle handle ); - - /** - * @brief Destructor - * - * This is non-virtual since derived Handle types must not contain data or virtual methods. - */ - ~Button(); - - /** - * @brief Sets the button as \e disabled. - * - * No signals are emitted when the \e disabled property is set. - * - * @param[in] disabled property. - */ - void SetDisabled( bool disabled ); - - /** - * @return \e true if the button is \e disabled. - */ - bool IsDisabled() const; - - /** - * @brief Sets the \e autorepeating property. - * - * If the \e autorepeating property is set to \e true, then the \e togglable property is set to false - * but no signal is emitted. - * - * @param[in] autoRepeating \e autorepeating property. - */ - void SetAutoRepeating( bool autoRepeating ); - - /** - * @return \e true if the \e autorepeating property is set. - */ - bool IsAutoRepeating() const; - - /** - * @brief Sets the initial autorepeating delay. - * - * By default this value is set to 0.15 seconds. - * - * @pre initialAutoRepeatingDelay must be greater than zero. - * @param[in] initialAutoRepeatingDelay in seconds. - */ - void SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ); - - /** - * @return the initial autorepeating delay in seconds. - */ - float GetInitialAutoRepeatingDelay() const; - - /** - * @brief Sets the next autorepeating delay. - * - * By default this value is set to 0.05 seconds. - * - * @pre nextAutoRepeatingDelay must be greater than zero. - * @param[in] nextAutoRepeatingDelay in seconds. - */ - void SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ); - - /** - * @return the next autorepeating delay in seconds. - */ - float GetNextAutoRepeatingDelay() const; - - /** - * @brief Sets the \e togglable property. - * - * If the \e togglable property is set to \e true, then the \e autorepeating property is set to false. - * - * @param[in] togglable property. - */ - void SetTogglableButton( bool togglable ); - - /** - * @return \e true if the \e togglable property is set. - */ - bool IsTogglableButton() const; - - /** - * Sets the button as selected or unselected. - * - * \e togglable property must be set to \e true. - * - * Emits a Button::StateChangedSignal() signal. - * - * @param[in] selected property. - */ - void SetSelected( bool selected ); - - /** - * @return \e true if the \e selected property is set and the button is togglable. - */ - bool IsSelected() const; - - /** - * @brief Sets the animation time. - * - * @param[in] animationTime The animation time in seconds. - */ - void SetAnimationTime( float animationTime ); - - /** - * @brief Retrieves button's animation time. - * - * @return The animation time in seconds. - */ - float GetAnimationTime() const; - - /** - * @brief Sets the button's label. - * - * @param[in] label The label text. - */ - void SetLabelText( const std::string& label ); - - /** - * @brief Gets the label. - * - * @return The label text. - */ - std::string GetLabelText() const; - - /** - * @brief Sets the unselected button image. - * - * @param[in] filename The button image. - */ - void SetUnselectedImage( const std::string& filename ); - - /** - * @brief Sets the background image. - * - * @param[in] filename The background image. - */ - void SetBackgroundImage( const std::string& filename ); - - /** - * @brief Sets the selected image. - * - * @param[in] filename The selected image. - */ - void SetSelectedImage( const std::string& filename ); - - /** - * @brief Sets the selected background image. - * - * @param[in] filename The selected background image. - */ - void SetSelectedBackgroundImage( const std::string& filename ); - - /** - * @brief Sets the disabled background image. - * - * @param[in] filename The disabled background image. - */ - void SetDisabledBackgroundImage( const std::string& filename ); - - /** - * @brief Sets the disabled button image. - * - * @param[in] filename The disabled button image. - */ - void SetDisabledImage( const std::string& filename ); - - /** - * @brief Sets the disabled selected button image. - * - * @param[in] filename The disabled selected button image. - */ - void SetDisabledSelectedImage( const std::string& filename ); - - // Deprecated API + Button(const Button& button); /** - * @brief Sets the label with an actor. + * @brief Move constructor + * @SINCE_1_9.23 * - * @deprecated DALi 1.0.50 - * - * @param[in] label The actor to use as a label + * @param[in] rhs A reference to the moved handle */ - void SetLabel( Actor label ); + Button(Button&& rhs); /** - * @brief Sets the button image. - * - * @deprecated DALi 1.0.50 - * - * @param[in] image The button image. + * @brief Assignment operator. + * @SINCE_1_0.0 + * @param[in] button Handle to an object + * @return A reference to this */ - void SetButtonImage( Image image ); + Button& operator=(const Button& button); /** - * @brief Sets the selected image. + * @brief Move assignment + * @SINCE_1_9.23 * - * @deprecated DALi 1.0.50 - * - * @param[in] image The selected image. + * @param[in] rhs A reference to the moved handle + * @return A reference to this */ - void SetSelectedImage( Image image ); + Button& operator=(Button&& rhs); /** - * @brief Gets the button image. + * @brief Downcasts a handle to Button handle. * - * @deprecated DALi 1.0.50 + * If handle points to a Button, the downcast produces valid handle. + * If not the returned handle is left uninitialized. * - * @return An actor with the button image. + * @SINCE_1_0.0 + * @param[in] handle Handle to an object + * @return A handle to a Button or an uninitialized handle */ - Actor GetButtonImage() const; + static Button DownCast(BaseHandle handle); /** - * @brief Gets the selected image. + * @brief Destructor. * - * @deprecated DALi 1.0.50 - * - * @return An actor with the selected image. + * This is non-virtual since derived Handle types must not contain data or virtual methods. + * @SINCE_1_0.0 */ - Actor GetSelectedImage() const; + ~Button(); public: //Signals - /** - * @brief Button signal type + * @brief Button signal type. + * @SINCE_1_0.0 */ - typedef Signal< bool ( Button ) > ButtonSignalType; + typedef Signal ButtonSignalType; /** * @brief This signal is emitted when the button is touched. @@ -384,7 +290,8 @@ public: //Signals * @code * bool YourCallbackName( Button button ); * @endcode - * @return The signal to connect to. + * @SINCE_1_0.0 + * @return The signal to connect to */ ButtonSignalType& PressedSignal(); @@ -395,7 +302,8 @@ public: //Signals * @code * bool YourCallbackName( Button button ); * @endcode - * @return The signal to connect to. + * @SINCE_1_0.0 + * @return The signal to connect to */ ButtonSignalType& ReleasedSignal(); @@ -406,37 +314,43 @@ public: //Signals * @code * bool YourCallbackName( Button button ); * @endcode - * @return The signal to connect to. + * @SINCE_1_0.0 + * @return The signal to connect to */ ButtonSignalType& ClickedSignal(); /** * @brief This signal is emitted when the button's state is changed. + * * The application can get the state by calling IsSelected(). * * A callback of the following type may be connected: * @code * bool YourCallbackName( Button button ); * @endcode - * @return The signal to connect to. + * @SINCE_1_0.0 + * @return The signal to connect to */ ButtonSignalType& StateChangedSignal(); public: // Not intended for application developers - + /// @cond internal /** * @brief Creates a handle using the Toolkit::Internal implementation. * - * @param[in] implementation The Control implementation. + * @SINCE_1_0.0 + * @param[in] implementation The Control implementation */ - DALI_INTERNAL Button( Internal::Button& implementation ); + DALI_INTERNAL Button(Internal::Button& implementation); /** * @brief Allows the creation of this Control from an Internal::CustomActor pointer. * - * @param[in] internal A pointer to the internal CustomActor. + * @SINCE_1_0.0 + * @param[in] internal A pointer to the internal CustomActor */ - DALI_INTERNAL Button( Dali::Internal::CustomActor* internal ); + DALI_INTERNAL Button(Dali::Internal::CustomActor* internal); + /// @endcond }; /** @@ -446,4 +360,4 @@ public: // Not intended for application developers } // namespace Dali -#endif // __DALI_TOOLKIT_BUTTON_H__ +#endif // DALI_TOOLKIT_BUTTON_H