using System;
using System.Globalization;
using System.Windows.Data;

namespace HashCalculator.GUI.Converters
{
    internal class SizeConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var size = (int)value;
            var suffixes = new[]
            {
                (1024, 1.0, ""),
                (1024 * 1024, 1024.0, "K"),
                (1024 * 1024 * 1024, 1024 * 1024.0, "M"),
            };
            foreach (var (limit, divisor, suffix) in suffixes)
            {
                if (size < limit)
                {
                    return $"{size / divisor:0.00}{suffix}B";
                }
            }
            return $"{size / (1024.0 * 1024.0 * 1024.0):0.00}GB";
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}