diff --git a/TwitchDownloaderWPF/Images/ppStretch.gif b/TwitchDownloaderWPF/Images/ppStretch.gif
new file mode 100644
index 00000000..06b13b20
Binary files /dev/null and b/TwitchDownloaderWPF/Images/ppStretch.gif differ
diff --git a/TwitchDownloaderWPF/PageChatDownload.xaml.cs b/TwitchDownloaderWPF/PageChatDownload.xaml.cs
index 0cf6e540..43be5369 100644
--- a/TwitchDownloaderWPF/PageChatDownload.xaml.cs
+++ b/TwitchDownloaderWPF/PageChatDownload.xaml.cs
@@ -586,6 +586,7 @@ private async void SplitBtnDownload_Click(object sender, RoutedEventArgs e)
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
statusMessage.Text = Translations.Strings.StatusCanceling;
+ SetImage("Images/ppStretch.gif", true);
try
{
_cancellationTokenSource.Cancel();
diff --git a/TwitchDownloaderWPF/PageChatRender.xaml.cs b/TwitchDownloaderWPF/PageChatRender.xaml.cs
index 3ccccff0..8c9499d1 100644
--- a/TwitchDownloaderWPF/PageChatRender.xaml.cs
+++ b/TwitchDownloaderWPF/PageChatRender.xaml.cs
@@ -696,6 +696,7 @@ private void BtnEnqueue_Click(object sender, RoutedEventArgs e)
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
statusMessage.Text = Translations.Strings.StatusCanceling;
+ SetImage("Images/ppStretch.gif", true);
try
{
_cancellationTokenSource.Cancel();
diff --git a/TwitchDownloaderWPF/PageChatUpdate.xaml.cs b/TwitchDownloaderWPF/PageChatUpdate.xaml.cs
index b21bedd2..edd3a7a4 100644
--- a/TwitchDownloaderWPF/PageChatUpdate.xaml.cs
+++ b/TwitchDownloaderWPF/PageChatUpdate.xaml.cs
@@ -603,6 +603,7 @@ private async void SplitBtnUpdate_Click(object sender, RoutedEventArgs e)
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
statusMessage.Text = Translations.Strings.StatusCanceling;
+ SetImage("Images/ppStretch.gif", true);
try
{
_cancellationTokenSource.Cancel();
diff --git a/TwitchDownloaderWPF/PageClipDownload.xaml.cs b/TwitchDownloaderWPF/PageClipDownload.xaml.cs
index 596e23cb..05a8410d 100644
--- a/TwitchDownloaderWPF/PageClipDownload.xaml.cs
+++ b/TwitchDownloaderWPF/PageClipDownload.xaml.cs
@@ -265,6 +265,7 @@ private ClipDownloadOptions GetOptions(string fileName)
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
statusMessage.Text = Translations.Strings.StatusCanceling;
+ SetImage("Images/ppStretch.gif", true);
try
{
_cancellationTokenSource.Cancel();
diff --git a/TwitchDownloaderWPF/PageQueue.xaml b/TwitchDownloaderWPF/PageQueue.xaml
index cb02a79d..9eddf37e 100644
--- a/TwitchDownloaderWPF/PageQueue.xaml
+++ b/TwitchDownloaderWPF/PageQueue.xaml
@@ -5,6 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:TwitchDownloaderWPF"
xmlns:lex="http://wpflocalizeextension.codeplex.com"
+ xmlns:gif="http://wpfanimatedgif.codeplex.com"
lex:LocalizeDictionary.DesignCulture=""
lex:ResxLocalizationProvider.DefaultAssembly="TwitchDownloaderWPF"
lex:ResxLocalizationProvider.DefaultDictionary="Strings"
@@ -76,6 +77,7 @@
+
diff --git a/TwitchDownloaderWPF/PageVodDownload.xaml.cs b/TwitchDownloaderWPF/PageVodDownload.xaml.cs
index a42d03b6..816b0f8a 100644
--- a/TwitchDownloaderWPF/PageVodDownload.xaml.cs
+++ b/TwitchDownloaderWPF/PageVodDownload.xaml.cs
@@ -493,6 +493,7 @@ private DirectoryInfo[] HandleCacheCleanerCallback(DirectoryInfo[] directories)
private void BtnCancel_Click(object sender, RoutedEventArgs e)
{
statusMessage.Text = Translations.Strings.StatusCanceling;
+ SetImage("Images/ppStretch.gif", true);
try
{
_cancellationTokenSource.Cancel();
diff --git a/TwitchDownloaderWPF/TwitchDownloaderWPF.csproj b/TwitchDownloaderWPF/TwitchDownloaderWPF.csproj
index 01887954..04121d4b 100644
--- a/TwitchDownloaderWPF/TwitchDownloaderWPF.csproj
+++ b/TwitchDownloaderWPF/TwitchDownloaderWPF.csproj
@@ -25,6 +25,7 @@
+
diff --git a/TwitchDownloaderWPF/TwitchTasks/ChatDownloadTask.cs b/TwitchDownloaderWPF/TwitchTasks/ChatDownloadTask.cs
index af9f7f7e..764dfd87 100644
--- a/TwitchDownloaderWPF/TwitchTasks/ChatDownloadTask.cs
+++ b/TwitchDownloaderWPF/TwitchTasks/ChatDownloadTask.cs
@@ -35,6 +35,13 @@ public string DisplayStatus
private set => SetField(ref _displayStatus, value);
}
+ private string _statusImage;
+ public string StatusImage
+ {
+ get => _statusImage;
+ private set => SetField(ref _statusImage, value);
+ }
+
public ChatDownloadOptions DownloadOptions { get; init; }
public CancellationTokenSource TokenSource { get; set; } = new CancellationTokenSource();
public ITwitchTask DependantTask { get; set; }
@@ -90,6 +97,14 @@ public void ChangeStatus(TwitchTaskStatus newStatus)
{
CanCancel = false;
}
+
+ StatusImage = newStatus switch
+ {
+ TwitchTaskStatus.Running => "Images/ppOverheat.gif",
+ TwitchTaskStatus.Ready or TwitchTaskStatus.Waiting => "Images/ppHop.gif",
+ TwitchTaskStatus.Stopping => "Images/ppStretch.gif",
+ _ => null
+ };
}
public async Task RunAsync()
diff --git a/TwitchDownloaderWPF/TwitchTasks/ChatRenderTask.cs b/TwitchDownloaderWPF/TwitchTasks/ChatRenderTask.cs
index 1cd639e4..f35530f1 100644
--- a/TwitchDownloaderWPF/TwitchTasks/ChatRenderTask.cs
+++ b/TwitchDownloaderWPF/TwitchTasks/ChatRenderTask.cs
@@ -35,6 +35,13 @@ public string DisplayStatus
private set => SetField(ref _displayStatus, value);
}
+ private string _statusImage;
+ public string StatusImage
+ {
+ get => _statusImage;
+ private set => SetField(ref _statusImage, value);
+ }
+
public ChatRenderOptions DownloadOptions { get; init; }
public CancellationTokenSource TokenSource { get; set; } = new CancellationTokenSource();
public ITwitchTask DependantTask { get; set; }
@@ -109,6 +116,14 @@ public void ChangeStatus(TwitchTaskStatus newStatus)
{
CanCancel = false;
}
+
+ StatusImage = newStatus switch
+ {
+ TwitchTaskStatus.Running => "Images/ppOverheat.gif",
+ TwitchTaskStatus.Ready or TwitchTaskStatus.Waiting => "Images/ppHop.gif",
+ TwitchTaskStatus.Stopping => "Images/ppStretch.gif",
+ _ => null
+ };
}
public async Task RunAsync()
diff --git a/TwitchDownloaderWPF/TwitchTasks/ChatUpdateTask.cs b/TwitchDownloaderWPF/TwitchTasks/ChatUpdateTask.cs
index d1e59225..bb946688 100644
--- a/TwitchDownloaderWPF/TwitchTasks/ChatUpdateTask.cs
+++ b/TwitchDownloaderWPF/TwitchTasks/ChatUpdateTask.cs
@@ -35,6 +35,13 @@ public string DisplayStatus
private set => SetField(ref _displayStatus, value);
}
+ private string _statusImage;
+ public string StatusImage
+ {
+ get => _statusImage;
+ private set => SetField(ref _statusImage, value);
+ }
+
public ChatUpdateOptions UpdateOptions { get; init; }
public CancellationTokenSource TokenSource { get; set; } = new CancellationTokenSource();
public ITwitchTask DependantTask { get; set; }
@@ -90,6 +97,14 @@ public void ChangeStatus(TwitchTaskStatus newStatus)
{
CanCancel = false;
}
+
+ StatusImage = newStatus switch
+ {
+ TwitchTaskStatus.Running => "Images/ppOverheat.gif",
+ TwitchTaskStatus.Ready or TwitchTaskStatus.Waiting => "Images/ppHop.gif",
+ TwitchTaskStatus.Stopping => "Images/ppStretch.gif",
+ _ => null
+ };
}
public async Task RunAsync()
diff --git a/TwitchDownloaderWPF/TwitchTasks/ClipDownloadTask.cs b/TwitchDownloaderWPF/TwitchTasks/ClipDownloadTask.cs
index 204acbdc..34b0ede9 100644
--- a/TwitchDownloaderWPF/TwitchTasks/ClipDownloadTask.cs
+++ b/TwitchDownloaderWPF/TwitchTasks/ClipDownloadTask.cs
@@ -35,6 +35,13 @@ public string DisplayStatus
private set => SetField(ref _displayStatus, value);
}
+ private string _statusImage;
+ public string StatusImage
+ {
+ get => _statusImage;
+ private set => SetField(ref _statusImage, value);
+ }
+
public ClipDownloadOptions DownloadOptions { get; init; }
public CancellationTokenSource TokenSource { get; set; } = new CancellationTokenSource();
public ITwitchTask DependantTask { get; set; }
@@ -90,6 +97,14 @@ public void ChangeStatus(TwitchTaskStatus newStatus)
{
CanCancel = false;
}
+
+ StatusImage = newStatus switch
+ {
+ TwitchTaskStatus.Running => "Images/ppOverheat.gif",
+ TwitchTaskStatus.Ready or TwitchTaskStatus.Waiting => "Images/ppHop.gif",
+ TwitchTaskStatus.Stopping => "Images/ppStretch.gif",
+ _ => null
+ };
}
public async Task RunAsync()
diff --git a/TwitchDownloaderWPF/TwitchTasks/ITwitchTask.cs b/TwitchDownloaderWPF/TwitchTasks/ITwitchTask.cs
index 759e9add..a0813966 100644
--- a/TwitchDownloaderWPF/TwitchTasks/ITwitchTask.cs
+++ b/TwitchDownloaderWPF/TwitchTasks/ITwitchTask.cs
@@ -21,6 +21,7 @@ public interface ITwitchTask : INotifyPropertyChanged
int Progress { get; }
TwitchTaskStatus Status { get; }
string DisplayStatus { get; }
+ string StatusImage { get; }
CancellationTokenSource TokenSource { get; set; }
ITwitchTask DependantTask { get; set; }
string TaskType { get; }
diff --git a/TwitchDownloaderWPF/TwitchTasks/VodDownloadTask.cs b/TwitchDownloaderWPF/TwitchTasks/VodDownloadTask.cs
index d61867e5..f055075a 100644
--- a/TwitchDownloaderWPF/TwitchTasks/VodDownloadTask.cs
+++ b/TwitchDownloaderWPF/TwitchTasks/VodDownloadTask.cs
@@ -35,6 +35,13 @@ public string DisplayStatus
private set => SetField(ref _displayStatus, value);
}
+ private string _statusImage;
+ public string StatusImage
+ {
+ get => _statusImage;
+ private set => SetField(ref _statusImage, value);
+ }
+
public VideoDownloadOptions DownloadOptions { get; init; }
public CancellationTokenSource TokenSource { get; set; } = new CancellationTokenSource();
public ITwitchTask DependantTask { get; set; }
@@ -90,6 +97,14 @@ public void ChangeStatus(TwitchTaskStatus newStatus)
{
CanCancel = false;
}
+
+ StatusImage = newStatus switch
+ {
+ TwitchTaskStatus.Running => "Images/ppOverheat.gif",
+ TwitchTaskStatus.Ready or TwitchTaskStatus.Waiting => "Images/ppHop.gif",
+ TwitchTaskStatus.Stopping => "Images/ppStretch.gif",
+ _ => null
+ };
}
public async Task RunAsync()