using Avalonia.Controls;
using Avalonia.Data.Converters;
using Avalonia;
using Harmonia.UI.Models;
using System;
using System.Globalization;
using Harmonia.Core.Playlists;

namespace Harmonia.UI.Converters;

public class VolumeStateToIconConverter : IValueConverter
{
    public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
    {
        if (value is not VolumeState volumeState)
            return AvaloniaProperty.UnsetValue;

        return Application.Current?.FindResource($"Volume{volumeState}Icon") ?? AvaloniaProperty.UnsetValue;
    }

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

public class PlaylistSongEqualityConverter : IValueConverter
{
    public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
    {
        if (value is PlaylistSong playingSong && parameter is PlaylistSong currentSong)
        {
            return playingSong == currentSong;
        }

        return false;
    }

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