mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 20:54:55 +00:00
added save presets method & expose some properties
This commit is contained in:
@@ -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
|
||||||
@@ -47,7 +97,9 @@ namespace PepperDash.Essentials
|
|||||||
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error getting devices. Check Essentials Configuration");
|
Debug.Console(0, this, Debug.ErrorLogLevel.Error, "Error getting devices. Check Essentials Configuration");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region Overrides of EssentialsRoomBase
|
#region Overrides of EssentialsRoomBase
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user