feat: expand cockpit integrations and support workflows

Add Phoenix remote desktop, action connector, documentation engine, and gamification support. Refactor support-case processing and search/action UI, and update installer assets and dependencies.
This commit is contained in:
Meik
2026-07-13 11:16:53 +02:00
parent bbedbf71c8
commit 0b52999b1d
303 changed files with 11235 additions and 3580 deletions

View File

@@ -0,0 +1,74 @@
<UserControl x:Class="FasdDesktopUi.Basics.UserControls.Gamification.LevelTracker"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FasdDesktopUi.Basics.UserControls.Gamification"
mc:Ignorable="d"
d:DesignHeight="450"
d:DesignWidth="800">
<UserControl.Resources>
<Style TargetType="TextBlock">
<Setter Property="Foreground"
Value="{DynamicResource FontColor.DetailsPage.DataHistory.TitleColumn.MainTitle}" />
</Style>
</UserControl.Resources>
<StackPanel Orientation="Horizontal">
<Grid Margin="10 0">
<Border BorderBrush="{DynamicResource Color.FunctionMarker}"
CornerRadius="50"
BorderThickness="6"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="#01010101"
Height="45"
Width="45">
</Border>
<TextBlock x:Name="LevelValueTextBlock"
TextAlignment="Center"
VerticalAlignment="Center"
HorizontalAlignment="Center"
FontWeight="Bold"
FontSize="20" />
<Ellipse x:Name="CoverEllipse"
Stroke="{DynamicResource Color.AppBackground}"
Opacity="0.5"
StrokeThickness="7"
Height="46"
Width="46"
RenderTransformOrigin="0.5,0.5">
<Ellipse.RenderTransform>
<RotateTransform Angle="-90" />
</Ellipse.RenderTransform>
</Ellipse>
</Grid>
<StackPanel VerticalAlignment="Center">
<StackPanel.Resources>
<Style TargetType="StackPanel">
<Setter Property="Visibility"
Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorLevel=1, AncestorType=FrameworkElement}, Path=IsMouseOver}"
Value="True">
<Setter Property="Visibility"
Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>
<TextBlock x:Name="LevelTitelTextBlock"
FontWeight="Bold"
FontSize="18" />
<TextBlock x:Name="XpTextBlock"
FontWeight="Light"
FontSize="14" />
</StackPanel>
</StackPanel>
</UserControl>

View File

@@ -0,0 +1,39 @@
using F4SD.Gamification;
using F4SD.Gamification.Services;
using System;
using System.Windows.Controls;
using System.Windows.Media;
namespace FasdDesktopUi.Basics.UserControls.Gamification
{
public partial class LevelTracker : UserControl
{
public LevelTracker()
{
InitializeComponent();
}
private double GetCircumferenceOfCoverEllipse()
{
return (2 * Math.PI * (CoverEllipse.Height / 2.0 - CoverEllipse.StrokeThickness / 2.0)) / CoverEllipse.StrokeThickness;
}
protected override void OnInitialized(EventArgs e)
{
CoverEllipse.StrokeDashArray = new DoubleCollection() { GetCircumferenceOfCoverEllipse() };
LevelService.ExperiencePointsChanged += UpdateExperiencePoints;
base.OnInitialized(e);
}
private void UpdateExperiencePoints(object sender, LevelEventArgs e)
{
LevelValueTextBlock.Text = e.CurrentLevel.ToString();
double relativeProgress = (double)e.CurrentXp / (double)e.XpRequiredForLevelUp;
CoverEllipse.StrokeDashOffset = (GetCircumferenceOfCoverEllipse() * relativeProgress) * -1.0;
LevelTitelTextBlock.Text = e.LevelTitle;
XpTextBlock.Text = $"{e.CurrentXp} / {e.XpRequiredForLevelUp} XP";
}
}
}