HAcontrol/SettingsWindow.axaml.cs
2025-08-16 20:11:06 +02:00

54 lines
1.6 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))
return;
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;
FaderEntityBox.Text = settings.FaderEntity;
}
}
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,
FaderEntity = FaderEntityBox.Text ?? string.Empty
};
var json = JsonSerializer.Serialize(settings, new JsonSerializerOptions { WriteIndented = true });
File.WriteAllText(SettingsFile, json);
this.Close();
MainWindow.Self?.LoadSettings();
}
}