CtrEditor/DatosDeTrabajo.cs

92 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CtrEditor
{
public class DatosDeTrabajo
{
public Dictionary<string, string> Imagenes { get; private set; }
private MainViewModel _mainViewModel;
public DatosDeTrabajo()
{
Imagenes = new Dictionary<string, string>();
CargarImagenes(); // Inicializar la carga de imágenes basada en el directorio persistente
}
public void SetMainViewModel(MainViewModel mainViewModel)
{
_mainViewModel = mainViewModel;
}
public string ObtenerPathImagenConExtension(string key, string extension)
{
if (Imagenes.TryGetValue(key, out string imagePath))
{
string jsonPath = Path.ChangeExtension(imagePath, extension);
return jsonPath;
}
return null;
}
public string? ObtenerPathAllPages(string extension)
{
if (!string.IsNullOrEmpty(EstadoPersistente.Instance.directorio))
return Path.Combine(EstadoPersistente.Instance.directorio, "AllPages" + extension);
return null;
}
public void CargarImagenes()
{
Imagenes.Clear();
string folderPath = EstadoPersistente.Instance.directorio; // Usar directamente desde el Singleton
if (Directory.Exists(folderPath))
{
var archivosImagen = Directory.GetFiles(folderPath, "*.png"); // Ajustar para otros formatos si es necesario
foreach (var archivo in archivosImagen)
{
var nombreArchivo = Path.GetFileName(archivo);
if (!Imagenes.ContainsKey(nombreArchivo))
{
Imagenes[nombreArchivo] = archivo;
}
}
// Cargar datos de imágenes existentes desde archivos JSON
if (_mainViewModel != null)
{
CargarDatosImagenesExistentes();
}
}
}
private void CargarDatosImagenesExistentes()
{
foreach (var imageName in Imagenes.Keys)
{
string jsonPath = ObtenerPathImagenConExtension(imageName, ".json");
if (!string.IsNullOrEmpty(jsonPath) && File.Exists(jsonPath))
{
try
{
// Solo cargamos los datos de imagen si existe el archivo JSON
// El StateSerializer se encargará de cargar los datos completos
_mainViewModel.GetOrCreateImageData(imageName);
}
catch (Exception ex)
{
// Log del error pero no fallar la carga completa
System.Diagnostics.Debug.WriteLine($"Error al pre-cargar datos de imagen {imageName}: {ex.Message}");
}
}
}
}
}
}