Files
ZuneShell.dll/UIX/Microsoft/Iris/RangedValue.cs
T

206 lines
6.2 KiB
C#
Raw Normal View History

// Decompiled with JetBrains decompiler
// Type: Microsoft.Iris.RangedValue
// Assembly: UIX, Version=4.8.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: A56C6C9D-B7F6-46A9-8BDE-B3D9B8D60B11
// Assembly location: C:\Program Files\Zune\UIX.dll
using Microsoft.Iris.Library;
using Microsoft.Iris.Markup;
using Microsoft.Iris.ModelItems;
using System;
using System.ComponentModel;
namespace Microsoft.Iris
{
public class RangedValue :
ModelItem,
IValueRange,
IModelItem,
INotifyPropertyChanged,
IModelItemOwner,
IUIRangedValue,
IUIValueRange,
INotifyObject,
AssemblyObjectProxyHelper.IFrameworkProxyObject,
AssemblyObjectProxyHelper.IAssemblyProxyObject,
IDisposableObject
{
private Microsoft.Iris.ModelItems.RangedValue _rangedValue;
private NotifyService _notifier = new NotifyService();
private CodeListeners _listeners;
public RangedValue(IModelItemOwner owner, string description)
: base(owner, description)
2021-04-02 19:10:51 -05:00
=> Initialize();
public RangedValue(IModelItemOwner owner)
2021-03-31 17:15:06 -05:00
: this(owner, null)
{
}
public RangedValue()
2021-03-31 17:15:06 -05:00
: this(null)
{
}
public float Value
{
get
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
return _rangedValue.Value;
}
set
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
_rangedValue.Value = value;
}
}
object IValueRange.Value
{
get
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
return ((IUIValueRange)_rangedValue).ObjectValue;
}
}
2021-04-02 19:10:51 -05:00
object IUIValueRange.ObjectValue => ((IUIValueRange)_rangedValue).ObjectValue;
public float MinValue
{
get
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
return _rangedValue.MinValue;
}
set
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
_rangedValue.MinValue = value <= (double)MaxValue ? value : throw new ArgumentException(InvariantString.Format("MinValue must be less than or equal to MaxValue. Value Supplied was {0}, MaxValue is {1}", value, MaxValue));
}
}
public float MaxValue
{
get
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
return _rangedValue.MaxValue;
}
set
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
_rangedValue.MaxValue = value >= (double)MinValue ? value : throw new ArgumentException(InvariantString.Format("MaxValue must be greater than or equal to MinValue. Value Supplied was {0}, MinValue is {1}", value, MinValue));
}
}
public float Step
{
get
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
return _rangedValue.Step;
}
set
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
_rangedValue.Step = value;
}
}
public float Range
{
get
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
return _rangedValue.Range;
}
}
public bool HasNextValue
{
get
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
return _rangedValue.HasNextValue;
}
}
public bool HasPreviousValue
{
get
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
return _rangedValue.HasPreviousValue;
}
}
public void NextValue()
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
_rangedValue.NextValue();
}
public void PreviousValue()
{
2021-04-02 19:10:51 -05:00
using (ThreadValidator)
_rangedValue.PreviousValue();
}
protected override void OnDispose(bool disposing)
{
base.OnDispose(disposing);
if (disposing)
{
2021-04-02 19:10:51 -05:00
_notifier.ClearListeners();
_listeners.Dispose(this);
}
2021-04-02 19:10:51 -05:00
_rangedValue = null;
}
2021-03-31 17:15:06 -05:00
object AssemblyObjectProxyHelper.IFrameworkProxyObject.FrameworkObject => this;
2021-03-31 17:15:06 -05:00
object AssemblyObjectProxyHelper.IAssemblyProxyObject.AssemblyObject => this;
private void Initialize()
{
2021-04-02 19:10:51 -05:00
_rangedValue = CreateInternalRangedValue();
Vector<Listener> listeners = new Vector<Listener>(7);
2021-04-02 19:10:51 -05:00
DelegateListener.OnNotifyCallback callback = new DelegateListener.OnNotifyCallback(OnInternalPropertyChanged);
2021-03-31 17:15:06 -05:00
listeners.Add(new DelegateListener(_rangedValue, NotificationID.MinValue, callback));
listeners.Add(new DelegateListener(_rangedValue, NotificationID.MaxValue, callback));
listeners.Add(new DelegateListener(_rangedValue, NotificationID.Step, callback));
listeners.Add(new DelegateListener(_rangedValue, NotificationID.Range, callback));
listeners.Add(new DelegateListener(_rangedValue, NotificationID.Value, callback));
listeners.Add(new DelegateListener(_rangedValue, NotificationID.HasPreviousValue, callback));
listeners.Add(new DelegateListener(_rangedValue, NotificationID.HasNextValue, callback));
2021-04-02 19:10:51 -05:00
_listeners = new CodeListeners(listeners);
_listeners.DeclareOwner(this);
}
internal virtual Microsoft.Iris.ModelItems.RangedValue CreateInternalRangedValue() => new Microsoft.Iris.ModelItems.RangedValue();
protected override void OnPropertyChanged(string property)
{
base.OnPropertyChanged(property);
2021-04-02 19:10:51 -05:00
_notifier.FireThreadSafe(property);
}
2021-04-02 19:10:51 -05:00
private void OnInternalPropertyChanged(DelegateListener listener) => FirePropertyChanged(listener.Watch);
void IDisposableObject.DeclareOwner(object owner)
{
}
void IDisposableObject.TransferOwnership(object owner)
{
}
2021-04-02 19:10:51 -05:00
void IDisposableObject.Dispose(object owner) => Dispose();
2021-04-02 19:10:51 -05:00
void INotifyObject.AddListener(Listener listener) => _notifier.AddListener(listener);
}
}