From d777c61112422e865aee0946177cfd7ee08a3e8c Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Thu, 15 Dec 2016 15:24:54 +0100 Subject: [PATCH] Added NoneKeyboard to allow creating profiles without a keyboard for #141 --- Artemis/Artemis/Artemis.csproj | 1 + .../DeviceProviders/Artemis/NoneKeyboard.cs | 42 +++++++ .../Artemis/InjectionModules/DeviceModules.cs | 2 + .../ProfilePreview/ProfilePreviewModel.cs | 2 +- .../Layers/Types/Generic/GenericType.cs | 2 +- .../Resources/Keyboards/default-profiles.zip | Bin 383514 -> 404250 bytes .../Flyouts/FlyoutSettingsViewModel.cs | 6 +- .../ViewModels/Profiles/ProfileViewModel.cs | 106 +++++++++--------- 8 files changed, 101 insertions(+), 60 deletions(-) create mode 100644 Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs 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 c31d8020aaa901bae6357f50557723ec807a17b2..5713033cc58e960be61e2b2680eb7ae56cdfb4b9 100644 GIT binary patch delta 20409 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 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);