コード例 #1
0
        private void AddTagsButtons_Click(object sender, EventArgs e)
        {
            var o = OriginTreeView;

            if (o.SelectedNode == null)
            {
                return;
            }

            CatAndTagsList filteredTags =
                sender == AndButton ? TagsFilter.AndTags :
                sender == OrButton ? TagsFilter.OrTags :
                TagsFilter.NotTags;

            // Parent node = category, child node = tag
            bool   isCategory = o.SelectedNode.Parent == null;
            string cat        = isCategory ? o.SelectedNode.Text : o.SelectedNode.Parent !.Text;

            CatAndTags?match = null;

            for (int i = 0; i < filteredTags.Count; i++)
            {
                if (filteredTags[i].Category == cat)
                {
                    match = filteredTags[i];
                }
            }
            if (match == null)
            {
                filteredTags.Add(new CatAndTags {
                    Category = cat
                });
                if (!isCategory)
                {
                    CatAndTags last = filteredTags[filteredTags.Count - 1];
                    last.Tags.Add(o.SelectedNode.Text);
                }
            }
            else
            {
                if (isCategory)
                {
                    match.Tags.Clear();
                }
                else
                {
                    string tag = o.SelectedNode.Text;
                    if (!match.Tags.ContainsI(tag))
                    {
                        match.Tags.Add(tag);
                    }
                }
            }

            FillTreeView(filteredTags);
        }
コード例 #2
0
ファイル: MiscTests.cs プロジェクト: maxigaz/AngelLoader
        public void UpdateFMTagsString_Test()
        {
            var fm = new FanMission();

            var cat1 = new CatAndTags {
                Category = "author"
            };

            cat1.Tags.Add("Tannar");
            cat1.Tags.Add("Random_Taffer");
            fm.Tags.Add(cat1);

            var cat2 = new CatAndTags {
                Category = "contest"
            };

            cat2.Tags.Add("10 rooms");
            fm.Tags.Add(cat2);

            var cat3 = new CatAndTags {
                Category = "length"
            };

            cat3.Tags.Add("short");
            fm.Tags.Add(cat3);

            var cat4 = new CatAndTags {
                Category = "series"
            };

            fm.Tags.Add(cat4);

            var cat5 = new CatAndTags {
                Category = "misc"
            };

            cat5.Tags.Add("campaign");
            cat5.Tags.Add("atmospheric");
            cat5.Tags.Add("other protagonist");
            cat5.Tags.Add("water");
            cat5.Tags.Add("thing_shaped");
            fm.Tags.Add(cat5);

            FMTags.UpdateFMTagsString(fm);

            Assert.Equal(
                "author:Tannar,author:Random_Taffer,contest:10 rooms,length:short,series,misc:campaign,misc:atmospheric,misc:other protagonist,misc:water,misc:thing_shaped",
                fm.TagsString);
        }