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 FUiCtrlProgress.h
20 * @brief This is the header file for the %Progress class.
22 * This header file contains the declarations of the %Progress class and its helper classes.
25 #ifndef _FUI_CTRL_PROGRESS_H_
26 #define _FUI_CTRL_PROGRESS_H_
28 #include <FBaseObject.h>
29 #include <FBaseTypes.h>
30 #include <FUiControl.h>
31 #include <FUiContainer.h>
32 #include <FUiCtrlControlsTypes.h>
34 namespace Tizen { namespace Ui { namespace Controls
39 * @brief This class is an implementation of a %Progress control.
43 * The %Progress class displays the progress of a lengthy operation in a progress bar.
45 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/ui/implementing_progress.htm">Progress</a>.
47 * The following example demonstrates how to use the %Progress class.
50 // Sample code for ProgressSample.h
54 : public Tizen::Ui::Controls::Form
55 , public Tizen::Ui::IActionEventListener
62 bool Initialize(void);
63 virtual result OnInitializing(void);
64 virtual void OnActionPerformed(const Tizen::Ui::Control&, int);
67 static const int ID_BUTTON_CHECKED = 100;
69 Tizen::Ui::Controls::Progress* __pProgress;
75 // Sample code for ProgressSample.cpp
76 #include <FGraphics.h>
78 #include "ProgressSample.h"
80 using namespace Tizen::Graphics;
81 using namespace Tizen::Ui::Controls;
84 ProgressSample::Initialize(void)
86 Construct(FORM_STYLE_NORMAL);
91 ProgressSample::OnInitializing(void)
95 // Creates an instance of Progress
96 __pProgress = new Progress();
97 __pProgress->Construct(Rectangle(50, 50, GetClientAreaBounds().width - 100, 100), 0, 100);
98 __pProgress->SetValue(__pValue);
100 // Creates an instance of pButton to control progress value
101 Button* pButton = new Button();
102 pButton->Construct(Rectangle(50, 200, 150, 100), L"Here");
103 pButton->SetActionId(ID_BUTTON_CHECKED);
104 pButton->AddActionEventListener(*this);
106 // Adds the __pProgress and the pButton to the form
107 AddControl(__pProgress);
114 ProgressSample::OnActionPerformed(const Control& source, int actionId)
118 case ID_BUTTON_CHECKED :
128 __pProgress->SetValue(__pValue);
129 __pProgress->Invalidate(true);
139 class _OSP_EXPORT_ Progress
140 : public Tizen::Ui::Control
144 * The object is not fully constructed after this constructor is called. @n
145 * For full construction, the %Construct() method must be called right after calling this constructor.
153 * This polymorphic destructor should be overridden if required.@n
154 * This way, the destructors of the derived classes are called when the destructor of this interface is called.
158 virtual ~Progress(void);
162 * Initializes this instance of %Progress with the specified parameters.
166 * @return An error code
167 * @param[in] rect An instance of the Tizen::Graphics::Rectangle class @n
168 * This instance represents the x and y coordinates of the top-left corner of the created window along with
169 * its width and height. @n
170 * The optimal size of the control is defined in
171 * <a href="../org.tizen.native.appprogramming/html/guide/ui/control_optimalsize.htm">Optimal Size of UI Controls</a>.
172 * @param[in] minValue The minimum value of the current instance of %Progress
173 * @param[in] maxValue The maximum value of the current instance of %Progress
174 * @exception E_SUCCESS The method is successful.
175 * @exception E_INVALID_ARG A specified input parameter is invalid.
176 * @exception E_OUT_OF_RANGE The value of an argument is outside the valid range defined by the method. @n
177 * The specified values should be positive and @c minValue should be less than @c maxValue.
178 * @exception E_SYSTEM A system error has occurred.
180 * - A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier.
181 * - The size of the control must be within the range defined by the minimum size and the maximum size.
183 result Construct(const Tizen::Graphics::Rectangle& rect, int minValue, int maxValue);
186 * Initializes this instance of %Progress with the specified parameters.
190 * @return An error code
191 * @param[in] rect An instance of the Tizen::Graphics::FloatRectangle class @n
192 * This instance represents the x and y coordinates of the top-left corner of the created window along with
193 * its width and height. @n
194 * The optimal size of the control is defined in
195 * <a href="../org.tizen.native.appprogramming/html/guide/ui/control_optimalsize.htm">Optimal Size of UI Controls</a>.
196 * @param[in] minValue The minimum value of the current instance of %Progress
197 * @param[in] maxValue The maximum value of the current instance of %Progress
198 * @exception E_SUCCESS The method is successful.
199 * @exception E_INVALID_ARG A specified input parameter is invalid.
200 * @exception E_OUT_OF_RANGE The value of an argument is outside the valid range defined by the method. @n
201 * The specified values should be positive and @c minValue should be less than @c maxValue.
202 * @exception E_SYSTEM A system error has occurred.
204 * - A control is fully usable only after it has been added to a container, therefore some methods may fail if used earlier.
205 * - The size of the control must be within the range defined by the minimum size and the maximum size.
207 result Construct(const Tizen::Graphics::FloatRectangle& rect, int minValue, int maxValue);
211 * Sets the current value of the %Progress control. @n
212 * If the given value is greater than the @c maxValue with which %Progress is constructed, it will be set to %maxValue. The same applies for @c minValue.
216 * @param[in] value The current progress value
218 void SetValue(int value);
222 * Sets the minimum and maximum value of the %Progress control.
226 * @return An error code
227 * @param[in] minValue The minimum value of the current instance of %Progress
228 * @param[in] maxValue The maximum value of the current instance of %Progress
229 * @exception E_SUCCESS The method is successful.
230 * @exception E_INVALID_ARG A specified input parameter is invalid.
231 * @exception E_OUT_OF_RANGE The value of an argument is outside the valid range defined by the method. @n
232 * The specified values should be positive.
233 * @exception E_SYSTEM A system error has occurred.
235 result SetRange(int minValue, int maxValue);
239 * Gets the current value of the %Progress control.
243 * @return An integer value representing the current value of progress, @n
244 * else @c -1 if an error occurs
246 int GetValue(void) const;
250 * Gets the minimum value and the maximum value of the %Progress control.
254 * @param[out] minValue The minimum value
255 * @param[out] maxValue The maximum value
257 void GetRange(int& minValue, int& maxValue) const;
261 * Gets the percent value of the %Progress control.
265 * @return The progress as a percentage, @n
266 * else @c -1 if an error occurs
268 int GetPercentComplete(void) const;
272 * Sets the color of the bar.
276 * @return An error code
277 * @param[in] color The color to set
278 * @exception E_SUCCESS The method is successful.
279 * @exception E_SYSTEM A system error has occurred.
280 * @remarks The method ignores the alpha value of the @c color parameter and sets the alpha value to @c 255.
282 result SetBarColor(const Tizen::Graphics::Color& color);
286 * Gets the color of the bar.
290 * @return The color of the bar, @n
291 * else RGBA(0, 0, 0, 0) if an error occurs
292 * @exception E_SUCCESS The method is successful.
293 * @remarks The specific error code can be accessed using the GetLastResult() method.
295 Tizen::Graphics::Color GetBarColor(void) const;
299 * Sets the background color of the bar.
303 * @param[in] barBackgroundColor The color to set
304 * @remarks The method ignores the alpha value of the @c color parameter and sets the alpha value to @c 255.
305 * @see GetBarBackgroundColor()
307 void SetBarBackgroundColor(const Tizen::Graphics::Color& barBackgroundColor);
310 * Gets the background color of the bar.
314 * @return The background color of the bar, @n
315 * else RGBA(0, 0, 0, 0) if an error occurs
316 * @remarks The specific error code can be accessed using the GetLastResult() method.
317 * @see SetBarBackgroundColor()
319 Tizen::Graphics::Color GetBarBackgroundColor(void) const;
324 // The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
326 Progress(const Progress& rhs);
329 // The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
331 Progress& operator =(const Progress& rhs);
333 friend class _ProgressImpl;
337 }}} // Tizen::Ui::Controls
339 #endif // _FUI_CTRL_PROGRESS_H_