added save presets method & expose some properties

This commit is contained in:
Andrew Welker
2020-12-04 13:24:00 -07:00
parent 9171610e34
commit 9888fbf047
2 changed files with 78 additions and 4 deletions

View File

@@ -12,13 +12,37 @@ namespace PepperDash.Essentials
{
public class EssentialsTechRoom:EssentialsRoomBase
{
private Dictionary<string, IRSetTopBoxBase> _tuners;
private Dictionary<string, TwoWayDisplayBase> _displays;
private readonly Dictionary<string, IRSetTopBoxBase> _tuners;
private readonly Dictionary<string, TwoWayDisplayBase> _displays;
private DevicePresetsModel _tunerPresets;
private readonly DevicePresetsModel _tunerPresets;
private readonly EssentialsTechRoomConfig _config;
public DevicePresetsModel TunerPresets
{
get
{
return _tunerPresets;
}
}
public Dictionary<string, IRSetTopBoxBase> Tuners
{
get { return _tuners; }
}
public Dictionary<string, TwoWayDisplayBase> Displays
{
get { return _displays; }
}
public BoolFeedback RoomPowerIsOnFeedback { get; private set; }
public bool RoomPowerIsOn
{
get { return _displays.All(kv => kv.Value.PowerIsOnFeedback.BoolValue); }
}
public EssentialsTechRoom(DeviceConfig config) : base(config)
{
@@ -30,6 +54,32 @@ namespace PepperDash.Essentials
_tuners = GetDevices<IRSetTopBoxBase>(_config.Tuners);
_displays = GetDevices<TwoWayDisplayBase>(_config.Displays);
RoomPowerIsOnFeedback = new BoolFeedback(() => RoomPowerIsOn);
}
private void SubscribeToDisplayFeedbacks()
{
foreach (var display in _displays)
{
display.Value.PowerIsOnFeedback.OutputChange += (sender, args) => RoomPowerIsOnFeedback.InvokeFireUpdate();
}
}
public void RoomPowerOn()
{
foreach (var display in _displays)
{
display.Value.PowerOn();
}
}
public void RoomPowerOff()
{
foreach (var display in _displays)
{
display.Value.PowerOff();
}
}
private Dictionary<string, T> GetDevices<T>(ICollection<string> config) where T:IKeyed
@@ -47,7 +97,9 @@ namespace PepperDash.Essentials
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error getting devices. Check Essentials Configuration");
return null;
}
}
}
#region Overrides of EssentialsRoomBase

View File

@@ -195,6 +195,28 @@ namespace PepperDash.Essentials.Core.Presets
Dial(chanNum);
}
public void UpdatePreset(int index, PresetChannel preset)
{
if (index >= PresetsList.Count)
{
return;
}
PresetsList[index] = preset;
SavePresets();
}
private void SavePresets()
{
var json = JsonConvert.SerializeObject(PresetsList);
using (var file = File.Open(_filePath, FileMode.Truncate))
{
file.Write(json, Encoding.UTF8);
}
}
private void Pulse(Action<bool> act)
{
act(true);