Trigger Events After Action

This commit is contained in:
Mira 2022-10-03 12:56:31 +02:00
parent 6c31d2be44
commit 91659e56ba
Signed by untrusted user who does not match committer: Xorog
GPG key ID: 983798ED9C3E7C36

View file

@ -16,21 +16,8 @@ public class ObservableList<T> : IList<T>
public void Add(T item) public void Add(T item)
{ {
_ = Task.Run(() =>
{
this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T>
{
List = this,
NewItems = new List<T>() { item },
RemovedItems = null
});
});
_items.Add(item); _items.Add(item);
}
public void Insert(int index, T item)
{
_ = Task.Run(() => _ = Task.Run(() =>
{ {
this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T> this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T>
@ -40,12 +27,27 @@ public class ObservableList<T> : IList<T>
RemovedItems = null RemovedItems = null
}); });
}); });
}
public void Insert(int index, T item)
{
_items.Insert(index, item); _items.Insert(index, item);
_ = Task.Run(() =>
{
this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T>
{
List = this,
NewItems = new List<T>() { item },
RemovedItems = null
});
});
} }
public void Clear() public void Clear()
{ {
_items.Clear();
_ = Task.Run(() => _ = Task.Run(() =>
{ {
this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T> this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T>
@ -55,27 +57,29 @@ public class ObservableList<T> : IList<T>
RemovedItems = _items.ToList() RemovedItems = _items.ToList()
}); });
}); });
_items.Clear();
} }
public void RemoveAt(int index) public void RemoveAt(int index)
{ {
_ = Task.Run(() => ObservableListUpdate<T> e = new ObservableListUpdate<T>
{ {
this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T> List = this,
{ NewItems = null,
List = this, RemovedItems = new List<T>() { _items.ElementAt(index) }
NewItems = null, };
RemovedItems = new List<T>() { _items.ElementAt(index) }
});
});
_items.RemoveAt(index); _items.RemoveAt(index);
_ = Task.Run(() =>
{
this.ItemsChanged?.Invoke(null, e);
});
} }
public bool Remove(T item) public bool Remove(T item)
{ {
var v = _items.Remove(item);
_ = Task.Run(() => _ = Task.Run(() =>
{ {
this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T> this.ItemsChanged?.Invoke(null, new ObservableListUpdate<T>
@ -86,7 +90,7 @@ public class ObservableList<T> : IList<T>
}); });
}); });
return _items.Remove(item); return v;
} }
public bool Contains(T item) public bool Contains(T item)