diff --git a/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs b/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs index ab33eebe..977095a5 100644 --- a/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs +++ b/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs @@ -45,6 +45,10 @@ namespace PepperDash.Essentials /// 1005 /// public const uint CallSharedSourceInfoEnable = 1005; + /// + /// 1006 + /// + public const uint CallEndAllConfirmVisible = 1006; @@ -365,27 +369,28 @@ namespace PepperDash.Essentials /// 3891 /// public const uint VolumeDefaultPress = 3891; + /// + /// 3951 + /// + /// 3952 + /// + public const uint HeaderIcon2Press = 3952; + /// + /// 3953 + /// + public const uint HeaderIcon3Press = 3953; + /// + /// 3954 + /// + public const uint HeaderIcon4Press = 3954; + /// + /// 3955 + /// + public const uint HeaderIcon5Press = 3955; - /// - /// 3991 - /// - public const uint HeaderIcon1Press = 3991; - /// - /// 3992 - /// - public const uint HeaderIcon2Press = 3992; - /// - /// 3993 - /// - public const uint HeaderIcon3Press = 3993; - /// - /// 3994 - /// - public const uint HeaderIcon4Press = 3994; - /// - /// 3995 - /// - public const uint HeaderIcon5Press = 3995; /// /// 3999 /// @@ -457,6 +462,10 @@ namespace PepperDash.Essentials /// 15018 The Header with dynamic buttons /// public const uint TopBarHabaneroDynamicVisible = 15018; + /// + /// 15019 Shown when system is starting and not ready for use + /// + public const uint SystemInitializingVisible = 15019; /// /// 15020 /// @@ -560,7 +569,7 @@ namespace PepperDash.Essentials /// /// 15047 The "Join" button on the next meeting ribbon /// - public const uint NextMeetingRibbonJoinPress = 15047; + public const uint NextMeetingJoinPress = 15047; /// /// 15048 Dismisses the ribbon /// diff --git a/Essentials/PepperDashEssentials/UI/JoinConstants/UIStringlJoin.cs b/Essentials/PepperDashEssentials/UI/JoinConstants/UIStringlJoin.cs index ddbc67cf..208c732b 100644 --- a/Essentials/PepperDashEssentials/UI/JoinConstants/UIStringlJoin.cs +++ b/Essentials/PepperDashEssentials/UI/JoinConstants/UIStringlJoin.cs @@ -168,7 +168,10 @@ namespace PepperDash.Essentials /// 3916 The "active call" label /// public const uint HeaderCallStatusLabel = 3916; - + /// + /// 3919 Mesage on init page + /// + public const uint SystemInitializingMessage = 3919; /// /// 3922 /// @@ -182,6 +185,27 @@ namespace PepperDash.Essentials /// public const uint HelpPageCallButtonText = 3924; + /// + /// 3951 + /// + public const uint HeaderButtonIcon1 = 3951; + /// + /// 3952 + /// + public const uint HeaderButtonIcon2 = 3952; + /// + /// 3953 + /// + public const uint HeaderButtonIcon3 = 3953; + /// + /// 3954 + /// + public const uint HeaderButtonIcon4 = 3954; + /// + /// 3955 + /// + public const uint HeaderButtonIcon5 = 3955; + /// /// 3961 Name of source on display 1 /// @@ -202,23 +226,23 @@ namespace PepperDash.Essentials /// /// 3966 /// - public const uint NextMeetingRibbonStartText = 3966; + public const uint NextMeetingStartTimeText = 3966; /// /// 3967 /// - public const uint NextMeetingRibbonEndText = 3967; + public const uint NextMeetingEndTimeText = 3967; /// /// 3968 /// - public const uint NextMeetingRibbonTitleText = 3968; + public const uint NextMeetingTitleText = 3968; /// /// 3969 /// - public const uint NextMettingRibbonNameText = 3969; + public const uint NextMeetingNameText = 3969; /// /// 3970 /// - public const uint NextMeetingRibbonButtonLabel = 3970; + public const uint NextMeetingButtonLabel = 3970; /// /// 3971 /// @@ -227,37 +251,19 @@ namespace PepperDash.Essentials /// 3972 /// public const uint NextMeetingFollowingMeetingText = 3972; - - /// - /// 3991 - /// - public const uint HeaderButtonIcon1 = 3991; - /// - /// 3992 - /// - public const uint HeaderButtonIcon2 = 3992; - /// - /// 3993 - /// - public const uint HeaderButtonIcon3 = 3993; - /// - /// 3994 - /// - public const uint HeaderButtonIcon4 = 3994; - /// - /// 3995 - /// - public const uint HeaderButtonIcon5 = 3995; - /// - /// 3996 + /// 3976 /// - public const uint MeetingsOrContactMethodListIcon = 3996; + public const uint MeetingsOrContactMethodListIcon = 3976; + /// + /// 3977 + /// + public const uint MeetingsOrContactMethodListTitleText = 3977; - /// - /// 3997 - /// - public const uint MeetingsOrContactMethodListTitleText = 3997; - + // ------------------------------------ + // + // MODAL JOINS 3991 - 3999 + // + // ------------------------------------ } } \ No newline at end of file diff --git a/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs index b37d306a..56a64fed 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/EssentialsHuddleVtc1PanelAvFunctionsDriver.cs @@ -184,7 +184,11 @@ namespace PepperDash.Essentials /// Tracks whether the user dismissed the meeting popup, while the system was on. Always false when /// system is off. /// - DateTime NextMeetingWarningDismissedTime; + bool NextMeetingWarningWasDismissed; + /// + /// Tracks the last meeting that was cancelled + /// + Meeting LastMeetingDismissed; @@ -326,6 +330,7 @@ namespace PepperDash.Essentials /// void ShowActiveCallsList() { + TriList.SetBool(UIBoolJoin.CallEndAllConfirmVisible, true); if(PopupInterlock.CurrentJoin == UIBoolJoin.HeaderActiveCallsListVisible) PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HeaderActiveCallsListVisible); else @@ -417,59 +422,78 @@ namespace PepperDash.Essentials var ss = CurrentRoom.ScheduleSource; if (ss != null) { - NextMeetingTimer = new CTimer(o => - { - if (CurrentRoom.OnFeedback.BoolValue) - return; - // Every 60 seconds, check meetings list for the closest, joinable meeting - var meetings = ss.CodecSchedule.Meetings; - if (meetings.Count > 0) - { - var meeting = meetings.FirstOrDefault(m => m.Joinable); - - //var meeting = meetings.Aggregate((m1, m2) => m1.StartTime < m2.StartTime ? m1 : m2); - - -#warning PICK UP CALENDAR TIME HERE - if (meeting != null)// && NextMeetingWarningDismissedTime != null - //&& (DateTime.Now - NextMeetingWarningDismissedTime).Minutes > 5) // && meeting.Joinable) - { - TriList.SetString(UIStringJoin.NextMeetingRibbonStartText, meeting.StartTime.ToShortTimeString()); - TriList.SetString(UIStringJoin.NextMeetingRibbonEndText, meeting.EndTime.ToShortTimeString()); - TriList.SetString(UIStringJoin.NextMeetingRibbonTitleText, meeting.Title); - TriList.SetString(UIStringJoin.NextMettingRibbonNameText, meeting.Organizer); - TriList.SetString(UIStringJoin.NextMeetingRibbonButtonLabel, "Join"); - TriList.SetSigFalseAction(UIBoolJoin.NextMeetingRibbonJoinPress, () => - { - HideNextMeetingPopup(); - RoomOnAndDialMeeting(meeting); - }); - TriList.SetString(UIStringJoin.NextMeetingSecondaryButtonLabel, "Show Schedule"); - TriList.SetSigFalseAction(UIBoolJoin.CalendarHeaderButtonPress, () => - { - HideNextMeetingPopup(); - CalendarPress(); - }); - if (meetings.Count > 1) - { - TriList.SetString(UIStringJoin.NextMeetingFollowingMeetingText, - meetings[1].StartTime.ToShortTimeString()); - } - - ShowNextMeetingPopup(); - } - } - }, null, 0, 60000); + NextMeetingTimer = new CTimer(o => ShowNextMeetingCallback(), null, 0, 60000); } } /// /// /// - void ShowNextMeetingPopup() + void ShowNextMeetingCallback() { - TriList.SetSigFalseAction(UIBoolJoin.NextMeetingModalClosePress, HideNextMeetingPopup); - TriList.SetBool(UIBoolJoin.NextMeetingModalVisible, true); + // Every 60 seconds, check meetings list for the closest, joinable meeting + var ss = CurrentRoom.ScheduleSource; + var meetings = ss.CodecSchedule.Meetings; + Debug.Console(0, "***** Checking meetings *****"); + foreach (var m in meetings) + Debug.Console(0, "****** {0} {1} ******", m.StartTime.ToShortTimeString(), m.Joinable); + + if (meetings.Count > 0) + { + var meeting = meetings.FirstOrDefault(m => m.Joinable); + + // If the room is off pester the user + // If the room is on, and the meeting is joinable + // and the LastMeetingDismissed != this meeting + + if (CurrentRoom.OnFeedback.BoolValue + && LastMeetingDismissed == meeting) + //|| (LastMeetingDismissed != null && !LastMeetingDismissed.Joinable))) + { + Debug.Console(0, "****** Ignoring previously cancelled meeting warning ******"); + return; + } + + LastMeetingDismissed = null; + if (meeting != null) + { + Debug.Console(0, "***** First joinable meeting: {0} {1}", meeting.StartTime.ToShortTimeString(), meeting.Joinable); + TriList.SetString(UIStringJoin.MeetingsOrContactMethodListTitleText, "Upcoming meeting"); + TriList.SetString(UIStringJoin.NextMeetingStartTimeText, meeting.StartTime.ToShortTimeString()); + TriList.SetString(UIStringJoin.NextMeetingEndTimeText, meeting.EndTime.ToShortTimeString()); + TriList.SetString(UIStringJoin.NextMeetingTitleText, meeting.Title); + TriList.SetString(UIStringJoin.NextMeetingNameText, meeting.Organizer); + TriList.SetString(UIStringJoin.NextMeetingButtonLabel, "Join"); + TriList.SetSigFalseAction(UIBoolJoin.NextMeetingJoinPress, () => + { + HideNextMeetingPopup(); + RoomOnAndDialMeeting(meeting); + }); + TriList.SetString(UIStringJoin.NextMeetingSecondaryButtonLabel, "Show Schedule"); + TriList.SetSigFalseAction(UIBoolJoin.CalendarHeaderButtonPress, () => + { + HideNextMeetingPopup(); + CalendarPress(); + }); + var indexOfNext = meetings.IndexOf(meeting) + 1; + + // indexOf = 3, 4 meetings : + if (indexOfNext < meetings.Count) + { + TriList.SetString(UIStringJoin.NextMeetingFollowingMeetingText, + meetings[indexOfNext].StartTime.ToShortTimeString()); + } + TriList.SetSigFalseAction(UIBoolJoin.NextMeetingModalClosePress, () => + { + // Mark the meeting to not re-harass the user + if(CurrentRoom.OnFeedback.BoolValue) + LastMeetingDismissed = meeting; + HideNextMeetingPopup(); + }); + + TriList.SetBool(UIBoolJoin.NextMeetingModalVisible, true); + } + } } /// @@ -478,6 +502,7 @@ namespace PepperDash.Essentials void HideNextMeetingPopup() { TriList.SetBool(UIBoolJoin.NextMeetingModalVisible, false); + } /// @@ -1007,7 +1032,7 @@ namespace PepperDash.Essentials // //TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message; // PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible); //}); - uint nextJoin = 3993; + uint nextJoin = 3953; // Lights button //if (WHATEVER MAKES LIGHTS WORK) @@ -1041,7 +1066,7 @@ namespace PepperDash.Essentials nextJoin--; // blank any that remain - for (var i = nextJoin; i > 3990; i--) + for (var i = nextJoin; i > 3950; i--) { //var blankBut = new HeaderListButton(HeaderButtonsList, i); //blankBut.ClearIcon(); @@ -1053,13 +1078,13 @@ namespace PepperDash.Essentials // Set Call Status Subpage Position - if (nextJoin == 1) + if (nextJoin == 3951) { // Set to right position TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, false); TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, true); } - else if (nextJoin == 0) + else if (nextJoin == 3950) { // Set to left position TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, true); @@ -1080,11 +1105,11 @@ namespace PepperDash.Essentials //HeaderCallButton.SetIcon(HeaderListButton.OnHook); } else if (codec.ActiveCalls.Any(c => c.Type == eCodecCallType.Video)) - HeaderCallButtonIconSig.StringValue = "Camera"; + HeaderCallButtonIconSig.StringValue = "Misc-06_Dark"; //HeaderCallButton.SetIcon(HeaderListButton.Camera); //TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 2); else - HeaderCallButtonIconSig.StringValue = "Phone"; + HeaderCallButtonIconSig.StringValue = "Misc-09_Dark"; //HeaderCallButton.SetIcon(HeaderListButton.Phone); //TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 1); @@ -1180,6 +1205,8 @@ namespace PepperDash.Essentials SetActivityFooterFeedbacks(); TriList.BooleanInput[UIBoolJoin.VolumeDualMute1Visible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = false; + // Clear this so that the pesky meeting warning can resurface every minute when off + LastMeetingDismissed = null; } } diff --git a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs index ce822ec1..be935a6d 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs @@ -829,7 +829,6 @@ namespace PepperDash.Essentials.UIDrivers.VC else if (e.SpecialKey == KeyboardSpecialKey.GoButton) { ConnectPress(); - Parent.Keyboard.Hide(); } } DialStringFeedback.FireUpdate(); @@ -935,6 +934,8 @@ namespace PepperDash.Essentials.UIDrivers.VC /// void ConnectPress() { + if (Parent.Keyboard != null) + Parent.Keyboard.Hide(); Codec.Dial(DialStringBuilder.ToString()); } @@ -957,6 +958,7 @@ namespace PepperDash.Essentials.UIDrivers.VC DialStringFeedback.FireUpdate(); // no delete key in this mode! } + DialStringTextCheckEnables(); } /// diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz index 394f956d..0d1bf0b3 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 e35db778..6fb4054d 100644 Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