39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
using System.Collections;
|
|
|
|
namespace EmbyToolbox.Models;
|
|
|
|
/// <summary>Правила контекстного меню «Копировать ошибку» и состава текста буфера обмена.</summary>
|
|
public static class ConversionQueueItemErrorCopy
|
|
{
|
|
public static bool IsEligibleItem(ConversionQueueItem? item)
|
|
{
|
|
return item is not null
|
|
&& string.Equals(item.Status, ConversionQueueStatus.Error, StringComparison.Ordinal)
|
|
&& !string.IsNullOrWhiteSpace(item.ErrorMessage);
|
|
}
|
|
|
|
public static bool ShouldShowForSelection(IList? selected)
|
|
{
|
|
if (selected is not { Count: 1 })
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return IsEligibleItem(selected[0] as ConversionQueueItem);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Если есть подробный вывод (ffmpeg stderr, ffprobe stderr и т.д.) — только он; иначе краткий <see cref="ConversionQueueItem.ErrorMessage"/>.
|
|
/// </summary>
|
|
public static string GetClipboardText(ConversionQueueItem item)
|
|
{
|
|
var detail = item.ErrorDetails?.Trim();
|
|
if (!string.IsNullOrEmpty(detail))
|
|
{
|
|
return detail;
|
|
}
|
|
|
|
return item.ErrorMessage?.Trim() ?? string.Empty;
|
|
}
|
|
}
|