Builds out the secondary surfaces of the redesigned WinUI 3 host.
ThemeManager (Services/ThemeManager.cs)
Single-source-of-truth for the active theme. Holds the user preference
(System / Dark / Light), resolves it to ElementTheme at request, and
raises a Themed event when it changes so the MainWindow can push the
AppWindow title-bar button colors. Uses Windows.UI.ViewManagement
UISettings to follow the OS app-mode when preference is System.
Persistence to UIPreferences lands in the engine-wiring commit.
MainWindow theme wiring
Replaces the per-handler theme toggle with a ThemeManager subscription:
click the title-bar sun/moon -> Toggle() -> Themed event ->
ApplyResolvedTheme on the visual tree + the title-bar buttons. Glyph
cue: sun = "current is Light, click to Dark"; moon = "current is Dark,
click to Light." Initial state applied at construction so the first
frame matches the preference.
SettingsDrawer (Views/SettingsDrawer.xaml + .cs)
UserControl that slides in from the right over the participants table.
56px header, NavigationView with five tabs (Appearance, Routing,
Display, Control, Advanced), footer with Reset-to-defaults +
Apply/Close. Appearance tab has the theme tri-state picker (System /
Dark / Light radio group) and an "Accent peek" row showing the four
brand accents (cyan / coral / live / warn) as swatches so the
operator can verify Wild Dragon brand is respected on a light desk.
CloseRequested event signals the host to collapse the drawer.
HelpDialog (Views/HelpDialog.xaml + .cs)
ContentDialog with the keyboard shortcut cheat sheet, grouped by
category (Global / Participants / Look / Control surface). 540px max
height with scroll, mono-spaced shortcut labels at left, body text at
right. Replaces the WPF host's HelpWindow at parity.
AboutDialog (Views/AboutDialog.xaml + .cs)
ContentDialog with the Wild Dragon mark, version + host + engine +
brand info as label/value rows, and three quick action buttons
(open logs folder, open recordings, check for updates). Mirrors the
WPF host's AboutWindow.
OnboardingDialog (Views/OnboardingDialog.xaml + .cs)
Three numbered steps (Install NDI Runtime / Enable Teams NDI / Pick
transcoder topology), no carousel, operator-tone copy ("Don't show
this again" defaults checked). PrimaryButtonText "Get started",
SecondaryButtonText "Skip" so the dialog is skippable from the first
frame as the PRODUCT.md anti-references demand.
Build clean: dotnet build TeamsISO.App.WinUI -c Debug -> 0 / 0.
Next: wire the drawer's CloseRequested into MainWindow (so the settings
icon actually opens / collapses the drawer), then attack the runtime
activation blocker (Phase 3 of the migration plan).
75 lines
3.8 KiB
XML
75 lines
3.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<ContentDialog
|
|
x:Class="TeamsISO.App.WinUI.Views.AboutDialog"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Title="About TeamsISO"
|
|
PrimaryButtonText="Close"
|
|
DefaultButton="Primary"
|
|
Background="{ThemeResource BgElevated}"
|
|
BorderBrush="{ThemeResource BorderStrong}">
|
|
|
|
<StackPanel Spacing="14" MinWidth="380">
|
|
<StackPanel Orientation="Horizontal" Spacing="14">
|
|
<Border Width="56" Height="56"
|
|
CornerRadius="{ThemeResource RadiusM}"
|
|
Background="{ThemeResource AccentCyanMuted}">
|
|
<TextBlock Text="W"
|
|
FontFamily="{ThemeResource FontSans}"
|
|
FontSize="28"
|
|
FontWeight="Bold"
|
|
Foreground="{ThemeResource AccentCyanText}"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"/>
|
|
</Border>
|
|
<StackPanel VerticalAlignment="Center" Spacing="2">
|
|
<TextBlock Text="TeamsISO" Style="{StaticResource TextTitle}"/>
|
|
<TextBlock Text="Per-participant NDI ISO controller for Microsoft Teams"
|
|
Style="{StaticResource TextSubtle}"
|
|
TextWrapping="Wrap"
|
|
MaxWidth="280"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
|
|
<Border Height="1" Background="{ThemeResource BorderSubtle}"/>
|
|
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="120"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock Grid.Row="0" Grid.Column="0" Text="Version" Style="{StaticResource TextSubtle}"/>
|
|
<TextBlock Grid.Row="0" Grid.Column="1" Text="1.0.0-alpha" Style="{StaticResource TextMono}"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="0" Text="Host" Style="{StaticResource TextSubtle}" Margin="0,6,0,0"/>
|
|
<TextBlock Grid.Row="1" Grid.Column="1" Text="WinUI 3 (WindowsAppSDK 1.6)" Style="{StaticResource TextMono}" Margin="0,6,0,0"/>
|
|
<TextBlock Grid.Row="2" Grid.Column="0" Text="Engine" Style="{StaticResource TextSubtle}" Margin="0,6,0,0"/>
|
|
<TextBlock Grid.Row="2" Grid.Column="1" Text=".NET 8 + NDI 5" Style="{StaticResource TextMono}" Margin="0,6,0,0"/>
|
|
<TextBlock Grid.Row="3" Grid.Column="0" Text="Brand" Style="{StaticResource TextSubtle}" Margin="0,6,0,0"/>
|
|
<TextBlock Grid.Row="3" Grid.Column="1" Text="Wild Dragon · wilddragon.net" Style="{StaticResource TextMono}" Margin="0,6,0,0"/>
|
|
</Grid>
|
|
|
|
<Border Height="1" Background="{ThemeResource BorderSubtle}"/>
|
|
|
|
<StackPanel Orientation="Horizontal" Spacing="8">
|
|
<Button Style="{StaticResource ButtonSecondary}"
|
|
Content="Open logs folder"
|
|
ToolTipService.ToolTip="%LOCALAPPDATA%\TeamsISO\Logs"/>
|
|
<Button Style="{StaticResource ButtonSecondary}"
|
|
Content="Open recordings"
|
|
ToolTipService.ToolTip="%USERPROFILE%\Videos\TeamsISO"/>
|
|
<Button Style="{StaticResource ButtonSecondary}"
|
|
Content="Check for updates"
|
|
ToolTipService.ToolTip="Query forge.wilddragon.net for a newer release"/>
|
|
</StackPanel>
|
|
|
|
<TextBlock Style="{StaticResource TextCaption}"
|
|
TextWrapping="Wrap"
|
|
Text="Proprietary © Wild Dragon LLC 2026."/>
|
|
</StackPanel>
|
|
</ContentDialog>
|