2026-05-07 11:09:56 -04:00
|
|
|
<Window x:Class="TeamsISO.App.MainWindow"
|
|
|
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
|
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
2026-05-07 11:40:49 -04:00
|
|
|
xmlns:vm="clr-namespace:TeamsISO.App.ViewModels"
|
|
|
|
|
xmlns:conv="clr-namespace:TeamsISO.App.Converters"
|
|
|
|
|
Title="TeamsISO" Height="700" Width="1100"
|
|
|
|
|
Background="#202225" Foreground="#E8E8E8">
|
|
|
|
|
|
|
|
|
|
<Window.Resources>
|
|
|
|
|
<conv:BoolToVisibilityConverter x:Key="BoolToVis" />
|
|
|
|
|
<conv:EnumDescriptionConverter x:Key="EnumDesc" />
|
|
|
|
|
|
|
|
|
|
<Style TargetType="TextBlock">
|
|
|
|
|
<Setter Property="Foreground" Value="#E8E8E8"/>
|
|
|
|
|
<Setter Property="FontFamily" Value="Segoe UI"/>
|
|
|
|
|
<Setter Property="FontSize" Value="13"/>
|
|
|
|
|
</Style>
|
|
|
|
|
<Style TargetType="Button">
|
|
|
|
|
<Setter Property="Padding" Value="10,4"/>
|
|
|
|
|
<Setter Property="Margin" Value="0,4,0,0"/>
|
|
|
|
|
<Setter Property="Background" Value="#3F4147"/>
|
|
|
|
|
<Setter Property="Foreground" Value="#E8E8E8"/>
|
|
|
|
|
<Setter Property="BorderBrush" Value="#5A5C63"/>
|
|
|
|
|
</Style>
|
|
|
|
|
<Style TargetType="ComboBox">
|
|
|
|
|
<Setter Property="Margin" Value="0,2,0,8"/>
|
|
|
|
|
</Style>
|
|
|
|
|
</Window.Resources>
|
|
|
|
|
|
|
|
|
|
<DockPanel>
|
|
|
|
|
|
|
|
|
|
<!-- Alert banner -->
|
|
|
|
|
<Border DockPanel.Dock="Top"
|
|
|
|
|
Background="#7A2B2B"
|
|
|
|
|
Padding="12,8"
|
|
|
|
|
Visibility="{Binding AlertBanner.IsVisible, Converter={StaticResource BoolToVis}}">
|
|
|
|
|
<DockPanel>
|
|
|
|
|
<Button DockPanel.Dock="Right"
|
|
|
|
|
Content="Dismiss"
|
|
|
|
|
Command="{Binding AlertBanner.DismissCommand}"
|
|
|
|
|
Margin="12,0,0,0"/>
|
|
|
|
|
<TextBlock Text="{Binding AlertBanner.Message}"
|
|
|
|
|
FontWeight="SemiBold"
|
|
|
|
|
VerticalAlignment="Center"/>
|
|
|
|
|
</DockPanel>
|
|
|
|
|
</Border>
|
|
|
|
|
|
|
|
|
|
<!-- Status footer -->
|
|
|
|
|
<Border DockPanel.Dock="Bottom" Background="#191B1F" Padding="10,6">
|
|
|
|
|
<TextBlock Text="{Binding StatusText}" FontStyle="Italic" Foreground="#A0A0A0"/>
|
|
|
|
|
</Border>
|
|
|
|
|
|
|
|
|
|
<!-- Settings sidebar -->
|
|
|
|
|
<Border DockPanel.Dock="Right" Background="#2A2C32" Width="320" Padding="14">
|
|
|
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
|
|
|
<StackPanel>
|
|
|
|
|
<TextBlock Text="Global Settings" FontSize="16" FontWeight="Bold" Margin="0,0,0,12"/>
|
|
|
|
|
|
|
|
|
|
<TextBlock Text="Target Framerate"/>
|
|
|
|
|
<ComboBox ItemsSource="{Binding Settings.AvailableFramerates}"
|
|
|
|
|
SelectedItem="{Binding Settings.Framerate}">
|
|
|
|
|
<ComboBox.ItemTemplate>
|
|
|
|
|
<DataTemplate>
|
|
|
|
|
<TextBlock Text="{Binding Converter={StaticResource EnumDesc}}"/>
|
|
|
|
|
</DataTemplate>
|
|
|
|
|
</ComboBox.ItemTemplate>
|
|
|
|
|
</ComboBox>
|
|
|
|
|
|
|
|
|
|
<TextBlock Text="Target Resolution"/>
|
|
|
|
|
<ComboBox ItemsSource="{Binding Settings.AvailableResolutions}"
|
|
|
|
|
SelectedItem="{Binding Settings.Resolution}">
|
|
|
|
|
<ComboBox.ItemTemplate>
|
|
|
|
|
<DataTemplate>
|
|
|
|
|
<TextBlock Text="{Binding Converter={StaticResource EnumDesc}}"/>
|
|
|
|
|
</DataTemplate>
|
|
|
|
|
</ComboBox.ItemTemplate>
|
|
|
|
|
</ComboBox>
|
|
|
|
|
|
|
|
|
|
<TextBlock Text="Aspect Mode"/>
|
|
|
|
|
<ComboBox ItemsSource="{Binding Settings.AvailableAspectModes}"
|
|
|
|
|
SelectedItem="{Binding Settings.Aspect}">
|
|
|
|
|
<ComboBox.ItemTemplate>
|
|
|
|
|
<DataTemplate>
|
|
|
|
|
<TextBlock Text="{Binding Converter={StaticResource EnumDesc}}"/>
|
|
|
|
|
</DataTemplate>
|
|
|
|
|
</ComboBox.ItemTemplate>
|
|
|
|
|
</ComboBox>
|
|
|
|
|
|
|
|
|
|
<TextBlock Text="Audio Mode"/>
|
|
|
|
|
<ComboBox ItemsSource="{Binding Settings.AvailableAudioModes}"
|
|
|
|
|
SelectedItem="{Binding Settings.Audio}">
|
|
|
|
|
<ComboBox.ItemTemplate>
|
|
|
|
|
<DataTemplate>
|
|
|
|
|
<TextBlock Text="{Binding Converter={StaticResource EnumDesc}}"/>
|
|
|
|
|
</DataTemplate>
|
|
|
|
|
</ComboBox.ItemTemplate>
|
|
|
|
|
</ComboBox>
|
|
|
|
|
|
|
|
|
|
<Button Content="Apply" Command="{Binding Settings.ApplyCommand}" Margin="0,16,0,0"/>
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</ScrollViewer>
|
|
|
|
|
</Border>
|
|
|
|
|
|
|
|
|
|
<!-- Main content: participants list -->
|
|
|
|
|
<Grid Margin="14">
|
|
|
|
|
<Grid.RowDefinitions>
|
|
|
|
|
<RowDefinition Height="Auto"/>
|
|
|
|
|
<RowDefinition Height="*"/>
|
|
|
|
|
</Grid.RowDefinitions>
|
|
|
|
|
|
|
|
|
|
<TextBlock Grid.Row="0"
|
|
|
|
|
Text="Participants"
|
|
|
|
|
FontSize="16" FontWeight="Bold"
|
|
|
|
|
Margin="0,0,0,8"/>
|
|
|
|
|
|
|
|
|
|
<DataGrid Grid.Row="1"
|
|
|
|
|
ItemsSource="{Binding Participants}"
|
|
|
|
|
AutoGenerateColumns="False"
|
|
|
|
|
Background="#2A2C32"
|
|
|
|
|
Foreground="#E8E8E8"
|
|
|
|
|
RowBackground="#2A2C32"
|
|
|
|
|
AlternatingRowBackground="#2E3037"
|
|
|
|
|
BorderBrush="#5A5C63"
|
|
|
|
|
GridLinesVisibility="Horizontal"
|
|
|
|
|
HeadersVisibility="Column"
|
|
|
|
|
CanUserAddRows="False" CanUserDeleteRows="False"
|
|
|
|
|
RowHeight="34">
|
|
|
|
|
<DataGrid.Columns>
|
|
|
|
|
<DataGridTextColumn Header="Display Name" Binding="{Binding DisplayName}" Width="2*" IsReadOnly="True"/>
|
|
|
|
|
<DataGridTextColumn Header="Source" Binding="{Binding SourceMachine}" Width="*" IsReadOnly="True"/>
|
|
|
|
|
<DataGridTextColumn Header="ISO Output Name" Binding="{Binding CustomName, UpdateSourceTrigger=PropertyChanged}" Width="2*"/>
|
|
|
|
|
<DataGridTemplateColumn Header="ISO" Width="100">
|
|
|
|
|
<DataGridTemplateColumn.CellTemplate>
|
|
|
|
|
<DataTemplate>
|
|
|
|
|
<Button Content="{Binding IsEnabled, StringFormat={}{0}}" Command="{Binding ToggleIsoCommand}">
|
|
|
|
|
<Button.Style>
|
|
|
|
|
<Style TargetType="Button">
|
|
|
|
|
<Setter Property="Content" Value="Enable"/>
|
|
|
|
|
<Style.Triggers>
|
|
|
|
|
<DataTrigger Binding="{Binding IsEnabled}" Value="True">
|
|
|
|
|
<Setter Property="Content" Value="Disable"/>
|
|
|
|
|
<Setter Property="Background" Value="#3D6F45"/>
|
|
|
|
|
</DataTrigger>
|
|
|
|
|
<DataTrigger Binding="{Binding IsProcessing}" Value="True">
|
|
|
|
|
<Setter Property="Content" Value="…"/>
|
|
|
|
|
</DataTrigger>
|
|
|
|
|
</Style.Triggers>
|
|
|
|
|
</Style>
|
|
|
|
|
</Button.Style>
|
|
|
|
|
</Button>
|
|
|
|
|
</DataTemplate>
|
|
|
|
|
</DataGridTemplateColumn.CellTemplate>
|
|
|
|
|
</DataGridTemplateColumn>
|
|
|
|
|
</DataGrid.Columns>
|
|
|
|
|
</DataGrid>
|
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
</DockPanel>
|
2026-05-07 11:09:56 -04:00
|
|
|
</Window>
|