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(); }
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; }
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)); } } } }
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)); } } } }
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(); }
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); } } }