mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
Plugins - Reworked most of the activation logic
This commit is contained in:
1 parent
1e0dc1894d
commit
b56966c585
34 files changed
+509
-362
No files matched your search
@@ -29,18 +29,18 @@ namespace Artemis.UI.Screens.Sidebar
|
||||
private readonly Timer _activeModulesUpdateTimer;
|
||||
private readonly IKernel _kernel;
|
||||
private readonly IModuleVmFactory _moduleVmFactory;
|
||||
private readonly IPluginService _pluginService;
|
||||
private readonly IPluginManagementService _pluginManagementService;
|
||||
private string _activeModules;
|
||||
private bool _isSidebarOpen;
|
||||
private IScreen _selectedItem;
|
||||
private BindableCollection<INavigationItem> _sidebarItems;
|
||||
private Dictionary<INavigationItem, Module> _sidebarModules;
|
||||
|
||||
public SidebarViewModel(IKernel kernel, IEventAggregator eventAggregator, IModuleVmFactory moduleVmFactory, IPluginService pluginService)
|
||||
public SidebarViewModel(IKernel kernel, IEventAggregator eventAggregator, IModuleVmFactory moduleVmFactory, IPluginManagementService pluginManagementService)
|
||||
{
|
||||
_kernel = kernel;
|
||||
_moduleVmFactory = moduleVmFactory;
|
||||
_pluginService = pluginService;
|
||||
_pluginManagementService = pluginManagementService;
|
||||
|
||||
SidebarModules = new Dictionary<INavigationItem, Module>();
|
||||
SidebarItems = new BindableCollection<INavigationItem>();
|
||||
@@ -49,8 +49,8 @@ namespace Artemis.UI.Screens.Sidebar
|
||||
_activeModulesUpdateTimer.Start();
|
||||
_activeModulesUpdateTimer.Elapsed += ActiveModulesUpdateTimerOnElapsed;
|
||||
|
||||
_pluginService.PluginEnabled += PluginServiceOnPluginEnabled;
|
||||
_pluginService.PluginDisabled += PluginServiceOnPluginDisabled;
|
||||
_pluginManagementService.PluginEnabled += PluginManagementServiceOnPluginManagementEnabled;
|
||||
_pluginManagementService.PluginDisabled += PluginManagementServiceOnPluginManagementDisabled;
|
||||
|
||||
SetupSidebar();
|
||||
eventAggregator.Subscribe(this);
|
||||
@@ -96,8 +96,8 @@ namespace Artemis.UI.Screens.Sidebar
|
||||
SelectedItem?.Deactivate();
|
||||
SelectedItem = null;
|
||||
|
||||
_pluginService.PluginEnabled -= PluginServiceOnPluginEnabled;
|
||||
_pluginService.PluginDisabled -= PluginServiceOnPluginDisabled;
|
||||
_pluginManagementService.PluginEnabled -= PluginManagementServiceOnPluginManagementEnabled;
|
||||
_pluginManagementService.PluginDisabled -= PluginManagementServiceOnPluginManagementDisabled;
|
||||
|
||||
_activeModulesUpdateTimer.Stop();
|
||||
_activeModulesUpdateTimer.Elapsed -= ActiveModulesUpdateTimerOnElapsed;
|
||||
@@ -118,7 +118,7 @@ namespace Artemis.UI.Screens.Sidebar
|
||||
// Add all activated modules
|
||||
SidebarItems.Add(new DividerNavigationItem());
|
||||
SidebarItems.Add(new SubheaderNavigationItem {Subheader = "Modules"});
|
||||
List<Module> modules = _pluginService.GetPluginsOfType<Module>().ToList();
|
||||
List<Module> modules = _pluginManagementService.GetPluginsOfType<Module>().ToList();
|
||||
foreach (Module module in modules)
|
||||
AddModule(module);
|
||||
|
||||
@@ -210,15 +210,15 @@ namespace Artemis.UI.Screens.Sidebar
|
||||
|
||||
#region Event handlers
|
||||
|
||||
private void PluginServiceOnPluginEnabled(object sender, PluginEventArgs e)
|
||||
private void PluginManagementServiceOnPluginManagementEnabled(object sender, PluginEventArgs e)
|
||||
{
|
||||
if (e.PluginInfo.Instance is Module module)
|
||||
if (e.PluginInfo.Plugin is Module module)
|
||||
AddModule(module);
|
||||
}
|
||||
|
||||
private void PluginServiceOnPluginDisabled(object sender, PluginEventArgs e)
|
||||
private void PluginManagementServiceOnPluginManagementDisabled(object sender, PluginEventArgs e)
|
||||
{
|
||||
if (e.PluginInfo.Instance is Module module)
|
||||
if (e.PluginInfo.Plugin is Module module)
|
||||
RemoveModule(module);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user