using Microsoft.UI.Xaml.Data;

namespace Ghost.Editor.Utilities.Converters;

public partial class AssetPathToGlyphConverter : IValueConverter
{
    public object? Convert(object value, Type targetType, object parameter, string language)
    {
        if (value is not string path)
        {
            return null;
        }

        if (Directory.Exists(path))
        {
            return "\uE8B7";
        }

        var extension = Path.GetExtension(path).ToLowerInvariant();

        // TODO: Use heap dictionary for icons.
        return extension switch
        {
            ".ghostscene" => "\uF159",
            ".fbx" or ".obj" => "\uF158",
            ".png" or ".jpg" or ".jpeg" or ".gif" or ".bmp" => "\uE91B",
            ".mp3" or ".wav" or ".ogg" => "\uE767",
            ".mp4" or ".avi" or ".mkv" => "\uE714",
            ".txt" or ".md" => "\uF000",
            ".cs" or ".hlsl" => "\uE943",
            _ => "\uE8A5",
        };
    }

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