Skip to content

Commit 45250cf

Browse files
committed
[v15.1] Important bug fixes & some Fluent themed windows
- Replaced URL availability checking method, broken after .NET9 upgrade - Replaced file size checking method for URLs, broken after .NET9 upgrade - The Home window now uses the 'Fluent' theme as well as some PS5 tools - All windows using the 'ListView' component will not receive the 'Fluent' theme (probably until .NET10) - Downloads are now fully working again for every console & handheld - Fixes and improvements in loading game backups for PS1, PS2, PS3, PSV, PS5
1 parent f4f8b69 commit 45250cf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+2336
-2331
lines changed

LatestBuild.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
15.0.1
1+
15.1.0

PS Multi Tools/Classes/DownloadQueueItem.vb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Public Class DownloadQueueItem
2323
End Get
2424
Set
2525
_GameID = Value
26-
NotifyPropertyChanged("GameID")
26+
NotifyPropertyChanged(NameOf(GameID))
2727
End Set
2828
End Property
2929

@@ -33,7 +33,7 @@ Public Class DownloadQueueItem
3333
End Get
3434
Set
3535
_FileName = Value
36-
NotifyPropertyChanged("FileName")
36+
NotifyPropertyChanged(NameOf(FileName))
3737
End Set
3838
End Property
3939

@@ -43,7 +43,7 @@ Public Class DownloadQueueItem
4343
End Get
4444
Set
4545
_PKGSize = Value
46-
NotifyPropertyChanged("PKGSize")
46+
NotifyPropertyChanged(NameOf(PKGSize))
4747
End Set
4848
End Property
4949

@@ -53,7 +53,7 @@ Public Class DownloadQueueItem
5353
End Get
5454
Set
5555
_DownloadURL = Value
56-
NotifyPropertyChanged("DownloadURL")
56+
NotifyPropertyChanged(NameOf(DownloadURL))
5757
End Set
5858
End Property
5959

@@ -63,7 +63,7 @@ Public Class DownloadQueueItem
6363
End Get
6464
Set
6565
_DownloadState = Value
66-
NotifyPropertyChanged("DownloadState")
66+
NotifyPropertyChanged(NameOf(DownloadState))
6767
End Set
6868
End Property
6969

@@ -73,7 +73,7 @@ Public Class DownloadQueueItem
7373
End Get
7474
Set
7575
_MergeState = Value
76-
NotifyPropertyChanged("MergeState")
76+
NotifyPropertyChanged(NameOf(MergeState))
7777
End Set
7878
End Property
7979

PS Multi Tools/Classes/MD5Hash.vb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ Imports System.Text
55
Public Class MD5Hash
66

77
Public Shared Function MD5StringHash(Str As String) As String
8-
Dim MD5 As New MD5CryptoServiceProvider
98
Dim Data As Byte()
109
Dim Result As Byte()
1110
Dim Res As String = ""
12-
Dim Temp As String = ""
11+
Dim Temp As String
1312

1413
Data = Encoding.ASCII.GetBytes(Str)
15-
Result = MD5.ComputeHash(Data)
14+
Result = MD5.HashData(Data)
15+
1616
For i As Integer = 0 To Result.Length - 1
1717
Temp = Hex(Result(i))
1818
If Len(Temp) = 1 Then Temp = "0" & Temp
@@ -25,7 +25,7 @@ Public Class MD5Hash
2525
Dim MD5 As New MD5CryptoServiceProvider
2626
Dim Hash As Byte()
2727
Dim Result As String = ""
28-
Dim Temp As String = ""
28+
Dim Temp As String
2929

