/*
* Copyright(c) 2018 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.
*
*/
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using Tizen.NUI.BaseComponents;
using Tizen.NUI.Binding;
namespace Tizen.NUI.UIComponents
{
///
/// The ProgressBar is a control to give the user an indication of the progress of an operation.
///
/// 3
public class ProgressBar : View
{
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty ProgressValueProperty = BindableProperty.Create("ProgressValue", typeof(float), typeof(ProgressBar), default(float), propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.PROGRESS_VALUE, new Tizen.NUI.PropertyValue((float)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
float temp = 0.0f;
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.PROGRESS_VALUE).Get(out temp);
return temp;
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty SecondaryProgressValueProperty = BindableProperty.Create("SecondaryProgressValue", typeof(float), typeof(ProgressBar), default(float), propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.SECONDARY_PROGRESS_VALUE, new Tizen.NUI.PropertyValue((float)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
float temp = 0.0f;
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.SECONDARY_PROGRESS_VALUE).Get(out temp);
return temp;
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty IndeterminateProperty = BindableProperty.Create("Indeterminate", typeof(bool), typeof(ProgressBar), false, propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.INDETERMINATE, new Tizen.NUI.PropertyValue((bool)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
bool temp = false;
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.INDETERMINATE).Get(out temp);
return temp;
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty TrackVisualProperty = BindableProperty.Create("TrackVisual", typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.TRACK_VISUAL, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.TRACK_VISUAL).Get(temp);
return temp;
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty ProgressVisualProperty = BindableProperty.Create("ProgressVisual", typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.PROGRESS_VISUAL, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.PROGRESS_VISUAL).Get(temp);
return temp;
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty SecondaryProgressVisualProperty = BindableProperty.Create("SecondaryProgressVisual", typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.SECONDARY_PROGRESS_VISUAL, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.SECONDARY_PROGRESS_VISUAL).Get(temp);
return temp;
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty IndeterminateVisualProperty = BindableProperty.Create("IndeterminateVisual", typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.INDETERMINATE_VISUAL, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.INDETERMINATE_VISUAL).Get(temp);
return temp;
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty IndeterminateVisualAnimationProperty = BindableProperty.Create("IndeterminateVisualAnimation", typeof(PropertyArray), typeof(ProgressBar), new PropertyArray(), propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.INDETERMINATE_VISUAL_ANIMATION, new Tizen.NUI.PropertyValue((PropertyArray)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
Tizen.NUI.PropertyArray temp = new Tizen.NUI.PropertyArray();
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.INDETERMINATE_VISUAL_ANIMATION).Get(temp);
return temp;
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
public static readonly BindableProperty LabelVisualProperty = BindableProperty.Create("LabelVisual", typeof(PropertyMap), typeof(ProgressBar), new PropertyMap(), propertyChanged: (bindable, oldValue, newValue) =>
{
var progressBar = (ProgressBar)bindable;
if (newValue != null)
{
Tizen.NUI.Object.SetProperty(progressBar.swigCPtr, ProgressBar.Property.LABEL_VISUAL, new Tizen.NUI.PropertyValue((PropertyMap)newValue));
}
},
defaultValueCreator: (bindable) =>
{
var progressBar = (ProgressBar)bindable;
Tizen.NUI.PropertyMap temp = new Tizen.NUI.PropertyMap();
Tizen.NUI.Object.GetProperty(progressBar.swigCPtr, ProgressBar.Property.LABEL_VISUAL).Get(temp);
return temp;
});
private global::System.Runtime.InteropServices.HandleRef swigCPtr;
private EventHandler _progressBarValueChangedEventHandler;
private ValueChangedCallbackDelegate _progressBarValueChangedCallbackDelegate;
///
/// Creates the ProgressBar.
///
/// 3
public ProgressBar() : this(Interop.ProgressBar.ProgressBar_New(), true)
{
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
}
internal ProgressBar(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.ProgressBar.ProgressBar_SWIGUpcast(cPtr), cMemoryOwn)
{
swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
}
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
private delegate void ValueChangedCallbackDelegate(IntPtr progressBar, float progressValue, float secondaryProgressValue);
///
/// The event is sent when the ProgressBar value changes.
///
/// 3
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);
}
}
}
///
/// 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.
///
/// 3
public float ProgressValue
{
get
{
return (float)GetValue(ProgressValueProperty);
}
set
{
SetValue(ProgressValueProperty, 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.
///
/// 3
public float SecondaryProgressValue
{
get
{
return (float)GetValue(SecondaryProgressValueProperty);
}
set
{
SetValue(SecondaryProgressValueProperty, value);
}
}
///
/// Sets the progress bar as \e indeterminate state.
///
/// 3
public bool Indeterminate
{
get
{
return (bool)GetValue(IndeterminateProperty);
}
set
{
SetValue(IndeterminateProperty, 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.
///
/// 3
public Tizen.NUI.PropertyMap TrackVisual
{
get
{
return (PropertyMap)GetValue(TrackVisualProperty);
}
set
{
SetValue(TrackVisualProperty, 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.
///
/// 3
public Tizen.NUI.PropertyMap ProgressVisual
{
get
{
return (PropertyMap)GetValue(ProgressVisualProperty);
}
set
{
SetValue(ProgressVisualProperty, 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.
///
/// 3
public Tizen.NUI.PropertyMap SecondaryProgressVisual
{
get
{
return (PropertyMap)GetValue(SecondaryProgressVisualProperty);
}
set
{
SetValue(SecondaryProgressVisualProperty, value);
}
}
///
/// The indeterminate visual of the progress bar.
/// Optional. If not supplied, then the default indeterminate visual will be shown.
///
/// 3
public Tizen.NUI.PropertyMap IndeterminateVisual
{
get
{
return (PropertyMap)GetValue(IndeterminateVisualProperty);
}
set
{
SetValue(IndeterminateVisualProperty, value);
}
}
///
/// The transition data for the indeterminate visual animation.
/// Optional. If not supplied, then the default animation will be played.
///
/// 3
public Tizen.NUI.PropertyArray IndeterminateVisualAnimation
{
get
{
return (PropertyArray)GetValue(IndeterminateVisualAnimationProperty);
}
set
{
SetValue(IndeterminateVisualAnimationProperty, value);
}
}
///
/// The label visual of the progress bar.
///
/// 3
public Tizen.NUI.PropertyMap LabelVisual
{
get
{
return (PropertyMap)GetValue(LabelVisualProperty);
}
set
{
SetValue(LabelVisualProperty, value);
}
}
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;
}
internal ProgressBarValueChangedSignal ValueChangedSignal()
{
ProgressBarValueChangedSignal ret = new ProgressBarValueChangedSignal(Interop.ProgressBar.ProgressBar_ValueChangedSignal(swigCPtr), false);
if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
return ret;
}
///
/// To dispose the ProgressBar instance.
///
/// 3
protected override void Dispose(DisposeTypes type)
{
if (disposed)
{
return;
}
//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 (this != null && _progressBarValueChangedCallbackDelegate != null)
{
ValueChangedSignal().Disconnect(_progressBarValueChangedCallbackDelegate);
}
if (swigCPtr.Handle != global::System.IntPtr.Zero)
{
if (swigCMemOwn)
{
swigCMemOwn = false;
Interop.ProgressBar.delete_ProgressBar(swigCPtr);
}
swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
}
base.Dispose(type);
}
// 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);
}
}
///
/// Event arguments that passed via the ValueChangedEventArgs.
///
/// 3
public class ValueChangedEventArgs : EventArgs
{
private ProgressBar _progressBar;
private float _progressValue;
private float _secondaryProgressValue;
///
/// ProgressBar
///
/// 3
public ProgressBar ProgressBar
{
get
{
return _progressBar;
}
set
{
_progressBar = value;
}
}
///
/// The progress value of the progress bar, the progress runs from 0 to 1.
///
/// 3
public float ProgressValue
{
get
{
return _progressValue;
}
set
{
_progressValue = value;
}
}
///
/// The secondary progress value of the progress bar, the secondary progress runs from 0 to 1.
///
/// 3
public float SecondaryProgressValue
{
get
{
return _secondaryProgressValue;
}
set
{
_secondaryProgressValue = value;
}
}
}
internal new class Property
{
internal static readonly int PROGRESS_VALUE = Interop.ProgressBar.ProgressBar_Property_PROGRESS_VALUE_get();
internal static readonly int SECONDARY_PROGRESS_VALUE = Interop.ProgressBar.ProgressBar_Property_SECONDARY_PROGRESS_VALUE_get();
internal static readonly int INDETERMINATE = Interop.ProgressBar.ProgressBar_Property_INDETERMINATE_get();
internal static readonly int TRACK_VISUAL = Interop.ProgressBar.ProgressBar_Property_TRACK_VISUAL_get();
internal static readonly int PROGRESS_VISUAL = Interop.ProgressBar.ProgressBar_Property_PROGRESS_VISUAL_get();
internal static readonly int SECONDARY_PROGRESS_VISUAL = Interop.ProgressBar.ProgressBar_Property_SECONDARY_PROGRESS_VISUAL_get();
internal static readonly int INDETERMINATE_VISUAL = Interop.ProgressBar.ProgressBar_Property_INDETERMINATE_VISUAL_get();
internal static readonly int INDETERMINATE_VISUAL_ANIMATION = Interop.ProgressBar.ProgressBar_Property_INDETERMINATE_VISUAL_ANIMATION_get();
internal static readonly int LABEL_VISUAL = Interop.ProgressBar.ProgressBar_Property_LABEL_VISUAL_get();
}
}
}