HAcontrol/SettingsWindow.axaml.cs
2025-08-16 06:01:36 +02:00

59 lines
1.7 KiB
C#

using Avalonia.Controls;
using Avalonia.Interactivity;
using System;
using System.IO;
using System.Text.Json;
namespace HAcontrol;
public partial class SettingsWindow : Window
{
public static readonly string SettingsFile =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "ha_control_settings.json");
public SettingsWindow()
{
InitializeComponent();
LoadSettings();
}
private void LoadSettings()
{
if (File.Exists(SettingsFile))
{
var json = File.ReadAllText(SettingsFile);
var settings = JsonSerializer.Deserialize<Settings>(json);
if (settings != null)
{
UrlBox.Text = settings.HomeAssistantUrl;
TokenBox.Text = settings.AccessToken;
WebhookBox.Text = settings.WebhookId;
EntityBox.Text = settings.Entity;
}
}
}
private void Save_Click(object? sender, RoutedEventArgs e)
{
var settings = new Settings
{
HomeAssistantUrl = UrlBox.Text ?? string.Empty,
AccessToken = TokenBox.Text ?? string.Empty,
WebhookId = WebhookBox.Text ?? string.Empty,
Entity = EntityBox.Text ?? string.Empty
};
var json = JsonSerializer.Serialize(settings, new JsonSerializerOptions { WriteIndented = true });
File.WriteAllText(SettingsFile, json);
this.Close();
MainWindow.Self.LoadSettings();
}
}
public class Settings
{
public string HomeAssistantUrl { get; set; } = string.Empty;
public string AccessToken { get; set; } = string.Empty;
public string WebhookId { get; set; } = string.Empty;
public string Entity { get; set; } = string.Empty;
}