diff --git a/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs b/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs index e66dd56b..82256f40 100644 --- a/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs +++ b/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs @@ -11,7 +11,7 @@ using PepperDash.Essentials.Devices.Common.Codec; namespace PepperDash.Essentials.Devices.Common.VideoCodec { - public class MockVC : VideoCodecBase, IRoutingSource, IHasCallHistory + public class MockVC : VideoCodecBase, IRoutingSource, IHasCallHistory, IHasScheduleAwareness { public RoutingInputPort CodecOsdIn { get; private set; } public RoutingInputPort HdmiIn1 { get; private set; } @@ -323,7 +323,28 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec } #endregion - } + + #region IHasScheduleAwareness Members + + public CodecScheduleAwareness CodecSchedule + { + get { + var sch = new CodecScheduleAwareness(); + for(int i = 0; i < 5; i++) + { + var m = new Meeting(); + m.StartTime = DateTime.Now.AddHours(1 + i); + m.EndTime = DateTime.Now.AddHours(1 + i).AddMinutes(30); + m.Title = "Meeting " + i; + m.ConferenceNumberToDial = i + "meeting@fake.com"; + sch.Meetings.Add(m); + } + return sch; + } + } + + #endregion + } /// /// Implementation for the mock VC diff --git a/Essentials/PepperDashEssentials/PepperDashEssentials.csproj b/Essentials/PepperDashEssentials/PepperDashEssentials.csproj index 831d7fc7..693224e8 100644 --- a/Essentials/PepperDashEssentials/PepperDashEssentials.csproj +++ b/Essentials/PepperDashEssentials/PepperDashEssentials.csproj @@ -170,6 +170,7 @@ + diff --git a/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs b/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs index 3697004c..36adf58c 100644 --- a/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs +++ b/Essentials/PepperDashEssentials/Room/Types/EssentialsHuddleVtc1Room.cs @@ -182,7 +182,13 @@ namespace PepperDash.Essentials /// /// "codecOsd" /// - public string DefaultCodecRouteString { get { return "codecOsd"; } } + public string DefaultCodecRouteString { get { return "codecOsd"; } } + + /// + /// Temporary implementation. Returns the schedule-ready object or null if none. Fow now, + /// always returns the VideoCodec if it is capable + /// + public IHasScheduleAwareness ScheduleSource { get { return VideoCodec as IHasScheduleAwareness; } } /// /// diff --git a/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs b/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs index 9045335b..fef87f57 100644 --- a/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs +++ b/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs @@ -405,6 +405,10 @@ namespace PepperDash.Essentials /// 15017 /// public const uint StagingPageAdditionalArrowsVisible = 15017; + /// + /// 15018 The Header with dynamic buttons + /// + public const uint TopBarHabaneroDynamicVisible = 15018; /// /// 15020 /// @@ -420,31 +424,31 @@ namespace PepperDash.Essentials /// /// 15023 /// - public const uint LightsHeaderButtonVisible = 15023; + public const uint HeaderLightsButtonVisible = 15023; /// /// 15024 /// - public const uint CallRightHeaderButtonVisible = 15024; + public const uint HeaderCallRightButtonVisible = 15024; /// /// 15025 /// - public const uint CallLeftHeaderButtonVisible = 15025; + public const uint HeaderCallLeftButtonVisible = 15025; /// /// 15026 /// - public const uint LightsHeaderButtonPress = 15026; + public const uint HeaderLightsButtonPress = 15026; /// [- /// 15027 /// - public const uint CallHeaderButtonPress = 15027; + public const uint HeaderCallButtonPress = 15027; /// /// 15028 The gear button in header /// - public const uint GearHeaderButtonPress = 15028; + public const uint HeaderGearButtonPress = 15028; /// /// 15029 the room button in header /// - public const uint RoomHeaderButtonPress = 15029; + public const uint HeaderRoomButtonPress = 15029; /// /// 15030 Visibility for room data popup /// diff --git a/Essentials/PepperDashEssentials/UI/JoinConstants/UISmartObjectJoin.cs b/Essentials/PepperDashEssentials/UI/JoinConstants/UISmartObjectJoin.cs index 3ea7c07d..e7c02ab1 100644 --- a/Essentials/PepperDashEssentials/UI/JoinConstants/UISmartObjectJoin.cs +++ b/Essentials/PepperDashEssentials/UI/JoinConstants/UISmartObjectJoin.cs @@ -38,10 +38,6 @@ /// public const uint SourceStagingSRL = 3200; /// - /// 15022 The main activity footer - /// - public const uint ActivityFooterSRL = 15022; - /// /// 3901 The Tech page menu list /// public const uint TechMenuList = 3901; @@ -57,6 +53,13 @@ /// 3904 - Display controls on the tech page /// public const uint TechDisplayControlsList = 3904; - + /// + /// 15018 + /// + public const uint HeaderButtonList = 15018; + /// + /// 15022 The main activity footer + /// + public const uint ActivityFooterSRL = 15022; } } \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/UI/JoinConstants/UIStringlJoin.cs b/Essentials/PepperDashEssentials/UI/JoinConstants/UIStringlJoin.cs index e337b37b..d517c6d4 100644 --- a/Essentials/PepperDashEssentials/UI/JoinConstants/UIStringlJoin.cs +++ b/Essentials/PepperDashEssentials/UI/JoinConstants/UIStringlJoin.cs @@ -111,6 +111,10 @@ namespace PepperDash.Essentials /// 3915 /// public const uint NotificationRibbonText = 3915; + /// + /// 3916 The "active call" label + /// + public const uint HeaderCallLabel = 3916; /// /// 3922 diff --git a/Essentials/PepperDashEssentials/UI/SmartObjectHeaderButtonList.cs b/Essentials/PepperDashEssentials/UI/SmartObjectHeaderButtonList.cs new file mode 100644 index 00000000..ebeb5593 --- /dev/null +++ b/Essentials/PepperDashEssentials/UI/SmartObjectHeaderButtonList.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; + +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.SmartObjects; + +namespace PepperDash.Essentials +{ + public class SmartObjectHeaderButtonList : SmartObjectHelperBase + { + + public SmartObjectHeaderButtonList(SmartObject so) + : base(so, true) + { + + } + } + + public class HeaderListButton + { + public BoolInputSig SelectedSig { get; private set; } + public BoolInputSig VisibleSig { get; private set; } + BoolOutputSig OutputSig; + StringInputSig IconSig; + + public HeaderListButton(SmartObjectHeaderButtonList list, uint index) + { + var so = list.SmartObject; + OutputSig = so.BooleanOutput["Item " + index + " Pressed"]; + SelectedSig = so.BooleanInput["Item " + index + " Selected"]; + VisibleSig = so.BooleanInput["Item " + index + " Visible"]; + IconSig = so.StringInput["Set Item " + index + " Icon Serial"]; + } + + public void SetBoolFalseAction(Action a) + { + OutputSig.SetSigFalseAction(a); + } + + public void SetIcon(string i) + { + IconSig.StringValue = i; + } + + public void ClearIcon() + { + IconSig.StringValue = "Blank"; + } + + public static string Calendar = "Calendar"; + public static string Camera = "Camera"; + public static string Gear = "Gear"; + public static string Lights = "Lights"; + public static string Help = "Help"; + public static string OnHook = "Phone Down"; + public static string Phone = "Phone"; + } +} \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsHuddlePanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsHuddlePanelAvFunctionsDriver.cs index ecd4fb04..1e8a67be 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsHuddlePanelAvFunctionsDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsHuddlePanelAvFunctionsDriver.cs @@ -218,7 +218,7 @@ namespace PepperDash.Essentials // ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible)); // Setup button - TriList.SetSigHeldAction(UIBoolJoin.GearHeaderButtonPress, 2000, + TriList.SetSigHeldAction(UIBoolJoin.HeaderGearButtonPress, 2000, () => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.TechPanelSetupVisible));// ShowInterlockedModal(UIBoolJoin.TechPanelSetupVisible)); TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () => PopupInterlock.HideAndClear()); // HideCurrentInterlockedModal()); diff --git a/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsPresentationPanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsPresentationPanelAvFunctionsDriver.cs index f94913c4..341a2458 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsPresentationPanelAvFunctionsDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/Essentials/EssentialsPresentationPanelAvFunctionsDriver.cs @@ -229,10 +229,10 @@ namespace PepperDash.Essentials ShowInterlockedModal(UIBoolJoin.HelpPageVisible); }); - TriList.SetSigFalseAction(UIBoolJoin.RoomHeaderButtonPress, () => + TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () => ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible)); - TriList.SetSigFalseAction(UIBoolJoin.GearHeaderButtonPress, () => + TriList.SetSigFalseAction(UIBoolJoin.HeaderGearButtonPress, () => ShowInterlockedModal(UIBoolJoin.VolumesPageVisible)); // power-related functions diff --git a/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs index e62ddbbf..2d5fa7ad 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs @@ -85,6 +85,11 @@ namespace PepperDash.Essentials /// SubpageReferenceList ActivityFooterSrl; + /// + /// The list of buttons on the header. Managed with visibility only + /// + SmartObjectHeaderButtonList HeaderButtonsList; + /// /// The AV page mangagers that have been used, to keep them alive for later /// @@ -183,6 +188,9 @@ namespace PepperDash.Essentials ShareButtonSig = ActivityFooterSrl.BoolInputSig(1, 1); EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(3, 1); + // buttons are added in SetCurrentRoom + HeaderButtonsList = new SmartObjectHeaderButtonList(TriList.SmartObjects[UISmartObjectJoin.HeaderButtonList]); + SetupActivityFooterWhenRoomOff(); ShowVolumeGauge = true; @@ -214,7 +222,7 @@ namespace PepperDash.Essentials if (Config.HeaderStyle == UiHeaderStyle.Habanero) { TriList.SetString(UIStringJoin.CurrentRoomName, CurrentRoom.Name); - TriList.SetSigFalseAction(UIBoolJoin.RoomHeaderButtonPress, () => + TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.RoomHeaderPageVisible)); } else if (Config.HeaderStyle == UiHeaderStyle.Verbose) @@ -235,7 +243,9 @@ namespace PepperDash.Essentials TriList.SetBool(UIBoolJoin.DateAndTimeVisible, Config.ShowDate && Config.ShowTime); TriList.SetBool(UIBoolJoin.DateOnlyVisible, Config.ShowDate && !Config.ShowTime); TriList.SetBool(UIBoolJoin.TimeOnlyVisible, !Config.ShowDate && Config.ShowTime); - TriList.SetBool(UIBoolJoin.TopBarHabaneroVisible, true); + + TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true); + TriList.SetBool(UIBoolJoin.ActivityFooterVisible, true); // Privacy mute button @@ -259,60 +269,47 @@ namespace PepperDash.Essentials // Generic "close" button for these modals TriList.SetSigFalseAction(UIBoolJoin.InterlockedModalClosePress, PopupInterlock.HideAndClear); - // Help button and popup - if (CurrentRoom.Config.Help != null) - { - TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message); - TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton); - TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText); - if(roomConf.Help.ShowCallButton) - TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN - else - TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress); - } - else // older config - { - TriList.SetString(UIStringJoin.HelpMessage, CurrentRoom.Config.HelpMessage); - TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false); - TriList.SetString(UIStringJoin.HelpPageCallButtonText, null); - TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress); - } - TriList.SetSigFalseAction(UIBoolJoin.HelpPress, () => - { - string message = null; - var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey) - as EssentialsHuddleSpaceRoom; - if (room != null) - message = room.Config.HelpMessage; - else - message = "Sorry, no help message available. No room connected."; - //TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message; - PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible); - }); + //// Help button and popup + //if (CurrentRoom.Config.Help != null) + //{ + // TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message); + // TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton); + // TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText); + // if(roomConf.Help.ShowCallButton) + // TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN + // else + // TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress); + //} + //else // older config + //{ + // TriList.SetString(UIStringJoin.HelpMessage, CurrentRoom.Config.HelpMessage); + // TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false); + // TriList.SetString(UIStringJoin.HelpPageCallButtonText, null); + // TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress); + //} + //TriList.SetSigFalseAction(UIBoolJoin.HelpPress, () => + //{ + // string message = null; + // var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey) + // as EssentialsHuddleSpaceRoom; + // if (room != null) + // message = room.Config.HelpMessage; + // else + // message = "Sorry, no help message available. No room connected."; + // //TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message; + // PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible); + //}); - // Lights button - TriList.SetSigFalseAction(UIBoolJoin.LightsHeaderButtonPress, () => // ******************** FILL IN - { }); + //// Lights button + //TriList.SetSigFalseAction(UIBoolJoin.HeaderLightsButtonPress, () => // ******************** FILL IN + // { }); - // Call header button - if(roomConf.OneButtonMeeting != null && roomConf.OneButtonMeeting.Enable) - { - TriList.SetBool(UIBoolJoin.CalendarHeaderButtonVisible, true); - TriList.SetBool(UIBoolJoin.CallLeftHeaderButtonVisible, true); - } - else - TriList.SetBool(UIBoolJoin.CallRightHeaderButtonVisible, true); - - TriList.SetSigFalseAction(UIBoolJoin.CallHeaderButtonPress, () => - PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HeaderActiveCallsListVisible)); - - - // Setup button - shows volumes with default button OR hold for tech page - TriList.SetSigHeldAction(UIBoolJoin.GearHeaderButtonPress, 2000, - ShowTech, - () => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible)); - TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () => - PopupInterlock.HideAndClear()); + //// Setup button - shows volumes with default button OR hold for tech page + //TriList.SetSigHeldAction(UIBoolJoin.HeaderGearButtonPress, 2000, + // ShowTech, + // () => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible)); + //TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () => + // PopupInterlock.HideAndClear()); // Volume related things TriList.SetSigFalseAction(UIBoolJoin.VolumeDefaultPress, () => CurrentRoom.SetDefaultLevels()); @@ -370,7 +367,7 @@ namespace PepperDash.Essentials public override void Hide() { HideAndClearCurrentDisplayModeSigsInUse(); - TriList.BooleanInput[UIBoolJoin.TopBarHabaneroVisible].BoolValue = false; + TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, false); TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false; @@ -775,7 +772,7 @@ namespace PepperDash.Essentials _CurrentRoom.ShutdownPromptTimer.HasFinished += ShutdownPromptTimer_HasFinished; _CurrentRoom.ShutdownPromptTimer.WasCancelled += ShutdownPromptTimer_WasCancelled; - // Link up all the change events from the room + // Link up all the change events from the room _CurrentRoom.OnFeedback.OutputChange += CurrentRoom_OnFeedback_OutputChange; CurrentRoom_SyncOnFeedback(); _CurrentRoom.IsWarmingUpFeedback.OutputChange += CurrentRoom_IsWarmingFeedback_OutputChange; @@ -785,6 +782,8 @@ namespace PepperDash.Essentials RefreshAudioDeviceConnections(); _CurrentRoom.CurrentSingleSourceChange += CurrentRoom_SourceInfoChange; RefreshSourceInfo(); + + SetupHeaderButtons(); } else { @@ -793,10 +792,97 @@ namespace PepperDash.Essentials } } - /// - /// For room on/off changes - /// - void CurrentRoom_OnFeedback_OutputChange(object sender, EventArgs e) + /// + /// + /// + void SetupHeaderButtons() + { + TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true); + + var roomConf = CurrentRoom.Config; + // + var setupButton = new HeaderListButton(HeaderButtonsList, 5); + setupButton.SetIcon(HeaderListButton.Gear); + setupButton.SetBoolFalseAction(() => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible)); +#warning Add held action - and add press/hold to SIG helper + //// Setup button - shows volumes with default button OR hold for tech page + //TriList.SetSigHeldAction(UIBoolJoin.HeaderGearButtonPress, 2000, + // ShowTech, + // () => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible)); + + TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () => + PopupInterlock.HideAndClear()); + + // Help button and popup + if (CurrentRoom.Config.Help != null) + { + TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message); + TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton); + TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText); + if (roomConf.Help.ShowCallButton) + TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN + else + TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress); + } + else // older config + { + TriList.SetString(UIStringJoin.HelpMessage, CurrentRoom.Config.HelpMessage); + TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false); + TriList.SetString(UIStringJoin.HelpPageCallButtonText, null); + TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress); + } + var helpButton = new HeaderListButton(HeaderButtonsList, 4); + helpButton.SetIcon(HeaderListButton.Help); + helpButton.SetBoolFalseAction(() => + { + string message = null; + var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey) + as EssentialsHuddleSpaceRoom; + if (room != null) + message = room.Config.HelpMessage; + else + message = "Sorry, no help message available. No room connected."; + //TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message; + PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible); + }); + uint nextIndex = 3; + + // Lights button + //if (WHATEVER MAKES LIGHTS WORK) + //{ + // // do lights + // nextIndex--; + //} + + // Calendar button + if (_CurrentRoom.ScheduleSource != null) // ******************* Do we need a config option here as well? + { + var calBut = new HeaderListButton(HeaderButtonsList, nextIndex); + calBut.SetIcon(HeaderListButton.Calendar); + calBut.SetBoolFalseAction(() => { }); + nextIndex--; + } + + // Call button + var callBut = new HeaderListButton(HeaderButtonsList, nextIndex); + callBut.SetIcon(HeaderListButton.OnHook); + callBut.SetBoolFalseAction(() => + PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HeaderActiveCallsListVisible)); + nextIndex--; + + // blank any that remain + for (var i = nextIndex; i > 0; i--) + { + var blankBut = new HeaderListButton(HeaderButtonsList, i); + blankBut.ClearIcon(); + blankBut.SetBoolFalseAction(() => { }); + } + } + + /// + /// For room on/off changes + /// + void CurrentRoom_OnFeedback_OutputChange(object sender, EventArgs e) { CurrentRoom_SyncOnFeedback(); } diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz index b5ec6443..240f00a7 100644 Binary files a/Release Package/PepperDashEssentials.cpz and b/Release Package/PepperDashEssentials.cpz differ diff --git a/Release Package/PepperDashEssentials.dll b/Release Package/PepperDashEssentials.dll index 17dcdff2..57b45d18 100644 Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