Merge remote-tracking branch 'origin/bugfix/ecs-535' into bugfix/ecs-541-1

This commit is contained in:
Neil Dorin
2017-10-22 10:05:55 -06:00
11 changed files with 368 additions and 203 deletions

View File

@@ -261,8 +261,8 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
protected override void EndShutdown() protected override void EndShutdown()
{ {
RunRouteAction("roomOff");
VideoCodec.EndAllCalls(); VideoCodec.EndAllCalls();
RunRouteAction("roomOff");
} }
/// <summary> /// <summary>

View File

@@ -166,7 +166,7 @@ namespace PepperDash.Essentials
{ {
var tsw = Panel as TswFt5ButtonSystem; var tsw = Panel as TswFt5ButtonSystem;
// Wire up hard keys // Wire up hard keys
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); }); tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.EndMeetingPress(); });
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); }); //tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress); tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress); tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);

View File

@@ -45,6 +45,10 @@ namespace PepperDash.Essentials
/// 1005 /// 1005
/// </summary> /// </summary>
public const uint CallSharedSourceInfoEnable = 1005; public const uint CallSharedSourceInfoEnable = 1005;
/// <summary>
/// 1006
/// </summary>
public const uint CallEndAllConfirmVisible = 1006;
@@ -365,7 +369,27 @@ namespace PepperDash.Essentials
/// 3891 /// 3891
/// </summary> /// </summary>
public const uint VolumeDefaultPress = 3891; public const uint VolumeDefaultPress = 3891;
/// <summary>
/// 3951
/// </summary
public const uint HeaderIcon1Press = 3951;
/// <summary>
/// 3952
/// </summary>
public const uint HeaderIcon2Press = 3952;
/// <summary>
/// 3953
/// </summary>
public const uint HeaderIcon3Press = 3953;
/// <summary>
/// 3954
/// </summary>
public const uint HeaderIcon4Press = 3954;
/// <summary>
/// 3955
/// </summary>
public const uint HeaderIcon5Press = 3955;
/// <summary> /// <summary>
/// 3999 /// 3999
@@ -439,6 +463,10 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public const uint TopBarHabaneroDynamicVisible = 15018; public const uint TopBarHabaneroDynamicVisible = 15018;
/// <summary> /// <summary>
/// 15019 Shown when system is starting and not ready for use
/// </summary>
public const uint SystemInitializingVisible = 15019;
/// <summary>
/// 15020 /// 15020
/// </summary> /// </summary>
public const uint PanelSetupVisible = 15020; public const uint PanelSetupVisible = 15020;
@@ -451,10 +479,6 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public const uint ActivityFooterVisible = 15022; public const uint ActivityFooterVisible = 15022;
/// <summary> /// <summary>
/// 15023
/// </summary>
public const uint HeaderLightsButtonVisible = 15023;
/// <summary>
/// 15024 /// 15024
/// </summary> /// </summary>
public const uint HeaderCallStatusLeftPositionVisible = 15024; public const uint HeaderCallStatusLeftPositionVisible = 15024;
@@ -463,17 +487,9 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public const uint HeaderCallStatusRightPositionVisible = 15025; public const uint HeaderCallStatusRightPositionVisible = 15025;
/// <summary> /// <summary>
/// 15026
/// </summary>
public const uint HeaderLightsButtonPress = 15026;
/// <summary>[-
/// 15027
/// </summary>
public const uint HeaderCallStatusButtonPress = 15027;
/// <summary>
/// 15028 The gear button in header /// 15028 The gear button in header
/// </summary> /// </summary>
public const uint HeaderGearButtonPress = 15028; public const uint FIXFIX_HeaderGearButtonPress_FIXFIX = 15028;
/// <summary> /// <summary>
/// 15029 the room button in header /// 15029 the room button in header
/// </summary> /// </summary>
@@ -553,15 +569,15 @@ namespace PepperDash.Essentials
/// <summary> /// <summary>
/// 15047 The "Join" button on the next meeting ribbon /// 15047 The "Join" button on the next meeting ribbon
/// </summary> /// </summary>
public const uint NextMeetingRibbonJoinPress = 15047; public const uint NextMeetingJoinPress = 15047;
/// <summary> /// <summary>
/// 15048 Dismisses the ribbon /// 15048 Dismisses the ribbon
/// </summary> /// </summary>
public const uint NextMeetingRibbonClosePress = 15048; public const uint NextMeetingModalClosePress = 15048;
/// <summary> /// <summary>
/// 15049 /// 15049
/// </summary> /// </summary>
public const uint NextMeetingRibbonVisible = 15049; public const uint NextMeetingModalVisible = 15049;
/// <summary> /// <summary>
/// 15051 /// 15051
/// </summary> /// </summary>

View File

