2021-03-31 16:42:58 -05:00
// 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 ();
2021-03-31 16:42:58 -05:00
public RangedValue ( IModelItemOwner owner )
2021-03-31 17:15:06 -05:00
: this ( owner , null )
2021-03-31 16:42:58 -05:00
{
}
public RangedValue ()
2021-03-31 17:15:06 -05:00
: this ( null )
2021-03-31 16:42:58 -05:00
{
}
public float Value
{
get
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
return _rangedValue . Value ;
2021-03-31 16:42:58 -05:00
}
set
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
_rangedValue . Value = value ;
2021-03-31 16:42:58 -05:00
}
}
object IValueRange . Value
{
get
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
return (( IUIValueRange ) _rangedValue ). ObjectValue ;
2021-03-31 16:42:58 -05:00
}
}
2021-04-02 19:10:51 -05:00
object IUIValueRange . ObjectValue => (( IUIValueRange ) _rangedValue ). ObjectValue ;
2021-03-31 16:42:58 -05:00
public float MinValue
{
get
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
return _rangedValue . MinValue ;
2021-03-31 16:42:58 -05:00
}
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 ));
2021-03-31 16:42:58 -05:00
}
}
public float MaxValue
{
get
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
return _rangedValue . MaxValue ;
2021-03-31 16:42:58 -05:00
}
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 ));
2021-03-31 16:42:58 -05:00
}
}
public float Step
{
get
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
return _rangedValue . Step ;
2021-03-31 16:42:58 -05:00
}
set
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
_rangedValue . Step = value ;
2021-03-31 16:42:58 -05:00
}
}
public float Range
{
get
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
return _rangedValue . Range ;
2021-03-31 16:42:58 -05:00
}
}
public bool HasNextValue
{
get
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
return _rangedValue . HasNextValue ;
2021-03-31 16:42:58 -05:00
}
}
public bool HasPreviousValue
{
get
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
return _rangedValue . HasPreviousValue ;
2021-03-31 16:42:58 -05:00
}
}
public void NextValue ()
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
_rangedValue . NextValue ();
2021-03-31 16:42:58 -05:00
}
public void PreviousValue ()
{
2021-04-02 19:10:51 -05:00
using ( ThreadValidator )
_rangedValue . PreviousValue ();
2021-03-31 16:42:58 -05:00
}
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-03-31 16:42:58 -05:00
}
2021-04-02 19:10:51 -05:00
_rangedValue = null ;
2021-03-31 16:42:58 -05:00
}
2021-03-31 17:15:06 -05:00
object AssemblyObjectProxyHelper . IFrameworkProxyObject . FrameworkObject => this ;
2021-03-31 16:42:58 -05:00
2021-03-31 17:15:06 -05:00
object AssemblyObjectProxyHelper . IAssemblyProxyObject . AssemblyObject => this ;
2021-03-31 16:42:58 -05:00
private void Initialize ()
{
2021-04-02 19:10:51 -05:00
_rangedValue = CreateInternalRangedValue ();
2021-03-31 16:42:58 -05:00
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 );
2021-03-31 16:42:58 -05:00
}
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-03-31 16:42:58 -05:00
}
2021-04-02 19:10:51 -05:00
private void OnInternalPropertyChanged ( DelegateListener listener ) => FirePropertyChanged ( listener . Watch );
2021-03-31 16:42:58 -05:00
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-03-31 16:42:58 -05:00
2021-04-02 19:10:51 -05:00
void INotifyObject . AddListener ( Listener listener ) => _notifier . AddListener ( listener );
2021-03-31 16:42:58 -05:00
}
}