Skip to content

Commit

Permalink
More changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Mutex666 committed Dec 3, 2023
1 parent bfef5ba commit a209a7d
Show file tree
Hide file tree
Showing 6 changed files with 114 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,12 @@ private void StreamDeckPushRotary_OnMouseUp(object sender, MouseButtonEventArgs
SetSelectedPushRotaryUIOnly(pushRotary.StreamDeckPushRotary.StreamDeckPushRotaryName);
if (pushRotary.IsSelected)
{
// todoxxx StreamDeckPanelInstance.SelectedPushRotaryName = pushRotary.Bill.Button.StreamDeckButtonName;
StreamDeckPanelInstance.SelectedPushRotaryName = pushRotary.StreamDeckPushRotary.StreamDeckPushRotaryName;
pushRotary.Focus();
}
else
{
//todoxxx StreamDeckPanelInstance.SelectedButtonName = EnumStreamDeckButtonNames.BUTTON0_NO_BUTTON;
StreamDeckPanelInstance.SelectedPushRotaryName = EnumStreamDeckPushRotaryNames.PUSHROTARY0_NO_PUSHROTARY;
}

/*Debug.WriteLine(StreamDeckPanelInstance.GetLayerHandlerInformation());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ private void ButtonCancelAction_OnClick(object sender, RoutedEventArgs e)
try
{
SDEventHandler.ClearSettings(this, true, false, false, _streamDeckPanel.BindingHash);
SDEventHandler.SelectedButtonChanged(this, _streamDeckPanel.SelectedButton, _streamDeckPanel.BindingHash);
SDEventHandler.SelectedButtonChanged(this, _streamDeckPanel.SelectedButton, _streamDeckPanel.SelectedPushRotary, _streamDeckPanel.BindingHash);
SDEventHandler.NotifyToSyncConfiguration(this, _streamDeckPanel.BindingHash);
SetFormState();
}
Expand Down Expand Up @@ -490,7 +490,7 @@ private void ButtonCancelFace_OnClick(object sender, RoutedEventArgs e)
try
{
SDEventHandler.ClearSettings(this, false, true, false, _streamDeckPanel.BindingHash);
SDEventHandler.SelectedButtonChanged(this, _streamDeckPanel.SelectedButton, _streamDeckPanel.BindingHash);
SDEventHandler.SelectedButtonChanged(this, _streamDeckPanel.SelectedButton, _streamDeckPanel.SelectedPushRotary, _streamDeckPanel.BindingHash);
SDEventHandler.NotifyToSyncConfiguration(this, _streamDeckPanel.BindingHash);
_streamDeckPanel.SelectedButton.ClearFace();
SetFormState();
Expand Down
8 changes: 6 additions & 2 deletions Source/NonVisuals/Panels/StreamDeck/Events/SDEventHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -189,9 +189,13 @@ public static bool OnStreamDeckSelectedButtonChangedEventSubscribed()
return OnStreamDeckSelectedButtonChangedEventHandler != null && OnStreamDeckSelectedButtonChangedEventHandler.GetInvocationList().Length > 0;
}

public static void SelectedButtonChanged(object sender, StreamDeckButton streamDeckButton, string bindingHash)
public static void SelectedButtonChanged(object sender, StreamDeckButton streamDeckButton, StreamDeckPushRotary streamDeckPushRotary, string bindingHash)
{
var eventArgs = new StreamDeckSelectedButtonChangedArgs { SelectedButton = streamDeckButton, BindingHash = bindingHash };
var eventArgs = new StreamDeckSelectedButtonChangedArgs {
SelectedButton = streamDeckButton,
SelectedPushRotary = streamDeckPushRotary,
BindingHash = bindingHash
};
OnStreamDeckSelectedButtonChangedEventHandler?.Invoke(sender, eventArgs);
}

Expand Down
10 changes: 10 additions & 0 deletions Source/NonVisuals/Panels/StreamDeck/Panels/StreamDeckPanel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,22 @@ public EnumStreamDeckButtonNames SelectedButtonName
get => _streamDeckLayerHandler.SelectedButtonName;
set => _streamDeckLayerHandler.SelectedButtonName = value;
}
public EnumStreamDeckPushRotaryNames SelectedPushRotaryName
{
get => _streamDeckLayerHandler.SelectedPushRotaryName;
set => _streamDeckLayerHandler.SelectedPushRotaryName = value;
}

public StreamDeckButton SelectedButton
{
get => SelectedLayer.GetStreamDeckButton(SelectedButtonName);
}

public StreamDeckPushRotary SelectedPushRotary
{
get => SelectedLayer.GetStreamDeckPushRotary(SelectedPushRotaryName);
}

public StreamDeckPanel(GamingPanelEnum panelType, HIDSkeleton hidSkeleton, bool unitTesting = false) : base(panelType, hidSkeleton)
{
_unitTesting = unitTesting;
Expand Down
91 changes: 88 additions & 3 deletions Source/NonVisuals/Panels/StreamDeck/StreamDeckLayer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ public class StreamDeckLayer : IDisposable

[JsonProperty("Name", Required = Required.Default)]
public string Name { get; set; } = string.Empty;
public List<StreamDeckButton> StreamDeckButtons { get; set; } = new List<StreamDeckButton>();
public List<StreamDeckButton> StreamDeckButtons { get; set; } = new();
public List<StreamDeckPushRotary> StreamDeckPushRotaries { get; set; } = new();

[JsonIgnore]
public bool IsVisible
Expand Down Expand Up @@ -80,6 +81,10 @@ public void Dispose()
{
streamDeckButton?.Dispose();
}
foreach (var streamDeckPushRotary in StreamDeckPushRotaries)
{
streamDeckPushRotary?.Dispose();
}
GC.SuppressFinalize(this);
}

Expand Down Expand Up @@ -174,7 +179,31 @@ public void AddButton(StreamDeckButton streamDeckButton, bool silently = false)
NotifyChanges();
}
}
public void AddPushRotary(StreamDeckPushRotary streamDeckPushRotary, bool silently = false)
{
streamDeckPushRotary.IsVisible = _isVisible;

var found = false;
foreach (var pushRotary in StreamDeckPushRotaries)
{
if (pushRotary.StreamDeckPushRotaryName == streamDeckPushRotary.StreamDeckPushRotaryName)
{
pushRotary.Consume(streamDeckPushRotary);
found = true;
break;
}
}

if (!found)
{
StreamDeckPushRotaries.Add(streamDeckPushRotary);
}

if (!silently)
{
NotifyChanges();
}
}

public void RemoveButton(StreamDeckButton streamDeckButton)
{
Expand All @@ -183,6 +212,12 @@ public void RemoveButton(StreamDeckButton streamDeckButton)
_streamDeckPanel.ClearFace(streamDeckButton.StreamDeckButtonName);
NotifyChanges();
}
public void RemovePushRotary(StreamDeckPushRotary streamDeckPushRotary)
{
streamDeckPushRotary.Dispose();
StreamDeckPushRotaries.Remove(streamDeckPushRotary);
NotifyChanges();
}

public void RemoveButtons(bool sendNotification)
{
Expand All @@ -196,16 +231,36 @@ public void RemoveButtons(bool sendNotification)
}
}

public void RemovePushRotaries(bool sendNotification)
{
StreamDeckPushRotaries.ForEach(pushRotary => pushRotary.Dispose());

StreamDeckPushRotaries.RemoveAll(o => o != null);

if (sendNotification)
{
NotifyChanges();
}
}

public void RemoveEmptyButtons()
{
foreach (var streamDeckButton in StreamDeckButtons.Where(o => o.HasConfig == false))
{
streamDeckButton.Dispose();
}

StreamDeckButtons.RemoveAll(o => !o.HasConfig);
}

public void RemoveEmptyPushRotaries()
{
foreach (var streamDeckPushRotary in StreamDeckPushRotaries.Where(o => o.HasConfig == false))
{
streamDeckPushRotary.Dispose();
}
StreamDeckPushRotaries.RemoveAll(o => !o.HasConfig);
}

public List<StreamDeckButton> GetButtonsWithConfig()
{
return StreamDeckButtons.Where(o => o.HasConfig).ToList();
Expand All @@ -226,11 +281,31 @@ public StreamDeckButton GetStreamDeckButton(EnumStreamDeckButtonNames streamDeck
return newButton;
}

public StreamDeckPushRotary GetStreamDeckPushRotary(EnumStreamDeckPushRotaryNames streamDeckPushRotaryName)
{
foreach (var streamDeckpushRotary in StreamDeckPushRotaries)
{
if (streamDeckpushRotary.StreamDeckPushRotaryName == streamDeckPushRotaryName)
{
return streamDeckpushRotary;
}
}

var newPushRotary = new StreamDeckPushRotary(streamDeckPushRotaryName, _streamDeckPanel);
StreamDeckPushRotaries.Add(newPushRotary);
return newPushRotary;
}

public bool ContainStreamDeckButton(EnumStreamDeckButtonNames streamDeckButtonName)
{
return StreamDeckButtons.Exists(x => x.StreamDeckButtonName == streamDeckButtonName);
}

public bool ContainsPushRotary(EnumStreamDeckPushRotaryNames streamDeckPushRotaryName)
{
return StreamDeckPushRotaries.Exists(x => x.StreamDeckPushRotaryName == streamDeckPushRotaryName);
}

public StreamDeckButton GetStreamDeckButtonName(EnumStreamDeckButtonNames streamDeckButtonName)
{
foreach (var streamDeckButton in StreamDeckButtons)
Expand All @@ -240,10 +315,20 @@ public StreamDeckButton GetStreamDeckButtonName(EnumStreamDeckButtonNames stream
return streamDeckButton;
}
}

throw new Exception($"StreamDeckLayer [{Name}] does not contain button [{streamDeckButtonName}].");
}

public StreamDeckPushRotary GetStreamDeckPushRotaryName(EnumStreamDeckPushRotaryNames streamDeckPushRotaryName)
{
foreach (var streamDeckPushRotary in StreamDeckPushRotaries)
{
if (streamDeckPushRotary.StreamDeckPushRotaryName == streamDeckPushRotaryName)
{
return streamDeckPushRotary;
}
}
throw new Exception($"StreamDeckLayer [{Name}] does not contain a push rotary button [{streamDeckPushRotaryName}].");
}
}

public enum EnumButtonImportMode
Expand Down
8 changes: 6 additions & 2 deletions Source/NonVisuals/Panels/StreamDeck/StreamDeckLayerHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,10 @@ public StreamDeckButton SelectedButton
{
get => SelectedLayer.GetStreamDeckButton(SelectedButtonName);
}
public StreamDeckPushRotary SelectedPushRotary
{
get => SelectedLayer.GetStreamDeckPushRotary(SelectedPushRotaryName);
}

public List<string> GetLayerNameList()
{
Expand Down Expand Up @@ -420,7 +424,7 @@ public EnumStreamDeckButtonNames SelectedButtonName
if (_selectedButtonName != value)
{
_selectedButtonName = value;
SDEventHandler.SelectedButtonChanged(this, SelectedButton, _streamDeckPanel.BindingHash);
SDEventHandler.SelectedButtonChanged(this, SelectedButton, null, _streamDeckPanel.BindingHash);
return;
}

Expand All @@ -435,7 +439,7 @@ public EnumStreamDeckPushRotaryNames SelectedPushRotaryName
if (_selectedPushRotaryName != value)
{
_selectedPushRotaryName = value;
SDEventHandler.SelectedButtonChanged(this, SelectedButton, _streamDeckPanel.BindingHash);
SDEventHandler.SelectedButtonChanged(this, null, SelectedPushRotary, _streamDeckPanel.BindingHash);
return;
}

Expand Down

0 comments on commit a209a7d

Please sign in to comment.