28 lines
810 B
C#
28 lines
810 B
C#
using System.Globalization;
|
|
using System.Windows.Data;
|
|
|
|
namespace ClashWidget.Converters;
|
|
|
|
public class SpeedConverter : IValueConverter
|
|
{
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
if (value is not double bytesPerSec)
|
|
return "—";
|
|
|
|
return bytesPerSec switch
|
|
{
|
|
< 0 => "—",
|
|
< 1024 => $"{bytesPerSec:F0} B/s",
|
|
< 1024 * 1024 => $"{bytesPerSec / 1024:F1} KB/s",
|
|
< 1024 * 1024 * 1024 => $"{bytesPerSec / (1024 * 1024):F1} MB/s",
|
|
_ => $"{bytesPerSec / (1024 * 1024 * 1024):F2} GB/s"
|
|
};
|
|
}
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
throw new NotSupportedException();
|
|
}
|
|
}
|