mirror of
https://github.com/Micke-K/IntuneManagement.git
synced 2026-09-28 19:05:38 +02:00
IntuneManagement 4.0.0-beta1
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
<!-- <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="About" SizeToContent="Height" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" Width="300"> -->
|
||||
<Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Background="{DynamicResource WindowBackgroundColor}"
|
||||
TextElement.Foreground="{DynamicResource TextColor}">
|
||||
<Grid Name="grdAbout">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Height="20" Name="txtTitle" FontWeight="Bold" Margin="0,5,0,0" />
|
||||
|
||||
<TextBlock Grid.Row="1" Text="(c) 2022 Mikael Karlsson - MIT License" Margin="0,5,0,0" />
|
||||
|
||||
<TextBlock Grid.Row="2">
|
||||
See
|
||||
<Hyperlink Name="linkSource" NavigateUri="https://github.com/Micke-K/IntuneManagement">
|
||||
GitHub
|
||||
</Hyperlink> for more information.
|
||||
<LineBreak/>
|
||||
Like the tool?
|
||||
<Hyperlink Name="linkCoffee" NavigateUri="https://buymeacoffee.com/MickeK">
|
||||
Buy me a coffee
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
|
||||
<TextBlock Height="20" Name="txtViewTitle" Grid.Column="1" Margin="10,5,0,0" />
|
||||
|
||||
<TextBlock Name="txtViewDescription" Grid.Row="1" Grid.Column="1" Grid.RowSpan="3" VerticalAlignment="Top" Margin="10,5,0,0" TextWrapping="Wrap" />
|
||||
|
||||
<TextBlock Grid.Row="3" Text="Loaded modules:" Margin="0,5,0,0" />
|
||||
|
||||
<ListBox Name="lstModules" SelectionMode="Single" Grid.Row="4" Grid.ColumnSpan="2" Grid.IsSharedSizeScope='True'>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="NameColumn" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="VersionColumn" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TypeColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Text="{Binding Name}" Grid.Column='0' Margin="0,0,0,0" />
|
||||
<TextBlock Text="{Binding Version}" Grid.Column='1' Margin="10,0,0,0" />
|
||||
<TextBlock Text="{Binding Type}" Grid.Column='2' Margin="10,0,0,0" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
</Grid>
|
||||
</Border>
|
||||
@@ -0,0 +1,126 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope="True">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="0" Margin="0,0,5,0">
|
||||
<Label Content="Action" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Add: union of current and selected. Replace: overwrite all current assignments. Remove: subtract selected from current." />
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column="1" Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" Margin="0,5,0,5">
|
||||
<RadioButton Name="rbBulkAssignAdd" Content="Add" GroupName="BulkAssignAction" IsChecked="True" VerticalAlignment="Center" />
|
||||
<RadioButton Name="rbBulkAssignReplace" Content="Replace" GroupName="BulkAssignAction" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
<RadioButton Name="rbBulkAssignRemove" Content="Remove" GroupName="BulkAssignAction" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="1" Margin="0,0,5,0">
|
||||
<Label Content="Name filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Regex (or literal substring) matched against each policy's Name. Leave empty to target every listed policy." />
|
||||
</StackPanel>
|
||||
<TextBox Grid.Column="1" Grid.Row="1" Name="txtBulkAssignNameFilter" Margin="0,5,0,5"
|
||||
Text="{Binding Filter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="2" Margin="0,0,5,0">
|
||||
<Label Content="List by" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Group: pick whole categories (Configuration, Compliance, ...). API: pick individual policy types. Apps and Health Scripts are supported — configure per-policy fields via the App settings... button." />
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column="1" Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Center" Margin="0,5,0,5">
|
||||
<RadioButton Name="rbBulkAssignViewGroup" Content="Group" GroupName="BulkAssignView" IsChecked="True" VerticalAlignment="Center" />
|
||||
<RadioButton Name="rbBulkAssignViewType" Content="API" GroupName="BulkAssignView" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="2*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Grid.Column="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,0,3">
|
||||
<Label Content="Objects to update" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select the policy types / groups to update" />
|
||||
</StackPanel>
|
||||
<DataGrid Grid.Row="1" Name="dgBulkAssignObjects" CanUserAddRows="False" AutoGenerateColumns="False"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
||||
Background="{DynamicResource ControlBackgroundColor}" />
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,0,3">
|
||||
<Label Content="Assignments to apply" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Targets that will be added / replaced / removed. Double-click a row to open settings." />
|
||||
</StackPanel>
|
||||
<DataGrid Grid.Row="1" Name="dgBulkAssignList" CanUserAddRows="False" AutoGenerateColumns="False"
|
||||
SelectionMode="Single" SelectionUnit="FullRow"
|
||||
Background="{DynamicResource ControlBackgroundColor}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Target type" Binding="{Binding TargetTypeDisplay}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Group" Binding="{Binding GroupName}" IsReadOnly="True" Width="2*" />
|
||||
<!-- Intent only applies when the policy being updated is an
|
||||
app (mobileAppAssignments shape). Shown as a display
|
||||
column here; the Intent picker in the Add dialog
|
||||
drives the value, so this is read-only. -->
|
||||
<DataGridTextColumn Header="Intent" Binding="{Binding Intent}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Filter" Binding="{Binding FilterDisplay}" IsReadOnly="True" Width="1*" />
|
||||
<!-- "Settings" shows the count of per-platform settings tabs
|
||||
currently configured for this row. 0 = Graph defaults.
|
||||
Configure via the "App settings..." button below. -->
|
||||
<DataGridTextColumn Header="App settings" Binding="{Binding SettingsDisplay}" IsReadOnly="True" Width="Auto" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,5,0,0">
|
||||
<Button Name="btnBulkAssignAddGroup" Content="Add group..." MinWidth="120" Margin="0,0,5,0"
|
||||
ToolTip="Pick an AAD group to include or exclude" />
|
||||
<Button Name="btnBulkAssignAddAllDev" Content="All devices" MinWidth="100" Margin="0,0,5,0"
|
||||
ToolTip="Add the All Devices virtual target" />
|
||||
<Button Name="btnBulkAssignAddAllUsers" Content="All users" MinWidth="100" Margin="0,0,5,0"
|
||||
ToolTip="Add the All Users virtual target" />
|
||||
<Button Name="btnBulkAssignSettings" Content="App settings..." MinWidth="120" Margin="0,0,5,0"
|
||||
ToolTip="Configure per-platform app assignment settings for the selected row" />
|
||||
<Button Name="btnBulkAssignRemoveSel" Content="Remove selected" MinWidth="120"
|
||||
ToolTip="Remove the highlighted row from the list above" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="2" Margin="0,5,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Name="txtBulkAssignStatus" VerticalAlignment="Center"
|
||||
Foreground="{DynamicResource TextColor}" Opacity="0.8" />
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button Name="btnBulkAssignApply" Content="Apply" MinWidth="100" Margin="5,0,0,0" />
|
||||
<Button Name="btnBulkAssignClose" Content="Close" MinWidth="100" Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,54 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Margin="5,5,5,5" MinWidth="500" MinHeight="400" Grid.IsSharedSizeScope="True">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="PickerLabel" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Search:" VerticalAlignment="Center" />
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Name="txtGroupSearch" Margin="0,3,5,3" />
|
||||
<Button Grid.Row="0" Grid.Column="2" Name="btnGroupSearch" Content="Search" MinWidth="80" />
|
||||
|
||||
<ListBox Grid.Row="1" Grid.ColumnSpan="3" Name="lstGroupResults" Margin="0,5,0,5"
|
||||
SelectionMode="Single" DisplayMemberPath="displayName"
|
||||
Background="{DynamicResource ControlBackgroundColor}" />
|
||||
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="Direction:" VerticalAlignment="Center" />
|
||||
<StackPanel Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal" VerticalAlignment="Center" Margin="0,5,0,5">
|
||||
<RadioButton Name="rbGroupInclude" Content="Include" GroupName="GroupPickerDir" IsChecked="True" VerticalAlignment="Center" />
|
||||
<RadioButton Name="rbGroupExclude" Content="Exclude" GroupName="GroupPickerDir" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="Filter:" VerticalAlignment="Center" />
|
||||
<ComboBox Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Name="cbGroupFilter" Margin="0,3,0,3"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Id" />
|
||||
|
||||
<Label Grid.Row="4" Grid.Column="0" Content="Filter mode:" VerticalAlignment="Center" />
|
||||
<StackPanel Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" Orientation="Horizontal" VerticalAlignment="Center" Margin="0,5,0,5">
|
||||
<RadioButton Name="rbGroupFilterInclude" Content="Include" GroupName="GroupPickerFilterDir" IsChecked="True" VerticalAlignment="Center" />
|
||||
<RadioButton Name="rbGroupFilterExclude" Content="Exclude" GroupName="GroupPickerFilterDir" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
|
||||
<!-- Intent only applies to app (mobileAppAssignments) targets. For non-
|
||||
app types the public command ignores this value, so the picker still
|
||||
shows it but with a tooltip explaining the scope. -->
|
||||
<Label Grid.Row="5" Grid.Column="0" Content="App intent:" VerticalAlignment="Center" ToolTip="Only applies when the target policy is an app (mobile app assignment). Ignored for Device Configuration, Compliance, scripts, etc." />
|
||||
<ComboBox Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="2" Name="cbGroupIntent" Margin="0,3,0,3"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value"
|
||||
ToolTip="Required = auto-install. Available = visible in Company Portal. Uninstall = auto-remove. Available without enrollment = web/CP without MDM enrollment. Not available = hidden." />
|
||||
|
||||
<StackPanel Grid.Row="6" Grid.ColumnSpan="3" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
|
||||
<Button Name="btnGroupPickerOK" Content="Add" MinWidth="100" Margin="0,0,5,0" />
|
||||
<Button Name="btnGroupPickerCancel" Content="Cancel" MinWidth="100" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
@@ -0,0 +1,363 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Margin="5,5,5,5" MinWidth="640" MinHeight="500" Grid.IsSharedSizeScope="True">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="0" Margin="0,0,0,6" TextWrapping="Wrap" Foreground="{DynamicResource TextColor}">
|
||||
Per-platform app assignment settings. Tick "Apply these settings" on a tab to include it in
|
||||
the POST for matching apps; leave it unticked to let Graph defaults stand.
|
||||
</TextBlock>
|
||||
|
||||
<TabControl Grid.Row="1" Name="tcBulkAssignSettings" Background="{DynamicResource ControlBackgroundColor}">
|
||||
|
||||
<!-- ======================== iOS LOB ======================== -->
|
||||
<TabItem Header="iOS LOB" Name="tabIosLob">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyIosLob" Content="Apply these settings to iOS LOB apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyIosLob, Path=IsChecked}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Is removable:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkIosLob_IsRemovable" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Prevent backup:" />
|
||||
<CheckBox Grid.Row="1" Grid.Column="1" Name="chkIosLob_PreventBackup" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="Uninstall on removal:" />
|
||||
<CheckBox Grid.Row="2" Grid.Column="1" Name="chkIosLob_Uninstall" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="VPN config id:" />
|
||||
<TextBox Grid.Row="3" Grid.Column="1" Name="txtIosLob_VpnId" Margin="0,5,0,5" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== iOS Store ======================== -->
|
||||
<TabItem Header="iOS Store" Name="tabIosStore">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyIosStore" Content="Apply these settings to iOS Store apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyIosStore, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Is removable:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkIosStore_IsRemovable" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Prevent backup:" />
|
||||
<CheckBox Grid.Row="1" Grid.Column="1" Name="chkIosStore_PreventBackup" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="Uninstall on removal:" />
|
||||
<CheckBox Grid.Row="2" Grid.Column="1" Name="chkIosStore_Uninstall" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="VPN config id:" />
|
||||
<TextBox Grid.Row="3" Grid.Column="1" Name="txtIosStore_VpnId" Margin="0,5,0,5" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== iOS VPP ======================== -->
|
||||
<TabItem Header="iOS VPP" Name="tabIosVpp">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyIosVpp" Content="Apply these settings to iOS VPP apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyIosVpp, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Use device licensing:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkIosVpp_DeviceLicensing" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Is removable:" />
|
||||
<CheckBox Grid.Row="1" Grid.Column="1" Name="chkIosVpp_IsRemovable" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="Prevent backup:" />
|
||||
<CheckBox Grid.Row="2" Grid.Column="1" Name="chkIosVpp_PreventBackup" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="Prevent auto-update:" />
|
||||
<CheckBox Grid.Row="3" Grid.Column="1" Name="chkIosVpp_PreventAutoUpdate" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="4" Grid.Column="0" Content="Uninstall on removal:" />
|
||||
<CheckBox Grid.Row="4" Grid.Column="1" Name="chkIosVpp_Uninstall" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="5" Grid.Column="0" Content="VPN config id:" />
|
||||
<TextBox Grid.Row="5" Grid.Column="1" Name="txtIosVpp_VpnId" Margin="0,5,0,5" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== iOS DDM LOB ======================== -->
|
||||
<TabItem Header="iOS DDM" Name="tabIosDdm">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyIosDdm" Content="Apply these settings to iOS DDM LOB apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyIosDdm, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Associated domains:" />
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Name="txtIosDdm_Domains" Margin="0,5,0,5" Height="50" AcceptsReturn="True" TextWrapping="Wrap"
|
||||
ToolTip="One domain per line." />
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Direct download:" />
|
||||
<CheckBox Grid.Row="1" Grid.Column="1" Name="chkIosDdm_DirectDownload" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="Prevent backup:" />
|
||||
<CheckBox Grid.Row="2" Grid.Column="1" Name="chkIosDdm_PreventBackup" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="Tap-to-pay screen lock:" />
|
||||
<CheckBox Grid.Row="3" Grid.Column="1" Name="chkIosDdm_TapToPay" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="4" Grid.Column="0" Content="VPN config id:" />
|
||||
<TextBox Grid.Row="4" Grid.Column="1" Name="txtIosDdm_VpnId" Margin="0,5,0,5" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== Android Managed Store ======================== -->
|
||||
<TabItem Header="Android Store" Name="tabAndroidStore">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyAndroidStore" Content="Apply these settings to Android Managed Store apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyAndroidStore, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Auto-update mode:" />
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" Name="cbAndroidStore_AutoUpdate" Margin="0,5,0,5" Width="200" HorizontalAlignment="Left" />
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Track IDs:" />
|
||||
<TextBox Grid.Row="1" Grid.Column="1" Name="txtAndroidStore_Tracks" Margin="0,5,0,5" Height="50" AcceptsReturn="True" TextWrapping="Wrap"
|
||||
ToolTip="One track id per line. Leave empty for default production track." />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== macOS LOB ======================== -->
|
||||
<TabItem Header="macOS LOB" Name="tabMacLob">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyMacLob" Content="Apply these settings to macOS LOB apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyMacLob, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Uninstall on removal:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkMacLob_Uninstall" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== macOS VPP ======================== -->
|
||||
<TabItem Header="macOS VPP" Name="tabMacVpp">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyMacVpp" Content="Apply these settings to macOS VPP apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyMacVpp, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Use device licensing:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkMacVpp_DeviceLicensing" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Prevent backup:" />
|
||||
<CheckBox Grid.Row="1" Grid.Column="1" Name="chkMacVpp_PreventBackup" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="Prevent auto-update:" />
|
||||
<CheckBox Grid.Row="2" Grid.Column="1" Name="chkMacVpp_PreventAutoUpdate" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="Uninstall on removal:" />
|
||||
<CheckBox Grid.Row="3" Grid.Column="1" Name="chkMacVpp_Uninstall" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== Microsoft Store for Business ======================== -->
|
||||
<TabItem Header="MS Store" Name="tabMsStore">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyMsStore" Content="Apply these settings to Microsoft Store for Business apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyMsStore, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Device context:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkMsStore_DeviceContext" VerticalAlignment="Center" Margin="0,5,0,5"
|
||||
ToolTip="True = install in device context (all users on device). False = per-user." />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== Windows AppX ======================== -->
|
||||
<TabItem Header="Windows AppX" Name="tabWinAppx">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyWinAppx" Content="Apply these settings to Windows AppX apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyWinAppx, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Device context:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkWinAppx_DeviceContext" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== Windows Universal AppX ======================== -->
|
||||
<TabItem Header="Windows UAP" Name="tabWinUap">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyWinUap" Content="Apply these settings to Windows Universal AppX apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyWinUap, Path=IsChecked}">
|
||||
<Grid.RowDefinitions><RowDefinition Height="Auto"/></Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Device context:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkWinUap_DeviceContext" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== Win32 LOB (also covers Win32 Catalog) ======================== -->
|
||||
<TabItem Header="Win32 LOB" Name="tabWin32">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyWin32" Content="Apply these settings to Win32 LOB / Win32 Catalog apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyWin32, Path=IsChecked}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Delivery optimization:" />
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" Name="cbWin32_DeliveryOpt" Margin="0,5,0,5" Width="200" HorizontalAlignment="Left" />
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Notifications:" />
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="cbWin32_Notifications" Margin="0,5,0,5" Width="200" HorizontalAlignment="Left" />
|
||||
|
||||
<TextBlock Grid.Row="2" Grid.ColumnSpan="2" Text="Auto-update settings" FontWeight="SemiBold" Margin="0,8,0,4" />
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="Superseded apps:" />
|
||||
<ComboBox Grid.Row="3" Grid.Column="1" Name="cbWin32_Superseded" Margin="0,5,0,5" Width="200" HorizontalAlignment="Left" />
|
||||
|
||||
<TextBlock Grid.Row="4" Grid.ColumnSpan="2" Text="Install time settings" FontWeight="SemiBold" Margin="0,8,0,4" />
|
||||
<Label Grid.Row="5" Grid.Column="0" Content="Use local time:" />
|
||||
<CheckBox Grid.Row="5" Grid.Column="1" Name="chkWin32_UseLocalTime" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="6" Grid.Column="0" Content="Start (ISO):" />
|
||||
<TextBox Grid.Row="6" Grid.Column="1" Name="txtWin32_StartTime" Margin="0,5,0,5"
|
||||
ToolTip="ISO8601 datetime, e.g. 2026-06-01T10:00:00Z. Leave empty for no start time." />
|
||||
<Label Grid.Row="7" Grid.Column="0" Content="Deadline (ISO):" />
|
||||
<TextBox Grid.Row="7" Grid.Column="1" Name="txtWin32_DeadlineTime" Margin="0,5,0,5" />
|
||||
|
||||
<TextBlock Grid.Row="8" Grid.ColumnSpan="2" Text="Restart settings (Required intent only)" FontWeight="SemiBold" Margin="0,8,0,4" />
|
||||
<Label Grid.Row="9" Grid.Column="0" Content="Grace period (min):" />
|
||||
<TextBox Grid.Row="9" Grid.Column="1" Name="txtWin32_GracePeriod" Margin="0,5,0,5" Width="120" HorizontalAlignment="Left" />
|
||||
<Label Grid.Row="10" Grid.Column="0" Content="Countdown (min):" />
|
||||
<TextBox Grid.Row="10" Grid.Column="1" Name="txtWin32_Countdown" Margin="0,5,0,5" Width="120" HorizontalAlignment="Left" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== winGet ======================== -->
|
||||
<TabItem Header="winGet" Name="tabWinGet">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyWinGet" Content="Apply these settings to winGet apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyWinGet, Path=IsChecked}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Notifications:" />
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" Name="cbWinGet_Notifications" Margin="0,5,0,5" Width="200" HorizontalAlignment="Left" />
|
||||
|
||||
<TextBlock Grid.Row="1" Grid.ColumnSpan="2" Text="Install time settings (deadline required when enabled)" FontWeight="SemiBold" Margin="0,8,0,4" />
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="Use local time:" />
|
||||
<CheckBox Grid.Row="2" Grid.Column="1" Name="chkWinGet_UseLocalTime" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="Deadline (ISO):" />
|
||||
<TextBox Grid.Row="3" Grid.Column="1" Name="txtWinGet_DeadlineTime" Margin="0,5,0,5" />
|
||||
|
||||
<TextBlock Grid.Row="4" Grid.ColumnSpan="2" Text="Restart settings (Required intent only)" FontWeight="SemiBold" Margin="0,8,0,4" />
|
||||
<Label Grid.Row="5" Grid.Column="0" Content="Grace period (min):" />
|
||||
<TextBox Grid.Row="5" Grid.Column="1" Name="txtWinGet_GracePeriod" Margin="0,5,0,5" Width="120" HorizontalAlignment="Left" />
|
||||
<Label Grid.Row="6" Grid.Column="0" Content="Countdown (min):" />
|
||||
<TextBox Grid.Row="6" Grid.Column="1" Name="txtWinGet_Countdown" Margin="0,5,0,5" Width="120" HorizontalAlignment="Left" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== Health Script (Proactive Remediations) ======================== -->
|
||||
<TabItem Header="Health Script" Name="tabHealthScript">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyHealthScript" Content="Apply these settings to Health Script (Proactive Remediation) assignments" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyHealthScript, Path=IsChecked}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Run remediation:" />
|
||||
<CheckBox Grid.Row="0" Grid.Column="1" Name="chkScript_RunRemediation" VerticalAlignment="Center" Margin="0,5,0,5"
|
||||
ToolTip="True = run the remediation script when detection finds an issue. False = detection only." />
|
||||
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Schedule type:" />
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="cbScript_ScheduleType" Margin="0,5,0,5" Width="200" HorizontalAlignment="Left" />
|
||||
|
||||
<Label Grid.Row="2" Grid.Column="0" Content="Interval:" />
|
||||
<StackPanel Grid.Row="2" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<TextBox Name="txtScript_Interval" Margin="0,5,5,5" Width="80"
|
||||
ToolTip="Hourly: every N hours. Daily: every N days. Once: ignored." />
|
||||
<TextBlock Text="(hours / days / once)" VerticalAlignment="Center" Foreground="{DynamicResource TextColor}" Opacity="0.6" />
|
||||
</StackPanel>
|
||||
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="Time (HH:MM):" />
|
||||
<TextBox Grid.Row="3" Grid.Column="1" Name="txtScript_Time" Margin="0,5,0,5" Width="100" HorizontalAlignment="Left"
|
||||
ToolTip="24-hour HH:MM. Ignored when schedule type is Hourly." />
|
||||
|
||||
<Label Grid.Row="4" Grid.Column="0" Content="Use UTC:" />
|
||||
<CheckBox Grid.Row="4" Grid.Column="1" Name="chkScript_UseUtc" VerticalAlignment="Center" Margin="0,5,0,5"
|
||||
ToolTip="Off = device local time. Ignored when schedule type is Hourly." />
|
||||
|
||||
<Label Grid.Row="5" Grid.Column="0" Content="Date (YYYY-MM-DD):" />
|
||||
<TextBox Grid.Row="5" Grid.Column="1" Name="txtScript_Date" Margin="0,5,0,5" Width="150" HorizontalAlignment="Left"
|
||||
ToolTip="Required for Once schedule type. Ignored otherwise." />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
||||
<!-- ======================== Windows AutoUpdate Catalog ======================== -->
|
||||
<TabItem Header="Win AutoUpdate" Name="tabWinAutoUpdate">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<StackPanel Margin="8">
|
||||
<CheckBox Name="chkApplyWinAutoUpdate" Content="Apply these settings to Windows AutoUpdate Catalog apps" FontWeight="SemiBold" Margin="0,0,0,8" />
|
||||
<Grid IsEnabled="{Binding ElementName=chkApplyWinAutoUpdate, Path=IsChecked}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/><RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions><ColumnDefinition Width="Auto" SharedSizeGroup="SettingsLabel"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
|
||||
<Label Grid.Row="0" Grid.Column="0" Content="Delivery optimization:" />
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" Name="cbWinAutoUpdate_DeliveryOpt" Margin="0,5,0,5" Width="200" HorizontalAlignment="Left" />
|
||||
<Label Grid.Row="1" Grid.Column="0" Content="Notification type:" />
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="cbWinAutoUpdate_Notifications" Margin="0,5,0,5" Width="200" HorizontalAlignment="Left" />
|
||||
|
||||
<TextBlock Grid.Row="2" Grid.ColumnSpan="2" Text="Install time settings" FontWeight="SemiBold" Margin="0,8,0,4" />
|
||||
<Label Grid.Row="3" Grid.Column="0" Content="Use local time:" />
|
||||
<CheckBox Grid.Row="3" Grid.Column="1" Name="chkWinAutoUpdate_UseLocalTime" VerticalAlignment="Center" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="4" Grid.Column="0" Content="Start (ISO):" />
|
||||
<TextBox Grid.Row="4" Grid.Column="1" Name="txtWinAutoUpdate_StartTime" Margin="0,5,0,5" />
|
||||
<Label Grid.Row="5" Grid.Column="0" Content="Deadline (ISO):" />
|
||||
<TextBox Grid.Row="5" Grid.Column="1" Name="txtWinAutoUpdate_DeadlineTime" Margin="0,5,0,5" />
|
||||
|
||||
<TextBlock Grid.Row="6" Grid.ColumnSpan="2" Text="Restart settings (Required intent only)" FontWeight="SemiBold" Margin="0,8,0,4" />
|
||||
<Label Grid.Row="7" Grid.Column="0" Content="Grace period (min):" />
|
||||
<TextBox Grid.Row="7" Grid.Column="1" Name="txtWinAutoUpdate_GracePeriod" Margin="0,5,0,5" Width="120" HorizontalAlignment="Left" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
|
||||
<Button Name="btnBulkAssignSettingsOK" Content="OK" MinWidth="100" Margin="0,0,5,0" />
|
||||
<Button Name="btnBulkAssignSettingsCancel" Content="Cancel" MinWidth="100" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
@@ -0,0 +1,135 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope='True'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Name="grdImportProperties">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0">
|
||||
<Label Content="Compare object" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the objects to compare e.g. compare exported files with existing objects or two existing objects based on name" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareProvider" Margin="0,5,0,0" MinWidth="250" Grid.Row='1' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
</Grid>
|
||||
|
||||
<ContentControl Name="ccContentProviderOptions" Grid.Row="1" Grid.ColumnSpan="2" />
|
||||
|
||||
<Grid Grid.Row='2' VerticalAlignment="Stretch" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" Grid.Row='0'>
|
||||
<Label Content="Save as" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specifies how the export csv should be saved. One file per ObjectType or one file for all objects." />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareSave" Margin="0,5,0,0" MinWidth="250" Grid.Row='0' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" Grid.Row='1' >
|
||||
<Label Content="Output format" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the output file format for compare results" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareOutputFormat" Margin="0,5,0,0" MinWidth="250" Grid.Row='1' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" Grid.Row='2' >
|
||||
<Label Content="Comparison Type" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify how objects should be compared" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareType" Margin="0,5,0,0" MinWidth="250" Grid.Row='2' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" Grid.Row='3' >
|
||||
<Label Content="CSV Delimiter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the character to use for separating properties in the CSV file" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareCSVDelimiter" Margin="0,5,0,0" MinWidth="250" Grid.Row='3' Grid.Column="1" HorizontalAlignment="Left" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" Grid.Row='4' >
|
||||
<Label Content="Multi-Value Delimiter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the character to use for separating values for properties with more than one value. New line will cause a new line in the exported CSV" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareMultiValueDelimiter" Margin="0,5,0,0" MinWidth="250" Grid.Row='4' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row='5' >
|
||||
<Label Content="Ignore core properties" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Skip mismatch coloring for displayName, description, id, createdDateTime, lastModifiedDateTime and version. These will almost always differ between two objects." />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkIgnoreCoreProperties" Grid.Row='5' Grid.Column="1" VerticalAlignment="Center" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row='6' >
|
||||
<Label Content="Skip Assignments" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Skip comparing assignments." />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkSkipCompareAssignments" Grid.Row='6' Grid.Column="1" VerticalAlignment="Center" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row='7' >
|
||||
<Label Content="Skip Missing Source Policies" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Skip policies that only exist on the compare side (e.g. in Intune but never exported)." />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkSkipMissingSourcePolicies" Grid.Row='7' Grid.Column="1" VerticalAlignment="Center" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row='8' >
|
||||
<Label Content="Skip Missing Destination Policies" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Skip policies whose counterpart is missing (e.g. exported file with no matching object in Intune)." />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkSkipMissingDestinationPolicies" Grid.Row='8' Grid.Column="1" VerticalAlignment="Center" />
|
||||
|
||||
<Grid Name="grdObjectsToCompareSection" Margin="0,0,5,0" Grid.Row='9' Grid.ColumnSpan="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="0">
|
||||
<Label Content="Objects to compare" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select the object types that should be compared" />
|
||||
</StackPanel>
|
||||
<DataGrid Name="dgObjectsToCompare" Margin="0,5,0,5" Grid.Row='1' Grid.Column='1' CanUserAddRows="False" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource ControlBackgroundColor}" />
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row='3' Grid.ColumnSpan='2' >
|
||||
<Button Name="btnStartCompare" Content="Compare" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid >
|
||||
@@ -0,0 +1,40 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope='True'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='0' Margin="0,0,5,0" >
|
||||
<Label Content="Source object name pattern" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the pattern of the source objects e.g. Test -" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtCopyFromPattern" Grid.Column='1' Grid.Row='0' Margin="0,5,0,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0" >
|
||||
<Label Content="Copy object name pattern" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the pattern of the new object e.g. Prod -" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtCopyToPattern" Grid.Column='1' Grid.Row='1' Margin="0,5,0,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="5,0,5,0" VerticalAlignment="Top" Grid.ColumnSpan="2">
|
||||
<Label Content="Objects to copy" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select the object types that should be copied" Margin="0,2,0,0" />
|
||||
</StackPanel>
|
||||
|
||||
<DataGrid Name="dgBulkCopyObjects" Grid.Row='3' Grid.ColumnSpan="2" CanUserAddRows="False" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource ControlBackgroundColor}" Margin="0,0,0,5">
|
||||
</DataGrid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row='4' Grid.ColumnSpan='2' >
|
||||
<Button Name="btnStartCopy" Content="Copy" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid >
|
||||
@@ -0,0 +1,33 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope='True'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='0' Margin="0,0,5,0" >
|
||||
<Label Content="Name filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify name filter for the objects to delete" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtDeleteNameFilter" Grid.Column='1' Grid.Row='0' Margin="0,5,0,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="5,0,5,0" VerticalAlignment="Top" Grid.ColumnSpan="2">
|
||||
<Label Content="Objects to delete" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="All objects of the selected types will be deleted" Margin="0,2,0,0" />
|
||||
</StackPanel>
|
||||
|
||||
<DataGrid Name="dgBulkDeleteObjects" Grid.Row='2' Grid.ColumnSpan="2" CanUserAddRows="False" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource ControlBackgroundColor}" Margin="0,0,0,5">
|
||||
</DataGrid>
|
||||
|
||||
<StackPanel Name="spDeleteSubMenu" Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row='3' Grid.ColumnSpan='2' >
|
||||
<Button Name="btnDelete" Content="Delete" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid >
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,143 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope='True'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Name="grdExportProperties">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" >
|
||||
<Label Content="Export root" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="The root folder where exported files will be stored" />
|
||||
</StackPanel>
|
||||
|
||||
<Grid Grid.Column='1' Grid.Row='0'>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="{Binding ExportFolder, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtExportPath" />
|
||||
<Button Grid.Column="2" Name="browseExportPath" Padding="5,0,5,0" Width="50" ToolTip="Browse for folder">...</Button>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0" >
|
||||
<Label Content="Name filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify name filter for the objects to export" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding Filter, Mode=TwoWay}" Name="txtExportNameFilter" Grid.Column='1' Grid.Row='1' Margin="0,5,0,0" />
|
||||
|
||||
<!-- Force object type in name by setting it to true and disable the checkbox. Leave it on for information -->
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0">
|
||||
<Label Content="Add object name to path" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This will export all objects to a sub-directory of the export path with name based on object type" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='2' Name='chkAddObjectType' VerticalAlignment="Center" IsEnabled="false" IsChecked="true" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,0,5,0">
|
||||
<Label Content="Export Assignments" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Export object assignments" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='3' Name='chkExportAssignments' VerticalAlignment="Center" IsChecked="{Binding ExportAssignments, Mode=TwoWay}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='4' Margin="0,0,5,0">
|
||||
<Label Content="Add company name to path" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This will add the company name in Azure to the export path" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='4' Name='chkAddCompanyName' VerticalAlignment="Center" IsChecked="{Binding AddCompanyName}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='5' Margin="0,0,5,0">
|
||||
<Label Content="Export nested group levels" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Depth of group-membership recursion. 1 (default) exports only the group directly assigned to the policy. 2 also exports groups that are direct members of the assigned group. Higher values mean more Graph calls and may hit throttling on large group trees." />
|
||||
</StackPanel>
|
||||
<TextBox Grid.Column='1' Grid.Row='5' Name='txtNestedGroupLevels' Width='60' HorizontalAlignment="Left" VerticalAlignment="Center"
|
||||
Text="{Binding ExportNestedGroupLevels, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='6' Margin="0,0,5,0">
|
||||
<Label Content="List by" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Group: pick whole categories (Configuration, Compliance, ...). API: pick individual policy types." />
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column='1' Grid.Row='6' Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<RadioButton Name='rbBulkExportViewGroup' Content="Group" GroupName="BulkExportView" IsChecked="True" VerticalAlignment="Center" />
|
||||
<RadioButton Name='rbBulkExportViewType' Content="API" GroupName="BulkExportView" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row='1' VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Margin="0,0,5,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Label Content="Objects to export" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select the object types that should be exported" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<DataGrid Name="dgObjectsToExport" Grid.Column='1' CanUserAddRows="False" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource ControlBackgroundColor}" Margin="0,0,0,5" />
|
||||
|
||||
<!--
|
||||
<ListBox Name="lstObjectsToExport" Grid.Column='1'
|
||||
SelectionMode="Single"
|
||||
Grid.IsSharedSizeScope='True' >
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="SelectedColumn" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="FileNameColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<CheckBox IsChecked="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<TextBlock Text="{Binding Title}" Grid.Column='1' Margin="5,0,0,0" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
|
||||
<CheckBox IsChecked="true" Margin="7,2,0,0" Grid.Column='1' Grid.Row='1' Name="chkCheckAll" ToolTip="Select/Deselect all" />
|
||||
-->
|
||||
</Grid >
|
||||
|
||||
<Grid Grid.Row='2' Grid.ColumnSpan='2' >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" >
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Name="spExportSubMenu" Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" >
|
||||
<Button Name="btnExport" Content="Export" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid >
|
||||
|
||||
</Grid >
|
||||
@@ -0,0 +1,136 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope='True'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Name="grdImportProperties">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" >
|
||||
<Label Content="Import root" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="The root folder where exported files are stored" />
|
||||
</StackPanel>
|
||||
<Grid Grid.Column='1' Grid.Row='0'>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="" Name="txtImportPath" />
|
||||
<Button Grid.Column="2" Name="browseImportPath" Padding="5,0,5,0" Width="50" ToolTip="Browse for folder">...</Button>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0" >
|
||||
<Label Content="Name filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify name filter for the objects to import" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtImportNameFilter" Grid.Column='1' Grid.Row='1' Margin="0,5,0,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0" Name="spMigrationTableInfo">
|
||||
<Label Content="Migration Table" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This contains information about the exported environment e.g. Groups, ScopeTags etc. Note: This is only used when importing objects from a different tenant" />
|
||||
</StackPanel>
|
||||
<Label Grid.Column='1' Grid.Row='2' Name="lblMigrationTableInfo" />
|
||||
|
||||
<!-- Force object type in name by setting it to true and disable the checkbox. Leave it on for information -->
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,0,5,0">
|
||||
<Label Content="Add object name to path" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This will import objects from a sub-directory of the import path with name based on object type" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='3' Name='chkAddObjectType' VerticalAlignment="Center" IsEnabled="false" IsChecked="true" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='4' Margin="0,0,5,0">
|
||||
<Label Content="Assign Scope (Tags)" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This will import ScopeTags. The ScopeTags must exist in the target environment before they can be assigned during import of an object" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='4' Name='chkImportScopes' VerticalAlignment="Center" IsChecked="true" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='5' Margin="0,0,5,0">
|
||||
<Label Content="Import Assignments" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Import object assignments. Note: This will create groups that don't exist in the target environment" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='5' Name='chkImportAssignments' VerticalAlignment="Center" IsChecked="true" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='6' Margin="0,0,5,0">
|
||||
<Label Content="Replace Dependency IDs" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Replaces IDs of dependency objects e.g. App Config references Applications. Increases import time but makes sure objects are imported correctly. Note: Referenced objects must exist!" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='6' Name='chkReplaceDependencyIDs' VerticalAlignment="Center" IsChecked="true" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='7' Margin="0,0,5,0" Name="lblImportType" Visibility="Collapsed">
|
||||
<Label Content="Import Type" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}">
|
||||
<Rectangle.ToolTip>
|
||||
<TextBlock>
|
||||
Specify how files are imported<LineBreak />
|
||||
<Bold>Always import</Bold>: Always try to import the object. No detction of existing objects (Default)<LineBreak />
|
||||
<Bold>Skip if object exists</Bold>: Skip import if there is an existing object with the same name and type<LineBreak />
|
||||
<Bold>Replace</Bold>: If an object is detected, it will be deleted. The assignments will be copied to the new imported object<LineBreak />
|
||||
<Bold>Replace with assignments</Bold>: If an object is detected, it will be deleted. The assignments will be copied from the imported file<LineBreak />
|
||||
<Bold>Update</Bold>: If an object is detected, settings will be replaced from the import file
|
||||
</TextBlock>
|
||||
</Rectangle.ToolTip>
|
||||
</Rectangle>
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbImportType" Margin="0,5,0,0" MinWidth="250" Grid.Row='7' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" Visibility="Collapsed" />
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row='1' VerticalAlignment="Stretch" Margin="0,5,0,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Margin="0,0,5,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Label Content="Objects to import" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select the object types that should be imported" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<DataGrid Name="dgObjectsToImport" Grid.Column='1' CanUserAddRows="False" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource ControlBackgroundColor}" Margin="0,0,0,5" />
|
||||
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row='2' Grid.ColumnSpan='2' >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" >
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Name="spImportSubMenu" Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Right" >
|
||||
<Button Name="btnImport" Content="Import" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
</Grid >
|
||||
@@ -0,0 +1,125 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope="True">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="0" Margin="0,0,5,0">
|
||||
<Label Content="Action" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Add: union of current and selected. Replace: overwrite. Remove: subtract selected from current." />
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column="1" Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" Margin="0,5,0,5">
|
||||
<RadioButton Name="rbBulkScopeTagAdd" Content="Add" GroupName="BulkScopeTagAction" IsChecked="True" VerticalAlignment="Center" />
|
||||
<RadioButton Name="rbBulkScopeTagReplace" Content="Replace" GroupName="BulkScopeTagAction" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
<RadioButton Name="rbBulkScopeTagRemove" Content="Remove" GroupName="BulkScopeTagAction" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="1" Margin="0,0,5,0">
|
||||
<Label Content="Cleanup orphans" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="In addition to the chosen action, strip any tag ids from each policy that no longer resolve to a real scope tag in the tenant. Can also be used standalone (Add with no tags selected)." />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column="1" Grid.Row="1" Name="chkBulkScopeTagCleanupOrphans" VerticalAlignment="Center" Margin="0,5,0,5"
|
||||
IsChecked="{Binding CleanupOrphans, Mode=TwoWay}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="2" Margin="0,0,5,0">
|
||||
<Label Content="Name filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Regex (or literal substring) matched against each policy's Name. Leave empty to target every listed policy." />
|
||||
</StackPanel>
|
||||
<TextBox Grid.Column="1" Grid.Row="2" Name="txtBulkScopeTagNameFilter" Margin="0,5,0,5"
|
||||
Text="{Binding Filter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="3" Margin="0,0,5,0">
|
||||
<Label Content="List by" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Group: pick whole categories (Configuration, Compliance, ...). API: pick individual policy types." />
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column="1" Grid.Row="3" Orientation="Horizontal" VerticalAlignment="Center" Margin="0,5,0,5">
|
||||
<RadioButton Name="rbBulkScopeTagViewGroup" Content="Group" GroupName="BulkScopeTagView" IsChecked="True" VerticalAlignment="Center" />
|
||||
<RadioButton Name="rbBulkScopeTagViewType" Content="API" GroupName="BulkScopeTagView" Margin="15,0,0,0" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Grid.Column="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,0,3">
|
||||
<Label Content="Objects to update" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select the policy types / groups that should be updated" />
|
||||
</StackPanel>
|
||||
<DataGrid Grid.Row="1" Name="dgBulkScopeTagObjects" CanUserAddRows="False" AutoGenerateColumns="False"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
||||
Background="{DynamicResource ControlBackgroundColor}" />
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Column="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,0,3">
|
||||
<Label Content="Available scope tags" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Double-click to add to the Selected list" />
|
||||
</StackPanel>
|
||||
<ListBox Grid.Row="1" Name="lstBulkScopeTagAvailable" DisplayMemberPath="Name" SelectionMode="Extended"
|
||||
Background="{DynamicResource ControlBackgroundColor}" />
|
||||
<Grid Grid.Row="2" Margin="0,3,0,3">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Label Content="Selected scope tags" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Tags to use with the chosen action. Double-click a row to remove it." />
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||||
<Button Name="btnBulkScopeTagAddTag" Content="Add ↓" MinWidth="80" Margin="0,0,5,0"
|
||||
ToolTip="Move the highlighted available tags to the Selected list" />
|
||||
<Button Name="btnBulkScopeTagRemoveTag" Content="Remove ↑" MinWidth="80"
|
||||
ToolTip="Move the highlighted selected tags back to the Available list" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<ListBox Grid.Row="3" Name="lstBulkScopeTagSelected" DisplayMemberPath="Name" SelectionMode="Extended"
|
||||
Background="{DynamicResource ControlBackgroundColor}" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="2" Margin="0,5,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Name="txtBulkScopeTagStatus" VerticalAlignment="Center"
|
||||
Foreground="{DynamicResource TextColor}" Opacity="0.8" />
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button Name="btnBulkScopeTagApply" Content="Apply" MinWidth="100" Margin="5,0,0,0" />
|
||||
<Button Name="btnBulkScopeTagClose" Content="Close" MinWidth="100" Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,78 @@
|
||||
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="4*" MinHeight="300" />
|
||||
<RowDefinition Height="3" />
|
||||
<RowDefinition Height="1*" MinHeight="100" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Grid.Row="0" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1"
|
||||
Background="{DynamicResource PanelBackgroundColor}" Padding="8" Margin="0,0,0,5">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Grid.Column="0" Orientation="Horizontal">
|
||||
<TextBlock Text="Entries: " FontWeight="Bold" Margin="0,0,2,0" />
|
||||
<TextBlock Name="txtCacheEntries" Text="0" Margin="0,0,16,0" />
|
||||
<TextBlock Text="Hits: " FontWeight="Bold" Margin="0,0,2,0" />
|
||||
<TextBlock Name="txtCacheHits" Text="0" Margin="0,0,16,0" />
|
||||
<TextBlock Text="Misses: " FontWeight="Bold" Margin="0,0,2,0" />
|
||||
<TextBlock Name="txtCacheMisses" Text="0" Margin="0,0,16,0" />
|
||||
<TextBlock Text="Total size: " FontWeight="Bold" Margin="0,0,2,0" />
|
||||
<TextBlock Name="txtCacheBytes" Text="0 B" Margin="0,0,16,0"
|
||||
ToolTip="Approximate in-memory size of all cached values (UTF-8 JSON serialization, compressed)." />
|
||||
</StackPanel>
|
||||
|
||||
<Button Grid.Column="1" Name="btnRefreshCachedObjects" Content="Refresh"
|
||||
Padding="8,2" Margin="5,0,0,0" VerticalAlignment="Center"
|
||||
ToolTip="Recompute cache totals and reload the list" />
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<DataGrid Grid.Row="1" Name="dgCachedObjects"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Name" Binding="{Binding Name}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Tags" Binding="{Binding TagsText}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Size" Binding="{Binding SizeText}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Persistent" Binding="{Binding Persistent}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="TimeOut" Binding="{Binding TimeOut, StringFormat={}{0:HH:mm.ss.fff}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTemplateColumn Header="Value">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding Path=Value}" TextWrapping="NoWrap" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<GridSplitter Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
|
||||
|
||||
<Grid Grid.Row="3" DataContext="{Binding Path=SelectedItem, ElementName=dgCachedObjects}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Text="Name" Grid.Row="0" Grid.Column="0" />
|
||||
<TextBlock Text="{Binding Path=Name}" Grid.Row="0" Grid.Column="2" />
|
||||
<Button Name="btnClearCachedObject" Content="Clear" Grid.Row="0" Grid.Column="3" Margin="0,5,5,5" Width="100" ToolTip="Clear the selected object from cache" />
|
||||
|
||||
<TextBox Grid.Row="1" Grid.ColumnSpan="99" HorizontalAlignment="Stretch" Name="txtCacheObjectInfo" IsReadOnly="True" AcceptsReturn="true" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,50 @@
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Choose Cloud"
|
||||
SizeToContent="WidthAndHeight"
|
||||
ResizeMode="NoResize"
|
||||
ShowInTaskbar="False"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
FocusManager.FocusedElement="{Binding ElementName=cbCloud}">
|
||||
|
||||
<Window.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="UI\WPF\Themes\Light.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid Width="380" HorizontalAlignment="Stretch" Name="grdModalContainer" VerticalAlignment="Stretch" Background="{DynamicResource WindowBackgroundColor}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Grid.Row="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0">
|
||||
<Label Content="Cloud" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select the Microsoft cloud to sign in to: Public (Global), US Government (GCC High), US Government (DoD), or China (Vianet)." />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCloud" Margin="0,5,5,0" Grid.Row="0" Grid.Column="1"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Grid.Row='1' Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,5,5">
|
||||
<Button Name="btnLogin" Content="Sign in" Width='100' Margin="5,0,0,0" VerticalAlignment="Center" IsDefault="True" />
|
||||
<Button Name="btnCancel" Content="Cancel" Width='100' Margin="5,0,0,0" VerticalAlignment="Center" IsCancel="True" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
</Window>
|
||||
@@ -0,0 +1,33 @@
|
||||
<Grid Name="grdImportProperties" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='0' Margin="0,0,5,0" >
|
||||
<Label Content="Name filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify name filter for the objects to compare" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding NameFilter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtCompareNameFilter" Grid.Column='1' Grid.Row='0' Margin="0,5,5,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0" >
|
||||
<Label Content="Export root" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="The root folder where exported files are stored. This sould be the Company Name folder if it was included in the export." />
|
||||
</StackPanel>
|
||||
<Grid Grid.Column='1' Grid.Row='1' Margin="0,5,5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="{Binding ExportPath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtExportPath" />
|
||||
<Button Grid.Column="2" Name="browseExportPath" Padding="5,2,5,2" Width="50" ToolTip="Browse for folder">...</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,51 @@
|
||||
<Grid Name="grdImportProperties" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='0' Margin="0,0,5,0" >
|
||||
<Label Content="Name filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify name filter for the objects to compare" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding NameFilter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtCompareNameFilter" Grid.Column='1' Grid.Row='0' Margin="0,5,5,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0" >
|
||||
<Label Content="Source root" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="The root folder where exported files are stored. This sould be the Company Name folder if it was included in the export." />
|
||||
</StackPanel>
|
||||
<Grid Grid.Column='1' Grid.Row='1' Margin="0,5,5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="{Binding SourcePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtExportPathSource" />
|
||||
<Button Grid.Column="2" Name="browseExportPathSource" Padding="5,2,5,2" Width="50" ToolTip="Browse for folder">...</Button>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0" >
|
||||
<Label Content="Compare root" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="The folder with exported object that should be compared with the source" />
|
||||
</StackPanel>
|
||||
<Grid Grid.Column='1' Grid.Row='2' Margin="0,5,5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="{Binding ComparePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtExportPathCompare" />
|
||||
<Button Grid.Column="2" Name="browseExportPathCompare" Padding="5,2,5,2" Width="50" ToolTip="Browse for folder">...</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,9 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Name="txtCompareFile" />
|
||||
<Button Grid.Column="2" Name="browseCompareObject" Padding="5,2,5,2" Width="50" ToolTip="Browse for file">...</Button>
|
||||
</Grid>
|
||||
@@ -0,0 +1,198 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TabControl Name="tabCompare" SelectedIndex="0" Margin="0,0,0,5">
|
||||
<TabItem Header="Options">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Padding="0,0,5,0">
|
||||
<Grid VerticalAlignment="Stretch">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='0' Margin="0,5,5,0">
|
||||
<Label Content="Source object" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Current Intune object" />
|
||||
</StackPanel>
|
||||
<TextBlock Name="txtIntuneObject" Text="" Grid.Column='1' Grid.Row='0' Margin="0,9,5,0"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,5,5,0">
|
||||
<Label Content="Compare with" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select whether to compare against an exported file or another Intune object" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareInput" Margin="0,5,5,0" MinWidth="200" Grid.Row='1' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,5,5,0">
|
||||
<Label Name="lblCompareObject" Content="Compare object" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="The object to compare against" />
|
||||
</StackPanel>
|
||||
<ContentControl Name="ccCompareInputOptions" Grid.Column='1' Grid.Row='2' Margin="0,5,5,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,5,5,0">
|
||||
<Label Content="Comparison Type" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify how objects should be compared" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareType" Margin="0,5,5,0" MinWidth="250" Grid.Row='3' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='4' Margin="0,5,5,0">
|
||||
<Label Content="Output format" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the output file format when saving compare results" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbSingleCompareOutputFormat" Margin="0,5,5,0" MinWidth="200" Grid.Row='4' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='5' Margin="0,5,5,0">
|
||||
<Label Content="Ignore core properties" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Skip mismatch coloring for displayName, description, id, createdDateTime, lastModifiedDateTime and version. These will almost always differ between two objects." />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkIgnoreCoreProperties" Margin="0,9,5,0" Grid.Row='5' Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='6' Margin="0,5,5,0">
|
||||
<Label Content="Multi-Value Delimiter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the character to use for separating values for properties with more than one value (documentation comparison)" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbCompareMultiValueDelimiter" Margin="0,5,5,0" MinWidth="200" Grid.Row='6' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='7' Margin="0,5,5,0">
|
||||
<Label Content="Skip Assignments" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Skip comparing assignments." />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkSkipCompareAssignments" Margin="0,9,5,0" Grid.Row='7' Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" />
|
||||
|
||||
<TextBlock Grid.Row='8' TextWrapping="Wrap" Margin="5,20,5,0" Grid.ColumnSpan="2">
|
||||
The <Bold>Property</Bold> comparison method is a quick and easy option for objects that are based on a static set of properties <LineBreak/>
|
||||
e.g. Configuration Profiles, Compliance Polcies etc.<LineBreak/>This method will compare each property of the objects. <LineBreak/>
|
||||
The downside of this method is that it could be difficult to match the property name with the setting in th UI.
|
||||
<LineBreak/>
|
||||
The <Bold>Documentation</Bold> method will use the documentation engine and compare property values as they are displayed in the portal.<LineBreak/>
|
||||
This is recommended for objects with dynamic settings e.g. Settings Catalog and Endpoint security objects. <LineBreak/>
|
||||
The downside of this method is that it could be slow and that some property-based objects are not supported.
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
<TabItem Header="Compare Output">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<DockPanel Grid.Row='0' LastChildFill="False" Margin="0,0,0,5">
|
||||
<TextBlock Text="Show:" VerticalAlignment="Center" Margin="5,0,5,0" DockPanel.Dock="Left" />
|
||||
<ComboBox Name="cbCompareFilter" Width="160" VerticalAlignment="Center" DockPanel.Dock="Left">
|
||||
<ComboBoxItem Content="All properties" Tag="All" />
|
||||
<ComboBoxItem Content="Mismatches only" Tag="Mismatch" />
|
||||
<ComboBoxItem Content="Matches only" Tag="Match" />
|
||||
</ComboBox>
|
||||
<TextBlock Name="txtCompareSummary" Text="" VerticalAlignment="Center" Margin="20,0,0,0" Foreground="{DynamicResource TextColor}" DockPanel.Dock="Left" />
|
||||
</DockPanel>
|
||||
|
||||
<DataGrid Grid.Row='1' Name="dgCompareInfo"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
VirtualizingPanel.ScrollUnit="Pixel">
|
||||
<DataGrid.RowStyle>
|
||||
<Style TargetType="DataGridRow">
|
||||
<!-- Selection highlight brushes come from the theme dictionary
|
||||
(Themes/Light.xaml, Themes/Dark.xaml). They were redefined here,
|
||||
hardcoded to the dark palette, which made a selected row unreadable
|
||||
in the Light theme. -->
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="{DynamicResource SelectedRowBackgroundColor}" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="{DynamicResource SelectedRowBackgroundColor}" />
|
||||
</Trigger>
|
||||
<!-- Match foreground tint at the ROW level. Cell-level
|
||||
Foreground setters on a DataGridCell style do NOT
|
||||
propagate to DataGridTextColumn's auto-generated
|
||||
TextBlocks reliably (WPF wraps the cell content in a
|
||||
ContentPresenter that bypasses cell.Foreground for
|
||||
text columns). Setting Foreground on DataGridRow
|
||||
flows through inheritance to every child TextBlock
|
||||
and renders mismatched rows red as expected. Match
|
||||
is tri-state ($true / $false / $null); only False
|
||||
tints — True falls through to the inherited TextColor,
|
||||
null (ignored) likewise stays neutral. -->
|
||||
<DataTrigger Binding="{Binding Match}" Value="False">
|
||||
<Setter Property="Foreground" Value="{DynamicResource MismatchColor}" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.Columns>
|
||||
<!-- Match is tri-state on the data: $true / $false / $null. The
|
||||
column converts each to a single-glyph string in XAML via a
|
||||
DataTrigger chain so we don't need a code-behind converter
|
||||
(the project loads the XAML at runtime — no codegen). -->
|
||||
<DataGridTemplateColumn Header="Match" IsReadOnly="True" Width="Auto">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock HorizontalAlignment="Center" FontWeight="Bold">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<!-- Default = ignored / skipped (Match is $null) -->
|
||||
<Setter Property="Text" Value="—" />
|
||||
<Setter Property="ToolTip" Value="Ignored" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Match}" Value="True">
|
||||
<Setter Property="Text" Value="✓" />
|
||||
<Setter Property="ToolTip" Value="Match" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Match}" Value="False">
|
||||
<Setter Property="Text" Value="✗" />
|
||||
<Setter Property="ToolTip" Value="Mismatch" />
|
||||
<Setter Property="Foreground" Value="{DynamicResource MismatchColor}" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="Property" Binding="{Binding PropertyName}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Category" Binding="{Binding Category}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="SubCategory" Binding="{Binding SubCategory}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Intune Object" Binding="{Binding Object1Value}" IsReadOnly="True" Width="1*" />
|
||||
<DataGridTextColumn Header="Compare Object" Binding="{Binding Object2Value}" IsReadOnly="True" Width="1*" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row='2' Margin="5,5,0,0">
|
||||
<Button Name="btnCompareSave" Content="Save" ToolTip="Save compare results" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnCompareCopy" Content="Copy" ToolTip="Copy CSV content to clipboard" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
<StackPanel Name="spCompareSubMenu" Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row='1'>
|
||||
<Button Name="btnSwap" Content="Swap" ToolTip="Swap source and compare objects" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnStartCompare" Content="Compare" ToolTip="Compare objects" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
@@ -0,0 +1,9 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Name="txtCompareIntuneObject" VerticalAlignment="Center" Margin="2,0,0,0" />
|
||||
<Button Grid.Column="2" Name="browseIntuneObject" Padding="5,2,5,2" Width="50" ToolTip="Browse for Intune object">...</Button>
|
||||
</Grid>
|
||||
@@ -0,0 +1,40 @@
|
||||
<Grid Name="grdImportProperties" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" >
|
||||
<Label Content="Source object name pattern" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the pattern of the source objects e.g. Test -" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding SourcePattern, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtCompareSource" Grid.Column='1' Grid.Row='0' Margin="0,5,5,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" Grid.Row='1'>
|
||||
<Label Content="Compare object name pattern" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the pattern of the objects that the source should be compared with e.g. Prod -" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding ComparePattern, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtCompareWith" Grid.Column='1' Grid.Row='1' Margin="0,5,5,0" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row='2' >
|
||||
<Label Content="Save folder" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="The folder where compare files will be saved. Default is the MyDocuments folder" />
|
||||
</StackPanel>
|
||||
<Grid Grid.Column='1' Grid.Row='2' Margin="0,5,5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="{Binding SavePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="txtSavePath" />
|
||||
<Button Grid.Column="2" Name="browseSavePath" Padding="5,2,5,2" Width="50" ToolTip="Browse for folder">...</Button>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,93 @@
|
||||
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Copy object"
|
||||
SizeToContent="WidthAndHeight"
|
||||
ResizeMode="NoResize"
|
||||
ShowInTaskbar="False"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
FocusManager.FocusedElement="{Binding ElementName=txtObjectName}">
|
||||
|
||||
<Window.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="UI\WPF\Themes\Light.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid Margin="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0" HorizontalAlignment="Left">
|
||||
<Label Content="Tenant" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Destination tenant" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbDestinationTenant" Margin="0,5,5,0" Grid.Row="0" Grid.Column="1" Width="250">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding TenantNameEx}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1" HorizontalAlignment="Left">
|
||||
<Label Content="New Name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Name of the object" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectName" Margin="0,5,5,0" Grid.Row="1" Grid.Column="1" Width="250"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Top" >
|
||||
<Label Content="Description" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Description for the object" Margin="0,2,0,0" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectDescription" Margin="0,5,5,0" Grid.Row="2" Grid.Column="1" AcceptsReturn="True" Width="250" Height="100" />
|
||||
|
||||
<StackPanel Name="pnlCopyScopeTagsLabel" Orientation="Horizontal" Margin="0,10,5,0" Grid.Row="3" Grid.ColumnSpan="2" HorizontalAlignment="Left">
|
||||
<Label Content="Scope Tags" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Pick which scope tags the new object will have. Re-loads from the destination tenant when you change Tenant above; assignments are matched by name across tenants." />
|
||||
</StackPanel>
|
||||
|
||||
<Grid Name="grdCopyScopeTags" Grid.Row="4" Grid.ColumnSpan="2" Height="180" Margin="0,5,5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Label Content="Available" Grid.Row="0" Grid.Column="0" Padding="0,0,0,2" FontSize="11" Foreground="#888"/>
|
||||
<Label Content="Assigned" Grid.Row="0" Grid.Column="2" Padding="0,0,0,2" FontSize="11" Foreground="#888"/>
|
||||
|
||||
<ListBox Name="lstCopyAvailableScopeTags" Grid.Row="1" Grid.Column="0"
|
||||
SelectionMode="Extended" DisplayMemberPath="Name" Margin="0,0,5,0"/>
|
||||
|
||||
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Vertical" VerticalAlignment="Center" Margin="0,0,5,0">
|
||||
<Button Name="btnCopyScopeTagAssign" Content=">" Width="40" Margin="0,0,0,5" ToolTip="Assign selected tag(s)"/>
|
||||
<Button Name="btnCopyScopeTagUnassign" Content="<" Width="40" ToolTip="Unassign selected tag(s)"/>
|
||||
</StackPanel>
|
||||
|
||||
<ListBox Name="lstCopyAssignedScopeTags" Grid.Row="1" Grid.Column="2"
|
||||
SelectionMode="Extended" DisplayMemberPath="Name" Margin="5,0,0,0"/>
|
||||
</Grid>
|
||||
|
||||
<WrapPanel Grid.Row="5" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,15,0,0">
|
||||
<Button IsDefault="True" Name="btnOk" MinWidth="60" Margin="0,0,10,0">_OK</Button>
|
||||
<Button IsCancel="True" Name="btnCancel" MinWidth="60" >_Cancel</Button>
|
||||
</WrapPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,27 @@
|
||||
<Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" Padding="5" Background="{DynamicResource WindowBackgroundColor}">
|
||||
<Grid HorizontalAlignment="Stretch" Name="grdModalContainer" VerticalAlignment="Stretch" Background="{DynamicResource WindowBackgroundColor}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Background="{DynamicResource TitleBackgroundColor}" BorderThickness="0">
|
||||
<TextBlock Name="txtEditScriptTitle" Margin="5" FontWeight="Bold" />
|
||||
</Border>
|
||||
|
||||
<TextBox Name="txtScriptText"
|
||||
Grid.Row="1"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
MinWidth="250" Margin="0,5,0,0" AcceptsReturn="True" />
|
||||
|
||||
<WrapPanel Name="pnlButtons" Grid.Row="2" HorizontalAlignment="Right" Margin="0,5,0,0">
|
||||
<Button Name="btnSaveScriptEdit" MinWidth="100" Margin="0,0,5,0" ToolTip="Save updated script">Save</Button>
|
||||
<Button Name="btnCancelScriptEdit" MinWidth="100" Margin="0,0,0,0" ToolTip="Cancel any changes">Cancel</Button>
|
||||
</WrapPanel>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
@@ -0,0 +1,64 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope='True'>
|
||||
<Grid Name="grdExportProperties">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" >
|
||||
<Label Content="Export root" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This root folder where exported files should be stored" />
|
||||
</StackPanel>
|
||||
<Grid Grid.Column='1' Grid.Row='0'>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="{Binding ExportFolder, Mode=TwoWay}" Name="txtExportPath" />
|
||||
<Button Grid.Column="2" Name="browseExportPath" Padding="5,0,5,0" Width="50" ToolTip="Browse for folder">...</Button>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0">
|
||||
<Label Content="Add object name to path" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This will export all objects to a sub-directory of the export path with name based on object type" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='1' Name='chkAddObjectType' VerticalAlignment="Center" IsChecked="{Binding AddObjectType, Mode=TwoWay}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0">
|
||||
<Label Content="Add company name to path" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This will add the company name in Azure to the export path" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='2' Name='chkAddCompanyName' VerticalAlignment="Center" IsChecked="{Binding AddCompanyName}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,0,5,0">
|
||||
<Label Content="Export Assignments" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This will export assignments and add information to a migration table so they can be imported into other environments" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='3' Name='chkExportAssignments' VerticalAlignment="Center" IsChecked="{Binding ExportAssignments, Mode=TwoWay}" />
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Name="spExportSubMenu" Grid.Row='1' Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,5">
|
||||
<Label Name="lblSelectedObject" Margin="5,0,0,0" />
|
||||
<Button Name="btnExportSelected" Content="Export Selected" Width='100' Margin="5,0,0,0" VerticalAlignment="Center" />
|
||||
<Button Name="btnExportAll" Content="Export All" Width='100' Margin="5,0,0,0" VerticalAlignment="Center" />
|
||||
<Button Name="btnCancel" Content="Cancel" Width='100' Margin="5,0,0,0" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
@@ -0,0 +1,125 @@
|
||||
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="4*" MinHeight="300" />
|
||||
<RowDefinition Height="3" />
|
||||
<RowDefinition Height="1*" MinHeight="100" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Grid.Row="0" BorderBrush="{DynamicResource BorderColor}" BorderThickness="1"
|
||||
Background="{DynamicResource PanelBackgroundColor}" Padding="8" Margin="0,0,0,5">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal">
|
||||
<TextBlock Text="Calls: " FontWeight="Bold" Margin="0,0,2,0" />
|
||||
<TextBlock Name="txtTotalCalls" Text="0" Margin="0,0,16,0" />
|
||||
<TextBlock Text="Downloaded: " FontWeight="Bold" Margin="0,0,2,0" />
|
||||
<TextBlock Name="txtTotalMB" Text="0 MB" Margin="0,0,16,0" />
|
||||
<TextBlock Text="Objects: " FontWeight="Bold" Margin="0,0,2,0" />
|
||||
<TextBlock Name="txtTotalObjects" Text="0" Margin="0,0,16,0" />
|
||||
<TextBlock Text="Total time: " FontWeight="Bold" Margin="0,0,2,0" />
|
||||
<TextBlock Name="txtTotalTime" Text="0s" Margin="0,0,16,0" />
|
||||
</StackPanel>
|
||||
|
||||
<Button Grid.Row="0" Grid.Column="1" Name="btnRefreshGraphCalls" Content="Refresh"
|
||||
Padding="8,2" Margin="5,0,0,0" VerticalAlignment="Center"
|
||||
ToolTip="Recompute totals and reload the call list" />
|
||||
|
||||
<StackPanel Grid.Row="1" Grid.ColumnSpan="2" Orientation="Horizontal" Margin="0,4,0,0">
|
||||
<TextBlock Text="HTTP status: " FontWeight="Bold" Margin="0,0,2,0" VerticalAlignment="Center" />
|
||||
<WrapPanel Name="pnlHttpStatuses" Orientation="Horizontal" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Row="2" Grid.ColumnSpan="2" Orientation="Horizontal" Margin="0,2,0,0">
|
||||
<TextBlock Text="Batch status: " FontWeight="Bold" Margin="0,0,2,0" VerticalAlignment="Center" />
|
||||
<WrapPanel Name="pnlBatchStatuses" Orientation="Horizontal" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Name="pnlFilterIndicator" Grid.Row="3" Grid.ColumnSpan="2" Orientation="Horizontal" Margin="0,6,0,0" Visibility="Collapsed">
|
||||
<TextBlock Text="Active filter: " FontWeight="Bold" Margin="0,0,2,0" VerticalAlignment="Center" />
|
||||
<TextBlock Name="txtActiveFilter" Text="" Margin="0,0,8,0" VerticalAlignment="Center" />
|
||||
<Button Name="btnClearGraphCallsFilter" Content="Clear" Padding="6,1" VerticalAlignment="Center"
|
||||
ToolTip="Remove the filter and show all calls" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<DataGrid Grid.Row="1" Name="dgGraphCalls"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Provider" Binding="{Binding Provider}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Date" Binding="{Binding Time, StringFormat={}{0:d}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Time" Binding="{Binding Time, StringFormat={}{0:HH:mm.ss}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Duration (ms)" Binding="{Binding Duration, StringFormat={}{0:N0}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="KB" Binding="{Binding KB, StringFormat={}{0:N1}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Objects" Binding="{Binding ObjectCount, StringFormat={}{0:N0}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Pages" Binding="{Binding PageCount, StringFormat={}{0:N0}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="StatusCode" Binding="{Binding StatusCode}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Batch Errors" Binding="{Binding BatchErrorSummary}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Method" Binding="{Binding Method}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTemplateColumn Header="URL">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding Path=URL}" TextWrapping="NoWrap" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<GridSplitter Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
|
||||
|
||||
<Grid Grid.Row="3" Name="dgGraphCallObject">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Text="Batch info" Grid.Row="0" Grid.Column="0" />
|
||||
|
||||
<DataGrid
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3"
|
||||
ItemsSource="{Binding Path=SelectedItem.BatchRequests, ElementName=dgGraphCalls}"
|
||||
>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Id" Binding="{Binding Id}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="KB" Binding="{Binding Response.KB, StringFormat={}{0:N1}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Objects" Binding="{Binding Response.ObjectCount, StringFormat={}{0:N0}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Pages" Binding="{Binding Response.PageCount, StringFormat={}{0:N0}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="StatusCode" Binding="{Binding Response.StatusCode}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Method" Binding="{Binding Method}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTemplateColumn Header="URL">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding URL}" TextWrapping="NoWrap" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,13 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="29" Width="33">
|
||||
<Path Fill="#3E3E3E" Data="M23.1 21.5c0 1.4-1.1 2.5-2.5 2.5h-11c-1.4 0-2.5-1.1-2.5-2.5v-19C7.1 1.1 8.2 0 9.6 0h11c1.4 0 2.5 1.1 2.5 2.5v19z" />
|
||||
<Path Fill="#5AB3D9" Data="M21.1 4h-12v17h12V4z" />
|
||||
<Path Fill="#FFFFFF" Data="M7.1 2.5v16.3L21 0H9.6C8.2 0 7.1 1.1 7.1 2.5z" Opacity="0.15" />
|
||||
<Path Fill="#FFFFFF" Data="M25.9 27.6V9.8h-8.5c-.7 0-1.3.6-1.3 1.3v16.4h9.8v.1z" Opacity="0.4" />
|
||||
<Path Fill="#0072c6" Data="M29 11.6c-.2-.3-.6-.3-.6-.3H18.1s-.4 0-.5.3v20.1c0 .5.6.5.6.5h10.3s.6 0 .6-.5V11.8c-.1-.1-.1-.2-.1-.2z" />
|
||||
<Path Fill="#FFFFFF" Data="M20.6 12.5h-1.8v3.6h1.8v-3.6zm3.5 0h-1.8v3.6h1.8v-3.6zm3.6 0h-1.8v3.6h1.8v-3.6zm-7.1 5.3h-1.8v3.6h1.8v-3.6zm3.5 0h-1.8v3.6h1.8v-3.6zm3.6 0h-1.8v3.6h1.8v-3.6zm-7.1 5.3h-1.8v3.6h1.8v-3.6zm3.5 0h-1.8v3.6h1.8v-3.6zm0 5.3h-1.8V32h1.8v-3.6zm3.6-5.3h-1.8v3.6h1.8v-3.6z" />
|
||||
<Path Fill="#FFFFFF" Data="M9.6 22.2l-.1-.2c1.2-.8 2.1-2.2 2.1-3.7 0-2.1-1.4-3.8-3.4-4.3H8c-.2 0-.5-.1-.7-.1-2.4 0-4.4 2-4.4 4.4 0 .3 0 .6.1.9v.1c.3 1.2 1 2.1 1.9 2.7v.2H0V32h14.3v-9.8H9.6z" Opacity="0.4" />
|
||||
<Path Fill="#804998" Data="M10.7 18.2c0 2-1.6 3.6-3.6 3.6s-3.6-1.6-3.6-3.6 1.6-3.6 3.6-3.6c2.1 0 3.6 1.7 3.6 3.6zM9.8 23l-2.6 3.7L4.6 23H.8v9h12.7v-9H9.8z" />
|
||||
<Path Fill="#FFFFFF" Data="M3.6 18.2c0 2 1.5 3.5 3.5 3.6l.9-7c-.2-.1-.5-.1-.8-.1-2-.1-3.6 1.6-3.6 3.5zm1 4.8H.8v9h5l.8-6.1-2-2.9z" Opacity="0.15" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,9 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#1D1D1D" Data="M43.75 43.75H6.25A6.25 6.25 0 010 37.5v-25a6.25 6.25 0 016.25-6.25h37.5A6.25 6.25 0 0150 12.5v25a6.25 6.25 0 01-6.25 6.25z" />
|
||||
<Path Fill="#B7D333" Data="M6.25 12.5h37.5v25H6.25z" />
|
||||
<Path Fill="#7FBA42" Data="M43.75 37.5H6.25v-6.25l37.5-12.5z" />
|
||||
<Path Fill="#FFFFFF" Data="M40.625 15.625v18.75H9.375v-18.75h31.25M43.75 12.5H6.25v25h37.5v-25z" Opacity="0.4" />
|
||||
<Path Fill="#9E9FA0" Data="M18.75 37.5h12.5v3.125h-12.5z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,6 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#2072B8" Data="M0 0h12.5v12.5H0V0zm0 15.625h12.5v12.5H0v-12.5zM0 31.25h12.5v12.5H0v-12.5zM15.625 0h12.5v12.5h-12.5V0zM31.25 0h12.5v12.5h-12.5V0zM16.788 38.29l3.822-3.422.008-1.332-2.637-2.286h-2.356v12.5h3.378zm2.276-13.546l5.126.288.946-.935-.362-5.086 3.351-1.364v-2.022h-12.5v12.5h2.012zm14.609-4.134l1.332.009 3.345-3.856 5.4 2.283v-3.421h-12.5v2.277z" />
|
||||
<Path Fill="#7B7B7B" Data="M48.464 42.171l1.431-3.386-.414-.361-3.126-2.71.019-2.744 3.52-3.15-1.385-3.405-.543.038-4.13.292-1.926-1.955.262-4.714-3.386-1.431-.359.414-2.714 3.128-2.744-.019-3.15-3.522-3.405 1.385.04.543.29 4.13-1.951 1.928-4.718-.266-1.431 3.389.414.357 3.126 2.714-.017 2.744-3.519 3.15 1.382 3.405.547-.038 4.126-.292 1.928 1.951-.262 4.718 3.388 1.427.357-.41 2.714-3.128 2.742.023 3.15 3.519 3.405-1.385-.038-.546-.292-4.126 1.955-1.928 4.714.261zm-17.119-.968a7.522 7.522 0 01-4.006-9.857 7.522 7.522 0 019.857-4.008 7.522 7.522 0 014.007 9.857 7.524 7.524 0 01-9.858 4.008" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,7 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#2072B8" Data="M0 0h12.5v12.5H0V0zm0 15.625h12.5v12.5H0v-12.5zM0 31.25h12.5v12.5H0v-12.5zM15.625 0h12.5v12.5h-12.5V0zM31.25 0h12.5v12.5h-12.5V0zm-7.812 37.846V31.25h-7.813v12.5h11.161c-1.926-2.052-3.348-4.172-3.348-5.904zm0-18.989l1.492-.067a29.146 29.146 0 003.195-.344v-2.82h-12.5v12.5h7.813v-9.269zm11.853-3.232H31.25v2.081c1.477-.465 2.911-1.128 4.041-2.081zm8.459 2.08v-2.08h-4.035c1.133.952 2.563 1.614 4.035 2.08z" />
|
||||
<Path Fill="#7FBA42" Data="M37.509 50C35.851 49.674 25 41.763 25 37.846V20.351c2.313-.103 9.37-.746 12.502-4.726 3.15 3.983 10.189 4.623 12.498 4.726v17.494C50 43.382 38.92 49.791 37.509 50z" />
|
||||
<Path Data="M27.944 42.749C26.039 40.738 25 39.014 25 37.846V20.351c2.313-.103 9.369-.746 12.501-4.725 1.285 1.631 3.345 2.868 6.148 3.694L27.944 42.749z" Fill="#FFFFFF" Opacity="0.17"/>
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,26 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#FFFFFF" Data="M40.5 11h4v1h-4z" />
|
||||
<Path Fill="#E5E5E5" Data="M20.5 49c-1.103 0-2-.897-2-2V7c0-1.103.897-2 2-2h24c1.103 0 2 .897 2 2v40c0 1.103-.897 2-2 2h-24z" />
|
||||
<Path Fill="#7A7A7A" Data="M44.5 6c.551 0 1 .449 1 1v40c0 .551-.449 1-1 1h-24c-.551 0-1-.449-1-1V7c0-.551.449-1 1-1h24m0-2h-24a3 3 0 00-3 3v40a3 3 0 003 3h24a3 3 0 003-3V7a3 3 0 00-3-3z" />
|
||||
<Path Fill="#FFFFFF" Data="M20.5 49c-1.103 0-2-.897-2-2V7c0-1.103.897-2 2-2h24c1.103 0 2 .897 2 2v40c0 1.103-.897 2-2 2h-24z" />
|
||||
<Path Fill="#7A7A7A" Data="M44.5 6c.551 0 1 .449 1 1v40c0 .551-.449 1-1 1h-24c-.551 0-1-.449-1-1V7c0-.551.449-1 1-1h24m0-2h-24a3 3 0 00-3 3v40a3 3 0 003 3h24a3 3 0 003-3V7a3 3 0 00-3-3z" />
|
||||
<Path Fill="#7A7A7A" Data="M19.5 6h26v6h-26z" />
|
||||
<Path Fill="#FFFFFF" Data="M29.5 7h6v1h-6z" />
|
||||
<Ellipse Fill="#57a300" Canvas.Left="23.5" Canvas.Top="14" Width="18" Height="18" />
|
||||
<Path Fill="#0072c0" Data="M30.833 28.667v-4h-4v-3.334h4v-4h3.334v4h4v3.334h-4v4z" />
|
||||
<Path Fill="#FFFFFF" Data="M37.5 22h-4v-4h-2v4h-4v2h4v4h2v-4h4z" />
|
||||
<Path Fill="#3898C6" Data="M24.5 35h16v2h-16zm0 4h12v2h-12zm0 4h14v2h-14z" />
|
||||
<Path Fill="#FFFFFF" Data="M25.5 7h4v1h-4z" />
|
||||
<Path Fill="#E5E5E5" Data="M5.5 45c-1.103 0-2-.897-2-2V3c0-1.103.897-2 2-2h24c1.103 0 2 .897 2 2v40c0 1.103-.897 2-2 2h-24z" />
|
||||
<Path Fill="#7A7A7A" Data="M29.5 2c.551 0 1 .449 1 1v40c0 .551-.449 1-1 1h-24c-.551 0-1-.449-1-1V3c0-.551.449-1 1-1h24m0-2h-24a3 3 0 00-3 3v40a3 3 0 003 3h24a3 3 0 003-3V3a3 3 0 00-3-3z" />
|
||||
<Path Fill="#FFFFFF" Data="M5.5 45c-1.103 0-2-.897-2-2V3c0-1.103.897-2 2-2h24c1.103 0 2 .897 2 2v40c0 1.103-.897 2-2 2h-24z" />
|
||||
<Path Fill="#7A7A7A" Data="M29.5 2c.551 0 1 .449 1 1v40c0 .551-.449 1-1 1h-24c-.551 0-1-.449-1-1V3c0-.551.449-1 1-1h24m0-2h-24a3 3 0 00-3 3v40a3 3 0 003 3h24a3 3 0 003-3V3a3 3 0 00-3-3z" />
|
||||
<Path Fill="#7A7A7A" Data="M4.5 2h26v6h-26z" />
|
||||
<Path Fill="#FFFFFF" Data="M14.5 3h6v1h-6z" />
|
||||
<Ellipse Fill="#57a300" Canvas.Left="8.5" Canvas.Top="10" Width="18" Height="18" />
|
||||
<Path Fill="#0072c0" Data="M15.833 24.667v-4h-4v-3.334h4v-4h3.334v4h4v3.334h-4v4z" />
|
||||
<Path Fill="#FFFFFF" Data="M22.5 18h-4v-4h-2v4h-4v2h4v4h2v-4h4z" />
|
||||
<Path Fill="#3898C6" Data="M9.5 31h16v2h-16zm0 4h12v2h-12zm0 4h14v2h-14z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,60 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="3fe769a7-5a01-4d2d-8fe0-e8d731b660ed" StartPoint="0.0754000023007393,0.0494999997317791" EndPoint="0.0754000023007393,0.147200003266335" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0.22" Color="#2BCDF2" />
|
||||
<GradientStop Offset="0.47" Color="#2ACAF0" />
|
||||
<GradientStop Offset="0.63" Color="#28C2E7" />
|
||||
<GradientStop Offset="0.76" Color="#24B3DA" />
|
||||
<GradientStop Offset="0.88" Color="#1F9EC6" />
|
||||
<GradientStop Offset="0.99" Color="#1883AD" />
|
||||
<GradientStop Offset="1" Color="#177FA9" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="3fe769a7-5a01-4d2d-8fe0-e8d731b660ee" StartPoint="0.521659970283508,0" EndPoint="0.56852000951767,0.566280007362366" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0.22" Color="#2BCDF2" />
|
||||
<GradientStop Offset="0.47" Color="#2ACAF0" />
|
||||
<GradientStop Offset="0.63" Color="#28C2E7" />
|
||||
<GradientStop Offset="0.76" Color="#24B3DA" />
|
||||
<GradientStop Offset="0.88" Color="#1F9EC6" />
|
||||
<GradientStop Offset="0.99" Color="#1883AD" />
|
||||
<GradientStop Offset="1" Color="#177FA9" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="3fe769a7-5a01-4d2d-8fe0-e8d731b660ef" StartPoint="0.132200002670288,0.208000004291534" EndPoint="0.132200002670288,0.0612999983131886" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#006DCD" />
|
||||
<GradientStop Offset="0.11" Color="#1175D3" />
|
||||
<GradientStop Offset="0.34" Color="#2E83DE" />
|
||||
<GradientStop Offset="0.56" Color="#428DE6" />
|
||||
<GradientStop Offset="0.79" Color="#4F93EA" />
|
||||
<GradientStop Offset="1" Color="#5395EC" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="3fe769a7-5a01-4d2d-8fe0-e8d731b660f0" StartPoint="0.132200002670288,0.168400004506111" EndPoint="0.132200002670288,0.0844999998807907" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Color="#CBE7FF" />
|
||||
<GradientStop Offset="1" Color="#EDFFFC" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Canvas>
|
||||
<Path Fill="{StaticResource 3fe769a7-5a01-4d2d-8fe0-e8d731b660ed}" Data="M12.37 13a1 1 0 001.05-1v-.12c-.42-3.29-2.29-6-5.87-6S2 8.09 1.66 11.79A1.06 1.06 0 002.6 13h9.77z" />
|
||||
<Path Fill="#FFFFFF" Data="M7.55 6.6a3.24 3.24 0 01-1.79-.53l1.77 4.62L9.29 6.1a3.24 3.24 0 01-1.74.5z" Opacity="0.8"/>
|
||||
<Path Fill="{StaticResource 3fe769a7-5a01-4d2d-8fe0-e8d731b660ee}" Data="M7.55 6.6a3.3 3.3 0 100-6.6 3.3 3.3 0 000 6.6z" />
|
||||
<Path Fill="{StaticResource 3fe769a7-5a01-4d2d-8fe0-e8d731b660ef}" Data="M16.02 7.57h-5.61a.32.32 0 00-.32.32v9.8c0 .177.143.32.32.32h5.61a.32.32 0 00.32-.32v-9.8a.32.32 0 00-.32-.32z" />
|
||||
<Path Fill="#EFEFEF" Data="M13.4 17.19h-.36a.17.17 0 00-.17.17v.26c0 .094.076.17.17.17h.36a.17.17 0 00.17-.17v-.26a.17.17 0 00-.17-.17zm.45-9.27h-1.26a.09.09 0 00-.09.09v.01c0 .05.04.09.09.09h1.26c.05 0 .09-.04.09-.09v-.01a.09.09 0 00-.09-.09z" />
|
||||
<Path Fill="{StaticResource 3fe769a7-5a01-4d2d-8fe0-e8d731b660f0}" Data="M15.64 8.45H10.8a.12.12 0 00-.12.12v8.15c0 .066.054.12.12.12h4.84a.12.12 0 00.12-.12V8.57a.12.12 0 00-.12-.12z" Opacity="0.9"/>
|
||||
</Canvas>
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="52">
|
||||
<Path Fill="#1D1D1D" Data="M28.125 46.875h-25A3.125 3.125 0 0 1 0 43.75V3.125A3.125 3.125 0 0 1 3.125 0h25a3.125 3.125 0 0 1 3.125 3.125V43.75a3.125 3.125 0 0 1-3.125 3.125z" />
|
||||
<Path Fill="#5AB3D9" Data="M3.125 3.125h25v37.5h-25z" />
|
||||
<Path Fill="#3898C6" Data="M28.125 40.625h-25V32.67l25-18.465z" />
|
||||
<Path Data="M25 6.25V37.5H6.25V6.25H25m3.125-3.125h-25v37.5h25v-37.5z" Fill="#FFFFFF" />
|
||||
<Path Fill="#E4E4E4" Data="M12.5 40.625h6.25v3.125H12.5z" />
|
||||
<Path Fill="#7FBA42" Data="M37.5 15.625h6.25V50H37.5z" />
|
||||
<Path Fill="#7FBA42" Data="m40.625 6.25-9.375 12.5H50z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,8 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#5AB3D9" Data="M43.75 50H6.25A6.25 6.25 0 010 43.75V6.25A6.25 6.25 0 016.25 0h37.5A6.25 6.25 0 0150 6.25v37.5A6.25 6.25 0 0143.75 50z" />
|
||||
<Path Fill="#3898C6" Data="M43.75 3.125a3.129 3.129 0 013.125 3.125v37.5a3.129 3.129 0 01-3.125 3.125H6.25a3.129 3.129 0 01-3.125-3.125V6.25A3.129 3.129 0 016.25 3.125h37.5m0-3.125H6.25A6.25 6.25 0 000 6.25v37.5A6.25 6.25 0 006.25 50h37.5A6.25 6.25 0 0050 43.75V6.25A6.25 6.25 0 0043.75 0z" />
|
||||
<Path Fill="#FFFFFF" Data="M7.105 16.318l-.722-.776a.507.507 0 01.028-.722l2.101-1.928a.512.512 0 01.348-.137.51.51 0 01.381.163l5.77 6.134 9.922-12.611a.53.53 0 01.727-.086l2.265 1.739a.5.5 0 01.195.34.494.494 0 01-.105.375L15.266 25l-8.161-8.682zm33.604 11.807h-.084v6.334a3.041 3.041 0 01-3.041 3.041h-9.459v.084a3.041 3.041 0 003.041 3.041h9.544a3.041 3.041 0 003.041-3.041v-6.419a3.042 3.042 0 00-3.042-3.04z" />
|
||||
<Path Fill="#FFFFFF" Data="M34.46 34.375h-9.544a3.04 3.04 0 01-3.04-3.04v-6.419a3.04 3.04 0 013.04-3.04h9.544a3.04 3.04 0 013.04 3.04v6.419a3.04 3.04 0 01-3.04 3.04z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,18 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="a2546c3d-06f2-4d81-b3fa-b5b62d9f6f89" StartPoint="0.0900000035762787,0.170000001788139" EndPoint="0.0900000035762787,1" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#0078d4" />
|
||||
<GradientStop Offset="0.16" Color="#1380da" />
|
||||
<GradientStop Offset="0.53" Color="#3c91e5" />
|
||||
<GradientStop Offset="0.82" Color="#559cec" />
|
||||
<GradientStop Offset="1" Color="#5ea0ef" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Path Fill="{StaticResource a2546c3d-06f2-4d81-b3fa-b5b62d9f6f89}" Data="M6.6 12.2h4.8V17H6.6zM1 5.8h4.8V1H1.67a.67.67 0 00-.67.67zM1.67 17H5.8v-4.8H1v4.13a.67.67 0 00.67.67zM1 11.4h4.8V6.6H1zM12.2 17h4.13a.67.67 0 00.67-.67V12.2h-4.8zm-5.6-5.6h4.8V6.6H6.6zm5.6 0H17V6.6h-4.8zm0-10.4v4.8H17V1.67a.67.67 0 00-.67-.67zM6.6 5.8h4.8V1H6.6z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,29 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="cf7d088c-fc7f-4c2c-8ffa-0b4b450e304a" StartPoint="0.0752099975943565,0.0372200012207031" EndPoint="0.0752099975943565,0.170129999518394" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#5ea0ef" />
|
||||
<GradientStop Offset="1" Color="#0078d4" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="cf7d088c-fc7f-4c2c-8ffa-0b4b450e304b" StartPoint="0.143889993429184,0.0797099992632866" EndPoint="0.143889993429184,0.151940003037453" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#86d633" />
|
||||
<GradientStop Offset="1" Color="#76bc2d" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Path Fill="{StaticResource cf7d088c-fc7f-4c2c-8ffa-0b4b450e304a}" Data="M12.9 12.721l-2.5-2.492a.731.731 0 01-.217-.522v-.563a.74.74 0 01.739-.739h4.116V3.113a.455.455 0 00-.478-.428H.479A.456.456 0 000 3.113v9.7a.455.455 0 00.479.428H12.9z" />
|
||||
<Path Fill="#0078d4" Data="M.451 2.685h14.14a.429.429 0 01.45.4V4.7H0V3.088a.431.431 0 01.451-.403z" Opacity="0.7"/>
|
||||
<Ellipse Canvas.Left="1.182" Canvas.Top="6.266" Width="1.228" Height="1.228" Fill="#FFFFFF" Opacity="0.7"/>
|
||||
<Ellipse Canvas.Left="1.182" Canvas.Top="8.6269999999999989" Width="1.228" Height="1.228" Fill="#FFFFFF" Opacity="0.5"/>
|
||||
<Path Data="M10.186 9.707v-.563a.721.721 0 01.115-.371H3.6a.267.267 0 00-.266.267v.408a.266.266 0 00.266.267h6.589z" Fill="#FFFFFF" Opacity="0.5"/>
|
||||
<Rectangle Width="0.534" Height="0.942" Canvas.Left="3.333" Canvas.Top="6.416" Fill="#FFFFFF" Opacity="0.7"/>
|
||||
<Path Fill="{StaticResource cf7d088c-fc7f-4c2c-8ffa-0b4b450e304b}" Data="M18 9.707v-.563A.148.148 0 0017.852 9h-6.927a.148.148 0 00-.148.148v.563a.149.149 0 00.044.1l2.622 2.621a.153.153 0 01.043.105v2.63a.148.148 0 00.148.148h1.51a.148.148 0 00.148-.148v-2.63a.148.148 0 01.043-.105l2.622-2.621A.153.153 0 0018 9.707z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,13 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Data="M32 41c0 1.657-1.323 3-2.956 3H6.956C5.323 44 4 42.657 4 41V3c0-1.657 1.323-3 2.956-3h22.088C30.677 0 32 1.343 32 3v38z" Fill="#3e3e3e" />
|
||||
<Path Data="M6 5h24v33H6z" Fill="#59b4d9" />
|
||||
<Path Data="M23 2.817c0 .408-.53.738-1.186.738h-7.625c-.657 0-1.189-.33-1.189-.738s.532-.739 1.189-.739h7.625c.656 0 1.186.331 1.186.739" Fill="#ffffff" />
|
||||
<Path Data="M26.021 0H7a3 3 0 00-3 3v38a3 3 0 003 3h2.6L26.021 0z" Fill="#ffffff" Opacity=".15" />
|
||||
<Path Data="M32 11v7H18v-7z" Fill="#ffffff" />
|
||||
<Path Data="M19 12h20v5H19z" Fill="#804998" />
|
||||
<Path Data="M37 21.5v-14l10.5 6.462z" Fill="#804998" />
|
||||
<Path Stroke="#3999C6" StrokeStartLineCap="round" StrokeEndLineCap="round" StrokeLineJoin="round" StrokeThickness="2" Data="M21.042 26.042h22.917v22.917H21.042z" Fill="#ffffff" />
|
||||
<Path Fill="#3898C6" Data="M25 30h15v3H25zm0 6h12v3H25zm0 6h15v3H25z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,5 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="16" Width="16">
|
||||
<Path StrokeThickness="1.5" Fill="#707070" Data="M14.5 3h-1v11.5a1.3 1.3 0 0 1-.1.6l-.3.5-.5.3H3.4l-.5-.3-.3-.5a1.3 1.3 0 0 1-.1-.6V3h-1V2h4V1a.6.6 0 0 1 .1-.4l.2-.3.3-.2h3.8l.3.2.2.3a.6.6 0 0 1 .1.4v1h4zm-2 0h-9v11.5a.6.6 0 0 0 .1.4h8.8a.6.6 0 0 0 .1-.4zm-6 10h-1V5h1zm0-11h3V1h-3zm2 11h-1V5h1zm2 0h-1V5h1z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,39 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="b04c7825-41db-4c22-aba2-f5c44b816ed3" StartPoint="0.0356499999761581,0.170000001788139" EndPoint="0.0356499999761581,0.0375300012528896" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#fea11b" />
|
||||
<GradientStop Offset="0.127" Color="#feac19" />
|
||||
<GradientStop Offset="0.562" Color="#ffcb12" />
|
||||
<GradientStop Offset="0.804" Color="#ffd70f" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="e3016781-9cad-4dda-b769-212e01557f4d" StartPoint="0.0900000035762787,0.170000001788139" EndPoint="0.0900000035762787,0.0375300012528896" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#5e9624" />
|
||||
<GradientStop Offset="0.546" Color="#6dad2a" />
|
||||
<GradientStop Offset="0.999" Color="#76bc2d" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="a5967715-2146-4485-8c36-86a8b43a627b" StartPoint="0.144350007176399,0.170000001788139" EndPoint="0.144350007176399,0.0375300012528896" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#1b93eb" />
|
||||
<GradientStop Offset="1" Color="#6bb9f2" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Rectangle Width="4.034" Height="13.247" Canvas.Left="1.367" Canvas.Top="3.753" Fill="{StaticResource b04c7825-41db-4c22-aba2-f5c44b816ed3}" RadiusX="0.517" RadiusY="0.517" />
|
||||
<Rectangle Width="4.034" Height="13.247" Canvas.Left="6.802" Canvas.Top="3.753" Fill="{StaticResource e3016781-9cad-4dda-b769-212e01557f4d}" RadiusX="0.517" RadiusY="0.517" />
|
||||
<Rectangle Width="4.034" Height="13.247" Canvas.Left="12.238" Canvas.Top="3.753" Fill="{StaticResource a5967715-2146-4485-8c36-86a8b43a627b}" RadiusX="0.517" RadiusY="0.517" />
|
||||
<Path Fill="#faa21d" Data="M1.617 1h3.895a.251.251 0 01.251.251v2.871h-4.4V1.251A.251.251 0 011.617 1z" />
|
||||
<Path Fill="#86d633" Data="M7.053 1h3.894a.251.251 0 01.251.251v2.871H6.8V1.251A.251.251 0 017.053 1z" />
|
||||
<Path Fill="#5ea0ef" Data="M12.488 1h3.894a.251.251 0 01.251.251v2.871h-4.4V1.251A.251.251 0 0112.488 1z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,7 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Data="M43.75 3.125H9.375v43.75h31.25v-37.5h3.125z" Fill="#FFFFFF" />
|
||||
<Path Fill="#5AB2D7" Data="M34.375 12.5V9.375H12.5V12.5h21.875zm0 6.25v-3.125H12.5v3.125h21.875zm0 6.25v-3.125H12.5V25h21.875zm0 6.25v-3.125H12.5v3.125h21.875z" />
|
||||
<Path Fill="#5AB2D7" Data="M43.75 0H15.626C9.376 0 6.25 3.125 6.25 9.375L6.251 37.5H6.25a6.25 6.25 0 100 12.5H37.5c3.393 0 6.25-2.857 6.25-6.25V9.375h5.383A6.185 6.185 0 0050 6.25 6.25 6.25 0 0043.75 0zm0 3.126c-.006.003-3.124 1.549-3.124 6.249V37.5h-.001v4.688a4.688 4.688 0 01-9.376 0c0-2.038 1.309-4.042 3.125-4.688H9.376L9.375 9.375c0-3.889 2.396-6.25 6.251-6.25l28.124.001z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,7 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#57A300" Data="M38.185 5.96C27.169 4.745 25.326 0 25.326 0S22.847 6.242 7 6.242v25.611c0 3.097 1.721 5.997 4.104 8.532 5.402 5.748 14.223 9.616 14.223 9.616s18.327-8.029 18.327-18.149V6.242c-2.038 0-3.851-.103-5.469-.282z" />
|
||||
<Path Fill="#B8D432" Data="M29.86 16.543L38.185 5.96C27.169 4.745 25.326 0 25.326 0S22.847 6.242 7 6.242v25.611c0 3.097 1.721 5.997 4.104 8.532l6.154-7.822 12.602-16.02z" Opacity=".4" />
|
||||
<Path Fill="#FFFFFF" Data="M32.595 24.46h-1.066v-3.552a6.697 6.697 0 0 0-1.669-4.45c-.039-.043-.074-.09-.112-.133-1.107-1.186-2.683-1.948-4.422-1.947-1.736-.001-3.312.761-4.419 1.947a6.697 6.697 0 0 0-1.783 4.582v3.553h-1.065a.8.8 0 0 0-.801.801v9.392c0 .442.359.801.801.801h14.536a.801.801 0 0 0 .801-.801v-9.391a.801.801 0 0 0-.801-.802zm-4.011.001h-5.02l.001-.001H22.07v-3.552c0-1.022.386-1.927.988-2.57.605-.643 1.395-1.013 2.268-1.013.874 0 1.665.37 2.27 1.013.143.153.271.323.389.504l-.001.001c.373.579.6 1.288.6 2.064v3.554z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,20 @@
|
||||
<Viewbox Width="18" Height="18" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Viewbox.Resources>
|
||||
<LinearGradientBrush x:Key="82ede37b-be1f-4ec6-a8d4-aefcb532a259" StartPoint="0,11.9927997589111" EndPoint="0,11.9345598220825" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#5ea0ef" />
|
||||
<GradientStop Offset="1" Color="#0078d4" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Viewbox.Resources>
|
||||
<Canvas Height="18" Width="18">
|
||||
<Path Fill="{StaticResource 82ede37b-be1f-4ec6-a8d4-aefcb532a259}" Data="M0 7.146L.011 10.5a.578.578 0 00.176.43l3.238 2.8a.77.77 0 00.409.169l13.581.039a.588.588 0 00.585-.59l-.014-8.635a.6.6 0 00-.591-.592l-13.61-.053a.89.89 0 00-.38.141L.205 6.7A.569.569 0 000 7.146zm3.134.925a1.076 1.076 0 11-1.522 0l.007-.007a1.067 1.067 0 011.508 0z" />
|
||||
<Path Fill="#005ba1" Data="M1.279 9.921a1.554 1.554 0 100-2.2 1.554 1.554 0 000 2.2zM1.893 8.1a.874.874 0 11-.241.241.891.891 0 01.241-.241z" />
|
||||
<Path Data="M15.762 6.978h-5.286a.522.522 0 100 1.044h5.338a.522.522 0 100-1.044z" Fill="#ffffff" Opacity="0.6" />
|
||||
<Path Data="M6.74 8.787a.245.245 0 00.347 0l2.1-2.1a.245.245 0 000-.347l-.163-.163a.246.246 0 00-.346 0L6.914 7.936l-.607-.606a.249.249 0 00-.346 0L5.8 7.5a.246.246 0 000 .346z" Fill="#ffffff" Opacity="0.8" />
|
||||
<Path Data="M15.788 10.016H10.5a.522.522 0 000 1.044h5.338a.522.522 0 100-1.044z" Fill="#ffffff" Opacity="0.6" />
|
||||
<Path Data="M6.767 11.825a.244.244 0 00.346 0l2.1-2.1a.247.247 0 000-.347l-.164-.163a.245.245 0 00-.346 0L6.94 10.974l-.606-.607a.251.251 0 00-.346 0l-.166.166a.245.245 0 000 .347z" Fill="#ffffff" Opacity="0.8" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,9 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#3898C6" Data="M0 44.963c0 1.056.898 1.912 2.007 1.912h45.986c1.109 0 2.007-.857 2.007-1.912v-33.61H0v33.61z" />
|
||||
<Path Fill="#7B7B7B" Data="M47.993 3.125H2.007A2.014 2.014 0 000 5.149V12.5h50V5.149a2.015 2.015 0 00-2.007-2.024z" />
|
||||
<Path Data="M3.125 12.5h43.75v31.25H3.125z" Fill="#FFFFFF" />
|
||||
<Path Fill="#3898C6" Data="M25 18.75h15.625v3.125H25zM25 25h12.5v3.125H25zm0 6.25h15.625v3.125H25zM9.375 18.75V37.5h12.5V18.75h-12.5zm9.375 15.625H12.5v-12.5h6.25v12.5z" />
|
||||
<Path Fill="#FFFFFF" Data="M43.75 6.25h3.125v3.125H43.75zm-6.25 0h3.125v3.125H37.5zm-6.25 0h3.125v3.125H31.25z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,38 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="aea576e5-fef8-4bf5-a6dd-590c075a08c5" StartPoint="0.0834000036120415,0.119599997997284" EndPoint="0.0834000036120415,0.0186000000685453" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#d2ebff" />
|
||||
<GradientStop Offset="1" Color="#f0fffd" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="ae1611cd-4cf1-4ed1-b5e1-db19220ee586" StartPoint="0.141499996185303,0.204099997878075" EndPoint="0.141499996185303,0.0233999993652105" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#0078d4" />
|
||||
<GradientStop Offset="0.17" Color="#1c84dc" />
|
||||
<GradientStop Offset="0.38" Color="#3990e4" />
|
||||
<GradientStop Offset="0.59" Color="#4d99ea" />
|
||||
<GradientStop Offset="0.8" Color="#5a9eee" />
|
||||
<GradientStop Offset="1" Color="#5ea0ef" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="bb0a651b-bb97-4569-a23e-5fed56c1e359" StartPoint="0.141499996185303,0.155300006270409" EndPoint="0.141499996185303,0.0520000010728836" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection />
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Rectangle Width="16.68" Height="11.87" Canvas.Top="1.03" Fill="#0078d4" RadiusX="0.6" RadiusY="0.6" />
|
||||
<Rectangle Width="14.74" Height="10.1" Canvas.Left="0.97" Canvas.Top="1.86" Fill="{StaticResource aea576e5-fef8-4bf5-a6dd-590c075a08c5}" Opacity='0.9' RadiusX="0.3" RadiusY="0.3" />
|
||||
<Rectangle Width="7.7" Height="12.85" Canvas.Left="10.3" Canvas.Top="4.12" Fill="{StaticResource ae1611cd-4cf1-4ed1-b5e1-db19220ee586}" RadiusX="0.3" RadiusY="0.3" />
|
||||
<Rectangle Width="1.77" Height="0.24" Canvas.Left="13.27" Canvas.Top="4.55" Fill="#f2f2f2" RadiusX="0.11" RadiusY="0.11" />
|
||||
<Rectangle Width="6.25" Height="10.33" Canvas.Left="11.03" Canvas.Top="5.2" Fill="{StaticResource bb0a651b-bb97-4569-a23e-5fed56c1e359}" Opacity='0.9' RadiusX="0.14" RadiusY="0.14" />
|
||||
<Rectangle Width="1.77" Height="0.24" Canvas.Left="7.48" Canvas.Top="1.4" Fill="#f2f2f2" RadiusX="0.11" RadiusY="0.11" />
|
||||
<Rectangle Width=".86" Height="0.73" Canvas.Left="13.72" Canvas.Top="15.96" Fill="#f2f2f2" RadiusX="0.2" RadiusY="0.2" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,19 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="A" StartPoint="0.0703999996185303,0.75" EndPoint="0.0703999996185303,0.163499996066093" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0.18" Color="#5ea0ef" />
|
||||
<GradientStop Offset="1" Color="#0078d4" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Path Data="M14 8c0 4.58-5.53 8.26-6.73 9a.47.47 0 0 1-.46 0C5.6 16.25.07 12.57.07 8V2.48a.44.44 0 0 1 .43-.43C4.8 1.93 3.8 0 7 0s2.23 1.9 6.54 2a.44.44 0 0 1 .42.43z" Fill="#5ea0ef" />
|
||||
<Path Data="M13.42 8c0 4.2-5.08 7.57-6.18 8.26a.4.4 0 0 1-.42 0C5.72 15.6.65 12.23.65 8V3A.39.39 0 0 1 1 2.59C5 2.48 4.07.75 7 .75s2.05 1.73 6 1.84a.4.4 0 0 1 .4.4z" Fill="#60b0ef" />
|
||||
<Path Data="M7 8.55V.75c3 0 2.05 1.73 6 1.84a.41.41 0 0 1 .4.4V8.5zm0 0H.67c.4 4 5.1 7.1 6.15 7.75a.34.34 0 0 0 .17.05H7z" Fill="{StaticResource A}" />
|
||||
<Path Data="M1 2.6C5 2.48 4.07.75 7 .75v7.8H.67V3A.4.4 0 0 1 1 2.59zm12.4 5.95H7v7.8a.34.34 0 0 0 .17-.05c1.13-.66 5.83-3.8 6.22-7.75z" Fill="#0078d4" />
|
||||
<Path Data="M14.13 17.8l.33-1.08.63-.37 1.1.48.7-.72V16l-.5-1 .3-.68 1.1-.4.12-.05v-1h-.14l-1.08-.33-.36-.63.47-1.1-.72-.7H16l-1 .5-.7-.3-.44-1.22h-1l-.05.14-.33 1.08-.7.3-1.18-.54-.7.72.07.13.52 1-.28.7-1.2.45v1l.14.05 1.08.33.3.7L10 16.3l.73.7.13-.07 1-.53.7.28.52 1.3h1zm-1.63-3.23a1.45 1.45 0 1 1 2 0 1.44 1.44 0 0 1-2 0z" Fill="#949494" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,15 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Data="M46 33c0 1.657-1.359 3-3.036 3H3.036C1.359 36 0 34.657 0 33V3c0-1.657 1.359-3 3.036-3h39.928C44.641 0 46 1.343 46 3v30z" Fill="#3E3E3E" />
|
||||
<Path Fill="#3898C6" Data="M2.962 5H43v26H2.962z" />
|
||||
<Path Data="M31 0H3a3 3 0 00-3 3v30a3 3 0 003 3h12L31 0z" Fill="#ffffff" Opacity=".15" />
|
||||
<Path Data="M26 2.689c0 .38-.308.688-.688.688H20.89a.689.689 0 110-1.377h4.422c.38 0 .688.309.688.689" Fill="#ffffff" />
|
||||
<Path Data="M50 47.545C50 48.901 48.913 50 47.572 50H29.428C28.087 50 27 48.901 27 47.545v-31.09C27 15.099 28.087 14 29.428 14h18.143C48.913 14 50 15.099 50 16.455v31.09z" Fill="#3E3E3E" />
|
||||
<Path Fill="#5AB3D9" Data="M29 18h19v27H29z" />
|
||||
<Path Data="M42.607 16.171c0 .335-.436.606-.974.606H35.37c-.54 0-.977-.271-.977-.606 0-.335.437-.607.977-.607h6.263c.538 0 .974.272.974.607" Fill="#ffffff" />
|
||||
<Path Data="M45.089 14H29.464A2.46 2.46 0 0027 16.455v31.091A2.458 2.458 0 0029.464 50H31.6l13.489-36z" Opacity=".15" Fill="#ffffff" />
|
||||
<Ellipse Canvas.Left="8" Canvas.Top="20" Width="27" Height="27" Fill="#B82025" />
|
||||
<Path Fill="#2A3280" Data="M21.5 21C28.393 21 34 26.607 34 33.5S28.393 46 21.5 46 9 40.393 9 33.5 14.607 21 21.5 21m0-1C14.044 20 8 26.044 8 33.5S14.044 47 21.5 47 35 40.956 35 33.5 28.956 20 21.5 20z" Opacity=".5" />
|
||||
<Path Data="M22.856 36l.679-11H19.46l.679 11h2.717zm-1.354 2.1a1.903 1.903 0 00-1.905 1.899c0 1.05.854 1.901 1.905 1.901a1.902 1.902 0 001.904-1.901 1.902 1.902 0 00-1.904-1.899z" Fill="#ffffff" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Data="M0 44.062C0 45.132.898 46 2.007 46h45.986C49.102 46 50 45.132 50 44.062V11H0v33.062z" Fill="#3999C6" />
|
||||
<Path Data="M47.993 3H2.007C.898 3 0 3.966 0 5.159V12h50V5.159C50 3.966 49.101 3 47.993 3z" Fill="#7a7a7a" />
|
||||
<Path Data="M2.014 3C.906 3 .007 3.861.007 4.923v39.153C.007 45.138.906 46 2.014 46h17.188L41.62 3H2.014z" Fill="#ffffff" Opacity=".1"/>
|
||||
<Path Data="M3 12h44v31H3z" Fill="#ffffff" />
|
||||
<Path Data="M25 19h16v3H25zm0 12h16v3H25z" Fill="#3999C6" />
|
||||
<Path Data="M44 6h3v3h-3zm-6 0h3v3h-3zm-6 0h3v3h-3z" Fill="#ffffff" />
|
||||
<Path Data="M7.161 32.753a.463.463 0 01-.123-.334.46.46 0 01.151-.315l1.21-1.119a.456.456 0 01.31-.122c.129 0 .245.052.334.149l3.208 3.44 5.622-7.202a.448.448 0 01.36-.176c.103 0 .199.034.28.098l1.31 1.011a.43.43 0 01.176.302c.01.1-.002.236-.108.346l-7.233 9.262a.33.33 0 01-.501.022l-4.996-5.362zm0-12.072a.463.463 0 01-.123-.334.46.46 0 01.151-.315l1.21-1.119a.456.456 0 01.31-.122c.129 0 .245.052.334.149l3.208 3.44 5.622-7.202a.448.448 0 01.36-.176c.103 0 .199.034.28.098l1.31 1.011a.43.43 0 01.176.302c.01.1-.002.236-.108.346l-7.233 9.262a.33.33 0 01-.501.022l-4.996-5.362z" Fill="#3999C6" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,10 @@
|
||||
<Viewbox Width="18" Height="18" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Width="18" Height="18">
|
||||
<Path Fill="#FF225086" Data="m3.802,14.032c.388,.242,1.033,.511,1.715,.511 .621,0,1.198,-.18,1.676,-.487 0,0,.001,0,.002,-.001 l1.805,-1.128 v4.073 c-.286,0,-.574,-.078,-.824,-.234 l-4.374,-2.734 Z"/>
|
||||
<Path Fill="#FF66DDFF" Data="m7.853,1.507 L.353,9.967 c-.579,.654,-.428,1.642,.323,2.111 0,0,2.776,1.735,3.126,1.954 .388,.242,1.033,.511,1.715,.511 .621,0,1.198,-.18,1.676,-.487 0,0,.001,0,.002,-.001 l1.805,-1.128 -4.364,-2.728 4.365,-4.924 V1 s0,0,0,0 c-.424,0,-.847,.169,-1.147,.507 Z"/>
|
||||
<Polygon Fill="#FFcbf8ff" Points="4.636,10.199 4.688,10.231 9,12.927 9.001,12.927 9.001,5.276 9,5.275 4.636,10.199"/>
|
||||
<Path Fill="#FF074793" Data="m17.324,12.078 c.751,-.469,.902,-1.457,.323,-2.111 l-4.921,-5.551 c-.397,-.185,-.842,-.291,-1.313,-.291 -.925,0,-1.752,.399,-2.302,1.026 l-.109,.123 h0 s4.364,4.924,4.364,4.924 h0 s0,0,0,0 l-4.365,2.728 v4.073 c.287,0,.573,-.078,.823,-.234 l7.5,-4.688 Z"/>
|
||||
<Path Fill="#FF0294e4" Data="m9.001,1 v4.275 s.109,-.123,.109,-.123 c.55,-.627,1.377,-1.026,2.302,-1.026 .472,0,.916,.107,1.313,.291 l-2.579,-2.909 c-.299,-.338,-.723,-.507,-1.146,-.507 Z"/>
|
||||
<Polygon Fill="#FF96bcc2" Points="13.365,10.199 9.001,5.276 9.001,12.926 13.365,10.199"/>
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,5 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#2072B8" Data="M25 4.885v16.99h21.875V3.124zM3.125 6.647v15.228h18.75V5.137zM25 41.989v-16.99h21.875V43.75zM3.125 40.227V24.999h18.75v16.738z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,26 @@
|
||||
<Viewbox Width="18" Height="18" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Viewbox.Resources>
|
||||
<LinearGradientBrush x:Key="blueBase" MappingMode="Absolute" StartPoint="171.5,396.0" EndPoint="314.3,90.6">
|
||||
<GradientStop Offset="0.02" Color="#FF1169DA"/>
|
||||
<GradientStop Offset="0.44" Color="#FF0151BD"/>
|
||||
<GradientStop Offset="0.61" Color="#FF014DB7"/>
|
||||
<GradientStop Offset="1" Color="#FF126AD9"/>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="cyanWave" MappingMode="Absolute" StartPoint="114.7,97.5" EndPoint="182.1,383.7">
|
||||
<GradientStop Offset="0" Color="#FF92EEFE"/>
|
||||
<GradientStop Offset="0.56" Color="#FF35DDFF"/>
|
||||
<GradientStop Offset="1" Color="#FF08B1F9"/>
|
||||
</LinearGradientBrush>
|
||||
</Viewbox.Resources>
|
||||
<Canvas Width="401" Height="396" ClipToBounds="True">
|
||||
<!-- Outer wave shape (dark blue) -->
|
||||
<Path Fill="{StaticResource blueBase}"
|
||||
Data="M0.685 65.852 C0.685 14.765 67.486 -13.203 111.616 19.408 L207.551 90.254 L288.514 44.373 C331.305 21.039 399.874 37.775 400.685 101.559 L400.685 336.622 C400.685 387.71 335.845 414.343 291.715 381.732 L194.031 309.34 L112.973 355.23 C69.778 378.784 0.753 360.714 0.753 298.637 C0.753 224.124 0.685 252.734 0.685 65.852 Z"/>
|
||||
<!-- Inner face (medium cyan — creates the 3-D fold effect) -->
|
||||
<Path Fill="#FF23C0FE"
|
||||
Data="M111.616 19.408 C67.486 -13.203 0.685 14.765 0.685 65.852 V295.742 C0.685 290.153 3.533 279.026 3.533 279.026 C16.695 236.001 72.649 219.869 111.36 248.223 L291.715 381.732 C335.845 414.343 400.685 387.71 400.685 336.622 V101.559 C400.685 145.201 343.643 189.011 289.755 151.051 Z"/>
|
||||
<!-- Foreground wave highlight (light cyan gradient) -->
|
||||
<Path Fill="{StaticResource cyanWave}"
|
||||
Data="M111.616 149.691 C67.486 117.08 0.685 145.048 0.685 196.135 L0.685 65.852 C0.685 14.765 67.486 -13.203 111.616 19.408 C170.996 63.289 230.374 107.171 289.755 151.051 C343.643 189.011 400.685 145.201 400.685 101.559 V234.89 C400.685 285.978 333.885 313.946 289.755 281.334 C230.374 237.454 170.996 193.572 111.616 149.691 Z"/>
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Viewbox Width="18" Height="18" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Path Data="M0 0h16v16H0z" Fill="#FFFFFF" />
|
||||
<Path Data="M0 0h16v16H0z" Fill="#FFFFFF" />
|
||||
<Path Data="M15.429 13.429H.57L0 12.857V2.571L.571 2H15.43l.571.571v10.286l-.571.572ZM1.143 12.286h13.714V3.143H1.143v9.143Z" Fill="#212121" />
|
||||
<Path Data="M14.859 3.143H1.145v9.143h13.714V3.143Z" Fill="#FEF7B2" />
|
||||
<Path Data="M14.859 12.286H1.145V10l13.714-4.571v6.857Z" Fill="#FDE300" />
|
||||
<Path Data="M13.716 4.286v6.857H2.287V4.286h11.429Zm1.143-1.143H1.145v9.143h13.714V3.143Z" Fill="#FFFFFF" />
|
||||
<Path Data="M10.286 12.286H5.715v1.143h4.571v-1.143Z" Fill="#9E9FA0" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,5 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="16" Width="16">
|
||||
<Path Fill="#000000" Data="M8 0a7.6 7.6 0 012.1.3 6.4 6.4 0 011.9.8 10.4 10.4 0 011.7 1.2A10.4 10.4 0 0114.9 4a6.4 6.4 0 01.8 1.9 7.5 7.5 0 010 4.2 6.4 6.4 0 01-.8 1.9 10.4 10.4 0 01-1.2 1.7 10.4 10.4 0 01-1.7 1.2 6.4 6.4 0 01-1.9.8 7.5 7.5 0 01-4.2 0 6.4 6.4 0 01-1.9-.8 10.4 10.4 0 01-1.7-1.2A10.4 10.4 0 011.1 12a6.4 6.4 0 01-.8-1.9 7.5 7.5 0 010-4.2A6.4 6.4 0 011.1 4a10.4 10.4 0 011.2-1.7A10.4 10.4 0 014 1.1 6.4 6.4 0 015.9.3 7.6 7.6 0 018 0zM1 8a6.4 6.4 0 00.3 2h2.8A3.4 3.4 0 004 9V7a3.4 3.4 0 00.1-1H1.3A6.4 6.4 0 001 8zm4.7-6.6a3.4 3.4 0 00-1.2.6l-1.2.8-.9 1A7.5 7.5 0 001.7 5h2.6a2.9 2.9 0 01.2-.9l.3-1 .4-.9a5.6 5.6 0 01.5-.8zm-4 9.6a7.5 7.5 0 00.7 1.2l.9 1 1.2.8a3.4 3.4 0 001.2.6 5.6 5.6 0 01-.5-.8l-.4-.9-.3-1a2.9 2.9 0 01-.2-.9zm9.2-1a3.4 3.4 0 01.1-1V7a3.4 3.4 0 01-.1-1H5.1A3.4 3.4 0 015 7v2a3.4 3.4 0 01.1 1zM8 1l-.7.2-.6.6-.5.7a3.6 3.6 0 00-.4.9l-.3.9a2.5 2.5 0 00-.2.7h5.4a2.5 2.5 0 00-.2-.7l-.3-.9a3.6 3.6 0 00-.4-.9l-.5-.7-.6-.6zm0 14l.7-.2.6-.6.5-.7a3.6 3.6 0 00.4-.9l.3-.9a2.5 2.5 0 00.2-.7H5.3a2.5 2.5 0 00.2.7l.3.9a3.6 3.6 0 00.4.9l.5.7.6.6zm6.3-10a7.5 7.5 0 00-.7-1.2l-.9-1-1.2-.8-1.2-.6a5.6 5.6 0 01.5.8l.4.9.3 1a2.9 2.9 0 01.2.9zm-4 9.6a3.4 3.4 0 001.2-.6l1.2-.8.9-1a7.5 7.5 0 00.7-1.2h-2.6a2.9 2.9 0 01-.2.9l-.3 1-.4.9a5.6 5.6 0 01-.5.8zM15 8a6.4 6.4 0 00-.3-2h-2.8a3.4 3.4 0 00.1 1v2a3.4 3.4 0 00-.1 1h2.8a6.4 6.4 0 00.3-2z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,16 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="64" Width="64">
|
||||
<Ellipse Canvas.Left="1.75" Canvas.Top="1.75" Width="60.5" Height="60.5" StrokeThickness="1.5" Stroke="#707070" />
|
||||
<Canvas Height="64" Width="64">
|
||||
<Canvas.RenderTransform>
|
||||
<MatrixTransform Matrix=".9 0 0 .9 10.4 10.4" />
|
||||
</Canvas.RenderTransform>
|
||||
<Rectangle Canvas.Left="13.3" Canvas.Top="12.3" Width="21.4" Height="28.5" StrokeThickness="2.5" Stroke="#707070" RadiusX="0.6" RadiusY="0.6" />
|
||||
<Ellipse Canvas.Top="21.799999999999997" Canvas.Left="20.4" Width="7.2" Height="7.2" StrokeThickness="2.5" Stroke="#707070" />
|
||||
<Path Data="M18 35a1 1 0 1112 0" StrokeThickness="2.5" Stroke="#707070" />
|
||||
</Canvas>
|
||||
<Canvas>
|
||||
<Path Data="M36.68 14h2.34l-3.24 6.75h-2.43zM24.89 14h2.43l5.58 11.25a1.046 1.046 0 01-1.791 1.08l-.549-1.08z" Fill="#707070" />
|
||||
</Canvas>
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,12 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="64" Width="64">
|
||||
<Ellipse Canvas.Left="1.75" Canvas.Top="1.75" Width="60.5" Height="60.5" StrokeThickness="1.5" Stroke="#707070" />
|
||||
<Canvas Height="64" Width="64">
|
||||
<Canvas.RenderTransform>
|
||||
<MatrixTransform Matrix="1.1 0 0 1.1 8.8 5.61" />
|
||||
</Canvas.RenderTransform>
|
||||
<Ellipse Canvas.Top="10.5" Canvas.Left="13" Width="14" Height="14" StrokeThickness="2.5" Stroke="#707070" />
|
||||
<Path Data="M30 35h10m-5-5v10M30.833 32.09A11 11 0 009 34" StrokeThickness="2.5" Stroke="#707070" />
|
||||
</Canvas>
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,22 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Viewbox.Resources>
|
||||
<LinearGradientBrush x:Key="2234a2b0-8e35-4cb8-93a2-033d950b05a2" StartPoint="0.090379998087883,0.101590000092983" EndPoint="0.090379998087883,0.0783400014042854" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#5e9624" />
|
||||
<GradientStop Offset="0.241" Color="#6fb02a" />
|
||||
<GradientStop Offset="0.501" Color="#7cc52f" />
|
||||
<GradientStop Offset="0.756" Color="#83d232" />
|
||||
<GradientStop Offset="1" Color="#86d633" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Viewbox.Resources>
|
||||
<Canvas Height="18" Width="18">
|
||||
<Path Fill="{StaticResource 2234a2b0-8e35-4cb8-93a2-033d950b05a2}" Data="M13.9 8.989a1.158 1.158 0 11-1.159-1.155A1.157 1.157 0 0113.9 8.989zm-4.866-1.15a1.158 1.158 0 101.159 1.156 1.157 1.157 0 00-1.159-1.156zm-3.7 0A1.158 1.158 0 106.493 9a1.158 1.158 0 00-1.159-1.156z" />
|
||||
<Path Fill="#50e6ff" Data="M6.184 13.633l-.664.665a.3.3 0 01-.424 0L.184 9.402a.6.6 0 01-.001-.848l.664-.666 5.335 5.32a.3.3 0 010 .425z" />
|
||||
<Path Fill="#1490df" Data="M5.421 3.701l.67.667a.3.3 0 010 .425l-5.245 5.26-.666-.664a.6.6 0 010-.849L5 3.706a.3.3 0 01.425 0z" />
|
||||
<Path Fill="#50e6ff" Data="M17.154 7.885l.664.665a.6.6 0 01-.001.849l-4.912 4.897a.3.3 0 01-.424 0l-.664-.666a.3.3 0 010-.424l5.337-5.321z" />
|
||||
<Path Fill="#1490df" Data="M17.823 9.386l-.665.664-5.245-5.26a.3.3 0 010-.424l.67-.668a.3.3 0 01.424 0l4.82 4.834a.6.6 0 01-.002.849z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,8 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="20.9" Width="19.9">
|
||||
<Path Data="M8 17.1c-.2 0-.4.3-.4.8 0 1.5 1.2 2.6 2.7 2.6S13 19.4 13 18c0-.5-.1-.9-.4-.9H8z" Fill="#FCD116" />
|
||||
<Path Data="M17 16.1V6.7c0-3.4-3.4-6.2-7-6.2S3 3.3 3 6.7v9.4H1v2h18v-2h-2z" Fill="#FF8C00" />
|
||||
<Path Data="M14.6 2.3C13.4 1.2 11.6.5 9.7.5 6.1.5 3 3.3 3 6.7v7L14.6 2.3z" Opacity="0.2" Fill="#FFFFFF" />
|
||||
<Path Data="M1 16.1h18v2H1z" Fill="#1e1e1e" Opacity="0.2" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,24 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="de1cccc6-47f0-46c5-9f1a-e61eeb0d70ee" StartPoint="0.0966000035405159,0.152300000190735" EndPoint="0.0966000035405159,0.0500999987125397" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#0078d4" />
|
||||
<GradientStop Offset="0.82" Color="#5ea0ef" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Path Data="M4.37 3.58h7.97v9.68H4.37z" Fill="#FFFFFF" />
|
||||
<Path Fill="#0078d4" Data="M5.08 13h-.46V3.83h7.48v3.94h.5V3.58a.25.25 0 00-.25-.25h-8a.28.28 0 00-.25.25v9.69a.27.27 0 00.08.18.26.26 0 00.17.07h.71z" />
|
||||
<Path Data="M9.84 4.61H5.42a.35.35 0 00-.35.39v9.38a.35.35 0 00.35.34h7.68a.35.35 0 00.34-.35V8.12a.35.35 0 00-.35-.35h-2.54a.35.35 0 01-.35-.35V5a.34.34 0 00-.36-.39z" Fill="#FFFFFF" />
|
||||
<Path Fill="{StaticResource de1cccc6-47f0-46c5-9f1a-e61eeb0d70ee}" Data="M9.68 5.05V7.4a.86.86 0 00.87.86H13v6H5.55V5.05h4.13m.17-.52H5.37a.36.36 0 00-.37.35v9.52a.36.36 0 00.36.35h7.77a.35.35 0 00.36-.35V8.09a.34.34 0 00-.36-.34h-2.57a.35.35 0 01-.35-.35V4.88a.36.36 0 00-.36-.35z" />
|
||||
<Path Fill="#0078d4" Data="M13.36 7.81l-3.28-3.2v2.61a.59.59 0 00.59.6z" />
|
||||
<Path Fill="#4d4d4d" Data="M11.72 9.34h-5a.17.17 0 01-.18-.17.18.18 0 01.22-.17h5a.18.18 0 01.18.18.17.17 0 01-.22.16zm0 1h-5a.18.18 0 01-.18-.18.18.18 0 01.22-.16h5a.18.18 0 01.18.17.18.18 0 01-.22.17zm0 1.01h-5a.18.18 0 01-.18-.18.17.17 0 01.22-.17h5a.17.17 0 01.18.17.18.18 0 01-.22.18z" />
|
||||
<Path Fill="#949494" Data="M.5 15.39a.15.15 0 00.09.14l1.23.69 2.1 1.17a.17.17 0 00.23-.06l.71-1.18a.17.17 0 00-.06-.23l-2.46-1.37a.16.16 0 01-.08-.14V3.59a.16.16 0 01.08-.14L4.8 2.08a.17.17 0 00.06-.23L4.15.67a.17.17 0 00-.23-.06L1.86 1.76l-1.27.71a.15.15 0 00-.09.14v12.78z" />
|
||||
<Path Fill="#a3a3a3" Data="M2.25 3.51a.13.13 0 01.07-.06l2.45-1.37a.17.17 0 00.06-.23L4.13.67a.19.19 0 00-.24-.06l-2 1.15-1.33.71a.17.17 0 00-.06.06l1 .53zm2.52 12.41l-2.45-1.37a.2.2 0 01-.08-.08l-1.73 1h.05l1.24.69 2.09 1.17a.19.19 0 00.24-.06l.7-1.18a.17.17 0 00-.06-.17z" />
|
||||
<Path Fill="#949494" Data="M17.5 15.39a.15.15 0 01-.09.14l-1.23.69-2.1 1.17a.17.17 0 01-.23-.06l-.71-1.18a.17.17 0 01.06-.23l2.46-1.37a.16.16 0 00.08-.14V3.59a.16.16 0 00-.08-.14L13.2 2.08a.17.17 0 01-.06-.23l.71-1.18a.17.17 0 01.23-.06l2.06 1.15 1.27.71a.15.15 0 01.09.14v12.78z" />
|
||||
<Path Fill="#a3a3a3" Data="M15.75 3.51a.13.13 0 00-.07-.06l-2.45-1.37a.17.17 0 01-.06-.23l.7-1.18a.19.19 0 01.24-.06l2.05 1.15 1.28.71a.17.17 0 01.06.06l-1 .53zm-2.52 12.41l2.45-1.37a.2.2 0 00.08-.08l1.73 1-1.24.69-2.09 1.17a.19.19 0 01-.24-.06l-.7-1.18a.17.17 0 01.01-.17z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,5 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="16" Width="16">
|
||||
<Path Fill="#000000" Data="M12.5 1.4a10.7 10.7 0 011.9 1.8 7.8 7.8 0 011.2 2.2A7.5 7.5 0 0116 8a7.6 7.6 0 01-.3 2.1 6.4 6.4 0 01-.8 1.9 10.4 10.4 0 01-1.2 1.7 10.4 10.4 0 01-1.7 1.2 6.4 6.4 0 01-1.9.8 7.5 7.5 0 01-4.2 0 6.4 6.4 0 01-1.9-.8 10.4 10.4 0 01-1.7-1.2A10.4 10.4 0 011.1 12a6.4 6.4 0 01-.8-1.9 7.5 7.5 0 010-4.2 11.9 11.9 0 01.8-2 10.1 10.1 0 011.3-1.6A10.9 10.9 0 014.1 1H2V0h4v4H5V1.7a6.2 6.2 0 00-1.7 1.1 6.1 6.1 0 00-1.2 1.5A5.3 5.3 0 001.3 6 6.9 6.9 0 001 8a6.3 6.3 0 00.3 1.9 4.6 4.6 0 00.7 1.6 4.9 4.9 0 001.1 1.4A4.9 4.9 0 004.5 14l1.6.8L8 15l1.9-.2 1.6-.8a4.9 4.9 0 001.4-1.1 4.9 4.9 0 001.1-1.4 8 8 0 00.8-1.6A12.3 12.3 0 0015 8a6.2 6.2 0 00-.4-2.3 6.9 6.9 0 00-1-1.9 8.7 8.7 0 00-1.7-1.6 7.2 7.2 0 00-2-.9l.2-1a6.6 6.6 0 012.4 1.1z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,7 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#3898C6" Data="M9.375 3.125h37.5V50h-37.5z" />
|
||||
<Path Fill="#7B7B7B" Data="M3.125 6.25H12.5v3.125H3.125zm0 9.375H12.5v3.125H3.125zm0 9.375H12.5v3.125H3.125zm0 9.375H12.5V37.5H3.125zm0 9.375H12.5v3.125H3.125z" />
|
||||
<Path Data="M18.75 15.625H37.5V25H18.75z" Fill="#ffffff" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,30 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="de1cccc6-47f0-46c5-9f1a-e61eeb0d7154" StartPoint="0.0793000012636185,0.179499998688698" EndPoint="0.0793000012636185,0.0562000013887882" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#5e9624" />
|
||||
<GradientStop Offset="1" Color="#b4ec36" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="de1cccc6-47f0-46c5-9f1a-e61eeb0d7155" StartPoint="0.0794999971985817,0.0921000018715858" EndPoint="0.0794999971985817,0" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#5e9624" />
|
||||
<GradientStop Offset="1" Color="#b4ec36" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Path Fill="{StaticResource de1cccc6-47f0-46c5-9f1a-e61eeb0d7154}" Data="M14 16.85a1.3 1.3 0 001.32-1.31.81.81 0 000-.16c-.52-4.15-2.88-7.53-7.4-7.53S1 10.71.51 15.39a1.34 1.34 0 001.19 1.46H14z" />
|
||||
<Path Data="M8 8.83a4.16 4.16 0 01-2.26-.66L7.92 14l2.22-5.79A4.2 4.2 0 018 8.83z" Fill="#ffffff" />
|
||||
<Ellipse Canvas.Left="3.7800000000000002" Canvas.Top="0.5" Width="8.34" Height="8.34" Fill="{StaticResource de1cccc6-47f0-46c5-9f1a-e61eeb0d7155}" />
|
||||
<Path Fill="#32bedd" Data="M17.49 11.13v4.24l-3.64 2.13v-4.24l3.64-2.13z" />
|
||||
<Path Fill="#9cebff" Data="M17.49 11.13l-3.64 2.13-3.64-2.13L13.85 9l3.64 2.13z" />
|
||||
<Path Fill="#50e6ff" Data="M13.85 13.26v4.24l-3.64-2.13v-4.24l3.64 2.13z" />
|
||||
<Path Fill="#9cebff" Data="M10.21 15.37l3.64-2.11v4.24l-3.64-2.13z" />
|
||||
<Path Fill="#50e6ff" Data="M17.49 15.37l-3.64-2.11v4.24l3.64-2.13z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,7 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="17" Width="13">
|
||||
<Path Fill="#0f0f0f" Data="M2.7 7.3L1.4 6l5-5H10v2h1V0H6L0 6l2 2 .7-.7zM8 6l-6 6 5 5 6-6V6zm4 4.6l-5 5L3.4 12l5-5H12z" />
|
||||
<Path Fill="#0f0f0f" Data="M3.7 10.3L2.4 9l5-5H11v2h1V3H7L1 9l2 2 .7-.7z" />
|
||||
<Ellipse Fill="#0f0f0f" Canvas.Left="10" Canvas.Top="8" Width="1" Height="1" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,21 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Viewbox.Resources>
|
||||
<LinearGradientBrush x:Key="a24f9983-911f-4df7-920f-f964c8c10f82" StartPoint="0.0900000035762787,0.158340007066727" EndPoint="0.0900000035762787,0.0578799992799759" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#32bedd" />
|
||||
<GradientStop Offset="0.175" Color="#32caea" />
|
||||
<GradientStop Offset="0.41" Color="#32d2f2" />
|
||||
<GradientStop Offset="0.775" Color="#32d4f5" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Viewbox.Resources>
|
||||
<Canvas Height="18" Width="18">
|
||||
<Path Fill="{StaticResource a24f9983-911f-4df7-920f-f964c8c10f82}" Data="M.5 5.788h17v9.478a.568.568 0 01-.568.568H1.068a.568.568 0 01-.568-.568V5.788z" />
|
||||
<Path Fill="#0078d4" Data="M1.071 2.166h15.858a.568.568 0 01.568.568v3.054H.5V2.734a.568.568 0 01.571-.568z" />
|
||||
<Path Fill="#f2f2f2" Data="M2.825 7.979l.369-.37a.167.167 0 01.236-.001l2.732 2.724a.335.335 0 010 .474l-.368.37-2.968-2.96a.167.167 0 010-.237z" />
|
||||
<Path Fill="#e6e6e6" Data="M3.249 13.504l-.37-.37a.167.167 0 010-.236l2.916-2.925.37.368a.335.335 0 010 .474l-2.683 2.691a.167.167 0 01-.236 0z" />
|
||||
<Rectangle Width="4.771" Height="1.011" Canvas.Left="7.221" Canvas.Top="12.64" Fill="#f2f2f2" RadiusX=".291" RadiusY=".291" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Path Fill="#3898C6" Data="M0 13.316c0 .378.287.684.641.684H14.36c.353 0 .64-.306.64-.684V3H0v10.316z" />
|
||||
<Path Fill="#7B7B7B" Data="M14.359 0H.641C.287 0 0 .322 0 .72V3h15V.72c0-.398-.287-.72-.641-.72z" />
|
||||
<Path Fill="#FFFFFF" Opacity=".1" Data="M.644 0C.29 0 .002.307.002.687v12.626c0 .379.288.687.642.687H5l6.854-14H.644z" />
|
||||
<Path Fill="#FFFFFF" Data="M1 3h13v10H1zm8-2h1v1H9zm2 0h1v1h-1zm2 0h1v1h-1z" />
|
||||
<Path Fill="#3898C6" Data="M5 5h6.5v1H5zM2 7h2v2H2zm0 3h2v2H2zm0-6h2v2H2zm3 4h6v1H5zm0 3h6v1H5z" />
|
||||
<Path Fill="#57D432" Data="M14.806 7.372C12.402 7.129 12 6 12 6s-.541 1.429-4 1.429v4.942c0 .619.376 1.199.896 1.706C10.075 15.226 12 16 12 16s4-1.606 4-3.63V7.429c-.445 0-.841-.021-1.194-.057z" />
|
||||
<Path Fill="#B8D432" Data="M14.806 7.372C12.402 7.129 12 6 12 6s-.541 1.429-4 1.429v4.942c0 .619.376 1.199.896 1.706l5.91-6.705z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,26 @@
|
||||
<Viewbox Width="18" Height="18" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="18" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="deed83ab-7995-4b1b-9000-e569a21c2014" StartPoint="0.064690001308918,0.0795900002121925" EndPoint="0.064690001308918,0.187000006437302" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0.225" Color="#50e6ff" />
|
||||
<GradientStop Offset="1" Color="#198ab3" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="deed83ab-7995-4b1b-9000-e569a21c2015" StartPoint="0.0619699992239475,0.0220100004225969" EndPoint="0.0698100030422211,0.119529999792576" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0.225" Color="#50e6ff" />
|
||||
<GradientStop Offset="1" Color="#198ab3" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Path Data="M11.783 16.761a1.15 1.15 0 0 0 1.154-1.146 1.08 1.08 0 0 0-.008-.139c-.452-3.615-2.515-6.56-6.45-6.56-4 0-6.07 2.493-6.473 6.57a1.158 1.158 0 0 0 1.032 1.269 1.112 1.112 0 0 0 .116.006Z" Fill="{StaticResource deed83ab-7995-4b1b-9000-e569a21c2014}" />
|
||||
<Path Data="M6.541 9.773A3.6 3.6 0 0 1 4.577 9.2l1.944 5.08 1.931-5.051a3.608 3.608 0 0 1-1.911.544Z" Fill="#FFFFFF" />
|
||||
<Ellipse Canvas.Left="2.886" Canvas.Top="2.518" Width="7.256" Height="7.256" Fill="{StaticResource deed83ab-7995-4b1b-9000-e569a21c2015}" />
|
||||
<Path Data="M18 8.611V7.127l-.208-.078-1.592-.521-.416-1.015L16.6 3.8l-1.047-1.046-.208.1-1.483.754-1.015-.408-.647-1.8h-1.488l-.078.208-.52 1.592-1.009.414a3.61 3.61 0 0 1 .966 1.833 2.851 2.851 0 1 1 1.422 5.32 2.884 2.884 0 0 1-.641-.078 7.369 7.369 0 0 1 1.68 2.972l.341-1.039 1.015-.417 1.717.807 1.042-1.041-.1-.208-.754-1.484.407-1.018Z" Fill="#0078d4" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,12 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#3898C6" Data="M3.125 0h31.25l12.5 12.5V50H3.125z" />
|
||||
<Path Data="M31.25 15.625v-12.5h-25v43.75h37.5v-31.25z" Fill="#ffffff" />
|
||||
<Path Fill="#3898C6" Data="M9.375 9.375H25V12.5H9.375zm0 21.875h6.25v3.125h-6.25zm0-12.5H31.25v3.125H9.375zm0 6.25H31.25v3.125H9.375z" />
|
||||
<Path Fill="#3898C6" Data="M19.609 35.068l-.722-.776a.507.507 0 01.028-.722l2.101-1.928a.512.512 0 01.348-.137.51.51 0 01.381.163l5.77 6.134 9.922-12.611a.53.53 0 01.728-.086l2.265 1.739a.5.5 0 01.195.34.494.494 0 01-.105.375l-12.75 16.19-8.161-8.681z" />
|
||||
<Canvas>
|
||||
<Path Data="M31.75 15.125V.5h2.418l12.207 12.207v2.418z" Fill="#3898C6" />
|
||||
<Path Data="M33.961 1l11.914 11.914v1.711H32.25V1h1.711m.414-1H31.25v15.625h15.625V12.5L34.375 0z" Fill="#3898C6" />
|
||||
</Canvas>
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,6 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Data="M23 40.4c-1.2 1.2-3.1 1.2-4.3 0L3.4 25.1c-1.2-1.2-1.2-3-.1-4.2L7 17c.6-.6 1.3-.9 2.2-.9.8 0 1.6.3 2.1.9l9.6 9.6L40.5 7.2c-.5-1.5-2-2.6-3.6-2.6h-33C1.7 4.6 0 6.4 0 8.5v33c0 2.1 1.7 3.9 3.9 3.9h33c2.1 0 3.9-1.7 3.9-3.9V22.9L23 40.4z" Fill="#59b4d9" />
|
||||
<Path Data="M20.9 30.7L9.2 19l-3.6 3.8 15.3 15.4L50 9.4l-3.6-3.9z" Fill="#b8d432" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!-- This file was generated by the AiToXaml tool.-->
|
||||
<!-- Tool Version: 14.0.22307.0 -->
|
||||
<Viewbox Width="16" Height="16" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<Rectangle Width="16" Height="16">
|
||||
<Rectangle.Fill>
|
||||
<DrawingBrush>
|
||||
<DrawingBrush.Drawing>
|
||||
<DrawingGroup>
|
||||
<DrawingGroup.Children>
|
||||
<GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
|
||||
<GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M4,16C2.897,16,2,15.103,2,14L2,5 1,5 1,2 4,2C4,0.897,4.897,0,6,0L9,0C10.103,0,11,0.897,11,2L14,2 14,5 13,5 13,14C13,15.103,12.103,16,11,16z" />
|
||||
<GeometryDrawing Brush="#FFEFEFF0" Geometry="F1M10,12L9,12 9,6 10,6z M8,12L7,12 7,6 8,6z M6,12L5,12 5,6 6,6z M4,14L11,14 11,4 4,4z" />
|
||||
<GeometryDrawing Brush="#FF424242" Geometry="F1M11,4L4,4 4,14 11,14z M6,3L9,3 9,2 6,2z M13,3L13,4 12,4 12,14C12,14.552,11.552,15,11,15L4,15C3.448,15,3,14.552,3,14L3,4 2,4 2,3 5,3 5,2C5,1.448,5.448,1,6,1L9,1C9.552,1,10,1.448,10,2L10,3z M10,6L9,6 9,12 10,12z M8,6L7,6 7,12 8,12z M6,12L5,12 5,6 6,6z" />
|
||||
</DrawingGroup.Children>
|
||||
</DrawingGroup>
|
||||
</DrawingBrush.Drawing>
|
||||
</DrawingBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,5 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#2072B8" Data="M25 4.885v16.99h21.875V3.124zM3.125 6.647v15.228h18.75V5.137zM25 41.989v-16.99h21.875V43.75zM3.125 40.227V24.999h18.75v16.738z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,38 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<Canvas Width="18" Height="18">
|
||||
<Rectangle Canvas.Left="0" Canvas.Top="1.03" Width="16.68" Height="11.87" RadiusX="0.6" RadiusY="0.6" Fill="#FF0078D4"/>
|
||||
<Rectangle Canvas.Left="0.97" Canvas.Top="1.86" Width="14.74" Height="10.1" RadiusX="0.3" RadiusY="0.3" Opacity="0.9">
|
||||
<Rectangle.Fill>
|
||||
<LinearGradientBrush StartPoint="0.5,1" EndPoint="0.5,0">
|
||||
<GradientStop Offset="0" Color="#FFD2EBFF"/>
|
||||
<GradientStop Offset="1" Color="#FFF0FFFD"/>
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<Rectangle Canvas.Left="10.3" Canvas.Top="4.12" Width="7.7" Height="12.85" RadiusX="0.3" RadiusY="0.3">
|
||||
<Rectangle.Fill>
|
||||
<LinearGradientBrush StartPoint="0.5,1" EndPoint="0.5,0">
|
||||
<GradientStop Offset="0" Color="#FF0078D4"/>
|
||||
<GradientStop Offset="0.17" Color="#FF1C84DC"/>
|
||||
<GradientStop Offset="0.38" Color="#FF3990E4"/>
|
||||
<GradientStop Offset="0.59" Color="#FF4D99EA"/>
|
||||
<GradientStop Offset="0.8" Color="#FF5A9EEE"/>
|
||||
<GradientStop Offset="1" Color="#FF5EA0EF"/>
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<Rectangle Canvas.Left="13.27" Canvas.Top="4.55" Width="1.77" Height="0.24" RadiusX="0.11" RadiusY="0.11" Fill="#FFF2F2F2"/>
|
||||
<Rectangle Canvas.Left="11.03" Canvas.Top="5.2" Width="6.25" Height="10.33" RadiusX="0.14" RadiusY="0.14" Opacity="0.9">
|
||||
<Rectangle.Fill>
|
||||
<LinearGradientBrush StartPoint="0.5,1" EndPoint="0.5,0">
|
||||
<GradientStop Offset="0" Color="#FFD2EBFF"/>
|
||||
<GradientStop Offset="1" Color="#FFF0FFFD"/>
|
||||
</LinearGradientBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<Rectangle Canvas.Left="7.48" Canvas.Top="1.4" Width="1.77" Height="0.24" RadiusX="0.11" RadiusY="0.11" Fill="#FFF2F2F2"/>
|
||||
<Ellipse Canvas.Left="3.04" Canvas.Top="7.75" Width="8.42" Height="8.42" Fill="#FF76BC2D"/>
|
||||
<Path Fill="#FFFFFFFF" Data="M9.78,11.41 H7.78 V9.41 A0.47,0.47 0 0 0 7.33,9 H7.17 A0.47,0.47 0 0 0 6.7,9.47 V11.47 H4.7 A0.47,0.47 0 0 0 4.24,11.94 V12 A0.47,0.47 0 0 0 4.7,12.47 H6.7 V14.47 A0.47,0.47 0 0 0 7.17,14.93 H7.33 A0.47,0.47 0 0 0 7.8,14.47 V12.47 H9.78 A0.47,0.47 0 0 0 10.25,12 V11.84 A0.47,0.47 0 0 0 9.78,11.41 Z"/>
|
||||
<Rectangle Canvas.Left="13.72" Canvas.Top="15.96" Width="0.86" Height="0.73" RadiusX="0.2" RadiusY="0.2" Fill="#FFF2F2F2"/>
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Fill="#1D1D1D" Data="M28.125 46.875h-25A3.125 3.125 0 010 43.75V3.125A3.125 3.125 0 013.125 0h25a3.125 3.125 0 013.125 3.125V43.75a3.125 3.125 0 01-3.125 3.125z" />
|
||||
<Path Fill="#5AB3D9" Data="M3.125 3.125h25v37.5h-25z" />
|
||||
<Path Fill="#3898C6" Data="M28.125 40.625h-25V32.67l25-18.465z" />
|
||||
<Path Data="M25 6.25V37.5H6.25V6.25H25m3.125-3.125h-25v37.5h25v-37.5z" Opacity=".4" Fill="#FFFFFF" />
|
||||
<Path Fill="#E4E4E4" Data="M12.5 40.625h6.25v3.125H12.5z" />
|
||||
<Path Fill="#7FBA42" Data="M37.5 15.625h6.25V50H37.5z" />
|
||||
<Path Fill="#7FBA42" Data="M40.625 6.25l-9.375 12.5H50z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,41 @@
|
||||
<Viewbox Width="18" Height="18" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="20" Width="18">
|
||||
<Canvas.Resources>
|
||||
<LinearGradientBrush x:Key="d6e6b28a-2cd1-4618-9838-bdcda5e39040" StartPoint="0.0900000035762787,0.126819998025894" EndPoint="0.0900000035762787,0.681999981403351" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0.145" Color="#d2ebff" />
|
||||
<GradientStop Offset="0.503" Color="#dbf1fe" />
|
||||
<GradientStop Offset="0.997" Color="#f0fffd" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="d6e6b28a-2cd1-4618-9838-bdcda5e39041" StartPoint="0.0900000035762787,0.173179998993874" EndPoint="0.0900000035762787,0.126819998025894" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0.157" Color="#0078d4" />
|
||||
<GradientStop Offset="0.356" Color="#0072ca" />
|
||||
<GradientStop Offset="0.689" Color="#0064b0" />
|
||||
<GradientStop Offset="0.851" Color="#005ba1" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
<LinearGradientBrush x:Key="d6e6b28a-2cd1-4618-9838-bdcda5e39042" StartPoint="0.0900000035762787,0.126819998025894" EndPoint="0.0900000035762787,0.098800003528595" MappingMode="RelativeToBoundingBox">
|
||||
<LinearGradientBrush.GradientStops>
|
||||
<GradientStopCollection>
|
||||
<GradientStop Offset="0" Color="#0078d4" />
|
||||
<GradientStop Offset="0.127" Color="#107fd8" />
|
||||
<GradientStop Offset="0.516" Color="#3a91e5" />
|
||||
<GradientStop Offset="0.82" Color="#549cec" />
|
||||
<GradientStop Offset="1" Color="#5ea0ef" />
|
||||
</GradientStopCollection>
|
||||
</LinearGradientBrush.GradientStops>
|
||||
</LinearGradientBrush>
|
||||
</Canvas.Resources>
|
||||
<Rectangle Canvas.Top="0.682" Width="1.202" Height="12" Fill="{StaticResource d6e6b28a-2cd1-4618-9838-bdcda5e39040}" />
|
||||
<Path Data="M17.194 1.489v10.387H.806V1.489h16.388M17.4.682H.6a.6.6 0 0 0-.6.6v10.8a.6.6 0 0 0 .6.6h16.8a.6.6 0 0 0 .6-.6V1.283a.6.6 0 0 0-.6-.6Z" Fill="#0078d4" />
|
||||
<Path Data="M12.607 16.312c-1.78-.278-1.85-1.562-1.844-3.63H7.232c0 2.068-.065 3.352-1.844 3.63a1.048 1.048 0 0 0-.888 1.006h9a1.053 1.053 0 0 0-.893-1.006Z" Fill="{StaticResource d6e6b28a-2cd1-4618-9838-bdcda5e39041}" />
|
||||
<Path Data="M0 9.88h18v2.446a.356.356 0 0 1-.356.356H.607A.607.607 0 0 1 0 12.075V9.88Z" Fill="{StaticResource d6e6b28a-2cd1-4618-9838-bdcda5e39042}" />
|
||||
<Ellipse Canvas.Left="8.253" Canvas.Top="10.534" Width="1.494" Height="1.494" Fill="#c3f1ff" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,14 @@
|
||||
<Viewbox Width="18" Height="18" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Canvas Height="50" Width="50">
|
||||
<Path Data="M34 45H16c-1 0-1 0-1 1.22 0 .779 1.58.736 6.111.778h7.778c4.538-.041 6.111-.02 6.111-.778C35 45 35 45 34 45z" Fill="#3e3e3e" />
|
||||
<Path Data="M20 32.064h10c0 5.574.207 9.042 1.111 10.6 1.258 2.168 3.889 2 3.889 2.556 0 .758-1.573.737-6.111.778-.361.003-7.417.003-7.778 0-4.531-.042-6.111.001-6.111-.778 0-.556 2.626-.347 3.889-2.556.895-1.565 1.111-5.069 1.111-10.6z" Fill="#777777" />
|
||||
<Path Data="M19.936 36.222A44.75 44.75 0 0 1 19.763 39h10.47a44.728 44.728 0 0 1-.17-2.778H19.936z" />
|
||||
<Path Data="M2.326 5.651h45.349C48.837 5.651 49 6.814 49 7.977v26.744c0 1.163-1.163 2.326-2.326 2.326H3.326C2.163 37.046 1 35.884 1 34.721V7.977c0-1.163.163-2.326 1.326-2.326z" Fill="#777777" />
|
||||
<Path Data="M3.326 2h43.349A2.333 2.333 0 0 1 49 4.326V32H1V4.326A2.333 2.333 0 0 1 3.326 2z" Fill="#3e3e3e" />
|
||||
<Path Data="M4 5h42v24H4V5z" Fill="#59d4b9" />
|
||||
<Path Data="M37.158 2H3.326A2.333 2.333 0 0 0 1 4.326V32h12.294L37.158 2z" Fill="#ffffff" />
|
||||
<Path Data="M49 19 41 8.333 30 23h7v14.046h8V23h4z" Fill="#ffffff" />
|
||||
<Path Data="M38 19h6v30h-6z" Fill="#7fba00" />
|
||||
<Path Data="m41 10-9 12h18z" Fill="#7fba00" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
@@ -0,0 +1,141 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5" Grid.IsSharedSizeScope='True'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Grid Name="grdImportProperties">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" >
|
||||
<Label Content="Import folder" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}">
|
||||
<Rectangle.ToolTip>
|
||||
<TextBlock>
|
||||
This folder where exported files are located. Either a folder for exported policies or the parent folder for all exported policies<LineBreak />
|
||||
<Bold>Note</Bold>: Parent folder is recoomended. This will then include all policy types for the current group<LineBreak />
|
||||
Eg. Device Configuration will include Templates, Settings Catalog and Administrative Templates.<LineBreak />
|
||||
</TextBlock>
|
||||
</Rectangle.ToolTip>
|
||||
</Rectangle>
|
||||
</StackPanel>
|
||||
<Grid Grid.Column='1' Grid.Row='0'>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBox Text="{Binding ImportFolder}" Name="txtImportFolder" />
|
||||
<Button Grid.Column="2" Name="browseImportFolder" Padding="5,0,5,0" Width="50" ToolTip="Browse for folder">...</Button>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0" Name="spMigrationTableInfo">
|
||||
<Label Content="Migration Table" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This contains information about the exported environment e.g. Groups, ScopeTags etc. Note: This is only used when importing objects from a different tenant" />
|
||||
</StackPanel>
|
||||
<Label Grid.Column='1' Grid.Row='1' Name="lblMigrationTableInfo" Content="{Binding MigrationTableInfo}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0">
|
||||
<Label Content="Assign Scope (Tags)" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This will import ScopeTags. The ScopeTags must exist in the target environment before they can be assigned during import of an object" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='2' Name='chkImportScopes' VerticalAlignment="Center" IsChecked="{Binding ImportScopeTags, Mode=TwoWay}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,0,5,0">
|
||||
<Label Content="Import Assignments" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Import object assignments. Note: This will create groups that don't exist in the target environment" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='3' Name='chkImportAssignments' VerticalAlignment="Center" IsChecked="{Binding ImportAssignments, Mode=TwoWay}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='4' Margin="0,0,5,0">
|
||||
<Label Content="Replace Dependency IDs" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Replaces IDs of dependency objects e.g. App Config references Applications. Increases import time but makes sure objects are imported correctly. Note: Referenced objects must exist!" />
|
||||
</StackPanel>
|
||||
<CheckBox Grid.Column='1' Grid.Row='4' Name='chkReplaceDependencyIDs' VerticalAlignment="Center" IsChecked="{Binding ReplaceDependencyIDs, Mode=TwoWay}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='5' Margin="0,0,5,0" Name="lblImportType">
|
||||
<Label Content="Import Type" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}">
|
||||
<Rectangle.ToolTip>
|
||||
<TextBlock>
|
||||
Specify how files are imported<LineBreak />
|
||||
<Bold>Always import</Bold>: Always try to import the object. No detction of existing object (Default)<LineBreak />
|
||||
<Bold>Skip if object exists</Bold>: Skip import if there is an existing object with the same name and type<LineBreak />
|
||||
<Bold>Replace</Bold>: If an object is detected, it will be deleted. The assignments will be copied to the new imported object<LineBreak />
|
||||
<Bold>Replace with assignments</Bold>: If an object is detected, it will be deleted. The assignments will be copied from the imported file<LineBreak />
|
||||
<Bold>Update</Bold>: If an object is detected, settings will be replaced from the import file
|
||||
</TextBlock>
|
||||
</Rectangle.ToolTip>
|
||||
</Rectangle>
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbImportType" Margin="0,5,0,0" MinWidth="250" Grid.Row='5' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" SelectedValue="{Binding ImportType, Mode=TwoWay}" />
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row='1' VerticalAlignment="Stretch" Margin="0,5,0,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Margin="0,0,5,0" Name="grdFilesHeader">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Label Content="Import files" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Files that can be imported. Note: These must match the object type being imported!" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<DataGrid Name="dgObjectsToImport" Grid.Column='1' CanUserAddRows="False" AutoGenerateColumns="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource ControlBackgroundColor}" Margin="0,0,0,5" />
|
||||
<!--
|
||||
<ListBox Name="lstFiles" Grid.Column='1'
|
||||
SelectionMode="Single"
|
||||
VerticalAlignment="Stretch"
|
||||
Grid.IsSharedSizeScope='True'>
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="SelectedColumn" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="FileNameColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<CheckBox IsChecked="{Binding Selected}" />
|
||||
<TextBlock Text="{Binding fileName}" Grid.Column='1' Margin="5,0,0,0" />
|
||||
<TextBlock Text="{Binding displayName}" Grid.Column='2' Margin="5,0,0,0" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
</ListBox>
|
||||
<CheckBox Grid.Column='1' Grid.Row='2' Margin="7,2,0,0" IsChecked="true" Name="chkCheckAll" ToolTip="Select/Deselect all" />
|
||||
-->
|
||||
|
||||
</Grid>
|
||||
<StackPanel Name="spImportSubMenu" Grid.Row='2' Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,5">
|
||||
<Button Name="btnGetFiles" Content="Get files" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnImportSelected" Content="Import" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnCancel" Content="Cancel" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
@@ -0,0 +1,36 @@
|
||||
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title=""
|
||||
SizeToContent="WidthAndHeight"
|
||||
ResizeMode="NoResize"
|
||||
ShowInTaskbar="False"
|
||||
WindowStartupLocation="CenterOwner">
|
||||
|
||||
<Window.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="UI\WPF\Themes\Light.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid Margin="10">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Label Name="txtLabel" Grid.Column="1"></Label>
|
||||
<TextBox Name="txtValue" Grid.Column="1" Grid.Row="1" MinWidth="250"></TextBox>
|
||||
|
||||
<WrapPanel Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,15,0,0">
|
||||
<Button IsDefault="True" Name="btnOk" MinWidth="60" Margin="0,0,10,0">_OK</Button>
|
||||
<Button IsCancel="True" Name="btnCancel" MinWidth="60">_Cancel</Button>
|
||||
</WrapPanel>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,105 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid Name="grdData">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<DataGrid Name="dgIntuneManagerObjects"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
VirtualizingPanel.ScrollUnit="Pixel"
|
||||
VirtualizingPanel.VirtualizationMode="Recycling"
|
||||
Grid.Column="1"
|
||||
Grid.Row="1"
|
||||
Margin="5,4,5,4">
|
||||
<DataGrid.Resources>
|
||||
<Style TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="TextWrapping" Value="NoWrap"/>
|
||||
</Style>
|
||||
</DataGrid.Resources>
|
||||
</DataGrid>
|
||||
|
||||
<!-- Title strip stays visible even when no menu item is selected so the
|
||||
coloured header isn't missing on first load. Text/icon are blank until
|
||||
a view item is picked. MinHeight matches lblMenuTitle on the left so
|
||||
the DataGrid below this strip lines up with the first nav item. -->
|
||||
<Grid Name="grdTitle" MinHeight="30">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Border Background="{DynamicResource TitleBackgroundColor}" Margin="0,0,0,5" >
|
||||
<ContentControl Name="ccIcon" Width="24" Height="24" Margin="5,0,0,0" />
|
||||
</Border>
|
||||
<TextBlock Name="txtFormTitle" Text="" Grid.Column="1" Grid.ColumnSpan="5" FontWeight="Bold" Padding="5" Margin="0,0,0,5" Background="{DynamicResource TitleBackgroundColor}" />
|
||||
<Button Name="btnLoadAllPages" Grid.Column="2" Content="Load All" Width='100' Margin="0,5,5,7" Visibility="Collapsed" />
|
||||
<Button Name="btnLoadNextPage" Grid.Column="3" Content="Load More" Width='100' Margin="0,5,5,7" Visibility="Collapsed" />
|
||||
<Grid Grid.Column="4" Margin="0,0,5,3">
|
||||
<TextBox Name="txtFilter" MinWidth="200" MaxHeight="20" />
|
||||
<TextBlock IsHitTestVisible="False" Text="Filter" FontStyle="Italic"
|
||||
Foreground="{DynamicResource TextColor}" Opacity="0.5"
|
||||
Margin="4,0,0,0" VerticalAlignment="Center">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Visibility" Value="Collapsed"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Text, ElementName=txtFilter}" Value="">
|
||||
<Setter Property="Visibility" Value="Visible"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
<!--
|
||||
<Grid Grid.Column="2" MinWidth="200" MaxHeight="20">
|
||||
<TextBlock Text="Filter" Background="White" />
|
||||
<TextBox Name="txtFilter" Grid.Column="2" MinWidth="200" MaxHeight="20" Margin="0,0,5,3" Background="Transparent" />
|
||||
</Grid>
|
||||
-->
|
||||
</Grid>
|
||||
|
||||
<Grid Name="grdObject" Grid.Row="1" Grid.RowSpan="2" Visibility="Collapsed" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource ControlBackgroundColor}" Margin="0,0,0,0" />
|
||||
|
||||
<Grid Grid.Row="2" >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Name="txtObjectsCount" FontWeight="SemiBold" VerticalAlignment="Center" Margin="5,5,0,5"
|
||||
ToolTip="Loaded objects (filtered shown / loaded total). A trailing '+' means more pages are available on the server — click Load More / Load All to fetch them." />
|
||||
|
||||
<StackPanel Grid.Column="1" Name="spSubMenu" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,0" >
|
||||
<Button Name="btnDocument" Content="Document" MinWidth="100" Margin="0,0,5,0" IsEnabled="False" ToolTip="Generate documentation for the selected item(s) — or all listed items when none are selected" />
|
||||
<Button Name="btnView" Content="View" MinWidth="100" Margin="0,0,5,0" IsEnabled="False" ToolTip="View the json data of an item" />
|
||||
<Button Name="btnCompare" Content="Compare" MinWidth="100" Margin="0,0,5,0" IsEnabled="False" ToolTip="Compare selected object with an exported file" />
|
||||
<Button Name="btnCopy" Content="Copy" MinWidth="100" Margin="0,0,5,0" IsEnabled="False" ToolTip="Clone the selected item"/>
|
||||
<Button Name="btnDelete" Content="Delete" MinWidth="100" Margin="0,0,5,0" IsEnabled="False" ToolTip="Delete selected item(s)"/>
|
||||
<Button Name="btnImport" Content="Import" MinWidth="100" Margin="0,0,5,0" IsEnabled="False" ToolTip="Import items" />
|
||||
<Button Name="btnExport" Content="Export" MinWidth="100" IsEnabled="False" ToolTip="Export selected or all items" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Grid Name="grdNotLoggedIn" Visibility="Collapsed">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Name="txtNotLoggedIn" Content="Not logged in. Please login to view objects" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,19 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid Name="grdToolsMain">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
|
||||
<Grid Name="grdToolsInfo" Visibility="Collapsed">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,135 @@
|
||||
<TabControl Margin="5,5,0,0" Name="tcADMXPolicyConfig" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<TabItem Header="Policy">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Grid.Row="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" MinWidth="100" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="1*" MinWidth="100" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
|
||||
<TreeView Name="tvADMXCategories" />
|
||||
|
||||
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Stretch" />
|
||||
|
||||
<Grid Grid.Column="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBox Text="" Name="txtADMXFilterSettings" Margin="0,0,0,5" Visibility="Collapsed" />
|
||||
|
||||
<DataGrid Grid.Row="1" Name="dgADMXCategoryPolicies"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
AutoGenerateColumns="False"
|
||||
ColumnWidth="*"
|
||||
>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Setting" Binding="{Binding Name}" IsReadOnly="True" Width="10*" CanUserResize="True"/>
|
||||
<DataGridTextColumn Header="State" Binding="{Binding SettingStatusText}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Path" Binding="{Binding Category}" IsReadOnly="True" Width="Auto" Visibility="Collapsed" />
|
||||
</DataGrid.Columns>
|
||||
<DataGrid.ContextMenu>
|
||||
<ContextMenu Name="mnuADMXSettingsContextMenu">
|
||||
<MenuItem Header="Edit" Name="mnuADMXSettingEdit">
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
</DataGrid.ContextMenu>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Grid.Row="3" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,0" >
|
||||
<Button Name="btnADMXLoadADMX" Content="Load ADMX" MinWidth="100" Margin="0,0,5,0" ToolTip="Load ADMX file" />
|
||||
<Button Name="btnADMXLoadADML" Content="Load ADML" MinWidth="100" IsEnabled="False" ToolTip="Load ADML file if not found automatically"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Import">
|
||||
<Grid Grid.IsSharedSizeScope='True'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0">
|
||||
<Label Content="Custom Profile Name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the name of the custom profile" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtADMXProfileName" Margin="0,5,5,5" Grid.Row="0" Grid.Column="1"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1">
|
||||
<Label Content="Custom Profile Description" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Description for the custom profile" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtADMXProfileDescription" Margin="0,5,5,5" Grid.Row="1" Grid.Column="1"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="2">
|
||||
<Label Content="ADMX Policy File Name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="A unique name/id for the policy. The ADMX file will be stored in: %ProgramData%\Microsoft\PolicyManager\ADMXIngestion\Guid\AppName\Policy" />
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<Grid Grid.Row="2" Grid.Column="1" >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Text="" Name="txtADMXPolicyFileName" Margin="0,5,5,5" Grid.Column="0"/>
|
||||
<Button Name="btnADMXPolicyNameRandom" Content="Add Random" Grid.Column="1" MinWidth="100" Margin="0,5,5,5" ToolTip="Only required if multiple policies use different versions of the ADMX file. Also consider changing the AppName" />
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="3">
|
||||
<Label Content="ADMX App Id" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="App ID for the ADMX. Add v2 or vVersion if multiple policies use different versions of the ADMX file" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtADMXPolicyAppName" Margin="0,5,5,5" Grid.Row="3" Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="4">
|
||||
<Label Content="Ingest ADMX file" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Ingest the ADMX file into the custom profile" />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkADMXPolicyIngest" IsChecked="True" Margin="0,5,5,5" Grid.Row="4" Grid.Column="1"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="5">
|
||||
<Label Content="OMA-URI Name for the ADMX ingestion" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Name of the OMA-URI policy for the ADMX ingestion in the Custom Profile" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtADMXPolicyIngestName" Margin="0,5,5,5" Grid.Row="5" Grid.Column="1"/>
|
||||
|
||||
<StackPanel Grid.Row="99" Grid.ColumnSpan="3" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,0" >
|
||||
<Button Name="btnADMXImport" Content="Import" MinWidth="100" ToolTip="Create ADMX profile in Intune"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
@@ -0,0 +1,198 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Grid.IsSharedSizeScope='True'>
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Name="grdADMXRegPolicy">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='0' Margin="0,0,5,0">
|
||||
<Label Content="Policy name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="This is the name/id of the policy in the ADMX file. A guid will be used if not specified" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtADMXRegPolicyName" Text="{Binding RegPolicy.PolicyName}" Margin="0,5,0,0" Grid.Row='0' Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0">
|
||||
<Label Content="Policy status" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Enabled will add the registry keys and disable will remove them" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbADMXRegPolicyStatus" Margin="0,5,0,0" MinWidth="250" Grid.Row='1' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" SelectedValue="{Binding RegPolicy.PolicyStatus}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0">
|
||||
<Label Content="Registry hive" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="HKLM for machine settings and HKCU for user settings" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbADMXRegHive" Margin="0,5,0,0" MinWidth="250" Grid.Row='2' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" SelectedValue="{Binding RegPolicy.Hive}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,0,5,0">
|
||||
<Label Content="Reg key" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Path to the registry value" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtADMXRegKey" Text="{Binding RegPolicy.Key}" Margin="0,5,0,0" Grid.Row='3' Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='5' Margin="0,0,5,0">
|
||||
<Label Content="Policy value" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Name of the registry value to set if the policy is enabled/disabled" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtADMXRegPolicyValueName" Text="{Binding RegPolicy.StatusValueName}" Margin="0,5,0,0" Grid.Row='5' Grid.Column="1" />
|
||||
</Grid>
|
||||
|
||||
<Separator Grid.Row='1' Grid.ColumnSpan="2" Margin="0,5,0,5" />
|
||||
|
||||
<Grid Name="grdADMXRegPolicyElement" Grid.Row='2'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="250" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Row='0' TextWrapping="Wrap" Grid.ColumnSpan="2">
|
||||
Add registry values that should be created/removed in the specified registry key
|
||||
</TextBlock>
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0">
|
||||
<Label Content="Data type" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="HKLM for machine settings and HKCU for user settings" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbADMXRegElementDataType" Margin="0,5,0,0" MinWidth="250" Grid.Row='1' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" SelectedValue="{Binding PolicyElement.DataType}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0">
|
||||
<Label Content="Key" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Optional. Only required if the reg value is located in a different key than specified for the policy" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtADMXRegElementKey" Text="{Binding PolicyElement.Key}" Margin="0,5,0,0" Grid.Row='2' Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,0,5,0">
|
||||
<Label Content="Value name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Name of the registry value to add" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtADMXRegElementValueName" Text="{Binding PolicyElement.ValueName}" Margin="0,5,0,0" Grid.Row='3' Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='4' Margin="0,0,5,0">
|
||||
<Label Content="Value" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Value to set" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtADMXRegElementValue" Text="{Binding PolicyElement.Value}" Margin="0,5,0,0" Grid.Row='4' Grid.Column="1" />
|
||||
|
||||
<StackPanel Grid.Row='5' Grid.Column='1' Orientation="Horizontal" Margin="0,5,0,0" >
|
||||
<Button Name="btnADMXRegElementAdd" Content="Add" MinWidth="100" />
|
||||
<Button Name="btnADMXRegElementNew" Content="Update" MinWidth="100" Visibility="Collapsed" />
|
||||
</StackPanel>
|
||||
|
||||
<Rectangle Grid.Column="2" VerticalAlignment="Stretch" Fill="Black" Width="1" Margin="5,0,5,0" Grid.RowSpan="99"/>
|
||||
|
||||
<Grid Grid.Column="3" Grid.RowSpan="99">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Row='0' TextWrapping="Wrap" Grid.ColumnSpan="2">
|
||||
Additional value settings
|
||||
</TextBlock>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='1' Margin="0,0,5,0">
|
||||
<Label Content="Do not overwrite" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Attribute: sotf - Do not overwrite existing value" />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkADMXRegAttributeSoft" IsChecked="{Binding PolicyElement.AttributeSoft}" Margin="0,5,0,0" Grid.Row='1' Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0" Name="spADMXRegAttributeExpandable" Visibility="Collapsed" >
|
||||
<Label Content="Expandable string" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Attribute: expandable - Create(REG_EXPAND_SZ) instead of a string type (REG_SZ)" />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkADMXRegAttributeExpandable" IsChecked="{Binding PolicyElement.AttributeExpandable}" Margin="0,5,0,0" Grid.Row='2' Grid.Column="1" Visibility="Collapsed" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,0,5,0" Name="spADMXRegAttributeAdditive" Visibility="Collapsed" >
|
||||
<Label Content="Additive" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Attribute: additive - Add the list value to an existing list. Existing values will be kept" />
|
||||
</StackPanel>
|
||||
<CheckBox Name="chkADMXRegAttributeAdditive" IsChecked="{Binding PolicyElement.AttributeAdditive}" Margin="0,5,0,0" Grid.Row='3' Grid.Column="1" Visibility="Collapsed" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='4' Margin="0,0,5,0" Name="spADMXRegAttributeValuePrefix" Visibility="Collapsed" >
|
||||
<Label Content="Value prefix" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Attribute: valuePrefix - Add the list value to an existing list. Existing values will be kept" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtADMXRegAttributeValuePrefix" Text="{Binding PolicyElement.AttributePrefix}" Margin="0,5,0,0" Grid.Row='4' Grid.Column="1" Visibility="Collapsed" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='5' Margin="0,0,5,0" Name="spADMXRegAttributeValueSeparator" Visibility="Collapsed" >
|
||||
<Label Content="Separator" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify separator for List and MultiText values. ; is default." />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtADMXRegAttributeValueSeparator" Text="{Binding PolicyElement.AttributeSeparator}" Width='50' MaxLength="1" HorizontalAlignment="Left" Margin="0,5,0,0" Grid.Row='5' Grid.Column="1" Visibility="Collapsed" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
<Grid Name="grdADMXRegPolicyElements" Grid.Row='3'>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0">
|
||||
<Label Content="Added reg values" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Reg values added to the profile" VerticalAlignment="Top" Margin="0,7,0,0" />
|
||||
</StackPanel>
|
||||
<DataGrid Name="dgADMXRegAddedElements" Margin="0,5,0,0" MinWidth="250" Grid.Column="1"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
ItemsSource="{Binding RegPolicy.PolicyElements}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Value Name" Binding="{Binding ValueName}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Data type" Binding="{Binding DataTypeDisplayString, Mode=OneWay}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Value" Binding="{Binding Value}" IsReadOnly="True" Width="1*" />
|
||||
<DataGridTextColumn Header="Key" Binding="{Binding Key}" IsReadOnly="True" Width="Auto" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Grid.Row="4" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,0" >
|
||||
<Button Name="btnADMXRegAddNew" Content="Save" MinWidth="100" Margin="0,0,5,0" />
|
||||
<Button Name="btnADMXRegCancel" Content="Cancel" MinWidth="100" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
@@ -0,0 +1,72 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="5" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0">
|
||||
<Label Content="Custom Profile Name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the name of the custom profile" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding ProfileName}" Name="txtADMXRegProfileName" Margin="0,5,5,5" Grid.Row="0" Grid.Column="1"/>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1">
|
||||
<Label Content="Custom Profile Description" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Description for the custom profile" />
|
||||
</StackPanel>
|
||||
<TextBox Text="{Binding ProfileDescription}" Name="txtADMXRegProfileDescription" Margin="0,5,5,5" Grid.Row="1" Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='2' Margin="0,0,5,0">
|
||||
<Label Content="Policy type" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select policy type, policy or preferences" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbADMXRegPolicyType" Margin="0,5,0,0" MinWidth="250" Grid.Row='2' Grid.Column="1" HorizontalAlignment="Left"
|
||||
DisplayMemberPath="Name" SelectedValuePath="Value" SelectedValue="{Binding PolicyType}" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row='3' Margin="0,0,5,0">
|
||||
<Label Content="Added reg values" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Reg values added to the policy" VerticalAlignment="Top" Margin="0,7,0,0" />
|
||||
</StackPanel>
|
||||
<DataGrid Name="dgADMXRegAddedPolicies" Margin="0,5,0,0" MinWidth="250" Grid.Row='3' Grid.Column="1"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
ItemsSource="{Binding ADMXPolicies}">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Policy name" Binding="{Binding PolicyName}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Hive" Binding="{Binding Hive}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Path" Binding="{Binding Key}" IsReadOnly="True" Width="Auto" />
|
||||
</DataGrid.Columns>
|
||||
<DataGrid.ContextMenu>
|
||||
<ContextMenu Name="mnuADMXRegPoliciesContextMenu">
|
||||
<MenuItem Header="Edit" Name="mnuADMXRegPolicyEdit">
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
</DataGrid.ContextMenu>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,0" >
|
||||
<Button Name="btnADMXAddRegValue" Content="Add" MinWidth="100" Margin="0,0,5,0" ToolTip="Add new reg value to the profile" />
|
||||
<Button Name="btnADMXRegClear" Content="Clear" MinWidth="100" Margin="0,0,5,0" ToolTip="Clear current values" />
|
||||
<Button Name="btnADMXRegImport" Content="Import" MinWidth="100" ToolTip="Create ADMX profile in Intune"/>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
@@ -0,0 +1,157 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Margin="0,5,0,0" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Content="{Binding Name}" ContentStringFormat="Setting: {0}" />
|
||||
|
||||
<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Right" >
|
||||
<Button Name="btnADMXPreviousSetting" Content="Previous" MinWidth="100" Margin="0,0,5,0" />
|
||||
<Button Name="btnADMXNextSetting" Content="Next" MinWidth="100" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="1" Margin="0,5,0,0" >
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Grid.Row="5" Orientation="Vertical" Margin="5,5,0,0">
|
||||
<RadioButton GroupName="ADMXSettingStatus" Name="rbADMXSettingNotConfigured" >Not Configured</RadioButton>
|
||||
<RadioButton GroupName="ADMXSettingStatus" Name="rbADMXSettingEnabled" Margin="0,5,0,0">Enabled</RadioButton>
|
||||
<RadioButton GroupName="ADMXSettingStatus" Name="rbADMXSettingDisabled" Margin="0,5,0,0">Disabled</RadioButton>
|
||||
</StackPanel>
|
||||
|
||||
<Grid Grid.Column="2" Margin="0,0,0,0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="5"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="5"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" >
|
||||
<TextBlock Text="Intune OMA-URI name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the name of the OMA-URI item. Policy name will be used if not specified" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Name="txtADMXSettingName" Grid.Column="2" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Row="2" VerticalAlignment="Top">
|
||||
<TextBlock Text="Intune comment:" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Specify the name comment of the OMA-URI item. Policy help will be used if not specified" />
|
||||
</StackPanel>
|
||||
|
||||
<TextBox Grid.Row="2" Grid.Column="2" Name="txtADMXSettingComment" Text=""
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
IsReadOnly="True"
|
||||
Height="75"
|
||||
Margin="0" AcceptsReturn="True" />
|
||||
|
||||
<TextBlock Text="Supported on:" Grid.Row="4" />
|
||||
|
||||
<TextBox Grid.Row="4" Grid.Column="2" Text="{Binding SupportedOn}"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
IsReadOnly="True"
|
||||
Height="40"
|
||||
Margin="0" AcceptsReturn="True" />
|
||||
|
||||
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
|
||||
<TabControl Margin="5,5,0,0" Grid.Row="2" Name="tcADMXPolicyConfig">
|
||||
<TabItem Header="Policy">
|
||||
<Grid Grid.Row="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" MinWidth="100" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="1*" MinWidth="100" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
|
||||
<Grid Name="grdADMXElements" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ScrollContentPresenter}}}" />
|
||||
</ScrollViewer>
|
||||
|
||||
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Stretch" />
|
||||
|
||||
<TextBox Grid.Column="2" Text="{Binding Description}"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
IsReadOnly="True"
|
||||
TextWrapping="Wrap"
|
||||
Margin="0" AcceptsReturn="True" />
|
||||
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="OMA-URI Settings" Name="tabADMXSettings">
|
||||
<Grid Grid.Column="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="5"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Text="String:" Grid.Row="0" Grid.ColumnSpan="3" />
|
||||
<TextBox Grid.Row="1" Grid.ColumnSpan="3" Name="txtADMXSettings" AcceptsReturn="True" />
|
||||
|
||||
<CheckBox Grid.Row='3' Name="chkADMXManualConfig" Content="Manual configuration" Grid.ColumnSpan="3" />
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="XML Definition">
|
||||
<TextBox Text="{Binding PolicyDefinition}"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
IsReadOnly="True"
|
||||
Margin="0" AcceptsReturn="True" />
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
<StackPanel Grid.Row="3" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,0" >
|
||||
<Button Name="btnADMXSettingsOK" Content="OK" MinWidth="100" Margin="0,0,5,0" />
|
||||
<Button Name="btnADMXSettingsCancel" Content="Cancel" MinWidth="100" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
@@ -0,0 +1,116 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Grid.IsSharedSizeScope="True" Margin="5,5,5,5">
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,2">
|
||||
<Label Content="Source" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Select where assignments should be read from" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbIntuneAssignmentsProvider" Grid.Column="1" Grid.Row="0" MinWidth="200" HorizontalAlignment="Left"
|
||||
Margin="0,2,0,2" DisplayMemberPath="Name" SelectedValuePath="Value" />
|
||||
|
||||
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="0,0,5,2">
|
||||
<Label Content="Options" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Options specific to the selected source" />
|
||||
</StackPanel>
|
||||
<Grid Grid.Row="1" Grid.Column="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<ContentControl Name="ccIntuneAssignmentsProviderOptions" Margin="0,2,0,2" />
|
||||
<Button Grid.Column="2" Name="btnGetIntuneAssignments" Padding="5,2,5,2" Content="Get Assignments"
|
||||
ToolTip="Read assignments from the selected source" />
|
||||
</Grid>
|
||||
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,0,5,0">
|
||||
<Label Content="Filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Filter rows by name, type, included or excluded assignments" />
|
||||
</StackPanel>
|
||||
<TextBox Text="" Grid.Column="1" Grid.Row="2" Margin="0,2,0,2" Name="txtIntuneAssignmentsFilter"
|
||||
ToolTip="Filter items" />
|
||||
|
||||
<StackPanel Grid.Row="3" Orientation="Horizontal" Margin="0,0,5,0">
|
||||
<Label Content="View" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Limit the list to assigned or unassigned policies" />
|
||||
</StackPanel>
|
||||
<ComboBox Name="cbIntuneAssignmentsView" Grid.Column="1" Grid.Row="3" MinWidth="200" HorizontalAlignment="Left"
|
||||
Margin="0,2,0,2" DisplayMemberPath="Name" SelectedValuePath="Value"
|
||||
ToolTip="Show all policies, only those with assignments, or only those without" />
|
||||
</Grid>
|
||||
|
||||
<DataGrid Name="dgIntuneAssignments" Margin="0,5,0,0" Grid.Row="1"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False">
|
||||
<DataGrid.Resources>
|
||||
<Style TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="TextWrapping" Value="NoWrap" />
|
||||
</Style>
|
||||
</DataGrid.Resources>
|
||||
<DataGrid.RowStyle>
|
||||
<Style TargetType="DataGridRow">
|
||||
<!-- Selection highlight brushes come from the theme dictionary
|
||||
(Themes/Light.xaml, Themes/Dark.xaml). They were redefined here,
|
||||
hardcoded to the dark palette, which made a selected row unreadable
|
||||
in the Light theme. -->
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="{DynamicResource SelectedRowBackgroundColor}" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="{DynamicResource SelectedRowBackgroundColor}" />
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Object Name" Binding="{Binding Name}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Object Type" Binding="{Binding Type}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Assignments" Binding="{Binding AssignmentCount}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridCheckBoxColumn Header="Has Filters" Binding="{Binding HasFilters}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Included" Binding="{Binding IncludedString}" IsReadOnly="True" Width="1*" />
|
||||
<DataGridTextColumn Header="Excluded" Binding="{Binding ExcludedString}" IsReadOnly="True" Width="1*" />
|
||||
<DataGridTextColumn Header="Included Filters" Binding="{Binding IncludedFilterString}" IsReadOnly="True" Width="1*" />
|
||||
<DataGridTextColumn Header="Excluded Filters" Binding="{Binding ExcludedFilterString}" IsReadOnly="True" Width="1*" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Grid Grid.Row="2" Margin="0,5,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Name="txtIntuneAssignmentsCount" VerticalAlignment="Center" Foreground="{DynamicResource TextColor}" />
|
||||
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button Name="btnIntuneAssignmentsCopy" Content="Copy" MinWidth="100" Margin="0,0,5,0"
|
||||
ToolTip="Copy the assignments as CSV to the clipboard" />
|
||||
<Button Name="btnIntuneAssignmentsSave" Content="Save" MinWidth="100"
|
||||
ToolTip="Save assignments to a CSV file" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,11 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Name="txtIntuneAssignmentsExportPath" Text="{Binding ExportPath, UpdateSourceTrigger=PropertyChanged}"
|
||||
ToolTip="Root folder for exported objects" />
|
||||
<Button Grid.Column="2" Name="browseIntuneAssignmentsExportPath" Padding="5,2,5,2" Width="50"
|
||||
ToolTip="Select folder with exported objects">...</Button>
|
||||
</Grid>
|
||||
@@ -0,0 +1,4 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<TextBlock VerticalAlignment="Center" TextWrapping="Wrap" Foreground="{DynamicResource TextColor}"
|
||||
Text="All Intune object types will be read from the currently signed-in tenant." />
|
||||
</Grid>
|
||||
@@ -0,0 +1,96 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Grid.IsSharedSizeScope="True" Margin="5,5,5,5">
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal" Margin="0,0,5,2">
|
||||
<Label Content="Action" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Load all assignment filters and resolve where they're referenced" />
|
||||
</StackPanel>
|
||||
<TextBlock Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"
|
||||
Foreground="{DynamicResource TextColor}" Opacity="0.7"
|
||||
Text="Click Get Filter Usage to enumerate every assignment filter and resolve the policies / apps / scripts that reference it." />
|
||||
<Button Grid.Row="0" Grid.Column="3" Name="btnGetIntuneFilterUsage" Padding="5,2,5,2"
|
||||
Content="Get Filter Usage"
|
||||
ToolTip="Read every assignment filter and resolve its payloads (policies, groups) via batched Graph calls" />
|
||||
|
||||
<StackPanel Grid.Row="1" Orientation="Horizontal" Margin="0,0,5,0">
|
||||
<Label Content="Filter" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Filter rows by filter name, policy name, type, mode, or group" />
|
||||
</StackPanel>
|
||||
<TextBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,2,0,2"
|
||||
Name="txtIntuneFilterUsageFilter" ToolTip="Filter rows by any visible column" />
|
||||
</Grid>
|
||||
|
||||
<DataGrid Name="dgIntuneFilterUsage" Margin="0,5,0,0" Grid.Row="1"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False">
|
||||
<DataGrid.Resources>
|
||||
<Style TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="TextWrapping" Value="NoWrap" />
|
||||
</Style>
|
||||
</DataGrid.Resources>
|
||||
<DataGrid.RowStyle>
|
||||
<Style TargetType="DataGridRow">
|
||||
<!-- Selection highlight brushes come from the theme dictionary
|
||||
(Themes/Light.xaml, Themes/Dark.xaml). They were redefined here,
|
||||
hardcoded to the dark palette, which made a selected row unreadable
|
||||
in the Light theme. -->
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="{DynamicResource SelectedRowBackgroundColor}" />
|
||||
</Trigger>
|
||||
<Trigger Property="IsSelected" Value="True">
|
||||
<Setter Property="Background" Value="{DynamicResource SelectedRowBackgroundColor}" />
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Filter Name" Binding="{Binding FilterName}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Platform" Binding="{Binding Platform}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Filter Type" Binding="{Binding FilterType}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Policy Name" Binding="{Binding PolicyName}" IsReadOnly="True" Width="1*" />
|
||||
<DataGridTextColumn Header="Type" Binding="{Binding PayloadType}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Mode" Binding="{Binding Mode}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Group" Binding="{Binding GroupName}" IsReadOnly="True" Width="1*" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Grid Grid.Row="2" Margin="0,5,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Name="txtIntuneFilterUsageCount" VerticalAlignment="Center" Foreground="{DynamicResource TextColor}" />
|
||||
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button Name="btnIntuneFilterUsageCopy" Content="Copy" MinWidth="100" Margin="0,0,5,0"
|
||||
ToolTip="Copy the visible rows to the clipboard as CSV" />
|
||||
<Button Name="btnIntuneFilterUsageSave" Content="Save" MinWidth="100"
|
||||
ToolTip="Save the visible rows to a CSV file" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,60 @@
|
||||
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,5,5,5">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="4*" MinHeight="300" />
|
||||
<RowDefinition Height="3" />
|
||||
<RowDefinition Height="1*" MinHeight="100" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<DataGrid Name="dgLogInfo"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
VirtualizingPanel.ScrollUnit="Pixel">
|
||||
<DataGrid.RowStyle>
|
||||
<Style TargetType="DataGridRow">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Type}" Value="3">
|
||||
<Setter Property="Foreground" Value="Red"></Setter>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Type}" Value="2">
|
||||
<Setter Property="Foreground" Value="Orange"></Setter>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Date" Binding="{Binding DateTime, StringFormat={}{0:d}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Time" Binding="{Binding DateTime, StringFormat={}{0:HH:mm.ss.fff}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="Type" Binding="{Binding TypeText}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTemplateColumn Header="Text">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock Text="{Binding Path=Text}" TextWrapping="NoWrap" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
|
||||
|
||||
<Grid Grid.Row="3" DataContext="{Binding Path=SelectedItem, ElementName=dgLogInfo}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="5" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Text="Date\Time" Grid.Row="0" Grid.Column="0" />
|
||||
<TextBlock Text="{Binding Path=DateTime, StringFormat={}{0:yyyy-MM-dd HH:mm.ss.fff}}" Grid.Row="0" Grid.Column="2" />
|
||||
|
||||
<TextBox Grid.Row="1" Grid.ColumnSpan="99" Text="{Binding Path=Text}" HorizontalAlignment="Stretch" Name="txtLogInfo" IsReadOnly="True" AcceptsReturn="true" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
@@ -0,0 +1,8 @@
|
||||
<Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" Padding="5" Background="{DynamicResource WindowBackgroundColor}">
|
||||
<Grid Grid.Row="8" Name="grdAccounts" Grid.ColumnSpan="2" Margin="5,0,5,0" HorizontalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
</Border>
|
||||
@@ -0,0 +1,355 @@
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Cloud API PowerShell Management"
|
||||
WindowStyle="None"
|
||||
WindowStartupLocation="CenterScreen"
|
||||
Background="{DynamicResource WindowBackgroundColor}"
|
||||
x:Name="Window">
|
||||
|
||||
<WindowChrome.WindowChrome>
|
||||
<!-- 8px radius matches the Windows 11 native chrome curve. Combined with the
|
||||
outer Border's CornerRadius below to shape both the hit-test region and
|
||||
the painted outline. -->
|
||||
<WindowChrome CaptionHeight="32" ResizeBorderThickness="5" GlassFrameThickness="0" CornerRadius="8"/>
|
||||
</WindowChrome.WindowChrome>
|
||||
|
||||
<Window.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="UI\WPF\Themes\Light.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Window.Resources>
|
||||
|
||||
<!-- Thin neutral-gray outline around the whole window. WindowStyle=None removes the
|
||||
OS chrome including its 1px border, so we draw our own here. CornerRadius
|
||||
matches the WindowChrome.CornerRadius so the outline and the window shape agree.
|
||||
Background here is the window background, which lets the rounded corners clip
|
||||
children correctly. -->
|
||||
<Border BorderBrush="{DynamicResource BorderColor}" BorderThickness="1"
|
||||
CornerRadius="8" Background="{DynamicResource WindowBackgroundColor}"
|
||||
ClipToBounds="True">
|
||||
<Grid x:Name="Grid">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="32"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- Single top bar: icon + menu + (drag area) + env/tenant badge + profile + system buttons.
|
||||
Window.Title is intentionally not shown here; it stays set on the Window object so
|
||||
the taskbar tooltip / Alt+Tab caption / window-snapping title pick it up.
|
||||
The 1px bottom border separates the title bar from the view area. CornerRadius
|
||||
"7,7,0,0" rounds the top corners to match the outer Border's CornerRadius="8"
|
||||
minus its 1px BorderThickness, so the title-bar fill follows the curve cleanly
|
||||
instead of poking out as a square. -->
|
||||
<Border Grid.Row="0" Grid.ColumnSpan="2"
|
||||
Background="{DynamicResource TitleBackgroundColor}"
|
||||
BorderBrush="{DynamicResource BorderColor}"
|
||||
BorderThickness="0,0,0,1"
|
||||
CornerRadius="7,7,0,0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- Window icon (also acts as draggable area). -->
|
||||
<Image x:Name="imgTitleIcon" Grid.Column="0" Width="18" Height="18"
|
||||
Margin="8,0,4,0" VerticalAlignment="Center"/>
|
||||
|
||||
<!-- Application menu, hosted in the title bar. WindowChrome.IsHitTestVisibleInChrome
|
||||
has to be True so menu clicks aren't swallowed by the drag region. -->
|
||||
<Menu Name="mnuMain" Grid.Column="1" Padding="0" Background="Transparent"
|
||||
VerticalAlignment="Center"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<MenuItem Header="_File" Name="mnuFile">
|
||||
<MenuItem Header="_Settings" Name="mnuSettings" />
|
||||
<MenuItem Header="_Tenant Settings" Name="mnuTenantSettings" />
|
||||
<Separator />
|
||||
<MenuItem Header="_Release Notes" Name="mnuUpdates" />
|
||||
<MenuItem Header="_About" Name="mnuAbout" />
|
||||
<Separator />
|
||||
<MenuItem Header="_Exit" Name="mnuExit" />
|
||||
</MenuItem>
|
||||
<MenuItem Name="mnuViews" Header="_Views" />
|
||||
</Menu>
|
||||
|
||||
<!-- Centered view title. WindowChrome.IsHitTestVisibleInChrome is intentionally
|
||||
NOT set, so the TextBlock is treated as part of the caption drag region —
|
||||
clicking anywhere on it still drags the window. Set by Set-MainTitle when
|
||||
the active view changes. -->
|
||||
<TextBlock x:Name="txtTitleViewName" Grid.Column="2"
|
||||
HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="SemiBold" FontSize="13"
|
||||
Foreground="{DynamicResource TitleForegroundColor}"
|
||||
TextTrimming="CharacterEllipsis"
|
||||
Margin="12,0,12,0" />
|
||||
|
||||
<!-- Merged environment + tenant badge. Set-EnvironmentInfo populates the inner
|
||||
TextBlock with "EnvText - Tenant" / either part on its own / nothing. -->
|
||||
<Border x:Name="borderEnvBadge" Grid.Column="3" CornerRadius="3" Padding="10,2" Margin="4"
|
||||
Visibility="Collapsed" VerticalAlignment="Center"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<TextBlock Name="txtEnvBadge" FontWeight="Bold" FontSize="12"/>
|
||||
</Border>
|
||||
|
||||
<!-- Profile picture container. Kept as 'grdMenu' so Show-AuthenticationInfo continues
|
||||
to drop the profile picture into Column 2 here without code changes. -->
|
||||
<Grid x:Name="grdMenu" Grid.Column="4" VerticalAlignment="Center" Margin="4,0,4,0"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
|
||||
<!-- System buttons (minimize / maximize / close). FontFamily is Segoe MDL2
|
||||
Assets (shipped with Windows 10/11) so the glyphs match the native
|
||||
chrome — Minimize E921, Maximize E922, Restore E923, Close E8BB. -->
|
||||
<StackPanel Grid.Column="5" Orientation="Horizontal" VerticalAlignment="Stretch"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<StackPanel.Resources>
|
||||
<Style TargetType="Button">
|
||||
<Setter Property="Width" Value="46"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="Foreground" Value="{DynamicResource TitleForegroundColor}"/>
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="FontFamily" Value="Segoe MDL2 Assets"/>
|
||||
<Setter Property="FontSize" Value="10"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border x:Name="bg" Background="{TemplateBinding Background}">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter TargetName="bg" Property="Background" Value="#33FFFFFF"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter TargetName="bg" Property="Background" Value="#22FFFFFF"/>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</StackPanel.Resources>
|
||||
<Button x:Name="btnTitleMinimize" Content="" ToolTip="Minimize"/>
|
||||
<Button x:Name="btnTitleMaximize" Content="" ToolTip="Maximize"/>
|
||||
<Button x:Name="btnTitleClose" Content="" ToolTip="Close">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="#C42B1C"/>
|
||||
<Setter Property="Foreground" Value="#FFFFFFFF"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter Property="Background" Value="#9B2215"/>
|
||||
<Setter Property="Foreground" Value="#FFFFFFFF"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Grid Name="grdViewPanel" Grid.Column="1" Grid.RowSpan="2" Grid.Row="1" Margin="0,5,5,5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
|
||||
|
||||
<!-- Vertical divider between the left view-item menu and the main view panel. -->
|
||||
<Border Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right"
|
||||
BorderBrush="{DynamicResource BorderColor}" BorderThickness="0,0,1,0" />
|
||||
|
||||
<Grid Grid.Row="1" Margin="5,5,6,5" VerticalAlignment="Stretch" Name="grdViewItemMenu">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<!-- MinHeight matches the right pane's title strip so the first nav item
|
||||
lines up with the right-pane DataGrid header row. The Grid wrap lets
|
||||
the title sit at the left and a per-view config gear at the right. -->
|
||||
<Grid Margin="0,0,0,5" MinHeight="30" Background="{DynamicResource TitleBackgroundColor}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Content="" Name="lblMenuTitle" FontWeight="Bold" VerticalAlignment="Center" Background="Transparent" />
|
||||
<!-- View-specific config button. Hidden by default; views that
|
||||
have view-level toggles (currently IntuneViewObject for
|
||||
Group vs API) show it and populate its ContextMenu.
|
||||
Padding=0 + BorderThickness=0 give the gear the full
|
||||
button size to render — the WPF Button defaults eat
|
||||
~5px on every side and clip the glyph. -->
|
||||
<Button Grid.Column="1" Name="btnMenuTitleConfig" Visibility="Collapsed"
|
||||
Width="26" Height="26" Margin="0,0,4,0"
|
||||
Padding="0" BorderThickness="0"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Background="Transparent" BorderBrush="Transparent"
|
||||
Cursor="Hand" ToolTip="Switch menu view">
|
||||
<!-- Inline gear glyph — Path so it picks up theme TextColor without
|
||||
depending on a system font shipping the Segoe Symbol gear.
|
||||
Canvas is 24x24 to give the path coords (centred at 12,12)
|
||||
room without clipping at the edges. -->
|
||||
<Viewbox Width="16" Height="16" Stretch="Uniform">
|
||||
<Canvas Width="24" Height="24">
|
||||
<Path Fill="{DynamicResource TextColor}"
|
||||
Data="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58a.49.49 0 00.12-.61l-1.92-3.32a.488.488 0 00-.59-.22l-2.39.96a7 7 0 00-1.62-.94l-.36-2.54a.484.484 0 00-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94 0 .31.02.64.07.94l-2.03 1.58a.49.49 0 00-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6 0-1.98 1.62-3.6 3.6-3.6s3.6 1.62 3.6 3.6c0 1.98-1.62 3.6-3.6 3.6z" />
|
||||
</Canvas>
|
||||
</Viewbox>
|
||||
<Button.ContextMenu>
|
||||
<ContextMenu Name="cmMenuTitleConfig">
|
||||
<MenuItem Header="_Group" Name="mnuMenuTitleConfigGroup" IsCheckable="True" />
|
||||
<MenuItem Header="_API" Name="mnuMenuTitleConfigType" IsCheckable="True" />
|
||||
<Separator />
|
||||
<MenuItem Header="Show read-only _Info" Name="mnuMenuTitleConfigShowInfo" IsCheckable="True" ToolTip="Show the read-only Intune Info items (Baseline Templates, Tenant Settings, Google Play status, ...)" />
|
||||
<!-- Hidden 2026-06-12 per user decision; counts machinery kept for potential re-enable. -->
|
||||
<MenuItem Header="Show item _counts" Name="mnuMenuTitleConfigShowCounts" IsCheckable="True" Visibility="Collapsed" />
|
||||
<!-- Sub-menu items added at runtime: one per platform present in
|
||||
the current grid + a "(no platform)" entry when applicable. -->
|
||||
<MenuItem Header="Filter _platforms" Name="mnuMenuTitleConfigFilterPlatforms" />
|
||||
<MenuItem Header="_Refresh" Name="mnuMenuTitleConfigRefresh" />
|
||||
</ContextMenu>
|
||||
</Button.ContextMenu>
|
||||
</Button>
|
||||
</Grid>
|
||||
<ListBox Grid.Row="1" Name="lstMenuItems" SelectionMode="Single" Grid.IsSharedSizeScope='True' Background="{DynamicResource PanelBackgroundColor}" >
|
||||
<ListBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Grid >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="ImageColumn" />
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="TitleColumn" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<ContentControl Content="{Binding IconImage}" Width="16" Height="16" Margin="0,0,5,0" />
|
||||
<!-- MenuLabel = Title by default; populated with "Title (N)"
|
||||
when the per-view "Show item counts" option is enabled. -->
|
||||
<TextBlock Text="{Binding MenuLabel}" Grid.Column="1"/>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ListBox.ItemTemplate>
|
||||
<!-- GroupStyle applies whenever Show-ViewMenu wraps the items in
|
||||
a CollectionView with a PropertyGroupDescription (currently
|
||||
just the Intune Tools view). Views that ship a flat array
|
||||
bypass grouping and render unchanged. -->
|
||||
<ListBox.GroupStyle>
|
||||
<GroupStyle>
|
||||
<!-- Panel for the items WITHIN each group. Without an explicit
|
||||
vertical StackPanel here, the inner ItemsPresenter renders
|
||||
children on a single row (we hit this — see commit log). -->
|
||||
<GroupStyle.Panel>
|
||||
<ItemsPanelTemplate>
|
||||
<StackPanel Orientation="Vertical" />
|
||||
</ItemsPanelTemplate>
|
||||
</GroupStyle.Panel>
|
||||
<GroupStyle.ContainerStyle>
|
||||
<Style TargetType="GroupItem">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="GroupItem">
|
||||
<Expander IsExpanded="True"
|
||||
Background="Transparent"
|
||||
Foreground="{DynamicResource TextColor}"
|
||||
BorderBrush="Transparent"
|
||||
BorderThickness="0">
|
||||
<Expander.Header>
|
||||
<TextBlock Text="{Binding Name}"
|
||||
FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource TextColor}" />
|
||||
</Expander.Header>
|
||||
<ItemsPresenter Margin="12,0,0,0" />
|
||||
</Expander>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</GroupStyle.ContainerStyle>
|
||||
</GroupStyle>
|
||||
</ListBox.GroupStyle>
|
||||
<ListBox.Resources>
|
||||
<Style TargetType="ListBoxItem">
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextColor}" />
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding AccessType}" Value="None">
|
||||
<Setter Property="Foreground" Value="Red" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding AccessType}" Value="Limited">
|
||||
<Setter Property="Foreground" Value="Orange" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ListBox.Resources>
|
||||
</ListBox>
|
||||
</Grid>
|
||||
|
||||
<!-- Popup with very faint dim background. Opacity=0 made the dismiss target invisible;
|
||||
a 0.04 tint hints "click outside to close" without obscuring content. -->
|
||||
<Grid Name="grdPopup" Grid.ColumnSpan="2" Grid.RowSpan="3" Visibility="Collapsed">
|
||||
<Grid.Background>
|
||||
<SolidColorBrush Color="Black" Opacity="0.04" />
|
||||
</Grid.Background>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Canvas Name="cvsPopup" />
|
||||
</Grid>
|
||||
|
||||
<!-- Modal popup with background -->
|
||||
<Grid Name="grdModal" Grid.ColumnSpan="2" Grid.RowSpan="3" Visibility="Collapsed">
|
||||
<Grid.Background>
|
||||
<SolidColorBrush Opacity="0.5" Color="Black"/>
|
||||
</Grid.Background>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="15*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="15*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
|
||||
<Grid Name="grdStatus" Grid.ColumnSpan="2" Grid.RowSpan="3" Visibility="Collapsed">
|
||||
<Grid.Background>
|
||||
<SolidColorBrush Opacity="0.5" Color="Black" />
|
||||
</Grid.Background>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<!-- TextBlock (not Label): Label treats a single '_' as an access-key
|
||||
marker and strips it, mangling names like adm_user -> admuser. -->
|
||||
<TextBlock Name="txtInfo" Text="" HorizontalAlignment="Center" Foreground="White" />
|
||||
<TextBlock Name="txtInfoDetail" Text="" HorizontalAlignment="Center" Foreground="#CCFFFFFF" FontSize="11" Margin="0,-4,0,0" Visibility="Collapsed" />
|
||||
<!-- Shown only when a caller passes Write-Status -CancelText, so a wait
|
||||
that would otherwise run to its timeout (device code, browser
|
||||
sign-in) can be abandoned. Click calls Request-StatusCancel. -->
|
||||
<Button Name="btnStatusCancel" Content="Cancel" HorizontalAlignment="Center" MinWidth="90" Padding="16,3" Margin="0,12,0,0" Visibility="Collapsed" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
||||
@@ -0,0 +1,116 @@
|
||||
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title=""
|
||||
WindowStyle="None"
|
||||
SizeToContent="WidthAndHeight"
|
||||
ResizeMode="NoResize"
|
||||
MinWidth="280"
|
||||
ShowInTaskbar="False"
|
||||
WindowStartupLocation="CenterOwner">
|
||||
|
||||
<WindowChrome.WindowChrome>
|
||||
<WindowChrome CaptionHeight="32" ResizeBorderThickness="0" GlassFrameThickness="0"/>
|
||||
</WindowChrome.WindowChrome>
|
||||
|
||||
<Window.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="UI\WPF\Themes\Light.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Window.Resources>
|
||||
|
||||
<Border BorderBrush="{DynamicResource BorderColor}" BorderThickness="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="32"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Custom title bar -->
|
||||
<Grid Grid.Row="0" Background="{DynamicResource TitleBackgroundColor}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!-- Icon + Title text -->
|
||||
<StackPanel Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center" Margin="8,0">
|
||||
<Image Source="{Binding Icon, RelativeSource={RelativeSource AncestorType=Window}}"
|
||||
Width="16" Height="16" Margin="0,0,6,0" VerticalAlignment="Center"/>
|
||||
<TextBlock Text="{Binding Title, RelativeSource={RelativeSource AncestorType=Window}}"
|
||||
Foreground="{DynamicResource TitleForegroundColor}"
|
||||
VerticalAlignment="Center" FontSize="12"/>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Close button -->
|
||||
<Button Name="btnTitleClose" Grid.Column="1" Content="✕"
|
||||
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||
<Button.Style>
|
||||
<Style TargetType="Button">
|
||||
<Setter Property="Width" Value="46"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="Foreground" Value="{DynamicResource TitleForegroundColor}"/>
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
<Setter Property="FontSize" Value="11"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<Border x:Name="bg" Background="{TemplateBinding Background}">
|
||||
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="#C42B1C"/>
|
||||
<Setter Property="Foreground" Value="#FFFFFFFF"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsPressed" Value="True">
|
||||
<Setter Property="Background" Value="#9B2215"/>
|
||||
<Setter Property="Foreground" Value="#FFFFFFFF"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Button.Style>
|
||||
</Button>
|
||||
</Grid>
|
||||
|
||||
<!-- Content area -->
|
||||
<Grid Grid.Row="1" Margin="16,14,16,12">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="14"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Icon + message -->
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Border Name="iconBorder" Width="30" Height="30" CornerRadius="15"
|
||||
Margin="0,2,12,0" VerticalAlignment="Top" Visibility="Collapsed">
|
||||
<TextBlock Name="iconSymbol" HorizontalAlignment="Center" VerticalAlignment="Center"
|
||||
FontWeight="Bold" FontSize="14" Foreground="White"/>
|
||||
</Border>
|
||||
|
||||
<TextBlock Name="txtMessage" Grid.Column="1"
|
||||
TextWrapping="Wrap" MinWidth="240" MaxWidth="460"
|
||||
VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
|
||||
<!-- Buttons -->
|
||||
<WrapPanel Grid.Row="2" HorizontalAlignment="Right" Margin="0,2,0,0">
|
||||
<Button Name="btnYes" MinWidth="78" Margin="0,0,8,0" Padding="8,3" Visibility="Collapsed">_Yes</Button>
|
||||
<Button Name="btnNo" MinWidth="78" Margin="0,0,8,0" Padding="8,3" Visibility="Collapsed">_No</Button>
|
||||
<Button Name="btnOK" MinWidth="78" Margin="0,0,8,0" Padding="8,3" Visibility="Collapsed">_OK</Button>
|
||||
<Button Name="btnCancel" MinWidth="78" Margin="0,0,0,0" Padding="8,3" Visibility="Collapsed" IsCancel="True">_Cancel</Button>
|
||||
</WrapPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
||||
@@ -0,0 +1,17 @@
|
||||
<Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" Padding="5" Background="{DynamicResource WindowBackgroundColor}">
|
||||
<Grid HorizontalAlignment="Stretch" Name="grdModalContainer" VerticalAlignment="Stretch" Background="{DynamicResource WindowBackgroundColor}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Background="{DynamicResource TitleBackgroundColor}" BorderThickness="0">
|
||||
<TextBlock Name="txtTitle" Margin="5" FontWeight="Bold" Foreground="{DynamicResource TitleForegroundColor}" />
|
||||
</Border>
|
||||
<StackPanel Name="spButtons" Grid.Row="2" HorizontalAlignment="Right" Orientation="Horizontal" Margin="0,5,0,5">
|
||||
<Button Name="btnClose" Width="100" Margin="15,0,0,0">Close</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
@@ -0,0 +1,24 @@
|
||||
<Grid Background="Transparent" Margin="0,0,0,0" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="150"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBox Name="tbmain" Grid.ColumnSpan="2" Grid.RowSpan="2"
|
||||
Text=""
|
||||
Margin="0,0,0,0" />
|
||||
|
||||
<RepeatButton Name="PART_UpButton" BorderThickness="0" Grid.Column="1" Grid.Row="0"
|
||||
Width="13" Background="Transparent">
|
||||
<Path Fill="Black" Data="M 0 3 L 6 3 L 3 0 Z"/>
|
||||
</RepeatButton>
|
||||
<RepeatButton Name="PART_DownButton" BorderThickness="0" Grid.Column="1" Grid.Row="1"
|
||||
Width="13" Background="Transparent">
|
||||
<Path Fill="Black" Data="M 0 0 L 3 3 L 6 0 Z"/>
|
||||
</RepeatButton>
|
||||
|
||||
</Grid>
|
||||
@@ -0,0 +1,205 @@
|
||||
<TabControl SelectedIndex="0" Margin="0,5,0,5" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<TabItem Header="Json">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBox Name="txtValue"
|
||||
Grid.Column="1" Grid.Row="1"
|
||||
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
||||
ScrollViewer.CanContentScroll="True"
|
||||
IsReadOnly="True"
|
||||
MinWidth="250" Margin="0" AcceptsReturn="True" />
|
||||
|
||||
<WrapPanel Name="pnlButtons" Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="0,5,0,0">
|
||||
<Button Name="btnFull" MinWidth="100" Margin="0,0,5,0" ToolTip="Load full info of the object">Load full</Button>
|
||||
<Button Name="btnCopy" MinWidth="100" Margin="0,0,0,0" ToolTip="Copy text to clipboard">Copy</Button>
|
||||
</WrapPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Settings">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0" HorizontalAlignment="Left">
|
||||
<Label Content="Name" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Name of the object" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectName" Margin="0,5,5,0" Grid.Row="0" Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Top">
|
||||
<Label Content="Description" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Description for the object" Margin="0,2,0,0" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectDescription" Margin="0,5,5,0" Grid.Row="1" Grid.Column="1" AcceptsReturn="True" Height="100" />
|
||||
|
||||
<StackPanel Name="pnlScopeTagsLabel" Orientation="Horizontal" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Margin="0,5,5,0">
|
||||
<Label Content="Scope Tags" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Move tags between the lists to change assignment. Changes are not applied until you press Save." />
|
||||
</StackPanel>
|
||||
|
||||
<Grid Name="grdScopeTags" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Height="180" Margin="0,5,5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Label Content="Available" Grid.Row="0" Grid.Column="0" Padding="0,0,0,2" FontSize="11" Foreground="#888"/>
|
||||
<Label Content="Assigned" Grid.Row="0" Grid.Column="2" Padding="0,0,0,2" FontSize="11" Foreground="#888"/>
|
||||
|
||||
<ListBox Name="lstAvailableScopeTags" Grid.Row="1" Grid.Column="0"
|
||||
SelectionMode="Extended" DisplayMemberPath="Name" Margin="0,0,5,0"/>
|
||||
|
||||
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Vertical" VerticalAlignment="Center" Margin="0,0,5,0">
|
||||
<Button Name="btnScopeTagAssign" Content=">" Width="40" Margin="0,0,0,5" ToolTip="Assign selected tag(s)"/>
|
||||
<Button Name="btnScopeTagUnassign" Content="<" Width="40" ToolTip="Unassign selected tag(s)"/>
|
||||
</StackPanel>
|
||||
|
||||
<ListBox Name="lstAssignedScopeTags" Grid.Row="1" Grid.Column="2"
|
||||
SelectionMode="Extended" DisplayMemberPath="Name" Margin="5,0,0,0"/>
|
||||
</Grid>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="5" Grid.ColumnSpan="2" HorizontalAlignment="Right" Margin="5,5,5,5">
|
||||
<Button Name="btnObjectSettingsSave" Content="Save" Width="100" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Columns">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,0,5,0" >
|
||||
<Label Content="Properties" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Properties of the current object" />
|
||||
</StackPanel>
|
||||
|
||||
<Grid Grid.Row="1" Grid.RowSpan="99">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="50*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="50*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Label Content="Basic Properties" Grid.Row="0" />
|
||||
<ListBox Name="lstBasicProperties" SelectionMode="Single" Grid.Row="1" MinWidth="150" DisplayMemberPath="Name" />
|
||||
|
||||
<Label Content="Object Properties" Grid.Row="2" />
|
||||
<ListBox Name="lstObjectProperties" SelectionMode="Single" Grid.Row="3" MinWidth="150" DisplayMemberPath="Name" />
|
||||
|
||||
<StackPanel Grid.Row="1" Grid.Column="1" Margin="5,0,5,0">
|
||||
<Button Content=">" Name="btnBasicColumnsAdd" Width="50" ToolTip="Add basic property" />
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Row="3" Grid.Column="1" Margin="5,0,5,0">
|
||||
<Button Content=">" Name="btnObjectColumnsAdd" Width="50" ToolTip="Add object property" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Row="1" Grid.Column="2">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Label Content="Column settings" Grid.Row="0" />
|
||||
|
||||
<ListBox Name="lstObjectColumns" SelectionMode="Single" Grid.Row="1" MinWidth="150" DisplayMemberPath="Property" Height="200">
|
||||
</ListBox>
|
||||
|
||||
<StackPanel Grid.Column="1" Margin="5,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Row="1" >
|
||||
<Button Content="Up" Name="btnObjectColumnsMoveUp" Width="50" ToolTip="Move the selected column up" />
|
||||
<Button Content="Down" Name="btnObjectColumnsMoveDown" Width="50" ToolTip="Move the selected column down" Margin="0,5,0,0"/>
|
||||
<Button Content="Delete" Name="btnObjectColumnsDelete" Width="50" ToolTip="Delete the selected column" Margin="0,5,0,0"/>
|
||||
<Button Content="Clear" Name="btnObjectColumnsClear" Width="50" ToolTip="Delete all custom columns" Margin="0,5,0,0"/>
|
||||
</StackPanel>
|
||||
|
||||
<CheckBox Grid.Row='2' Name='chkObjectColumnOverride' Grid.ColumnSpan="2" Content="Override default columns" VerticalAlignment="Center" ToolTip="Do not add default columns first. If this is checked then only the properties in the list will be displayed" />
|
||||
|
||||
<Grid Grid.Row="3" Grid.ColumnSpan="2" Name="grdObjectColumns">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="0" HorizontalAlignment="Left">
|
||||
<Label Content="Property" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Property to display. Sub properties and array values are supported eg files[0].displayName" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectColumnsProperty" Text="{Binding Property}" Margin="0,5,5,0" Grid.Row="0" Grid.Column="1" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="1">
|
||||
<Label Content="Header" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Header for the property. Name of property will be used if not specified" />
|
||||
</StackPanel>
|
||||
<TextBox Name="txtObjectColumnsHeader" Text="{Binding Header}" Margin="0,5,5,0" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="0,5,5,0" Grid.Row="2" HorizontalAlignment="Left">
|
||||
<Label Content="Current settings:" />
|
||||
<Rectangle Style="{DynamicResource InfoIcon}" ToolTip="Current property settings. Only updated when saved" />
|
||||
</StackPanel>
|
||||
<TextBox Name="lblObjectColumnsConfig" IsReadOnly="True" BorderThickness="0" Background="Transparent" Padding="0" CaretBrush="Transparent" Text="" Margin="5,5,5,0" Grid.Row="3" Grid.ColumnSpan="2" />
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="1" Margin="5,5,5,0" Grid.Row="4" Grid.ColumnSpan="2" HorizontalAlignment="Right">
|
||||
<Button Name="btnObjectColumnsReset" Content="Reset" Margin="0,0,5,0" Width="100" ToolTip="Revert all changes" />
|
||||
<Button Name="btnObjectColumnsSave" Content="Save" Margin="0,0,0,0" Width="100" />
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
@@ -0,0 +1,26 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBox Name="txtObjectPickerSearch" Grid.Row="0" Margin="0,0,0,5"
|
||||
VerticalContentAlignment="Center" Padding="3,2,3,2" />
|
||||
|
||||
<DataGrid Name="dgObjects"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
VirtualizingPanel.ScrollUnit="Pixel"
|
||||
Grid.Row="1" />
|
||||
|
||||
<StackPanel Grid.Row="2" Name="spObjectPickerSubMenu" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,0" >
|
||||
<Button Name="btnObjectPickerOK" Content="OK" MinWidth="100" Margin="0,0,5,0" />
|
||||
<Button Name="btnObjectPickerCancel" Content="Cancel" MinWidth="100" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
@@ -0,0 +1,73 @@
|
||||
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Select" Height="500" Width="620"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
ResizeMode="CanResizeWithGrip"
|
||||
ShowInTaskbar="False">
|
||||
<Grid Margin="10" Grid.IsSharedSizeScope="True">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Tenant selector. Hidden unless more than one tenant is signed in. -->
|
||||
<Grid Name="grdPickerTenant" Grid.Row="0" Margin="0,0,0,5" Visibility="Collapsed">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="PickerLabel"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Grid.Column="0" Content="Tenant" VerticalAlignment="Center" Padding="0,0,0,0"/>
|
||||
<ComboBox Name="cbPickerTenant" Grid.Column="2" DisplayMemberPath="Title" SelectedValuePath="Key"/>
|
||||
</Grid>
|
||||
|
||||
<!-- Scope selector. Hidden unless the caller passes -Scopes. -->
|
||||
<Grid Name="grdPickerScope" Grid.Row="1" Margin="0,0,0,5" Visibility="Collapsed">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" SharedSizeGroup="PickerLabel"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Grid.Column="0" Content="Search in" VerticalAlignment="Center" Padding="0,0,0,0"/>
|
||||
<ComboBox Name="cbPickerScope" Grid.Column="2" DisplayMemberPath="Title" SelectedValuePath="Key"/>
|
||||
</Grid>
|
||||
|
||||
<Grid Grid.Row="2" Margin="0,0,0,5">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="5"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Name="txtPickerSearch" Grid.Column="0" VerticalContentAlignment="Center" Padding="3,2,3,2"/>
|
||||
<Button Name="btnPickerSearch" Grid.Column="2" Content="Search" Width="70" Padding="5,2,5,2"/>
|
||||
</Grid>
|
||||
|
||||
<DataGrid Name="dgPickerObjects" Grid.Row="3"
|
||||
AutoGenerateColumns="False"
|
||||
SelectionMode="Single"
|
||||
SelectionUnit="FullRow"
|
||||
CanUserAddRows="False"
|
||||
VirtualizingPanel.ScrollUnit="Pixel"
|
||||
IsReadOnly="True"/>
|
||||
|
||||
<GroupBox Name="grpPickerStatus" Grid.Row="4" Margin="0,5,0,0" Visibility="Collapsed">
|
||||
<TextBlock Name="txtPickerStatus" TextWrapping="Wrap"/>
|
||||
</GroupBox>
|
||||
|
||||
<Grid Grid.Row="5" Margin="0,5,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Button Name="btnPickerLoadAll" Grid.Column="0" Content="Load all from Intune" Padding="8,2,8,2" Visibility="Collapsed"/>
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button Name="btnPickerOK" Content="OK" Width="75" Margin="0,0,5,0" IsEnabled="False"/>
|
||||
<Button Name="btnPickerCancel" Content="Cancel" Width="75"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,90 @@
|
||||
<Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" Padding="5"
|
||||
Background="{DynamicResource WindowBackgroundColor}"
|
||||
TextElement.Foreground="{DynamicResource TextColor}">
|
||||
<Grid Name="ProfileInfo">
|
||||
<Grid.Background>
|
||||
<SolidColorBrush Color="#FF000000" Opacity="0.0"/>
|
||||
</Grid.Background>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Grid Grid.ColumnSpan="2">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Margin="5" Name="txtOrganization" FontWeight="Bold" />
|
||||
<Button Margin="5" Name="lnkLogout" Content="Sign out" Grid.Column="1" Style="{DynamicResource LinkButton}" HorizontalAlignment="Right"/>
|
||||
<Button Margin="5,5,5,5" Name="btnProfileClose" Grid.Column="2" Width="22" Height="22"
|
||||
Content="✕" ToolTip="Close (Esc)" FontSize="12" Padding="0"
|
||||
Background="Transparent" BorderThickness="0" Cursor="Hand" />
|
||||
</Grid>
|
||||
|
||||
<TextBlock Margin="5" Name="txtUsername" Grid.Row="1" Grid.Column="2" FontWeight="Bold" FontSize="24" />
|
||||
<TextBlock Margin="5" Name="txtLogonName" Grid.Row="2" Grid.Column="2" />
|
||||
<!-- Split provider/auth-type and expiry onto separate lines so they line up
|
||||
cleanly when the expiry timestamp is long. -->
|
||||
<TextBlock Margin="5,0,5,0" Name="txtAuthMethod" Grid.Row="6" Grid.ColumnSpan="2" FontStyle="Italic" Foreground="#888" Visibility="Collapsed" />
|
||||
<TextBlock Margin="5,0,5,4" Name="txtAuthExpiry" Grid.Row="7" Grid.ColumnSpan="2" FontStyle="Italic" Foreground="#888" Visibility="Collapsed" />
|
||||
|
||||
<StackPanel Margin="5" Grid.Row="3" Grid.ColumnSpan="2">
|
||||
<TextBlock Text="Application:" />
|
||||
<TextBlock Name="txtAppName" />
|
||||
<TextBlock Name="txtAppId" />
|
||||
</StackPanel>
|
||||
|
||||
<Button Margin="5" Grid.Row="4" Grid.ColumnSpan="2" Name="lnkRequestConsent" Content="Request Consent" ToolTip="Request consent for missing scopes" Cursor="Hand" Style="{DynamicResource LinkButton}" />
|
||||
|
||||
<StackPanel Grid.Row="5" Grid.ColumnSpan="2" Orientation="Horizontal">
|
||||
<Button Margin="5" Name="lnkTokeninfo" Content="Session Info" ToolTip="Show provider session details (MSAL AuthenticationResult, MgContext, etc.)" Cursor="Hand" Style="{DynamicResource LinkButton}" />
|
||||
<Button Margin="5" Name="lnkAccessTokenInfo" ToolTip="Show the decoded JWT info of the AccessToken" Content="Access Token" Cursor="Hand" Style="{DynamicResource LinkButton}" />
|
||||
<Button Margin="5" Name="lnkIdTokenInfo" ToolTip="Show the decoded JWT info of the IdToken" Content="Id Token" Cursor="Hand" Style="{DynamicResource LinkButton}" />
|
||||
<Button Margin="5" Name="lnkEffectivePermissions" ToolTip="What this sign-in can do per policy type: token scopes combined with the user's Intune role" Content="Permissions" Cursor="Hand" Style="{DynamicResource LinkButton}" />
|
||||
<Button Margin="5" Name="lnkForceRefresh" ToolTip="Force a refresh of the token e.g. after being added to a new role" Content="Refresh" Cursor="Hand" Style="{DynamicResource LinkButton}" />
|
||||
</StackPanel>
|
||||
|
||||
<ScrollViewer Grid.Row="8" Grid.ColumnSpan="2" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" MaxHeight="200">
|
||||
<Grid Name="grdCachedAccounts" Margin="5,0,5,2" HorizontalAlignment="Stretch" VerticalAlignment="Top" >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
|
||||
<Grid Name="grdLoginAccount" Grid.Row="9" Grid.ColumnSpan="2" Margin="5,0,5,0" HorizontalAlignment="Stretch" VerticalAlignment="Top" >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
|
||||
<ScrollViewer Grid.Row="10" Grid.ColumnSpan="2" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" MaxHeight="200">
|
||||
<Grid Name="grdTenantAccounts" Margin="5,0,5,2" HorizontalAlignment="Stretch" VerticalAlignment="Top" >
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
@@ -0,0 +1,38 @@
|
||||
<!-- This file was generated by the AiToXaml tool.-->
|
||||
<!-- Tool Version: 14.0.22307.0 -->
|
||||
<Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<Button.Template>
|
||||
<ControlTemplate>
|
||||
<Rectangle Height="16" Width="16">
|
||||
<Rectangle.Fill>
|
||||
<DrawingBrush>
|
||||
<DrawingBrush.Drawing>
|
||||
<DrawingGroup>
|
||||
<DrawingGroup.Children>
|
||||
<GeometryDrawing Brush="#FF777777" Geometry="M12.5 1.4a10.7 10.7 0 011.9 1.8 7.8 7.8 0 011.2 2.2A7.5 7.5 0 0116 8a7.6 7.6 0 01-.3 2.1 6.4 6.4 0 01-.8 1.9 10.4 10.4 0 01-1.2 1.7 10.4 10.4 0 01-1.7 1.2 6.4 6.4 0 01-1.9.8 7.5 7.5 0 01-4.2 0 6.4 6.4 0 01-1.9-.8 10.4 10.4 0 01-1.7-1.2A10.4 10.4 0 011.1 12a6.4 6.4 0 01-.8-1.9 7.5 7.5 0 010-4.2 11.9 11.9 0 01.8-2 10.1 10.1 0 011.3-1.6A10.9 10.9 0 014.1 1H2V0h4v4H5V1.7a6.2 6.2 0 00-1.7 1.1 6.1 6.1 0 00-1.2 1.5A5.3 5.3 0 001.3 6 6.9 6.9 0 001 8a6.3 6.3 0 00.3 1.9 4.6 4.6 0 00.7 1.6 4.9 4.9 0 001.1 1.4A4.9 4.9 0 004.5 14l1.6.8L8 15l1.9-.2 1.6-.8a4.9 4.9 0 001.4-1.1 4.9 4.9 0 001.1-1.4 8 8 0 00.8-1.6A12.3 12.3 0 0015 8a6.2 6.2 0 00-.4-2.3 6.9 6.9 0 00-1-1.9 8.7 8.7 0 00-1.7-1.6 7.2 7.2 0 00-2-.9l.2-1a6.6 6.6 0 012.4 1.1z" />
|
||||
</DrawingGroup.Children>
|
||||
</DrawingGroup>
|
||||
</DrawingBrush.Drawing>
|
||||
</DrawingBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
<!--
|
||||
<Rectangle Width="16" Height="16">
|
||||
<Rectangle.Fill>
|
||||
<DrawingBrush>
|
||||
<DrawingBrush.Drawing>
|
||||
<DrawingGroup>
|
||||
<DrawingGroup.Children>
|
||||
<GeometryDrawing Brush="#00FFFFFF" Geometry="F1M16,16L0,16 0,0 16,0z" />
|
||||
<GeometryDrawing Brush="#FFF6F6F6" Geometry="F1M16,8C16,12.411 12.411,16 8,16 3.589,16 0,12.411 0,8 0,6.597 0.384,5.212 1.088,4L0,4 0,0 8,0 8,8 4,8C4,10.206 5.794,12 8,12 10.206,12 12,10.206 12,8 12,6.656 11.331,5.41 10.21,4.666L9.377,4.112 11.592,0.78 12.425,1.333C14.663,2.822,16,5.314,16,8" />
|
||||
<GeometryDrawing Brush="#FF777777" Geometry="F1M15,8C15,11.859 11.859,15 8,15 4.14,15 1,11.859 1,8 1,6.076 1.801,4.292 3.121,3L1,3 1,1 7,1 7,7 5,7 5,4.002C3.766,4.931 3,6.401 3,8 3,10.757 5.243,13 8,13 10.757,13 13,10.757 13,8 13,6.321 12.164,4.763 10.764,3.833L11.871,2.167C13.83,3.469,15,5.649,15,8" />
|
||||
</DrawingGroup.Children>
|
||||
</DrawingGroup>
|
||||
</DrawingBrush.Drawing>
|
||||
</DrawingBrush>
|
||||
</Rectangle.Fill>
|
||||
</Rectangle>
|
||||
-->
|
||||
</ControlTemplate>
|
||||
</Button.Template>
|
||||
</Button>
|
||||
@@ -0,0 +1,27 @@
|
||||
<Border xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
BorderBrush="{DynamicResource BorderColor}" BorderThickness="1" Padding="5" Background="{DynamicResource WindowBackgroundColor}">
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{DynamicResource WindowBackgroundColor}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Padding="0,0,5,0">
|
||||
<Grid Name="spSettings" Grid.Column="1"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
|
||||
Grid.IsSharedSizeScope='True' Margin="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
|
||||
<StackPanel Grid.Row="1" HorizontalAlignment="Right" Orientation="Horizontal" Margin="0,5,0,5">
|
||||
<Button Name="btnExport" Width="100">Export</Button>
|
||||
<Button Name="btnSave" Width="100" Margin="15,0,0,0">Save</Button>
|
||||
<Button Name="btnClose" Width="100" Margin="15,0,0,0">Close</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
@@ -0,0 +1,30 @@
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="SplashScreenView"
|
||||
Height="150" Width="420"
|
||||
WindowStartupLocation="CenterScreen" WindowStyle="None"
|
||||
ShowInTaskbar="False" Topmost="True" AllowsTransparency="True"
|
||||
ResizeMode="NoResize" Background="#7F000000" Foreground="White">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<!--
|
||||
<Image Grid.Row="0" Width="64" Height="64" Margin="10,0,10,0" ... />
|
||||
<Grid Grid.Column="1" Margin="0,10,0,0">
|
||||
-->
|
||||
<Grid Grid.Column="1" Margin="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Name="txtSplashTitle" Text="" FontSize="18" FontWeight="Bold" VerticalAlignment="Top"/>
|
||||
<TextBlock Name="txtSplashText" Text="" Grid.Row="1" VerticalAlignment="Center" />
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Window>
|
||||
@@ -0,0 +1,45 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0,5,0,5">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TabControl SelectedIndex="0" Margin="0,0,0,5">
|
||||
<TabItem Header="Release Notes">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Padding="0,0,5,0">
|
||||
<TextBlock Name="txtReleaseNotes" />
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="Local Release Notes" Name="tabLocalReleaseNotes">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Padding="0,0,5,0">
|
||||
<TextBlock Name="txtReleaseNotesLocal" />
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
<StackPanel Name="spCompareSubMenu" Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row='1'>
|
||||
<TextBlock Name="txtReleaseNotesMatch">
|
||||
The local and GitHub versions of ReleaseNotes.md match.
|
||||
</TextBlock>
|
||||
<TextBlock Name="txtReleaseNotesNoMatch">
|
||||
The local and GitHub versions of ReleaseNotes.md does not match. Download the latest version from
|
||||
<Hyperlink Name="linkSource" NavigateUri="https://github.com/Micke-K/IntuneManagement">
|
||||
GitHub
|
||||
</Hyperlink>.
|
||||
</TextBlock>
|
||||
<Button Name="btnClose" Content="Close" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
@@ -0,0 +1,54 @@
|
||||
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Auto"
|
||||
VerticalScrollBarVisibility="Auto"
|
||||
Name="scrollViewerObj"
|
||||
Margin="5">
|
||||
<TextBlock
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
Height="{Binding ElementName=scrollViewerObj, Path=ViewportHeight}"
|
||||
Width="{Binding ElementName=scrollViewerObj, Path=ViewportWidth}"
|
||||
MinWidth="700"
|
||||
MinHeight="390"
|
||||
>
|
||||
<Bold>Welcome!</Bold>
|
||||
<LineBreak/><LineBreak/>
|
||||
This software uses public APIs (e.g. Microsoft Graph etc.) to manage and view objects.
|
||||
<LineBreak/>
|
||||
It uses the BETA version of Microsoft Graph so some functionallity might change or break.
|
||||
<LineBreak /><LineBreak />
|
||||
Please report any issues to the GitHub repository.
|
||||
<LineBreak/>
|
||||
This is developed outside work hours so please respect that any support is based on best effort.
|
||||
<LineBreak /><LineBreak />
|
||||
See <Hyperlink Name="gitHubLink" NavigateUri="https://github.com/Micke-K/IntuneManagement">GitHub</Hyperlink> repository for documentation, issue tracking etc.
|
||||
<LineBreak /><LineBreak />
|
||||
This software has <Bold>NO</Bold> association with Microsoft.
|
||||
<LineBreak /><LineBreak />
|
||||
This software is provided AS IS and it is licensed under the MIT license. See <Hyperlink Name="licenseLink" NavigateUri="https://github.com/Micke-K/IntuneManagement/blob/master/LICENSE">LicenseInfo</Hyperlink> for more information.
|
||||
<LineBreak /><LineBreak />
|
||||
<Bold>Note:</Bold>
|
||||
<LineBreak />
|
||||
The 'Microsoft Intune PowerShell' Enterprise App in Azure is used by default for API calls.
|
||||
<LineBreak />
|
||||
Go to Settings if you want to use 'Microsoft Graph PowerShell' or a custom App.
|
||||
<LineBreak />
|
||||
This software might use permissions not granted for the existing App.
|
||||
<LineBreak />
|
||||
A grant request will be displayed if permissions are missing.
|
||||
<LineBreak />
|
||||
Enable 'Use Default Permissions' in Settings to only use existing App permissions. Some objects might not be supported.
|
||||
</TextBlock>
|
||||
</ScrollViewer>
|
||||
|
||||
<StackPanel Grid.Row='1' Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,5,0,5">
|
||||
<CheckBox Name='chkAcceptConditions' VerticalAlignment="Center" IsChecked="false" Margin="5,0,0,0" >Accept conditions</CheckBox>
|
||||
<Button Name="btnAcceptConditions" Content="OK" IsEnabled="false" Width='100' Margin="5,0,0,0" />
|
||||
<Button Name="btnCancel" Content="Cancel" Width='100' Margin="5,0,0,0" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
Reference in New Issue
Block a user