/// <summary> /// Invokes OnCollectionChanged event when ObservableCollection's event is invoked. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnCollectionChange_Event(object sender, NotifyCollectionChangedEventArgs e) { var newItems = new List <DownloadObject>(); var oldItems = new List <DownloadObject>(); if (e.NewItems != null) { newItems = CastToList(e.NewItems); foreach (var download in newItems.Where(x => x.Options.DownloadImmediately)) { _sourceHandler.RunSourceFromAddressLookup(download.InputAddress); } } if (e.OldItems != null) { oldItems = CastToList(e.OldItems); } OnCollectionChanged?.Invoke(this, new QueueCollectionChangedEventArgs <DownloadObject>(newItems, oldItems)); /// <summary> /// Local function to cast NotifyCollectionChangedEventArgs items to List of DownloadObject. /// </summary> List <DownloadObject> CastToList(System.Collections.IList collection) { var cast = collection.Cast <DownloadObject>().ToList(); return(new List <DownloadObject>(cast)); } }
private static async Task <bool> UpdateCollection(Key key, bool retry = true) { if (DateTime.Now - _lastUpdate < TimeSpan.FromSeconds(2) || key == null) { return(false); } Log.Info("Updating collection..."); _lastUpdate = DateTime.Now; var data = await Task.Run(() => new { Collection = Reflection.GetFullCollection(), BattleTag = Reflection.GetBattleTag() }); if (data.Collection?.Cards.Any() ?? false) { Collections[key] = new Collection(key.Item1, key.Item2, data.BattleTag, data.Collection); OnCollectionChanged?.Invoke(); Log.Info("Updated collection!"); return(true); } if (retry) { Log.Warn("No collection found, retrying..."); await Task.Delay(3000); return(await UpdateCollection(key, false)); } Log.Warn("No collection found"); return(false); }
/// <summary> /// Internal base method to add all elements in collection /// </summary> private void AddElementInternal(T item, T newItem, bool after) { //check elements CheckDuplicationItem(newItem); LinkedListNode <T> oldNode = GetExistEntry(item); //add element after LinkedListNode <T> newNode = new LinkedListNode <T>(newItem); //select to add first/last + add if (after) { _elementsList.AddAfter(oldNode, newNode); } else { _elementsList.AddBefore(oldNode, newNode); } _elementsMap.Add(newItem, newNode); //rise event var args = after ? NotifySetChangedEventArgs <T> .ConstructAddAfterAction(item, newItem) : NotifySetChangedEventArgs <T> .ConstructAddBeforeAction(item, newItem); OnCollectionChanged?.Invoke(args); }
private void BtnDelete_Click(object sender, EventArgs e) { if (AskBeforeDelete) { DialogResult dr = MessageBox.Show("Are you sure?", "Delete?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dr == DialogResult.Cancel) { return; } } _selectedObject = null; foreach (ListViewItem lvi in listViewSelected.SelectedItems) { var o = (Object)lvi.Tag; CollectionListBoxDeleteEventArgs ea = new CollectionListBoxDeleteEventArgs(o); OnDelete(this, ea); if (ea.Cancel) { return; } _collection.Remove(o); lvi.Remove(); OnCollectionChanged?.Invoke(this, new EventArgs()); } RaiseEventItemSelected(null); BuildCollectionList(); }
public void Clear() { //clear collections _elementsMap.Clear(); _elementsList.Clear(); //rise clear event OnCollectionChanged?.Invoke(NotifySetChangedEventArgs <T> .ConstructClear()); }
public void AddRange(IEnumerable <Sprite> sprites) { if (sprites == null) { throw new ArgumentNullException("sprites has null value!"); } this.sprites.AddRange(sprites); OnCollectionChanged?.Invoke(this, EventArgs.Empty); }
/// <summary> /// Automatically remove subscribers to OnCollectionChanged event handler, and unsubscribe internal OnCollectionChange_Event method. /// </summary> private void UnsubscribeEventListeners() { _queue.CollectionChanged -= OnCollectionChange_Event; if (OnCollectionChanged != null) { foreach (var subscriber in OnCollectionChanged.GetInvocationList()) { OnCollectionChanged -= (subscriber as QueueCollectionEventHandler <DownloadObject>); } } }
public void Add(Sprite sprite) { if (sprite == null) { throw new ArgumentNullException("sprite has null value!"); } sprites.Add(sprite); OnSpriteAdded?.Invoke(this, new SpriteEventArgs(sprite)); OnCollectionChanged?.Invoke(this, EventArgs.Empty); }
public System.Boolean Remove(Sprite sprite) { if (sprite == null) { throw new ArgumentNullException("sprite has null value!"); } if (sprites.Remove(sprite)) { OnSpriteRemoved?.Invoke(this, new SpriteEventArgs(sprite)); OnCollectionChanged?.Invoke(this, EventArgs.Empty); return(true); } return(false); }
/// <summary> /// Try add first element to collection /// </summary> private bool TryAddFirstInternal(T item) { //check count if (Count != 0) { return(false); } //check null item CheckNullElement(item); //add to collections LinkedListNode <T> newNode = _elementsList.AddFirst(item); _elementsMap.Add(item, newNode); //change event OnCollectionChanged?.Invoke(NotifySetChangedEventArgs <T> .ConstructAddFirst(item)); return(true); }
private void Add(Type addtype) { RaiseEventBeforeItemSelected(_selectedObject); var _obj = Activator.CreateInstance(addtype); if (CategoryProperty != null) { var _prop = _obj.GetType().GetProperty(CategoryProperty); if (_prop.CanWrite && _prop.PropertyType == typeof(string)) { _prop.SetValue(_obj, _lastCategory); } } CollectionListBoxEventArgs ea = new CollectionListBoxEventArgs(_obj); OnAdd?.Invoke(this, ea); if (ea.Canceled) { return; } _collection.Add(ea.Item); OnCollectionChanged?.Invoke(this, new EventArgs()); BuildCollectionList(); foreach (ListViewItem lvi in listViewSelected.Items) { if (lvi.Tag == ea.Item) { lvi.Selected = true; lvi.EnsureVisible(); ListViewClick(); } } listViewSelected.Focus(); }
private static async Task <bool> UpdateCollection(string key) { if (DateTime.Now - _lastUpdate < TimeSpan.FromSeconds(2) || key == null) { return(false); } Log.Info("Updating collection..."); _lastUpdate = DateTime.Now; var collection = await Task.Run(() => Reflection.GetCollection()?.GroupBy(x => x.Id) .ToDictionary(x => x.Key, x => x.Sum(c => c.Count))); if (collection?.Any() ?? false) { Collections[key] = collection; OnCollectionChanged?.Invoke(); Log.Info("Updated collection!"); return(true); } Log.Info("No collection found"); return(false); }
private void ToolStripButton1_Click(object sender, EventArgs e) { if (listViewSelected.SelectedItems.Count == 0) { return; } if (Copy != null) { CollectionListBoxEventArgs args = new CollectionListBoxEventArgs(listViewSelected.SelectedItems[0].Tag); Copy(this, args); _selectedObject = null; foreach (ListViewItem lvi in listViewSelected.SelectedItems) { Object o = (Object)lvi.Tag; _collection.Remove(o); lvi.Remove(); OnCollectionChanged?.Invoke(this, new EventArgs()); } RaiseEventItemSelected(null); BuildCollectionList(); } }
public bool Remove(T item) { //check element CheckNullElement(item); //check exist LinkedListNode <T> entry; if (!_elementsMap.TryGetValue(item, out entry)) { return(false); } //remove _elementsMap.Remove(item); _elementsList.Remove(entry.Value); //rise change event var args = NotifySetChangedEventArgs <T> .ConstructRemoveAction(item); OnCollectionChanged?.Invoke(args); return(true); }
protected override void SetItem(int index, PropertyTab item) { base.SetItem(index, item); OnCollectionChanged?.Invoke(this, EventArgs.Empty); }
protected override void RemoveItem(int index) { base.RemoveItem(index); OnCollectionChanged?.Invoke(this, EventArgs.Empty); }
protected override void ClearItems() { base.ClearItems(); OnCollectionChanged?.Invoke(this, EventArgs.Empty); }
public void Clear() { sprites.Clear(); OnCollectionChanged?.Invoke(this, EventArgs.Empty); }