private void OnAddedToVisualTree()
{
Operation.Actions.Added.SubscribeForLifetime(Actions_Added, this.LifetimeManager);
Operation.Actions.Removed.SubscribeForLifetime(Actions_Removed, this.LifetimeManager);
Operation.SynchronizeForLifetime(nameof(ProgressOperation.Message), () =>
{
messageLabel.Text = Operation.Message;
}, this.LifetimeManager);
Operation.SynchronizeForLifetime(nameof(ProgressOperation.State), () =>
{
if (Operation.State == OperationState.InProgress)
{
spinner.IsSpinning = true;
}
else if (Operation.State == OperationState.Completed)
{
spinner.IsSpinning = false;
spinner.Value = new ConsoleCharacter(' ', backgroundColor: ConsoleColor.Green);
}
else if (Operation.State == OperationState.Failed)
{
spinner.IsSpinning = false;
spinner.Value = new ConsoleCharacter(' ', backgroundColor: ConsoleColor.Red);
}
else if (Operation.State == OperationState.CompletedWithWarnings)
{
spinner.IsSpinning = false;
spinner.Value = new ConsoleCharacter(' ', backgroundColor: ConsoleColor.DarkYellow);
}
else if (Operation.State == OperationState.Queued)
{
spinner.IsSpinning = false;
spinner.Value = new ConsoleCharacter(' ', backgroundColor: ConsoleColor.Gray);
}
else if (Operation.State == OperationState.NotSet)
{
spinner.IsSpinning = false;
spinner.Value = new ConsoleCharacter('?', backgroundColor: ConsoleColor.Gray);
}
}, this.LifetimeManager);
}