public void removeMedia(AbMediaContent media)
        {
            MediaContentType mediaType = media.mediaType;

            if (mediaBoxes.ContainsKey(mediaType))
            {
                MediaCountBox mediaBox = mediaBoxes[mediaType];

                mediaBox.removeMedia(media);
                if (mediaBox.isOpen)
                {
                    Remove(media);
                }

                // Remove empty media boxes
                if (mediaBox.mediaCount == 0)
                {
                    Remove(mediaBox);
                    mediaBox.isOpen = false;
                }
            }

            else
            {
                Remove(media);
            }
        }
        public void addNewMedia(AbMediaContent media)
        {
            MediaContentType mediaType = media.mediaType;

            if (mediaBoxes.ContainsKey(mediaType))
            {
                MediaCountBox mediaBox = mediaBoxes[mediaType];

                mediaBox.addNewMedia(media);
                if (mediaBox.isOpen)
                {
                    Insert(IndexOf(mediaBox) + 1, media);
                }

                //Create media box if not present
                if (mediaBox.mediaCount == 1)
                {
                    Insert(getMediaBoxIndex(mediaType), mediaBox);
                }
            }

            else
            {
                Insert(getMediaIndex(), media);
            }
        }
        public DayMediaObservableCollection(DateTime date, List <AbMediaContent> mediaList) : base()
        {
            this.date = date;

            mediaBoxes = new Dictionary <MediaContentType, MediaCountBox>();

            // Create audio count box
            List <AbMediaContent> audioList = mediaList.Where
                                                  (media =>
                                                  media.mediaType == MediaContentType.Audio).ToList <AbMediaContent>();
            MediaCountBox audioBox = new MediaCountBox("AudioFileIcon.png", audioList, this);

            this.mediaBoxes.Add(MediaContentType.Audio, audioBox);

            if (audioBox.mediaCount > 0)
            {
                Add(audioBox);
            }

            /// TODO SLOW OPERATION

            // Create note count box
            List <AbMediaContent> noteList = mediaList.Where
                                                 (media =>
                                                 media.mediaType == MediaContentType.Note).ToList <AbMediaContent>();
            MediaCountBox noteBox = new MediaCountBox("NoteFileIcon.png", noteList, this);

            this.mediaBoxes.Add(MediaContentType.Note, noteBox);

            if (noteBox.mediaCount > 0)
            {
                Add(noteBox);
            }

            // Create contact count box
            List <AbMediaContent> contactList = mediaList.Where
                                                    (media =>
                                                    media.mediaType == MediaContentType.Contact).ToList <AbMediaContent>();
            MediaCountBox contactBox = new MediaCountBox("ContactMediaIcon.png", contactList, this);

            this.mediaBoxes.Add(MediaContentType.Contact, contactBox);

            if (contactBox.mediaCount > 0)
            {
                Add(contactBox);
            }


            this.mediaList = mediaList.Where
                                 (media =>
                                 media.mediaType == MediaContentType.Image ||
                                 media.mediaType == MediaContentType.Video).ToList <AbMediaContent>();


            AddRange(this.mediaList);
        }
 public void toggleMediaBoxOpen(MediaCountBox mediaBox)
 {
     if (mediaBox.isOpen)
     {
         int mediaBoxIndex = this.IndexOf(mediaBox) + 1;
         addRange(mediaBoxIndex, mediaBox.mediaList);
     }
     else
     {
         removeRange(mediaBox.mediaList);
     }
 }
        private int getIndexAfterMediaBox(MediaContentType mediaType)
        {
            MediaCountBox mediaBox = mediaBoxes[mediaType];

            if (mediaBox.mediaCount > 0)
            {
                int mediaBoxIndex = IndexOf(mediaBox);
                if (mediaBox.isOpen)
                {
                    return(mediaBoxIndex + mediaBox.mediaCount + 1);
                }
                else
                {
                    return(mediaBoxIndex + 1);
                }
            }
            return(0);
        }