/** Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ namespace Tizen.NUI.UIComponents { using System; using System.Runtime.InteropServices; using Tizen.NUI.BaseComponents; /// /// The ProgressBar is a control to give the user an indication of the progress of an operation. /// public class ProgressBar : View { private global::System.Runtime.InteropServices.HandleRef swigCPtr; internal ProgressBar(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.ProgressBar_SWIGUpcast(cPtr), cMemoryOwn) { swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); } internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ProgressBar obj) { return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; } /// /// To dispose the ProgressBar instance. /// protected override void Dispose(DisposeTypes type) { if (disposed) { return; } if (type == DisposeTypes.Explicit) { //Called by User //Release your own managed resources here. //You should release all of your own disposable objects here. } //Release your own unmanaged resources here. //You should not access any managed member here except static instance. //because the execution order of Finalizes is non-deterministic. if (_progressBarValueChangedCallbackDelegate != null) { ValueChangedSignal().Disconnect(_progressBarValueChangedCallbackDelegate); } if (swigCPtr.Handle != global::System.IntPtr.Zero) { if (swigCMemOwn) { swigCMemOwn = false; NDalicPINVOKE.delete_ProgressBar(swigCPtr); } swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero); } base.Dispose(type); } /// /// Event arguments that passed via the ValueChangedEventArgs. /// public class ValueChangedEventArgs : EventArgs { private ProgressBar _progressBar; private float _progressValue; private float _secondaryProgressValue; public ProgressBar ProgressBar { get { return _progressBar; } set { _progressBar = value; } } public float ProgressValue { get { return _progressValue; } set { _progressValue = value; } } public float SecondaryProgressValue { get { return _secondaryProgressValue; } set { _secondaryProgressValue = value; } } } [UnmanagedFunctionPointer(CallingConvention.StdCall)] private delegate void ValueChangedCallbackDelegate(IntPtr progressBar, float progressValue, float secondaryProgressValue); private EventHandler _progressBarValueChangedEventHandler; private ValueChangedCallbackDelegate _progressBarValueChangedCallbackDelegate; /// /// The event is sent when the ProgressBar value changes. /// public event EventHandler ValueChanged { add { if (_progressBarValueChangedEventHandler == null) { _progressBarValueChangedCallbackDelegate = (OnValueChanged); ValueChangedSignal().Connect(_progressBarValueChangedCallbackDelegate); } _progressBarValueChangedEventHandler += value; } remove { _progressBarValueChangedEventHandler -= value; if (_progressBarValueChangedEventHandler == null && ValueChangedSignal().Empty() == false) { ValueChangedSignal().Disconnect(_progressBarValueChangedCallbackDelegate); } } } // Callback for ProgressBar ValueChanged signal private void OnValueChanged(IntPtr progressBar, float progressValue, float secondaryProgressValue) { ValueChangedEventArgs e = new ValueChangedEventArgs(); // Populate all members of "e" (ValueChangedEventArgs) with real page e.ProgressBar = Registry.GetManagedBaseHandleFromNativePtr(progressBar) as ProgressBar; e.ProgressValue = progressValue; e.SecondaryProgressValue = secondaryProgressValue; if (_progressBarValueChangedEventHandler != null) { _progressBarValueChangedEventHandler(this, e); } } internal new class Property { internal static readonly int PROGRESS_VALUE = NDalicPINVOKE.ProgressBar_Property_PROGRESS_VALUE_get(); internal static readonly int SECONDARY_PROGRESS_VALUE = NDalicPINVOKE.ProgressBar_Property_SECONDARY_PROGRESS_VALUE_get(); internal static readonly int INDETERMINATE = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_get(); internal static readonly int TRACK_VISUAL = NDalicPINVOKE.ProgressBar_Property_TRACK_VISUAL_get(); internal static readonly int PROGRESS_VISUAL = NDalicPINVOKE.ProgressBar_Property_PROGRESS_VISUAL_get(); internal static readonly int SECONDARY_PROGRESS_VISUAL = NDalicPINVOKE.ProgressBar_Property_SECONDARY_PROGRESS_VISUAL_get(); internal static readonly int INDETERMINATE_VISUAL = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_VISUAL_get(); internal static readonly int INDETERMINATE_VISUAL_ANIMATION = NDalicPINVOKE.ProgressBar_Property_INDETERMINATE_VISUAL_ANIMATION_get(); internal static readonly int LABEL_VISUAL = NDalicPINVOKE.ProgressBar_Property_LABEL_VISUAL_get(); } /// /// Creates the ProgressBar. /// public ProgressBar() : this(NDalicPINVOKE.ProgressBar_New(), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } internal ProgressBarValueChangedSignal ValueChangedSignal() { ProgressBarValueChangedSignal ret = new ProgressBarValueChangedSignal(NDalicPINVOKE.ProgressBar_ValueChangedSignal(swigCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// The progress value of the progress bar, the progress runs from 0 to 1.
/// If the value is set to 0, then the progress bar will be set to beginning.
/// If the value is set to 1, then the progress bar will be set to end.
/// Any value outside the range is ignored.
///
public float ProgressValue { get { float temp = 0.0f; GetProperty(ProgressBar.Property.PROGRESS_VALUE).Get(out temp); return temp; } set { SetProperty(ProgressBar.Property.PROGRESS_VALUE, new Tizen.NUI.PropertyValue(value)); } } /// /// The secondary progress value of the progress bar, the secondary progress runs from 0 to 1.
/// Optional. If not supplied, the default is 0.
/// If the value is set to 0, then the progress bar will be set secondary progress to beginning.
/// If the value is set to 1, then the progress bar will be set secondary progress to end.
/// Any value outside of the range is ignored.
///
public float SecondaryProgressValue { get { float temp = 0.0f; GetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VALUE).Get(out temp); return temp; } set { SetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VALUE, new Tizen.NUI.PropertyValue(value)); } } /// /// Sets the progress bar as \e indeterminate state. /// public bool Indeterminate { get { bool temp = false; GetProperty(ProgressBar.Property.INDETERMINATE).Get(out temp); return temp; } set { SetProperty(ProgressBar.Property.INDETERMINATE, new Tizen.NUI.PropertyValue(value)); } } /// /// The track visual value of progress bar, it's full progress area, and it's shown behind the PROGRESS_VISUAL.
/// Optional. If not supplied, the default track visual will be shown.
///
public Tizen.NUI.PropertyMap TrackVisual { get { Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap(); GetProperty(ProgressBar.Property.TRACK_VISUAL).Get(temp); return temp; } set { SetProperty(ProgressBar.Property.TRACK_VISUAL, new Tizen.NUI.PropertyValue(value)); } } /// /// The progress visual value of the progress bar, the size of the progress visual is changed based on the PROGRESS_VALUE.
/// Optional. If not supplied, then the default progress visual will be shown.
///
public Tizen.NUI.PropertyMap ProgressVisual { get { Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap(); GetProperty(ProgressBar.Property.PROGRESS_VISUAL).Get(temp); return temp; } set { SetProperty(ProgressBar.Property.PROGRESS_VISUAL, new Tizen.NUI.PropertyValue(value)); } } /// /// The secondary progress visual of the progress bar, the size of the secondary progress visual is changed based on the SECONDARY_PROGRESS_VALUE.
/// Optional. If not supplied, then the secondary progress visual will not be shown.
///
public Tizen.NUI.PropertyMap SecondaryProgressVisual { get { Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap(); GetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VISUAL).Get(temp); return temp; } set { SetProperty(ProgressBar.Property.SECONDARY_PROGRESS_VISUAL, new Tizen.NUI.PropertyValue(value)); } } /// /// The indeterminate visual of the progress bar.
/// Optional. If not supplied, then the default indeterminate visual will be shown.
///
public Tizen.NUI.PropertyMap IndeterminateVisual { get { Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap(); GetProperty(ProgressBar.Property.INDETERMINATE_VISUAL).Get(temp); return temp; } set { SetProperty(ProgressBar.Property.INDETERMINATE_VISUAL, new Tizen.NUI.PropertyValue(value)); } } /// /// The transition data for the indeterminate visual animation.
/// Optional. If not supplied, then the default animation will be played.
///
public Tizen.NUI.PropertyArray IndeterminateVisualAnimation { get { Tizen.NUI.PropertyArray temp = new Tizen.NUI.PropertyArray(); GetProperty(ProgressBar.Property.INDETERMINATE_VISUAL_ANIMATION).Get(temp); return temp; } set { SetProperty(ProgressBar.Property.INDETERMINATE_VISUAL_ANIMATION, new Tizen.NUI.PropertyValue(value)); } } /// /// The label visual of the progress bar. /// public Tizen.NUI.PropertyMap LabelVisual { get { Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap(); GetProperty(ProgressBar.Property.LABEL_VISUAL).Get(temp); return temp; } set { SetProperty(ProgressBar.Property.LABEL_VISUAL, new Tizen.NUI.PropertyValue(value)); } } } }