workflow/vNext-v2/ui/MainWindow.xaml
|
<?xml version="1.0" encoding="UTF-8"?>
<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:ui="http://schemas.lepo.co/wpfui/2022/xaml" mc:Ignorable="d" Title="OSDCloud" Width="960" Height="680" WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip"> <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ui:ThemesDictionary Theme="Light" /> <ui:ControlsDictionary /> </ResourceDictionary.MergedDictionaries> <!-- Left nav item style with blue accent bar on selection --> <Style x:Key="NavItemStyle" TargetType="ListBoxItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch" /> <Setter Property="VerticalContentAlignment" Value="Center" /> <Setter Property="Padding" Value="0" /> <Setter Property="Margin" Value="0" /> <Setter Property="BorderThickness" Value="0" /> <Setter Property="Cursor" Value="Hand" /> <Setter Property="Foreground" Value="#323130" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ListBoxItem"> <Grid Height="48"> <Grid.ColumnDefinitions> <ColumnDefinition Width="4" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Rectangle x:Name="AccentBar" Grid.Column="0" Fill="Transparent" /> <Border x:Name="ContentBorder" Grid.Column="1" Background="Transparent"> <ContentPresenter VerticalAlignment="Center" /> </Border> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="ContentBorder" Property="Background" Value="#F3F2F1" /> </Trigger> <Trigger Property="IsSelected" Value="True"> <Setter TargetName="AccentBar" Property="Fill" Value="#0067B8" /> <Setter TargetName="ContentBorder" Property="Background" Value="#EFF6FC" /> <Setter Property="Foreground" Value="#0067B8" /> <Setter Property="FontWeight" Value="SemiBold" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style x:Key="DeploymentComboBoxStyle" TargetType="ComboBox" BasedOn="{StaticResource {x:Type ComboBox}}"> <Setter Property="MinHeight" Value="40" /> <Setter Property="Padding" Value="12,6" /> <Setter Property="FontWeight" Value="SemiBold" /> <Setter Property="VerticalContentAlignment" Value="Center" /> </Style> </ResourceDictionary> </Window.Resources> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="210" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <!-- ═══ LEFT NAVIGATION SIDEBAR ═══ --> <Border Grid.Column="0" Background="White" BorderBrush="#EDEBE9" BorderThickness="0,0,1,0"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="72" /> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Border Grid.Row="0" Background="#0067B8"> <TextBlock Text="OSDCloud" Foreground="White" FontSize="20" FontWeight="SemiBold" VerticalAlignment="Center" Margin="16,0,0,0" /> </Border> <ListBox x:Name="NavListBox" Grid.Row="1" Background="Transparent" BorderThickness="0" SelectionMode="Single" Margin="0,8,0,0" ItemContainerStyle="{StaticResource NavItemStyle}"> <ListBoxItem Tag="Device"> <StackPanel Orientation="Horizontal" Margin="16,0,0,0"> <ui:SymbolIcon Symbol="Desktop32" FontSize="20" VerticalAlignment="Center" Margin="0,0,12,0" /> <TextBlock Text="Device" VerticalAlignment="Center" FontSize="14" /> </StackPanel> </ListBoxItem> <ListBoxItem Tag="Identity"> <StackPanel Orientation="Horizontal" Margin="16,0,0,0"> <ui:SymbolIcon Symbol="Fingerprint20" FontSize="20" VerticalAlignment="Center" Margin="0,0,12,0" /> <TextBlock Text="Identity" VerticalAlignment="Center" FontSize="14" /> </StackPanel> </ListBoxItem> <ListBoxItem Tag="Deployment"> <StackPanel Orientation="Horizontal" Margin="16,0,0,0"> <ui:SymbolIcon Symbol="CloudArrowDown24" FontSize="20" VerticalAlignment="Center" Margin="0,0,12,0" /> <TextBlock Text="Deployment" VerticalAlignment="Center" FontSize="14" /> </StackPanel> </ListBoxItem> <ListBoxItem Tag="Steps"> <StackPanel Orientation="Horizontal" Margin="32,0,0,0"> <ui:SymbolIcon Symbol="CloudArrowDown24" FontSize="20" VerticalAlignment="Center" Margin="0,0,12,0" /> <TextBlock Text="Steps" VerticalAlignment="Center" FontSize="14" /> </StackPanel> </ListBoxItem> <ListBoxItem Tag="Privacy"> <StackPanel Orientation="Horizontal" Margin="16,0,0,0"> <ui:SymbolIcon Symbol="Shield24" FontSize="20" VerticalAlignment="Center" Margin="0,0,12,0" /> <TextBlock Text="Privacy" VerticalAlignment="Center" FontSize="14" /> </StackPanel> </ListBoxItem> </ListBox> <Menu Grid.Row="3" Background="White" Margin="0,8,0,8"> <Menu.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" /> </ItemsPanelTemplate> </Menu.ItemsPanel> <Menu.Resources> <Style TargetType="MenuItem"> <Setter Property="Foreground" Value="#323130" /> <Setter Property="Background" Value="White" /> <Setter Property="FontSize" Value="14" /> <Setter Property="Padding" Value="16,8" /> <Style.Triggers> <Trigger Property="IsHighlighted" Value="True"> <Setter Property="Foreground" Value="#201F1E" /> <Setter Property="Background" Value="#F3F2F1" /> </Trigger> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Foreground" Value="#8A8886" /> </Trigger> <Trigger Property="Role" Value="TopLevelHeader"> <Setter Property="Foreground" Value="#323130" /> <Setter Property="Background" Value="White" /> <Setter Property="Padding" Value="16,8" /> </Trigger> <Trigger Property="Role" Value="TopLevelItem"> <Setter Property="Foreground" Value="#323130" /> <Setter Property="Background" Value="White" /> <Setter Property="Padding" Value="16,8" /> </Trigger> </Style.Triggers> </Style> </Menu.Resources> <MenuItem x:Name="LogsMenuItem" Header="Logs" /> <MenuItem x:Name="WMIMenuItem" Header="WMI" /> <MenuItem Header="Shell"> <MenuItem x:Name="RunCmdPrompt" Header="CMD Prompt" /> <MenuItem x:Name="RunPowerShell" Header="Windows PowerShell" /> <MenuItem x:Name="RunPwsh" Header="PowerShell 7" Visibility="Collapsed" /> </MenuItem> </Menu> </Grid> </Border> <!-- ═══ CONTENT AND ACTION AREA ═══ --> <Grid Grid.Column="1"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="56" /> </Grid.RowDefinitions> <!-- Content area: panels toggled by nav selection --> <ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Auto" Background="White"> <Grid Margin="28,20,28,20"> <!-- ─── DEVICE PANEL ─── --> <StackPanel x:Name="DevicePanel" Visibility="Visible"> <TextBlock Text="Device" FontSize="20" FontWeight="SemiBold" Foreground="#323130" Margin="0,0,0,16" /> <ui:Card Padding="16" Margin="0,0,0,12"> <StackPanel> <TextBlock Text="HARDWARE" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,10" /> <Grid> <Grid.RowDefinitions> <RowDefinition Height="28" /> <RowDefinition Height="28" /> <RowDefinition Height="28" /> <RowDefinition Height="28" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="120" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="Manufacturer" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="0" Grid.Column="1" x:Name="deviceOSDManufacturerText" Foreground="#323130" FontWeight="SemiBold" VerticalAlignment="Center" TextWrapping="Wrap" /> <TextBlock Grid.Row="1" Grid.Column="0" Text="Model" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="1" Grid.Column="1" x:Name="deviceOSDModelText" Foreground="#323130" FontWeight="SemiBold" VerticalAlignment="Center" TextWrapping="Wrap" /> <TextBlock Grid.Row="2" Grid.Column="0" Text="Product" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="2" Grid.Column="1" x:Name="deviceOSDProductText" Foreground="#323130" FontWeight="SemiBold" VerticalAlignment="Center" TextWrapping="Wrap" /> <TextBlock Grid.Row="3" Grid.Column="0" Text="System SKU" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="3" Grid.Column="1" x:Name="deviceComputerSystemSKUText" Foreground="#323130" FontWeight="SemiBold" VerticalAlignment="Center" TextWrapping="Wrap" /> </Grid> </StackPanel> </ui:Card> <ui:Card Padding="16" Margin="0,0,0,12"> <StackPanel> <TextBlock Text="FIRMWARE" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,10" /> <Grid> <Grid.RowDefinitions> <RowDefinition Height="28" /> <RowDefinition Height="28" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="120" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="BIOS Version" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="0" Grid.Column="1" x:Name="deviceBiosVersionText" Foreground="#323130" FontWeight="SemiBold" VerticalAlignment="Center" TextWrapping="Wrap" /> <TextBlock Grid.Row="1" Grid.Column="0" Text="BIOS Date" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="1" Grid.Column="1" x:Name="deviceBiosReleaseDateText" Foreground="#323130" FontWeight="SemiBold" VerticalAlignment="Center" TextWrapping="Wrap" /> </Grid> </StackPanel> </ui:Card> <ui:Card Padding="16"> <StackPanel> <TextBlock Text="COMPLIANCE" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,10" /> <Grid> <Grid.RowDefinitions> <RowDefinition Height="28" /> <RowDefinition Height="28" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="120" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="TPM 2.0" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="0" Grid.Column="1" x:Name="deviceIsTpmSpecText" Foreground="#323130" FontWeight="SemiBold" VerticalAlignment="Center" /> <TextBlock Grid.Row="1" Grid.Column="0" Text="Autopilot" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="1" Grid.Column="1" x:Name="deviceIsAutopilotSpecText" Foreground="#323130" FontWeight="SemiBold" VerticalAlignment="Center" /> </Grid> </StackPanel> </ui:Card> </StackPanel> <!-- ─── IDENTITY PANEL ─── --> <StackPanel x:Name="IdentityPanel" Visibility="Collapsed"> <TextBlock Text="Identity" FontSize="20" FontWeight="SemiBold" Foreground="#323130" Margin="0,0,0,16" /> <ui:Card Padding="16"> <StackPanel> <TextBlock Text="DEVICE IDENTITY" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,10" /> <Grid> <Grid.RowDefinitions> <RowDefinition Height="30" /> <RowDefinition Height="30" /> <RowDefinition Height="30" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="130" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="Serial Number" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="0" Grid.Column="1" x:Name="deviceSerialNumberText" FontWeight="SemiBold" Foreground="#0067B8" Cursor="Hand" ToolTip="Click to copy Serial Number" VerticalAlignment="Center" /> <TextBlock Grid.Row="1" Grid.Column="0" Text="UUID" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" /> <TextBlock Grid.Row="1" Grid.Column="1" x:Name="deviceUUIDText" FontWeight="SemiBold" Foreground="#0067B8" Cursor="Hand" ToolTip="Click to copy UUID" VerticalAlignment="Center" /> <TextBlock Grid.Row="2" Grid.Column="0" x:Name="deviceHardwareHashLabelText" Text="Hardware Hash" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" Visibility="Collapsed" /> <TextBlock Grid.Row="2" Grid.Column="1" x:Name="deviceHardwareHashText" FontWeight="SemiBold" Foreground="#0067B8" Cursor="Hand" ToolTip="Click to copy Hardware Hash" VerticalAlignment="Center" Visibility="Collapsed" /> </Grid> </StackPanel> </ui:Card> </StackPanel> <!-- ─── DEPLOYMENT PANEL ─── --> <StackPanel x:Name="DeploymentPanel" Visibility="Collapsed"> <TextBlock Text="Deployment" FontSize="20" FontWeight="SemiBold" Foreground="#323130" Margin="0,0,0,16" /> <ui:Card Padding="16" Margin="0,0,0,12"> <StackPanel> <TextBlock Text="TASK SEQUENCE" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,8" /> <ComboBox x:Name="TaskSequenceCombo" Style="{StaticResource DeploymentComboBoxStyle}" /> </StackPanel> </ui:Card> <ui:Card Padding="16" Margin="0,0,0,12"> <StackPanel> <TextBlock Text="OPERATING SYSTEM" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,10" /> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="110" /> <ColumnDefinition Width="180" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="Version" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" Margin="0,6" /> <ComboBox Grid.Row="0" Grid.Column="1" x:Name="OperatingSystemCombo" Margin="0,4" Style="{StaticResource DeploymentComboBoxStyle}" /> <TextBlock Grid.Row="0" Grid.Column="2" x:Name="SelectedIdText" VerticalAlignment="Center" Foreground="#A19F9D" FontSize="11" Margin="12,4,0,4" TextWrapping="Wrap" /> <TextBlock Grid.Row="1" Grid.Column="0" Text="Language" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" Margin="0,6" /> <ComboBox Grid.Row="1" Grid.Column="1" x:Name="OSLanguageCodeCombo" Margin="0,4" Style="{StaticResource DeploymentComboBoxStyle}" /> <TextBlock Grid.Row="1" Grid.Column="2" x:Name="SelectedOSLanguageText" VerticalAlignment="Center" Foreground="#A19F9D" FontSize="11" Margin="12,4,0,4" /> <TextBlock Grid.Row="2" Grid.Column="0" Text="Edition" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" Margin="0,6" /> <ComboBox Grid.Row="2" Grid.Column="1" x:Name="OSEditionCombo" Margin="0,4" Style="{StaticResource DeploymentComboBoxStyle}" /> <TextBlock Grid.Row="3" Grid.Column="0" Text="Activation" FontWeight="SemiBold" Foreground="#605E5C" VerticalAlignment="Center" Margin="0,6" /> <ComboBox Grid.Row="3" Grid.Column="1" x:Name="OSActivationCombo" Margin="0,4" Style="{StaticResource DeploymentComboBoxStyle}" /> </Grid> <Separator Margin="0,10,0,8" /> <TextBlock Text="SELECTED FILE" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,4" /> <TextBlock x:Name="SelectedFileNameText" Foreground="#605E5C" FontSize="12" TextWrapping="Wrap" /> </StackPanel> </ui:Card> <ui:Card Padding="16"> <StackPanel> <TextBlock Text="DRIVER PACK" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,8" /> <ComboBox x:Name="DriverPackCombo" Margin="0,0,0,8" Style="{StaticResource DeploymentComboBoxStyle}" SelectedIndex="0" /> <TextBlock x:Name="DriverPackUrlText" Foreground="#A19F9D" FontSize="11" TextWrapping="Wrap" /> </StackPanel> </ui:Card> </StackPanel> <!-- ─── STEPS PANEL ─── --> <StackPanel x:Name="StepsPanel" Visibility="Collapsed"> <TextBlock Text="Steps" FontSize="20" FontWeight="SemiBold" Foreground="#323130" Margin="0,0,0,16" /> <Border Background="White" BorderBrush="#EDEBE9" BorderThickness="1" CornerRadius="4" Padding="0"> <DataGrid x:Name="TaskSequenceStepsGrid" AutoGenerateColumns="True" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" ColumnHeaderHeight="24" FontSize="12" IsReadOnly="False" GridLinesVisibility="All" HeadersVisibility="All" AlternatingRowBackground="#F8F9FA" RowBackground="White" RowHeight="24" BorderThickness="0" MinHeight="420" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> <DataGrid.ColumnHeaderStyle> <Style TargetType="DataGridColumnHeader"> <Setter Property="FontSize" Value="12" /> <Setter Property="FontWeight" Value="SemiBold" /> <Setter Property="Padding" Value="4,2" /> <Setter Property="HorizontalContentAlignment" Value="Left" /> <Setter Property="VerticalContentAlignment" Value="Center" /> </Style> </DataGrid.ColumnHeaderStyle> </DataGrid> </Border> </StackPanel> <!-- ─── PRIVACY PANEL ─── --> <StackPanel x:Name="PrivacyPanel" Visibility="Collapsed"> <TextBlock Text="Privacy" FontSize="20" FontWeight="SemiBold" Foreground="#323130" Margin="0,0,0,16" /> <ui:Card Padding="16"> <StackPanel> <TextBlock Text="OSDCLOUD PRIVACY STATEMENT" FontSize="11" FontWeight="SemiBold" Foreground="#A19F9D" Margin="0,0,0,10" /> <TextBlock Foreground="#323130" FontSize="14" TextWrapping="Wrap" LineHeight="20"> <Run Text="OSDCloud collects analytic data during the deployment process to help improve the product and user experience." /> <LineBreak /> <Run Text="No personally identifiable information (PII) is collected, and all data is anonymized to protect user privacy." /> <LineBreak /> <LineBreak /> <Run Text="Collected data includes information about the deployment environment and system configuration." /> <LineBreak /> <Run Text="By using OSDCloud, you consent to the collection of analytic data as outlined in the privacy policy" /> <LineBreak /> <LineBreak /> <Run Text="https://github.com/OSDeploy/OSDCloud/blob/main/PRIVACY.md" /> </TextBlock> </StackPanel> </ui:Card> </StackPanel> </Grid> </ScrollViewer> <!-- ═══ FOOTER ═══ --> <Border Grid.Row="1" Background="#F8F9FA" BorderBrush="#EDEBE9" BorderThickness="0,1,0,0"> <Grid Margin="16,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <ui:Button x:Name="StartButton" Grid.Column="1" Content="Start Deployment" Width="160" Height="36" FontSize="14" FontWeight="SemiBold" IsDefault="True" Appearance="Primary" VerticalAlignment="Center" /> </Grid> </Border> </Grid> </Grid> </Window> |