public void Subscibe(Action <T> obsever) { if (!ValueChangeAction.Contains(obsever)) { ValueChangeAction.Add(obsever); } }
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); } }
public void Clear() { _value = default(object); if (OnValueChanged != null) { OnValueChanged = null; } chlidCollection.Clear(); if (OnChildValueChanged != null) { OnChildValueChanged = null; } }
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); } } }
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>(); }
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(); } }
public BindableProperty(object value, ValueChangeAction onValueChanged) { _value = value; OnValueChanged += onValueChanged; }
public BindableProperty(ValueChangeAction onValueChanged) { OnValueChanged += onValueChanged; }
public void RemoveAllListeners() { OnValueChanged = null; }
public void RemoveListener(ValueChangeAction onValueChanged) { OnValueChanged -= onValueChanged; }
public void AddListener(ValueChangeAction onValueChanged) { OnValueChanged += onValueChanged; }