53 lines
1.5 KiB
C#
53 lines
1.5 KiB
C#
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using System.IO;
|
|
using System.Text.Json;
|
|
|
|
namespace HAcontrol;
|
|
|
|
public partial class SettingsWindow : Window
|
|
{
|
|
private const string SettingsFile = "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;
|
|
}
|
|
}
|
|
}
|
|
|
|
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
|
|
};
|
|
var json = JsonSerializer.Serialize(settings, new JsonSerializerOptions { WriteIndented = true });
|
|
File.WriteAllText(SettingsFile, json);
|
|
this.Close();
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|