Files
VNCServerList/Services/SettingsService.cs
backuppc d537030eb3 ..
2025-07-07 17:44:59 +09:00

88 lines
3.1 KiB
C#

using System;
using System.IO;
using Newtonsoft.Json;
using VNCServerList.Models;
namespace VNCServerList.Services
{
public class SettingsService
{
private readonly string _settingsFilePath;
private AppSettings _settings;
public SettingsService()
{
_settingsFilePath = Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
"VNCServerList",
"settings.json"
);
LoadSettings();
}
public AppSettings GetSettings()
{
return _settings;
}
public void SaveSettings(AppSettings settings)
{
_settings = settings;
// 디버깅용 로그
System.Diagnostics.Debug.WriteLine($"설정 저장 시작: 파일 경로={_settingsFilePath}");
System.Diagnostics.Debug.WriteLine($"저장할 설정: VNCViewerPath={settings.VNCViewerPath}, WebServerPort={settings.WebServerPort}");
// 디렉토리가 없으면 생성
var directory = Path.GetDirectoryName(_settingsFilePath);
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
System.Diagnostics.Debug.WriteLine($"디렉토리 생성: {directory}");
}
// JSON으로 직렬화하여 저장
var json = JsonConvert.SerializeObject(settings, Formatting.Indented);
System.Diagnostics.Debug.WriteLine($"JSON 데이터: {json}");
File.WriteAllText(_settingsFilePath, json);
System.Diagnostics.Debug.WriteLine("설정 파일 저장 완료");
}
private void LoadSettings()
{
try
{
System.Diagnostics.Debug.WriteLine($"설정 로드 시작: 파일 경로={_settingsFilePath}");
if (File.Exists(_settingsFilePath))
{
var json = File.ReadAllText(_settingsFilePath);
System.Diagnostics.Debug.WriteLine($"읽은 JSON: {json}");
_settings = JsonConvert.DeserializeObject<AppSettings>(json);
System.Diagnostics.Debug.WriteLine($"로드된 설정: VNCViewerPath={_settings.VNCViewerPath}, WebServerPort={_settings.WebServerPort}");
}
else
{
System.Diagnostics.Debug.WriteLine("설정 파일이 없어서 기본값으로 초기화");
_settings = new AppSettings();
SaveSettings(_settings);
}
}
catch (Exception ex)
{
// 설정 파일 로드 실패 시 기본값 사용
System.Diagnostics.Debug.WriteLine($"설정 로드 오류: {ex.Message}");
_settings = new AppSettings();
}
}
public void UpdateVNCViewerPath(string path)
{
_settings.VNCViewerPath = path;
SaveSettings(_settings);
}
}
}