@@ -168,7 +168,10 @@ namespace PepperDash.Essentials
/// 3916 The "active call" label /// 3916 The "active call" label
/// </summary> /// </summary>
public const uint HeaderCallStatusLabel = 3916; public const uint HeaderCallStatusLabel = 3916;
/// <summary>
/// 3919 Mesage on init page
/// </summary>
public const uint SystemInitializingMessage = 3919;
/// <summary> /// <summary>
/// 3922 /// 3922
/// </summary> /// </summary>
@@ -182,6 +185,27 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public const uint HelpPageCallButtonText = 3924; public const uint HelpPageCallButtonText = 3924;
/// <summary>
/// 3951
/// </summary>
public const uint HeaderButtonIcon1 = 3951;
/// <summary>
/// 3952
/// </summary>
public const uint HeaderButtonIcon2 = 3952;
/// <summary>
/// 3953
/// </summary>
public const uint HeaderButtonIcon3 = 3953;
/// <summary>
/// 3954
/// </summary>
public const uint HeaderButtonIcon4 = 3954;
/// <summary>
/// 3955
/// </summary>
public const uint HeaderButtonIcon5 = 3955;
/// <summary> /// <summary>
/// 3961 Name of source on display 1 /// 3961 Name of source on display 1
/// </summary> /// </summary>
@@ -202,23 +226,23 @@ namespace PepperDash.Essentials
/// <summary> /// <summary>
/// 3966 /// 3966
/// </summary> /// </summary>
public const uint NextMeetingRibbonStartText = 3966; public const uint NextMeetingStartTimeText = 3966;
/// <summary> /// <summary>
/// 3967 /// 3967
/// </summary> /// </summary>
public const uint NextMeetingRibbonEndText = 3967; public const uint NextMeetingEndTimeText = 3967;
/// <summary> /// <summary>
/// 3968 /// 3968
/// </summary> /// </summary>
public const uint NextMeetingRibbonTitleText = 3968; public const uint NextMeetingTitleText = 3968;
/// <summary> /// <summary>
/// 3969 /// 3969
/// </summary> /// </summary>
public const uint NextMettingRibbonNameText = 3969; public const uint NextMeetingNameText = 3969;
/// <summary> /// <summary>
/// 3970 /// 3970
/// </summary> /// </summary>
public const uint NextMeetingRibbonButtonLabel = 3970; public const uint NextMeetingButtonLabel = 3970;
/// <summary> /// <summary>
/// 3971 /// 3971
/// </summary> /// </summary>
@@ -227,16 +251,19 @@ namespace PepperDash.Essentials
/// 3972 /// 3972
/// </summary> /// </summary>
public const uint NextMeetingFollowingMeetingText = 3972; public const uint NextMeetingFollowingMeetingText = 3972;
/// <summary> /// <summary>
/// 3996 /// 3976
/// </summary> /// </summary>
public const uint MeetingsOrContactMethodListIcon = 3996; public const uint MeetingsOrContactMethodListIcon = 3976;
/// <summary> /// <summary>
/// 3997 /// 3977
/// </summary> /// </summary>
public const uint MeetingsOrContactMethodListTitleText = 3997; public const uint MeetingsOrContactMethodListTitleText = 3977;
// ------------------------------------
//
// MODAL JOINS 3991 - 3999
//
// ------------------------------------
} }
} }

View File

@@ -1,58 +1,58 @@
using System; //using System;
using System.Collections.Generic; //using System.Collections.Generic;
using System.Linq; //using System.Linq;
using System.Text; //using System.Text;
using Crestron.SimplSharp; //using Crestron.SimplSharp;
using Crestron.SimplSharpPro; //using Crestron.SimplSharpPro;
using Crestron.SimplSharpPro.DeviceSupport; //using Crestron.SimplSharpPro.DeviceSupport;
using PepperDash.Essentials.Core; //using PepperDash.Essentials.Core;
using PepperDash.Essentials.Core.SmartObjects; //using PepperDash.Essentials.Core.SmartObjects;
namespace PepperDash.Essentials //namespace PepperDash.Essentials
{ //{
public class SmartObjectHeaderButtonList : SmartObjectHelperBase // public class SmartObjectHeaderButtonList : SmartObjectHelperBase
{ // {
public SmartObjectHeaderButtonList(SmartObject so) // public SmartObjectHeaderButtonList(SmartObject so)
: base(so, true) // : base(so, true)
{ // {
} // }
} // }
public class HeaderListButton // public class HeaderListButton
{ // {
public BoolInputSig SelectedSig { get; private set; } // public BoolInputSig SelectedSig { get; private set; }
public BoolInputSig VisibleSig { get; private set; } // public BoolInputSig VisibleSig { get; private set; }
public BoolOutputSig OutputSig { get; private set; } // public BoolOutputSig OutputSig { get; private set; }
StringInputSig IconSig; // StringInputSig IconSig;
public HeaderListButton(SmartObjectHeaderButtonList list, uint index) // public HeaderListButton(SmartObjectHeaderButtonList list, uint index)
{ // {
var so = list.SmartObject; // var so = list.SmartObject;
OutputSig = so.BooleanOutput["Item " + index + " Pressed"]; // OutputSig = so.BooleanOutput["Item " + index + " Pressed"];
SelectedSig = so.BooleanInput["Item " + index + " Selected"]; // SelectedSig = so.BooleanInput["Item " + index + " Selected"];
VisibleSig = so.BooleanInput["Item " + index + " Visible"]; // VisibleSig = so.BooleanInput["Item " + index + " Visible"];
IconSig = so.StringInput["Set Item " + index + " Icon Serial"]; // IconSig = so.StringInput["Set Item " + index + " Icon Serial"];
} // }
public void SetIcon(string i) // public void SetIcon(string i)
{ // {
IconSig.StringValue = i; // IconSig.StringValue = i;
} // }
public void ClearIcon() // public void ClearIcon()
{ // {
IconSig.StringValue = "Blank"; // IconSig.StringValue = "Blank";
} // }
public static string Calendar = "Calendar"; // public static string Calendar = "Calendar";
public static string Camera = "Camera"; // public static string Camera = "Camera";
public static string Gear = "Gear"; // public static string Gear = "Gear";
public static string Lights = "Lights"; // public static string Lights = "Lights";
public static string Help = "Help"; // public static string Help = "Help";
public static string OnHook = "DND"; // public static string OnHook = "DND";
public static string Phone = "Phone"; // public static string Phone = "Phone";
} // }
} //}

View File

