Working through little details on ecs-213

This commit is contained in:
Heath Volmer
2017-02-21 09:14:03 -07:00
parent a54498091b
commit 250e50e393
24 changed files with 560 additions and 241 deletions

View File

@@ -62,7 +62,7 @@ namespace PepperDash.Essentials.Fusion
Room.OnFeedback.LinkInputSig(FusionRoom.SystemPowerOn.InputSig); Room.OnFeedback.LinkInputSig(FusionRoom.SystemPowerOn.InputSig);
SourceNameSig = FusionRoom.CreateOffsetStringSig(50, "Source - Name", eSigIoMask.InputSigOnly); SourceNameSig = FusionRoom.CreateOffsetStringSig(50, "Source - Name", eSigIoMask.InputSigOnly);
// Don't think we need to get current status of this as nothing should be alive yet. // Don't think we need to get current status of this as nothing should be alive yet.
Room.CurrentSourceInfoChange += new SourceInfoChangeHandler(Room_CurrentSourceInfoChange); Room.CurrentSingleSourceChange += new SourceInfoChangeHandler(Room_CurrentSourceInfoChange);
FusionRoom.SystemPowerOn.OutputSig.SetSigFalseAction(Room.PowerOnToDefaultOrLastSource); FusionRoom.SystemPowerOn.OutputSig.SetSigFalseAction(Room.PowerOnToDefaultOrLastSource);

View File

