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/Tabs/ActivationRequirementViewModel.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

64 lines
1.8 KiB
C#

using System.Timers;
using Artemis.Core.Plugins.Modules.ActivationRequirements;
using Humanizer;
using Stylet;
namespace Artemis.UI.Screens.Module.Tabs
{
public class ActivationRequirementViewModel : Screen
{
private readonly IModuleActivationRequirement _activationRequirement;
private readonly Timer _updateTimer;
private string _requirementDescription;
private bool _requirementMet;
public ActivationRequirementViewModel(IModuleActivationRequirement activationRequirement)
{
_activationRequirement = activationRequirement;
_updateTimer = new Timer(500);
RequirementName = activationRequirement.GetType().Name.Humanize();
RequirementDescription = activationRequirement.GetUserFriendlyDescription();
_updateTimer.Elapsed += UpdateTimerOnElapsed;
}
public string RequirementName { get; }
public string RequirementDescription
{
get => _requirementDescription;
set => SetAndNotify(ref _requirementDescription, value);
}
public bool RequirementMet
{
get => _requirementMet;
set => SetAndNotify(ref _requirementMet, value);
}
protected override void OnActivate()
{
Update();
_updateTimer.Start();
base.OnActivate();
}
protected override void OnDeactivate()
{
_updateTimer.Stop();
base.OnDeactivate();
}
private void UpdateTimerOnElapsed(object sender, ElapsedEventArgs e)
{
Update();
}
private void Update()
{
RequirementDescription = _activationRequirement.GetUserFriendlyDescription();
RequirementMet = _activationRequirement.Evaluate();
}
}
}