mlaumcherb/Mlaumcherb.Client.Avalonia/зримое/GameVersionItemView.axaml.cs

48 lines
1.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Avalonia.Controls;
using Avalonia.Media;
using Avalonia.Threading;
using Mlaumcherb.Client.Avalonia.классы;
namespace Mlaumcherb.Client.Avalonia.зримое;
public abstract partial class GameVersionItemView : ListBoxItem
{
private static readonly SolidColorBrush _avaliableColor = new(Color.FromRgb(30, 130, 40));
private static readonly SolidColorBrush _unavaliableColor = new(Color.FromRgb(170, 70, 70));
protected GameVersionItemView(string name, bool initialStatus)
{
InitializeComponent();
text.Text = name;
UpdateBackground(initialStatus);
}
protected void UpdateBackground(bool isInstalled)
{
Dispatcher.UIThread.Invoke(() => Background = isInstalled ? _avaliableColor : _unavaliableColor);
}
}
// Background changes when props status changes
public class InstalledGameVersionItemView : GameVersionItemView
{
public readonly InstalledGameVersionProps Props;
public InstalledGameVersionItemView(InstalledGameVersionProps props) : base(props.Id, props.IsInstalled)
{
Props = props;
props.StatusChanged += UpdateBackground;
}
}
// Background is set once by checking if the version is present in InstalledVersionsCatalog
public class RemoteGameVersionItemView : GameVersionItemView
{
public readonly RemoteVersionDescriptorProps Props;
public RemoteGameVersionItemView(RemoteVersionDescriptorProps props)
: base(props.id, LauncherApp.InstalledVersionCatalog.versions.ContainsKey(props.id))
{
Props = props;
}
}