1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
Artemis/src/Artemis.UI/Screens/Module/ModuleRootViewModel.cs
Robert 8d756128e4 Modules - Added activation requirements tab
Profile editor - Only override active profile with profile editor tab open
2020-08-26 19:38:44 +02:00

58 lines
1.9 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Artemis.Core.Plugins.Modules;
using Artemis.UI.Ninject.Factories;
using Ninject;
using Ninject.Parameters;
using Stylet;
namespace Artemis.UI.Screens.Module
{
public class ModuleRootViewModel : Conductor<Screen>.Collection.OneActive
{
private readonly IKernel _kernel;
private readonly IModuleVmFactory _moduleVmFactory;
public ModuleRootViewModel(Core.Plugins.Modules.Module module, IModuleVmFactory moduleVmFactory, IKernel kernel)
{
DisplayName = module?.DisplayName;
Module = module;
_moduleVmFactory = moduleVmFactory;
_kernel = kernel;
}
public Core.Plugins.Modules.Module Module { get; }
protected override void OnActivate()
{
AddTabs();
base.OnActivate();
}
private void AddTabs()
{
// Create the profile editor and module VMs
if (Module is ProfileModule profileModule)
Items.Add(_moduleVmFactory.CreateProfileEditorViewModel(profileModule));
if (Module.ActivationRequirements.Any())
Items.Add(_moduleVmFactory.CreateActivationRequirementsViewModel(Module));
if (Module.ModuleTabs != null)
{
var moduleTabs = new List<ModuleTab>(Module.ModuleTabs);
foreach (var moduleTab in moduleTabs.Where(m => m != null))
{
var module = new ConstructorArgument("module", Module);
var displayName = new ConstructorArgument("displayName", DisplayName);
var viewModel = (ModuleViewModel) _kernel.Get(moduleTab.Type, module, displayName);
Items.Add(viewModel);
}
}
ActiveItem = Items.FirstOrDefault();
}
}
}