MainWindow.xaml
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:TNRTC" mc:Ignorable="d" Title="Skype for Business and Microsoft Teams Network Testing Companion" Height="440" Width="1024" ResizeMode="CanMinimize" WindowStartupLocation="CenterScreen"> <Window.Resources> <sys:Double x:Key="ProgressValue"/> <x:Array x:Key="ConnectivityTimeout" Type="sys:Object"/> <x:Array x:Key="NumAudioTests" Type="sys:Object"/> <x:Array x:Key="AudioTestDelay" Type="sys:Object"/> <Style x:Key="TextBlockMargin1" TargetType="TextBlock"> <Setter Property="Margin" Value="3,5"/> <Setter Property="VerticalAlignment" Value="Center"/> <Setter Property="HorizontalAlignment" Value="Left"/> </Style> <Style x:Key="ComboBoxMargin1" TargetType="ComboBox"> <Setter Property="Margin" Value="3,3"/> <Setter Property="MinWidth" Value="50"/> <Setter Property="HorizontalAlignment" Value="Right"/> </Style> <Style x:Key="CheckBoxMargin1" TargetType="CheckBox"> <Setter Property="Margin" Value="3,5"/> </Style> <Style x:Key="BtnLeft1" TargetType="Button"> <Setter Property="Margin" Value="3,5"/> <Setter Property="Height" Value="24"/> <Setter Property="Padding" Value="5,2"/> <Setter Property="HorizontalAlignment" Value="Left"/> </Style> </Window.Resources> <Window.TaskbarItemInfo> <TaskbarItemInfo ProgressState="Normal" ProgressValue="{DynamicResource ResourceKey=ProgressValue}" Description="Network Testing Companion"/> </Window.TaskbarItemInfo> <Grid Margin="10,10,10,10"> <Grid.ColumnDefinitions> <ColumnDefinition Width="3.0*"/> <ColumnDefinition Width="3.0*"/> <ColumnDefinition Width="5*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="195"/> <RowDefinition Height="195"/> <RowDefinition Height="50"/> </Grid.RowDefinitions> <StackPanel Grid.Column="0" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top"> <Border Margin="2" BorderBrush="Gray" BorderThickness="1" Background="{x:Static SystemColors.ControlLightLightBrush}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="70"/> <ColumnDefinition Width="70"/> <ColumnDefinition Width="120"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="70"/> <RowDefinition Height="75"/> <RowDefinition Height="35"/> </Grid.RowDefinitions> <Image x:Name="imgMSFTLogo" Grid.Column="0" Grid.Row="0" Margin="10,10,10,10" Source="assets/MSFT_logo.png"/> <TextBlock Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="5,5,5,5" TextWrapping="Wrap" Text="Windows operating system" FontSize="18" FontFamily="Segoe UI Light"/> <TextBlock x:Name="txtOs" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="5,5,5,5" TextWrapping="Wrap" FontFamily="Segoe UI Light" Text="Checking..."/> <Image x:Name="imgOs" Grid.Column="2" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="2,2,5,5" Source="assets/check.png"/> <Image Cursor="Hand" x:Name="imgInfoOs" Grid.Column="0" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="2,2,5,5" Source="assets/info.png"/> </Grid> </Border> </StackPanel> <StackPanel Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="top"> <Border Margin="2" BorderBrush="Gray" BorderThickness="1" Background="{x:Static SystemColors.ControlLightLightBrush}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="70"/> <ColumnDefinition Width="70"/> <ColumnDefinition Width="120"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="70"/> <RowDefinition Height="75"/> <RowDefinition Height="35"/> </Grid.RowDefinitions> <Image x:Name="imgHeadsetLogo" Grid.Column="0" Grid.Row="0" Margin="5,5,5,5" Source="assets/headset.png"/> <TextBlock Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="5,5,5,5" TextWrapping="Wrap" Text="Microsoft Teams or Skype-certified device" FontSize="18" FontFamily="Segoe UI Light"/> <TextBlock x:Name="txtHeadset" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="5,5,5,5" TextWrapping="Wrap" FontFamily="Segoe UI Light" Text="Checking..."/> <Image x:Name="imgHeadset" Grid.Column="2" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="2,2,5,5" Source="assets/check.png"/> <Image Cursor="Hand" x:Name="imgInfoHeadset" Grid.Column="0" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="2,2,5,5" Source="assets/info.png"/> </Grid> </Border> </StackPanel> <StackPanel Grid.Column="1" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top"> <Border Margin="2" BorderBrush="Gray" BorderThickness="1" Background="{x:Static SystemColors.ControlLightLightBrush}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="70"/> <ColumnDefinition Width="70"/> <ColumnDefinition Width="120"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="70"/> <RowDefinition Height="75"/> <RowDefinition Height="35"/> </Grid.RowDefinitions> <Image x:Name="imgInternetLogo" Grid.Column="0" Grid.Row="0" Margin="5,5,5,5" Source="assets/network.png"/> <TextBlock Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="5,5,5,5" TextWrapping="Wrap" Text="Internet connection" FontSize="18" FontFamily="Segoe UI Light"/> <TextBlock x:Name="txtInternet" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="5,5,5,5" TextWrapping="Wrap" FontFamily="Segoe UI Light" Text="Checking..."/> <Image x:Name="imgInternet" Grid.Column="2" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="2,2,5,5" Source="assets/check.png"/> <Image Cursor="Hand" x:Name="imgInfoInternet" Grid.Column="0" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="2,2,5,5" Source="assets/info.png"/> </Grid> </Border> </StackPanel> <StackPanel Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top"> <Border Margin="2" BorderBrush="Gray" BorderThickness="1" Background="{x:Static SystemColors.ControlLightLightBrush}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="70"/> <ColumnDefinition Width="70"/> <ColumnDefinition Width="120"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="70"/> <RowDefinition Height="75"/> <RowDefinition Height="35"/> </Grid.RowDefinitions> <Image x:Name="imgToolLogo" Grid.Column="0" Grid.Row="0" Margin="5,5,5,5" Source="assets/tool.png"/> <TextBlock Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="5,5,5,5" TextWrapping="Wrap" Text="Network Assessment Tool" FontSize="18" FontFamily="Segoe UI Light"/> <TextBlock x:Name="txtTool" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="5,5,5,5" TextWrapping="Wrap" FontFamily="Segoe UI Light" Text="Checking..."/> <Image x:Name="imgTool" Grid.Column="2" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="2,2,5,5" Source="assets/check.png"/> <Image Cursor="Hand" x:Name="imgInfoTool" Grid.Column="0" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="2,2,5,5" Source="assets/info.png"/> </Grid> </Border> </StackPanel> <StackPanel Grid.Column="2" Grid.RowSpan="4"> <Border Margin="2" BorderBrush="Gray" BorderThickness="1" Background="{x:Static SystemColors.ControlLightLightBrush}"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="50*"/> <ColumnDefinition Width="70*"/> <ColumnDefinition Width="50*"/> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.ColumnSpan="3" HorizontalAlignment="Center" Text="Network connectivity and quality test" FontSize="18" Margin="2,5,2,2" FontFamily="Segoe UI Light"/> <Rectangle HorizontalAlignment="Stretch" Grid.Row="1" Grid.ColumnSpan="3" Fill="#FF80CC28" Height="2" Margin="2,5"/> <TabControl Grid.Row="2" Grid.ColumnSpan="3" Margin="5,5,5,5" VerticalAlignment="Top" Height="322" > <TabItem x:Name="tabStartTests" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Header="Start Tests"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="95"/> <RowDefinition Height="25"/> <RowDefinition Height="1*"/> <RowDefinition Height="45"/> <RowDefinition Height="70"/> </Grid.RowDefinitions> <Grid HorizontalAlignment="Center" Grid.ColumnSpan="2"> <Ellipse Cursor="Hand" x:Name="elipActionButton" Grid.Row="0" Grid.ColumnSpan="2" Height="80" Width="80" Fill="#FFFBBC0B" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,5,0,5"/> <TextBlock Cursor="Hand" x:Name="txtActionButton" HorizontalAlignment="Center" VerticalAlignment="Center" Text="Wait..." Foreground="White" FontSize="16" TextWrapping="Wrap" FontFamily="Segoe UI Light"/> </Grid> <ProgressBar Margin="5,0,5,0" x:Name="barTest" Height="8" Grid.Row="1" Grid.ColumnSpan="2" BorderBrush="#FFEDEDED" Background="White" Foreground="#FF80CC28" Value="0" IsEnabled="False" Visibility="Hidden"/> <TextBlock x:Name="txtStatus" Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="14" TextWrapping="Wrap" FontFamily="Segoe UI Light"/> <TextBlock Text="Quality" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Center" FontSize="18" VerticalAlignment="Bottom" FontFamily="Segoe UI Light"/> <Image x:Name="imgTestQuality" Cursor="Hand" Grid.Row="5" Grid.Column="1" Source="assets/question.png" HorizontalAlignment="Center" VerticalAlignment="Center" Height="32"/> <TextBlock Text="Connectivity" Grid.Row="3" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Bottom" FontSize="18" FontFamily="Segoe UI Light"/> <Image x:Name="imgTestConnectivity" Grid.Row="5" Grid.Column="0" Source="assets/question.png" HorizontalAlignment="Center" VerticalAlignment="Center" Height="32"/> </Grid> </TabItem> <TabItem x:Name="tabViewResults" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Header="View Results"> <Grid > <Grid.ColumnDefinitions> <ColumnDefinition Width="60"/> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="10*"/> <RowDefinition Height="15*"/> <RowDefinition Height="25*"/> <RowDefinition Height="15*"/> <RowDefinition Height="50*"/> </Grid.RowDefinitions> <TextBlock Text="Detailed results" FontSize="18" Grid.Row="0" Grid.ColumnSpan="4" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Segoe UI Light"/> <Image Cursor="Hand" x:Name="imgEmailResults" Source="assets\email.png" Grid.Row="0" Grid.Column="3" Visibility="Hidden"/> <TextBlock Margin="5,0,5,0" Text="Network quality" Grid.Row="3" Grid.ColumnSpan="3" FontSize="18" VerticalAlignment="Center" FontFamily="Segoe UI Light"/> <Image x:Name="imgQualityDetail" Cursor="Hand" Grid.Row="3" Source="assets\check.png" Grid.Column="2" HorizontalAlignment="left" Width="23"/> <TextBlock x:Name="txtConnectivityDetail" Margin="2,2,5,2" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" FontFamily="Segoe UI Light" TextWrapping="Wrap"/> <StackPanel Grid.Row="2" Orientation="Vertical"> <Image Cursor="Hand" x:Name="reportConnectivity" Source="assets\doc.png" Grid.Row="2" Width="40"/> <TextBlock Text="Report" Grid.Row="2" HorizontalAlignment="Center" FontSize="12" FontFamily="Segoe UI Light"/> </StackPanel> <Grid Grid.Row="5" Grid.RowSpan="2" Grid.Column="1" Grid.ColumnSpan="3" VerticalAlignment="Center"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="25"/> <RowDefinition Height="25"/> <RowDefinition Height="25"/> <RowDefinition Height="25"/> </Grid.RowDefinitions> <TextBlock Margin="2,0,0,0" Text="Packet loss:" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" FontFamily="Segoe UI Light"/> <TextBlock Margin="2,0,0,0" Text="Round trip time (ms):" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" FontFamily="Segoe UI Light"/> <TextBlock Margin="2,0,0,0" Text="Jitter (ms):" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" FontFamily="Segoe UI Light"/> <TextBlock Margin="2,0,0,0" Text="Packet reorder ratio:" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" FontFamily="Segoe UI Light"/> <TextBlock x:Name="txtPacketLossRate" Margin="2" Grid.Row="0" Grid.Column="1" FontFamily="Segoe UI Light"/> <TextBlock x:Name="txtRoundTripTime" Margin="2" Grid.Row="1" Grid.Column="1" FontFamily="Segoe UI Light"/> <TextBlock x:Name="txtJitter" Margin="2" Grid.Row="2" Grid.Column="1" FontFamily="Segoe UI Light"/> <TextBlock x:Name="txtPacketReorderRatio" Margin="2" Grid.Row="3" Grid.Column="1" FontFamily="Segoe UI Light"/> <Image Cursor="Hand" x:Name="imgPacketLossRate" Margin="0,2,5,0" Source="assets\check.png" Grid.Row="0" Grid.Column="2" HorizontalAlignment="Left" Width="20"/> <Image Cursor="Hand" x:Name="imgRoundTripTime" Margin="0,2,5,0" Source="assets\check.png" Grid.Row="1" Grid.Column="2" HorizontalAlignment="Left" Width="20"/> <Image Cursor="Hand" x:Name="imgJitter" Margin="0,2,5,0" Source="assets\check.png" Grid.Row="2" Grid.Column="2" HorizontalAlignment="Left" Height="20"/> <Image Cursor="Hand" x:Name="imgPacketReorderRatio" Margin="0,2,5,0" Source="assets\check.png" Grid.Row="3" Grid.Column="2" HorizontalAlignment="Left" Width="20"/> </Grid> <TextBlock VerticalAlignment="Center" Margin="5,0,5,0" Text="Network connectivity" Grid.Row="1" Grid.ColumnSpan="2" FontSize="18" FontFamily="Segoe UI Light"/> <Image x:Name="imgConnectivityDetail" Grid.Row="1" Source="assets\check.png" Grid.Column="2" HorizontalAlignment="left" Width="23"/> <StackPanel Grid.Row="4" HorizontalAlignment="Center"> <Image Cursor="Hand" x:Name="reportQuality" Source="assets\doc.png" Grid.Row="5" Width="40"/> <TextBlock Text="Report" Grid.Row="6" HorizontalAlignment="Center" FontSize="12" FontFamily="Segoe UI Light"/> </StackPanel> </Grid> </TabItem> <TabItem x:Name="tabViewSettings" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Header="Settings"> <StackPanel Margin="3" Orientation="Vertical"> <StackPanel> </StackPanel> <GroupBox Header="Skype for Business Network Assessment Tool settings" Margin="0,3"> <StackPanel> <Grid Margin="3,3"> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <TextBlock Style="{StaticResource TextBlockMargin1}" Grid.Row="0" Text="Consecutive audio tests"/> <ComboBox x:Name="cmbNumAudioTests" ItemsSource="{DynamicResource NumAudioTests}" Style="{StaticResource ComboBoxMargin1}" Grid.Row="0"/> <TextBlock Style="{StaticResource TextBlockMargin1}" Grid.Row="1" Text="Delay between audio tests (seconds)"/> <ComboBox x:Name="cmbAudioTestDelay" ItemsSource="{DynamicResource AudioTestDelay}" Style="{StaticResource ComboBoxMargin1}" Grid.Row="1"/> <TextBlock Style="{StaticResource TextBlockMargin1}" Grid.Row="2" Text="Connectivity test timeout (seconds)"/> <ComboBox x:Name="cmbConnectivityTimeout" ItemsSource="{DynamicResource ConnectivityTimeout}" Style="{StaticResource ComboBoxMargin1}" Grid.Row="2"/> <TextBlock x:Name="txtEstimatedTimeToRun" Style="{StaticResource TextBlockMargin1}" Grid.Row="3" Text="Estimated time to complete tests (minutes):"/> </Grid> </StackPanel> </GroupBox> <GroupBox Header="Microsoft Teams Integration" Margin="0,3" Visibility="Collapsed"> <Grid Margin="3,3"> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> </Grid.ColumnDefinitions> <TextBlock Style="{StaticResource TextBlockMargin1}" Grid.Row="0" Text="Channel webhook URL:"/> <TextBox Grid.Row="1" Height="80" TextWrapping="Wrap"/> </Grid> </GroupBox> </StackPanel> </TabItem> <TabItem x:Name="tabViewAbout" Header="About"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="2*"/> <ColumnDefinition Width="90*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="40*"/> <RowDefinition Height="*"/> <RowDefinition Height="10*"/> </Grid.RowDefinitions> <StackPanel Margin="0,10" Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="1"> <TextBlock x:Name="txtCurrentVersion" Style="{StaticResource TextBlockMargin1}" Text="Current version:"/> <TextBlock x:Name="txtPSGVersion" Style="{StaticResource TextBlockMargin1}" Text="Online version:"/> <StackPanel Orientation="Horizontal"> <TextBlock Style="{StaticResource TextBlockMargin1}" Text="Please send feedback to: "/> <TextBlock Style="{StaticResource TextBlockMargin1}"><Hyperlink x:Name="navMailTo" NavigateUri="mailto:myadvisor@microsoft.com">myadvisor@microsoft.com</Hyperlink></TextBlock> </StackPanel> </StackPanel> <StackPanel Grid.Row="3" Grid.Column="2" > <TextBlock Style="{StaticResource TextBlockMargin1}" Text="Created by the team that brought you:" HorizontalAlignment="Center"/> <TextBlock Style="{StaticResource TextBlockMargin1}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Green"><Hyperlink x:Name="navMyAdvisor" NavigateUri="http://myadvisor.fasttrack.microsoft.com">myadvisor.fasttrack.microsoft.com</Hyperlink></TextBlock> </StackPanel> </Grid> </TabItem> <TabItem Header="Debug" Visibility="Hidden"> <StackPanel Margin="3" Orientation="Vertical"> <StackPanel> <GroupBox Header="Automatic Updates" Margin="0,3"> <StackPanel Margin="3,3" Orientation="Vertical"> <TextBlock Style="{StaticResource TextBlockMargin1}" Text="Current version:"/> <TextBlock Style="{StaticResource TextBlockMargin1}" Text="Online version:"/> <CheckBox Style="{StaticResource CheckBoxMargin1}" Content="Automatically update when run in admin-mode"/> <Button Style="{StaticResource BtnLeft1}" Content="Check for Updates"/> </StackPanel> </GroupBox> </StackPanel> <GroupBox Header="Assessment Tool Settings" Margin="0,3"> <StackPanel> <Grid Margin="3,3"> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <TextBlock Style="{StaticResource TextBlockMargin1}" Grid.Row="0" Text="Consecutive audio tests"/> <ComboBox Style="{StaticResource ComboBoxMargin1}" Grid.Row="0"/> <TextBlock Style="{StaticResource TextBlockMargin1}" Grid.Row="1" Text="Delay between audio tests (seconds)"/> <ComboBox Style="{StaticResource ComboBoxMargin1}" Grid.Row="1"/> <TextBlock Style="{StaticResource TextBlockMargin1}" Grid.Row="2" Text="Connectivity test timeout (seconds):"/> <ComboBox Style="{StaticResource ComboBoxMargin1}" Grid.Row="2"/> <TextBlock Style="{StaticResource TextBlockMargin1}" Grid.Row="3" Text="Estimated time to complete tests (minutes):"/> </Grid> </StackPanel> </GroupBox> </StackPanel> </TabItem> </TabControl> </Grid> </Border> </StackPanel> </Grid> </Window> |