Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        /// <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);
                }
            }
        }