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:
@@ -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>
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user