2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FUiCtrlButton.h
20 * @brief This is the header file for the %Button class.
22 * This header file contains the declarations of the %Button class and its helper classes.
25 #ifndef _FUI_CTRL_BUTTON_H_
26 #define _FUI_CTRL_BUTTON_H_
28 #include <FBaseTypes.h>
29 #include <FBaseString.h>
30 #include <FGrpRectangle.h>
31 #include <FGrpColor.h>
32 #include <FUiIActionEventListener.h>
33 #include <FUiControl.h>
34 #include <FUiContainer.h>
35 #include <FUiCtrlControlsTypes.h>
37 namespace Tizen { namespace Ui { namespace Controls
42 * Defines the %Button control status.
48 BUTTON_STATUS_NORMAL, /**< The normal status */
49 BUTTON_STATUS_DISABLED, /**< The disabled status */
50 BUTTON_STATUS_PRESSED, /**< The pressed status */
51 BUTTON_STATUS_HIGHLIGHTED /**< The highlighted status */
56 * @brief This class defines the common behavior of a %Button control.
60 * The %Button class displays a rectangular area that can be pressed.
62 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/ui/implementing_button.htm">Buttons</a>.
64 * The following example demonstrates how to use the %Button class.
68 // Sample code for ButtonSample.h
72 : public Tizen::Ui::Controls::Form
73 , public Tizen::Ui::IActionEventListener
78 , __pBitmapButton(null){}
80 bool Initialize(void);
81 virtual result OnInitializing(void);
83 // IActionEventListener
84 virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
87 static const int ID_BUTTON = 101;
88 static const int ID_BITMAP_BUTTON = 102;
90 Tizen::Ui::Controls::Button* __pButton;
91 Tizen::Ui::Controls::Button* __pBitmapButton;
97 // Sample code for ButtonSample.cpp
99 #include <FGraphics.h>
101 #include "ButtonSample.h"
103 using namespace Tizen::App;
104 using namespace Tizen::Graphics;
105 using namespace Tizen::Ui::Controls;
108 ButtonSample::Initialize(void)
110 Construct(FORM_STYLE_NORMAL);
115 ButtonSample::OnInitializing(void)
117 result r = E_SUCCESS;
119 // Creates an instance of Button
120 __pButton = new Button();
121 __pButton->Construct(Rectangle(50, 50, 200, 200), L"Button");
122 __pButton->SetActionId(ID_BUTTON);
123 __pButton->AddActionEventListener(*this);
125 AddControl(*__pButton);
127 // Creates an instance of Button for bitmap button
128 __pBitmapButton = new Button();
129 __pBitmapButton->Construct(Rectangle(260, 50, 200, 200));
130 __pBitmapButton->SetActionId(ID_BITMAP_BUTTON);
131 __pBitmapButton->AddActionEventListener(*this);
133 // Gets instances of Bitmap
134 AppResource *pAppResource = Application::GetInstance()->GetAppResource();
135 Bitmap* pBitmapNormal = pAppResource->GetBitmapN(L"tizen.png");
136 Bitmap* pBitmapPressed = pAppResource->GetBitmapN(L"tizen.png");
138 // Sets the bitmaps to the bitmap button
139 __pBitmapButton->SetNormalBackgroundBitmap(*pBitmapNormal);
140 __pBitmapButton->SetPressedBackgroundBitmap(*pBitmapPressed);
142 // Deallocates bitmaps
143 delete pBitmapNormal;
144 delete pBitmapPressed;
146 // Adds the bitmap button to the form
147 AddControl(*__pBitmapButton);
152 // IActionEventListener implementation
154 ButtonSample::OnActionPerformed(const Control& source, int actionId)
163 case ID_BITMAP_BUTTON:
175 class _OSP_EXPORT_ Button
176 : public Tizen::Ui::Control
180 * This is the default constructor for this class.
187 * This is the destructor for this class.
191 virtual ~Button(void);
194 * Initializes this instance of %Button with the specified parameters.
198 * @return An error code
199 * @param[in] rect An instance of the Rectangle class @n
200 * This instance represents the x and y coordinates of the top-left corner @n
201 * of the created window along with its width and height. @n
202 * @param[in] text The text to display on the button
203 * @exception E_SUCCESS The method is successful.
204 * @exception E_INVALID_ARG A specified input parameter is invalid.
205 * @exception E_SYSTEM A system error has occurred.
206 * @remarks A control is fully functional only after it has been added to a container. Therefore, some methods may fail if they are used before
207 * adding the control to the container.
208 * @remarks To display the text in multi-lines or to denote the end of line, use '\\n'.
209 * @remarks The size of the control must be within the range defined by the minimum and maximum sizes.
211 result Construct(const Tizen::Graphics::Rectangle& rect, const Tizen::Base::String& text = L"");
214 * Initializes this instance of %Button with the specified parameters.
218 * @return An error code
219 * @param[in] rect An instance of the Rectangle class @n
220 * This instance represents the x and y coordinates of the top-left corner @n
221 * of the created window along with its width and height. @n
222 * @param[in] text The text to display on the button
223 * @exception E_SUCCESS The method is successful.
224 * @exception E_INVALID_ARG A specified input parameter is invalid.
225 * @exception E_SYSTEM A system error has occurred.
226 * @remarks A control is fully functional only after it has been added to a container. Therefore, some methods may fail if they are used before
227 * adding the control to the container.
228 * @remarks To display the text in multi-lines or to denote the end of line, use '\\n'.
229 * @remarks The size of the control must be within the range defined by the minimum and maximum sizes.
231 result Construct(const Tizen::Graphics::FloatRectangle& rect, const Tizen::Base::String& text = L"");
234 * Adds a listener instance. @n
235 * The added listener can listen to events on the given event dispatcher's context when they are fired.
239 * @param[in] listener The event listener to add
241 void AddActionEventListener(Tizen::Ui::IActionEventListener& listener);
244 * Removes a listener instance. @n
245 * The removed listener cannot listen to events when they are fired.
249 * @param[in] listener The event listener to remove
251 void RemoveActionEventListener(Tizen::Ui::IActionEventListener& listener);
254 * Sets the action ID of the button.
258 * @param[in] actionId The action ID
260 void SetActionId(int actionId);
263 * Gets the action ID of the button.
267 * @return An integer value representing the action ID
269 int GetActionId(void) const;
273 * Sets the text that the button displays.
277 * @param[in] text The text of the button
278 * @remarks To display text in multi-lines or to denote the end of line, use '\\n'.
280 void SetText(const Tizen::Base::String& text);
283 * Sets the horizontal alignment of the text of the button.
287 * @param[in] alignment The horizontal text alignment
289 void SetTextHorizontalAlignment(HorizontalAlignment alignment);
292 * Sets the vertical alignment of the text of the button.
296 * @param[in] alignment The vertical text alignment
298 void SetTextVerticalAlignment(VerticalAlignment alignment);
302 * Gets the text displayed by the button.
306 * @return The text of the button
308 Tizen::Base::String GetText(void) const;
311 * Gets the horizontal alignment of the text of the button.
315 * @return The horizontal text alignment
317 HorizontalAlignment GetTextHorizontalAlignment(void) const;
320 * Gets the vertical alignment of the text of the button.
324 * @return The vertical text alignment
326 VerticalAlignment GetTextVerticalAlignment(void) const;
330 * Sets the color of the text to be displayed on the button.
334 * @param[in] color The text color to set
336 virtual void SetTextColor(const Tizen::Graphics::Color& color);
339 * Gets the color of the text to be displayed on the button.
343 * @return The text color
345 virtual Tizen::Graphics::Color GetTextColor(void) const;
349 * Sets the text color of the button for the pressed state.
353 * @param[in] color The color to set
355 void SetPressedTextColor(const Tizen::Graphics::Color& color);
358 * Gets the text color of the button for the pressed state.
362 * @return The text color when the button is pressed
364 Tizen::Graphics::Color GetPressedTextColor(void) const;
368 * Sets the text color of the button for the disabled state.
372 * @param[in] color The color to set
374 void SetDisabledTextColor(const Tizen::Graphics::Color& color);
377 * Gets the text color of the button for the disabled state.
381 * @return The disabled text color
383 Tizen::Graphics::Color GetDisabledTextColor(void) const;
386 * Sets the text color of the button for the highlighted state.
390 * @param[in] color The color to set
391 * @remarks While navigating the user interface using the directional keys, the focused UI control is highlighted.
393 void SetHighlightedTextColor(const Tizen::Graphics::Color& color);
396 * Gets the text color of the button for the highlighted state.
400 * @return The highlighted text color
401 * @remarks While navigating the user interface using the directional keys, the selected UI control is highlighted and takes the focus.
403 Tizen::Graphics::Color GetHighlightedTextColor(void) const;
406 * Sets a bitmap that is to be displayed when the button is not pressed.
410 * @param[in] position The location of a bitmap where it is to display on the button
411 * @param[in] bitmap The bitmap to set
413 void SetNormalBitmap(const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap);
416 * Sets a bitmap that is to be displayed when the button is not pressed.
420 * @param[in] position The location of a bitmap where it is to display on the button
421 * @param[in] bitmap The bitmap to set
423 void SetNormalBitmap(const Tizen::Graphics::FloatPoint& position, const Tizen::Graphics::Bitmap& bitmap);
426 * Sets the disabled bitmap of the button.
430 * @param[in] position The location of disabled bitmap
431 * @param[in] bitmap The disabled bitmap of the button
433 void SetDisabledBitmap(const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap);
436 * Sets the disabled bitmap of the button.
440 * @param[in] position The location of disabled bitmap
441 * @param[in] bitmap The disabled bitmap of the button
443 void SetDisabledBitmap(const Tizen::Graphics::FloatPoint& position, const Tizen::Graphics::Bitmap& bitmap);
446 * Sets the bitmap that is to be displayed on the button when it is pressed.
450 * @param[in] position The location of a bitmap where it is to display on the Button control
451 * @param[in] bitmap The bitmap to set
453 void SetPressedBitmap(const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap);
456 * Sets the bitmap that is to be displayed on the button when it is pressed.
460 * @param[in] position The location of a bitmap where it is to display on the Button control
461 * @param[in] bitmap The bitmap to set
463 void SetPressedBitmap(const Tizen::Graphics::FloatPoint& position, const Tizen::Graphics::Bitmap& bitmap);
466 * Sets the highlighted bitmap of the button.
470 * @param[in] position The location of highlighted bitmap
471 * @param[in] bitmap The highlighted bitmap of the button
473 void SetHighlightedBitmap(const Tizen::Graphics::Point& position, const Tizen::Graphics::Bitmap& bitmap);
476 * Sets the highlighted bitmap of the button.
480 * @param[in] position The location of highlighted bitmap
481 * @param[in] bitmap The highlighted bitmap of the button
483 void SetHighlightedBitmap(const Tizen::Graphics::FloatPoint& position, const Tizen::Graphics::Bitmap& bitmap);
486 * Sets the normal background bitmap of the button.
490 * @param[in] bitmap The normal background image
492 void SetNormalBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
495 * Sets the disabled background bitmap of the button.
499 * @param[in] bitmap The disabled background image
501 void SetDisabledBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
504 * Sets the pressed background bitmap of the button.
508 * @param[in] bitmap The pressed background bitmap
510 void SetPressedBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
513 * Sets the highlighted background bitmap of the button.
517 * @param[in] bitmap The highlighted background bitmap
518 * @remarks When a user navigates the user interface using the directional keys, the focused UI control is highlighted.
520 void SetHighlightedBackgroundBitmap(const Tizen::Graphics::Bitmap& bitmap);
523 * Gets the color of the button for the specified status.
527 * @return The color, @n
528 * else RGBA(0, 0, 0, 0) if an error occurs
529 * @param[in] status The status
530 * @exception E_SUCCESS The method is successful.
531 * @remarks The specific error code can be accessed using the GetLastResult() method.
533 Tizen::Graphics::Color GetColor(ButtonStatus status) const;
536 * Sets the color of the button for the specified status.
540 * @return An error code
541 * @param[in] status The status
542 * @param[in] color The button color
543 * @exception E_SUCCESS The method is successful.
544 * @exception E_SYSTEM A system error has occurred.
546 result SetColor(ButtonStatus status, const Tizen::Graphics::Color& color);
549 * Gets the text size.
553 * @return The size of the text, @n
554 * else @c -1 if an error occurs
555 * @exception E_SUCCESS The method is successful.
556 * @exception E_SYSTEM A system error has occurred.
557 * @remarks The specific error code can be accessed using the GetLastResult() method.
560 int GetTextSize(void) const;
563 * Gets the text size.
567 * @return The size of the text, @n
568 * else @c -1.0f if an error occurs
569 * @exception E_SUCCESS The method is successful.
570 * @exception E_SYSTEM A system error has occurred.
571 * @remarks The specific error code can be accessed using the GetLastResult() method.
574 float GetTextSizeF(void) const;
577 * Sets the text size.
581 * @return An error code
582 * @param[in] size The text size
583 * @exception E_SUCCESS The method is successful.
584 * @exception E_INVALID_ARG The specified input parameter is invalid. @n
585 * The specified @c size must be greater than @c 0.
586 * @exception E_SYSTEM A system error has occurred.
589 result SetTextSize(int size);
592 * Sets the text size.
596 * @return An error code
597 * @param[in] size The text size
598 * @exception E_SUCCESS The method is successful.
599 * @exception E_INVALID_ARG The specified input parameter is invalid. @n
600 * The specified @c size must be greater than @c 0.
601 * @exception E_SYSTEM A system error has occurred.
604 result SetTextSize(float size);
607 friend class _ButtonImpl;
611 // This is the copy constructor for this class.
613 Button(const Button& rhs);
616 // Assigns the value of the specified instance to the current instance of %Button.
618 Button& operator =(const Button& rhs);
622 }}} // Tizen::Ui::Controls
624 #endif // _FUI_CTRL_BUTTON_H_