internal void BuildTreeNodes() { treeCategories.Clear(); allCategories = new Dictionary <string, IList <string> >(); List <string> rootCategories = new List <string>(); foreach (string imageName in ImageNames) { foreach (CategoryString category in Categories) { string categoryName = category.Name; IList <string> categoryContent; if (!allCategories.TryGetValue(categoryName, out categoryContent)) { categoryContent = new List <string>(); allCategories.Add(categoryName, categoryContent); } if (("_" + imageName + "_").Contains("_" + categoryName + "_")) { categoryContent.Add(imageName); } if (imageName.StartsWith(categoryName) && !rootCategories.Contains(categoryName)) { rootCategories.Add(categoryName); } } } List <string> simpleCategories = new List <string>(); foreach (KeyValuePair <string, IList <string> > category in allCategories) { if (category.Value.Count < 2) { simpleCategories.Add(category.Key); } } foreach (string category in simpleCategories) { CategoryString categoryString = null; foreach (CategoryString cat in Categories) { if (cat.Name == category) { categoryString = cat; break; } } Categories.Remove(categoryString); allCategories.Remove(category); if (rootCategories.Contains(category)) { rootCategories.Remove(category); } } ImagesGroupNode rootCategory = new ImagesGroupNode(this, null, ""); rootCategory.FillImageCategoriesTree(allCategories, ImageNames, rootCategories); ImageCategories.Add(rootCategory); }
internal void AddImageCategories(List <string> imageNames) { List <string> rootCategories = new List <string>(); foreach (string imageName in imageNames) { foreach (string category in imageName.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries)) { if (!rootCategories.Contains(category)) { rootCategories.Add(category); CategoryString categoryString = null; foreach (CategoryString cat in Categories) { if (cat.Name == category) { categoryString = cat; break; } } if (categoryString == null) { categoryString = new CategoryString(this, category); Categories.Add(categoryString); } } } } }