@@ -218,7 +218,7 @@ namespace PepperDash.Essentials
// ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible)); // ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible));
// Setup button // Setup button
TriList.SetSigHeldAction(UIBoolJoin.HeaderGearButtonPress, 2000, TriList.SetSigHeldAction(UIBoolJoin.FIXFIX_HeaderGearButtonPress_FIXFIX, 2000,
() => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.TechPanelSetupVisible));// ShowInterlockedModal(UIBoolJoin.TechPanelSetupVisible)); () => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.TechPanelSetupVisible));// ShowInterlockedModal(UIBoolJoin.TechPanelSetupVisible));
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () => TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
PopupInterlock.HideAndClear()); // HideCurrentInterlockedModal()); PopupInterlock.HideAndClear()); // HideCurrentInterlockedModal());

View File

@@ -232,7 +232,7 @@ namespace PepperDash.Essentials
TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () => TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () =>
ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible)); ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible));
TriList.SetSigFalseAction(UIBoolJoin.HeaderGearButtonPress, () => TriList.SetSigFalseAction(UIBoolJoin.FIXFIX_HeaderGearButtonPress_FIXFIX, () =>
ShowInterlockedModal(UIBoolJoin.VolumesPageVisible)); ShowInterlockedModal(UIBoolJoin.VolumesPageVisible));
// power-related functions // power-related functions

View File

