mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using System;
|
|
using System.Reactive.Disposables;
|
|
using System.Timers;
|
|
using Artemis.Core.Modules;
|
|
using Artemis.UI.Shared;
|
|
using Humanizer;
|
|
using PropertyChanged.SourceGenerator;
|
|
using ReactiveUI;
|
|
|
|
namespace Artemis.UI.Screens.Sidebar;
|
|
|
|
public partial class ModuleActivationRequirementViewModel : ActivatableViewModelBase
|
|
{
|
|
private readonly IModuleActivationRequirement _activationRequirement;
|
|
[Notify] private string _requirementDescription;
|
|
[Notify] private bool _requirementMet;
|
|
|
|
public ModuleActivationRequirementViewModel(IModuleActivationRequirement activationRequirement)
|
|
{
|
|
RequirementName = activationRequirement.GetType().Name.Humanize();
|
|
_requirementDescription = activationRequirement.GetUserFriendlyDescription();
|
|
_activationRequirement = activationRequirement;
|
|
|
|
this.WhenActivated(d =>
|
|
{
|
|
Timer updateTimer = new(TimeSpan.FromMilliseconds(500));
|
|
updateTimer.Elapsed += (_, _) => Update();
|
|
updateTimer.Start();
|
|
updateTimer.DisposeWith(d);
|
|
});
|
|
}
|
|
|
|
public string RequirementName { get; }
|
|
|
|
private void Update()
|
|
{
|
|
RequirementDescription = _activationRequirement.GetUserFriendlyDescription();
|
|
RequirementMet = _activationRequirement.Evaluate();
|
|
}
|
|
} |