2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0/
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 FUiContainer.h
20 * @brief This is the header file for the %Container class.
22 * This header file contains the declarations of the %Container class.
25 #ifndef _FUI_CONTAINER_H_
26 #define _FUI_CONTAINER_H_
28 #include <FBaseTypes.h>
29 #include <FBaseColLinkedList.h>
30 #include <FUiControl.h>
32 namespace Tizen { namespace Ui {
39 * @brief This class is an abstract base class of all the generic containers of %Controls.
43 * @remarks As the %Container is an abstract class, use the Tizen::Ui::Controls::Panel class or another class derived from
44 * %Container to apply the container functionality.
46 * The %Container class is the abstract base class of all generic Control containers. A container is a UI element which can contain
49 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/ui/containers.htm">Containers</a>.
54 class _OSP_EXPORT_ Container
60 * This destructor overrides Tizen::Base::Object::~Object().
64 virtual ~Container(void) = 0;
68 * Adds the control at the end of the list maintained by the container.
70 * @brief <i> [Deprecated] </i>
71 * @deprecated This method is deprecated.
74 * @return An error code
75 * @param[in] control The control to add to the container
76 * @exception E_SUCCESS The method is successful.
77 * @exception E_INVALID_ARG The specified input parameter is invalid. @n
78 * The specified @c control is an instance of Window, or this control's parent container.
79 * @exception E_MAX_EXCEEDED The number of child controls has exceeded the maximum limit.
80 * @exception E_SYSTEM A system error has occurred.
81 * @remarks When the control is added, it is placed at the top of the drawing stack maintained by the container.@n
82 * This means the last control added is drawn last
83 * @remarks A control becomes displayable only after it has been added to a displayable container. Some methods may not work normally if the methods
84 * of the control are called before adding the control to a container. After the control is added to a %Container, the OnInitializing()
85 * method of the control are called before adding the control to a container. After the control is added to a %Container, the
86 * OnInitializing() method of the control is invoked for the initialization of the control such as creating and adding child controls.
87 * @see Tizen::Ui::Control::OnInitializing()
88 * @see Tizen::Ui::Control::OnTerminating()
91 * // Uses Panel instead of Container, because Container is an abstract class.
92 * Panel* pPanel = new Panel();
93 * pPanel->Construct(Rectangle(100, 250, 300, 300));
95 * Form* pForm = new Form();
96 * pForm->Construct(FORM_STYLE_NORMAL|FORM_STYLE_TITLE|FORM_STYLE_PORTRAIT_INDICATOR);
97 * pForm->AddControl(*pPanel);
100 * pForm->Invalidate(true);
105 result AddControl(const Control& control);
108 * Adds a control at the end of the list maintained by a container.
112 * @return An error code
113 * @param[in] pControl A pointer to the control to add to the container
114 * @exception E_SUCCESS The method is successful.
115 * @exception E_INVALID_ARG The specified @c pControl is @c null.
116 * The specified @c control is an instance of Window or the control's parent container.
117 * @exception E_MAX_EXCEEDED The number of child controls has exceeded the maximum limit.
118 * @exception E_INVALID_ARG
119 * @exception E_SYSTEM A system error has occurred.
121 * - When a control is added, it is placed at the top of the drawing stack maintained by the container.@n
122 * This means the control that is added last is drawn last.
123 * - A control becomes displayable only after it has been added to a displayable container.
124 * Some methods may not work normally if the methods of the control are called before adding the control to a container. After the control is added to a %Container, the OnInitializing()
125 * method of the control are called before adding the control to a container. After the control is added to a %Container, the
126 * OnInitializing() method of the control is invoked for the initialization of the control such as creating and adding child controls.
127 * @see Tizen::Ui::Control::OnInitializing()
128 * @see Tizen::Ui::Control::OnTerminating()
131 * // Uses Panel instead of Container, because Container is an abstract class.
132 * Panel* pPanel = new Panel();
133 * pPanel->Construct(Rectangle(100, 250, 300, 300));
135 * Form* pForm = new Form();
136 * pForm->Construct(FORM_STYLE_NORMAL|FORM_STYLE_TITLE|FORM_STYLE_PORTRAIT_INDICATOR);
137 * pForm->AddControl(pPanel);
140 * pForm->Invalidate(true);
145 result AddControl(Control* pControl);
148 * Before the system calls OnDraw() method to allow the user to do custom drawing, this method is called to clear the canvas. The user can override this method to change this default behavior.
154 virtual void OnClearBackground(void);
157 * Called when the container needs to draw itself. @n
158 * Users can override this method to display user-specific drawings. @n
159 * This method is called after the container has drawn itself, but just before the container draws its child controls.
162 * @brief <i> [Compatibility] </i>
167 * @compatibility This method has compatibility issues with OSP compatible applications. @n
168 * For more information, see @ref CompOnDrawPage "here".
171 * @return An error code
172 * @exception E_SUCCESS The method is successful.
173 * @exception E_SYSTEM A system error has occurred.
175 virtual result OnDraw(void);
179 * @page CompOnDrawPage Compatibility for OnDraw()
180 * @section CompOnDrawPageIssueSection Issues
181 * Implementing this method in OSP compatible applications has the following issues: @n
182 * -# The platform draws the control by calling the parent's OnDraw() callback before invoking the control's OnDraw() callback. So, the users can't control the control's drawing behavior by overriding the OnDraw() callback.
184 * @section CompOnDrawPageSolutionSection Resolutions
185 * This issue has been resolved in Tizen. @n
186 * -# The platform does not call the parent's OnDraw() callback before invoking the control's OnDraw() callback. Therefore, you needs to call the parent container's OnDraw() callback in the OnDraw() callback if you override this method.
191 * Called to notify that the control's show state is changing.
195 * @param[in] showState The new show state of the control
196 * @see Tizen::Ui::Control::SetShowState()
198 virtual void OnShowStateChanging(bool showState);
201 * Called to notify that the control's show state is changed.
205 * @param[in] showState The new show state of the control
206 * @see Tizen::Ui::Control::SetShowState()
208 virtual void OnShowStateChanged(bool showState);
211 * Called to notify that the bounds of the control is changing.
215 * @return An error code
216 * @param[in] oldRect The old position and size values of the control
217 * @param[in] newRect The new position and size values of the control
218 * @remarks If the method returns an exception, the resulting exception
219 * is propagated and the control's size is unchanged.@n
220 * Provide control specific exceptions.
221 * @see Tizen::Ui::Control::SetBounds()
222 * @see Tizen::Ui::Control::SetSize()
224 virtual result OnBoundsChanging(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect);
227 * Called to notify that the bounds of the control is changed.
231 * @return An error code
232 * @param[in] oldRect The old position and size values of the control
233 * @param[in] newRect The new position and size values of the control
234 * @see Tizen::Ui::Control::SetBounds()
235 * @see Tizen::Ui::Control::SetSize()
237 virtual void OnBoundsChanged(const Tizen::Graphics::Rectangle& oldRect, const Tizen::Graphics::Rectangle& newRect);
240 * Overrides this method to indicate that the specified @c width and @c height
241 * can be supported or a new @c width and @c height should be applied instead
242 * of the specified values.
246 * @param[in, out] evaluatedSize The width and the height to evaluate
248 virtual void OnEvaluateSize(Tizen::Graphics::Dimension& evaluatedSize);
251 * Removes the specified control from the container.
253 * @brief <i> [Deprecated] </i>
254 * @deprecated This method is deprecated.
257 * @return An error code
258 * @param[in] control The child control to remove
259 * @exception E_SUCCESS The method is successful.
260 * @exception E_OBJ_NOT_FOUND The specified instance is not found within the indicated range (that is, the @c control is not found).
261 * @exception E_SYSTEM A system error has occurred.
262 * @remarks The removed child control is deleted from the memory. Before deletion, OnTerminating() of the child control is called.
263 * If OnTerminating() method is overridden and returns an exception, that exception is propagated.
264 * @see Tizen::Ui::Control::OnTerminating()
266 result RemoveControl(const Control& control);
269 * Removes a specified control from the container.
273 * @return An error code
274 * @param[in] pControl A pointer to the child control to remove
275 * @exception E_SUCCESS The method is successful.
276 * @exception E_OBJ_NOT_FOUND The specified instance is not found within the indicated range (that is, the @c control is not found).
277 * @exception E_INVALID_ARG The specified @c pControl is @c null.
278 * @exception E_SYSTEM A system error has occurred.
279 * @remarks The removed child control is deleted from the memory. Before deletion, OnTerminating() of the child control is called.
280 * If OnTerminating() method is overridden and returns an exception, that exception is propagated.
281 * @see Tizen::Ui::Control::OnTerminating()
283 result RemoveControl(Control* pControl);
286 * Removes the specified control from the container.
290 * @return An error code
291 * @param[in] index The index of the control to remove
292 * @exception E_SUCCESS The method is successful.
293 * @exception E_OUT_OF_RANGE The specified @c index is out of range.
294 * @exception E_SYSTEM A system error has occurred.
295 * @remarks The removed child control is deleted from the memory. Before deletion, OnTerminating() of the child control is called.
296 * If OnTerminating() method is overridden and returns an exception, that exception is propagated.
297 * @see Tizen::Ui::Control::OnTerminating()
299 result RemoveControl(int index);
302 * Removes all the controls from the container.
306 * @remarks The removed child controls are deleted from the memory. Before deletion, OnTerminating() of the child control is called.
307 * @see Tizen::Ui::Control::OnTerminating()
309 void RemoveAllControls(void);
312 * Gets the control at the specified index of the list that is kept by the container.
316 * @return The control at the specified index of the list, @n
317 * else @c null if the index is not valid
318 * @param[in] index The index of the control
320 Control* GetControl(int index) const;
323 * Gets the control with the specified name. @n
324 * If there are multiple matches of the name, the first match is returned.
327 * @brief <i> [Compatibility] </i>
332 * @compatibility This method has compatibility issues with OSP compatible applications. @n
333 * For more information, see @ref CompGetControlPage "here".
336 * @return The control having the specified name, @n
337 * else @c null if the name is not valid
338 * @param[in] name The name of the control
339 * @param[in] recursive Set to @c true to find a match recursively, @n
342 Control* GetControl(const Tizen::Base::String& name, bool recursive = false) const;
346 * @page CompGetControlPage Compatibility for GetControl()
347 * @section CompGetControlPageIssueSection Issues
348 * Implementing this method in OSP compatible applications has the following issues: @n
349 * -# GetControl() method searches for itself first and then child controls in API version 2.0, whereas only @n
350 * child controls are searched for from 2.1.
352 * @section CompGetControlPageSolutionSection Resolutions
353 * This issue has been resolved in Tizen. @n
358 * Gets the number of the controls in the container.
362 * @return The number of controls in the container
364 int GetControlCount(void) const;
367 * Gets a list of the controls of the container.
371 * @return The list of the controls of the container
373 Tizen::Base::Collection::IList* GetControls(void) const;
376 * Gets the portrait layout of the container.
380 * @return The portrait layout of the container, @n
381 * else @c null if the layout does not exist
382 * @exception E_SUCCESS The method is successful.
383 * @exception E_OUT_OF_MEMORY The memory is insufficient.
384 * @remarks The returned layout can be @c null, if it is not set.
386 Layout* GetPortraitLayoutN(void) const;
389 * Gets the landscape layout of the container.
393 * @return The landscape layout of the container, @n
394 * else @c null if the layout does not exist
395 * @exception E_SUCCESS The method is successful.
396 * @exception E_OUT_OF_MEMORY The memory is insufficient.
397 * @remarks The returned layout can be @c null, if it is not set.
399 Layout* GetLandscapeLayoutN(void) const;
402 * Gets the layout of the current orientation.
406 * @return The layout of the current orientation, @n
407 * else @c null if the layout does not exist
408 * @exception E_SUCCESS The method is successful.
409 * @exception E_OUT_OF_MEMORY The memory is insufficient.
410 * @remarks The returned layout can be @c null, if it is not set.
412 Layout* GetLayoutN(void) const;
415 * Checks whether the specified control is a child or descendant of the container.
417 * @brief <i> [Deprecated] </i>
418 * @deprecated This method is deprecated.
421 * @return @c true if the specified control is within the containment hierarchy of the container, @n
423 * @param[in] control The control
425 bool IsAncestorOf(const Control& control) const;
428 * Checks whether a specified control is a child or descendant of the container.
432 * @return @c true if a specified control is within the containment hierarchy of the container, @n
434 * @param[in] pControl A pointer to the control
435 * @exception E_SUCCESS The method is successful.
436 * @exception E_INVALID_ARG The specified @c pControl is null.
437 * @remarks The specific error code can be accessed using the GetLastResult() method.
439 bool IsAncestorOf(const Control* pControl) const;
442 * Sets whether the specified child control must always be above other children.
446 * @return An error code
447 * @param[in] control The child control
448 * @param[in] alwaysOnTop The Boolean value indicating that @c control
449 * must always be on the top
450 * @exception E_SUCCESS The method is successful.
451 * @exception E_INVALID_ARG A specified input parameter is invalid.@n
452 * The specified control is not a child of this
454 * @remarks If multiple child control are set as "always on top", then
455 * their relative order is not specified. If the specified child
456 * control is a container, then all its children inherit this
457 * property and they are "always on top" of other controls.@n
458 * If the method is called on a child control with a @c false
459 * value, then it's state becomes normal. The relative order
460 * of child controls in normal state is not specified.
461 * @see IsControlAlwaysOnTop()
463 result SetControlAlwaysOnTop(Tizen::Ui::Control& control, bool alwaysOnTop);
466 * Sets whether the specified child control must always be below other children.
470 * @return An error code
471 * @param[in] control The child control
472 * @param[in] alwaysAtBottom The Boolean value indicating that @c control
473 * must always be at the bottom.
474 * @exception E_SUCCESS The method is successful.
475 * @exception E_INVALID_ARG A specified input parameter is invalid.@n
476 * The specified control is not a child of this
478 * @remarks If multiple child control are set as "always at bottom", then
479 * their relative order is not specified. If the specified child
480 * control is a container, then all its children inherit this
481 * property and they become "always at bottom" as well.@n
482 * If the method is called on a child control with a @c false
483 * value, then it's state becomes normal. The relative order
484 * of child controls in normal state is not specified.
485 * @see IsControlAlwaysAtBottom()
487 result SetControlAlwaysAtBottom(Tizen::Ui::Control& control, bool alwaysAtBottom);
490 * Checks whether the specified child control is always at the bottom of
493 * @brief <i> [Deprecated] </i>
494 * @deprecated This method is deprecated.
497 * @return @c true if the specified child control is set as always at the bottom, @n
499 * @param[in] control The child control
500 * @exception E_SUCCESS The method is successful.
501 * @exception E_INVALID_ARG A specified input parameter is invalid.@n
502 * The specified control is not a child of this
504 * @remarks The specific error code can be accessed using the GetLastResult()
506 * @see SetControlAlwaysAtBottom()
508 bool IsControlAlwaysAtBottom(const Tizen::Ui::Control& control) const;
511 * Checks whether a specified child control is always at the bottom of the drawing stack.
515 * @return @c true if a specified child control is set as always at the bottom, @n
517 * @param[in] pControl A pointer to child control
518 * @exception E_SUCCESS The method is successful.
519 * @exception E_INVALID_ARG A specified input parameter is invalid.@n
520 * The specified control is not a child of this
521 * container or @c pControl is @c null .
522 * @remarks The specific error code can be accessed using the GetLastResult() method.
523 * @see SetControlAlwaysAtBottom()
525 bool IsControlAlwaysAtBottom(const Tizen::Ui::Control* pControl) const;
528 * Checks whether the specified child control is always on the top of
531 * @brief <i> [Deprecated] </i>
532 * @deprecated This method is deprecated.
535 * @return @c true if the specified child control is set as always on the top, @n
537 * @param[in] control The child control
538 * @exception E_SUCCESS The method is successful.
539 * @exception E_INVALID_ARG A specified input parameter is invalid. @n
540 * The specified control is not a child of this
542 * @remarks The specific error code can be accessed using the GetLastResult()
544 * @see SetControlAlwaysOnTop()
546 bool IsControlAlwaysOnTop(const Tizen::Ui::Control& control) const;
549 * Checks whether a specified child control is always at the top of the drawing stack.
553 * @return @c true if a specified child control is set as always at the top, @n
555 * @param[in] pControl A pointer to child control
556 * @exception E_SUCCESS The method is successful.
557 * @exception E_INVALID_ARG A specified input parameter is invalid. @n
558 * The specified control is not a child of this
559 * container. or @c pControl is @c null
560 * @remarks The specific error code can be accessed using the GetLastResult() method.
561 * @see SetControlAlwaysOnTop()
563 bool IsControlAlwaysOnTop(const Tizen::Ui::Control* pControl) const;
567 * The object is not fully constructed after this constructor is called. For full construction, the Construct() method must be called right after calling this constructor.
574 * Initializes this instance of %Container.
578 * @return An error code
579 * @exception E_SUCCESS The method is successful.
580 * @exception E_SYSTEM A system error has occurred.
582 result Construct(void);
585 * Initializes this instance of %Container.
589 * @return An error code
590 * @param[in] rect The rectangle bounds to set
591 * @param[in] resizable Set to @c true to make the container resizable, @n
593 * @param[in] movable Set to @c true to make the container movable, @n
595 * @exception E_SUCCESS The method is successful.
596 * @exception E_INVALID_ARG A specified input parameter is invalid.
597 * @remarks This method must be called from the derived classes's construct methods.
598 * @remarks If the @c resizable is @c false, IsResizable() returns @c false.
601 result Construct(const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true);
604 * Initializes this instance of %Container.
608 * @return An error code
609 * @param[in] rect The rectangle bounds to set
610 * @param[in] resizable Set to @c true to make the container resizable, @n
612 * @param[in] movable Set to @c true to make the container movable, @n
614 * @exception E_SUCCESS The method is successful.
615 * @exception E_INVALID_ARG A specified input parameter is invalid.
616 * @remarks This method must be called from the derived classes's construct methods.
617 * @remarks If the @c resizable is @c false, IsResizable() returns @c false.
620 result Construct(const Tizen::Graphics::FloatRectangle& rect, bool resizable = true, bool movable = true);
623 * Initializes this instance of %Container with the specified layout and rectangular region.
627 * @return An error code
628 * @param[in] layout The layout for both the portrait and landscape mode
629 * @param[in] rect The location and size of the %Container
630 * @param[in] resizable Set to @c true to make the container resizable, @n
632 * @param[in] movable Set to @c true to make the container movable, @n
634 * @exception E_SUCCESS The method is successful.
635 * @exception E_INVALID_ARG A specified input parameter is invalid.
636 * @remarks This method must be called from the derived classes's construct methods.
637 * @remarks If the @c resizable is @c false, IsResizable() returns @c false.
639 * @see Tizen::Ui::Layout
640 * @see Tizen::Ui::Container::GetLayoutN()
642 result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true);
645 * Initializes this instance of %Container with the specified layout and rectangular region.
649 * @return An error code
650 * @param[in] layout The layout for both the portrait and landscape mode
651 * @param[in] rect The location and size of the %Container
652 * @param[in] resizable Set to @c true to make the container resizable, @n
654 * @param[in] movable Set to @c true to make the container movable, @n
656 * @exception E_SUCCESS The method is successful.
657 * @exception E_INVALID_ARG A specified input parameter is invalid.
658 * @remarks This method must be called from the derived classes's construct methods.
659 * @remarks If the @c resizable is @c false, IsResizable() returns @c false.
661 * @see Tizen::Ui::Layout
662 * @see Tizen::Ui::Container::GetLayoutN()
664 result Construct(const Tizen::Ui::Layout& layout, const Tizen::Graphics::FloatRectangle& rect, bool resizable = true, bool movable = true);
667 * Initializes this instance of %Container with the specified layouts and rectangular region.
671 * @return An error code
672 * @param[in] portraitLayout The layout for the portrait mode
673 * @param[in] landscapeLayout The layout for the landscape mode
674 * @param[in] rect The location and size of the %Container
675 * @param[in] resizable Set to @c true to make the container resizable, @n
677 * @param[in] movable Set to @c true to make the container movable, @n
679 * @exception E_SUCCESS The method is successful.
680 * @exception E_INVALID_ARG A specified input parameter is invalid.
681 * @remarks If the @c resizable is @c false, IsResizable() returns @c false.
683 * @see Tizen::Ui::Layout
684 * @see Tizen::Ui::Layout
685 * @see Tizen::Ui::Container::GetLayoutN()
686 * @see Tizen::Ui::Container::GetPortraitLayoutN()
687 * @see Tizen::Ui::Container::GetLandscapeLayoutN()
689 result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::Rectangle& rect, bool resizable = true, bool movable = true);
692 * Initializes this instance of %Container with the specified layouts and rectangular region.
696 * @return An error code
697 * @param[in] portraitLayout The layout for the portrait mode
698 * @param[in] landscapeLayout The layout for the landscape mode
699 * @param[in] rect The location and size of the %Container
700 * @param[in] resizable Set to @c true to make the container resizable, @n
702 * @param[in] movable Set to @c true to make the container movable, @n
704 * @exception E_SUCCESS The method is successful.
705 * @exception E_INVALID_ARG A specified input parameter is invalid.
706 * @remarks If the @c resizable is @c false, IsResizable() returns @c false.
708 * @see Tizen::Ui::Layout
709 * @see Tizen::Ui::Layout
710 * @see Tizen::Ui::Container::GetLayoutN()
711 * @see Tizen::Ui::Container::GetPortraitLayoutN()
712 * @see Tizen::Ui::Container::GetLandscapeLayoutN()
714 result Construct(const Tizen::Ui::Layout& portraitLayout, const Tizen::Ui::Layout& landscapeLayout, const Tizen::Graphics::FloatRectangle& rect, bool resizable = true, bool movable = true);
717 * Gets the index of the specified control.
719 * @brief <i> [Deprecated] </i>
720 * @deprecated This method is deprecated.
722 * @return An error code
723 * @param[in] control The control
724 * @param[out] index The index of the control
725 * @exception E_SUCCESS The method is successful.
726 * @exception E_OBJ_NOT_FOUND The specified instance of Control is not found.
727 * @see SetControlAt()
730 result GetControlAt(const Control& control, int& index) const;
733 * Gets the index of a specified control.
736 * @return An error code
737 * @param[in] pControl A pointer to the control
738 * @param[out] index The index of the control
739 * @exception E_SUCCESS The method is successful.
740 * @exception E_INVALID_ARG The specified @c pControl is @c null.
741 * @exception E_OBJ_NOT_FOUND The specified instance of Control is not found.
742 * @see SetControlAt()
745 result GetControlAt(const Control* pControl, int& index) const;
748 * Sets the control at the specified index.
750 * @brief <i> [Deprecated] </i>
751 * @deprecated This method is deprecated.
754 * @return An error code
755 * @param[in] control The control
756 * @param[in] index The index
757 * @exception E_SUCCESS The method is successful.
758 * @exception E_OUT_OF_RANGE The specified @c index is out of range.
759 * @exception E_SYSTEM A system error has occurred.
760 * @remarks The @c control must be first added to this container. @n
761 * Call the Invalidate() method after this, to apply the change to be shown.
763 * @see GetControlAt()
766 result SetControlAt(const Control& control, int index);
769 * Sets the control at a specified index.
773 * @return An error code
774 * @param[in] pControl A pointer to the control
775 * @param[in] index The index
776 * @exception E_SUCCESS The method is successful.
777 * @exception E_OUT_OF_RANGE The specified @c index is out of range.
778 * @exception E_INVALID_ARG The specified @c pControl is @c null.
779 * @exception E_SYSTEM A system error has occurred.
780 * @remarks The @c control must be first added to this container. @n
781 * Then the Invalidate() method is called to show the applied changes.
783 * @see GetControlAt()
786 result SetControlAt(Control* pControl, int index);
790 * Called to notify that the bounds of the control is changing.
794 * @return An error code
795 * @param[in] oldRect The old position and size values of the control
796 * @param[in] newRect The new position and size values of the control
797 * @remarks If the method returns an exception, the resulting exception
798 * is propagated and the control's size is unchanged.@n
799 * Provide control specific exceptions.
800 * @see Tizen::Ui::Control::SetBounds()
801 * @see Tizen::Ui::Control::SetSize()
803 virtual result OnBoundsChanging(const Tizen::Graphics::FloatRectangle& oldRect, const Tizen::Graphics::FloatRectangle& newRect);
806 * Called to notify that the bounds of the control is changed.
810 * @return An error code
811 * @param[in] oldRect The old position and size values of the control
812 * @param[in] newRect The new position and size values of the control
813 * @see Tizen::Ui::Control::SetBounds()
814 * @see Tizen::Ui::Control::SetSize()
816 virtual void OnBoundsChanged(const Tizen::Graphics::FloatRectangle& oldRect, const Tizen::Graphics::FloatRectangle& newRect);
819 * Overrides this method to indicate that the specified @c width and @c height
820 * can be supported or a new @c width and @c height should be applied instead
821 * of the specified values.
825 * @return A Boolean flag that indicates whether the specified @c evaluatedSize
827 * @param[in, out] evaluatedSize The width and the height to evaluate
829 virtual bool OnEvaluateSize(Tizen::Graphics::FloatDimension& evaluatedSize);
832 // This method is for internal use only.
833 // Using this method can cause behavioral, security-related, and consistency-related issues in the application.
835 // This method is reserved and may change its name at any time without prior notice.
837 virtual void Container_Reserved4(void) {}
840 // This method is for internal use only.
841 // Using this method can cause behavioral, security-related, and consistency-related issues in the application.
843 // This method is reserved and may change its name at any time without prior notice.
845 virtual void Container_Reserved5(void) {}
849 // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
851 Container(const Container& rhs);
854 // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
856 Container& operator =(const Container& rhs);
859 friend class _ContainerImpl;
864 #endif //_FUI_CONTAINER_H_