43 lines
2 KiB
C#
43 lines
2 KiB
C#
using System.Globalization;
|
|
using System.Windows;
|
|
using System.Windows.Data;
|
|
|
|
namespace VideoDownloader.App;
|
|
|
|
/// <summary>컬렉션 카운트 → 빈 상태 표시용 (0일 때 Visible)</summary>
|
|
public class InverseCountToVisibilityConverter : IValueConverter
|
|
{
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
=> (value is int i && i > 0) ? Visibility.Collapsed : Visibility.Visible;
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
=> throw new NotImplementedException();
|
|
}
|
|
|
|
/// <summary>다운로드 상태 문자열 → 표시 여부. parameter="done" 이면 완료일 때만 Visible(UC-A11 완료 아이콘).</summary>
|
|
public class StatusToVisibilityConverter : IValueConverter
|
|
{
|
|
public static readonly StatusToVisibilityConverter Done = new();
|
|
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
=> value is string s && s == "완료" ? Visibility.Visible : Visibility.Collapsed;
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
=> throw new NotImplementedException();
|
|
}
|
|
|
|
/// <summary>UC-D10 세그먼트 진행도(0~1) → 블록 배경색(진행 중 강조/대기 트랙).</summary>
|
|
public class SegmentFillConverter : IValueConverter
|
|
{
|
|
public static readonly SegmentFillConverter Instance = new();
|
|
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
=> value is double d && d >= 1.0
|
|
? System.Windows.Media.Brushes.DodgerBlue
|
|
: value is double p && p > 0
|
|
? (System.Windows.Media.Brush)System.Windows.Application.Current.FindResource("AccentBrush")
|
|
: (System.Windows.Media.Brush)System.Windows.Application.Current.FindResource("TrackBrush");
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
=> throw new NotImplementedException();
|
|
}
|