/// <summary> /// Procesa el manager de canales /// </summary> private void ProcessTrackManager(TrackManagerModel trackManager) { foreach (TrackModel track in trackManager.Tracks) { ProcessTrack(trackManager, track); } }
/// <summary> /// Carga las entradas de un archivo /// </summary> internal List <TrackManagerModel> Load(string fileName) { List <TrackManagerModel> trackManagers = new List <TrackManagerModel>(); MLFile fileML = new LibMarkupLanguage.Services.XML.XMLParser().Load(fileName); // Carga las entradas if (fileML != null) { foreach (MLNode rootML in fileML.Nodes) { if (rootML.Name == TagRoot) { foreach (MLNode nodeML in rootML.Nodes) { if (nodeML.Name == TagTrackManager) { TrackManagerModel manager = new TrackManagerModel(); // Carga los datos manager.Id = nodeML.Attributes[TagId].Value; manager.Title = nodeML.Nodes[TagName].Value; manager.Path = nodeML.Nodes[TagPath].Value; // Carga los canales manager.Tracks.AddRange(LoadTracks(nodeML)); // Añade el manager a la colección trackManagers.Add(manager); } } } } } // Devuelve los objetos return(trackManagers); }
/// <summary> /// Pega un canal a un manager de canales /// </summary> private void PasteTrackToTrackManager(TrackModel track, TrackManagerModel manager) { TrackModel newTrack = track.Clone(); // Limpia el ID del canal newTrack.Id = null; // Limpia los IDs foreach (CategoryModel category in track.Categories) { // Limpia el ID de la categoría category.Id = null; // Limpia los IDs de las entradas foreach (EntryModel entry in category.Entries) { entry.Id = null; } } // Añade el nuevo canal manager.Tracks.Add(newTrack); // Borra el canal inicial si se debía cortar if (MustCut) { manager.Tracks.Remove(track); } }
/// <summary> /// Procesa los administradores de canales o canales /// </summary> private void ProcessTracks() { if (SelectedNode != null) { if (SelectedNode?.Tag is TrackManagerModel trackManager) { // Procesa todas las pistas ProcessTrackManager(trackManager); // Mensaje para el usuario DevConferencesViewModel.Instance.ControllerWindow.ShowMessage("Ha finalizado el proceso de los canales"); } else { TrackManagerModel trackNodeManager = GetParentNodeOfType <TrackManagerModel>(); if (trackNodeManager != null) { TrackModel track = GetParentNodeOfType <TrackModel>(); // Procesa la pista if (track != null) { ProcessTrack(trackNodeManager, track); } // Mensaje para el usuario DevConferencesViewModel.Instance.ControllerWindow.ShowMessage("Ha finalizado el proceso de los canales"); } } } }
/// <summary> /// Abre el formulario de un canal /// </summary> private void OpenFormTrackManager(TrackManagerModel manager, bool isNew) { if (DevConferencesViewModel.Instance.ViewsController.OpenPropertiesTrackManager(new Projects.TrackManagerViewModel(manager)) == SystemControllerEnums.ResultType.Yes) { UpdateTracks(); } }
/// <summary> /// Carga los canales /// </summary> private void LoadTracks(TrackManagerModel manager) { // Ordena los canales manager.Tracks.Sort((first, second) => first.Title.CompareTo(second.Title)); // Añade los ndos foreach (TrackModel track in manager.Tracks) { AddNode(track.Title, track, true, true, MvvmColor.Red); } }
/// <summary> /// Borra los datos de un manager de canales /// </summary> private void DeleteTrackManager(TrackManagerModel trackManager) { if (DevConferencesViewModel.Instance.ControllerWindow.ShowQuestion($"¿Realmente desea eliminar el administrador de canales '{trackManager.Title}'?")) { // Borra el canal DevConferencesViewModel.Instance.TrackManager.RemoveTrackManager(trackManager); // Actualiza el árbol UpdateTracks(); } }
/// <summary> /// Abre el formulario de un proyecto /// </summary> private void OpenFormTrack(TrackModel track, bool isNew) { TrackManagerModel trackManager = GetParentNodeOfType <TrackManagerModel>(); if (trackManager != null && DevConferencesViewModel.Instance.ViewsController.OpenPropertiesTrack(new Projects.TrackViewModel(trackManager, track)) == SystemControllerEnums.ResultType.Yes) { UpdateTracks(); } }
public TrackManagerViewModel(TrackManagerModel model) { // Asigna el canal predeterminado si no se le ha pasado ninguno TrackManager = model; if (TrackManager == null) { TrackManager = new TrackManagerModel(); _isNew = true; } Name = TrackManager.Title; Path = TrackManager.Path; }
public TrackViewModel(TrackManagerModel trackManager, TrackModel model) { TrackManager = trackManager; Track = model; if (Track == null) { Track = new TrackModel(); _isNew = true; } // Inicializa las propiedades Name = Track.Title; Description = Track.Description; Url = Track.Url; Enabled = Track.Enabled; // Indica que no ha habido modificaciones IsUpdated = false; }
/// <summary> /// Procesa el canal /// </summary> private void ProcessTrack(TrackManagerModel trackManager, TrackModel track) { EntryModelCollection lastEntries = GetLastEntries(track); TrackModel trackCloned = track.Clone(); // Crea el directorio de destino LibCommonHelper.Files.HelperFiles.MakePath(trackManager.Path); // Borra las entradas que no estén entre las últimas foreach (CategoryModel category in trackCloned.Categories) { for (int index = category.Entries.Count - 1; index >= 0; index--) { if (lastEntries.FirstOrDefault(item => item.Id.EqualsIgnoreCase(category.Entries[index].Id)) == null) { category.Entries.RemoveAt(index); } } } // Graba las entradas LibCommonHelper.Files.HelperFiles.SaveTextFile(System.IO.Path.Combine(trackManager.Path, GetLocalFileName(track)), new DevConference.Application.FeedsManager().GetEntriesXml(trackCloned)); }
/// <summary> /// Elimina un administrador de canales /// </summary> public void RemoveTrackManager(TrackManagerModel trackManager) { TrackManagers.Remove(trackManager); }