2 * Copyright(c) 2018 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.ComponentModel;
19 using System.Runtime.InteropServices;
20 using Tizen.NUI.BaseComponents;
21 using Tizen.NUI.Binding;
23 namespace Tizen.NUI.UIComponents
26 /// The ProgressBar is a control to give the user an indication of the progress of an operation.
28 /// <since_tizen> 3 </since_tizen>
29 /// This will be deprecated
30 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
31 [EditorBrowsable(EditorBrowsableState.Never)]
32 public class ProgressBar : View
34 /// This will be deprecated
35 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
36 [EditorBrowsable(EditorBrowsableState.Never)]
37 public static readonly BindableProperty ProgressValueProperty = BindableProperty.Create(nameof(ProgressValue), typeof(float), typeof(ProgressBar), default(float), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
39 var progressBar = (ProgressBar)bindable;
42 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.ProgressValue, new Tizen.NUI.PropertyValue((float)newValue));
45 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
47 var progressBar = (ProgressBar)bindable;
49 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.ProgressValue).Get(out temp);
52 /// This will be deprecated
53 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
54 [EditorBrowsable(EditorBrowsableState.Never)]
55 public static readonly BindableProperty SecondaryProgressValueProperty = BindableProperty.Create(nameof(SecondaryProgressValue), typeof(float), typeof(ProgressBar), default(float), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
57 var progressBar = (ProgressBar)bindable;
60 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.SecondaryProgressValue, new Tizen.NUI.PropertyValue((float)newValue));
63 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
65 var progressBar = (ProgressBar)bindable;
67 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.SecondaryProgressValue).Get(out temp);
70 /// This will be deprecated
71 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
72 [EditorBrowsable(EditorBrowsableState.Never)]
73 public static readonly BindableProperty IndeterminateProperty = BindableProperty.Create(nameof(Indeterminate), typeof(bool), typeof(ProgressBar), false, propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
75 var progressBar = (ProgressBar)bindable;
78 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.INDETERMINATE, new Tizen.NUI.PropertyValue((bool)newValue));
81 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
83 var progressBar = (ProgressBar)bindable;
85 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.INDETERMINATE).Get(out temp);
88 /// This will be deprecated
89 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
90 [EditorBrowsable(EditorBrowsableState.Never)]
91 public static readonly BindableProperty TrackVisualProperty = BindableProperty.Create(nameof(TrackVisual), typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
93 var progressBar = (ProgressBar)bindable;
96 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.TrackVisual, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
99 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
101 var progressBar = (ProgressBar)bindable;
102 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
103 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.TrackVisual).Get(temp);
106 /// This will be deprecated
107 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
108 [EditorBrowsable(EditorBrowsableState.Never)]
109 public static readonly BindableProperty ProgressVisualProperty = BindableProperty.Create(nameof(ProgressVisual), typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
111 var progressBar = (ProgressBar)bindable;
112 if (newValue != null)
114 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.ProgressVisual, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
117 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
119 var progressBar = (ProgressBar)bindable;
120 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
121 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.ProgressVisual).Get(temp);
124 /// This will be deprecated
125 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
126 [EditorBrowsable(EditorBrowsableState.Never)]
127 public static readonly BindableProperty SecondaryProgressVisualProperty = BindableProperty.Create(nameof(SecondaryProgressVisual), typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
129 var progressBar = (ProgressBar)bindable;
130 if (newValue != null)
132 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.SecondaryProgressVisual, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
135 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
137 var progressBar = (ProgressBar)bindable;
138 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
139 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.SecondaryProgressVisual).Get(temp);
142 /// This will be deprecated
143 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
144 [EditorBrowsable(EditorBrowsableState.Never)]
145 public static readonly BindableProperty IndeterminateVisualProperty = BindableProperty.Create(nameof(IndeterminateVisual), typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
147 var progressBar = (ProgressBar)bindable;
148 if (newValue != null)
150 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.IndeterminateVisual, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
153 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
155 var progressBar = (ProgressBar)bindable;
156 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
157 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.IndeterminateVisual).Get(temp);
160 /// This will be deprecated
161 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
162 [EditorBrowsable(EditorBrowsableState.Never)]
163 public static readonly BindableProperty IndeterminateVisualAnimationProperty = BindableProperty.Create(nameof(IndeterminateVisualAnimation), typeof(PropertyArray), typeof(ProgressBar), new PropertyArray(), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
165 var progressBar = (ProgressBar)bindable;
166 if (newValue != null)
168 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.IndeterminateVisualAnimation, new Tizen.NUI.PropertyValue((PropertyArray)newValue));
171 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
173 var progressBar = (ProgressBar)bindable;
174 Tizen.NUI.PropertyArray temp = new Tizen.NUI.PropertyArray();
175 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.IndeterminateVisualAnimation).Get(temp);
178 /// This will be deprecated
179 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
180 [EditorBrowsable(EditorBrowsableState.Never)]
181 public static readonly BindableProperty LabelVisualProperty = BindableProperty.Create(nameof(LabelVisual), typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (BindableProperty.BindingPropertyChangedDelegate)((bindable, oldValue, newValue) =>
183 var progressBar = (ProgressBar)bindable;
184 if (newValue != null)
186 Tizen.NUI.Object.SetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.LabelVisual, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
189 defaultValueCreator: (BindableProperty.CreateDefaultValueDelegate)((bindable) =>
191 var progressBar = (ProgressBar)bindable;
192 Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
193 Tizen.NUI.Object.GetProperty((HandleRef)progressBar.SwigCPtr, ProgressBar.Property.LabelVisual).Get(temp);
197 private EventHandler<ValueChangedEventArgs> _progressBarValueChangedEventHandler;
198 private ValueChangedCallbackDelegate _progressBarValueChangedCallbackDelegate;
201 /// Creates the ProgressBar.
203 /// <since_tizen> 3 </since_tizen>
204 /// This will be deprecated
205 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
206 [EditorBrowsable(EditorBrowsableState.Never)]
207 public ProgressBar() : this(Interop.ProgressBar.New(), true)
209 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
213 internal ProgressBar(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn)
217 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
218 private delegate void ValueChangedCallbackDelegate(IntPtr progressBar, float progressValue, float secondaryProgressValue);
221 /// The event is sent when the ProgressBar value changes.
223 /// <since_tizen> 3 </since_tizen>
224 /// This will be deprecated
225 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
226 [EditorBrowsable(EditorBrowsableState.Never)]
227 public event EventHandler<ValueChangedEventArgs> ValueChanged
231 if (_progressBarValueChangedEventHandler == null)
233 _progressBarValueChangedCallbackDelegate = (OnValueChanged);
234 ProgressBarValueChangedSignal valueChanged = ValueChangedSignal();
235 valueChanged?.Connect(_progressBarValueChangedCallbackDelegate);
236 valueChanged?.Dispose();
238 _progressBarValueChangedEventHandler += value;
242 _progressBarValueChangedEventHandler -= value;
243 ProgressBarValueChangedSignal valueChanged = ValueChangedSignal();
244 if (_progressBarValueChangedEventHandler == null && valueChanged.Empty() == false)
246 valueChanged?.Disconnect(_progressBarValueChangedCallbackDelegate);
248 valueChanged?.Dispose();
253 /// The progress value of the progress bar, the progress runs from 0 to 1.<br />
254 /// If the value is set to 0, then the progress bar will be set to beginning.<br />
255 /// If the value is set to 1, then the progress bar will be set to end.<br />
256 /// Any value outside the range is ignored.<br />
258 /// <since_tizen> 3 </since_tizen>
259 /// This will be deprecated
260 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
261 [EditorBrowsable(EditorBrowsableState.Never)]
262 public float ProgressValue
266 return (float)GetValue(ProgressValueProperty);
270 SetValue(ProgressValueProperty, value);
275 /// The secondary progress value of the progress bar, the secondary progress runs from 0 to 1.<br />
276 /// Optional. If not supplied, the default is 0.<br />
277 /// If the value is set to 0, then the progress bar will be set secondary progress to beginning.<br />
278 /// If the value is set to 1, then the progress bar will be set secondary progress to end.<br />
279 /// Any value outside of the range is ignored.<br />
281 /// <since_tizen> 3 </since_tizen>
282 /// This will be deprecated
283 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
284 [EditorBrowsable(EditorBrowsableState.Never)]
285 public float SecondaryProgressValue
289 return (float)GetValue(SecondaryProgressValueProperty);
293 SetValue(SecondaryProgressValueProperty, value);
298 /// Sets the progress bar as \e indeterminate state.
300 /// <since_tizen> 3 </since_tizen>
301 /// This will be deprecated
302 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
303 [EditorBrowsable(EditorBrowsableState.Never)]
304 public bool Indeterminate
308 return (bool)GetValue(IndeterminateProperty);
312 SetValue(IndeterminateProperty, value);
317 /// The track visual value of progress bar, it's full progress area, and it's shown behind the PROGRESS_VISUAL.<br />
318 /// Optional. If not supplied, the default track visual will be shown.<br />
320 /// <since_tizen> 3 </since_tizen>
321 /// This will be deprecated
322 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
323 [EditorBrowsable(EditorBrowsableState.Never)]
324 public Tizen.NUI.PropertyMap TrackVisual
328 return (PropertyMap)GetValue(TrackVisualProperty);
332 SetValue(TrackVisualProperty, value);
337 /// The progress visual value of the progress bar, the size of the progress visual is changed based on the PROGRESS_VALUE.<br />
338 /// Optional. If not supplied, then the default progress visual will be shown.<br />
340 /// <since_tizen> 3 </since_tizen>
341 /// This will be deprecated
342 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
343 [EditorBrowsable(EditorBrowsableState.Never)]
344 public Tizen.NUI.PropertyMap ProgressVisual
348 return (PropertyMap)GetValue(ProgressVisualProperty);
352 SetValue(ProgressVisualProperty, value);
357 /// The secondary progress visual of the progress bar, the size of the secondary progress visual is changed based on the SECONDARY_PROGRESS_VALUE.<br />
358 /// Optional. If not supplied, then the secondary progress visual will not be shown.<br />
360 /// <since_tizen> 3 </since_tizen>
361 /// This will be deprecated
362 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
363 [EditorBrowsable(EditorBrowsableState.Never)]
364 public Tizen.NUI.PropertyMap SecondaryProgressVisual
368 return (PropertyMap)GetValue(SecondaryProgressVisualProperty);
372 SetValue(SecondaryProgressVisualProperty, value);
377 /// The indeterminate visual of the progress bar.<br />
378 /// Optional. If not supplied, then the default indeterminate visual will be shown.<br />
380 /// <since_tizen> 3 </since_tizen>
381 /// This will be deprecated
382 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
383 [EditorBrowsable(EditorBrowsableState.Never)]
384 public Tizen.NUI.PropertyMap IndeterminateVisual
388 return (PropertyMap)GetValue(IndeterminateVisualProperty);
392 SetValue(IndeterminateVisualProperty, value);
397 /// The transition data for the indeterminate visual animation.<br />
398 /// Optional. If not supplied, then the default animation will be played.<br />
400 /// <since_tizen> 3 </since_tizen>
401 /// This will be deprecated
402 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
403 [EditorBrowsable(EditorBrowsableState.Never)]
404 public Tizen.NUI.PropertyArray IndeterminateVisualAnimation
408 return (PropertyArray)GetValue(IndeterminateVisualAnimationProperty);
412 SetValue(IndeterminateVisualAnimationProperty, value);
417 /// The label visual of the progress bar.
419 /// <since_tizen> 3 </since_tizen>
420 /// This will be deprecated
421 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
422 [EditorBrowsable(EditorBrowsableState.Never)]
423 public Tizen.NUI.PropertyMap LabelVisual
427 return (PropertyMap)GetValue(LabelVisualProperty);
431 SetValue(LabelVisualProperty, value);
435 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ProgressBar obj)
437 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.SwigCPtr;
440 internal ProgressBarValueChangedSignal ValueChangedSignal()
442 ProgressBarValueChangedSignal ret = new ProgressBarValueChangedSignal(Interop.ProgressBar.ValueChangedSignal(SwigCPtr), false);
443 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
448 /// To dispose the ProgressBar instance.
450 /// <since_tizen> 3 </since_tizen>
451 /// This will be deprecated
452 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
453 [EditorBrowsable(EditorBrowsableState.Never)]
454 protected override void Dispose(DisposeTypes type)
461 //Release your own unmanaged resources here.
462 //You should not access any managed member here except static instance.
463 //because the execution order of Finalizes is non-deterministic.
465 if (this != null && _progressBarValueChangedCallbackDelegate != null)
467 ProgressBarValueChangedSignal valueChanged = ValueChangedSignal();
468 valueChanged?.Disconnect(_progressBarValueChangedCallbackDelegate);
469 valueChanged?.Dispose();
475 /// This will not be public opened.
476 [EditorBrowsable(EditorBrowsableState.Never)]
477 protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr)
479 Interop.ProgressBar.DeleteProgressBar(swigCPtr);
482 // Callback for ProgressBar ValueChanged signal
483 private void OnValueChanged(IntPtr progressBar, float progressValue, float secondaryProgressValue)
485 ValueChangedEventArgs e = new ValueChangedEventArgs();
487 // Populate all members of "e" (ValueChangedEventArgs) with real page
488 e.ProgressBar = Registry.GetManagedBaseHandleFromNativePtr(progressBar) as ProgressBar;
489 e.ProgressValue = progressValue;
490 e.SecondaryProgressValue = secondaryProgressValue;
492 if (_progressBarValueChangedEventHandler != null)
494 _progressBarValueChangedEventHandler(this, e);
499 /// Event arguments that passed via the ValueChangedEventArgs.
501 /// <since_tizen> 3 </since_tizen>
502 /// This will be deprecated
503 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
504 [EditorBrowsable(EditorBrowsableState.Never)]
505 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
506 public class ValueChangedEventArgs : EventArgs
508 private ProgressBar _progressBar;
509 private float _progressValue;
510 private float _secondaryProgressValue;
515 /// <since_tizen> 3 </since_tizen>
516 /// This will be deprecated
517 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
518 [EditorBrowsable(EditorBrowsableState.Never)]
519 public ProgressBar ProgressBar
527 _progressBar = value;
532 /// The progress value of the progress bar, the progress runs from 0 to 1.
534 /// <since_tizen> 3 </since_tizen>
535 /// This will be deprecated
536 [EditorBrowsable(EditorBrowsableState.Never)]
537 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
538 public float ProgressValue
542 return _progressValue;
546 _progressValue = value;
551 /// The secondary progress value of the progress bar, the secondary progress runs from 0 to 1.
553 /// <since_tizen> 3 </since_tizen>
554 /// This will be deprecated
555 [EditorBrowsable(EditorBrowsableState.Never)]
556 [Obsolete("Deprecated in API6; Will be removed in API9. Please use Tizen.NUI.Components")]
557 public float SecondaryProgressValue
561 return _secondaryProgressValue;
565 _secondaryProgressValue = value;
571 internal new class Property
573 internal static readonly int ProgressValue = Interop.ProgressBar.ProgressValueGet();
574 internal static readonly int SecondaryProgressValue = Interop.ProgressBar.SecondaryProgressValueGet();
575 internal static readonly int INDETERMINATE = Interop.ProgressBar.IndeterminateGet();
576 internal static readonly int TrackVisual = Interop.ProgressBar.TrackVisualGet();
577 internal static readonly int ProgressVisual = Interop.ProgressBar.ProgressVisualGet();
578 internal static readonly int SecondaryProgressVisual = Interop.ProgressBar.SecondaryProgressVisualGet();
579 internal static readonly int IndeterminateVisual = Interop.ProgressBar.IndeterminateVisualGet();
580 internal static readonly int IndeterminateVisualAnimation = Interop.ProgressBar.IndeterminateVisualAnimationGet();
581 internal static readonly int LabelVisual = Interop.ProgressBar.LabelVisualGet();