1
0
DerpingDrivers/DerpingDrivers/MainWindow.xaml.cs

129 lines
4.0 KiB
C#

using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Text;
using System.Windows;
using System.Windows.Documents;
using System.Xaml;
using DerpingDrivers.Util;
using MahApps.Metro.Controls;
using Markdig;
using Markdig.Wpf;
using Markdown = Markdig.Wpf.Markdown;
using XamlReader = System.Windows.Markup.XamlReader;
namespace DerpingDrivers
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : MetroWindow
{
public MainWindow()
{
InitializeComponent();
}
/// <summary>
/// Gets Operating System Architecture display name.
/// </summary>
public string OsArchitecture =>
OsVersionInfo.OsBits == OsVersionInfo.SoftwareArchitecture.Bit64 ? "64-bit" : "32-bit";
/// <summary>
/// Gets Operating System display name.
/// </summary>
public string OsVersionName => OsVersionInfo.Name;
/// <summary>
/// Gets Operating System edition name.
/// </summary>
public string OsEditionName => string.IsNullOrEmpty(OsVersionInfo.Edition) ? "None" : OsVersionInfo.Edition;
/// <summary>
/// Gets Operating System build number.
/// </summary>
public string OsVersion => OsVersionInfo.VersionString;
/// <summary>
/// Gets Boot mode (Legacy BIOS, UEFI).
/// </summary>
public string BootMode => UEFIHelper.IsRunningInUEFIMode ? "UEFI" : "Legacy BIOS";
/// <summary>
/// Gets Secure Boot status.
/// </summary>
public string SecureBootEnabled => UEFIHelper.IsRunningInUEFIMode
? (UEFIHelper.IsSecureBootEnabled ? "Enabled" : "Disabled")
: "Not available";
/// <summary>
/// Gets OS upgrade status.
/// </summary>
public string OsUpgradeStatus =>
OsUpgradeDetection.IsGrandfathered ? "In-place upgraded" : "Clean installation";
/// <summary>
/// Gets test-mode status.
/// </summary>
public string TestSigningStatus => CodeIntegrityHelper.IsTestSignEnabled ? "Enabled" : "Disabled";
public FlowDocument SummaryDocument
{
get
{
var markdown = "🔥 *None available*";
// Convert Markdown to XAML
var xaml = Markdown.ToXaml(markdown, BuildPipeline());
// Render XAML for FlowDocument Control
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(xaml)))
{
var reader = new XamlXmlReader(stream, new MyXamlSchemaContext());
if (XamlReader.Load(reader) is FlowDocument document) return document;
}
return null;
}
}
private static MarkdownPipeline BuildPipeline()
{
return new MarkdownPipelineBuilder()
.UseSupportedExtensions()
.Build();
}
private void Web_OnClick(object sender, RoutedEventArgs e)
{
Process.Start("https://vigem.org");
}
private void Discord_OnClick(object sender, RoutedEventArgs e)
{
Process.Start("https://discord.vigem.org");
}
private void Forums_OnClick(object sender, RoutedEventArgs e)
{
Process.Start("https://forums.vigem.org");
}
}
internal class MyXamlSchemaContext : XamlSchemaContext
{
public override bool TryGetCompatibleXamlNamespace(string xamlNamespace, out string compatibleNamespace)
{
if (xamlNamespace.Equals("clr-namespace:Markdig.Wpf"))
{
compatibleNamespace =
$"clr-namespace:Markdig.Wpf;assembly={Assembly.GetAssembly(typeof(Styles)).FullName}";
return true;
}
return base.TryGetCompatibleXamlNamespace(xamlNamespace, out compatibleNamespace);
}
}
}