using System; using System.ComponentModel; using System.Globalization; using Avalonia.Data; using NitroxModel.Helper; namespace Nitrox.Launcher.Models.Converters; /// /// Formats the bound value as a string using a specific formatting style. /// public class ToStringConverter : Converter { public override object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is null) { return null; } if (value.GetType().IsEnum) { value = (value as Enum)?.GetAttribute()?.Description ?? value.ToString(); } if (value is not string sourceText) { sourceText = value?.ToString(); } if (!targetType.IsAssignableTo(typeof(string)) || sourceText == null) { return new BindingNotification(new InvalidCastException(), BindingErrorType.Error); } return parameter switch { "upper" => sourceText.ToUpperInvariant(), "lower" => sourceText.ToLowerInvariant(), _ => CultureManager.CultureInfo.TextInfo.ToTitleCase(sourceText.ToLower().Replace("_", " ")), }; } public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => value; }