/// <summary> /// Adds a frame to the tag. /// </summary> /// <param name="newFrame">The frame to add.</param> public void AddFrame(ID3v2Frame newFrame) { if (newFrame == null) { throw new ArgumentNullException("newFrame"); } if (frames.ContainsKey(newFrame.Type)) { ID3v2Frame existingFrame = frames[newFrame.Type]; FrameComposite composite = existingFrame as FrameComposite; if (composite == null) { composite = new FrameComposite(existingFrame.Type); composite.AddFrame(existingFrame); frames.Remove(newFrame.Type); frames.Add(composite.Type, composite); } composite.AddFrame(newFrame); } else { frames.Add(newFrame.Type, newFrame); } }
private ID3v2Frame GetFirstFrame(FrameType frameType) { ID3v2Frame frame = null; if (frames.ContainsKey(frameType)) { frame = frames[frameType]; FrameComposite composite = frame as FrameComposite; if (composite != null) { frame = composite[0] as ID3v2Frame; } } return(frame); }
/// <summary> /// Removes a given frame from the tag. /// </summary> /// <param name="frame">The frame to remove.</param> public void RemoveFrame(ID3v2Frame frame) { if (frame == null) { throw new ArgumentNullException("frame"); } if (frames.ContainsKey(frame.Type)) { ID3v2Frame existingFrame = frames[frame.Type]; FrameComposite composite = existingFrame as FrameComposite; if (composite != null && composite != frame) { composite.RemoveFrame(frame); } else { frames.Remove(frame.Type); } } }