@@ -12,7 +12,7 @@ namespace PepperDash.Essentials
public class EssentialsHuddleSpaceRoom : EssentialsRoomBase, IHasCurrentSourceInfoChange public class EssentialsHuddleSpaceRoom : EssentialsRoomBase, IHasCurrentSourceInfoChange
{ {
public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange; public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange;
public event SourceInfoChangeHandler CurrentSourceInfoChange; public event SourceInfoChangeHandler CurrentSingleSourceChange;
public EssentialsRoomPropertiesConfig Config { get; private set; } public EssentialsRoomPropertiesConfig Config { get; private set; }
@@ -70,7 +70,7 @@ namespace PepperDash.Essentials
{ {
if (value == _CurrentSourceInfo) return; if (value == _CurrentSourceInfo) return;
var handler = CurrentSourceInfoChange; var handler = CurrentSingleSourceChange;
// remove from in-use tracker, if so equipped // remove from in-use tracker, if so equipped
if(_CurrentSourceInfo != null && _CurrentSourceInfo.SourceDevice is IInUseTracking) if(_CurrentSourceInfo != null && _CurrentSourceInfo.SourceDevice is IInUseTracking)
(_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.RemoveUser(this, "control"); (_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.RemoveUser(this, "control");

View File

@@ -12,7 +12,9 @@ namespace PepperDash.Essentials
public class EssentialsPresentationRoom : EssentialsRoomBase, IHasCurrentSourceInfoChange public class EssentialsPresentationRoom : EssentialsRoomBase, IHasCurrentSourceInfoChange
{ {
public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange; public event EventHandler<VolumeDeviceChangeEventArgs> CurrentVolumeDeviceChange;
public event SourceInfoChangeHandler CurrentSourceInfoChange; public event SourceInfoChangeHandler CurrentSingleSourceChange;
public event SourceInfoChangeHandler CurrentDisplay1SourceChange;
public event SourceInfoChangeHandler CurrentDisplay2SourceChange;
public EssentialsPresentationRoomPropertiesConfig Config { get; private set; } public EssentialsPresentationRoomPropertiesConfig Config { get; private set; }
@@ -72,33 +74,72 @@ namespace PepperDash.Essentials
IBasicVolumeControls _CurrentAudioDevice; IBasicVolumeControls _CurrentAudioDevice;
/// <summary> /// <summary>
/// The SourceListItem last run - containing names and icons /// The SourceListItem last run - containing names and icons. The complex setter is
/// to add/remove this room to the source's InUseTracking, if it is capable
/// </summary> /// </summary>
public SourceListItem CurrentSourceInfo public SourceListItem CurrentSingleSourceInfo
{ {
get { return _CurrentSourceInfo; } get { return _CurrentSingleSourceInfo; }
private set private set
{ {
if (value == _CurrentSourceInfo) return; if (value == _CurrentSingleSourceInfo) return;
var handler = CurrentSourceInfoChange; var handler = CurrentSingleSourceChange;
// remove from in-use tracker, if so equipped // remove from in-use tracker, if so equipped
if(_CurrentSourceInfo != null && _CurrentSourceInfo.SourceDevice is IInUseTracking) if(_CurrentSingleSourceInfo != null && _CurrentSingleSourceInfo.SourceDevice is IInUseTracking)
(_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.RemoveUser(this, "control"); (_CurrentSingleSourceInfo.SourceDevice as IInUseTracking).InUseTracker.RemoveUser(this, "control");
if (handler != null) if (handler != null)
handler(this, _CurrentSourceInfo, ChangeType.WillChange); handler(this, _CurrentSingleSourceInfo, ChangeType.WillChange);
_CurrentSourceInfo = value; _CurrentSingleSourceInfo = value;
// add to in-use tracking // add to in-use tracking
if (_CurrentSourceInfo != null && _CurrentSourceInfo.SourceDevice is IInUseTracking) if (_CurrentSingleSourceInfo != null && _CurrentSingleSourceInfo.SourceDevice is IInUseTracking)
(_CurrentSourceInfo.SourceDevice as IInUseTracking).InUseTracker.AddUser(this, "control"); (_CurrentSingleSourceInfo.SourceDevice as IInUseTracking).InUseTracker.AddUser(this, "control");
if (handler != null) if (handler != null)
handler(this, _CurrentSourceInfo, ChangeType.DidChange); handler(this, _CurrentSingleSourceInfo, ChangeType.DidChange);
} }
} }
SourceListItem _CurrentSourceInfo; SourceListItem _CurrentSingleSourceInfo;
public SourceListItem Display1SourceInfo
{
get { return _Display1SourceInfo; }
set
{
if (value == _Display1SourceInfo) return;
var handler = CurrentDisplay1SourceChange;
if (handler != null)
handler(this, _Display1SourceInfo, ChangeType.WillChange);
_Display1SourceInfo = value;
if (handler != null)
handler(this, _Display1SourceInfo, ChangeType.DidChange);
}
}
SourceListItem _Display1SourceInfo;
public SourceListItem Display2SourceInfo
{
get { return _Display2SourceInfo; }
set
{
if (value == _Display2SourceInfo) return;
var handler = CurrentDisplay2SourceChange;
if (handler != null)
handler(this, _Display2SourceInfo, ChangeType.WillChange);
_Display2SourceInfo = value;
if (handler != null)
handler(this, _Display2SourceInfo, ChangeType.DidChange);
}
}
SourceListItem _Display2SourceInfo;
/// <summary> /// <summary>
/// ///
@@ -124,8 +165,14 @@ namespace PepperDash.Essentials
DefaultVolumeControls = (defaultAudio as IHasVolumeDevice).VolumeDevice; DefaultVolumeControls = (defaultAudio as IHasVolumeDevice).VolumeDevice;
OnFeedback = new BoolFeedback(() => OnFeedback = new BoolFeedback(() =>
{ return CurrentSourceInfo != null { return (CurrentSingleSourceInfo != null
&& CurrentSourceInfo.Type == eSourceListItemType.Route; }); && CurrentSingleSourceInfo.Type != eSourceListItemType.Off)
|| (Display1SourceInfo != null
&& Display1SourceInfo.Type != eSourceListItemType.Off)
|| (Display2SourceInfo != null
&& Display2SourceInfo.Type != eSourceListItemType.Off);
});
SourceListKey = "default"; SourceListKey = "default";
EnablePowerOnToLastSource = true; EnablePowerOnToLastSource = true;
} }
@@ -143,11 +190,27 @@ namespace PepperDash.Essentials
else else
DoVideoRoute("$off", display.Key); DoVideoRoute("$off", display.Key);
} }
Display1SourceInfo = sourceItem;
CurrentSourceInfo = sourceItem; Display2SourceInfo = sourceItem;
CurrentSingleSourceInfo = sourceItem;
OnFeedback.FireUpdate(); OnFeedback.FireUpdate();
} }
public void SourceToDisplay1(SourceListItem sourceItem)
{
DoVideoRoute(sourceItem.SourceKey, Displays[1].Key);
Display1SourceInfo = sourceItem;
OnFeedback.FireUpdate();
}
public void SourceToDisplay2(SourceListItem sourceItem)
{
DoVideoRoute(sourceItem.SourceKey, Displays[2].Key);
Display2SourceInfo = sourceItem;
OnFeedback.FireUpdate();
}
/// <summary> /// <summary>
/// Basic source -> destination routing /// Basic source -> destination routing
/// </summary> /// </summary>
@@ -267,7 +330,7 @@ namespace PepperDash.Essentials
// store the name and UI info for routes // store the name and UI info for routes
if (item.SourceKey != null) if (item.SourceKey != null)
CurrentSourceInfo = item; CurrentSingleSourceInfo = item;
// And finally, set the "control". This will trigger event // And finally, set the "control". This will trigger event
//CurrentControlDevice = DeviceManager.GetDeviceForKey(item.SourceKey) as Device; //CurrentControlDevice = DeviceManager.GetDeviceForKey(item.SourceKey) as Device;

View File

@@ -13,7 +13,7 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public interface IHasCurrentSourceInfoChange public interface IHasCurrentSourceInfoChange
{ {
event SourceInfoChangeHandler CurrentSourceInfoChange; event SourceInfoChangeHandler CurrentSingleSourceChange;
} }

View File

@@ -0,0 +1,35 @@
2/17/2017 8:49:15 AM, Info: Initializing SIMPLSharp Services...
2/17/2017 8:49:15 AM, Info: ProjectInfo successfully initialized.
2/17/2017 9:50:45 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/17/2017 9:50:46 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/17/2017 9:50:46 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/17/2017 9:50:48 AM, Info: Saving project information...
2/17/2017 10:21:23 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/17/2017 10:21:23 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/17/2017 10:21:23 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/17/2017 10:21:25 AM, Info: Saving project information...
2/17/2017 11:43:36 AM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/17/2017 11:43:37 AM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/17/2017 11:43:37 AM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/17/2017 11:43:39 AM, Info: Saving project information...
2/17/2017 12:40:59 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/17/2017 12:40:59 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/17/2017 12:40:59 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/17/2017 12:41:00 PM, Info: Saving project information...
2/17/2017 1:07:27 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/17/2017 1:07:27 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/17/2017 1:07:27 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/17/2017 1:07:29 PM, Info: Saving project information...
2/17/2017 1:23:03 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/17/2017 1:23:04 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/17/2017 1:23:04 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/17/2017 1:23:05 PM, Info: Saving project information...
2/17/2017 1:30:27 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/17/2017 1:30:27 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/17/2017 1:30:27 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/17/2017 1:30:29 PM, Info: Saving project information...
2/17/2017 2:17:11 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/17/2017 2:17:12 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/17/2017 2:17:12 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/17/2017 2:17:13 PM, Info: Saving project information...
2/17/2017 2:31:44 PM, Info: Terminating SIMPLSharp Services

View File

@@ -0,0 +1,20 @@
2/20/2017 11:06:26 AM, Info: Initializing SIMPLSharp Services...
2/20/2017 11:06:27 AM, Info: ProjectInfo successfully initialized.
2/20/2017 12:42:22 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 12:42:23 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 12:42:24 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 12:42:25 PM, Info: Saving project information...
2/20/2017 1:36:30 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 1:36:30 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 1:36:31 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 1:36:32 PM, Info: Saving project information...
2/20/2017 1:42:21 PM, Info: Saving project information...
2/20/2017 1:42:21 PM, Info: Saving project information...
2/20/2017 1:42:21 PM, Info: Saving project information...
2/20/2017 1:46:45 PM, Info: Saving project information...
2/20/2017 1:46:45 PM, Info: Saving project information...
2/20/2017 1:46:45 PM, Info: Saving project information...
2/20/2017 1:46:45 PM, Info: Saving project information...
2/20/2017 1:46:45 PM, Info: Saving project information...
2/20/2017 1:46:45 PM, Info: Saving project information...
2/20/2017 1:46:46 PM, Info: Terminating SIMPLSharp Services

View File

@@ -0,0 +1,43 @@
2/20/2017 1:48:17 PM, Info: Initializing SIMPLSharp Services...
2/20/2017 1:48:17 PM, Info: ProjectInfo successfully initialized.
2/20/2017 3:16:00 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 3:16:01 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 3:16:01 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 3:16:03 PM, Info: Saving project information...
2/20/2017 3:48:35 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 3:48:36 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 3:48:36 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 3:48:37 PM, Info: Saving project information...
2/20/2017 4:03:34 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 4:03:34 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 4:03:35 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 4:03:36 PM, Info: Saving project information...
2/20/2017 4:11:39 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 4:11:40 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 4:11:40 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 4:11:41 PM, Info: Saving project information...
2/20/2017 4:26:20 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 4:26:20 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 4:26:21 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 4:26:22 PM, Info: Saving project information...
2/20/2017 4:43:14 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 4:43:14 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 4:43:14 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 4:43:16 PM, Info: Saving project information...
2/20/2017 4:43:52 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 4:43:52 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 4:43:53 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 4:43:54 PM, Info: Saving project information...
2/20/2017 4:49:15 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 4:49:15 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 4:49:15 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 4:49:17 PM, Info: Saving project information...
2/20/2017 5:01:32 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 5:01:32 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 5:01:32 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 5:01:33 PM, Info: Saving project information...
2/20/2017 5:05:08 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll...
2/20/2017 5:05:08 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.dll
2/20/2017 5:05:08 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\essentials\PepperDashEssentials\PepperDashEssentials\bin\PepperDashEssentials.cpz...
2/20/2017 5:05:09 PM, Info: Saving project information...
2/20/2017 5:21:45 PM, Info: Terminating SIMPLSharp Services

View File

@@ -16,13 +16,21 @@ namespace PepperDash.Essentials
{ {
EssentialsPresentationPanelAvFunctionsDriver Parent; EssentialsPresentationPanelAvFunctionsDriver Parent;
CTimer SourceSelectedTimer;
/// <summary> /// <summary>
/// Smart Object 3200 /// Smart Object 3200
/// </summary> /// </summary>
SubpageReferenceList SourcesSrl; SubpageReferenceList SourcesSrl;
/// <summary>
/// For tracking feedback on last selected
/// </summary>
BoolInputSig LastSelectedSourceSig;
/// <summary>
/// The source that has been selected and is awaiting assignment to a display
/// </summary>
SourceListItem PendingSource;
bool IsSharingModeAdvanced; bool IsSharingModeAdvanced;
public DualDisplaySimpleOrAdvancedRouting(EssentialsPresentationPanelAvFunctionsDriver parent) : base(parent.TriList) public DualDisplaySimpleOrAdvancedRouting(EssentialsPresentationPanelAvFunctionsDriver parent) : base(parent.TriList)
@@ -58,16 +66,16 @@ namespace PepperDash.Essentials
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public override void Hide() //public override void Hide()
{ //{
TriList.BooleanInput[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false; // TriList.BooleanInput[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false; // TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false;
if(IsSharingModeAdvanced) // if(IsSharingModeAdvanced)
TriList.BooleanInput[UIBoolJoin.DualDisplayPageVisible].BoolValue = false; // TriList.BooleanInput[UIBoolJoin.DualDisplayPageVisible].BoolValue = false;
else // else
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false; // TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
base.Hide(); // base.Hide();
} //}
public void SetCurrentRoomFromParent() public void SetCurrentRoomFromParent()
{ {
@@ -103,9 +111,21 @@ namespace PepperDash.Essentials
srcConfig.SourceKey); srcConfig.SourceKey);
continue; continue;
} }
var localSrcConfig = srcConfig; // lambda scope below var localSrcItem = srcConfig; // lambda scope below
var localIndex = i;
SourcesSrl.GetBoolFeedbackSig(i, 1).UserObject = new Action<bool>(b => SourcesSrl.GetBoolFeedbackSig(i, 1).UserObject = new Action<bool>(b =>
{ if (!b) UiSelectSource(localSrcConfig); }); {
if (IsSharingModeAdvanced)
{
if (LastSelectedSourceSig != null)
LastSelectedSourceSig.BoolValue = false;
SourceListButtonPress(localSrcItem);
LastSelectedSourceSig = SourcesSrl.BoolInputSig(localIndex, 1);
LastSelectedSourceSig.BoolValue = true;
}
else
Parent.CurrentRoom.DoSourceToAllDestinationsRoute(localSrcItem);
});
SourcesSrl.StringInputSig(i, 1).StringValue = srcConfig.PreferredName; SourcesSrl.StringInputSig(i, 1).StringValue = srcConfig.PreferredName;
i++; i++;
@@ -115,7 +135,9 @@ namespace PepperDash.Essentials
//item.RegisterForSourceChange(Parent.CurrentRoom); //item.RegisterForSourceChange(Parent.CurrentRoom);
} }
SourcesSrl.Count = (ushort)(i - 1); SourcesSrl.Count = (ushort)(i - 1);
Parent.CurrentRoom.CurrentSourceInfoChange += CurrentRoom_CurrentSourceInfoChange; Parent.CurrentRoom.CurrentSingleSourceChange += CurrentRoom_CurrentSourceInfoChange;
Parent.CurrentRoom.CurrentDisplay1SourceChange += CurrentRoom_CurrentDisplay1SourceChange;
Parent.CurrentRoom.CurrentDisplay2SourceChange += CurrentRoom_CurrentDisplay2SourceChange;
} }
} }
@@ -124,26 +146,21 @@ namespace PepperDash.Essentials
} }
/// <summary>
/// Called from button presses on source, where We can assume we want
/// to change to the proper screen.
/// </summary>
/// <param name="key">The key name of the route to run</param>
void UiSelectSource(SourceListItem sourceItem)
{
if (IsSharingModeAdvanced)
{
SourceListButtonPress(sourceItem);
}
else
Parent.CurrentRoom.DoSourceToAllDestinationsRoute(sourceItem);
}
void CurrentRoom_CurrentSourceInfoChange(EssentialsRoomBase room, SourceListItem info, ChangeType type) void CurrentRoom_CurrentSourceInfoChange(EssentialsRoomBase room, SourceListItem info, ChangeType type)
{ {
} }
void CurrentRoom_CurrentDisplay1SourceChange(EssentialsRoomBase room, SourceListItem info, ChangeType type)
{
TriList.StringInput[UIStringJoin.Display1SourceLabel].StringValue = PendingSource.PreferredName;
}
void CurrentRoom_CurrentDisplay2SourceChange(EssentialsRoomBase room, SourceListItem info, ChangeType type)
{
TriList.StringInput[UIStringJoin.Display2SourceLabel].StringValue = PendingSource.PreferredName;
}
/// <summary> /// <summary>
/// ///
@@ -164,6 +181,7 @@ namespace PepperDash.Essentials
TriList.BooleanInput[UIBoolJoin.Display1ControlButtonEnable].BoolValue = false; TriList.BooleanInput[UIBoolJoin.Display1ControlButtonEnable].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.Display2AudioButtonEnable].BoolValue = false; TriList.BooleanInput[UIBoolJoin.Display2AudioButtonEnable].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.Display2ControlButtonEnable].BoolValue = false; TriList.BooleanInput[UIBoolJoin.Display2ControlButtonEnable].BoolValue = false;
PendingSource = item;
} }
void EnableAppropriateDisplayButtons() void EnableAppropriateDisplayButtons()
@@ -172,11 +190,15 @@ namespace PepperDash.Essentials
TriList.BooleanInput[UIBoolJoin.Display1ControlButtonEnable].BoolValue = true; TriList.BooleanInput[UIBoolJoin.Display1ControlButtonEnable].BoolValue = true;
TriList.BooleanInput[UIBoolJoin.Display2AudioButtonEnable].BoolValue = true; TriList.BooleanInput[UIBoolJoin.Display2AudioButtonEnable].BoolValue = true;
TriList.BooleanInput[UIBoolJoin.Display2ControlButtonEnable].BoolValue = true; TriList.BooleanInput[UIBoolJoin.Display2ControlButtonEnable].BoolValue = true;
if (LastSelectedSourceSig != null)
LastSelectedSourceSig.BoolValue = false;
} }
public void Display1Press() public void Display1Press()
{ {
EnableAppropriateDisplayButtons(); EnableAppropriateDisplayButtons();
Parent.CurrentRoom.SourceToDisplay1(PendingSource);
// Enable end meeting
} }
public void Display1AudioPress() public void Display1AudioPress()
@@ -184,6 +206,7 @@ namespace PepperDash.Essentials
} }
public void Display1ControlPress() public void Display1ControlPress()
{ {
@@ -192,6 +215,7 @@ namespace PepperDash.Essentials
public void Display2Press() public void Display2Press()
{ {
EnableAppropriateDisplayButtons(); EnableAppropriateDisplayButtons();
Parent.CurrentRoom.SourceToDisplay2(PendingSource);
} }
public void Display2AudioPress() public void Display2AudioPress()

View File

@@ -171,6 +171,9 @@ namespace PepperDash.Essentials
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisible]); .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisible]);
PowerOffTimeout = 30000; PowerOffTimeout = 30000;
TriList.StringInput[UIStringJoin.StartActivityText].StringValue =
"Tap Share to begin";
} }
/// <summary> /// <summary>
@@ -553,7 +556,7 @@ namespace PepperDash.Essentials
_CurrentRoom.OnFeedback.OutputChange -= _CurrentRoom_OnFeedback_OutputChange; _CurrentRoom.OnFeedback.OutputChange -= _CurrentRoom_OnFeedback_OutputChange;
_CurrentRoom.CurrentVolumeDeviceChange -= this._CurrentRoom_CurrentAudioDeviceChange; _CurrentRoom.CurrentVolumeDeviceChange -= this._CurrentRoom_CurrentAudioDeviceChange;
ClearAudioDeviceConnections(); ClearAudioDeviceConnections();
_CurrentRoom.CurrentSourceInfoChange -= this._CurrentRoom_SourceInfoChange; _CurrentRoom.CurrentSingleSourceChange -= this._CurrentRoom_SourceInfoChange;
DisconnectSource(_CurrentRoom.CurrentSourceInfo); DisconnectSource(_CurrentRoom.CurrentSourceInfo);
} }
_CurrentRoom = room; _CurrentRoom = room;
@@ -595,7 +598,7 @@ namespace PepperDash.Essentials
_CurrentRoom.OnFeedback.OutputChange += _CurrentRoom_OnFeedback_OutputChange; _CurrentRoom.OnFeedback.OutputChange += _CurrentRoom_OnFeedback_OutputChange;
_CurrentRoom.CurrentVolumeDeviceChange += _CurrentRoom_CurrentAudioDeviceChange; _CurrentRoom.CurrentVolumeDeviceChange += _CurrentRoom_CurrentAudioDeviceChange;
RefreshAudioDeviceConnections(); RefreshAudioDeviceConnections();
_CurrentRoom.CurrentSourceInfoChange += _CurrentRoom_SourceInfoChange; _CurrentRoom.CurrentSingleSourceChange += _CurrentRoom_SourceInfoChange;
RefreshSourceInfo(); RefreshSourceInfo();
} }
else else

