// -----------------------------------------------------------------------
//
// Copyright 2014 MIT Licence. See licence.md for more information.
//
// -----------------------------------------------------------------------
namespace Perspex
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Disposables;
internal class PriorityValue : IObservable>
{
private object localValue = PerspexProperty.UnsetValue;
private IDisposable localBinding;
private object lastValue = PerspexProperty.UnsetValue;
private List styles = new List();
private List>> observers =
new List>>();
private int defer;
private bool dirty;
public object LocalValue
{
get
{
return this.localValue;
}
set
{
if (!object.Equals(this.localValue, value))
{
this.localValue = value;
this.Push();
}
}
}
public void ClearLocalBinding()
{
if (this.localBinding != null)
{
this.localBinding.Dispose();
}
}
public void SetLocalValue(object value)
{
if (this.localBinding != null)
{
this.localBinding.Dispose();
}
this.LocalValue = value;
}
public void SetLocalBinding(IObservable