Bring WinUI app to feature/visual parity with WPF, fix drag-and-drop and branding assets

- Restyle Fluent controls (buttons, fields, dialogs, ListView) to match the
  app's navy dark/light palette and consistent corner radii/sizing
- Fix ContentDialog (Settings, exit-confirm, error) styling by binding
  PrimaryButtonStyle/CloseButtonStyle explicitly via new DialogHelper,
  since ContentDialog ignores implicit Button styles and forces accent
  color onto whichever button is DefaultButton
- Remove MicaBackdrop and theme the title bar directly so it no longer
  shows a gray tint mismatched with the app's navy background
- Replace placeholder Assets/*.png (unused VS template art) with the real
  AmiReel logo at all required tile/splash/store sizes
- Set explicit default window size (1280x860, matching the old WPF app)
  with DPI-aware centering and a minimum size, instead of sizing to content
- Fix drag-and-drop silently failing: InputList_Drop needs a
  DragOperationDeferral before the first await or the DataView is torn
  down before GetStorageItemsAsync completes
- Add Preview player path setting (was present in WPF, missing in WinUI)
  and error handling for preview playback
- Accept all ffmpeg-readable video formats (mp4, mov, mkv, webm, ...) for
  file picker and drag-and-drop, not just .avi
- Add exit-confirmation dialog to WinUI, mirroring the WPF app

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 13:53:55 +02:00
parent ab46a16726
commit 3e881b79b8
21 changed files with 405 additions and 74 deletions
+180 -15
View File
@@ -23,6 +23,54 @@
<SolidColorBrush x:Key="ButtonBrush" Color="#243554"/>
<SolidColorBrush x:Key="ButtonHoverBrush" Color="#2E446C"/>
<SolidColorBrush x:Key="PrimaryTextBrush" Color="#07111D"/>
<!-- Fluent control theme-brush overrides so built-in controls match the palette -->
<SolidColorBrush x:Key="TextControlBackground" Color="#1D2940"/>
<SolidColorBrush x:Key="TextControlBackgroundPointerOver" Color="#233252"/>
<SolidColorBrush x:Key="TextControlBackgroundFocused" Color="#1D2940"/>
<SolidColorBrush x:Key="TextControlBorderBrush" Color="#2B3A58"/>
<SolidColorBrush x:Key="TextControlBorderBrushPointerOver" Color="#4AB8FF"/>
<SolidColorBrush x:Key="TextControlBorderBrushFocused" Color="#4AB8FF"/>
<SolidColorBrush x:Key="TextControlForeground" Color="#F5F7FB"/>
<SolidColorBrush x:Key="TextControlForegroundFocused" Color="#F5F7FB"/>
<SolidColorBrush x:Key="TextControlHeaderForeground" Color="#9FB1CC"/>
<SolidColorBrush x:Key="TextControlPlaceholderForeground" Color="#7488A6"/>
<SolidColorBrush x:Key="ComboBoxBackground" Color="#1D2940"/>
<SolidColorBrush x:Key="ComboBoxBackgroundPointerOver" Color="#233252"/>
<SolidColorBrush x:Key="ComboBoxBorderBrush" Color="#2B3A58"/>
<SolidColorBrush x:Key="ComboBoxForeground" Color="#F5F7FB"/>
<SolidColorBrush x:Key="ComboBoxHeaderForeground" Color="#9FB1CC"/>
<SolidColorBrush x:Key="ComboBoxItemBackgroundSelected" Color="#13324F"/>
<SolidColorBrush x:Key="ComboBoxDropDownBackground" Color="#10192B"/>
<SolidColorBrush x:Key="ButtonBackground" Color="#243554"/>
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="#2E446C"/>
<SolidColorBrush x:Key="ButtonBackgroundPressed" Color="#1B2A44"/>
<SolidColorBrush x:Key="ButtonForeground" Color="#F5F7FB"/>
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="#F5F7FB"/>
<SolidColorBrush x:Key="ButtonBorderBrush" Color="#2B3A58"/>
<SolidColorBrush x:Key="ContentDialogBackground" Color="#162033"/>
<SolidColorBrush x:Key="ContentDialogForeground" Color="#F5F7FB"/>
<SolidColorBrush x:Key="ContentDialogBorderBrush" Color="#35507D"/>
<SolidColorBrush x:Key="ListViewItemBackgroundSelected" Color="#13324F"/>
<SolidColorBrush x:Key="ListViewItemBackgroundPointerOver" Color="#1A2740"/>
<SolidColorBrush x:Key="ListViewItemForeground" Color="#F5F7FB"/>
<SolidColorBrush x:Key="CheckBoxCheckBackgroundFillUnchecked" Color="#1D2940"/>
<SolidColorBrush x:Key="CheckBoxCheckBackgroundStrokeUnchecked" Color="#2B3A58"/>
<SolidColorBrush x:Key="CheckBoxCheckBackgroundFillChecked" Color="#4AB8FF"/>
<SolidColorBrush x:Key="CheckBoxCheckBackgroundStrokeChecked" Color="#4AB8FF"/>
<SolidColorBrush x:Key="CheckBoxCheckGlyphForegroundChecked" Color="#07111D"/>
<SolidColorBrush x:Key="CheckBoxForegroundUnchecked" Color="#F5F7FB"/>
<SolidColorBrush x:Key="CheckBoxForegroundChecked" Color="#F5F7FB"/>
<SolidColorBrush x:Key="ProgressBarForeground" Color="#4AB8FF"/>
<SolidColorBrush x:Key="ProgressBarBackground" Color="#1D2940"/>
<SolidColorBrush x:Key="HeroBorderBrush" Color="#35507D"/>
</ResourceDictionary>
<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="PageBrush" Color="#F4F7FB"/>
@@ -37,11 +85,65 @@
<SolidColorBrush x:Key="ButtonBrush" Color="#E5EDF7"/>
<SolidColorBrush x:Key="ButtonHoverBrush" Color="#D7E4F4"/>
<SolidColorBrush x:Key="PrimaryTextBrush" Color="#FFFFFF"/>
<SolidColorBrush x:Key="TextControlBackground" Color="#F7FAFD"/>
<SolidColorBrush x:Key="TextControlBackgroundPointerOver" Color="#EEF4FB"/>
<SolidColorBrush x:Key="TextControlBackgroundFocused" Color="#FFFFFF"/>
<SolidColorBrush x:Key="TextControlBorderBrush" Color="#C7D3E3"/>
<SolidColorBrush x:Key="TextControlBorderBrushPointerOver" Color="#0E9AEF"/>
<SolidColorBrush x:Key="TextControlBorderBrushFocused" Color="#0E9AEF"/>
<SolidColorBrush x:Key="TextControlForeground" Color="#122033"/>
<SolidColorBrush x:Key="TextControlForegroundFocused" Color="#122033"/>
<SolidColorBrush x:Key="TextControlHeaderForeground" Color="#5F7390"/>
<SolidColorBrush x:Key="TextControlPlaceholderForeground" Color="#8194AC"/>
<SolidColorBrush x:Key="ComboBoxBackground" Color="#F7FAFD"/>
<SolidColorBrush x:Key="ComboBoxBackgroundPointerOver" Color="#EEF4FB"/>
<SolidColorBrush x:Key="ComboBoxBorderBrush" Color="#C7D3E3"/>
<SolidColorBrush x:Key="ComboBoxForeground" Color="#122033"/>
<SolidColorBrush x:Key="ComboBoxHeaderForeground" Color="#5F7390"/>
<SolidColorBrush x:Key="ComboBoxItemBackgroundSelected" Color="#D6EEFF"/>
<SolidColorBrush x:Key="ComboBoxDropDownBackground" Color="#FFFFFF"/>
<SolidColorBrush x:Key="ButtonBackground" Color="#E5EDF7"/>
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="#D7E4F4"/>
<SolidColorBrush x:Key="ButtonBackgroundPressed" Color="#C7D9EE"/>
<SolidColorBrush x:Key="ButtonForeground" Color="#122033"/>
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="#122033"/>
<SolidColorBrush x:Key="ButtonBorderBrush" Color="#C7D3E3"/>
<SolidColorBrush x:Key="ContentDialogBackground" Color="#FFFFFF"/>
<SolidColorBrush x:Key="ContentDialogForeground" Color="#122033"/>
<SolidColorBrush x:Key="ContentDialogBorderBrush" Color="#C7D3E3"/>
<SolidColorBrush x:Key="ListViewItemBackgroundSelected" Color="#D6EEFF"/>
<SolidColorBrush x:Key="ListViewItemBackgroundPointerOver" Color="#EEF4FB"/>
<SolidColorBrush x:Key="ListViewItemForeground" Color="#122033"/>
<SolidColorBrush x:Key="CheckBoxCheckBackgroundFillUnchecked" Color="#F7FAFD"/>
<SolidColorBrush x:Key="CheckBoxCheckBackgroundStrokeUnchecked" Color="#C7D3E3"/>
<SolidColorBrush x:Key="CheckBoxCheckBackgroundFillChecked" Color="#0E9AEF"/>
<SolidColorBrush x:Key="CheckBoxCheckBackgroundStrokeChecked" Color="#0E9AEF"/>
<SolidColorBrush x:Key="CheckBoxCheckGlyphForegroundChecked" Color="#FFFFFF"/>
<SolidColorBrush x:Key="CheckBoxForegroundUnchecked" Color="#122033"/>
<SolidColorBrush x:Key="CheckBoxForegroundChecked" Color="#122033"/>
<SolidColorBrush x:Key="ProgressBarForeground" Color="#0E9AEF"/>
<SolidColorBrush x:Key="ProgressBarBackground" Color="#F7FAFD"/>
<SolidColorBrush x:Key="HeroBorderBrush" Color="#A9C4E4"/>
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
<!-- Global corner rounding so built-in Fluent controls match the WPF app's rounded look -->
<CornerRadius x:Key="ControlCornerRadius">10</CornerRadius>
<CornerRadius x:Key="OverlayCornerRadius">18</CornerRadius>
<x:Double x:Key="ContentDialogMaxWidth">460</x:Double>
<Style TargetType="Page">
<Setter Property="Background" Value="{ThemeResource PageBrush}" />
<Setter Property="FontFamily" Value="Bahnschrift" />
</Style>
<Style x:Key="CardBorderStyle" TargetType="Border">
@@ -53,51 +155,114 @@
<Style x:Key="SectionTitleStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="{ThemeResource TextBrush}" />
<Setter Property="FontSize" Value="24" />
<Setter Property="FontSize" Value="15" />
<Setter Property="FontWeight" Value="SemiBold" />
</Style>
<Style x:Key="MutedTextStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="{ThemeResource MutedBrush}" />
<Setter Property="FontSize" Value="13" />
</Style>
<Style x:Key="FieldLabelStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="{ThemeResource MutedBrush}" />
<Setter Property="FontSize" Value="12" />
<Setter Property="Margin" Value="0,0,0,4" />
</Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{ThemeResource TextBrush}" />
<Setter Property="FontSize" Value="13" />
</Style>
<Style TargetType="Button">
<Setter Property="Background" Value="{ThemeResource ButtonBrush}" />
<Setter Property="Foreground" Value="{ThemeResource TextBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource BorderBrush}" />
<Setter Property="Padding" Value="16,9" />
<Setter Property="FontSize" Value="13" />
<Setter Property="CornerRadius" Value="10" />
</Style>
<Style x:Key="PrimaryButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{ThemeResource AccentBrush}" />
<Setter Property="Foreground" Value="{ThemeResource PrimaryTextBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource AccentBrush}" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Padding" Value="22,10" />
<Setter Property="CornerRadius" Value="10" />
</Style>
<Style x:Key="IconButtonStyle" TargetType="Button">
<Setter Property="Width" Value="40" />
<Setter Property="Height" Value="40" />
<Setter Property="Padding" Value="0" />
<Setter Property="FontSize" Value="16" />
<Setter Property="CornerRadius" Value="10" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
<!-- Explicit styles bound to ContentDialog.PrimaryButtonStyle / CloseButtonStyle so its
built-in buttons match the app's own Button look instead of the default Fluent
accent-pill / plain styles. -->
<Style x:Key="DialogPrimaryButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{ThemeResource AccentBrush}" />
<Setter Property="Foreground" Value="{ThemeResource PrimaryTextBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource AccentBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="FontSize" Value="13" />
<Setter Property="Padding" Value="22,10" />
<Setter Property="CornerRadius" Value="10" />
<Setter Property="MinHeight" Value="40" />
<Setter Property="MinWidth" Value="110" />
</Style>
<Style x:Key="DialogCloseButtonStyle" TargetType="Button">
<Setter Property="Background" Value="{ThemeResource ButtonBrush}" />
<Setter Property="Foreground" Value="{ThemeResource TextBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource BorderBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="FontSize" Value="13" />
<Setter Property="Padding" Value="16,9" />
<Setter Property="CornerRadius" Value="10" />
<Setter Property="MinHeight" Value="40" />
<Setter Property="MinWidth" Value="110" />
</Style>
<Style TargetType="TextBox">
<Setter Property="Background" Value="{ThemeResource FieldBrush}" />
<Setter Property="Foreground" Value="{ThemeResource TextBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource BorderBrush}" />
<Setter Property="FontSize" Value="13" />
<Setter Property="MinHeight" Value="38" />
</Style>
<Style TargetType="ComboBox">
<Setter Property="Background" Value="{ThemeResource FieldBrush}" />
<Setter Property="Foreground" Value="{ThemeResource TextBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource BorderBrush}" />
<Setter Property="FontSize" Value="13" />
<Setter Property="MinHeight" Value="38" />
</Style>
<Style TargetType="CheckBox">
<Setter Property="FontSize" Value="13" />
</Style>
<Style TargetType="ProgressBar">
<Setter Property="Foreground" Value="{ThemeResource AccentBrush}" />
<Setter Property="Background" Value="{ThemeResource FieldBrush}" />
<Setter Property="MinHeight" Value="8" />
</Style>
<Style TargetType="ListView">
<Setter Property="Background" Value="{ThemeResource FieldBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource BorderBrush}" />
<Setter Property="Foreground" Value="{ThemeResource TextBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CornerRadius" Value="10" />
<Setter Property="FontSize" Value="13" />
<Setter Property="Padding" Value="4" />
</Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{ThemeResource TextBrush}" />
<Style TargetType="ListViewItem">
<Setter Property="MinHeight" Value="32" />
<Setter Property="Padding" Value="8,6" />
<Setter Property="CornerRadius" Value="6" />
</Style>
<Style TargetType="ContentDialog">
<Setter Property="CornerRadius" Value="18" />
</Style>
</ResourceDictionary>
</Application.Resources>