View File

@@ -16,6 +16,23 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public class EssentialsPresentationPanelAvFunctionsDriver : PanelDriverBase public class EssentialsPresentationPanelAvFunctionsDriver : PanelDriverBase
{ {
/// <summary>
/// Smart Object 3200
/// </summary>
SubpageReferenceList SourcesSrl;
/// <summary>
/// For tracking feedback on last selected
/// </summary>
BoolInputSig LastSelectedSourceSig;
/// <summary>
/// The source that has been selected and is awaiting assignment to a display
/// </summary>
SourceListItem PendingSource;
bool IsSharingModeAdvanced;
CrestronTouchpanelPropertiesConfig Config; CrestronTouchpanelPropertiesConfig Config;
public enum UiDisplayMode public enum UiDisplayMode
@@ -102,10 +119,10 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
PanelDriverBase Parent; PanelDriverBase Parent;
/// <summary> ///// <summary>
/// Driver that manages advanced sharing features ///// Driver that manages advanced sharing features
/// </summary> ///// </summary>
DualDisplaySimpleOrAdvancedRouting DualDisplayUiDriver; //DualDisplaySimpleOrAdvancedRouting DualDisplayUiDriver;
/// <summary> /// <summary>
/// All children attached to this driver. For hiding and showing as a group. /// All children attached to this driver. For hiding and showing as a group.
@@ -114,13 +131,6 @@ namespace PepperDash.Essentials
List<BoolInputSig> CurrentDisplayModeSigsInUse = new List<BoolInputSig>(); List<BoolInputSig> CurrentDisplayModeSigsInUse = new List<BoolInputSig>();
//// Important smart objects
///// <summary>
///// Smart Object 3200
///// </summary>
//SubpageReferenceList SourcesSrl;
/// <summary> /// <summary>
/// Smart Object 15022 /// Smart Object 15022
/// </summary> /// </summary>
@@ -158,10 +168,7 @@ namespace PepperDash.Essentials
Config = config; Config = config;
Parent = parent; Parent = parent;
//SourcesSrl = new SubpageReferenceList(TriList, 3200, 3, 3, 3);
ActivityFooterSrl = new SubpageReferenceList(TriList, 15022, 3, 3, 3); ActivityFooterSrl = new SubpageReferenceList(TriList, 15022, 3, 3, 3);
DualDisplayUiDriver = new DualDisplaySimpleOrAdvancedRouting(this);
SetupActivityFooterWhenRoomOff(); SetupActivityFooterWhenRoomOff();
ShowVolumeGauge = true; ShowVolumeGauge = true;
@@ -176,6 +183,22 @@ namespace PepperDash.Essentials
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisible]); .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisible]);
PowerOffTimeout = 30000; PowerOffTimeout = 30000;
SourcesSrl = new SubpageReferenceList(TriList, 3200, 3, 3, 3);
TriList.StringInput[UIStringJoin.StartActivityText].StringValue =
"Tap an activity to begin";
// Sharing mode things
TriList.SetSigFalseAction(UIBoolJoin.ToggleSharingModePress, ToggleSharingModePressed);
TriList.SetSigFalseAction(UIBoolJoin.Display1AudioButtonPressAndFb, Display1AudioPress);
TriList.SetSigFalseAction(UIBoolJoin.Display1ControlButtonPress, Display1ControlPress);
TriList.SetSigTrueAction(UIBoolJoin.Display1SelectPress, Display1Press);
TriList.SetSigFalseAction(UIBoolJoin.Display2AudioButtonPressAndFb, Display2AudioPress);
TriList.SetSigFalseAction(UIBoolJoin.Display2ControlButtonPress, Display2ControlPress);
TriList.SetSigTrueAction(UIBoolJoin.Display2SelectPress, Display2Press);
} }
/// <summary> /// <summary>
@@ -235,20 +258,61 @@ namespace PepperDash.Essentials
base.Show(); base.Show();
} }
/// <summary>
///
/// </summary>
public override void Hide() public override void Hide()
{ {
HideAndClearCurrentDisplayModeSigsInUse(); var tl = TriList.BooleanInput;
TriList.BooleanInput[UIBoolJoin.TopBarVisible].BoolValue = false; HideAndClearCurrentDisplayModeSigsInUse();
TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = false; tl[UIBoolJoin.TopBarVisible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false; tl[UIBoolJoin.ActivityFooterVisible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false; tl[UIBoolJoin.StartPageVisible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false; tl[UIBoolJoin.TapToBeginVisible].BoolValue = false;
//TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false; tl[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false;
tl[UIBoolJoin.StagingPageVisible].BoolValue = false;
if (IsSharingModeAdvanced)
tl[UIBoolJoin.DualDisplayPageVisible].BoolValue = false;
else
tl[UIBoolJoin.SelectASourceVisible].BoolValue = false;
VolumeButtonsPopupFeedback.ClearNow(); VolumeButtonsPopupFeedback.ClearNow();
CancelPowerOff(); CancelPowerOff();
base.Hide(); base.Hide();
} }
/// <summary>
///
/// </summary>
void ShowCurrentSharingMode()
{
var tlb = TriList.BooleanInput;
tlb[UIBoolJoin.ToggleSharingModeVisible].BoolValue = true;
tlb[UIBoolJoin.StagingPageVisible].BoolValue = true;
if (IsSharingModeAdvanced)
{
tlb[UIBoolJoin.DualDisplayPageVisible].BoolValue = true;
TriList.StringInput[UIStringJoin.Display1TitleLabel].StringValue =
(CurrentRoom.Displays[1] as IKeyName).Name;
TriList.StringInput[UIStringJoin.Display2TitleLabel].StringValue =
(CurrentRoom.Displays[2] as IKeyName).Name;
}
else
tlb[UIBoolJoin.SelectASourceVisible].BoolValue = true;
}
/// <summary>
///
/// </summary>
void HideCurrentSharingMode()
{
var tl = TriList.BooleanInput;
tl[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false;
tl[UIBoolJoin.StagingPageVisible].BoolValue = false;
tl[UIBoolJoin.DualDisplayPageVisible].BoolValue = false;
tl[UIBoolJoin.SelectASourceVisible].BoolValue = false;
}
/// <summary> /// <summary>
/// Shows the various "modes" that this driver controls. Presentation, Setup page /// Shows the various "modes" that this driver controls. Presentation, Setup page
@@ -296,51 +360,132 @@ namespace PepperDash.Essentials
} }
} }
///// <summary> /// <summary>
///// ///
///// </summary> /// </summary>
//void ToggleSharingModePressed() void SetupSourceList()
//{ {
// HideSharingMode(); // get the source list config and set up the source list
// IsSharingModeAdvanced = !IsSharingModeAdvanced; var config = ConfigReader.ConfigObject.SourceLists;
// TriList.BooleanInput[UIBoolJoin.ToggleSharingModePress].BoolValue = IsSharingModeAdvanced; if (config.ContainsKey(CurrentRoom.SourceListKey))
// RevealSharingMode(); {
//} var srcList = config[CurrentRoom.SourceListKey]
.Values.ToList().OrderBy(s => s.Order);
// Setup sources list
uint i = 1; // counter for UI list
foreach (var srcConfig in srcList)
{
if (!srcConfig.IncludeInSourceList) // Skip sources marked this way
continue;
///// <summary> var sourceKey = srcConfig.SourceKey;
///// var actualSource = DeviceManager.GetDeviceForKey(sourceKey) as Device;
///// </summary> if (actualSource == null)
//void HideSharingMode() {
//{ Debug.Console(0, "Cannot assign missing source '{0}' to source UI list",
// TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false; srcConfig.SourceKey);
// if (IsSharingModeAdvanced) continue;
// { }
// if (DualDisplayUiDriver != null) var localSrcItem = srcConfig; // lambda scope below
// DualDisplayUiDriver.Hide(); var localIndex = i;
// } SourcesSrl.GetBoolFeedbackSig(i, 1).UserObject = new Action<bool>(b =>
// else {
// { if (IsSharingModeAdvanced)
// TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false; {
// } if (LastSelectedSourceSig != null)
//} LastSelectedSourceSig.BoolValue = false;
SourceListButtonPress(localSrcItem);
LastSelectedSourceSig = SourcesSrl.BoolInputSig(localIndex, 1);
LastSelectedSourceSig.BoolValue = true;
}
else
CurrentRoom.DoSourceToAllDestinationsRoute(localSrcItem);
});
SourcesSrl.StringInputSig(i, 1).StringValue = srcConfig.PreferredName;
i++;
}
var count = (ushort)(i-1);
SourcesSrl.Count = count;
TriList.BooleanInput[UIBoolJoin.StagingPageAdditionalArrowsVisible].BoolValue =
count >= Config.SourcesOverflowCount;
///// <summary> _CurrentRoom.CurrentDisplay1SourceChange += _CurrentRoom_CurrentDisplay1SourceChange;
///// _CurrentRoom.CurrentDisplay2SourceChange += _CurrentRoom_CurrentDisplay2SourceChange;
///// </summary> }
//void RevealSharingMode() }
//{
// TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = true; /// <summary>
// if (IsSharingModeAdvanced) ///
// { /// </summary>
// if(DualDisplayUiDriver == null) void ToggleSharingModePressed()
// DualDisplayUiDriver = new DualDisplaySimpleOrAdvancedRouting(this); {
// DualDisplayUiDriver.Show(); HideCurrentSharingMode();
// } IsSharingModeAdvanced = !IsSharingModeAdvanced;
// else TriList.BooleanInput[UIBoolJoin.ToggleSharingModePress].BoolValue = IsSharingModeAdvanced;
// { ShowCurrentSharingMode();
// TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = true; }
// }
//} /// <summary>
///
/// </summary>
/// <param name="item"></param>
public void SourceListButtonPress(SourceListItem item)
{
// start the timer
// show FB on potential source
TriList.BooleanInput[UIBoolJoin.Display1AudioButtonEnable].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.Display1ControlButtonEnable].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.Display2AudioButtonEnable].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.Display2ControlButtonEnable].BoolValue = false;
PendingSource = item;
}
/// <summary>
///
/// </summary>
void EnableAppropriateDisplayButtons()
{
TriList.BooleanInput[UIBoolJoin.Display1AudioButtonEnable].BoolValue = true;
TriList.BooleanInput[UIBoolJoin.Display1ControlButtonEnable].BoolValue = true;
TriList.BooleanInput[UIBoolJoin.Display2AudioButtonEnable].BoolValue = true;
TriList.BooleanInput[UIBoolJoin.Display2ControlButtonEnable].BoolValue = true;
if (LastSelectedSourceSig != null)
LastSelectedSourceSig.BoolValue = false;
}
public void Display1Press()
{
EnableAppropriateDisplayButtons();
CurrentRoom.SourceToDisplay1(PendingSource);
// Enable end meeting
}
public void Display1AudioPress()
{
}
public void Display1ControlPress()
{
}
public void Display2Press()
{
EnableAppropriateDisplayButtons();
CurrentRoom.SourceToDisplay2(PendingSource);
}
public void Display2AudioPress()
{
}
public void Display2ControlPress()
{
}
/// <summary> /// <summary>
/// When the room is off, set the footer SRL /// When the room is off, set the footer SRL
@@ -370,7 +515,7 @@ namespace PepperDash.Essentials
3, b => { if (!b) PowerButtonPressed(); })); 3, b => { if (!b) PowerButtonPressed(); }));
ActivityFooterSrl.Count = 3; ActivityFooterSrl.Count = 3;
TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 2; TriList.UShortInput[UIUshortJoin.PresentationListCaretMode].UShortValue = 2;
EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(2, 1); EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(3, 1);
} }
/// <summary> /// <summary>
@@ -383,9 +528,7 @@ namespace PepperDash.Essentials
{ {
ShareButtonSig.BoolValue = true; ShareButtonSig.BoolValue = true;
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
DualDisplayUiDriver.Show(); ShowCurrentSharingMode();
//TriList.BooleanInput[UIBoolJoin.ToggleSharingModeVisible].BoolValue = true;
//RevealSharingMode();
} }
} }
@@ -457,10 +600,10 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
void ShowCurrentSource() void ShowCurrentSource()
{ {
if (CurrentRoom.CurrentSourceInfo == null) if (CurrentRoom.CurrentSingleSourceInfo == null)
return; return;
var uiDev = CurrentRoom.CurrentSourceInfo.SourceDevice as IUiDisplayInfo; var uiDev = CurrentRoom.CurrentSingleSourceInfo.SourceDevice as IUiDisplayInfo;
PageManager pm = null; PageManager pm = null;
// If we need a page manager, get an appropriate one // If we need a page manager, get an appropriate one
if (uiDev != null) if (uiDev != null)
@@ -483,21 +626,6 @@ namespace PepperDash.Essentials
} }
} }
///// <summary>
///// Called from button presses on source, where We can assume we want
///// to change to the proper screen.
///// </summary>
///// <param name="key">The key name of the route to run</param>
//void UiSelectSource(SourceListItem sourceItem)
//{
// if (IsSharingModeAdvanced)
// {
// DualDisplayUiDriver.SourceListButtonPress(sourceItem);
// }
// else
// CurrentRoom.DoSourceToAllDestinationsRoute(sourceItem);
//}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
@@ -517,7 +645,9 @@ namespace PepperDash.Essentials
but => but =>
{ {
if (but != 2) if (but != 2)
{
CurrentRoom.DoSourceToAllDestinationsRoute(null); CurrentRoom.DoSourceToAllDestinationsRoute(null);
}
else else
ShareButtonSig.BoolValue = true; // restore Share fb ShareButtonSig.BoolValue = true; // restore Share fb
EndMeetingButtonSig.BoolValue = false; EndMeetingButtonSig.BoolValue = false;
@@ -609,22 +739,25 @@ namespace PepperDash.Essentials
_CurrentRoom.OnFeedback.OutputChange -= _CurrentRoom_OnFeedback_OutputChange; _CurrentRoom.OnFeedback.OutputChange -= _CurrentRoom_OnFeedback_OutputChange;
_CurrentRoom.CurrentVolumeDeviceChange -= this._CurrentRoom_CurrentAudioDeviceChange; _CurrentRoom.CurrentVolumeDeviceChange -= this._CurrentRoom_CurrentAudioDeviceChange;
ClearAudioDeviceConnections(); ClearAudioDeviceConnections();
_CurrentRoom.CurrentSourceInfoChange -= this._CurrentRoom_SourceInfoChange; _CurrentRoom.CurrentSingleSourceChange -= this._CurrentRoom_SourceInfoChange;
DisconnectSource(_CurrentRoom.CurrentSourceInfo); DisconnectSource(_CurrentRoom.CurrentSingleSourceInfo);
} }
_CurrentRoom = room; _CurrentRoom = room;
if (_CurrentRoom != null) if (_CurrentRoom != null)
{ {
DualDisplayUiDriver.SetCurrentRoomFromParent(); if (IsSharingModeAdvanced)
//SetupSourcesForSimpleRouting(); {} // add stuff here
else
SetupSourceList();
TriList.StringInput[UIStringJoin.CurrentRoomName].StringValue = _CurrentRoom.Name; TriList.StringInput[UIStringJoin.CurrentRoomName].StringValue = _CurrentRoom.Name;
// 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.OnFeedback.OutputChange += _CurrentRoom_OnFeedback_OutputChange;
_CurrentRoom.CurrentVolumeDeviceChange += _CurrentRoom_CurrentAudioDeviceChange; _CurrentRoom.CurrentVolumeDeviceChange += _CurrentRoom_CurrentAudioDeviceChange;
RefreshAudioDeviceConnections(); RefreshAudioDeviceConnections();
_CurrentRoom.CurrentSourceInfoChange += _CurrentRoom_SourceInfoChange; _CurrentRoom.CurrentSingleSourceChange += _CurrentRoom_SourceInfoChange;
RefreshSourceInfo(); RefreshSourceInfo();
} }
else else
@@ -648,44 +781,31 @@ namespace PepperDash.Essentials
} }
else else
{ {
DualDisplayUiDriver.Hide(); HideCurrentSharingMode();
SetupActivityFooterWhenRoomOff(); SetupActivityFooterWhenRoomOff();
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true; TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
} }
} }
//void SetupSourcesForSimpleRouting() /// <summary>
//{ ///
// // get the source list config and set up the source list /// </summary>
// var config = ConfigReader.ConfigObject.SourceLists; void _CurrentRoom_CurrentDisplay1SourceChange(EssentialsRoomBase room, SourceListItem info, ChangeType type)
// if (config.ContainsKey(_CurrentRoom.SourceListKey)) {
// { if (type == ChangeType.DidChange)
// var srcList = config[_CurrentRoom.SourceListKey] TriList.StringInput[UIStringJoin.Display1SourceLabel].StringValue =
// .Values.ToList().OrderBy(s => s.Order); info == null ? "" : info.PreferredName;
// // Setup sources list }
// uint i = 1; // counter for UI list
// foreach (var srcConfig in srcList)
// {
// if (!srcConfig.IncludeInSourceList) // Skip sources marked this way
// continue;
// var sourceKey = srcConfig.SourceKey; /// <summary>
// var actualSource = DeviceManager.GetDeviceForKey(sourceKey) as Device; ///
// if (actualSource == null) /// </summary>
// { void _CurrentRoom_CurrentDisplay2SourceChange(EssentialsRoomBase room, SourceListItem info, ChangeType type)
// Debug.Console(0, "Cannot assign missing source '{0}' to source UI list", {
// srcConfig.SourceKey); if (type == ChangeType.DidChange)
// continue; TriList.StringInput[UIStringJoin.Display2SourceLabel].StringValue =
// } info == null ? "" : info.PreferredName;
// var localSrcConfig = srcConfig; // lambda scope below }
// var item = new SubpageReferenceListSourceItem(i++, SourcesSrl, srcConfig,
// b => { if (!b) UiSelectSource(localSrcConfig); });
// SourcesSrl.AddItem(item); // add to the SRL
// item.RegisterForSourceChange(_CurrentRoom);
// }
// SourcesSrl.Count = (ushort)(i - 1);
// }
//}
/// <summary> /// <summary>
/// Hides source for provided source info /// Hides source for provided source info
@@ -735,7 +855,7 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
void RefreshSourceInfo() void RefreshSourceInfo()
{ {
var routeInfo = CurrentRoom.CurrentSourceInfo; var routeInfo = CurrentRoom.CurrentSingleSourceInfo;
// This will show off popup too // This will show off popup too
if (this.IsVisible) if (this.IsVisible)
ShowCurrentSource(); ShowCurrentSource();
@@ -749,7 +869,7 @@ namespace PepperDash.Essentials
Parent.Show(); Parent.Show();
return; return;
} }
else if (CurrentRoom.CurrentSourceInfo != null) else if (CurrentRoom.CurrentSingleSourceInfo != null)
{ {
TriList.StringInput[UIStringJoin.CurrentSourceName].StringValue = routeInfo.PreferredName; TriList.StringInput[UIStringJoin.CurrentSourceName].StringValue = routeInfo.PreferredName;
TriList.StringInput[UIStringJoin.CurrentSourceIcon].StringValue = routeInfo.Icon; // defaults to "blank" TriList.StringInput[UIStringJoin.CurrentSourceIcon].StringValue = routeInfo.Icon; // defaults to "blank"

View File

@@ -64,7 +64,7 @@ namespace PepperDash.Essentials
parent.SetItemMainText(index, room.Name); parent.SetItemMainText(index, room.Name);
UpdateItem(room.CurrentSourceInfo); UpdateItem(room.CurrentSourceInfo);
// Watch for later changes // Watch for later changes
room.CurrentSourceInfoChange += new SourceInfoChangeHandler(room_CurrentSourceInfoChange); room.CurrentSingleSourceChange += new SourceInfoChangeHandler(room_CurrentSourceInfoChange);
parent.SetItemButtonAction(index, buttonAction); parent.SetItemButtonAction(index, buttonAction);
} }

