ps2_manager/PS2_Manager/Core/Util.cs

83 lines
No EOL
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Shapes;
using Avalonia.Media.Imaging;
namespace PS2_Manager.Core;
public static class Util
{
public static string? OpenFileDialogSync(Window parent)
{
var dialog = new OpenFileDialog
{
Title = "Select PS2 ISO",
AllowMultiple = false,
Filters = new List<FileDialogFilter>
{
new FileDialogFilter { Name = "PS2 ISO", Extensions = { "iso", "bin" } },
new FileDialogFilter { Name = "All Files", Extensions = { "*" } }
}
};
var result = dialog.ShowAsync(parent).GetAwaiter().GetResult();
return result?.FirstOrDefault();
}
public static void CheckDir(string path)
{
if(!Directory.Exists(path))
Directory.CreateDirectory(path);
}
public static string FormatFileSize(long bytes)
{
string[] sizes = { "B", "KB", "MB", "GB", "TB" };
double len = bytes;
int order = 0;
while (len >= 1024 && order < sizes.Length - 1)
{
order++;
len /= 1024;
}
// Format to 1 decimal place
return string.Format("{0:0.0} {1}", len, sizes[order]);
}
public static bool IsBitmapEmpty(Bitmap? bitmap)
{
return bitmap == null;
}
}
public static class Checksum
{
public static string GetMD5Hash(string filePath)
{
using (var md5 = MD5.Create())
using (var stream = File.OpenRead(filePath))
{
var hash = md5.ComputeHash(stream);
return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
}
}
public static string GetSHA1Hash(string filePath)
{
using (var sha1 = SHA1.Create())
using (var stream = File.OpenRead(filePath))
{
var hash = sha1.ComputeHash(stream);
return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
}
}
}