diff --git a/src/Artemis.UI.Avalonia/Providers/AvaloniaInputProvider.cs b/src/Artemis.UI.Avalonia/Providers/AvaloniaInputProvider.cs new file mode 100644 index 000000000..ca50b3734 --- /dev/null +++ b/src/Artemis.UI.Avalonia/Providers/AvaloniaInputProvider.cs @@ -0,0 +1,8 @@ +using Artemis.Core.Services; + +namespace Artemis.UI.Avalonia.Providers +{ + public class AvaloniaInputProvider : InputProvider + { + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceInfoTabViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceInfoTabViewModel.cs index 91d0d7d02..bd93e2113 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceInfoTabViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/ViewModels/DeviceInfoTabViewModel.cs @@ -1,6 +1,7 @@ using System.Threading.Tasks; using Artemis.Core; using Artemis.UI.Avalonia.Shared; +using Artemis.UI.Avalonia.Shared.Services.Interfaces; using Avalonia; using RGB.NET.Core; @@ -8,8 +9,12 @@ namespace Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels { public class DeviceInfoTabViewModel : ActivatableViewModelBase { - public DeviceInfoTabViewModel(ArtemisDevice device) + private readonly INotificationService _notificationService; + + public DeviceInfoTabViewModel(ArtemisDevice device, INotificationService notificationService) { + _notificationService = notificationService; + Device = device; DisplayName = "Info"; @@ -24,7 +29,7 @@ namespace Artemis.UI.Avalonia.Screens.Device.Tabs.ViewModels public async Task CopyToClipboard(string content) { await Application.Current.Clipboard.SetTextAsync(content); - // ((DeviceDialogViewModel) Parent).DeviceMessageQueue.Enqueue("Copied path to clipboard."); + _notificationService.CreateNotification().WithMessage("Copied path to clipboard.").Show(); } } } \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml index 443b06da8..3a298e870 100644 --- a/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml +++ b/src/Artemis.UI.Avalonia/Screens/Device/Tabs/Views/DeviceInfoTabView.axaml @@ -2,7 +2,84 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:avalonia="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="Artemis.UI.Avalonia.Screens.Device.Tabs.Views.DeviceInfoTabView"> - Welcome to Avalonia! - + + + + + Device name + + + + Manufacturer + + + + + Device type + + + + + Physical layout + + + + + + + + Size (1px = 1mm) + + + + Location (1px = 1mm) + + + + Rotation (degrees) + + + + + Logical layout + + + + + + + + + + Default layout file path + + + + + + + Image file path + + + + + + + \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Screens/Root/ViewModels/RootViewModel.cs b/src/Artemis.UI.Avalonia/Screens/Root/ViewModels/RootViewModel.cs index 87577cf26..7edbfc0f7 100644 --- a/src/Artemis.UI.Avalonia/Screens/Root/ViewModels/RootViewModel.cs +++ b/src/Artemis.UI.Avalonia/Screens/Root/ViewModels/RootViewModel.cs @@ -1,5 +1,6 @@ using Artemis.Core.Services; using Artemis.UI.Avalonia.Ninject.Factories; +using Artemis.UI.Avalonia.Services.Interfaces; using Artemis.UI.Avalonia.Shared; using ReactiveUI; @@ -9,13 +10,15 @@ namespace Artemis.UI.Avalonia.Screens.Root.ViewModels { private readonly ICoreService _coreService; - public RootViewModel(ICoreService coreService, ISidebarVmFactory sidebarVmFactory) + public RootViewModel(ICoreService coreService, IRegistrationService registrationService, ISidebarVmFactory sidebarVmFactory) { Router = new RoutingState(); SidebarViewModel = sidebarVmFactory.SidebarViewModel(this); _coreService = coreService; _coreService.Initialize(); + + registrationService.RegisterProviders(); } public SidebarViewModel SidebarViewModel { get; } diff --git a/src/Artemis.UI.Avalonia/Services/Interfaces/IRegistrationService.cs b/src/Artemis.UI.Avalonia/Services/Interfaces/IRegistrationService.cs new file mode 100644 index 000000000..d65d09864 --- /dev/null +++ b/src/Artemis.UI.Avalonia/Services/Interfaces/IRegistrationService.cs @@ -0,0 +1,12 @@ +namespace Artemis.UI.Avalonia.Services.Interfaces +{ + public interface IRegistrationService : IArtemisUIService + { + void RegisterBuiltInDataModelDisplays(); + void RegisterBuiltInDataModelInputs(); + void RegisterBuiltInPropertyEditors(); + void RegisterProviders(); + void RegisterControllers(); + void ApplyPreferredGraphicsContext(); + } +} \ No newline at end of file diff --git a/src/Artemis.UI.Avalonia/Services/RegistrationService.cs b/src/Artemis.UI.Avalonia/Services/RegistrationService.cs new file mode 100644 index 000000000..1b10cf056 --- /dev/null +++ b/src/Artemis.UI.Avalonia/Services/RegistrationService.cs @@ -0,0 +1,40 @@ +using Artemis.Core.Services; +using Artemis.UI.Avalonia.Providers; +using Artemis.UI.Avalonia.Services.Interfaces; + +namespace Artemis.UI.Avalonia.Services +{ + public class RegistrationService : IRegistrationService + { + private readonly IInputService _inputService; + + public RegistrationService(IInputService inputService) + { + _inputService = inputService; + } + public void RegisterBuiltInDataModelDisplays() + { + } + + public void RegisterBuiltInDataModelInputs() + { + } + + public void RegisterBuiltInPropertyEditors() + { + } + + public void RegisterProviders() + { + _inputService.AddInputProvider(new AvaloniaInputProvider()); + } + + public void RegisterControllers() + { + } + + public void ApplyPreferredGraphicsContext() + { + } + } +} \ No newline at end of file