1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
Artemis/src/Artemis.UI/Screens/Splash/SplashViewModel.cs
Robert f531c9d0d9 UI - Added splash screen
UI - Added tray icon
2021-11-26 23:57:16 +01:00

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());
}
}
}