Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / UIComponents / ProgressBar.cs
1 /** Copyright (c) 2017 Samsung Electronics Co., Ltd.
2 *
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 *
15 */
16
17 namespace Tizen.NUI.UIComponents
18 {
19
20     using System;
21     using System.Runtime.InteropServices;
22     using Tizen.NUI.BaseComponents;
23
24     /// <summary>
25     /// ProgressBar is a control to give the user an indication of the progress of an operation.
26     /// </summary>
27     public class ProgressBar : View
28     {
29         private global::System.Runtime.InteropServices.HandleRef swigCPtr;
30
31         internal ProgressBar(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.ProgressBar_SWIGUpcast(cPtr), cMemoryOwn)
32         {
33             swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
34         }
35
36         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ProgressBar obj)
37         {
38             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
39         }
40
41         /// <summary>
42         /// To make ProgressBar instance be disposed.
43         /// </summary>
44         protected override void Dispose(DisposeTypes type)
45         {
46             if (disposed)
47             {
48                 return;
49             }
50
51             if (type == DisposeTypes.Explicit)
52             {
53                 //Called by User
54                 //Release your own managed resources here.
55                 //You should release all of your own disposable objects here.
56
57             }
58
59             //Release your own unmanaged resources here.
60             //You should not access any managed member here except static instance.
61             //because the execution order of Finalizes is non-deterministic.
62
63             if (swigCPtr.Handle != global::System.IntPtr.Zero)
64             {
65                 if (swigCMemOwn)
66                 {
67                     swigCMemOwn = false;
68                     NDalicPINVOKE.delete_ProgressBar(swigCPtr);
69                 }
70                 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
71             }
72
73             base.Dispose(type);
74         }
75
76
77         /// <summary>
78         /// Event arguments that passed via ValueChangedEventArgs
79         /// </summary>
80         public class ValueChangedEventArgs : EventArgs
81         {
82             private ProgressBar _progressBar;
83             private float _progressValue;
84             private float _secondaryProgressValue;
85
86             public ProgressBar ProgressBar
87             {
88                 get
89                 {
90                     return _progressBar;
91                 }
92                 set
93                 {
94                     _progressBar = value;
95                 }
96             }
97
98             public float ProgressValue
99             {
100                 get
101                 {
102                     return _progressValue;
103                 }
104                 set
105                 {
106                     _progressValue = value;
107                 }
108             }
109
110             public float SecondaryProgressValue
111             {
112                 get
113                 {
114                     return _secondaryProgressValue;
115                 }
116                 set
117                 {
118                     _secondaryProgressValue = value;
119                 }
120             }
121
122         }
123
124         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
125         private delegate void ValueChangedCallbackDelegate(IntPtr progressBar, float progressValue, float secondaryProgressValue);
126         private EventHandler<ValueChangedEventArgs> _progressBarValueChangedEventHandler;
127         private ValueChangedCallbackDelegate _progressBarValueChangedCallbackDelegate;
128
129         /// <summary>
130         /// Event is sent when the ProgressBar value changes.
131         /// </summary>
132         public event EventHandler<ValueChangedEventArgs> ValueChanged
133         {
134             add
135             {
136                 if (_progressBarValueChangedEventHandler == null)
137                 {
138                     _progressBarValueChangedCallbackDelegate = (OnValueChanged);
139                     ValueChangedSignal().Connect(_progressBarValueChangedCallbackDelegate);
140                 }
141                 _progressBarValueChangedEventHandler += value;
142             }
143             remove
144             {
145                 _progressBarValueChangedEventHandler -= value;
146                 if (_progressBarValueChangedEventHandler == null && ValueChangedSignal().Empty() == false)
147                 {
148                     ValueChangedSignal().Disconnect(_progressBarValueChangedCallbackDelegate);
149                 }
150             }
151         }
152
153         // Callback for ProgressBar ValueChanged signal
154         private void OnValueChanged(IntPtr progressBar, float progressValue, float secondaryProgressValue)
155         {
156             ValueChangedEventArgs e = new ValueChangedEventArgs();
157
158             // Populate all members of "e" (ValueChangedEventArgs) with real page
159             e.ProgressBar = Registry.GetManagedBaseHandleFromNativePtr(progressBar) as ProgressBar;
160             e.ProgressValue = progressValue;
161             e.SecondaryProgressValue = secondaryProgressValue;
162
163             if (_progressBarValueChangedEventHandler != null)
164             {
165                 _progressBarValueChangedEventHandler(this, e);
166             }
167         }
168
169         internal class Property
170         {
171             internal static readonly int PROGRESS_VALUE = NDalicPINVOKE.ProgressBar_Property_PROGRESS_VALUE_get();
172             internal static readonly int SECONDARY_PROGRESS_VALUE = NDalicPINVOKE.ProgressBar_Property_SECONDARY_PROGRESS_VALUE_get();
173             internal static readonly int INDETERMINATE = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_get();
174             internal static readonly int TRACK_VISUAL = NDalicPINVOKE.ProgressBar_Property_TRACK_VISUAL_get();
175             internal static readonly int PROGRESS_VISUAL = NDalicPINVOKE.ProgressBar_Property_PROGRESS_VISUAL_get();
176             internal static readonly int SECONDARY_PROGRESS_VISUAL = NDalicPINVOKE.ProgressBar_Property_SECONDARY_PROGRESS_VISUAL_get();
177             internal static readonly int INDETERMINATE_VISUAL = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_VISUAL_get();
178             internal static readonly int INDETERMINATE_VISUAL_ANIMATION = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_VISUAL_ANIMATION_get();
179             internal static readonly int LABEL_VISUAL = NDalicPINVOKE.ProgressBar_Property_LABEL_VISUAL_get();
180         }
181
182         /// <summary>
183         /// Creates the ProgressBar.
184         /// </summary>
185         public ProgressBar() : this(NDalicPINVOKE.ProgressBar_New(), true)
186         {
187             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
188
189         }
190
191         internal ProgressBarValueChangedSignal ValueChangedSignal()
192         {
193             ProgressBarValueChangedSignal ret = new ProgressBarValueChangedSignal(NDalicPINVOKE.ProgressBar_ValueChangedSignal(swigCPtr), false);
194             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
195             return ret;
196         }
197
198         /// <summary>
199         /// The progress value of progress bar, progress runs form 0 to 1.<br>
200         /// If Value is set to 0, progress bar will be set to beginning.<br>
201         /// If Value is set to 1, progress bar will be set to end.<br>
202         /// Any Value outside of the range is ignored.<br>
203         /// </summary>
204         public float ProgressValue
205         {
206             get
207             {
208                 float temp = 0.0f;
209                 GetProperty(ProgressBar.Property.PROGRESS_VALUE).Get(out temp);
210                 return temp;
211             }
212             set
213             {
214                 SetProperty(ProgressBar.Property.PROGRESS_VALUE, new Tizen.NUI.PropertyValue(value));
215             }
216         }
217         /// <summary>
218         /// The secondary progress value of progress bar, secondary progress runs form 0 to 1.<br>
219         /// Optional. If not supplied, the default is 0.<br>
220         /// If Value is set to 0, progress bar will be set secondary progress to beginning.<br>
221         /// If Value is set to 1, progress bar will be set secondary progress to end.<br>
222         /// Any Value outside of the range is ignored.<br>
223         /// </summary>
224         public float SecondaryProgressValue
225         {
226             get
227             {
228                 float temp = 0.0f;
229                 GetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VALUE).Get(out temp);
230                 return temp;
231             }
232             set
233             {
234                 SetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VALUE, new Tizen.NUI.PropertyValue(value));
235             }
236         }
237         /// <summary>
238         /// Sets the progress-bar as \e indeterminate state.
239         /// </summary>
240         public bool Indeterminate
241         {
242             get
243             {
244                 bool temp = false;
245                 GetProperty(ProgressBar.Property.INDETERMINATE).Get(out temp);
246                 return temp;
247             }
248             set
249             {
250                 SetProperty(ProgressBar.Property.INDETERMINATE, new Tizen.NUI.PropertyValue(value));
251             }
252         }
253         /// <summary>
254         /// The track Visual value of progress bar, it's a full progress area and it's shown behind PROGRESS_VISUAL.<br>
255         /// Optional. If not supplied, the default track visual will be shown.<br>
256         /// </summary>
257         public Tizen.NUI.PropertyMap TrackVisual
258         {
259             get
260             {
261                 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
262                 GetProperty(ProgressBar.Property.TRACK_VISUAL).Get(temp);
263                 return temp;
264             }
265             set
266             {
267                 SetProperty(ProgressBar.Property.TRACK_VISUAL, new Tizen.NUI.PropertyValue(value));
268             }
269         }
270         /// <summary>
271         /// The progress Visual value of progress bar, size of the progress visual is changed based on PROGRESS_VALUE.<br>
272         /// Optional. If not supplied, the default progress visual will be shown.<br>
273         /// </summary>
274         public Tizen.NUI.PropertyMap ProgressVisual
275         {
276             get
277             {
278                 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
279                 GetProperty(ProgressBar.Property.PROGRESS_VISUAL).Get(temp);
280                 return temp;
281             }
282             set
283             {
284                 SetProperty(ProgressBar.Property.PROGRESS_VISUAL, new Tizen.NUI.PropertyValue(value));
285             }
286         }
287         /// <summary>
288         /// The secondary progress visual of progress bar, size of the secondary progress visual is changed based on SECONDARY_PROGRESS_VALUE.<br>
289         /// Optional. If not supplied, the secondary progress visual will not be shown.<br>
290         /// </summary>
291         public Tizen.NUI.PropertyMap SecondaryProgressVisual
292         {
293             get
294             {
295                 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
296                 GetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VISUAL).Get(temp);
297                 return temp;
298             }
299             set
300             {
301                 SetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VISUAL, new Tizen.NUI.PropertyValue(value));
302             }
303         }
304         /// <summary>
305         /// The indeterminate visual of progress bar.<br>
306         /// Optional. If not supplied, the default inditerminate visual will be shown.<br>
307         /// </summary>
308         public Tizen.NUI.PropertyMap IndeterminateVisual
309         {
310             get
311             {
312                 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
313                 GetProperty(ProgressBar.Property.INDETERMINATE_VISUAL).Get(temp);
314                 return temp;
315             }
316             set
317             {
318                 SetProperty(ProgressBar.Property.INDETERMINATE_VISUAL, new Tizen.NUI.PropertyValue(value));
319             }
320         }
321         /// <summary>
322         /// The transition data for indeterminate visual animation.<br>
323         /// Optional. If not supplied, default animation will be played.<br>
324         /// </summary>
325         public Tizen.NUI.PropertyArray IndeterminateVisualAnimation
326         {
327             get
328             {
329                 Tizen.NUI.PropertyArray temp = new Tizen.NUI.PropertyArray();
330                 GetProperty(ProgressBar.Property.INDETERMINATE_VISUAL_ANIMATION).Get(temp);
331                 return temp;
332             }
333             set
334             {
335                 SetProperty(ProgressBar.Property.INDETERMINATE_VISUAL_ANIMATION, new Tizen.NUI.PropertyValue(value));
336             }
337         }
338         /// <summary>
339         /// The Label visual of progress bar.
340         /// </summary>
341         public Tizen.NUI.PropertyMap LabelVisual
342         {
343             get
344             {
345                 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
346                 GetProperty(ProgressBar.Property.LABEL_VISUAL).Get(temp);
347                 return temp;
348             }
349             set
350             {
351                 SetProperty(ProgressBar.Property.LABEL_VISUAL, new Tizen.NUI.PropertyValue(value));
352             }
353         }
354
355     }
356
357 }