diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index 13d87422d..8d31a8a77 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -321,6 +321,7 @@ + diff --git a/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs b/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs new file mode 100644 index 000000000..9aa51c19b --- /dev/null +++ b/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs @@ -0,0 +1,42 @@ +using System.Drawing; +using System.Windows; +using System.Windows.Forms; +using Artemis.Properties; + +namespace Artemis.DeviceProviders.Artemis +{ + public class NoneKeyboard : KeyboardProvider + { + public NoneKeyboard() + { + Name = "None"; + Slug = "none"; + CantEnableText = "Waaaaah, this should not be happening!"; + Height = 1; + Width = 1; + PreviewSettings = new PreviewSettings(984, 375, new Thickness(0, 0, 0, 0), Resources.none); + } + + public override void Disable() + { + } + + public override bool CanEnable() + { + return true; + } + + public override void Enable() + { + } + + public override void DrawBitmap(Bitmap bitmap) + { + } + + public override KeyMatch? GetKeyPosition(Keys keyCode) + { + return null; + } + } +} \ No newline at end of file diff --git a/Artemis/Artemis/InjectionModules/DeviceModules.cs b/Artemis/Artemis/InjectionModules/DeviceModules.cs index 46839dd26..de64108ce 100644 --- a/Artemis/Artemis/InjectionModules/DeviceModules.cs +++ b/Artemis/Artemis/InjectionModules/DeviceModules.cs @@ -1,4 +1,5 @@ using Artemis.DeviceProviders; +using Artemis.DeviceProviders.Artemis; using Artemis.DeviceProviders.CoolerMaster; using Artemis.DeviceProviders.Corsair; using Artemis.DeviceProviders.Logitech; @@ -12,6 +13,7 @@ namespace Artemis.InjectionModules public override void Load() { // Keyboards + Bind().To().InSingletonScope(); Bind().To().InSingletonScope(); Bind().To().InSingletonScope(); Bind().To().InSingletonScope(); diff --git a/Artemis/Artemis/Modules/Effects/ProfilePreview/ProfilePreviewModel.cs b/Artemis/Artemis/Modules/Effects/ProfilePreview/ProfilePreviewModel.cs index 2fb32ec1b..0b258f5fe 100644 --- a/Artemis/Artemis/Modules/Effects/ProfilePreview/ProfilePreviewModel.cs +++ b/Artemis/Artemis/Modules/Effects/ProfilePreview/ProfilePreviewModel.cs @@ -62,7 +62,7 @@ namespace Artemis.Modules.Effects.ProfilePreview var keyboardRect = DeviceManager.ActiveKeyboard.KeyboardRectangle(KeyboardScale); using (var g = Graphics.FromImage(frame.KeyboardBitmap)) { - Profile.DrawLayers(g, renderLayers.Where(rl => rl.LayerType.DrawType == DrawType.Keyboard), + Profile?.DrawLayers(g, renderLayers.Where(rl => rl.LayerType.DrawType == DrawType.Keyboard), DataModel, keyboardRect, true, true, "keyboard"); } // Render mice layer-by-layer diff --git a/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs b/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs index 0bd9b6dc0..97fde86e3 100644 --- a/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs +++ b/Artemis/Artemis/Profiles/Layers/Types/Generic/GenericType.cs @@ -23,7 +23,7 @@ namespace Artemis.Profiles.Layers.Types.Generic var thumbnailRect = new Rect(0, 0, 18, 18); var visual = new DrawingVisual(); using (var c = visual.RenderOpen()) - c.DrawImage(ImageUtilities.BitmapToBitmapImage(Resources.headset), thumbnailRect); + c.DrawImage(ImageUtilities.BitmapToBitmapImage(Resources.generic), thumbnailRect); var image = new DrawingImage(visual.Drawing); return image; diff --git a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip index c31d8020a..5713033cc 100644 Binary files a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip and b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip differ diff --git a/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs b/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs index 215b23bde..c038d47ba 100644 --- a/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs +++ b/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs @@ -70,11 +70,7 @@ namespace Artemis.ViewModels.Flyouts { get { - var collection = new BindableCollection - (MainManager.DeviceManager.KeyboardProviders.Select(k => k.Name)); - - collection.Insert(0, "None"); - return collection; + return new BindableCollection(MainManager.DeviceManager.KeyboardProviders.Select(k => k.Name)); } } diff --git a/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs index 47605c4f7..6dce58e43 100644 --- a/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs +++ b/Artemis/Artemis/ViewModels/Profiles/ProfileViewModel.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Timers; using System.Windows; using System.Windows.Controls; using System.Windows.Input; @@ -45,6 +44,57 @@ namespace Artemis.ViewModels.Profiles deviceManager.OnKeyboardChangedEvent += DeviceManagerOnOnKeyboardChangedEvent; } + public ProfileModel SelectedProfile { get; set; } + + public LayerModel SelectedLayer + { + get { return _selectedLayer; } + set + { + if (Equals(value, _selectedLayer)) return; + _selectedLayer = value; + NotifyOfPropertyChange(() => SelectedLayer); + } + } + + public DrawingImage KeyboardPreview + { + get { return _keyboardPreview; } + set + { + if (Equals(value, _keyboardPreview)) return; + _keyboardPreview = value; + NotifyOfPropertyChange(() => KeyboardPreview); + } + } + + public double BlurRadius + { + get { return _blurRadius; } + set + { + if (value.Equals(_blurRadius)) return; + _blurRadius = value; + NotifyOfPropertyChange(() => BlurRadius); + } + } + + public bool ShowAll + { + get { return _showAll; } + set + { + if (value == _showAll) return; + _showAll = value; + NotifyOfPropertyChange(() => ShowAll); + } + } + + public ImageSource KeyboardImage => ImageUtilities + .BitmapToBitmapImage(_deviceManager.ActiveKeyboard?.PreviewSettings.Image ?? Resources.none); + + public bool Activated { get; set; } + private void LoopManagerOnRenderCompleted(object sender, EventArgs eventArgs) { if (!Activated) @@ -55,7 +105,8 @@ namespace Artemis.ViewModels.Profiles _blurProgress = _blurProgress + 0.025; BlurRadius = (Math.Sin(_blurProgress*Math.PI) + 1)*10 + 10; - if (SelectedProfile == null || _deviceManager.ActiveKeyboard == null) + // Besides the usual checks, also check if the ActiveKeyboard isn't the NoneKeyboard + if (SelectedProfile == null || _deviceManager.ActiveKeyboard == null || _deviceManager.ActiveKeyboard.Slug == "none") { var preview = new DrawingImage(); preview.Freeze(); @@ -127,57 +178,6 @@ namespace Artemis.ViewModels.Profiles KeyboardPreview = drawnPreview; } - public ProfileModel SelectedProfile { get; set; } - - public LayerModel SelectedLayer - { - get { return _selectedLayer; } - set - { - if (Equals(value, _selectedLayer)) return; - _selectedLayer = value; - NotifyOfPropertyChange(() => SelectedLayer); - } - } - - public DrawingImage KeyboardPreview - { - get { return _keyboardPreview; } - set - { - if (Equals(value, _keyboardPreview)) return; - _keyboardPreview = value; - NotifyOfPropertyChange(() => KeyboardPreview); - } - } - - public double BlurRadius - { - get { return _blurRadius; } - set - { - if (value.Equals(_blurRadius)) return; - _blurRadius = value; - NotifyOfPropertyChange(() => BlurRadius); - } - } - - public bool ShowAll - { - get { return _showAll; } - set - { - if (value == _showAll) return; - _showAll = value; - NotifyOfPropertyChange(() => ShowAll); - } - } - - public ImageSource KeyboardImage => ImageUtilities - .BitmapToBitmapImage(_deviceManager.ActiveKeyboard?.PreviewSettings.Image ?? Resources.none); - - public bool Activated { get; set; } - private void DeviceManagerOnOnKeyboardChangedEvent(object sender, KeyboardChangedEventArgs e) { NotifyOfPropertyChange(() => KeyboardImage);