/// <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); }
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); }
/// <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(); }
/// <summary> /// Lanza el evento de reproducción de una lista /// </summary> private void RaiseEventPlay(MediaAlbumModel reproductionList) { Play?.Invoke(this, new EventArguments.ReproductionListEventArguments(reproductionList)); }
internal ReproductionListEventArguments(MediaAlbumModel album) { Album = album; }