public void LoadSet(string SetCode) { var existingSet = setListView.Objects.Cast <OLVSetItem>().FirstOrDefault(x => x.CardSet.Code == SetCode); var selectedSet = setListView.SelectedObject as OLVSetItem; if (existingSet != null) { var existingCards = cardListView.Objects.Cast <OLVCardItem>().Where(x => x.MagicCard.SetCode == SetCode).ToArray(); foreach (var card in existingCards) { Globals.Collections.MagicCardCache.Remove(card.MagicCard.uuid); } setListView.RemoveObject(existingSet); cardListView.RemoveObjects(existingCards); } using (var context = new MyDbContext()) { var dbSet = (from s in context.Sets where s.Code == SetCode select s).FirstOrDefault(); if (dbSet != null) { var set = new OLVSetItem(dbSet); var cards = from c in context.Catalog where c.SetCode == SetCode orderby new AlphaNumericString(c.number), c.name select c; foreach (var card in cards) { card.DisplayName = card.name; set.AddCard(card); } set.CollapseParts(); set.BuildRarityItems(); setListView.AddObject(set); cardListView.AddObjects(set.Cards); foreach (var card in set.Cards) { Globals.Collections.MagicCardCache.Add(card.MagicCard.uuid, card.MagicCard); } if (setListView.Objects.Count() == 1) // first set added, must sort the tree { setListView.Sort(setListView.AllColumns[1], SortOrder.Descending); } SetItems.Add(set); } } if (selectedSet != null) { setListView.SelectedObject = setListView.Objects.Cast <OLVSetItem>().FirstOrDefault(x => x.CardSet.Code == selectedSet.CardSet.Code); } }
public void LoadSets() { setListView.CanExpandGetter = x => x is OLVSetItem; setListView.ChildrenGetter = x => (x as OLVSetItem).Rarities; var renderer = setListView.TreeColumnRenderer; renderer.IsShowLines = false; renderer.UseTriangles = true; sets = new Dictionary <string, OLVSetItem>(); using (var context = new MyDbContext()) { var dbSets = from s in context.Sets orderby s.Name select s; var cards = from c in context.Catalog orderby c.Edition, new AlphaNumericString(c.number), c.name select c; foreach (var card in cards) { card.DisplayName = card.name; if (!sets.TryGetValue(card.Edition, out OLVSetItem set)) { set = new OLVSetItem(dbSets.FirstOrDefault(x => x.Name == card.Edition)); sets.Add(card.Edition, set); } set.AddCard(card); Globals.Collections.MagicCardCache.Add(card.uuid, card); } } CollapseParts(sets); foreach (var set in sets.Values) { set.BuildRarityItems(); } SetItems.AddRange(sets.Values); }