mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-11-01 13:13:21 -07:00
71 lines
1.8 KiB
C#
71 lines
1.8 KiB
C#
|
using Avalonia;
|
||
|
using Avalonia.Controls;
|
||
|
using Avalonia.Controls.Shapes;
|
||
|
using Avalonia.Interactivity;
|
||
|
using Avalonia.Media;
|
||
|
|
||
|
namespace SourceGit.Views
|
||
|
{
|
||
|
public partial class PopupRunningStatus : UserControl
|
||
|
{
|
||
|
public static readonly StyledProperty<string> DescriptionProperty =
|
||
|
AvaloniaProperty.Register<PopupRunningStatus, string>(nameof(Description));
|
||
|
|
||
|
public string Description
|
||
|
{
|
||
|
get => GetValue(DescriptionProperty);
|
||
|
set => SetValue(DescriptionProperty, value);
|
||
|
}
|
||
|
|
||
|
public PopupRunningStatus()
|
||
|
{
|
||
|
InitializeComponent();
|
||
|
}
|
||
|
|
||
|
protected override void OnLoaded(RoutedEventArgs e)
|
||
|
{
|
||
|
base.OnLoaded(e);
|
||
|
|
||
|
if (IsVisible)
|
||
|
StartAnim();
|
||
|
}
|
||
|
|
||
|
protected override void OnUnloaded(RoutedEventArgs e)
|
||
|
{
|
||
|
StopAnim();
|
||
|
base.OnUnloaded(e);
|
||
|
}
|
||
|
|
||
|
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
|
||
|
{
|
||
|
base.OnPropertyChanged(change);
|
||
|
|
||
|
if (change.Property == IsVisibleProperty)
|
||
|
{
|
||
|
if (IsVisible)
|
||
|
StartAnim();
|
||
|
else
|
||
|
StopAnim();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void StartAnim()
|
||
|
{
|
||
|
icon.Content = new Path()
|
||
|
{
|
||
|
Data = this.FindResource("Icons.Loading") as StreamGeometry,
|
||
|
Classes = { "rotating" },
|
||
|
};
|
||
|
progressBar.IsIndeterminate = true;
|
||
|
}
|
||
|
|
||
|
private void StopAnim()
|
||
|
{
|
||
|
if (icon.Content is Path path)
|
||
|
path.Classes.Clear();
|
||
|
icon.Content = null;
|
||
|
progressBar.IsIndeterminate = false;
|
||
|
}
|
||
|
}
|
||
|
}
|