mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
I'm bad at Git.
This commit is contained in:
parent
5bbb6803b5
commit
f0a73ed6c3
@ -1,7 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Artemis.DeviceProviders;
|
using Artemis.DeviceProviders;
|
||||||
using Artemis.Events;
|
using Artemis.Events;
|
||||||
@ -67,37 +66,20 @@ namespace Artemis.Managers
|
|||||||
/// <param name="keyboardProvider"></param>
|
/// <param name="keyboardProvider"></param>
|
||||||
public async void EnableKeyboard(KeyboardProvider keyboardProvider)
|
public async void EnableKeyboard(KeyboardProvider keyboardProvider)
|
||||||
{
|
{
|
||||||
if (ChangingKeyboard)
|
if (keyboardProvider == null)
|
||||||
|
throw new ArgumentNullException(nameof(keyboardProvider));
|
||||||
|
|
||||||
|
if (ChangingKeyboard || ActiveKeyboard?.Name == keyboardProvider.Name)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
_logger.Debug("Trying to enable keyboard: {0}", keyboardProvider.Name);
|
||||||
|
ChangingKeyboard = true;
|
||||||
|
|
||||||
// Store the old keyboard so it can be used in the event we're raising later
|
// Store the old keyboard so it can be used in the event we're raising later
|
||||||
var oldKeyboard = ActiveKeyboard;
|
var oldKeyboard = ActiveKeyboard;
|
||||||
|
|
||||||
lock (this)
|
// Release the current keyboard
|
||||||
{
|
ReleaseActiveKeyboard();
|
||||||
ChangingKeyboard = true;
|
|
||||||
|
|
||||||
if (keyboardProvider == null)
|
|
||||||
throw new ArgumentNullException(nameof(keyboardProvider));
|
|
||||||
|
|
||||||
if (ActiveKeyboard?.Name == keyboardProvider.Name)
|
|
||||||
{
|
|
||||||
ChangingKeyboard = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var wasNull = false;
|
|
||||||
if (ActiveKeyboard == null)
|
|
||||||
{
|
|
||||||
wasNull = true;
|
|
||||||
ActiveKeyboard = keyboardProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!wasNull)
|
|
||||||
ReleaseActiveKeyboard();
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.Debug("Enabling keyboard: {0}", keyboardProvider.Name);
|
|
||||||
|
|
||||||
// Create a dialog to let the user know Artemis hasn't frozen
|
// Create a dialog to let the user know Artemis hasn't frozen
|
||||||
ProgressDialogController dialog = null;
|
ProgressDialogController dialog = null;
|
||||||
@ -127,14 +109,16 @@ namespace Artemis.Managers
|
|||||||
}
|
}
|
||||||
|
|
||||||
dialog?.SetMessage($"Enabling keyboard: {keyboardProvider.Name}...");
|
dialog?.SetMessage($"Enabling keyboard: {keyboardProvider.Name}...");
|
||||||
|
|
||||||
|
// Setup the new keyboard
|
||||||
ActiveKeyboard = keyboardProvider;
|
ActiveKeyboard = keyboardProvider;
|
||||||
await ActiveKeyboard.EnableAsync(dialog);
|
await ActiveKeyboard.EnableAsync(dialog);
|
||||||
|
EnableUsableDevices();
|
||||||
|
|
||||||
General.Default.LastKeyboard = ActiveKeyboard.Name;
|
General.Default.LastKeyboard = ActiveKeyboard.Name;
|
||||||
General.Default.Save();
|
General.Default.Save();
|
||||||
|
|
||||||
EnableUsableDevices();
|
await _events.PublishOnUIThreadAsync(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard));
|
||||||
_events.PublishOnUIThread(new ActiveKeyboardChanged(oldKeyboard, ActiveKeyboard));
|
|
||||||
_logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name);
|
_logger.Debug("Enabled keyboard: {0}", keyboardProvider.Name);
|
||||||
|
|
||||||
if (dialog != null)
|
if (dialog != null)
|
||||||
|
|||||||
@ -3,6 +3,8 @@ using System.Drawing;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Timers;
|
using System.Timers;
|
||||||
|
using Artemis.Events;
|
||||||
|
using Caliburn.Micro;
|
||||||
using Ninject.Extensions.Logging;
|
using Ninject.Extensions.Logging;
|
||||||
using Brush = System.Windows.Media.Brush;
|
using Brush = System.Windows.Media.Brush;
|
||||||
|
|
||||||
@ -11,7 +13,7 @@ namespace Artemis.Managers
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Manages the main programn loop
|
/// Manages the main programn loop
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class LoopManager : IDisposable
|
public class LoopManager : IDisposable, IHandle<ActiveKeyboardChanged>, IHandle<ActiveEffectChanged>
|
||||||
{
|
{
|
||||||
private readonly DeviceManager _deviceManager;
|
private readonly DeviceManager _deviceManager;
|
||||||
private readonly EffectManager _effectManager;
|
private readonly EffectManager _effectManager;
|
||||||
@ -19,8 +21,9 @@ namespace Artemis.Managers
|
|||||||
private readonly Timer _loopTimer;
|
private readonly Timer _loopTimer;
|
||||||
private Bitmap _keyboardBitmap;
|
private Bitmap _keyboardBitmap;
|
||||||
|
|
||||||
public LoopManager(ILogger logger, EffectManager effectManager, DeviceManager deviceManager)
|
public LoopManager(IEventAggregator events, ILogger logger, EffectManager effectManager, DeviceManager deviceManager)
|
||||||
{
|
{
|
||||||
|
events.Subscribe(this);
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_effectManager = effectManager;
|
_effectManager = effectManager;
|
||||||
_deviceManager = deviceManager;
|
_deviceManager = deviceManager;
|
||||||
@ -77,9 +80,6 @@ namespace Artemis.Managers
|
|||||||
_effectManager.ChangeEffect(lastEffect);
|
_effectManager.ChangeEffect(lastEffect);
|
||||||
}
|
}
|
||||||
|
|
||||||
// I assume that it's safe to use ActiveKeyboard and ActifeEffect here since both is checked above
|
|
||||||
_keyboardBitmap = _deviceManager.ActiveKeyboard.KeyboardBitmap(_effectManager.ActiveEffect.KeyboardScale);
|
|
||||||
|
|
||||||
Running = true;
|
Running = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ namespace Artemis.Managers
|
|||||||
}
|
}
|
||||||
var renderEffect = _effectManager.ActiveEffect;
|
var renderEffect = _effectManager.ActiveEffect;
|
||||||
|
|
||||||
if (_deviceManager.ChangingKeyboard)
|
if (_deviceManager.ChangingKeyboard || _keyboardBitmap == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Stop if no active keyboard
|
// Stop if no active keyboard
|
||||||
@ -165,5 +165,17 @@ namespace Artemis.Managers
|
|||||||
_deviceManager.ActiveKeyboard?.DrawBitmap(_keyboardBitmap);
|
_deviceManager.ActiveKeyboard?.DrawBitmap(_keyboardBitmap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Handle(ActiveKeyboardChanged message)
|
||||||
|
{
|
||||||
|
if (_deviceManager.ActiveKeyboard != null &&_effectManager.ActiveEffect != null)
|
||||||
|
_keyboardBitmap = _deviceManager.ActiveKeyboard.KeyboardBitmap(_effectManager.ActiveEffect.KeyboardScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Handle(ActiveEffectChanged message)
|
||||||
|
{
|
||||||
|
if (_deviceManager.ActiveKeyboard != null && _effectManager.ActiveEffect != null)
|
||||||
|
_keyboardBitmap = _deviceManager.ActiveKeyboard.KeyboardBitmap(_effectManager.ActiveEffect.KeyboardScale);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user