@@ -63,8 +63,10 @@ namespace PepperDash.Essentials
BoolInputSig ShareButtonSig; BoolInputSig ShareButtonSig;
BoolInputSig EndMeetingButtonSig; BoolInputSig EndMeetingButtonSig;
HeaderListButton HeaderCallButton; //HeaderListButton HeaderCallButton;
HeaderListButton HeaderGearButton; //HeaderListButton HeaderGearButton;
StringInputSig HeaderCallButtonIconSig;
/// <summary> /// <summary>
@@ -99,7 +101,7 @@ namespace PepperDash.Essentials
/// <summary> /// <summary>
/// The list of buttons on the header. Managed with visibility only /// The list of buttons on the header. Managed with visibility only
/// </summary> /// </summary>
SmartObjectHeaderButtonList HeaderButtonsList; //SmartObjectHeaderButtonList HeaderButtonsList;
/// <summary> /// <summary>
/// The AV page mangagers that have been used, to keep them alive for later /// The AV page mangagers that have been used, to keep them alive for later
@@ -178,6 +180,16 @@ namespace PepperDash.Essentials
CTimer NextMeetingTimer; CTimer NextMeetingTimer;
/// <summary>
/// Tracks whether the user dismissed the meeting popup, while the system was on. Always false when
/// system is off.
/// </summary>
bool NextMeetingWarningWasDismissed;
/// <summary>
/// Tracks the last meeting that was cancelled
/// </summary>
Meeting LastMeetingDismissed;
/// <summary> /// <summary>
@@ -204,7 +216,7 @@ namespace PepperDash.Essentials
// buttons are added in SetCurrentRoom // buttons are added in SetCurrentRoom
HeaderButtonsList = new SmartObjectHeaderButtonList(TriList.SmartObjects[UISmartObjectJoin.HeaderButtonList]); //HeaderButtonsList = new SmartObjectHeaderButtonList(TriList.SmartObjects[UISmartObjectJoin.HeaderButtonList]);
SetupActivityFooterWhenRoomOff(); SetupActivityFooterWhenRoomOff();
@@ -271,11 +283,13 @@ namespace PepperDash.Essentials
if (CurrentRoom.OnFeedback.BoolValue) if (CurrentRoom.OnFeedback.BoolValue)
{ {
TriList.SetBool(UIBoolJoin.TapToBeginVisible, false); TriList.SetBool(UIBoolJoin.TapToBeginVisible, false);
SetupActivityFooterWhenRoomOn();
} }
else else
{ {
TriList.SetBool(UIBoolJoin.StartPageVisible, true); TriList.SetBool(UIBoolJoin.StartPageVisible, true);
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true); TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
SetupActivityFooterWhenRoomOff();
} }
ShowCurrentDisplayModeSigsInUse(); ShowCurrentDisplayModeSigsInUse();
@@ -288,15 +302,15 @@ namespace PepperDash.Essentials
TriList.SetSigFalseAction(UIBoolJoin.VolumeDefaultPress, () => CurrentRoom.SetDefaultLevels()); TriList.SetSigFalseAction(UIBoolJoin.VolumeDefaultPress, () => CurrentRoom.SetDefaultLevels());
TriList.SetString(UIStringJoin.AdvancedVolumeSlider1Text, "Room"); TriList.SetString(UIStringJoin.AdvancedVolumeSlider1Text, "Room");
if (TriList is CrestronApp) //if (TriList is CrestronApp)
TriList.BooleanInput[UIBoolJoin.GearButtonVisible].BoolValue = false; // TriList.BooleanInput[UIBoolJoin.GearButtonVisible].BoolValue = false;
else //else
TriList.BooleanInput[UIBoolJoin.GearButtonVisible].BoolValue = true; // TriList.BooleanInput[UIBoolJoin.GearButtonVisible].BoolValue = true;
// power-related functions // power-related functions
// Note: some of these are not directly-related to the huddle space UI, but are held over // Note: some of these are not directly-related to the huddle space UI, but are held over
// in case // in case
TriList.SetSigFalseAction(UIBoolJoin.ShowPowerOffPress, PowerButtonPressed); TriList.SetSigFalseAction(UIBoolJoin.ShowPowerOffPress, EndMeetingPress);
TriList.SetSigFalseAction(UIBoolJoin.DisplayPowerTogglePress, () => TriList.SetSigFalseAction(UIBoolJoin.DisplayPowerTogglePress, () =>
{ {
@@ -304,7 +318,7 @@ namespace PepperDash.Essentials
(CurrentRoom.DefaultDisplay as IPower).PowerToggle(); (CurrentRoom.DefaultDisplay as IPower).PowerToggle();
}); });
TriList.SetSigFalseAction(UIBoolJoin.HeaderCallStatusButtonPress, ShowActiveCallsList ); //TriList.SetSigFalseAction(UIBoolJoin.HeaderCallStatusButtonPress, ShowActiveCallsList );
SetupNextMeetingTimer(); SetupNextMeetingTimer();
@@ -316,6 +330,7 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
void ShowActiveCallsList() void ShowActiveCallsList()
{ {
TriList.SetBool(UIBoolJoin.CallEndAllConfirmVisible, true);
if(PopupInterlock.CurrentJoin == UIBoolJoin.HeaderActiveCallsListVisible) if(PopupInterlock.CurrentJoin == UIBoolJoin.HeaderActiveCallsListVisible)
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HeaderActiveCallsListVisible); PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HeaderActiveCallsListVisible);
else else
@@ -407,23 +422,49 @@ namespace PepperDash.Essentials
var ss = CurrentRoom.ScheduleSource; var ss = CurrentRoom.ScheduleSource;
if (ss != null) if (ss != null)
{ {
NextMeetingTimer = new CTimer(o => NextMeetingTimer = new CTimer(o => ShowNextMeetingCallback(), null, 0, 60000);
}
}
/// <summary>
///
/// </summary>
void ShowNextMeetingCallback()
{ {
if (CurrentRoom.OnFeedback.BoolValue)
return;
// Every 60 seconds, check meetings list for the closest, joinable meeting // Every 60 seconds, check meetings list for the closest, joinable meeting
var ss = CurrentRoom.ScheduleSource;
var meetings = ss.CodecSchedule.Meetings; 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) if (meetings.Count > 0)
{ {
var meeting = meetings.Aggregate((m1, m2) => m1.StartTime < m2.StartTime ? m1 : m2); var meeting = meetings.FirstOrDefault(m => m.Joinable);
if (meeting != null && meeting.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)))
{ {
TriList.SetString(UIStringJoin.NextMeetingRibbonStartText, meeting.StartTime.ToShortTimeString()); Debug.Console(0, "****** Ignoring previously cancelled meeting warning ******");
TriList.SetString(UIStringJoin.NextMeetingRibbonEndText, meeting.EndTime.ToShortTimeString()); return;
TriList.SetString(UIStringJoin.NextMeetingRibbonTitleText, meeting.Title); }
TriList.SetString(UIStringJoin.NextMettingRibbonNameText, meeting.Organizer);
TriList.SetString(UIStringJoin.NextMeetingRibbonButtonLabel, "Join"); LastMeetingDismissed = null;
TriList.SetSigFalseAction(UIBoolJoin.NextMeetingRibbonJoinPress, () => 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(); HideNextMeetingPopup();
RoomOnAndDialMeeting(meeting); RoomOnAndDialMeeting(meeting);
@@ -434,27 +475,25 @@ namespace PepperDash.Essentials
HideNextMeetingPopup(); HideNextMeetingPopup();
CalendarPress(); CalendarPress();
}); });
if (meetings.Count > 1) var indexOfNext = meetings.IndexOf(meeting) + 1;
// indexOf = 3, 4 meetings :
if (indexOfNext < meetings.Count)
{ {
TriList.SetString(UIStringJoin.NextMeetingFollowingMeetingText, TriList.SetString(UIStringJoin.NextMeetingFollowingMeetingText,
meetings[1].StartTime.ToShortTimeString()); meetings[indexOfNext].StartTime.ToShortTimeString());
} }
TriList.SetSigFalseAction(UIBoolJoin.NextMeetingModalClosePress, () =>
ShowNextMeetingPopup();
}
}
}, null, 0, 60000);
}
}
/// <summary>
///
/// </summary>
void ShowNextMeetingPopup()
{ {
TriList.SetSigFalseAction(UIBoolJoin.NextMeetingRibbonClosePress, HideNextMeetingPopup); // Mark the meeting to not re-harass the user
TriList.SetBool(UIBoolJoin.NextMeetingRibbonVisible, true); if(CurrentRoom.OnFeedback.BoolValue)
LastMeetingDismissed = meeting;
HideNextMeetingPopup();
});
TriList.SetBool(UIBoolJoin.NextMeetingModalVisible, true);
}
}
} }
/// <summary> /// <summary>
@@ -462,7 +501,8 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
void HideNextMeetingPopup() void HideNextMeetingPopup()
{ {
TriList.SetBool(UIBoolJoin.NextMeetingRibbonVisible, false); TriList.SetBool(UIBoolJoin.NextMeetingModalVisible, false);
} }
/// <summary> /// <summary>
@@ -541,7 +581,7 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 3, ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 3,
b => { if (!b) ActivityCallButtonPressed(); })); b => { if (!b) ActivityCallButtonPressed(); }));
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(3, ActivityFooterSrl, 4, ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(3, ActivityFooterSrl, 4,
b => { if (!b) PowerButtonPressed(); })); b => { if (!b) EndMeetingPress(); }));
ActivityFooterSrl.Count = 3; ActivityFooterSrl.Count = 3;
TriList.SetUshort(UIUshortJoin.PresentationStagingCaretMode, 2); // center TriList.SetUshort(UIUshortJoin.PresentationStagingCaretMode, 2); // center
TriList.SetUshort(UIUshortJoin.CallStagingCaretMode, 0); // left -2 TriList.SetUshort(UIUshortJoin.CallStagingCaretMode, 0); // left -2
@@ -562,20 +602,18 @@ namespace PepperDash.Essentials
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
void ActivityCallButtonPressed() public void ActivityCallButtonPressed()
{ {
if (VCDriver.IsVisible) if (VCDriver.IsVisible)
return; return;
HideLogo(); HideLogo();
HideNextMeetingPopup();
TriList.SetBool(UIBoolJoin.StartPageVisible, false); TriList.SetBool(UIBoolJoin.StartPageVisible, false);
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, false); TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, false);
TriList.SetBool(UIBoolJoin.SelectASourceVisible, false); TriList.SetBool(UIBoolJoin.SelectASourceVisible, false);
if (CurrentSourcePageManager != null) if (CurrentSourcePageManager != null)
CurrentSourcePageManager.Hide(); CurrentSourcePageManager.Hide();
if (!CurrentRoom.OnFeedback.BoolValue) PowerOnFromCall();
{
CurrentRoom.RunDefaultCallRoute();
}
CurrentMode = UiDisplayMode.Call; CurrentMode = UiDisplayMode.Call;
SetActivityFooterFeedbacks(); SetActivityFooterFeedbacks();
VCDriver.Show(); VCDriver.Show();
@@ -588,6 +626,7 @@ namespace PepperDash.Essentials
{ {
if (VCDriver.IsVisible) if (VCDriver.IsVisible)
VCDriver.Hide(); VCDriver.Hide();
HideNextMeetingPopup();
TriList.SetBool(UIBoolJoin.StartPageVisible, false); TriList.SetBool(UIBoolJoin.StartPageVisible, false);
TriList.SetBool(UIBoolJoin.CallStagingBarVisible, false); TriList.SetBool(UIBoolJoin.CallStagingBarVisible, false);
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, true); TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, true);
@@ -609,6 +648,17 @@ namespace PepperDash.Essentials
SetActivityFooterFeedbacks(); SetActivityFooterFeedbacks();
} }
/// <summary>
/// Powers up the system to the codec route, if not already on.
/// </summary>
void PowerOnFromCall()
{
if (!CurrentRoom.OnFeedback.BoolValue)
{
CurrentRoom.RunDefaultCallRoute();
}
}
/// <summary> /// <summary>
/// Shows all sigs that are in CurrentDisplayModeSigsInUse /// Shows all sigs that are in CurrentDisplayModeSigsInUse
/// </summary> /// </summary>
@@ -679,7 +729,7 @@ namespace PepperDash.Essentials
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public void PowerButtonPressed() public void EndMeetingPress()
{ {
if (!CurrentRoom.OnFeedback.BoolValue if (!CurrentRoom.OnFeedback.BoolValue
|| CurrentRoom.ShutdownPromptTimer.IsRunningFeedback.BoolValue) || CurrentRoom.ShutdownPromptTimer.IsRunningFeedback.BoolValue)
@@ -688,6 +738,16 @@ namespace PepperDash.Essentials
CurrentRoom.StartShutdown(eShutdownType.Manual); CurrentRoom.StartShutdown(eShutdownType.Manual);
} }
/// <summary>
/// Puts away modals and things that might be up when call comes in
/// </summary>
public void PrepareForCodecIncomingCall()
{
if (PowerDownModal != null && PowerDownModal.ModalIsVisible)
PowerDownModal.CancelDialog();
PopupInterlock.Hide();
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
@@ -842,7 +902,8 @@ namespace PepperDash.Essentials
var config = ConfigReader.ConfigObject.SourceLists; var config = ConfigReader.ConfigObject.SourceLists;
if (config.ContainsKey(_CurrentRoom.SourceListKey)) if (config.ContainsKey(_CurrentRoom.SourceListKey))
{ {
var srcList = config[_CurrentRoom.SourceListKey]; var srcList = config[_CurrentRoom.SourceListKey].OrderBy(kv => kv.Value.Order);
// Setup sources list // Setup sources list
uint i = 1; // counter for UI list uint i = 1; // counter for UI list
foreach (var kvp in srcList) foreach (var kvp in srcList)
@@ -851,13 +912,6 @@ namespace PepperDash.Essentials
if (!srcConfig.IncludeInSourceList) // Skip sources marked this way if (!srcConfig.IncludeInSourceList) // Skip sources marked this way
continue; continue;
//var actualSource = DeviceManager.GetDeviceForKey(srcConfig.SourceKey) as Device;
//if (actualSource == null)
//{
// Debug.Console(1, "Cannot assign missing source '{0}' to source UI list",
// srcConfig.SourceKey);
// continue;
//}
var routeKey = kvp.Key; var routeKey = kvp.Key;
var item = new SubpageReferenceListSourceItem(i++, SourceStagingSrl, srcConfig, var item = new SubpageReferenceListSourceItem(i++, SourceStagingSrl, srcConfig,
b => { if (!b) UiSelectSource(routeKey); }); b => { if (!b) UiSelectSource(routeKey); });
@@ -903,10 +957,10 @@ namespace PepperDash.Essentials
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true); TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
var roomConf = CurrentRoom.Config; var roomConf = CurrentRoom.Config;
//
HeaderGearButton = new HeaderListButton(HeaderButtonsList, 5); // Gear
HeaderGearButton.SetIcon(HeaderListButton.Gear); TriList.SetString(UIStringJoin.HeaderButtonIcon5, "Gear");
HeaderGearButton.OutputSig.SetSigHeldAction(2000, TriList.SetSigHeldAction(UIBoolJoin.HeaderIcon5Press, 2000,
ShowTech, ShowTech,
null, null,
() => () =>
@@ -916,10 +970,23 @@ namespace PepperDash.Essentials
else else
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible); PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible);
}); });
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () => TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
PopupInterlock.HideAndClear()); PopupInterlock.HideAndClear());
//HeaderGearButton = new HeaderListButton(HeaderButtonsList, 5);
//HeaderGearButton.SetIcon(HeaderListButton.Gear);
//HeaderGearButton.OutputSig.SetSigHeldAction(2000,
// ShowTech,
// null,
// () =>
// {
// if (CurrentRoom.OnFeedback.BoolValue)
// PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible);
// else
// PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible);
// });
// Help button and popup // Help button and popup
if (CurrentRoom.Config.Help != null) if (CurrentRoom.Config.Help != null)
{ {
@@ -938,9 +1005,8 @@ namespace PepperDash.Essentials
TriList.SetString(UIStringJoin.HelpPageCallButtonText, null); TriList.SetString(UIStringJoin.HelpPageCallButtonText, null);
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress); TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
} }
var helpButton = new HeaderListButton(HeaderButtonsList, 4); TriList.SetString(UIStringJoin.HeaderButtonIcon4, "Help");
helpButton.SetIcon(HeaderListButton.Help); TriList.SetSigFalseAction(UIBoolJoin.HeaderIcon4Press, () =>
helpButton.OutputSig.SetSigFalseAction(() =>
{ {
string message = null; string message = null;
var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey) var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey)
@@ -952,7 +1018,21 @@ namespace PepperDash.Essentials
//TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message; //TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message;
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible); PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible);
}); });
uint nextIndex = 3; //var helpButton = new HeaderListButton(HeaderButtonsList, 4);
//helpButton.SetIcon(HeaderListButton.Help);
//helpButton.OutputSig.SetSigFalseAction(() =>
//{
// 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 nextJoin = 3953;
// Lights button // Lights button
//if (WHATEVER MAKES LIGHTS WORK) //if (WHATEVER MAKES LIGHTS WORK)
@@ -964,36 +1044,47 @@ namespace PepperDash.Essentials
// Calendar button // Calendar button
if (_CurrentRoom.ScheduleSource != null) // ******************* Do we need a config option here as well? if (_CurrentRoom.ScheduleSource != null) // ******************* Do we need a config option here as well?
{ {
var calBut = new HeaderListButton(HeaderButtonsList, nextIndex); //var calBut = new HeaderListButton(HeaderButtonsList, nextIndex);
calBut.SetIcon(HeaderListButton.Calendar); //calBut.SetIcon(HeaderListButton.Calendar);
calBut.OutputSig.SetSigFalseAction(CalendarPress); //calBut.OutputSig.SetSigFalseAction(CalendarPress);
nextIndex--;
TriList.SetString(nextJoin, "Calendar");
TriList.SetSigFalseAction(nextJoin, CalendarPress);
nextJoin--;
} }
// Call button // Call button
HeaderCallButton = new HeaderListButton(HeaderButtonsList, nextIndex); //HeaderCallButton = new HeaderListButton(HeaderButtonsList, nextJoin);
HeaderCallButton.SetIcon(HeaderListButton.OnHook); //HeaderCallButton.SetIcon(HeaderListButton.OnHook);
HeaderCallButton.OutputSig.SetSigFalseAction(ShowActiveCallsList); //HeaderCallButton.OutputSig.SetSigFalseAction(ShowActiveCallsList);
nextIndex--; TriList.SetString(nextJoin, "DND");
TriList.SetSigFalseAction(nextJoin, ShowActiveCallsList);
HeaderCallButtonIconSig = TriList.StringInput[nextJoin];
nextJoin--;
// blank any that remain // blank any that remain
for (var i = nextIndex; i > 0; i--) for (var i = nextJoin; i > 3950; i--)
{ {
var blankBut = new HeaderListButton(HeaderButtonsList, i); //var blankBut = new HeaderListButton(HeaderButtonsList, i);
blankBut.ClearIcon(); //blankBut.ClearIcon();
blankBut.OutputSig.SetSigFalseAction(() => { }); //blankBut.OutputSig.SetSigFalseAction(() => { });
TriList.SetString(i, "Blank");
TriList.SetSigFalseAction(i, () => { });
} }
// Set Call Status Subpage Position // Set Call Status Subpage Position
if (nextIndex == 1) if (nextJoin == 3951)
{ {
// Set to right position // Set to right position
TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, false); TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, false);
TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, true); TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, true);
} }
else if (nextIndex == 0) else if (nextJoin == 3950)
{ {
// Set to left position // Set to left position
TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, true); TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, true);
@@ -1010,13 +1101,16 @@ namespace PepperDash.Essentials
// Set mode of header button // Set mode of header button
if (!codec.IsInCall) if (!codec.IsInCall)
{ {
HeaderCallButton.SetIcon(HeaderListButton.OnHook); HeaderCallButtonIconSig.StringValue = "DND";
//HeaderCallButton.SetIcon(HeaderListButton.OnHook);
} }
else if (codec.ActiveCalls.Any(c => c.Type == eCodecCallType.Video)) else if (codec.ActiveCalls.Any(c => c.Type == eCodecCallType.Video))
HeaderCallButton.SetIcon(HeaderListButton.Camera); HeaderCallButtonIconSig.StringValue = "Misc-06_Dark";
//HeaderCallButton.SetIcon(HeaderListButton.Camera);
//TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 2); //TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 2);
else else
HeaderCallButton.SetIcon(HeaderListButton.Phone); HeaderCallButtonIconSig.StringValue = "Misc-09_Dark";
//HeaderCallButton.SetIcon(HeaderListButton.Phone);
//TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 1); //TriList.SetUshort(UIUshortJoin.CallHeaderButtonMode, 1);
// Set the call status text // Set the call status text
@@ -1056,6 +1150,7 @@ namespace PepperDash.Essentials
MeetingOrContactMethodModalSrl.GetBoolFeedbackSig(i, 1).SetSigFalseAction(() => MeetingOrContactMethodModalSrl.GetBoolFeedbackSig(i, 1).SetSigFalseAction(() =>
{ {
PopupInterlock.Hide(); PopupInterlock.Hide();
ActivityCallButtonPressed();
var d = CurrentRoom.ScheduleSource as VideoCodecBase; var d = CurrentRoom.ScheduleSource as VideoCodecBase;
if (d != null) if (d != null)
RoomOnAndDialMeeting(mm); RoomOnAndDialMeeting(mm);
@@ -1091,12 +1186,12 @@ namespace PepperDash.Essentials
var value = _CurrentRoom.OnFeedback.BoolValue; var value = _CurrentRoom.OnFeedback.BoolValue;
TriList.BooleanInput[UIBoolJoin.RoomIsOn].BoolValue = value; TriList.BooleanInput[UIBoolJoin.RoomIsOn].BoolValue = value;
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = !value;
if (value) //ON if (value) //ON
{ {
SetupActivityFooterWhenRoomOn(); SetupActivityFooterWhenRoomOn();
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
//TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.VolumeDualMute1Visible].BoolValue = true; TriList.BooleanInput[UIBoolJoin.VolumeDualMute1Visible].BoolValue = true;
} }
@@ -1108,9 +1203,10 @@ namespace PepperDash.Essentials
SetupActivityFooterWhenRoomOff(); SetupActivityFooterWhenRoomOff();
ShowLogo(); ShowLogo();
SetActivityFooterFeedbacks(); SetActivityFooterFeedbacks();
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
TriList.BooleanInput[UIBoolJoin.VolumeDualMute1Visible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.VolumeDualMute1Visible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = false;
// Clear this so that the pesky meeting warning can resurface every minute when off
LastMeetingDismissed = null;
} }
} }
@@ -1338,5 +1434,13 @@ namespace PepperDash.Essentials
void HideNotificationRibbon(); void HideNotificationRibbon();
void ComputeHeaderCallStatus(VideoCodecBase codec); void ComputeHeaderCallStatus(VideoCodecBase codec);
SubpageReferenceList MeetingOrContactMethodModalSrl { get; } SubpageReferenceList MeetingOrContactMethodModalSrl { get; }
/// <summary>
/// Exposes the ability to switch into call mode
/// </summary>
void ActivityCallButtonPressed();
/// <summary>
/// Allows the codec to trigger the main UI to clear up if call is coming in.
/// </summary>
void PrepareForCodecIncomingCall();
} }
} }

