Refactor GroupCatalog and enhance media preview functionality in ShowDetail and AddEpisodesDialog
Updated the GroupCatalog class to streamline the determination of the dominant show kind by introducing a new method, DominantKindOf, which improves code clarity. Enhanced the AddEpisodesDialog and ShowDetail components to integrate a media preview feature, allowing users to preview media assets directly within the dialog. This includes the addition of a preview state and corresponding UI elements for a better user experience. Updated localization strings to support the new preview functionality.
This commit is contained in:
@@ -113,14 +113,6 @@ public sealed class GroupCatalog(
|
||||
if (units == 0)
|
||||
return null;
|
||||
|
||||
// У коллекции своего типа нет: франшиза — это почти всегда полнометражки.
|
||||
var seriesUnits = resolved.Where(r => r.ShowKind == ShowKind.Series).Sum(r => r.UnitCount);
|
||||
// Ролики распознаются первыми: группа рекламы даёт сотни коротких единиц, то есть самый
|
||||
// большой UnitCount из всех, и записанная «полным метром» она побеждала бы по баллам
|
||||
// в любой полосе без предпочтения по типу — в эфир уходила бы полоса рекламы.
|
||||
var interstitialUnits = resolved
|
||||
.Where(r => r.ShowKind == ShowKind.Interstitial)
|
||||
.Sum(r => r.UnitCount);
|
||||
var duration = resolved.Aggregate(TimeSpan.Zero, (sum, r) => sum + r.TotalDuration);
|
||||
|
||||
return new GroupCandidate(
|
||||
@@ -129,11 +121,30 @@ public sealed class GroupCatalog(
|
||||
composition.Count,
|
||||
units,
|
||||
resolved.Max(r => r.Audience),
|
||||
interstitialUnits * 2 >= units ? ShowKind.Interstitial
|
||||
: seriesUnits * 2 >= units ? ShowKind.Series
|
||||
: ShowKind.Single,
|
||||
DominantKindOf(resolved, units),
|
||||
duration.TotalMinutes / units,
|
||||
primaryGenreId
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Чем группа является по составу — по единицам, а не по позициям: полоса собирается под длину
|
||||
/// того, что в ней играет.
|
||||
///
|
||||
/// Ролики проверяются первыми: группа рекламы даёт сотни коротких единиц, то есть самый большой
|
||||
/// <c>UnitCount</c> на канале, и записанная «полным метром» она побеждала бы по баллам в любой
|
||||
/// полосе без предпочтения по типу — в эфир уходила бы полоса рекламы. У коллекции своего типа
|
||||
/// нет: франшиза — это почти всегда полнометражки.
|
||||
/// </summary>
|
||||
private static ShowKind DominantKindOf(IReadOnlyList<GroupElementInfo> resolved, int units)
|
||||
{
|
||||
var interstitialUnits = resolved
|
||||
.Where(r => r.ShowKind == ShowKind.Interstitial)
|
||||
.Sum(r => r.UnitCount);
|
||||
if (interstitialUnits * 2 >= units)
|
||||
return ShowKind.Interstitial;
|
||||
|
||||
var seriesUnits = resolved.Where(r => r.ShowKind == ShowKind.Series).Sum(r => r.UnitCount);
|
||||
return seriesUnits * 2 >= units ? ShowKind.Series : ShowKind.Single;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user