View File

@@ -178,6 +178,7 @@ namespace PepperDash.Essentials
public const uint CurrentSourceIcon = 3903; public const uint CurrentSourceIcon = 3903;
public const uint PowerOffMessage = 3911; public const uint PowerOffMessage = 3911;
public const uint StartPageMessage = 3912; public const uint StartPageMessage = 3912;
public const uint StartActivityText = 3913;
public const uint HelpMessage = 3922; public const uint HelpMessage = 3922;
/// <summary> /// <summary>

View File

@@ -11,5 +11,15 @@
public bool UsesSplashPage { get; set; } public bool UsesSplashPage { get; set; }
public bool ShowDate { get; set; } public bool ShowDate { get; set; }
public bool ShowTime { get; set; } public bool ShowTime { get; set; }
/// <summary>
/// The count of sources that will trigger the "additional" arrows to show on the SRL.
/// Defaults to 5
/// </summary>
public int SourcesOverflowCount { get; set; }
public CrestronTouchpanelPropertiesConfig()
{
SourcesOverflowCount = 5;
}
} }
} }

View File

@@ -1,65 +1,65 @@
//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.UI; using Crestron.SimplSharpPro.UI;
//using PepperDash.Essentials.Core; using PepperDash.Essentials.Core;
//namespace PepperDash.Essentials namespace PepperDash.Essentials
//{ {
// public class SubpageReferenceListSourceItem : SubpageReferenceListItem public class SubpageReferenceListSourceItem : SubpageReferenceListItem
// { {
// public SourceListItem SourceItem { get; private set; } public SourceListItem SourceItem { get; private set; }
// public SubpageReferenceListSourceItem(uint index, SubpageReferenceList owner, public SubpageReferenceListSourceItem(uint index, SubpageReferenceList owner,
// SourceListItem sourceItem, Action<bool> routeAction) SourceListItem sourceItem, Action<bool> routeAction)
// : base(index, owner) : base(index, owner)
// { {
// SourceItem = sourceItem; SourceItem = sourceItem;
// owner.GetBoolFeedbackSig(index, 1).UserObject = new Action<bool>(routeAction); owner.GetBoolFeedbackSig(index, 1).UserObject = new Action<bool>(routeAction);
// owner.StringInputSig(index, 1).StringValue = SourceItem.PreferredName; owner.StringInputSig(index, 1).StringValue = SourceItem.PreferredName;
// } }
// public void RegisterForSourceChange(IHasCurrentSourceInfoChange room) public void RegisterForSourceChange(IHasCurrentSourceInfoChange room)
// { {
// room.CurrentSourceInfoChange -= room_CurrentSourceInfoChange; room.CurrentSingleSourceChange -= room_CurrentSourceInfoChange;
// room.CurrentSourceInfoChange += room_CurrentSourceInfoChange; room.CurrentSingleSourceChange += room_CurrentSourceInfoChange;
// } }
// void room_CurrentSourceInfoChange(EssentialsRoomBase room, SourceListItem info, ChangeType type) void room_CurrentSourceInfoChange(EssentialsRoomBase room, SourceListItem info, ChangeType type)
// { {
// if (type == ChangeType.WillChange && info == SourceItem) if (type == ChangeType.WillChange && info == SourceItem)
// ClearFeedback(); ClearFeedback();
// else if (type == ChangeType.DidChange && info == SourceItem) else if (type == ChangeType.DidChange && info == SourceItem)
// SetFeedback(); SetFeedback();
// } }
// /// <summary> /// <summary>
// /// Called by SRL to release all referenced objects /// Called by SRL to release all referenced objects
// /// </summary> /// </summary>
// public override void Clear() public override void Clear()
// { {
// Owner.BoolInputSig(Index, 1).UserObject = null; Owner.BoolInputSig(Index, 1).UserObject = null;
// Owner.StringInputSig(Index, 1).StringValue = ""; Owner.StringInputSig(Index, 1).StringValue = "";
// } }
// /// <summary> /// <summary>
// /// Sets the selected feedback on the button /// Sets the selected feedback on the button
// /// </summary> /// </summary>
// public void SetFeedback() public void SetFeedback()
// { {
// Owner.BoolInputSig(Index, 1).BoolValue = true; Owner.BoolInputSig(Index, 1).BoolValue = true;
// } }
// /// <summary> /// <summary>
// /// Clears the selected feedback on the button /// Clears the selected feedback on the button
// /// </summary> /// </summary>
// public void ClearFeedback() public void ClearFeedback()
// { {
// Owner.BoolInputSig(Index, 1).BoolValue = false; Owner.BoolInputSig(Index, 1).BoolValue = false;
// } }
// } }
//} }

View File

@@ -10,8 +10,8 @@
<ArchiveName /> <ArchiveName />
</RequiredInfo> </RequiredInfo>
<OptionalInfo> <OptionalInfo>
<CompiledOn>2/16/2017 3:45:04 PM</CompiledOn> <CompiledOn>2/20/2017 5:05:08 PM</CompiledOn>
<CompilerRev>1.0.0.28239</CompilerRev> <CompilerRev>1.0.0.30753</CompilerRev>
</OptionalInfo> </OptionalInfo>
<Plugin> <Plugin>
<Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version> <Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>

View File

@@ -1,4 +1,4 @@
MainAssembly=PepperDashEssentials.dll:5deb13632556e8d5c82a54c2bb816ea0 MainAssembly=PepperDashEssentials.dll:0b867fd313ed2c071ddab7aa55521c8b
MainAssemblyMinFirmwareVersion=1.009.0029 MainAssemblyMinFirmwareVersion=1.009.0029
MainAssemblyResource=SimplSharpData.dat:820b61c48c8a2cace82957eed4cc377c MainAssemblyResource=SimplSharpData.dat:820b61c48c8a2cace82957eed4cc377c
ü ü