/// <summary>
        ///		Carga los archivos de un álbum
        /// </summary>
        private MediaFileModelCollection LoadFiles(MediaAlbumModel album, MLNode rootML)
        {
            var files = new MediaFileModelCollection();

            // Carga los archivos
            foreach (MLNode nodeML in rootML.Nodes)
            {
                if (nodeML.Name == TagFile)
                {
                    var file = new MediaFileModel();

                    // Carga los datos
                    file.Album       = album;
                    file.Name        = nodeML.Nodes[TagName].Value;
                    file.Description = nodeML.Nodes[TagDescription].Value;
                    file.CreatedAt   = nodeML.Attributes[TagCreatedAt].Value.GetDateTime(DateTime.Now);
                    file.Status      = nodeML.Attributes[TagStatus].Value.GetEnum(MediaFileModel.StatusFile.NotPlayed);
                    file.FileName    = nodeML.Nodes[TagFileName].Value;
                    file.Url         = nodeML.Nodes[TagUrl].Value;
                    // Añade el archivo
                    if (!string.IsNullOrEmpty(file.Url) || !string.IsNullOrEmpty(file.FileName))
                    {
                        files.Add(file);
                    }
                }
            }
            // Devuelve los archivos
            return(files);
        }
Beispiel #2
0
 public AlbumViewModel(MediaFolderModel parent, MediaAlbumModel album)
 {
     if (album == null)
     {
         _album        = new MediaAlbumModel();
         _album.Folder = parent;
     }
     else
     {
         _album = album;
     }
     InitProperties();
 }
        /// <summary>
        ///		Obtiene el nodo XML de un álbum
        /// </summary>
        private MLNode GetNode(MediaAlbumModel album)
        {
            MLNode nodeML = new MLNode(TagAlbum);

            // Añade los datos del nodo
            nodeML.Attributes.Add(TagId, album.GlobalId);
            nodeML.Nodes.Add(TagName, album.Name);
            nodeML.Nodes.Add(TagDescription, album.Description);
            nodeML.Nodes.Add(TagPath, album.Path);
            // Añade los nodos de los archivos
            nodeML.Nodes.AddRange(GetNodes(album.Files));
            // Devuelve el nodo
            return(nodeML);
        }
Beispiel #4
0
        /// <summary>
        ///		Trata el mensaje de añadir archivos
        /// </summary>
        private void TreatMessagePlayMedia(MessagePlayMedia message)
        {
            if (message.Files.Count > 0)
            {
                MediaAlbumModel album            = MainViewModel.MediaManager.File.SearchAlbumByName(message.Group);
                MediaAlbumModel reproductionList = new MediaAlbumModel
                {
                    Name = message.Group
                };

                // Agrega el álbum si no existía
                if (album == null)
                {
                    album = MainViewModel.MediaManager.File.Albums.Add(message.Group, string.Empty);
                }
                // Añade los archivos
                foreach (KeyValuePair <string, string> file in message.Files)
                {
                    MediaFileModel media = new MediaFileModel
                    {
                        Album = album
                    };

                    // Asigna las propiedades
                    media.Name = file.Key;
                    if (file.Value.StartsWith("http://", StringComparison.CurrentCultureIgnoreCase) ||
                        file.Value.StartsWith("https://", StringComparison.CurrentCultureIgnoreCase))
                    {
                        media.Url = file.Value;
                    }
                    else
                    {
                        media.FileName = file.Value;
                    }
                    // Añade el archivo al álbum
                    if (!album.Files.ExistsByFile(media))
                    {
                        album.Files.Add(media);
                    }
                    // Añade el archivo a la lista de reproducción
                    reproductionList.Files.Add(media);
                }
                // Graba el álbum y lanza el evento de reproducción de lista
                if (reproductionList.Files.Count > 0)
                {
                    MediaPlayerViewModel.Instance.MediaManager.Save();
                    RaiseEventPlay(reproductionList);
                }
            }
        }
        /// <summary>
        ///		Carga los datos de un blog
        /// </summary>
        private MediaAlbumModel LoadAlbums(MediaFolderModel parent, MLNode rootML)
        {
            var album = new MediaAlbumModel();

            // Carga los datos
            album.Folder      = parent;
            album.GlobalId    = rootML.Attributes[TagId].Value;
            album.Name        = rootML.Nodes[TagName].Value;
            album.Description = rootML.Nodes[TagDescription].Value;
            album.Path        = rootML.Nodes[TagPath].Value;
            // Asigna los archivos
            album.Files.AddRange(LoadFiles(album, rootML));
            // Devuelve los datos del blog
            return(album);
        }
        /// <summary>
        ///		Añade un álbum a la lista de reproducción
        /// </summary>
        private void AddAlbum(MediaAlbumModel album)
        {
            MediaAlbumModel newAlbum = ReproductionList.Albums.SearchByName(album.Name);

            // Si no se ha encontrado el archivo en la lista de reproducción, se añade
            if (newAlbum == null)
            {
                newAlbum = ReproductionList.Albums.Add(album.Name, album.Description);
            }
            // Añade los archivos
            foreach (MediaFileModel file in album.Files)
            {
                if (!newAlbum.Files.ExistsByFile(file))
                {
                    newAlbum.Files.Add(file);
                }
            }
            // Graba la lista de reproducción
            SaveReproductionList();
            // Muestra la lista de reproducción
            ShowReproductionList();
        }
Beispiel #7
0
 /// <summary>
 ///		Lanza el evento de reproducción de una lista
 /// </summary>
 private void RaiseEventPlay(MediaAlbumModel reproductionList)
 {
     Play?.Invoke(this, new EventArguments.ReproductionListEventArguments(reproductionList));
 }
Beispiel #8
0
 internal ReproductionListEventArguments(MediaAlbumModel album)
 {
     Album = album;
 }