Example #1
0
 public void Subscibe(Action <T> obsever)
 {
     if (!ValueChangeAction.Contains(obsever))
     {
         ValueChangeAction.Add(obsever);
     }
 }
Example #2
0
    public void DoValueChange <T>(object keyObj, T prevValue, object prevData, T newValue, object newData, Action <T, object> setter, string valueName)
    {
        ValueChangeAction <T> desc = null;

        if (enableUndoRedo != 0)
        {
            desc         = new ValueChangeAction <T>(prevValue, newValue, setter, DateTime.Now, valueName);
            desc.oldData = prevData;
            desc.newData = newData;
            desc.Do();
            return;
        }

        // collapse into existing
        var collapsed = false;

        if (UndoStack.Count > 0)
        {
            var lastGroup = UndoStack.Peek();

            var currentTime = DateTime.Now;
            var diff        = (currentTime - lastGroup.LastActionTime).TotalMilliseconds;

            if (diff <= GroupingMS)
            {
                foreach (var action in lastGroup.Actions)
                {
                    var valueChange = action as ValueChangeAction <T>;
                    if (valueChange != null)
                    {
                        if (valueChange.KeyObj == keyObj && valueChange.ValueName == valueName)
                        {
                            valueChange.newVal  = newValue;
                            valueChange.newData = newData;
                            valueChange.Do();

                            lastGroup.LastActionTime = currentTime;

                            collapsed = true;
                        }
                    }
                }
            }
        }

        if (!collapsed)
        {
            desc         = new ValueChangeAction <T>(prevValue, newValue, setter, keyObj, valueName);
            desc.oldData = prevData;
            desc.newData = newData;

            AddUndoRedoAction(desc);
        }
    }
Example #3
0
 public void Clear()
 {
     _value = default(object);
     if (OnValueChanged != null)
     {
         OnValueChanged = null;
     }
     chlidCollection.Clear();
     if (OnChildValueChanged != null)
     {
         OnChildValueChanged = null;
     }
 }
Example #4
0
 public BindableProperty(object value, ValueChangeAction onValueChanged, ValueChangeAction onChildValueChanged)
 {
     if (value is IEnumerable)
     {
         Clear();
         OnValueChanged     += onValueChanged;
         Value               = value;
         OnChildValueChanged = onChildValueChanged;
         foreach (var item in value as IEnumerable)
         {
             BindableProperty bindableProperty = new BindableProperty(item, OnChildValueChanged);
             chlidCollection.Add(bindableProperty);
         }
     }
 }
Example #5
0
 private void Awake()
 {
     if (_S == null)
     {
         _S       = this;
         dateTime = new System.DateTime();
     }
     else
     {
         Destroy(this);
         return;
     }
     hour   = new ValueChangeAction <int>();
     minute = new ValueChangeAction <int>();
     second = new ValueChangeAction <int>();
 }
Example #6
0
    public void DoValueChange <T>(object keyObj, T prevValue, object prevData, T newValue, object newData, Action <T, object> setter, string valueName)
    {
        ValueChangeAction <T> desc = null;

        if (enableUndoRedo != 0)
        {
            desc         = new ValueChangeAction <T>(prevValue, newValue, setter, DateTime.Now, valueName);
            desc.oldData = prevData;
            desc.newData = newData;
            desc.Do();
            return;
        }

        string key = keyObj.GetHashCode().ToString() + valueName;

        if (ValueChangeDict.ContainsKey(key))
        {
            desc           = ValueChangeDict[key] as ValueChangeAction <T>;
            desc.newVal    = newValue;
            desc.newData   = newData;
            desc.timeStamp = DateTime.Now;
        }
        else
        {
            desc                 = new ValueChangeAction <T>(prevValue, newValue, setter, DateTime.Now, valueName);
            desc.oldData         = prevData;
            desc.newData         = newData;
            ValueChangeDict[key] = desc;
        }

        desc.Do();

        if (!valueTimer.Enabled)
        {
            valueTimer.Start();
        }
    }
Example #7
0
 public BindableProperty(object value, ValueChangeAction onValueChanged)
 {
     _value          = value;
     OnValueChanged += onValueChanged;
 }
Example #8
0
 public BindableProperty(ValueChangeAction onValueChanged)
 {
     OnValueChanged += onValueChanged;
 }
Example #9
0
 public void RemoveAllListeners()
 {
     OnValueChanged = null;
 }
Example #10
0
 public void RemoveListener(ValueChangeAction onValueChanged)
 {
     OnValueChanged -= onValueChanged;
 }
Example #11
0
 public void AddListener(ValueChangeAction onValueChanged)
 {
     OnValueChanged += onValueChanged;
 }