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 } }