249 lines
14 KiB
XML
249 lines
14 KiB
XML
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Title="Firefox Add-on Manager"
|
|
Height="680" Width="920"
|
|
WindowStartupLocation="CenterScreen"
|
|
ResizeMode="CanMinimize">
|
|
|
|
<Window.Resources>
|
|
<!-- Farben -->
|
|
<SolidColorBrush x:Key="OrangeBrush" Color="#FF6414"/>
|
|
<SolidColorBrush x:Key="BlueBrush" Color="#466EB4"/>
|
|
<SolidColorBrush x:Key="GreenBrush" Color="#007850"/>
|
|
<SolidColorBrush x:Key="DarkRedBrush" Color="#B40000"/>
|
|
<SolidColorBrush x:Key="BgBrush" Color="#F5F5FA"/>
|
|
|
|
<!-- Basis-Button-Style -->
|
|
<Style x:Key="ActionButton" TargetType="Button">
|
|
<Setter Property="Foreground" Value="White"/>
|
|
<Setter Property="FontFamily" Value="Segoe UI"/>
|
|
<Setter Property="FontSize" Value="13"/>
|
|
<Setter Property="Padding" Value="14,6"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="Button">
|
|
<Border Background="{TemplateBinding Background}"
|
|
CornerRadius="4"
|
|
Padding="{TemplateBinding Padding}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
</Border>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Opacity" Value="0.85"/>
|
|
</Trigger>
|
|
<Trigger Property="IsEnabled" Value="False">
|
|
<Setter Property="Opacity" Value="0.4"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<!-- Status-Farb-Konverter via DataTrigger in ListBox -->
|
|
<Style x:Key="PolicyRowStyle" TargetType="ListBoxItem">
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
</Style>
|
|
</Window.Resources>
|
|
|
|
<Grid Background="{StaticResource BgBrush}">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="65"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="28"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Banner -->
|
|
<Border Grid.Row="0" Background="{StaticResource OrangeBrush}">
|
|
<StackPanel Margin="15,8,0,0">
|
|
<TextBlock Text="Firefox Add-on Manager"
|
|
FontSize="20" FontWeight="Bold"
|
|
Foreground="White" FontFamily="Segoe UI"/>
|
|
<TextBlock Text="{Binding AdminLabel}"
|
|
FontSize="10" Foreground="#CCFFFFFF" FontFamily="Segoe UI"/>
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<!-- Tabs -->
|
|
<TabControl Grid.Row="1" Margin="8,8,8,4"
|
|
FontFamily="Segoe UI" FontSize="12">
|
|
|
|
<!-- ===== TAB 1: Bereitstellung ===== -->
|
|
<TabItem Header="Maschinenweite Bereitstellung">
|
|
<Grid Margin="8">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Intune-Hinweis -->
|
|
<Border Grid.Row="0" Background="#FFF0C8" BorderBrush="#FFC060"
|
|
BorderThickness="1" CornerRadius="4" Padding="8,5" Margin="0,0,0,8"
|
|
Visibility="{Binding IsIntune, Converter={x:Static BooleanToVisibilityConverter.Default}}">
|
|
<TextBlock TextWrapping="Wrap" FontSize="11" Foreground="#C05000"
|
|
Text="Intune erkannt: JSON-String in Intune-Policy loescht Unterkeys beim naechsten Sync. Deploy-Skript via Intune als System-Skript deployen."/>
|
|
</Border>
|
|
|
|
<!-- Add-on Liste -->
|
|
<GroupBox Grid.Row="1" Header="Add-ons auswaehlen (Checkbox = fuer Deployment markieren)">
|
|
<DataGrid Name="AddonGrid"
|
|
ItemsSource="{Binding Deploy.Addons}"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False"
|
|
GridLinesVisibility="Horizontal"
|
|
HeadersVisibility="Column"
|
|
FontFamily="Segoe UI" FontSize="12"
|
|
RowHeight="26">
|
|
<DataGrid.Columns>
|
|
<DataGridCheckBoxColumn Header="" Binding="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}" Width="35"/>
|
|
<DataGridTextColumn Header="Add-on" Binding="{Binding Name}" Width="170" IsReadOnly="True"/>
|
|
<DataGridTextColumn Header="Beschreibung" Binding="{Binding Description}" Width="200" IsReadOnly="True"/>
|
|
<DataGridTextColumn Header="Add-on ID" Binding="{Binding Id}" Width="220" IsReadOnly="True"/>
|
|
<DataGridTextColumn Header="Interne URL" Binding="{Binding InstallUrl}" Width="*"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</GroupBox>
|
|
|
|
<!-- Status -->
|
|
<TextBlock Grid.Row="2" Text="{Binding Deploy.StatusMessage}"
|
|
Foreground="#444" FontSize="11" Margin="2,4"/>
|
|
|
|
<!-- Buttons -->
|
|
<StackPanel Grid.Row="3" Orientation="Horizontal" Margin="0,6,0,0">
|
|
<Button Content="Jetzt deployen (Registry)"
|
|
Background="{StaticResource OrangeBrush}"
|
|
Style="{StaticResource ActionButton}"
|
|
Command="{Binding Deploy.DeployCommand}"
|
|
Margin="0,0,8,0"/>
|
|
<Button Content="PowerShell-Skript exportieren"
|
|
Background="{StaticResource BlueBrush}"
|
|
Style="{StaticResource ActionButton}"
|
|
Command="{Binding Deploy.ExportScriptCommand}"
|
|
Margin="0,0,8,0"/>
|
|
<Button Content="Alle auswaehlen"
|
|
Background="#888"
|
|
Style="{StaticResource ActionButton}"
|
|
Margin="0,0,8,0"
|
|
Click="SelectAll_Click"/>
|
|
<Button Content="Keine"
|
|
Background="#888"
|
|
Style="{StaticResource ActionButton}"
|
|
Click="SelectNone_Click"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</TabItem>
|
|
|
|
<!-- ===== TAB 2: Diagnose ===== -->
|
|
<TabItem Header="Diagnose / Intune">
|
|
<Grid Margin="8">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Intune-Status Banner -->
|
|
<Border Grid.Row="0" CornerRadius="4" Padding="8,5" Margin="0,0,0,8">
|
|
<Border.Style>
|
|
<Style TargetType="Border">
|
|
<Setter Property="Background" Value="#CCFFCC"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsIntune}" Value="True">
|
|
<Setter Property="Background" Value="#FFF0C8"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</Border.Style>
|
|
<TextBlock Text="{Binding Diagnostic.StatusMessage}" FontSize="11" TextWrapping="Wrap"/>
|
|
</Border>
|
|
|
|
<!-- Policy Check Liste -->
|
|
<GroupBox Grid.Row="1" Header="Policy-Konflikt-Pruefung">
|
|
<DataGrid Name="PolicyGrid"
|
|
ItemsSource="{Binding Diagnostic.PolicyChecks}"
|
|
SelectedItem="{Binding Diagnostic.SelectedCheck}"
|
|
AutoGenerateColumns="False"
|
|
CanUserAddRows="False"
|
|
IsReadOnly="True"
|
|
GridLinesVisibility="Horizontal"
|
|
HeadersVisibility="Column"
|
|
FontFamily="Segoe UI" FontSize="11"
|
|
RowHeight="24">
|
|
<DataGrid.RowStyle>
|
|
<Style TargetType="DataGridRow">
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding Status}" Value="FEHLER">
|
|
<Setter Property="Background" Value="#FFD2D2"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding Status}" Value="WARN">
|
|
<Setter Property="Background" Value="#FFF5CC"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding Status}" Value="OK">
|
|
<Setter Property="Background" Value="#D2FFD2"/>
|
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding Status}" Value="INFO">
|
|
<Setter Property="Background" Value="#E8F0FF"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</DataGrid.RowStyle>
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Status" Binding="{Binding Status}" Width="65" FontWeight="Bold"/>
|
|
<DataGridTextColumn Header="Policy" Binding="{Binding Policy}" Width="240"/>
|
|
<DataGridTextColumn Header="Aktueller Wert" Binding="{Binding CurrentValue}" Width="160"/>
|
|
<DataGridTextColumn Header="Auswirkung / Loesung" Binding="{Binding Solution}" Width="*"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</GroupBox>
|
|
|
|
<!-- Status -->
|
|
<TextBlock Grid.Row="2" Text="{Binding Diagnostic.StatusMessage}"
|
|
Foreground="#444" FontSize="11" Margin="2,4"/>
|
|
|
|
<!-- Buttons -->
|
|
<StackPanel Grid.Row="3" Orientation="Horizontal" Margin="0,6,0,0">
|
|
<Button Content="Policy-Check ausfuehren"
|
|
Background="{StaticResource DarkRedBrush}"
|
|
Style="{StaticResource ActionButton}"
|
|
Command="{Binding Diagnostic.RunCheckCommand}"
|
|
Margin="0,0,8,0"/>
|
|
<Button Content="Markierten Fehler beheben"
|
|
Background="#B46000"
|
|
Style="{StaticResource ActionButton}"
|
|
Command="{Binding Diagnostic.FixSelectedCommand}"
|
|
Margin="0,0,8,0"/>
|
|
<Button Content="Alle Fehler beheben"
|
|
Background="{StaticResource DarkRedBrush}"
|
|
Style="{StaticResource ActionButton}"
|
|
Command="{Binding Diagnostic.FixAllErrorsCommand}"
|
|
Margin="0,0,8,0"/>
|
|
<Button Content="about:policies oeffnen"
|
|
Background="{StaticResource OrangeBrush}"
|
|
Style="{StaticResource ActionButton}"
|
|
Command="{Binding Diagnostic.OpenAboutPoliciesCommand}"
|
|
Margin="0,0,8,0"/>
|
|
<Button Content="REG-Datei einlesen"
|
|
Background="{StaticResource BlueBrush}"
|
|
Style="{StaticResource ActionButton}"
|
|
Command="{Binding Diagnostic.ImportRegCommand}"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</TabItem>
|
|
|
|
</TabControl>
|
|
|
|
<!-- Statusleiste -->
|
|
<Border Grid.Row="2" Background="#E0E0E8" BorderBrush="#CCCCCC" BorderThickness="0,1,0,0">
|
|
<TextBlock Text="{Binding StatusBar}"
|
|
VerticalAlignment="Center" Margin="8,0"
|
|
FontSize="10" Foreground="#444" FontFamily="Consolas"/>
|
|
</Border>
|
|
</Grid>
|
|
</Window>
|