mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-11 19:44:52 +00:00
71 lines
2.2 KiB
C#
71 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Crestron.SimplSharp;
|
|
using Crestron.SimplSharpPro;
|
|
using Crestron.SimplSharpPro.UI;
|
|
|
|
using PepperDash.Essentials.Core;
|
|
|
|
namespace PepperDash.Essentials
|
|
{
|
|
public class SubpageReferenceListSourceItem : SubpageReferenceListItem
|
|
{
|
|
public SourceListItem SourceItem { get; private set; }
|
|
|
|
private IHasCurrentSourceInfoChange _room;
|
|
|
|
public SubpageReferenceListSourceItem(uint index, SubpageReferenceList owner,
|
|
SourceListItem sourceItem, Action<bool> routeAction)
|
|
: base(index, owner)
|
|
{
|
|
SourceItem = sourceItem;
|
|
owner.GetBoolFeedbackSig(index, 1).UserObject = new Action<bool>(routeAction);
|
|
owner.StringInputSig(index, 1).StringValue = SourceItem.PreferredName;
|
|
}
|
|
|
|
public void RegisterForSourceChange(IHasCurrentSourceInfoChange room)
|
|
{
|
|
_room = room;
|
|
room.CurrentSourceChange -= room_CurrentSourceInfoChange;
|
|
room.CurrentSourceChange += room_CurrentSourceInfoChange;
|
|
}
|
|
|
|
void room_CurrentSourceInfoChange(SourceListItem info, ChangeType type)
|
|
{
|
|
if (type == ChangeType.WillChange && info == SourceItem)
|
|
ClearFeedback();
|
|
else if (type == ChangeType.DidChange && info == SourceItem)
|
|
SetFeedback();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called by SRL to release all referenced objects
|
|
/// </summary>
|
|
public override void Clear()
|
|
{
|
|
Owner.BoolInputSig(Index, 1).UserObject = null;
|
|
Owner.StringInputSig(Index, 1).StringValue = "";
|
|
|
|
if(_room != null)
|
|
_room.CurrentSourceChange -= room_CurrentSourceInfoChange;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Sets the selected feedback on the button
|
|
/// </summary>
|
|
public void SetFeedback()
|
|
{
|
|
Owner.BoolInputSig(Index, 1).BoolValue = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Clears the selected feedback on the button
|
|
/// </summary>
|
|
public void ClearFeedback()
|
|
{
|
|
Owner.BoolInputSig(Index, 1).BoolValue = false;
|
|
}
|
|
}
|
|
} |