コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                        }
                    }
                }
            }
        }