/// <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;
 }
Exemple #10
0
 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);
 }