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 FUiCtrlFrame.h
20 * @brief This is the header file for the %Frame class.
22 * This header file contains the declarations of the %Frame class.
24 #ifndef _FUI_CTRL_FRAME_H_
25 #define _FUI_CTRL_FRAME_H_
27 #include <FBaseTypes.h>
28 #include <FUiWindow.h>
29 #include <FUiIOrientationEventListener.h>
30 #include <FUiCtrlFrameTypes.h>
32 namespace Tizen { namespace Ui { namespace Animations {
34 } } } // Tizen::Ui::Animations
36 namespace Tizen { namespace App {
40 namespace Tizen { namespace Ui { namespace Controls
44 class IFrameEventListener;
48 * @brief This class provides the main frame window for an application.
52 * The %Frame class provides the main frame window for an application.
53 * A frame is the main top-level window of an application. It is the ultimate parent
54 * of all application controls.
56 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/ui/implementing_frame.htm">Frame</a>.
58 * The following example demonstrates how to use the %Frame class
61 // Gets a pointer of the frame
62 Frame *pFrame = UiApp::GetInstance()->GetAppFrame()->GetFrame();
64 // Creates an instance of canvas
65 Canvas* pCanvas = new Canvas();
67 pCanvas->DrawText(Point(30, 30), L"FrameSample");
69 // Calls Invalidate();
70 pFrame->Invalidate(true);
74 class _OSP_EXPORT_ Frame
75 : public Tizen::Ui::Window
80 * This is the default constructor for this class.
87 * This is the destructor for this class.
94 * Initializes this instance of %Frame with the specified parameter.
98 * @return An error code
99 * @exception E_SUCCESS The method is successful.
100 * @exception E_INVALID_ARG The specified input parameter is invalid.
101 * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation (that
102 * is, the method is called on an instance that is constructed).
103 * @exception E_MAX_EXCEEDED The number of Frames and Forms exceeds the system limitation.
104 * @exception E_SYSTEM A system error has occurred.
105 * @remarks The maximum number of Forms that an application can construct is limited by available memory.
107 result Construct(void);
110 * Initializes this instance of %Frame with the specified position and size.
114 * @return An error code
115 * @param[in] rect An instance of the Rectangle class @n
116 * This instance represents the x and y coordinates of the top-left corner @n
117 * of the created window along with its width and height. @n
118 * @exception E_SUCCESS The method is successful.
119 * @exception E_INVALID_ARG The specified input parameter is invalid.
120 * @exception E_INVALID_OPERATION The current state of the instance prohibits the execution of the specified operation (that
121 * is, the method is called on an instance that is constructed).
122 * @exception E_MAX_EXCEEDED The number of Frames and Forms exceeds the system limitation.
123 * @exception E_SYSTEM A system error has occurred.
124 * @remarks The maximum number of Forms that an application can construct is limited by available memory.
125 * @remarks The specified position and size are only applied when the show mode is not #FRAME_SHOW_MODE_FULL_SCREEN.
127 result Construct(const Tizen::Graphics::Rectangle& rect);
132 * Adds an IOrientationEventListener instance. @n
133 * The added listener can listen to events on the given event dispatcher's context when they are fired.
137 * @param[in] listener The listener to be added
138 * @remarks When OnOrientationChanged() event is fired, re-position and draw the child controls, but do not explicitly call
140 * @see RemoveOrientationEventListener()
142 void AddOrientationEventListener(Tizen::Ui::IOrientationEventListener& listener);
145 * Adds an IFrameEventListener instance. @n
146 * The added listener can listen to events on the given event dispatcher's context when they are fired.
150 * @param[in] listener The listener to be added
151 * @see RemoveFrameEventListener()
153 void AddFrameEventListener(Tizen::Ui::Controls::IFrameEventListener& listener);
156 * Removes an IOrientationEventListener instance. @n
157 * The removed listener cannot listen to events when they are fired.
161 * @param[in] listener The listener to be removed
162 * @see AddOrientationEventListener()
164 void RemoveOrientationEventListener(Tizen::Ui::IOrientationEventListener& listener);
167 * Removes an IFrameEventListener instance. @n
168 * The removed listener cannot listen to events when they are fired.
172 * @param[in] listener The listener to be removed
173 * @see AddFrameEventListener()
175 void RemoveFrameEventListener(Tizen::Ui::Controls::IFrameEventListener& listener);
180 * Gets the current %Form control of the %Frame control.
184 * @return The current Form, @n
185 * else @c null if there is no %Form
186 * @see SetCurrentForm()
188 Form* GetCurrentForm(void) const;
191 * Sets the specified Form control as the current %Form of the %Frame control.
195 * @return An error code
196 * @param[in] form The form to be set as the current form of the %Frame control
197 * @exception E_SUCCESS The method is successful.
198 * @exception E_INVALID_ARG The specified input parameter is invalid.
199 * The specified @c form is not a child control of the %Frame control.
200 * @exception E_SYSTEM A system error has occurred.
201 * @remarks If a form is set as the current form, it becomes the topmost form amongst its siblings. @n
202 * SetCurrentForm() does not call Invalidate() internally, so if the current form needs to be drawn
203 * immediately, Invalidate() should be called after SetCurrentForm().
204 * Only Frame whose show mode is @c FRAME_SHOW_MODE_FULL_SCREEN can set a Form which has the style of @c FORM_STYLE_INDICATOR as the current form.
206 result SetCurrentForm(const Form& form);
209 * Gets the background color of the %Frame control.
213 * @return The background color of the %Frame control
215 Tizen::Graphics::Color GetBackgroundColor(void) const;
218 * Sets the background color of the %Frame control.
222 * @param[in] color The background color
224 void SetBackgroundColor(const Tizen::Graphics::Color& color);
227 * Sets the orientation mode of a frame.
231 * @param[in] orientation The orientation mode of the %Frame control
232 * @remarks To see the change in the orientation mode, the corresponding frame must be the topmost frame in the z-order hierarchy.
235 void SetOrientation(Tizen::Ui::Orientation orientation);
238 * Gets the orientation mode of the frame.
242 * @return The orientation mode of the frame
244 Tizen::Ui::Orientation GetOrientation(void) const;
247 * Gets the current orientation status of the frame.
251 * @return The orientation status
252 * @remarks The method returns ORIENTATION_STATUS_NONE if the %Frame control is not drawn.
253 * Once it is drawn, the orientation of the %Frame control is set to portrait and the method
254 * returns ORIENTATION_STATUS_PORTRAIT if the application has not specified its orientation.
256 Tizen::Ui::OrientationStatus GetOrientationStatus(void) const;
259 * Gets the FrameAnimator of %Frame.
263 * @return %FrameAnimator, @n
264 * else @c null if this instance is not constructed as yet
266 Tizen::Ui::Animations::FrameAnimator* GetFrameAnimator(void) const;
269 * Sets the mode to show the %Frame control.
273 * @return An error code
274 * @param[in] mode The mode to show the %Frame control
275 * @exception E_SUCCESS The method is successful.
276 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
277 * @remarks The default mode is #FRAME_SHOW_MODE_FULL_SCREEN.
279 result SetShowMode(FrameShowMode mode);
282 * Gets the mode to show the %Frame control.
286 * @return The mode to show the %Frame control
287 * @remarks The default mode is #FRAME_SHOW_MODE_FULL_SCREEN.
289 FrameShowMode GetShowMode(void) const;
292 friend class _FrameImpl;
295 //This method is for internal use only. Using this method can cause behavioral, security-related,
296 //and consistency-related issues in the application.
298 // This method is reserved and may change its name at any time without
303 virtual void Frame_Reserved1(void) { }
306 //This method is for internal use only. Using this method can cause behavioral, security-related,
307 //and consistency-related issues in the application.
309 // This method is reserved and may change its name at any time without
314 virtual void Frame_Reserved2(void) { }
317 //This method is for internal use only. Using this method can cause behavioral, security-related,
318 //and consistency-related issues in the application.
320 // This method is reserved and may change its name at any time without
325 virtual void Frame_Reserved3(void) { }
328 //This method is for internal use only. Using this method can cause behavioral, security-related,
329 //and consistency-related issues in the application.
331 // This method is reserved and may change its name at any time without
336 virtual void Frame_Reserved4(void) { }
339 //This method is for internal use only. Using this method can cause behavioral, security-related,
340 //and consistency-related issues in the application.
342 // This method is reserved and may change its name at any time without
347 virtual void Frame_Reserved5(void) { }
351 Frame& operator =(const Frame&);
354 }}} // Tizen::Ui::Controls
356 #endif // _FUI_CTRL_FRAME_H_