Enhance PLib video library manager with new tabbed navigation for entities and metadata management. Introduce sections for videos, tags, actors, studios, collections, and metadata, each with dedicated search and sorting capabilities. Update UI components to reflect these changes, ensuring a cohesive user experience. Revise repository interfaces to support loading video items with labels and summaries for efficient browsing. Update README.md to document new features and usage instructions.

This commit is contained in:
Leonid Pershin
2026-08-09 08:58:07 +03:00
parent 61d01d1970
commit 5acb42d11d
26 changed files with 1434 additions and 18 deletions
@@ -86,6 +86,66 @@
<Setter Property="IsPlaying" Value="True" />
</Style>
<!-- ========================== Navigation ========================== -->
<!--
Tabs are buttons rather than a TabControl: the pages they switch between are columns of a
layout that also holds the settings panel and the media page, and a TabControl would want
to own that arrangement.
-->
<Style Selector="Button.sectionTab">
<Setter Property="Padding" Value="12,6" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="CornerRadius" Value="8" />
<Setter Property="FontSize" Value="12.5" />
<Setter Property="Foreground" Value="{DynamicResource TextSecondaryBrush}" />
</Style>
<Style Selector="Button.sectionTab:pointerover">
<Setter Property="Foreground" Value="{DynamicResource TextPrimaryBrush}" />
</Style>
<Style Selector="Button.sectionTab.active">
<Setter Property="Background" Value="{DynamicResource AccentSoftBrush}" />
<Setter Property="Foreground" Value="{DynamicResource AccentBrush}" />
<Setter Property="FontWeight" Value="SemiBold" />
</Style>
<!-- A row of controls that belongs to the page below it rather than to the window. -->
<Style Selector="Border.filterBar">
<Setter Property="Padding" Value="20,10" />
<Setter Property="BorderBrush" Value="{DynamicResource SurfaceBorderBrush}" />
<Setter Property="BorderThickness" Value="0,0,0,1" />
</Style>
<!--
Also used by the task panel and the filter bar, which had been asking for it since before
it existed — the class was on the buttons with nothing behind it.
-->
<Style Selector="Button.transport">
<Setter Property="Padding" Value="8" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Foreground" Value="{DynamicResource TextPrimaryBrush}" />
</Style>
<!-- One tag, performer, studio or collection in a browsing tab. -->
<Style Selector="Button.entity">
<Setter Property="Padding" Value="12,10" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="{DynamicResource CardBackgroundBrush}" />
<Setter Property="BorderBrush" Value="{DynamicResource CardBorderBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CornerRadius" Value="10" />
</Style>
<Style Selector="Button.entity:pointerover">
<Setter Property="BorderBrush" Value="{DynamicResource CardHoverBorderBrush}" />
</Style>
<!-- ============================ Text ============================ -->
<Style Selector="TextBlock.cardTitle">