54 lines
1.6 KiB
C#
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();
|
|
}
|
|
}
|
|
|