mlaumcherb/Млаумчерб.Клиент/Настройки.cs
2024-09-29 08:21:48 +05:00

52 lines
2.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DTLib.Extensions;
using Млаумчерб.Клиент.видимое;
namespace Млаумчерб.Клиент;
public record Настройки
{
public string имя_пользователя { get; set; } = "";
public int выделенная_память_мб { get; set; } = 4096;
public bool открыватьаесь_экран { get; set; }
public string путь_к_кубачу { get; set; } = ".";
public bool скачатьабу { get; set; } = true;
public string? последняяапущенная_версия { get; set; }
[JsonIgnore] private Stream? fileWriteStream;
public static Настройки ЗагрузитьИзФайла(string имяайла = "млаумчерб.настройки")
{
Приложение.Логгер.LogInfo(nameof(Настройки), $"загружаются настройки из файла '{имя_файла}'");
if(!File.Exists(имяайла))
{
Приложение.Логгер.LogInfo(nameof(Настройки), "файл не существует");
return new Настройки();
}
string текст = File.ReadAllText(имяайла);
Настройки? н = JsonConvert.DeserializeObject<Настройки>(текст);
if (н == null)
{
File.Move(имяайла, имяайла + ".старые", true);
Ошибки.ПоказатьСообщение("Настройки", $"Не удалось прочитать настройки.\n" +
$"Сломанный файл настроек переименован в '{имя_файла}.старые'.\n" +
$"Создаётся новый файл '{имя_файла}'.");
н = new Настройки();
н.СохранитьВФайл();
}
Приложение.Логгер.LogInfo(nameof(Настройки), $"настройки загружены: {н}");
return н;
}
public void СохранитьВФайл(string имяайла = "млаумчерб.настройки")
{
//TODO: file backup and restore
Приложение.Логгер.LogDebug(nameof(Настройки), $"настройки сохраняются в файл '{имя_файла}'");
fileWriteStream ??= File.OpenWrite(имяайла);
var текст = JsonConvert.SerializeObject(this, Formatting.Indented);
fileWriteStream.Seek(0, SeekOrigin.Begin);
fileWriteStream.FluentWriteString(текст).Flush();
Приложение.Логгер.LogDebug(nameof(Настройки), $"настройки сохранены: {текст}");
}
}