using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
using System.Windows.Markup;
using System.Windows.Media;

using C4IT.Logging;

namespace FasdDesktopUi.Basics.Converter
{
    public class BoolOrToVisibilityConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            foreach (var value in values)
            {
                if (value is bool boolValue && boolValue)
                    return Visibility.Visible;
            }
            return Visibility.Collapsed;
        }

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

    public class BooleanToBrushConverter : MarkupExtension, IValueConverter
    {
        public Object TrueValue { get; set; } = new SolidColorBrush(Colors.LightGray);
        public Object FalseValue { get; set; } = new SolidColorBrush(Colors.Blue);

        public object Convert(
           object value, Type targetType, object parameter,
              CultureInfo culture)
        {
            if (!(value is bool))
                return FalseValue;

            return (bool)value ? TrueValue :
               FalseValue;
        }

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

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
    }

    public class WebView2PathConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var _webViewConfigPath = cLogManagerFile.GetDefaultPath(false, SubFolder: "WebViewData");
            _webViewConfigPath = System.IO.Path.GetDirectoryName(_webViewConfigPath);
            return _webViewConfigPath;
        }

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

}
