示例#1
0
        private void UpdateIsFixed(object sender, PropertyChangedEventArgs e)
        {
            Clear();
            MultiTagItems.Clear();

            if (IsFixed.Value)
            {
                foreach (var fm in FixedMeanings)
                {
                    TagDescription desc = TagDescriptionMap.Instance[ID3.Version.v2_3];

                    Frame frame = new Frame(desc, fm);
                    FrameDescription.FrameType type = desc[fm].Type;

                    TagModelItem item = TagModelItemFactory.Create(type);
                    item.Frame = frame;

                    MultiTagModelItem mtmi = MultiTagModelItemFactory.Create(type);
                    mtmi.InitFixed(item);
                    MultiTagModelItems.Add(mtmi);
                }
            }

            adapter.UpdateItems();
        }
示例#2
0
        private void AddTagModelItem(TagModelItem tagModelItem)
        {
            MultiTagModelItem multiTagModelItem = FindBy(tagModelItem);

            if (Object.ReferenceEquals(multiTagModelItem, null) && !IsFixed.Value)
            {
                multiTagModelItem = MultiTagModelItemFactory.Create(tagModelItem.Frame.Description.Type);
                multiTagModelItem.BlockUpdates = BlockUpdates;
                MultiTagModelItems.Add(multiTagModelItem);
            }

            if (!Object.ReferenceEquals(multiTagModelItem, null))
            {
                int index = IsFixed.Value
                    ? TagModelList.SelectedModels.IndexOf(tagModelItem.TagModel)
                    : TagModelList.SelectedModels.IndexOfTagModelItemByFrameId(tagModelItem);

                int clippedIndex = Math.Min(index, multiTagModelItem.Items.Count);
                if (!multiTagModelItem.Items.Contains(tagModelItem))
                {
                    multiTagModelItem.Items.Insert(clippedIndex, tagModelItem);
                }
            }

            tagModelItemToTagModel[tagModelItem] = tagModelItem.TagModel;
        }
示例#3
0
        public void RemoveTagModel(TagModel tagModel)
        {
            tagModel.Items.CollectionChanged -= OnTagModelChanged;
            foreach (TagModelItem tagModelItem in tagModel.Items)
            {
                RemoveTagModelItem(tagModelItem);
            }
            TagModels.Remove(tagModel);

            if (TagModels.Count == 0)
            {
                MultiTagModelItems.ForEach(n => n.IsEnabled = false);
            }

            if (IsFixed.Value)
            {
                foreach (FrameMeaning meaning in FixedMeanings)
                {
                    if (tagModel.Supports(meaning) && !tagModel.Contains(meaning))
                    {
                        RemoveTagModelItem(FindTemplateItem(tagModel, meaning));
                    }
                }
            }
        }
示例#4
0
        public void AddTagModel(TagModel tagModel)
        {
            int count = TagModels.Count;

            TagModels.Add(tagModel);

            tagModel.Items.ForEach(n => AddTagModelItem(n));
            tagModel.Items.CollectionChanged += OnTagModelChanged;

            if (count == 0)
            {
                MultiTagModelItems.ForEach(n => n.IsEnabled = true);
            }

            if (IsFixed.Value)
            {
                foreach (FrameMeaning meaning in FixedMeanings)
                {
                    if (tagModel.Supports(meaning) && !tagModel.Contains(meaning))
                    {
                        AddTagModelItem(CreateTemplateItem(tagModel, meaning));
                    }
                }
            }
        }
示例#5
0
        public void Clear()
        {
            TagModels.ForEach(n => n.Items.CollectionChanged -= OnTagModelChanged);
            TagModels.Clear();

            if (IsFixed.Value)
            {
                MultiTagItems.ForEach(n => n.Items.Clear());
            }
            else
            {
                MultiTagItems.Clear();
            }

            MultiTagModelItems.ForEach(n => n.IsEnabled = false);

            tagModelItemToTagModel.Clear();
        }
示例#6
0
        private void RemoveTagModelItem(TagModelItem tagModelItem)
        {
            MultiTagModelItem multiItem = FindBy(tagModelItem);

            if (!Object.ReferenceEquals(multiItem, null))
            {
                multiItem.BlockUpdates = BlockUpdates;

                if (multiItem.Items.Contains(tagModelItem))
                {
                    multiItem.Items.Remove(tagModelItem);
                    tagModelItemToTagModel.Remove(tagModelItem);
                }

                if (multiItem.Items.Count == 0 && !IsFixed.Value)
                {
                    MultiTagModelItems.Remove(multiItem);
                }
            }
        }