Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        public void Clear()
        {
            //clear collections
            _elementsMap.Clear();
            _elementsList.Clear();

            //rise clear event
            OnCollectionChanged?.Invoke(NotifySetChangedEventArgs <T> .ConstructClear());
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        /// <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>);
                }
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        /// <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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 13
0
        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();
            }
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
 protected override void SetItem(int index, PropertyTab item)
 {
     base.SetItem(index, item);
     OnCollectionChanged?.Invoke(this, EventArgs.Empty);
 }
Ejemplo n.º 16
0
 protected override void RemoveItem(int index)
 {
     base.RemoveItem(index);
     OnCollectionChanged?.Invoke(this, EventArgs.Empty);
 }
Ejemplo n.º 17
0
 protected override void ClearItems()
 {
     base.ClearItems();
     OnCollectionChanged?.Invoke(this, EventArgs.Empty);
 }
Ejemplo n.º 18
0
        public void Clear()
        {
            sprites.Clear();

            OnCollectionChanged?.Invoke(this, EventArgs.Empty);
        }