3030
Dim NewFileStream As New FileStream(SelFile, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
3131
MD5.ComputeHash(NewFileStream)

PS Multi Tools/Classes/NPSPKG.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ Public Class NPSPKG
159159
End Get
160160
Set
161161
_GameCoverSource = Value
162-
NotifyPropertyChanged("GameCoverSource")
162+
NotifyPropertyChanged(NameOf(GameCoverSource))
163163
End Set
164164

165165
End Property

PS Multi Tools/Classes/PKGDownloadListViewItem.vb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Public Class PKGDownloadListViewItem
2525
End Get
2626
Set
2727
_AssociatedWebClient = Value
28-
NotifyPropertyChanged("AssociatedWebClient")
28+
NotifyPropertyChanged(NameOf(AssociatedWebClient))
2929
End Set
3030
End Property
3131

@@ -35,7 +35,7 @@ Public Class PKGDownloadListViewItem
3535
End Get
3636
Set
3737
_PackageContentID = Value
38-
NotifyPropertyChanged("PackageContentID")
38+
NotifyPropertyChanged(NameOf(PackageContentID))
3939
End Set
4040
End Property
4141

@@ -45,7 +45,7 @@ Public Class PKGDownloadListViewItem
4545
End Get
4646
Set
4747
_PackageTitleID = Value
48-
NotifyPropertyChanged("PackageTitleID")
48+
NotifyPropertyChanged(NameOf(PackageTitleID))
4949
End Set
5050
End Property
5151

@@ -55,7 +55,7 @@ Public Class PKGDownloadListViewItem
5555
End Get
5656
Set
5757
_PackageName = Value
58-
NotifyPropertyChanged("PackageName")
58+
NotifyPropertyChanged(NameOf(PackageName))
5959
End Set
6060
End Property
6161

@@ -65,7 +65,7 @@ Public Class PKGDownloadListViewItem
6565
End Get
6666
Set
6767
_PackageSize = Value
68-
NotifyPropertyChanged("PackageSize")
68+
NotifyPropertyChanged(NameOf(PackageSize))
6969
End Set
7070
End Property
7171

@@ -75,7 +75,7 @@ Public Class PKGDownloadListViewItem
7575
End Get
7676
Set
7777
_PackageDownloadState = Value
78-
NotifyPropertyChanged("PackageDownloadState")
78+
NotifyPropertyChanged(NameOf(PackageDownloadState))
7979
End Set
8080
End Property
8181

@@ -85,7 +85,7 @@ Public Class PKGDownloadListViewItem
8585
End Get
8686
Set
8787
_PackageDownloadDestination = Value
88-
NotifyPropertyChanged("PackageDownloadDestination")
88+
NotifyPropertyChanged(NameOf(PackageDownloadDestination))
8989
End Set
9090
End Property
9191

PS Multi Tools/Classes/Utils.vb

Lines changed: 39 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ Imports System.Drawing.Drawing2D
55
Imports System.Globalization
66
Imports System.IO
77
Imports System.Net
8+
Imports System.Net.Http
89
Imports System.Net.NetworkInformation
910
Imports System.Runtime.InteropServices
11+
Imports System.Security.Policy
1012
Imports System.Security.Principal
1113
Imports System.Text
1214
Imports System.Text.RegularExpressions
@@ -16,8 +18,13 @@ Public Class Utils
1618

1719
Public Shared ReadOnly ByBytes() As Byte = {&H62, &H79, &H20, &H53, &H76, &H65, &H6E, &H47, &H44, &H4B}
1820
Public Shared ConnectedPSXHDD As Structures.MountedPSXDrive
19-
Public Declare Auto Function PlaySound Lib "winmm.dll" (pszSound As String, hmod As IntPtr, fdwSound As Integer) As Boolean
20-
Public Declare Auto Function PlaySound Lib "winmm.dll" (pszSound As Byte(), hmod As IntPtr, fdwSound As PlaySoundFlags) As Boolean
21+
22+
<DllImport("winmm.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
23+
Private Shared Function PlaySound(<MarshalAs(UnmanagedType.LPWStr)> pszSound As String, hmod As IntPtr, fdwSound As Integer) As Boolean
24+
End Function
25+
<DllImport("winmm.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
26+
Private Shared Function PlaySound(<MarshalAs(UnmanagedType.LPArray)> pszSound As Byte(), hmod As IntPtr, fdwSound As PlaySoundFlags) As Boolean
27+
End Function
2128

2229
Public Enum PlaySoundFlags As Integer
2330
SND_SYNC = 0
@@ -286,38 +293,24 @@ Public Class Utils
286293
Return WinFound
287294
End Function
288295

289-
Public Shared Function IsURLValid(Url As String) As Boolean
296+
Public Shared Async Function IsURLValid(Url As String) As Task(Of Boolean)
290297
If NetworkInterface.GetIsNetworkAvailable Then
291298
Try
292-
Dim request As HttpWebRequest = CType(WebRequest.Create(Url), HttpWebRequest)
293-
Using response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
294-
If response.StatusCode = HttpStatusCode.OK Then
295-
Return True
296-
ElseIf response.StatusCode = HttpStatusCode.Found Then
297-
Return True
298-
ElseIf response.StatusCode = HttpStatusCode.NotFound Then
299-
Return False
300-
ElseIf response.StatusCode = HttpStatusCode.Unauthorized Then
301-
Return False
302-
ElseIf response.StatusCode = HttpStatusCode.Forbidden Then
303-
Return False
304-
ElseIf response.StatusCode = HttpStatusCode.BadGateway Then
305-
Return False
306-
ElseIf response.StatusCode = HttpStatusCode.BadRequest Then
307-
Return False
308-
ElseIf response.StatusCode = HttpStatusCode.RequestTimeout Then
309-
Return False
310-
ElseIf response.StatusCode = HttpStatusCode.GatewayTimeout Then
311-
Return False
312-
ElseIf response.StatusCode = HttpStatusCode.InternalServerError Then
313-
Return False
314-
ElseIf response.StatusCode = HttpStatusCode.ServiceUnavailable Then
315-
Return False
316-
Else
317-
Return False
318-
End If
299+
Using client As New HttpClient()
300+
Dim response As HttpResponseMessage = Await client.GetAsync(Url)
301+
302+
Select Case response.StatusCode
303+
Case HttpStatusCode.OK, HttpStatusCode.Found
304+
Return True
305+
Case HttpStatusCode.NotFound, HttpStatusCode.Unauthorized, HttpStatusCode.Forbidden,
306+
HttpStatusCode.BadGateway, HttpStatusCode.BadRequest, HttpStatusCode.RequestTimeout,
307+
HttpStatusCode.GatewayTimeout, HttpStatusCode.InternalServerError, HttpStatusCode.ServiceUnavailable
308+
Return False
309+
Case Else
310+
Return False
311+
End Select
319312
End Using
320-
Catch Ex As WebException
313+
Catch Ex As HttpRequestException
321314
Return False
322315
End Try
323316
Else
@@ -403,9 +396,9 @@ Public Class Utils
403396
Next
404397
End Sub
405398

406-
Public Shared Sub CheckForMissingFiles()
399+
Public Shared Async Sub CheckForMissingFiles()
407400
If Not File.Exists("strings.exe") Then
408-
If IsURLValid("http://X.X.X.X/strings.exe") Then
401+
If Await IsURLValid("http://X.X.X.X/strings.exe") Then
409402
Dim NewWebCl As New WebClient()
410403
NewWebCl.DownloadFile("http://X.X.X.X/strings.exe", "strings.exe")
411404
End If
@@ -416,30 +409,21 @@ Public Class Utils
416409
Return FileURL.Segments(FileURL.Segments.Length - 1)
417410
End Function
418411

419-
Public Shared Function WebFileSize(sURL As String) As Double
420-
If sURL.StartsWith("ftp://") Then
421-
Dim myRequest As FtpWebRequest
422-
423-
myRequest = CType(WebRequest.Create(sURL), FtpWebRequest)
424-
myRequest.Method = WebRequestMethods.Ftp.GetFileSize
425-
myRequest.Credentials = New NetworkCredential("anonymous", "")
426-
427-
Dim myResponse As FtpWebResponse = CType(myRequest.GetResponse(), FtpWebResponse)
428-
Dim ResponseLenght As Long = myResponse.ContentLength
429-
myResponse.Close()
430-
431-
Return Math.Round(ResponseLenght / 1024 / 1024, 2)
432-
Else
433-
Dim myRequest As HttpWebRequest = CType(WebRequest.Create(sURL), HttpWebRequest)
434-
Dim myResponse As HttpWebResponse = CType(myRequest.GetResponse(), HttpWebResponse)
435-
myResponse.Close()
436-
437-
Return Math.Round(myResponse.ContentLength / 1024 / 1024, 2)
438-
End If
412+
Public Shared Async Function WebFileSize(sURL As String) As Task(Of Double)
413+
Dim client As New HttpClient()
414+
Using request = New HttpRequestMessage(HttpMethod.Head, sURL)
415+
Using response = Await client.SendAsync(request)
416+
If response.IsSuccessStatusCode AndAlso response.Content.Headers.ContentLength.HasValue Then
417+
Return Math.Round(response.Content.Headers.ContentLength.Value / 1024 / 1024, 2)
418+
Else
419+
Return 0
420+
End If
421+
End Using
422+
End Using
439423
End Function
440424

441-
Public Shared Function IsPSMultiToolsUpdateAvailable() As Boolean
442-
If IsURLValid("https://github.com/SvenGDK/PS-Multi-Tools/raw/main/LatestBuild.txt") Then
425+
Public Shared Async Function IsPSMultiToolsUpdateAvailable() As Task(Of Boolean)
426+
If Await IsURLValid("https://github.com/SvenGDK/PS-Multi-Tools/raw/main/LatestBuild.txt") Then
443427
Dim PSMTInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(Environment.CurrentDirectory + "\PS Multi Tools.exe")
444428
Dim CurrentOrbisProVersion As String = PSMTInfo.FileVersion
445429

PS Multi Tools/Dialogs/CopyWindow.xaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:local="clr-namespace:PS_Multi_Tools"
77
mc:Ignorable="d"
8-
Title="Copying" Height="320" Width="560" ResizeMode="CanMinimize" Background="#2D2D30" WindowStartupLocation="CenterScreen">
8+
Title="Copying" Height="330" Width="560" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" ThemeMode="System">
99
<Grid>
10-
<ProgressBar x:Name="CopyProgressBar" HorizontalAlignment="Left" Height="20" Margin="10,227,0,0" VerticalAlignment="Top" Width="520" Foreground="#FF00B8FF"/>
11-
<TextBlock x:Name="StatusTextBlock" HorizontalAlignment="Left" Margin="10,203,0,0" TextWrapping="Wrap" Text="Please wait ..." VerticalAlignment="Top" Foreground="White" FontSize="14" Width="520"/>
10+
<ProgressBar x:Name="CopyProgressBar" HorizontalAlignment="Left" Height="20" Margin="10,230,0,0" VerticalAlignment="Top" Width="520" />
11+
<TextBlock x:Name="StatusTextBlock" HorizontalAlignment="Left" Margin="10,203,0,0" TextWrapping="Wrap" Text="Please wait ..." VerticalAlignment="Top" FontSize="14" Width="520"/>
1212
<Image x:Name="GameIconImage" Height="176" VerticalAlignment="Top" Width="320" Margin="120,15,120,0"/>
13-
<TextBlock x:Name="StatusTextBlock2" HorizontalAlignment="Left" Margin="10,252,0,0" TextWrapping="Wrap" Text="Please wait ..." VerticalAlignment="Top" Foreground="White" FontSize="14" Width="520"/>
13+
<TextBlock x:Name="StatusTextBlock2" HorizontalAlignment="Left" Margin="10,260,0,0" TextWrapping="Wrap" Text="Please wait ..." VerticalAlignment="Top" FontSize="14" Width="520"/>
1414
</Grid>
1515
</Window>

PS Multi Tools/Dialogs/CopyWindow.xaml.vb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Public Class CopyWindow
5656
End Sub
5757

5858
Private Sub CountFiles(InFolder As String, ByRef Result As Integer)
59-
Result += Directory.GetFiles(InFolder).Count
59+
Result += Directory.GetFiles(InFolder).Length
6060
For Each f As String In Directory.GetDirectories(InFolder)
6161
CountFiles(f, Result)
6262
Next

PS Multi Tools/Dialogs/CustomDialog.xaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,19 @@
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:local="clr-namespace:PS_Multi_Tools"
77
mc:Ignorable="d"
8-
Title="Dialog Title" Height="125" Width="420" Background="#2D2D30" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize">
8+
Title="Dialog Title" Height="135" Width="425" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize" ThemeMode="System">
99
<Grid>
1010
<Grid x:Name="TextInputGrid" Visibility="Hidden">
11-
<TextBlock x:Name="TextInputTitle" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Text" VerticalAlignment="Top" Foreground="White" FontFamily="Calibri" FontSize="14"/>
11+
<TextBlock x:Name="TextInputTitle" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Text" VerticalAlignment="Top" FontFamily="Calibri" FontSize="14"/>
1212
<TextBox x:Name="TextInputTextBox" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Width="380" FontFamily="Calibri" FontSize="14" Margin="10,32,0,0"/>
13-
<Button x:Name="TextInputCancelButton" Content="Cancel" HorizontalAlignment="Left" Margin="245,56,0,0" VerticalAlignment="Top" Width="70" FontFamily="Calibri" FontSize="14"/>
14-
<Button x:Name="TextInputOKButton" Content="OK" HorizontalAlignment="Left" Margin="320,56,0,0" VerticalAlignment="Top" Width="70" FontWeight="Bold" FontFamily="Calibri" FontSize="14"/>
13+
<Button x:Name="TextInputCancelButton" Content="Cancel" HorizontalAlignment="Left" Margin="245,66,0,0" VerticalAlignment="Top" Width="70" FontFamily="Calibri" FontSize="14"/>
14+
<Button x:Name="TextInputOKButton" Content="OK" HorizontalAlignment="Left" Margin="320,66,0,0" VerticalAlignment="Top" Width="70" FontWeight="Bold" FontFamily="Calibri" FontSize="14"/>
1515
</Grid>
1616
<Grid x:Name="ButtonsGrid" Visibility="Hidden">
17-
<Button x:Name="ButtonsAddButton" Content="Add another backup folder" HorizontalAlignment="Left" Margin="10,35,0,0" VerticalAlignment="Top" Width="165" FontFamily="Calibri" FontSize="14"/>
18-
<Button x:Name="ButtonsLoadNewButton" Content="Load a new folder" HorizontalAlignment="Left" Margin="180,35,0,0" VerticalAlignment="Top" Width="125" FontFamily="Calibri" FontSize="14"/>
19-
<Button x:Name="ButtonsCancelButton" Content="Cancel" HorizontalAlignment="Left" Margin="310,35,0,0" VerticalAlignment="Top" Width="75" FontFamily="Calibri" FontSize="14"/>
20-
<TextBlock x:Name="ButtonsTitleTextBlock" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Text" VerticalAlignment="Top" Foreground="White" FontFamily="Calibri" FontSize="14" Width="375"/>
17+
<Button x:Name="ButtonsAddButton" Content="Add another backup folder" HorizontalAlignment="Left" Margin="10,35,0,0" VerticalAlignment="Top" Width="175" FontFamily="Calibri" FontSize="14"/>
18+
<Button x:Name="ButtonsLoadNewButton" Content="Load a new folder" HorizontalAlignment="Left" Margin="190,35,0,0" VerticalAlignment="Top" Width="124" FontFamily="Calibri" FontSize="14"/>
19+
<Button x:Name="ButtonsCancelButton" Content="Cancel" HorizontalAlignment="Left" Margin="319,35,0,0" VerticalAlignment="Top" Width="75" FontFamily="Calibri" FontSize="14"/>
20+
<TextBlock x:Name="ButtonsTitleTextBlock" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Text" VerticalAlignment="Top" FontFamily="Calibri" FontSize="14" Width="375" FontWeight="Bold"/>
2121
</Grid>
2222
</Grid>
2323
</Window>

PS Multi Tools/Dialogs/Downloader.xaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:local="clr-namespace:PS_Multi_Tools"
77
mc:Ignorable="d"
8-
Title="Downloader" Height="400" Width="700" ResizeMode="CanMinimize" Background="#2D2D30" WindowStartupLocation="CenterScreen">
8+
Title="Downloader" Height="400" Width="700" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen" ThemeMode="System">
99
<Grid>
1010
<ProgressBar x:Name="DownloadProgressBar" HorizontalAlignment="Center" Height="25" Margin="0,248,0,0" VerticalAlignment="Top" Width="520"/>
11-
<TextBlock x:Name="FileToDownloadTB" HorizontalAlignment="Center" Margin="0,224,0,0" TextWrapping="Wrap" Text="Downloading ..." VerticalAlignment="Top" Foreground="White" FontSize="14" Width="520"/>
11+
<TextBlock x:Name="FileToDownloadTB" HorizontalAlignment="Center" Margin="0,224,0,0" TextWrapping="Wrap" Text="Downloading ..." VerticalAlignment="Top" FontSize="14" Width="520"/>
1212
<Grid HorizontalAlignment="Center" Height="68" Margin="0,277,0,0" VerticalAlignment="Top">
13-
<TextBlock x:Name="DownloadETATB" HorizontalAlignment="Center" TextWrapping="Wrap" Text="Time elapsed:" VerticalAlignment="Center" Foreground="White" FontSize="14" Width="520"/>
14-
<TextBlock x:Name="DownloadSpeedTB" Margin="260,0,0,0" TextWrapping="Wrap" Text="0 kb/s" VerticalAlignment="Top" Foreground="White" FontSize="14" TextAlignment="Right" HorizontalAlignment="Left" Width="260"/>
15-
<TextBlock x:Name="DownloadETALeftTB" HorizontalAlignment="Center" Margin="0,48,0,0" TextWrapping="Wrap" Text="Time left:" VerticalAlignment="Top" Foreground="White" FontSize="14" Width="520"/>
16-
<TextBlock x:Name="DownloadFileSizeTB" Margin="0,0,300,0" TextWrapping="Wrap" Text="File Size:" VerticalAlignment="Top" Foreground="White" FontSize="14"/>
13+
<TextBlock x:Name="DownloadETATB" HorizontalAlignment="Center" TextWrapping="Wrap" Text="Time elapsed:" VerticalAlignment="Center" FontSize="14" Width="520"/>
14+
<TextBlock x:Name="DownloadSpeedTB" Margin="260,0,0,0" TextWrapping="Wrap" Text="0 kb/s" VerticalAlignment="Top" FontSize="14" TextAlignment="Right" HorizontalAlignment="Left" Width="260"/>
15+
<TextBlock x:Name="DownloadETALeftTB" HorizontalAlignment="Center" Margin="0,48,0,0" TextWrapping="Wrap" Text="Time left:" VerticalAlignment="Top" FontSize="14" Width="520"/>
16+
<TextBlock x:Name="DownloadFileSizeTB" Margin="0,0,300,0" TextWrapping="Wrap" Text="File Size:" VerticalAlignment="Top" FontSize="14"/>
1717
</Grid>
1818
<Image x:Name="DownloadImage" HorizontalAlignment="Center" Height="128" Margin="0,40,0,0" VerticalAlignment="Top" Width="128"/>
1919
</Grid>

0 commit comments

Comments
 (0)