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 public class EssentialsTechRoom:EssentialsRoomBase
{ {
private Dictionary<string, IRSetTopBoxBase> _tuners; private readonly Dictionary<string, IRSetTopBoxBase> _tuners;
private Dictionary<string, TwoWayDisplayBase> _displays; private readonly Dictionary<string, TwoWayDisplayBase> _displays;
private DevicePresetsModel _tunerPresets; private readonly DevicePresetsModel _tunerPresets;
private readonly EssentialsTechRoomConfig _config; 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) public EssentialsTechRoom(DeviceConfig config) : base(config)
{ {
@@ -30,6 +54,32 @@ namespace PepperDash.Essentials
_tuners = GetDevices<IRSetTopBoxBase>(_config.Tuners); _tuners = GetDevices<IRSetTopBoxBase>(_config.Tuners);
_displays = GetDevices<TwoWayDisplayBase>(_config.Displays); _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 private Dictionary<string, T> GetDevices<T>(ICollection<string> config) where T:IKeyed
@@ -49,6 +99,8 @@ namespace PepperDash.Essentials
} }
} }
#region Overrides of EssentialsRoomBase #region Overrides of EssentialsRoomBase
protected override Func<bool> IsWarmingFeedbackFunc protected override Func<bool> IsWarmingFeedbackFunc

View File

@@ -195,6 +195,28 @@ namespace PepperDash.Essentials.Core.Presets
Dial(chanNum); 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) private void Pulse(Action<bool> act)
{ {
act(true); act(true);