mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
105 lines
4.4 KiB
C#
105 lines
4.4 KiB
C#
using System;
|
|
using System.Windows.Input;
|
|
using Artemis.Core;
|
|
using Artemis.Core.Services;
|
|
using Humanizer;
|
|
using MaterialDesignExtensions.Controls;
|
|
using Stylet;
|
|
using MouseButton = System.Windows.Input.MouseButton;
|
|
|
|
namespace Artemis.UI.Screens.Splash
|
|
{
|
|
public class SplashViewModel : Screen
|
|
{
|
|
private readonly ICoreService _coreService;
|
|
private readonly IPluginManagementService _pluginManagementService;
|
|
private string _status;
|
|
|
|
public SplashViewModel(ICoreService coreService, IPluginManagementService pluginManagementService)
|
|
{
|
|
_coreService = coreService;
|
|
_pluginManagementService = pluginManagementService;
|
|
Status = "Initializing Core";
|
|
}
|
|
|
|
public string Status
|
|
{
|
|
get => _status;
|
|
set => SetAndNotify(ref _status, value);
|
|
}
|
|
|
|
// ReSharper disable once UnusedMember.Global - Called from view
|
|
public void MouseDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
// Allow dragging the window by clicking anywhere
|
|
if (e.ChangedButton == MouseButton.Left)
|
|
((MaterialWindow) View).DragMove();
|
|
}
|
|
|
|
protected override void OnInitialActivate()
|
|
{
|
|
_coreService.Initialized += OnCoreServiceOnInitialized;
|
|
_pluginManagementService.CopyingBuildInPlugins += OnPluginManagementServiceOnCopyingBuildInPluginsManagement;
|
|
_pluginManagementService.PluginLoading += OnPluginManagementServiceOnPluginManagementLoading;
|
|
_pluginManagementService.PluginLoaded += OnPluginManagementServiceOnPluginManagementLoaded;
|
|
_pluginManagementService.PluginEnabling += PluginManagementServiceOnPluginManagementEnabling;
|
|
_pluginManagementService.PluginEnabled += PluginManagementServiceOnPluginManagementEnabled;
|
|
_pluginManagementService.PluginFeatureEnabling += PluginManagementServiceOnPluginFeatureEnabling;
|
|
_pluginManagementService.PluginFeatureEnabled += PluginManagementServiceOnPluginFeatureEnabled;
|
|
base.OnInitialActivate();
|
|
}
|
|
|
|
protected override void OnClose()
|
|
{
|
|
_coreService.Initialized -= OnCoreServiceOnInitialized;
|
|
_pluginManagementService.CopyingBuildInPlugins -= OnPluginManagementServiceOnCopyingBuildInPluginsManagement;
|
|
_pluginManagementService.PluginLoading -= OnPluginManagementServiceOnPluginManagementLoading;
|
|
_pluginManagementService.PluginLoaded -= OnPluginManagementServiceOnPluginManagementLoaded;
|
|
_pluginManagementService.PluginEnabling -= PluginManagementServiceOnPluginManagementEnabling;
|
|
_pluginManagementService.PluginEnabled -= PluginManagementServiceOnPluginManagementEnabled;
|
|
_pluginManagementService.PluginFeatureEnabling -= PluginManagementServiceOnPluginFeatureEnabling;
|
|
_pluginManagementService.PluginFeatureEnabled -= PluginManagementServiceOnPluginFeatureEnabled;
|
|
base.OnClose();
|
|
}
|
|
|
|
private void OnPluginManagementServiceOnPluginManagementLoaded(object sender, PluginEventArgs args)
|
|
{
|
|
Status = "Initializing UI";
|
|
}
|
|
|
|
private void OnPluginManagementServiceOnPluginManagementLoading(object sender, PluginEventArgs args)
|
|
{
|
|
Status = "Loading plugin: " + args.Plugin.Info.Name;
|
|
}
|
|
|
|
private void PluginManagementServiceOnPluginManagementEnabled(object sender, PluginEventArgs args)
|
|
{
|
|
Status = "Initializing UI";
|
|
}
|
|
|
|
private void PluginManagementServiceOnPluginManagementEnabling(object sender, PluginEventArgs args)
|
|
{
|
|
Status = "Enabling plugin: " + args.Plugin.Info.Name;
|
|
}
|
|
|
|
private void PluginManagementServiceOnPluginFeatureEnabling(object sender, PluginFeatureEventArgs e)
|
|
{
|
|
Status = "Enabling: " + e.PluginFeature.GetType().Name.Humanize();
|
|
}
|
|
|
|
private void PluginManagementServiceOnPluginFeatureEnabled(object sender, PluginFeatureEventArgs e)
|
|
{
|
|
Status = "Initializing UI";
|
|
}
|
|
|
|
private void OnPluginManagementServiceOnCopyingBuildInPluginsManagement(object sender, EventArgs args)
|
|
{
|
|
Status = "Updating built-in plugins";
|
|
}
|
|
|
|
private void OnCoreServiceOnInitialized(object sender, EventArgs args)
|
|
{
|
|
Execute.OnUIThread(() => RequestClose());
|
|
}
|
|
}
|
|
} |