73 lines
2.4 KiB
C#
73 lines
2.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text.Json;
|
|
using ShortcutsHelper.Models;
|
|
|
|
namespace ShortcutsHelper.Services
|
|
{
|
|
public class ConfigurationService
|
|
{
|
|
private const string ConfigFileName = "shortcuts_config.json";
|
|
private static string ConfigFilePath => Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "ShortcutsHelper", ConfigFileName);
|
|
|
|
public AppConfiguration LoadConfiguration()
|
|
{
|
|
try
|
|
{
|
|
if (File.Exists(ConfigFilePath))
|
|
{
|
|
string json = File.ReadAllText(ConfigFilePath);
|
|
return JsonSerializer.Deserialize<AppConfiguration>(json) ?? new AppConfiguration();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"Error al cargar configuración: {ex.Message}");
|
|
}
|
|
|
|
return new AppConfiguration();
|
|
}
|
|
|
|
public void SaveConfiguration(AppConfiguration config)
|
|
{
|
|
try
|
|
{
|
|
string directory = Path.GetDirectoryName(ConfigFilePath)!;
|
|
if (!Directory.Exists(directory))
|
|
{
|
|
Directory.CreateDirectory(directory);
|
|
}
|
|
|
|
var options = new JsonSerializerOptions
|
|
{
|
|
WriteIndented = true
|
|
};
|
|
|
|
string json = JsonSerializer.Serialize(config, options);
|
|
File.WriteAllText(ConfigFilePath, json);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"Error al guardar configuración: {ex.Message}");
|
|
}
|
|
}
|
|
|
|
public ApplicationSettings GetApplicationSettings(AppConfiguration config, string applicationName)
|
|
{
|
|
if (config.Applications.TryGetValue(applicationName, out var settings))
|
|
{
|
|
return settings;
|
|
}
|
|
|
|
// Crear configuración por defecto para nueva aplicación
|
|
var defaultSettings = new ApplicationSettings();
|
|
config.Applications[applicationName] = defaultSettings;
|
|
return defaultSettings;
|
|
}
|
|
|
|
public void UpdateApplicationSettings(AppConfiguration config, string applicationName, ApplicationSettings settings)
|
|
{
|
|
config.Applications[applicationName] = settings;
|
|
}
|
|
}
|
|
} |