View File

@@ -33,7 +33,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
/// <summary> /// <summary>
/// To drive UI elements outside of this driver that may be dependent on this. /// To drive UI elements outside of this driver that may be dependent on this.
/// </summary> /// </summary>
BoolFeedback InCall; //BoolFeedback InCall;
BoolFeedback LocalPrivacyIsMuted; BoolFeedback LocalPrivacyIsMuted;
/// <summary> /// <summary>
@@ -120,7 +120,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
else else
codec.IsReadyChange += (o, a) => Codec_IsReady(); codec.IsReadyChange += (o, a) => Codec_IsReady();
InCall = new BoolFeedback(() => false); //InCall = new BoolFeedback(() => false);
LocalPrivacyIsMuted = new BoolFeedback(() => false); LocalPrivacyIsMuted = new BoolFeedback(() => false);
VCControlsInterlock = new JoinedSigInterlock(triList); VCControlsInterlock = new JoinedSigInterlock(triList);
@@ -160,7 +160,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
else else
{ {
Parent.Keyboard.DisableGoButton(); Parent.Keyboard.DisableGoButton();
return "Tap For Search Keyboard"; return "Tap for keyboard";
} }
}); });
SearchStringFeedback.LinkInputSig(triList.StringInput[UIStringJoin.CodecDirectorySearchEntryText]); SearchStringFeedback.LinkInputSig(triList.StringInput[UIStringJoin.CodecDirectorySearchEntryText]);
@@ -189,10 +189,6 @@ namespace PepperDash.Essentials.UIDrivers.VC
CallSharingInfoTextFeedback.LinkInputSig(triList.StringInput[UIStringJoin.CallSharedSourceNameText]); CallSharingInfoTextFeedback.LinkInputSig(triList.StringInput[UIStringJoin.CallSharedSourceNameText]);
TriList.SetSigFalseAction(UIBoolJoin.CallStopSharingPress, Codec.StopSharing); TriList.SetSigFalseAction(UIBoolJoin.CallStopSharingPress, Codec.StopSharing);
// Address and number
} }
/// <summary> /// <summary>
@@ -260,7 +256,8 @@ namespace PepperDash.Essentials.UIDrivers.VC
DialStringTextCheckEnables(); DialStringTextCheckEnables();
Parent.ShowNotificationRibbon("Connected", 2000); Parent.ShowNotificationRibbon("Connected", 2000);
StagingButtonsFeedbackInterlock.ShowInterlocked(UIBoolJoin.VCStagingKeypadPress); StagingButtonsFeedbackInterlock.ShowInterlocked(UIBoolJoin.VCStagingKeypadPress);
VCControlsInterlock.ShowInterlocked(UIBoolJoin.VCKeypadVisible); ShowKeypad();
//VCControlsInterlock.ShowInterlocked(UIBoolJoin.VCKeypadVisible);
break; break;
case eCodecCallStatus.Connecting: case eCodecCallStatus.Connecting:
// fire at SRL item // fire at SRL item
@@ -273,6 +270,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
if (!Codec.IsInCall) if (!Codec.IsInCall)
{ {
KeypadMode = eKeypadMode.Dial; KeypadMode = eKeypadMode.Dial;
// show keypad if we're in call UI mode
ShowKeypad(); ShowKeypad();
DialStringBuilder.Remove(0, DialStringBuilder.Length); DialStringBuilder.Remove(0, DialStringBuilder.Length);
DialStringFeedback.FireUpdate(); DialStringFeedback.FireUpdate();
@@ -302,15 +300,21 @@ namespace PepperDash.Essentials.UIDrivers.VC
break; break;
} }
TriList.UShortInput[UIUshortJoin.VCStagingConnectButtonMode].UShortValue = (ushort)(Codec.IsInCall ? 1 : 0); TriList.UShortInput[UIUshortJoin.VCStagingConnectButtonMode].UShortValue = (ushort)(Codec.IsInCall ? 1 : 0);
StagingBarsInterlock.ShowInterlocked(Codec.IsInCall ?
UIBoolJoin.VCStagingActivePopoverVisible : UIBoolJoin.VCStagingInactivePopoverVisible);
uint stageJoin;
if (Codec.IsInCall)
stageJoin = UIBoolJoin.VCStagingActivePopoverVisible;
else
stageJoin = UIBoolJoin.VCStagingInactivePopoverVisible;
if (IsVisible)
StagingBarsInterlock.ShowInterlocked(stageJoin);
else
StagingBarsInterlock.SetButDontShow(stageJoin);
Parent.ComputeHeaderCallStatus(Codec); Parent.ComputeHeaderCallStatus(Codec);
// Update active call list // Update active call list
UpdateHeaderActiveCallList(); UpdateHeaderActiveCallList();
} }
/// <summary> /// <summary>
@@ -344,6 +348,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
/// </summary> /// </summary>
void ShowIncomingModal(CodecActiveCallItem call) void ShowIncomingModal(CodecActiveCallItem call)
{ {
Parent.PrepareForCodecIncomingCall();
IncomingCallModal = new ModalDialog(TriList); IncomingCallModal = new ModalDialog(TriList);
string msg; string msg;
string icon; string icon;
@@ -363,11 +368,21 @@ namespace PepperDash.Essentials.UIDrivers.VC
if (b == 1) if (b == 1)
Codec.RejectCall(call); Codec.RejectCall(call);
else //2 else //2
Codec.AcceptCall(call); AcceptIncomingCall(call);
IncomingCallModal = null; IncomingCallModal = null;
}); });
} }
/// <summary>
///
/// </summary>
void AcceptIncomingCall(CodecActiveCallItem call)
{
Parent.PrepareForCodecIncomingCall();
Parent.ActivityCallButtonPressed();
Codec.AcceptCall(call);
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
@@ -814,7 +829,6 @@ namespace PepperDash.Essentials.UIDrivers.VC
else if (e.SpecialKey == KeyboardSpecialKey.GoButton) else if (e.SpecialKey == KeyboardSpecialKey.GoButton)
{ {
ConnectPress(); ConnectPress();
Parent.Keyboard.Hide();
} }
} }
DialStringFeedback.FireUpdate(); DialStringFeedback.FireUpdate();
@@ -884,14 +898,15 @@ namespace PepperDash.Essentials.UIDrivers.VC
} }
/// <summary> /// <summary>
/// shows the appropriate keypad depending on mode /// shows the appropriate keypad depending on mode and whether visible
/// </summary> /// </summary>
void ShowKeypad() void ShowKeypad()
{ {
if(CodecHasFavorites) uint join = Codec.IsInCall ? UIBoolJoin.VCKeypadVisible : UIBoolJoin.VCKeypadWithFavoritesVisible;
VCControlsInterlock.ShowInterlocked(UIBoolJoin.VCKeypadWithFavoritesVisible); if (IsVisible)
VCControlsInterlock.ShowInterlocked(join);
else else
VCControlsInterlock.ShowInterlocked(UIBoolJoin.VCKeypadVisible); VCControlsInterlock.SetButDontShow(join);
StagingButtonsFeedbackInterlock.ShowInterlocked(UIBoolJoin.VCStagingKeypadPress); StagingButtonsFeedbackInterlock.ShowInterlocked(UIBoolJoin.VCStagingKeypadPress);
} }
@@ -919,6 +934,8 @@ namespace PepperDash.Essentials.UIDrivers.VC
/// </summary> /// </summary>
void ConnectPress() void ConnectPress()
{ {
if (Parent.Keyboard != null)
Parent.Keyboard.Hide();
Codec.Dial(DialStringBuilder.ToString()); Codec.Dial(DialStringBuilder.ToString());
} }
@@ -941,6 +958,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
DialStringFeedback.FireUpdate(); DialStringFeedback.FireUpdate();
// no delete key in this mode! // no delete key in this mode!
} }
DialStringTextCheckEnables();
} }
/// <summary> /// <summary>
@@ -1096,7 +1114,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
{ {
if (DialStringBuilder.Length == 0 && !Codec.IsInCall) if (DialStringBuilder.Length == 0 && !Codec.IsInCall)
{ {
return "Dial or Tap to Show Keyboard"; return "Tap for keyboard";
} }
if(Regex.Match(ds, @"^\d{4,7}$").Success) // 456-7890 if(Regex.Match(ds, @"^\d{4,7}$").Success) // 456-7890
return string.Format("{0}-{1}", ds.Substring(0, 3), ds.Substring(3)); return string.Format("{0}-{1}", ds.Substring(0, 3), ds.Substring(3));