using System;
using System.Collections.Generic;
using Crestron.SimplSharpPro.DeviceSupport;
using PepperDash.Essentials.Core;
namespace PepperDash.Essentials
{
public enum eAvSubpageType
{
NoControls,
PowerOff,
SetupFullDistributed,
SourceWaitOverlay,
TopBar,
VolumePopup,
ZoneSource
}
public enum eAvSourceSubpageType
{
AppleTv,
Radio,
Roku
}
public enum eCommonSubpageType
{
GenericModal,
Home,
PanelSetup,
Weather
}
public enum eAvSmartObjects
{
RoomList,
SourceList
}
public enum eCommonSmartObjects
{
HomePageList
}
///
///
///
public abstract class PanelDriverBase
{
///
///
///
public bool IsVisible { get; private set; }
public bool WasVisibleWhenHidden { get; private set; }
///
/// Makes sure you call this.
/// Sets IsVisible and attaches back/home buttons to BackButtonPressed
///
public virtual void Show()
{
IsVisible = true;
TriList.SetSigFalseAction(15002, BackButtonPressed);
}
///
/// Will show if this was visible when Hide was called (for group hiding/showing)
///
public void Restore()
{
if (WasVisibleWhenHidden)
Show();
}
///
/// Only sets IsVisible
///
public virtual void Hide()
{
WasVisibleWhenHidden = IsVisible;
IsVisible = false;
}
///
/// Toggles visibility of this driver
///
public virtual void Toggle()
{
if (IsVisible)
Hide();
else
Show();
}
///
/// Override with specific back button behavior. Default is empty
///
public virtual void BackButtonPressed()
{
}
public PanelDriverBase(BasicTriListWithSmartObject triList)
{
TriList = triList;
}
#region IBasicTriListWithSmartObject Members
///
///
///
public void AddSmartObjectHelper(uint id, object controller)
{
SmartObjectControllers.Add(id, controller);
}
///
///
///
public void RemoveSmartObjectHelper(uint id)
{
SmartObjectControllers.Remove(id);
}
Dictionary SmartObjectControllers = new Dictionary();
///
/// The trilist object for the Crestron TP device
///
public BasicTriListWithSmartObject TriList { get; private set; }
///
///
///
///
///
public bool ContainsSmartObjectHelper(uint id)
{
return SmartObjectControllers.ContainsKey(id);
}
///
///
///
///
///
public object GetSmartObjectHelper(uint id)
{
if (SmartObjectControllers.ContainsKey(id))
return SmartObjectControllers[id];
else
return null;
}
#endregion
}
}