1 /** Copyright (c) 2017 Samsung Electronics Co., Ltd.
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
7 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 namespace Tizen.NUI.UIComponents
21 using System.Runtime.InteropServices;
22 using Tizen.NUI.BaseComponents;
25 /// The ProgressBar is a control to give the user an indication of the progress of an operation.
27 public class ProgressBar : View
29 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
31 internal ProgressBar(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.ProgressBar_SWIGUpcast(cPtr), cMemoryOwn)
33 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
36 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ProgressBar obj)
38 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
42 /// To dispose the ProgressBar instance.
44 protected override void Dispose(DisposeTypes type)
51 if (type == DisposeTypes.Explicit)
54 //Release your own managed resources here.
55 //You should release all of your own disposable objects here.
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.
63 if (_progressBarValueChangedCallbackDelegate != null)
65 ValueChangedSignal().Disconnect(_progressBarValueChangedCallbackDelegate);
68 if (swigCPtr.Handle != global::System.IntPtr.Zero)
73 NDalicPINVOKE.delete_ProgressBar(swigCPtr);
75 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
83 /// Event arguments that passed via the ValueChangedEventArgs.
85 public class ValueChangedEventArgs : EventArgs
87 private ProgressBar _progressBar;
88 private float _progressValue;
89 private float _secondaryProgressValue;
91 public ProgressBar ProgressBar
103 public float ProgressValue
107 return _progressValue;
111 _progressValue = value;
115 public float SecondaryProgressValue
119 return _secondaryProgressValue;
123 _secondaryProgressValue = value;
129 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
130 private delegate void ValueChangedCallbackDelegate(IntPtr progressBar, float progressValue, float secondaryProgressValue);
131 private EventHandler<ValueChangedEventArgs> _progressBarValueChangedEventHandler;
132 private ValueChangedCallbackDelegate _progressBarValueChangedCallbackDelegate;
135 /// The event is sent when the ProgressBar value changes.
137 /// <since_tizen> 3 </since_tizen>
138 public event EventHandler<ValueChangedEventArgs> ValueChanged
142 if (_progressBarValueChangedEventHandler == null)
144 _progressBarValueChangedCallbackDelegate = (OnValueChanged);
145 ValueChangedSignal().Connect(_progressBarValueChangedCallbackDelegate);
147 _progressBarValueChangedEventHandler += value;
151 _progressBarValueChangedEventHandler -= value;
152 if (_progressBarValueChangedEventHandler == null && ValueChangedSignal().Empty() == false)
154 ValueChangedSignal().Disconnect(_progressBarValueChangedCallbackDelegate);
159 // Callback for ProgressBar ValueChanged signal
160 private void OnValueChanged(IntPtr progressBar, float progressValue, float secondaryProgressValue)
162 ValueChangedEventArgs e = new ValueChangedEventArgs();
164 // Populate all members of "e" (ValueChangedEventArgs) with real page
165 e.ProgressBar = Registry.GetManagedBaseHandleFromNativePtr(progressBar) as ProgressBar;
166 e.ProgressValue = progressValue;
167 e.SecondaryProgressValue = secondaryProgressValue;
169 if (_progressBarValueChangedEventHandler != null)
171 _progressBarValueChangedEventHandler(this, e);
175 internal new class Property
177 internal static readonly int PROGRESS_VALUE = NDalicPINVOKE.ProgressBar_Property_PROGRESS_VALUE_get();
178 internal static readonly int SECONDARY_PROGRESS_VALUE = NDalicPINVOKE.ProgressBar_Property_SECONDARY_PROGRESS_VALUE_get();
179 internal static readonly int INDETERMINATE = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_get();
180 internal static readonly int TRACK_VISUAL = NDalicPINVOKE.ProgressBar_Property_TRACK_VISUAL_get();
181 internal static readonly int PROGRESS_VISUAL = NDalicPINVOKE.ProgressBar_Property_PROGRESS_VISUAL_get();
182 internal static readonly int SECONDARY_PROGRESS_VISUAL = NDalicPINVOKE.ProgressBar_Property_SECONDARY_PROGRESS_VISUAL_get();
183 internal static readonly int INDETERMINATE_VISUAL = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_VISUAL_get();
184 internal static readonly int INDETERMINATE_VISUAL_ANIMATION = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_VISUAL_ANIMATION_get();
185 internal static readonly int LABEL_VISUAL = NDalicPINVOKE.ProgressBar_Property_LABEL_VISUAL_get();
189 /// Creates the ProgressBar.
191 /// <since_tizen> 3 </since_tizen>
192 public ProgressBar() : this(NDalicPINVOKE.ProgressBar_New(), true)
194 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
198 internal ProgressBarValueChangedSignal ValueChangedSignal()
200 ProgressBarValueChangedSignal ret = new ProgressBarValueChangedSignal(NDalicPINVOKE.ProgressBar_ValueChangedSignal(swigCPtr), false);
201 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
206 /// The progress value of the progress bar, the progress runs from 0 to 1.<br>
207 /// If the value is set to 0, then the progress bar will be set to beginning.<br>
208 /// If the value is set to 1, then the progress bar will be set to end.<br>
209 /// Any value outside the range is ignored.<br>
211 /// <since_tizen> 3 </since_tizen>
212 public float ProgressValue
217 GetProperty(ProgressBar.Property.PROGRESS_VALUE).Get(out temp);
222 SetProperty(ProgressBar.Property.PROGRESS_VALUE, new Tizen.NUI.PropertyValue(value));
226 /// The secondary progress value of the progress bar, the secondary progress runs from 0 to 1.<br>
227 /// Optional. If not supplied, the default is 0.<br>
228 /// If the value is set to 0, then the progress bar will be set secondary progress to beginning.<br>
229 /// If the value is set to 1, then the progress bar will be set secondary progress to end.<br>
230 /// Any value outside of the range is ignored.<br>
232 /// <since_tizen> 3 </since_tizen>
233 public float SecondaryProgressValue
238 GetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VALUE).Get(out temp);
243 SetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VALUE, new Tizen.NUI.PropertyValue(value));
247 /// Sets the progress bar as \e indeterminate state.
249 /// <since_tizen> 3 </since_tizen>
250 public bool Indeterminate
255 GetProperty(ProgressBar.Property.INDETERMINATE).Get(out temp);
260 SetProperty(ProgressBar.Property.INDETERMINATE, new Tizen.NUI.PropertyValue(value));
264 /// The track visual value of progress bar, it's full progress area, and it's shown behind the PROGRESS_VISUAL.<br>
265 /// Optional. If not supplied, the default track visual will be shown.<br>
267 /// <since_tizen> 3 </since_tizen>
268 public Tizen.NUI.PropertyMap TrackVisual
272 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
273 GetProperty(ProgressBar.Property.TRACK_VISUAL).Get(temp);
278 SetProperty(ProgressBar.Property.TRACK_VISUAL, new Tizen.NUI.PropertyValue(value));
282 /// The progress visual value of the progress bar, the size of the progress visual is changed based on the PROGRESS_VALUE.<br>
283 /// Optional. If not supplied, then the default progress visual will be shown.<br>
285 /// <since_tizen> 3 </since_tizen>
286 public Tizen.NUI.PropertyMap ProgressVisual
290 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
291 GetProperty(ProgressBar.Property.PROGRESS_VISUAL).Get(temp);
296 SetProperty(ProgressBar.Property.PROGRESS_VISUAL, new Tizen.NUI.PropertyValue(value));
300 /// The secondary progress visual of the progress bar, the size of the secondary progress visual is changed based on the SECONDARY_PROGRESS_VALUE.<br>
301 /// Optional. If not supplied, then the secondary progress visual will not be shown.<br>
303 /// <since_tizen> 3 </since_tizen>
304 public Tizen.NUI.PropertyMap SecondaryProgressVisual
308 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
309 GetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VISUAL).Get(temp);
314 SetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VISUAL, new Tizen.NUI.PropertyValue(value));
318 /// The indeterminate visual of the progress bar.<br>
319 /// Optional. If not supplied, then the default indeterminate visual will be shown.<br>
321 /// <since_tizen> 3 </since_tizen>
322 public Tizen.NUI.PropertyMap IndeterminateVisual
326 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
327 GetProperty(ProgressBar.Property.INDETERMINATE_VISUAL).Get(temp);
332 SetProperty(ProgressBar.Property.INDETERMINATE_VISUAL, new Tizen.NUI.PropertyValue(value));
336 /// The transition data for the indeterminate visual animation.<br>
337 /// Optional. If not supplied, then the default animation will be played.<br>
339 /// <since_tizen> 3 </since_tizen>
340 public Tizen.NUI.PropertyArray IndeterminateVisualAnimation
344 Tizen.NUI.PropertyArray temp = new Tizen.NUI.PropertyArray();
345 GetProperty(ProgressBar.Property.INDETERMINATE_VISUAL_ANIMATION).Get(temp);
350 SetProperty(ProgressBar.Property.INDETERMINATE_VISUAL_ANIMATION, new Tizen.NUI.PropertyValue(value));
354 /// The label visual of the progress bar.
356 /// <since_tizen> 3 </since_tizen>
357 public Tizen.NUI.PropertyMap LabelVisual
361 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
362 GetProperty(ProgressBar.Property.LABEL_VISUAL).Get(temp);
367 SetProperty(ProgressBar.Property.LABEL_VISUAL, new Tizen.NUI.PropertyValue(value));