using System;
using System.Collections.Generic;
using System.Text;

namespace InABox.Core
{

    public class DFLayoutVideoFieldProperties : DFLayoutFieldProperties<byte[]>
    {
        public enum VideoQuality
        {
            Default,
            Low,
            Medium,
            High
        }

        [IntegerEditor(ToolTip = "Maximum video length (sec)")]
        public int MaximumVideoLength { get; set; } = 0;

        [EnumLookupEditor(typeof(VideoQuality))]
        public VideoQuality Quality { get; set; } = VideoQuality.Default;

        public override string FormatValue(object? value)
        {
            return value != null ? "Yes" : "";
        }

        public override object? ParseValue(object? value)
        {
            if (value is byte[])
                return value;

            if (value is string str)
            {
                if (Guid.TryParse(str, out var id))
                {
                    return Array.Empty<byte>();
                }

                try
                {
                    return Convert.FromBase64String(str);
                }
                catch (Exception e)
                {
                    Logger.Send(LogType.Error, "", $"Error in video data; invalid Base-64: {e.Message}");
                    return null;
                }
            }

            return null;
        }
    }
}
