UpdateDialog: Fix cancellation and buttons
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Test / Run tests (push) Successful in 2m24s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Test / Run tests (push) Successful in 2m24s
				
			This commit is contained in:
		| @@ -5,9 +5,10 @@ | ||||
|         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | ||||
|         ResizeMode="NoResize" ShowInTaskbar="False" Topmost="True" | ||||
|         WindowStartupLocation="CenterOwner" | ||||
|         Title="Neues Update verfügbar - Elwig" Height="180" Width="400"> | ||||
|         Title="Neues Update verfügbar - Elwig" Height="190" Width="400" | ||||
|         Closed="OnClosed"> | ||||
|     <Grid> | ||||
|         <TextBlock x:Name="Description" FontSize="14" Margin="0,0,0,30" | ||||
|         <TextBlock x:Name="Description" FontSize="14" Margin="0,0,0,40" | ||||
|                    HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center"> | ||||
|             Version <Run x:Name="VersionText" FontWeight="Bold">0.0.0</Run> von Elwig ist verfügbar! | ||||
|             (<Hyperlink NavigateUri="https://elwig.at/changelog" RequestNavigate="Hyperlink_RequestNavigate">Änderungen</Hyperlink>)<LineBreak/> | ||||
| @@ -20,12 +21,12 @@ | ||||
|                      HorizontalAlignment="Center" VerticalAlignment="Center" | ||||
|                      Height="27" Width="300" SnapsToDevicePixels="True"/> | ||||
|  | ||||
|         <Button x:Name="InstallButton" Content="Installieren" Margin="10,10,115,10" | ||||
|                 FontSize="14" HorizontalAlignment="Right" VerticalAlignment="Bottom" | ||||
|         <Button x:Name="InstallButton" Content="Installieren" Margin="10,10,115,20" | ||||
|                 FontSize="14" HorizontalAlignment="Center" VerticalAlignment="Bottom" | ||||
|                 Width="100" Height="27" | ||||
|                 Click="InstallButton_Click"/> | ||||
|         <Button x:Name="CancelButton" Content="Abbrechen" Margin="10,10,10,10" IsCancel="True" IsDefault="True" | ||||
|                 FontSize="14" HorizontalAlignment="Right" VerticalAlignment="Bottom" | ||||
|         <Button x:Name="CancelButton" Content="Abbrechen" Margin="115,10,10,20" IsCancel="True" | ||||
|                 FontSize="14" HorizontalAlignment="Center" VerticalAlignment="Bottom" | ||||
|                 Width="100" Height="27"/> | ||||
|     </Grid> | ||||
| </Window> | ||||
|   | ||||
| @@ -3,6 +3,7 @@ using System; | ||||
| using System.Diagnostics; | ||||
| using System.IO; | ||||
| using System.Net.Http; | ||||
| using System.Threading; | ||||
| using System.Threading.Tasks; | ||||
| using System.Windows; | ||||
| using System.Windows.Navigation; | ||||
| @@ -13,36 +14,47 @@ namespace Elwig.Dialogs { | ||||
|         public string Version { get; private set; } | ||||
|         public string Url { get; private set; } | ||||
|  | ||||
|         private readonly CancellationTokenSource Cancellation; | ||||
|  | ||||
|         public UpdateDialog(string version, string url, long size) { | ||||
|             Version = version; | ||||
|             Url = url; | ||||
|             Cancellation = new(); | ||||
|             InitializeComponent(); | ||||
|             VersionText.Text = version; | ||||
|             SizeText.Text = $"{size / 1024 / 1024}"; | ||||
|         } | ||||
|  | ||||
|         private void OnClosed(object sender, EventArgs evt) { | ||||
|             Cancellation.Cancel(); | ||||
|         } | ||||
|  | ||||
|         private async void InstallButton_Click(object sender, RoutedEventArgs evt) { | ||||
|             Description.Visibility = Visibility.Hidden; | ||||
|             ProgressBar.Visibility = Visibility.Visible; | ||||
|             InstallButton.IsEnabled = false; | ||||
|             await Install(); | ||||
|             DialogResult = true; | ||||
|             Close(); | ||||
|         } | ||||
|  | ||||
|         public async Task Install() { | ||||
|             var fileName = Path.Combine(App.TempPath, $"Elwig-{Version}.exe"); | ||||
|             { | ||||
|             try { | ||||
|                 using var stream = new FileStream(fileName, FileMode.Create); | ||||
|                 using var client = new HttpClient() { | ||||
|                     Timeout = TimeSpan.FromSeconds(5), | ||||
|                 }; | ||||
|                 await client.DownloadAsync(Url, stream, new Progress<double>(p => { | ||||
|                     ProgressBar.Value = p * 100.0; | ||||
|                 })); | ||||
|                 }), Cancellation.Token); | ||||
|             } catch (OperationCanceledException) { | ||||
|                 File.Delete(fileName); | ||||
|                 return; | ||||
|             } catch (Exception exc) { | ||||
|                 MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); | ||||
|             } | ||||
|  | ||||
|             Process.Start(fileName); | ||||
|             DialogResult = true; | ||||
|         } | ||||
|  | ||||
|         private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user